@kodiak-finance/orderly-ui-order-entry 2.8.19-rc.0 → 2.8.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +533 -13302
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +419 -13188
- package/dist/index.mjs.map +1 -1
- package/package.json +13 -12
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/jsqr@1.4.0/node_modules/jsqr/dist/jsQR.js","../src/orderEntry.ui.tsx","../src/components/additional/additionalConfigButton.tsx","../src/components/additional/additionalInfo.tsx","../src/components/additional/pinButton.tsx","../src/components/advancedTPSLResult/index.tsx","../src/components/assetInfo/index.tsx","../src/components/fee/fees.widget.tsx","../src/components/fee/effectiveFee/effectiveFee.ui.tsx","../../ui-chain-selector/src/chainSelector.widget.tsx","../../ui-chain-selector/src/chainSelector.script.ts","../../ui-chain-selector/src/chainSelector.ui.tsx","../../../node_modules/.pnpm/@akamfoad+qr@0.4.0/node_modules/@akamfoad/qr/dist/qr.mjs","../../ui-scaffold/src/components/icons/communtiyIcons.tsx","../../ui-scaffold/src/components/icons/orderlyNetworkTextIcon.tsx","../../ui-scaffold/src/components/icons/signal.tsx","../../ui-scaffold/src/components/icons/infoIcon.tsx","../../ui-scaffold/src/components/icons/closeIcon.tsx","../../ui-scaffold/src/components/icons/orderlyLogo.tsx","../../ui-scaffold/src/components/icons/index.ts","../../ui-scaffold/src/components/restrictedInfo/restrictedInfo.ui.tsx","../../ui-scaffold/src/components/restrictedInfo/restrictedInfo.script.tsx","../../ui-scaffold/src/components/restrictedInfo/restrictedInfo.widget.tsx","../../ui-scaffold/src/components/restrictedInfo/index.ts","../../ui-scaffold/src/components/bottomNav/bottomNav.ui.mobile.tsx","../../ui-scaffold/src/components/bottomNav/bottomNav.widget.tsx","../../ui-scaffold/src/components/bottomNav/tradingMenu.ui.tsx","../../ui-scaffold/src/components/bottomNav/index.ts","../../ui-scaffold/src/components/accountMenu/menu.widget.tsx","../../ui-scaffold/src/components/accountMenu/menu.ui.tsx","../../ui-scaffold/src/components/accountMenu/useWidgetBuilder.script.tsx","../../ui-scaffold/src/components/main/mainNav.script.ts","../../ui-scaffold/src/components/scaffold/scaffold.mobile.ui.tsx","../../ui-scaffold/src/components/main/mainNav.ui.mobile.tsx","../../ui-scaffold/src/components/chainMenu/chainMenu.widget.tsx","../../ui-scaffold/src/components/chainMenu/chainMenu.script.ts","../../ui-scaffold/src/components/chainMenu/chainMenu.ui.tsx","../../ui-scaffold/src/components/chainMenu/chainMenu.ui.mobile.tsx","../../ui-scaffold/src/components/languageSwitcher/languageSwitcher.script.ts","../../ui-scaffold/src/components/languageSwitcher/languageSwitcher.ui.tsx","../../ui-scaffold/src/components/languageSwitcher/widget.tsx","../../ui-scaffold/src/components/leftNav/leftNav.script.ts","../../ui-scaffold/src/components/leftNav/leftNav.ui.tsx","../../ui-scaffold/src/components/main/mainLogo.tsx","../../ui-scaffold/src/components/subAccount/subAccount.script.ts","../../ui-scaffold/src/components/subAccount/useAccountValue.tsx","../../ui-scaffold/src/components/subAccount/subAccount.ui.tsx","../../ui-scaffold/src/components/subAccount/components/accountItem.tsx","../../ui-scaffold/src/components/subAccount/icons.tsx","../../ui-scaffold/src/components/subAccount/components/createSubAccountModal.tsx","../../ui-scaffold/src/components/subAccount/components/common.tsx","../../ui-scaffold/src/components/leftNav/leftNav.widget.tsx","../../ui-scaffold/src/components/scanQRCode/scanQRCode.script.ts","../../ui-scaffold/src/components/scanQRCode/scanQRCode.ui.tsx","../../ui-scaffold/src/components/scanQRCode/scanner.tsx","../../ui-scaffold/src/components/scanQRCode/scanQRCode.widget.tsx","../../ui-scaffold/src/components/main/linkDevice/widget.tsx","../../ui-scaffold/src/components/main/linkDevice/linkDevice.script.tsx","../../ui-scaffold/src/components/main/linkDevice/linkDevice.ui.tsx","../../ui-scaffold/src/components/main/linkDevice/linkDevice.ui.mobile.tsx","../../ui-notification/src/components/notification/notification.ui.tsx","../../ui-notification/src/hooks/useAnnouncement.ts","../../ui-scaffold/src/components/notification/notification.ui.tsx","../../ui-scaffold/src/components/notification/notification.widget.tsx","../../ui-scaffold/src/components/sidebar/sidebar.ui.tsx","../../ui-scaffold/src/components/sidebar/useSideNavBuilder.script.tsx","../../ui-scaffold/src/components/sidebar/sidebar.widget.tsx","../../ui-scaffold/src/components/scaffold/scaffold.ui.tsx","../../ui-scaffold/src/components/scaffold/scaffoldProvider.tsx","../../ui-scaffold/src/utils/chain.ts","../../ui-scaffold/src/components/scaffold/scaffold.widget.tsx","../../ui-scaffold/src/components/main/mainNav.ui.tsx","../../ui-scaffold/src/components/accountSummary/accountSummary.ui.tsx","../../ui-scaffold/src/components/accountSummary/useWidgetBuilder.script.ts","../../ui-scaffold/src/components/accountSummary/accountSummary.widget.tsx","../../ui-scaffold/src/components/messageCenter/msgCenter.ui.tsx","../../ui-scaffold/src/components/main/mainMenus/navItem.tsx","../src/components/fee/effectiveFee/icons/effectiveFee.tsx","../src/components/fee/effectiveFee/effectiveFee.widget.tsx","../src/components/fee/regularFee/regularFees.ui.tsx","../src/components/fee/regularFee/regularFees.widget.tsx","../src/components/slippage/components/slippageCell.tsx","../src/components/slippage/components/slippageEditor.tsx","../src/components/slippage/slippage.ui.tsx","../src/components/available/index.tsx","../src/components/LTVRiskTooltip/LTVRiskTooltip.ui.tsx","../src/components/LTVRiskTooltip/LTVRiskTooltip.script.ts","../src/components/LTVRiskTooltip/LTVRiskTooltip.widget.tsx","../src/components/dialog/confirm.ui.tsx","../src/utils.ts","../src/components/dialog/maxQtyConfirm.tsx","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.ui.tsx","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.script.ts","../src/hooks/useAskAndBid.ts","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.widget.tsx","../src/components/header/index.tsx","../src/components/orderTypeSelect/index.tsx","../src/components/header/LeverageBadge.tsx","../src/components/orderEntryProvider.tsx","../src/components/orderEntryContext.tsx","../src/components/orderInput/index.tsx","../src/components/orderInput/limit/priceInput.tsx","../src/components/customInput/index.tsx","../src/components/orderInput/limit/bboOrderTypeSelect.tsx","../src/components/orderInput/limit/limitPriceSuffix.tsx","../src/components/orderInput/qtyAndTotal/qtyAndTotalInput.tsx","../src/components/orderInput/qtyAndTotal/quantityInput.tsx","../src/components/orderInput/qtyAndTotal/totalInput.tsx","../src/components/orderInput/qtyAndTotal/totalTypeSelect.tsx","../src/components/orderInput/scaledOrder/index.tsx","../src/components/orderInput/scaledOrder/quantityDistributionInput.tsx","../src/components/orderInput/scaledOrder/scaledPriceInput.tsx","../src/components/orderInput/scaledOrder/scaledQuantityInput.tsx","../src/components/orderInput/scaledOrder/scaledQuantityUnit.tsx","../src/components/orderInput/scaledOrder/skewInput.tsx","../src/components/orderInput/scaledOrder/totalOrdersInput.tsx","../src/components/orderInput/stop/triggerPriceInput.tsx","../src/components/orderInput/trailingStop/activePriceInput.tsx","../src/components/orderInput/trailingStop/trailingCallbackInput.tsx","../src/components/orderInput/trailingStop/callbackRatePercentages.tsx","../src/components/orderInput/trailingStop/trailingCallbackSelect.tsx","../src/components/orderInput/trailingStop/index.tsx","../src/components/quantitySlider/index.tsx","../src/components/reduceOnlySwitch/index.tsx","../src/components/tpsl.tsx","../src/components/pnlInput/pnlInput.ui.tsx","../src/components/pnlInput/useBuilder.script.ts","../src/components/pnlInput/pnlInputContext.tsx","../src/components/pnlInput/pnlInput.widget.tsx","../src/components/pnlInput/pnlInputProvider.tsx","../src/orderEntry.script.ts","../src/hooks/useBBOState.ts","../src/hooks/useCanTrade.ts","../src/hooks/useFocusAndBlur.ts","../src/hooks/usePriceInputContainer.ts","../src/orderEntry.widget.tsx"],"names":["module","exports","BitMatrix","GenericGF","GenericGFPoly","_a","jsQR","options","Matrix","i","Mode","ModeByte","b","BitStream","x","y","useCallback","useEffect","useId","useMemo","useState","ERROR_MSG_CODES","useLocalStorage","useMemoizedFn","useOrderlyContext","useTranslation","useOrderEntryFormErrorMsg","OrderSide","OrderType","PositionType","Box","cn","Divider","Flex","modal","SimpleSheet","Switch","toast","useScreen","Decimal","jsx","jsxs","open","Text","Tooltip","__defProp","__getOwnPropNames","React","SimpleDialog","Checkbox","useAppContext","useConfig","useRef","PopoverRoot","PopoverTrigger","Fragment","PopoverContent","useWalletConnector","account","useChains","AccountStatusEnum","ChainIcon","useAccount","Button","DropdownMenuRoot","WalletConnectorModalId","ModalTitle","r","i18n","DropdownMenuTrigger","context","DropdownMenuContent","subAccount","EditIcon","holding","forwardRef","nickName","QRCode","useTrack","TrackerEventName","CopyIcon","LinkDeviceIcon","Spinner","tv","NotificationUI","useContext","CampaignPositionEnum","current","Dot","Popover","AuthGuard","inputFormatter","TooltipTrigger","useIndexPricesStream","useQuery","usePositionStream","BBOOrderType","Grid","registerSimpleDialog","textVariants","Dialog","Badge","zero","useEventEmitter","national","order","totalQuantity","createContext","EMPTY_LIST","Input","Select","item","memo","margin","total","DistributionType","value","TrailingCallbackType","mode","errors","useComputedLTV","useMarginRatio","removeTrailingZeros","utils","state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,KAAC,SAAS,iCAAiC,MAAM,SAAS;AACzD,UAAG,OAAO,YAAY,YAAY,OAAO,WAAW;AACnD,eAAO,UAAU,QAAQ;AAAA,eAClB,OAAO,WAAW,cAAc,OAAO;AAC9C,eAAO,CAAC,GAAG,OAAO;AAAA,eACX,OAAO,YAAY;AAC1B,gBAAQ,MAAM,IAAI,QAAQ;AAAA;AAE1B,aAAK,MAAM,IAAI,QAAQ;AAAA,IACzB,GAAG,OAAO,SAAS,cAAc,OAAO,SAAM,WAAW;AACzD;AAAA;AAAA,QAAiB,SAAS,SAAS;AAEzB,cAAI,mBAAmB,CAAC;AAGxB,mBAAS,oBAAoB,UAAU;AAGtC,gBAAG,iBAAiB,QAAQ,GAAG;AAC9B,qBAAO,iBAAiB,QAAQ,EAAE;AAAA,YACnC;AAEA,gBAAIA,UAAS,iBAAiB,QAAQ,IAAI;AAAA;AAAA,cACzC,GAAG;AAAA;AAAA,cACH,GAAG;AAAA;AAAA,cACH,SAAS,CAAC;AAAA;AAAA,YACX;AAGA,oBAAQ,QAAQ,EAAE,KAAKA,QAAO,SAASA,SAAQA,QAAO,SAAS,mBAAmB;AAGlF,YAAAA,QAAO,IAAI;AAGX,mBAAOA,QAAO;AAAA,UACf;AAIA,8BAAoB,IAAI;AAGxB,8BAAoB,IAAI;AAGxB,8BAAoB,IAAI,SAASC,UAAS,MAAM,QAAQ;AACvD,gBAAG,CAAC,oBAAoB,EAAEA,UAAS,IAAI,GAAG;AACzC,qBAAO,eAAeA,UAAS,MAAM;AAAA;AAAA,gBACpC,cAAc;AAAA;AAAA,gBACd,YAAY;AAAA;AAAA,gBACZ,KAAK;AAAA;AAAA,cACN,CAAC;AAAA,YACF;AAAA,UACD;AAGA,8BAAoB,IAAI,SAASD,SAAQ;AACxC,gBAAI,SAASA,WAAUA,QAAO;AAAA;AAAA,cAC7B,SAAS,aAAa;AAAE,uBAAOA,QAAO,SAAS;AAAA,cAAG;AAAA;AAAA;AAAA,cAClD,SAAS,mBAAmB;AAAE,uBAAOA;AAAA,cAAQ;AAAA;AAC9C,gCAAoB,EAAE,QAAQ,KAAK,MAAM;AACzC,mBAAO;AAAA,UACR;AAGA,8BAAoB,IAAI,SAAS,QAAQ,UAAU;AAAE,mBAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,QAAQ;AAAA,UAAG;AAGpH,8BAAoB,IAAI;AAGxB,iBAAO,oBAAoB,oBAAoB,IAAI,CAAC;AAAA,QACrD,EAEC;AAAA;AAAA;AAAA,UAEH,SAASA,SAAQC,UAAS,qBAAqB;AAEtD;AAEA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,gBAAI;AAAA;AAAA,cAA2B,WAAY;AACvC,yBAASC,WAAU,MAAM,OAAO;AAC5B,uBAAK,QAAQ;AACb,uBAAK,SAAS,KAAK,SAAS;AAC5B,uBAAK,OAAO;AAAA,gBAChB;AACA,gBAAAA,WAAU,cAAc,SAAU,OAAO,QAAQ;AAC7C,yBAAO,IAAIA,WAAU,IAAI,kBAAkB,QAAQ,MAAM,GAAG,KAAK;AAAA,gBACrE;AACA,gBAAAA,WAAU,UAAU,MAAM,SAAU,GAAG,GAAG;AACtC,sBAAI,IAAI,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,QAAQ;AACvD,2BAAO;AAAA,kBACX;AACA,yBAAO,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AAAA,gBACzC;AACA,gBAAAA,WAAU,UAAU,MAAM,SAAU,GAAG,GAAG,GAAG;AACzC,uBAAK,KAAK,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,gBAC5C;AACA,gBAAAA,WAAU,UAAU,YAAY,SAAU,MAAM,KAAK,OAAO,QAAQ,GAAG;AACnE,2BAAS,IAAI,KAAK,IAAI,MAAM,QAAQ,KAAK;AACrC,6BAAS,IAAI,MAAM,IAAI,OAAO,OAAO,KAAK;AACtC,2BAAK,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AAAA,oBACtB;AAAA,kBACJ;AAAA,gBACJ;AACA,uBAAOA;AAAA,cACX,EAAE;AAAA;AACF,YAAAD,SAAQ,YAAY;AAAA,UAGd;AAAA;AAAA;AAAA,UAEC,SAASD,SAAQC,UAAS,qBAAqB;AAEtD;AAEA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,gBAAI,kBAAkB,oBAAoB,CAAC;AAC3C,qBAAS,gBAAgB,GAAG,GAAG;AAC3B,qBAAO,IAAI;AAAA,YACf;AACA,YAAAA,SAAQ,kBAAkB;AAC1B,gBAAI;AAAA;AAAA,cAA2B,WAAY;AACvC,yBAASE,WAAU,WAAW,MAAM,SAAS;AACzC,uBAAK,YAAY;AACjB,uBAAK,OAAO;AACZ,uBAAK,gBAAgB;AACrB,uBAAK,WAAW,IAAI,MAAM,KAAK,IAAI;AACnC,uBAAK,WAAW,IAAI,MAAM,KAAK,IAAI;AACnC,sBAAI,IAAI;AACR,2BAAS,IAAI,GAAG,IAAI,KAAK,MAAM,KAAK;AAChC,yBAAK,SAAS,CAAC,IAAI;AACnB,wBAAI,IAAI;AACR,wBAAI,KAAK,KAAK,MAAM;AAChB,2BAAK,IAAI,KAAK,aAAc,KAAK,OAAO;AAAA,oBAC5C;AAAA,kBACJ;AACA,2BAAS,IAAI,GAAG,IAAI,KAAK,OAAO,GAAG,KAAK;AACpC,yBAAK,SAAS,KAAK,SAAS,CAAC,CAAC,IAAI;AAAA,kBACtC;AACA,uBAAK,OAAO,IAAI,gBAAgB,QAAQ,MAAM,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC;AACzE,uBAAK,MAAM,IAAI,gBAAgB,QAAQ,MAAM,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,gBAC5E;AACA,gBAAAA,WAAU,UAAU,WAAW,SAAU,GAAG,GAAG;AAC3C,sBAAI,MAAM,KAAK,MAAM,GAAG;AACpB,2BAAO;AAAA,kBACX;AACA,yBAAO,KAAK,UAAU,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,KAAK,OAAO,EAAE;AAAA,gBAChF;AACA,gBAAAA,WAAU,UAAU,UAAU,SAAU,GAAG;AACvC,sBAAI,MAAM,GAAG;AACT,0BAAM,IAAI,MAAM,gBAAgB;AAAA,kBACpC;AACA,yBAAO,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC;AAAA,gBACzD;AACA,gBAAAA,WAAU,UAAU,gBAAgB,SAAU,QAAQ,aAAa;AAC/D,sBAAI,SAAS,GAAG;AACZ,0BAAM,IAAI,MAAM,qCAAqC;AAAA,kBACzD;AACA,sBAAI,gBAAgB,GAAG;AACnB,2BAAO,KAAK;AAAA,kBAChB;AACA,sBAAI,eAAe,IAAI,kBAAkB,SAAS,CAAC;AACnD,+BAAa,CAAC,IAAI;AAClB,yBAAO,IAAI,gBAAgB,QAAQ,MAAM,YAAY;AAAA,gBACzD;AACA,gBAAAA,WAAU,UAAU,MAAM,SAAU,GAAG;AACnC,sBAAI,MAAM,GAAG;AACT,0BAAM,IAAI,MAAM,mBAAmB;AAAA,kBACvC;AACA,yBAAO,KAAK,SAAS,CAAC;AAAA,gBAC1B;AACA,gBAAAA,WAAU,UAAU,MAAM,SAAU,GAAG;AACnC,yBAAO,KAAK,SAAS,CAAC;AAAA,gBAC1B;AACA,uBAAOA;AAAA,cACX,EAAE;AAAA;AACF,YAAAF,SAAQ,UAAU;AAAA,UAGZ;AAAA;AAAA;AAAA,UAEC,SAASD,SAAQC,UAAS,qBAAqB;AAEtD;AAEA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,gBAAI,cAAc,oBAAoB,CAAC;AACvC,gBAAI;AAAA;AAAA,cAA+B,WAAY;AAC3C,yBAASG,eAAc,OAAO,cAAc;AACxC,sBAAI,aAAa,WAAW,GAAG;AAC3B,0BAAM,IAAI,MAAM,kBAAkB;AAAA,kBACtC;AACA,uBAAK,QAAQ;AACb,sBAAI,qBAAqB,aAAa;AACtC,sBAAI,qBAAqB,KAAK,aAAa,CAAC,MAAM,GAAG;AAEjD,wBAAI,eAAe;AACnB,2BAAO,eAAe,sBAAsB,aAAa,YAAY,MAAM,GAAG;AAC1E;AAAA,oBACJ;AACA,wBAAI,iBAAiB,oBAAoB;AACrC,2BAAK,eAAe,MAAM,KAAK;AAAA,oBACnC,OACK;AACD,2BAAK,eAAe,IAAI,kBAAkB,qBAAqB,YAAY;AAC3E,+BAAS,IAAI,GAAG,IAAI,KAAK,aAAa,QAAQ,KAAK;AAC/C,6BAAK,aAAa,CAAC,IAAI,aAAa,eAAe,CAAC;AAAA,sBACxD;AAAA,oBACJ;AAAA,kBACJ,OACK;AACD,yBAAK,eAAe;AAAA,kBACxB;AAAA,gBACJ;AACA,gBAAAA,eAAc,UAAU,SAAS,WAAY;AACzC,yBAAO,KAAK,aAAa,SAAS;AAAA,gBACtC;AACA,gBAAAA,eAAc,UAAU,SAAS,WAAY;AACzC,yBAAO,KAAK,aAAa,CAAC,MAAM;AAAA,gBACpC;AACA,gBAAAA,eAAc,UAAU,iBAAiB,SAAU,QAAQ;AACvD,yBAAO,KAAK,aAAa,KAAK,aAAa,SAAS,IAAI,MAAM;AAAA,gBAClE;AACA,gBAAAA,eAAc,UAAU,gBAAgB,SAAU,OAAO;AACrD,sBAAIC;AACJ,sBAAI,KAAK,OAAO,GAAG;AACf,2BAAO;AAAA,kBACX;AACA,sBAAI,MAAM,OAAO,GAAG;AAChB,2BAAO;AAAA,kBACX;AACA,sBAAI,sBAAsB,KAAK;AAC/B,sBAAI,qBAAqB,MAAM;AAC/B,sBAAI,oBAAoB,SAAS,mBAAmB,QAAQ;AACxD,oBAAAA,MAAK,CAAC,oBAAoB,mBAAmB,GAAG,sBAAsBA,IAAG,CAAC,GAAG,qBAAqBA,IAAG,CAAC;AAAA,kBAC1G;AACA,sBAAI,UAAU,IAAI,kBAAkB,mBAAmB,MAAM;AAC7D,sBAAI,aAAa,mBAAmB,SAAS,oBAAoB;AACjE,2BAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACjC,4BAAQ,CAAC,IAAI,mBAAmB,CAAC;AAAA,kBACrC;AACA,2BAAS,IAAI,YAAY,IAAI,mBAAmB,QAAQ,KAAK;AACzD,4BAAQ,CAAC,IAAI,YAAY,gBAAgB,oBAAoB,IAAI,UAAU,GAAG,mBAAmB,CAAC,CAAC;AAAA,kBACvG;AACA,yBAAO,IAAID,eAAc,KAAK,OAAO,OAAO;AAAA,gBAChD;AACA,gBAAAA,eAAc,UAAU,WAAW,SAAU,QAAQ;AACjD,sBAAI,WAAW,GAAG;AACd,2BAAO,KAAK,MAAM;AAAA,kBACtB;AACA,sBAAI,WAAW,GAAG;AACd,2BAAO;AAAA,kBACX;AACA,sBAAI,OAAO,KAAK,aAAa;AAC7B,sBAAI,UAAU,IAAI,kBAAkB,IAAI;AACxC,2BAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC3B,4BAAQ,CAAC,IAAI,KAAK,MAAM,SAAS,KAAK,aAAa,CAAC,GAAG,MAAM;AAAA,kBACjE;AACA,yBAAO,IAAIA,eAAc,KAAK,OAAO,OAAO;AAAA,gBAChD;AACA,gBAAAA,eAAc,UAAU,eAAe,SAAU,OAAO;AACpD,sBAAI,KAAK,OAAO,KAAK,MAAM,OAAO,GAAG;AACjC,2BAAO,KAAK,MAAM;AAAA,kBACtB;AACA,sBAAI,gBAAgB,KAAK;AACzB,sBAAI,UAAU,cAAc;AAC5B,sBAAI,gBAAgB,MAAM;AAC1B,sBAAI,UAAU,cAAc;AAC5B,sBAAI,UAAU,IAAI,kBAAkB,UAAU,UAAU,CAAC;AACzD,2BAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAC9B,wBAAI,SAAS,cAAc,CAAC;AAC5B,6BAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAC9B,8BAAQ,IAAI,CAAC,IAAI,YAAY,gBAAgB,QAAQ,IAAI,CAAC,GAAG,KAAK,MAAM,SAAS,QAAQ,cAAc,CAAC,CAAC,CAAC;AAAA,oBAC9G;AAAA,kBACJ;AACA,yBAAO,IAAIA,eAAc,KAAK,OAAO,OAAO;AAAA,gBAChD;AACA,gBAAAA,eAAc,UAAU,qBAAqB,SAAU,QAAQ,aAAa;AACxE,sBAAI,SAAS,GAAG;AACZ,0BAAM,IAAI,MAAM,4BAA4B;AAAA,kBAChD;AACA,sBAAI,gBAAgB,GAAG;AACnB,2BAAO,KAAK,MAAM;AAAA,kBACtB;AACA,sBAAI,OAAO,KAAK,aAAa;AAC7B,sBAAI,UAAU,IAAI,kBAAkB,OAAO,MAAM;AACjD,2BAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC3B,4BAAQ,CAAC,IAAI,KAAK,MAAM,SAAS,KAAK,aAAa,CAAC,GAAG,WAAW;AAAA,kBACtE;AACA,yBAAO,IAAIA,eAAc,KAAK,OAAO,OAAO;AAAA,gBAChD;AACA,gBAAAA,eAAc,UAAU,aAAa,SAAU,GAAG;AAC9C,sBAAI,SAAS;AACb,sBAAI,MAAM,GAAG;AAET,2BAAO,KAAK,eAAe,CAAC;AAAA,kBAChC;AACA,sBAAI,OAAO,KAAK,aAAa;AAC7B,sBAAI,MAAM,GAAG;AAET,yBAAK,aAAa,QAAQ,SAAU,aAAa;AAC7C,+BAAS,YAAY,gBAAgB,QAAQ,WAAW;AAAA,oBAC5D,CAAC;AACD,2BAAO;AAAA,kBACX;AACA,2BAAS,KAAK,aAAa,CAAC;AAC5B,2BAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC3B,6BAAS,YAAY,gBAAgB,KAAK,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,aAAa,CAAC,CAAC;AAAA,kBAC7F;AACA,yBAAO;AAAA,gBACX;AACA,uBAAOA;AAAA,cACX,EAAE;AAAA;AACF,YAAAH,SAAQ,UAAU;AAAA,UAGZ;AAAA;AAAA;AAAA,UAEC,SAASD,SAAQC,UAAS,qBAAqB;AAEtD;AAEA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,gBAAI,cAAc,oBAAoB,CAAC;AACvC,gBAAI,YAAY,oBAAoB,CAAC;AACrC,gBAAI,cAAc,oBAAoB,EAAE;AACxC,gBAAI,YAAY,oBAAoB,EAAE;AACtC,qBAAS,KAAK,QAAQ;AAClB,kBAAI,YAAY,UAAU,OAAO,MAAM;AACvC,kBAAI,CAAC,WAAW;AACZ,uBAAO;AAAA,cACX;AACA,uBAAS,KAAK,GAAG,cAAc,WAAW,KAAK,YAAY,QAAQ,MAAM;AACrE,oBAAI,aAAa,YAAY,EAAE;AAC/B,oBAAI,YAAY,YAAY,QAAQ,QAAQ,UAAU;AACtD,oBAAI,UAAU,UAAU,OAAO,UAAU,MAAM;AAC/C,oBAAI,SAAS;AACT,yBAAO;AAAA,oBACH,YAAY,QAAQ;AAAA,oBACpB,MAAM,QAAQ;AAAA,oBACd,QAAQ,QAAQ;AAAA,oBAChB,SAAS,QAAQ;AAAA,oBACjB,UAAU;AAAA,sBACN,gBAAgB,UAAU,gBAAgB,WAAW,WAAW,CAAC;AAAA,sBACjE,eAAe,UAAU,gBAAgB,GAAG,CAAC;AAAA,sBAC7C,mBAAmB,UAAU,gBAAgB,WAAW,WAAW,WAAW,SAAS;AAAA,sBACvF,kBAAkB,UAAU,gBAAgB,GAAG,WAAW,SAAS;AAAA,sBACnE,uBAAuB,WAAW;AAAA,sBAClC,sBAAsB,WAAW;AAAA,sBACjC,yBAAyB,WAAW;AAAA,sBACpC,6BAA6B,WAAW;AAAA,oBAC5C;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AACA,qBAAO;AAAA,YACX;AACA,gBAAI,iBAAiB;AAAA,cACjB,mBAAmB;AAAA,YACvB;AACA,qBAASK,MAAK,MAAM,OAAO,QAAQ,iBAAiB;AAChD,kBAAI,oBAAoB,QAAQ;AAAE,kCAAkB,CAAC;AAAA,cAAG;AACxD,kBAAIC,WAAU;AACd,qBAAO,KAAKA,YAAW,CAAC,CAAC,EAAE,QAAQ,SAAU,KAAK;AAC9C,gBAAAA,SAAQ,GAAG,IAAI,gBAAgB,GAAG,KAAKA,SAAQ,GAAG;AAAA,cACtD,CAAC;AACD,kBAAI,eAAeA,SAAQ,sBAAsB,iBAAiBA,SAAQ,sBAAsB;AAChG,kBAAI,mBAAmBA,SAAQ,sBAAsB,gBAAgBA,SAAQ,sBAAsB;AACnG,kBAAIF,MAAK,YAAY,SAAS,MAAM,OAAO,QAAQ,YAAY,GAAG,YAAYA,IAAG,WAAW,WAAWA,IAAG;AAC1G,kBAAI,SAAS,KAAK,mBAAmB,WAAW,SAAS;AACzD,kBAAI,CAAC,WAAWE,SAAQ,sBAAsB,iBAAiBA,SAAQ,sBAAsB,gBAAgB;AACzG,yBAAS,KAAK,mBAAmB,YAAY,QAAQ;AAAA,cACzD;AACA,qBAAO;AAAA,YACX;AACA,YAAAD,MAAK,UAAUA;AACf,YAAAL,SAAQ,UAAUK;AAAA,UAGZ;AAAA;AAAA;AAAA,UAEC,SAASN,SAAQC,UAAS,qBAAqB;AAEtD;AAEA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,gBAAI,cAAc,oBAAoB,CAAC;AACvC,gBAAI,cAAc;AAClB,gBAAI,oBAAoB;AACxB,qBAAS,WAAW,OAAO,KAAK,KAAK;AACjC,qBAAO,QAAQ,MAAM,MAAM,QAAQ,MAAM,MAAM;AAAA,YACnD;AAEA,gBAAI;AAAA;AAAA,cAAwB,WAAY;AACpC,yBAASO,QAAO,OAAO,QAAQ;AAC3B,uBAAK,QAAQ;AACb,uBAAK,OAAO,IAAI,kBAAkB,QAAQ,MAAM;AAAA,gBACpD;AACA,gBAAAA,QAAO,UAAU,MAAM,SAAU,GAAG,GAAG;AACnC,yBAAO,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AAAA,gBACvC;AACA,gBAAAA,QAAO,UAAU,MAAM,SAAU,GAAG,GAAG,OAAO;AAC1C,uBAAK,KAAK,IAAI,KAAK,QAAQ,CAAC,IAAI;AAAA,gBACpC;AACA,uBAAOA;AAAA,cACX,EAAE;AAAA;AACF,qBAAS,SAAS,MAAM,OAAO,QAAQ,gBAAgB;AACnD,kBAAI,KAAK,WAAW,QAAQ,SAAS,GAAG;AACpC,sBAAM,IAAI,MAAM,qCAAqC;AAAA,cACzD;AAEA,kBAAI,kBAAkB,IAAI,OAAO,OAAO,MAAM;AAC9C,uBAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC5B,yBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,sBAAI,IAAI,MAAO,IAAI,QAAQ,KAAK,IAAK,CAAC;AACtC,sBAAI,IAAI,MAAO,IAAI,QAAQ,KAAK,IAAK,CAAC;AACtC,sBAAI,IAAI,MAAO,IAAI,QAAQ,KAAK,IAAK,CAAC;AACtC,kCAAgB,IAAI,GAAG,GAAG,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC;AAAA,gBAClE;AAAA,cACJ;AACA,kBAAI,wBAAwB,KAAK,KAAK,QAAQ,WAAW;AACzD,kBAAI,sBAAsB,KAAK,KAAK,SAAS,WAAW;AACxD,kBAAI,cAAc,IAAI,OAAO,uBAAuB,mBAAmB;AACvE,uBAAS,iBAAiB,GAAG,iBAAiB,qBAAqB,kBAAkB;AACjF,yBAAS,oBAAoB,GAAG,oBAAoB,uBAAuB,qBAAqB;AAC5F,sBAAI,MAAM;AACV,sBAAI,MAAM;AACV,sBAAI,MAAM;AACV,2BAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AAClC,6BAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AAClC,0BAAI,gBAAgB,gBAAgB,IAAI,oBAAoB,cAAc,GAAG,iBAAiB,cAAc,CAAC;AAC7G,6BAAO;AACP,4BAAM,KAAK,IAAI,KAAK,aAAa;AACjC,4BAAM,KAAK,IAAI,KAAK,aAAa;AAAA,oBACrC;AAAA,kBACJ;AACA,sBAAI,UAAU,MAAO,KAAK,IAAI,aAAa,CAAC;AAC5C,sBAAI,MAAM,OAAO,mBAAmB;AAMhC,8BAAU,MAAM;AAChB,wBAAI,iBAAiB,KAAK,oBAAoB,GAAG;AAO7C,0BAAI,6BAA6B,YAAY,IAAI,mBAAmB,iBAAiB,CAAC,IACjF,IAAI,YAAY,IAAI,oBAAoB,GAAG,cAAc,IAC1D,YAAY,IAAI,oBAAoB,GAAG,iBAAiB,CAAC,KAAK;AAClE,0BAAI,MAAM,2BAA2B;AACjC,kCAAU;AAAA,sBACd;AAAA,oBACJ;AAAA,kBACJ;AACA,8BAAY,IAAI,mBAAmB,gBAAgB,OAAO;AAAA,gBAC9D;AAAA,cACJ;AACA,kBAAI,YAAY,YAAY,UAAU,YAAY,OAAO,MAAM;AAC/D,kBAAI,WAAW;AACf,kBAAI,gBAAgB;AAChB,2BAAW,YAAY,UAAU,YAAY,OAAO,MAAM;AAAA,cAC9D;AACA,uBAAS,iBAAiB,GAAG,iBAAiB,qBAAqB,kBAAkB;AACjF,yBAAS,oBAAoB,GAAG,oBAAoB,uBAAuB,qBAAqB;AAC5F,sBAAI,OAAO,WAAW,mBAAmB,GAAG,wBAAwB,CAAC;AACrE,sBAAI,QAAQ,WAAW,gBAAgB,GAAG,sBAAsB,CAAC;AACjE,sBAAI,MAAM;AACV,2BAAS,UAAU,IAAI,WAAW,GAAG,WAAW;AAC5C,6BAAS,UAAU,IAAI,WAAW,GAAG,WAAW;AAC5C,6BAAO,YAAY,IAAI,OAAO,SAAS,QAAQ,OAAO;AAAA,oBAC1D;AAAA,kBACJ;AACA,sBAAI,YAAY,MAAM;AACtB,2BAAS,UAAU,GAAG,UAAU,aAAa,WAAW;AACpD,6BAAS,UAAU,GAAG,UAAU,aAAa,WAAW;AACpD,0BAAI,IAAI,oBAAoB,cAAc;AAC1C,0BAAI,IAAI,iBAAiB,cAAc;AACvC,0BAAI,MAAM,gBAAgB,IAAI,GAAG,CAAC;AAClC,gCAAU,IAAI,GAAG,GAAG,OAAO,SAAS;AACpC,0BAAI,gBAAgB;AAChB,iCAAS,IAAI,GAAG,GAAG,EAAE,OAAO,UAAU;AAAA,sBAC1C;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AACA,kBAAI,gBAAgB;AAChB,uBAAO,EAAE,WAAsB,SAAmB;AAAA,cACtD;AACA,qBAAO,EAAE,UAAqB;AAAA,YAClC;AACA,YAAAP,SAAQ,WAAW;AAAA,UAGb;AAAA;AAAA;AAAA,UAEC,SAASD,SAAQC,UAAS,qBAAqB;AAEtD;AAEA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,gBAAI,cAAc,oBAAoB,CAAC;AACvC,gBAAI,eAAe,oBAAoB,CAAC;AACxC,gBAAI,gBAAgB,oBAAoB,CAAC;AACzC,gBAAI,YAAY,oBAAoB,EAAE;AAEtC,qBAAS,iBAAiB,GAAG,GAAG;AAC5B,kBAAI,IAAI,IAAI;AACZ,kBAAI,WAAW;AACf,qBAAO,GAAG;AACN;AACA,qBAAK,IAAI;AAAA,cACb;AACA,qBAAO;AAAA,YACX;AACA,qBAAS,QAAQ,KAAK,MAAM;AACxB,qBAAQ,QAAQ,IAAK;AAAA,YACzB;AAEA,gBAAI,oBAAoB;AAAA,cACpB,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,KAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,MAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,cACrE,EAAE,MAAM,OAAQ,YAAY,EAAE,sBAAsB,GAAG,UAAU,EAAE,EAAE;AAAA,YACzE;AACA,gBAAI,aAAa;AAAA,cACb,SAAU,GAAG;AAAE,wBAAS,EAAE,IAAI,EAAE,KAAK,MAAO;AAAA,cAAG;AAAA,cAC/C,SAAU,GAAG;AAAE,uBAAQ,EAAE,IAAI,MAAO;AAAA,cAAG;AAAA,cACvC,SAAU,GAAG;AAAE,uBAAO,EAAE,IAAI,MAAM;AAAA,cAAG;AAAA,cACrC,SAAU,GAAG;AAAE,wBAAQ,EAAE,IAAI,EAAE,KAAK,MAAM;AAAA,cAAG;AAAA,cAC7C,SAAU,GAAG;AAAE,wBAAQ,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,IAAI,CAAC,KAAK,MAAM;AAAA,cAAG;AAAA,cAC7E,SAAU,GAAG;AAAE,uBAAS,EAAE,IAAI,EAAE,IAAK,IAAO,EAAE,IAAI,EAAE,IAAK,MAAO;AAAA,cAAG;AAAA,cACnE,SAAU,GAAG;AAAE,wBAAW,EAAE,IAAI,EAAE,IAAK,IAAM,EAAE,IAAI,EAAE,IAAK,KAAK,MAAO;AAAA,cAAG;AAAA,cACzE,SAAU,GAAG;AAAE,yBAAW,EAAE,IAAI,EAAE,KAAK,IAAM,EAAE,IAAI,EAAE,IAAK,KAAK,MAAO;AAAA,cAAG;AAAA,YAC7E;AACA,qBAAS,yBAAyB,SAAS;AACvC,kBAAI,YAAY,KAAK,IAAI,QAAQ;AACjC,kBAAI,SAAS,YAAY,UAAU,YAAY,WAAW,SAAS;AACnE,qBAAO,UAAU,GAAG,GAAG,GAAG,GAAG,IAAI;AACjC,qBAAO,UAAU,YAAY,GAAG,GAAG,GAAG,GAAG,IAAI;AAC7C,qBAAO,UAAU,GAAG,YAAY,GAAG,GAAG,GAAG,IAAI;AAE7C,uBAAS,KAAK,GAAGI,MAAK,QAAQ,yBAAyB,KAAKA,IAAG,QAAQ,MAAM;AACzE,oBAAI,IAAIA,IAAG,EAAE;AACb,yBAAS,KAAK,GAAG,KAAK,QAAQ,yBAAyB,KAAK,GAAG,QAAQ,MAAM;AACzE,sBAAI,IAAI,GAAG,EAAE;AACb,sBAAI,EAAE,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,YAAY,KAAK,MAAM,YAAY,KAAK,MAAM,IAAI;AAC3F,2BAAO,UAAU,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI;AAAA,kBAC7C;AAAA,gBACJ;AAAA,cACJ;AACA,qBAAO,UAAU,GAAG,GAAG,GAAG,YAAY,IAAI,IAAI;AAC9C,qBAAO,UAAU,GAAG,GAAG,YAAY,IAAI,GAAG,IAAI;AAC9C,kBAAI,QAAQ,gBAAgB,GAAG;AAC3B,uBAAO,UAAU,YAAY,IAAI,GAAG,GAAG,GAAG,IAAI;AAC9C,uBAAO,UAAU,GAAG,YAAY,IAAI,GAAG,GAAG,IAAI;AAAA,cAClD;AACA,qBAAO;AAAA,YACX;AACA,qBAAS,cAAc,QAAQ,SAAS,YAAY;AAChD,kBAAI,WAAW,WAAW,WAAW,QAAQ;AAC7C,kBAAI,YAAY,OAAO;AACvB,kBAAI,sBAAsB,yBAAyB,OAAO;AAC1D,kBAAI,YAAY,CAAC;AACjB,kBAAI,cAAc;AAClB,kBAAI,WAAW;AAEf,kBAAI,YAAY;AAChB,uBAAS,cAAc,YAAY,GAAG,cAAc,GAAG,eAAe,GAAG;AACrE,oBAAI,gBAAgB,GAAG;AACnB;AAAA,gBACJ;AACA,yBAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAChC,sBAAI,IAAI,YAAY,YAAY,IAAI,IAAI;AACxC,2BAAS,eAAe,GAAG,eAAe,GAAG,gBAAgB;AACzD,wBAAI,IAAI,cAAc;AACtB,wBAAI,CAAC,oBAAoB,IAAI,GAAG,CAAC,GAAG;AAChC;AACA,0BAAI,MAAM,OAAO,IAAI,GAAG,CAAC;AACzB,0BAAI,SAAS,EAAE,GAAM,EAAK,CAAC,GAAG;AAC1B,8BAAM,CAAC;AAAA,sBACX;AACA,oCAAc,QAAQ,KAAK,WAAW;AACtC,0BAAI,aAAa,GAAG;AAChB,kCAAU,KAAK,WAAW;AAC1B,mCAAW;AACX,sCAAc;AAAA,sBAClB;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ;AACA,4BAAY,CAAC;AAAA,cACjB;AACA,qBAAO;AAAA,YACX;AACA,qBAAS,YAAY,QAAQ;AACzB,kBAAI,YAAY,OAAO;AACvB,kBAAI,qBAAqB,KAAK,OAAO,YAAY,MAAM,CAAC;AACxD,kBAAI,sBAAsB,GAAG;AACzB,uBAAO,UAAU,SAAS,qBAAqB,CAAC;AAAA,cACpD;AACA,kBAAI,sBAAsB;AAC1B,uBAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AACzB,yBAAS,IAAI,YAAY,GAAG,KAAK,YAAY,IAAI,KAAK;AAClD,wCAAsB,QAAQ,OAAO,IAAI,GAAG,CAAC,GAAG,mBAAmB;AAAA,gBACvE;AAAA,cACJ;AACA,kBAAI,wBAAwB;AAC5B,uBAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AACzB,yBAAS,IAAI,YAAY,GAAG,KAAK,YAAY,IAAI,KAAK;AAClD,0CAAwB,QAAQ,OAAO,IAAI,GAAG,CAAC,GAAG,qBAAqB;AAAA,gBAC3E;AAAA,cACJ;AACA,kBAAI,iBAAiB;AACrB,kBAAI;AACJ,uBAAS,KAAK,GAAG,aAAa,UAAU,UAAU,KAAK,WAAW,QAAQ,MAAM;AAC5E,oBAAI,UAAU,WAAW,EAAE;AAC3B,oBAAI,QAAQ,aAAa,uBAAuB,QAAQ,aAAa,uBAAuB;AACxF,yBAAO;AAAA,gBACX;AACA,oBAAI,aAAa,iBAAiB,qBAAqB,QAAQ,QAAQ;AACvE,oBAAI,aAAa,gBAAgB;AAC7B,gCAAc;AACd,mCAAiB;AAAA,gBACrB;AACA,6BAAa,iBAAiB,uBAAuB,QAAQ,QAAQ;AACrE,oBAAI,aAAa,gBAAgB;AAC7B,gCAAc;AACd,mCAAiB;AAAA,gBACrB;AAAA,cACJ;AAGA,kBAAI,kBAAkB,GAAG;AACrB,uBAAO;AAAA,cACX;AAAA,YACJ;AACA,qBAAS,sBAAsB,QAAQ;AACnC,kBAAI,wBAAwB;AAC5B,uBAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AACzB,oBAAI,MAAM,GAAG;AACT,0CAAwB,QAAQ,OAAO,IAAI,GAAG,CAAC,GAAG,qBAAqB;AAAA,gBAC3E;AAAA,cACJ;AACA,uBAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AACzB,oBAAI,MAAM,GAAG;AACT,0CAAwB,QAAQ,OAAO,IAAI,GAAG,CAAC,GAAG,qBAAqB;AAAA,gBAC3E;AAAA,cACJ;AACA,kBAAI,YAAY,OAAO;AACvB,kBAAI,oCAAoC;AACxC,uBAAS,IAAI,YAAY,GAAG,KAAK,YAAY,GAAG,KAAK;AACjD,oDAAoC,QAAQ,OAAO,IAAI,GAAG,CAAC,GAAG,iCAAiC;AAAA,cACnG;AACA,uBAAS,IAAI,YAAY,GAAG,IAAI,WAAW,KAAK;AAC5C,oDAAoC,QAAQ,OAAO,IAAI,GAAG,CAAC,GAAG,iCAAiC;AAAA,cACnG;AACA,kBAAI,iBAAiB;AACrB,kBAAI,iBAAiB;AACrB,uBAAS,KAAK,GAAG,sBAAsB,mBAAmB,KAAK,oBAAoB,QAAQ,MAAM;AAC7F,oBAAIA,MAAK,oBAAoB,EAAE,GAAG,OAAOA,IAAG,MAAM,aAAaA,IAAG;AAClE,oBAAI,SAAS,yBAAyB,SAAS,mCAAmC;AAC9E,yBAAO;AAAA,gBACX;AACA,oBAAI,aAAa,iBAAiB,uBAAuB,IAAI;AAC7D,oBAAI,aAAa,gBAAgB;AAC7B,mCAAiB;AACjB,mCAAiB;AAAA,gBACrB;AACA,oBAAI,0BAA0B,mCAAmC;AAC7D,+BAAa,iBAAiB,mCAAmC,IAAI;AACrE,sBAAI,aAAa,gBAAgB;AAC7B,qCAAiB;AACjB,qCAAiB;AAAA,kBACrB;AAAA,gBACJ;AAAA,cACJ;AAEA,kBAAI,kBAAkB,GAAG;AACrB,uBAAO;AAAA,cACX;AACA,qBAAO;AAAA,YACX;AACA,qBAAS,cAAc,WAAW,SAAS,SAAS;AAChD,kBAAI,SAAS,QAAQ,sBAAsB,OAAO;AAClD,kBAAI,aAAa,CAAC;AAClB,kBAAI,iBAAiB;AACrB,qBAAO,SAAS,QAAQ,SAAU,OAAO;AACrC,yBAASI,KAAI,GAAGA,KAAI,MAAM,WAAWA,MAAK;AACtC,6BAAW,KAAK,EAAE,kBAAkB,MAAM,uBAAuB,WAAW,CAAC,EAAE,CAAC;AAChF,oCAAkB,MAAM,wBAAwB,OAAO;AAAA,gBAC3D;AAAA,cACJ,CAAC;AAID,kBAAI,UAAU,SAAS,gBAAgB;AACnC,uBAAO;AAAA,cACX;AACA,0BAAY,UAAU,MAAM,GAAG,cAAc;AAC7C,kBAAI,iBAAiB,OAAO,SAAS,CAAC,EAAE;AAExC,uBAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACrC,yBAAS,KAAK,GAAG,eAAe,YAAY,KAAK,aAAa,QAAQ,MAAM;AACxE,sBAAI,YAAY,aAAa,EAAE;AAC/B,4BAAU,UAAU,KAAK,UAAU,MAAM,CAAC;AAAA,gBAC9C;AAAA,cACJ;AAEA,kBAAI,OAAO,SAAS,SAAS,GAAG;AAC5B,oBAAI,kBAAkB,OAAO,SAAS,CAAC,EAAE;AACzC,oBAAI,kBAAkB,OAAO,SAAS,CAAC,EAAE;AACzC,yBAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACtC,6BAAW,kBAAkB,CAAC,EAAE,UAAU,KAAK,UAAU,MAAM,CAAC;AAAA,gBACpE;AAAA,cACJ;AAEA,qBAAO,UAAU,SAAS,GAAG;AACzB,yBAASJ,MAAK,GAAG,eAAe,YAAYA,MAAK,aAAa,QAAQA,OAAM;AACxE,sBAAI,YAAY,aAAaA,GAAE;AAC/B,4BAAU,UAAU,KAAK,UAAU,MAAM,CAAC;AAAA,gBAC9C;AAAA,cACJ;AACA,qBAAO;AAAA,YACX;AACA,qBAAS,aAAa,QAAQ;AAC1B,kBAAI,UAAU,YAAY,MAAM;AAChC,kBAAI,CAAC,SAAS;AACV,uBAAO;AAAA,cACX;AACA,kBAAI,aAAa,sBAAsB,MAAM;AAC7C,kBAAI,CAAC,YAAY;AACb,uBAAO;AAAA,cACX;AACA,kBAAI,YAAY,cAAc,QAAQ,SAAS,UAAU;AACzD,kBAAI,aAAa,cAAc,WAAW,SAAS,WAAW,oBAAoB;AAClF,kBAAI,CAAC,YAAY;AACb,uBAAO;AAAA,cACX;AAEA,kBAAI,aAAa,WAAW,OAAO,SAAU,GAAG,GAAG;AAAE,uBAAO,IAAI,EAAE;AAAA,cAAkB,GAAG,CAAC;AACxF,kBAAI,cAAc,IAAI,kBAAkB,UAAU;AAClD,kBAAI,cAAc;AAClB,uBAAS,KAAK,GAAG,eAAe,YAAY,KAAK,aAAa,QAAQ,MAAM;AACxE,oBAAI,YAAY,aAAa,EAAE;AAC/B,oBAAI,iBAAiB,cAAc,OAAO,UAAU,WAAW,UAAU,UAAU,SAAS,UAAU,gBAAgB;AACtH,oBAAI,CAAC,gBAAgB;AACjB,yBAAO;AAAA,gBACX;AACA,yBAAS,IAAI,GAAG,IAAI,UAAU,kBAAkB,KAAK;AACjD,8BAAY,aAAa,IAAI,eAAe,CAAC;AAAA,gBACjD;AAAA,cACJ;AACA,kBAAI;AACA,uBAAO,aAAa,OAAO,aAAa,QAAQ,aAAa;AAAA,cACjE,SACOA,KAAI;AACP,uBAAO;AAAA,cACX;AAAA,YACJ;AACA,qBAAS,OAAO,QAAQ;AACpB,kBAAI,UAAU,MAAM;AAChB,uBAAO;AAAA,cACX;AACA,kBAAI,SAAS,aAAa,MAAM;AAChC,kBAAI,QAAQ;AACR,uBAAO;AAAA,cACX;AAEA,uBAAS,IAAI,GAAG,IAAI,OAAO,OAAO,KAAK;AACnC,yBAAS,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACxC,sBAAI,OAAO,IAAI,GAAG,CAAC,MAAM,OAAO,IAAI,GAAG,CAAC,GAAG;AACvC,2BAAO,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;AAClC,2BAAO,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;AAAA,kBACtC;AAAA,gBACJ;AAAA,cACJ;AACA,qBAAO,aAAa,MAAM;AAAA,YAC9B;AACA,YAAAJ,SAAQ,SAAS;AAAA,UAGX;AAAA;AAAA;AAAA,UAEC,SAASD,SAAQC,UAAS,qBAAqB;AAEtD;AAEA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAE5D,gBAAI,cAAc,oBAAoB,CAAC;AACvC,gBAAI,kBAAkB,oBAAoB,CAAC;AAC3C,gBAAI;AACJ,aAAC,SAAUS,OAAM;AACb,cAAAA,MAAK,SAAS,IAAI;AAClB,cAAAA,MAAK,cAAc,IAAI;AACvB,cAAAA,MAAK,MAAM,IAAI;AACf,cAAAA,MAAK,OAAO,IAAI;AAChB,cAAAA,MAAK,KAAK,IAAI;AAAA,YAClB,GAAG,OAAOT,SAAQ,SAASA,SAAQ,OAAO,CAAC,EAAE;AAC7C,gBAAI;AACJ,aAAC,SAAUU,WAAU;AACjB,cAAAA,UAASA,UAAS,YAAY,IAAI,CAAC,IAAI;AACvC,cAAAA,UAASA,UAAS,SAAS,IAAI,CAAC,IAAI;AACpC,cAAAA,UAASA,UAAS,cAAc,IAAI,CAAC,IAAI;AACzC,cAAAA,UAASA,UAAS,MAAM,IAAI,CAAC,IAAI;AACjC,cAAAA,UAASA,UAAS,OAAO,IAAI,CAAC,IAAI;AAClC,cAAAA,UAASA,UAAS,KAAK,IAAI,CAAC,IAAI;AAAA,YAIpC,GAAG,aAAa,WAAW,CAAC,EAAE;AAC9B,qBAAS,cAAc,QAAQ,MAAM;AACjC,kBAAI,QAAQ,CAAC;AACb,kBAAI,OAAO;AACX,kBAAI,qBAAqB,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI;AAC1C,kBAAI,SAAS,OAAO,SAAS,kBAAkB;AAE/C,qBAAO,UAAU,GAAG;AAChB,oBAAI,MAAM,OAAO,SAAS,EAAE;AAC5B,oBAAI,OAAO,KAAM;AACb,wBAAM,IAAI,MAAM,iCAAiC;AAAA,gBACrD;AACA,oBAAI,IAAI,KAAK,MAAM,MAAM,GAAG;AAC5B,oBAAI,IAAI,KAAK,MAAM,MAAM,EAAE,IAAI;AAC/B,oBAAI,IAAI,MAAM;AACd,sBAAM,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACjC,wBAAQ,EAAE,SAAS,IAAI,EAAE,SAAS,IAAI,EAAE,SAAS;AACjD,0BAAU;AAAA,cACd;AAEA,kBAAI,WAAW,GAAG;AACd,oBAAI,MAAM,OAAO,SAAS,CAAC;AAC3B,oBAAI,OAAO,KAAK;AACZ,wBAAM,IAAI,MAAM,gCAAgC;AAAA,gBACpD;AACA,oBAAI,IAAI,KAAK,MAAM,MAAM,EAAE;AAC3B,oBAAI,IAAI,MAAM;AACd,sBAAM,KAAK,KAAK,GAAG,KAAK,CAAC;AACzB,wBAAQ,EAAE,SAAS,IAAI,EAAE,SAAS;AAAA,cACtC,WACS,WAAW,GAAG;AACnB,oBAAI,MAAM,OAAO,SAAS,CAAC;AAC3B,oBAAI,OAAO,IAAI;AACX,wBAAM,IAAI,MAAM,+BAA+B;AAAA,gBACnD;AACA,sBAAM,KAAK,KAAK,GAAG;AACnB,wBAAQ,IAAI,SAAS;AAAA,cACzB;AACA,qBAAO,EAAE,OAAc,KAAW;AAAA,YACtC;AACA,gBAAI,6BAA6B;AAAA,cAC7B;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cACxC;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cACxC;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cACxC;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cACxC;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,cAAK;AAAA,YAC5C;AACA,qBAAS,mBAAmB,QAAQ,MAAM;AACtC,kBAAI,QAAQ,CAAC;AACb,kBAAI,OAAO;AACX,kBAAI,qBAAqB,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI;AACzC,kBAAI,SAAS,OAAO,SAAS,kBAAkB;AAC/C,qBAAO,UAAU,GAAG;AAChB,oBAAI,IAAI,OAAO,SAAS,EAAE;AAC1B,oBAAI,IAAI,KAAK,MAAM,IAAI,EAAE;AACzB,oBAAI,IAAI,IAAI;AACZ,sBAAM,KAAK,2BAA2B,CAAC,EAAE,WAAW,CAAC,GAAG,2BAA2B,CAAC,EAAE,WAAW,CAAC,CAAC;AACnG,wBAAQ,2BAA2B,CAAC,IAAI,2BAA2B,CAAC;AACpE,0BAAU;AAAA,cACd;AACA,kBAAI,WAAW,GAAG;AACd,oBAAI,IAAI,OAAO,SAAS,CAAC;AACzB,sBAAM,KAAK,2BAA2B,CAAC,EAAE,WAAW,CAAC,CAAC;AACtD,wBAAQ,2BAA2B,CAAC;AAAA,cACxC;AACA,qBAAO,EAAE,OAAc,KAAW;AAAA,YACtC;AACA,qBAAS,WAAW,QAAQ,MAAM;AAC9B,kBAAI,QAAQ,CAAC;AACb,kBAAI,OAAO;AACX,kBAAI,qBAAqB,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI;AACzC,kBAAI,SAAS,OAAO,SAAS,kBAAkB;AAC/C,uBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,oBAAI,IAAI,OAAO,SAAS,CAAC;AACzB,sBAAM,KAAK,CAAC;AAAA,cAChB;AACA,kBAAI;AACA,wBAAQ,mBAAmB,MAAM,IAAI,SAAUC,IAAG;AAAE,yBAAO,OAAO,MAAMA,GAAE,SAAS,EAAE,GAAG,OAAO,EAAE;AAAA,gBAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA,cACnH,SACOP,KAAI;AAAA,cAEX;AACA,qBAAO,EAAE,OAAc,KAAW;AAAA,YACtC;AACA,qBAAS,YAAY,QAAQ,MAAM;AAC/B,kBAAI,QAAQ,CAAC;AACb,kBAAI,OAAO;AACX,kBAAI,qBAAqB,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI;AACzC,kBAAI,SAAS,OAAO,SAAS,kBAAkB;AAC/C,uBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,oBAAI,IAAI,OAAO,SAAS,EAAE;AAC1B,oBAAI,IAAK,KAAK,MAAM,IAAI,GAAI,KAAK,IAAM,IAAI;AAC3C,oBAAI,IAAI,MAAQ;AACZ,uBAAK;AAAA,gBACT,OACK;AACD,uBAAK;AAAA,gBACT;AACA,sBAAM,KAAK,KAAK,GAAG,IAAI,GAAI;AAC3B,wBAAQ,OAAO,aAAa,gBAAgB,cAAc,CAAC,CAAC;AAAA,cAChE;AACA,qBAAO,EAAE,OAAc,KAAW;AAAA,YACtC;AACA,qBAAS,OAAO,MAAM,SAAS;AAC3B,kBAAIA,KAAI,IAAI,IAAI;AAChB,kBAAI,SAAS,IAAI,YAAY,UAAU,IAAI;AAE3C,kBAAI,OAAO,WAAW,IAAI,IAAI,WAAW,KAAK,IAAI;AAClD,kBAAI,SAAS;AAAA,gBACT,MAAM;AAAA,gBACN,OAAO,CAAC;AAAA,gBACR,QAAQ,CAAC;AAAA,gBACT;AAAA,cACJ;AACA,qBAAO,OAAO,UAAU,KAAK,GAAG;AAC5B,oBAAI,OAAO,OAAO,SAAS,CAAC;AAC5B,oBAAI,SAAS,SAAS,YAAY;AAC9B,yBAAO;AAAA,gBACX,WACS,SAAS,SAAS,KAAK;AAC5B,sBAAI,OAAO,SAAS,CAAC,MAAM,GAAG;AAC1B,2BAAO,OAAO,KAAK;AAAA,sBACf,MAAM,KAAK;AAAA,sBACX,kBAAkB,OAAO,SAAS,CAAC;AAAA,oBACvC,CAAC;AAAA,kBACL,WACS,OAAO,SAAS,CAAC,MAAM,GAAG;AAC/B,2BAAO,OAAO,KAAK;AAAA,sBACf,MAAM,KAAK;AAAA,sBACX,kBAAkB,OAAO,SAAS,EAAE;AAAA,oBACxC,CAAC;AAAA,kBACL,WACS,OAAO,SAAS,CAAC,MAAM,GAAG;AAC/B,2BAAO,OAAO,KAAK;AAAA,sBACf,MAAM,KAAK;AAAA,sBACX,kBAAkB,OAAO,SAAS,EAAE;AAAA,oBACxC,CAAC;AAAA,kBACL,OACK;AAED,2BAAO,OAAO,KAAK;AAAA,sBACf,MAAM,KAAK;AAAA,sBACX,kBAAkB;AAAA,oBACtB,CAAC;AAAA,kBACL;AAAA,gBACJ,WACS,SAAS,SAAS,SAAS;AAChC,sBAAI,gBAAgB,cAAc,QAAQ,IAAI;AAC9C,yBAAO,QAAQ,cAAc;AAC7B,mBAACA,MAAK,OAAO,OAAO,KAAK,MAAMA,KAAI,cAAc,KAAK;AACtD,yBAAO,OAAO,KAAK;AAAA,oBACf,MAAM,KAAK;AAAA,oBACX,MAAM,cAAc;AAAA,kBACxB,CAAC;AAAA,gBACL,WACS,SAAS,SAAS,cAAc;AACrC,sBAAI,qBAAqB,mBAAmB,QAAQ,IAAI;AACxD,yBAAO,QAAQ,mBAAmB;AAClC,mBAAC,KAAK,OAAO,OAAO,KAAK,MAAM,IAAI,mBAAmB,KAAK;AAC3D,yBAAO,OAAO,KAAK;AAAA,oBACf,MAAM,KAAK;AAAA,oBACX,MAAM,mBAAmB;AAAA,kBAC7B,CAAC;AAAA,gBACL,WACS,SAAS,SAAS,MAAM;AAC7B,sBAAI,aAAa,WAAW,QAAQ,IAAI;AACxC,yBAAO,QAAQ,WAAW;AAC1B,mBAAC,KAAK,OAAO,OAAO,KAAK,MAAM,IAAI,WAAW,KAAK;AACnD,yBAAO,OAAO,KAAK;AAAA,oBACf,MAAM,KAAK;AAAA,oBACX,OAAO,WAAW;AAAA,oBAClB,MAAM,WAAW;AAAA,kBACrB,CAAC;AAAA,gBACL,WACS,SAAS,SAAS,OAAO;AAC9B,sBAAI,cAAc,YAAY,QAAQ,IAAI;AAC1C,yBAAO,QAAQ,YAAY;AAC3B,mBAAC,KAAK,OAAO,OAAO,KAAK,MAAM,IAAI,YAAY,KAAK;AACpD,yBAAO,OAAO,KAAK;AAAA,oBACf,MAAM,KAAK;AAAA,oBACX,OAAO,YAAY;AAAA,oBACnB,MAAM,YAAY;AAAA,kBACtB,CAAC;AAAA,gBACL;AAAA,cACJ;AAEA,kBAAI,OAAO,UAAU,MAAM,KAAK,OAAO,SAAS,OAAO,UAAU,CAAC,MAAM,GAAG;AACvE,uBAAO;AAAA,cACX;AAAA,YACJ;AACA,YAAAJ,SAAQ,SAAS;AAAA,UAGX;AAAA;AAAA;AAAA,UAEC,SAASD,SAAQC,UAAS,qBAAqB;AAEtD;AAGA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,gBAAI;AAAA;AAAA,cAA2B,WAAY;AACvC,yBAASY,WAAU,OAAO;AACtB,uBAAK,aAAa;AAClB,uBAAK,YAAY;AACjB,uBAAK,QAAQ;AAAA,gBACjB;AACA,gBAAAA,WAAU,UAAU,WAAW,SAAU,SAAS;AAC9C,sBAAI,UAAU,KAAK,UAAU,MAAM,UAAU,KAAK,UAAU,GAAG;AAC3D,0BAAM,IAAI,MAAM,iBAAiB,QAAQ,SAAS,IAAI,OAAO;AAAA,kBACjE;AACA,sBAAI,SAAS;AAEb,sBAAI,KAAK,YAAY,GAAG;AACpB,wBAAI,WAAW,IAAI,KAAK;AACxB,wBAAI,SAAS,UAAU,WAAW,UAAU;AAC5C,wBAAI,gBAAgB,WAAW;AAC/B,wBAAI,OAAQ,OAAS,IAAI,UAAY;AACrC,8BAAU,KAAK,MAAM,KAAK,UAAU,IAAI,SAAS;AACjD,+BAAW;AACX,yBAAK,aAAa;AAClB,wBAAI,KAAK,cAAc,GAAG;AACtB,2BAAK,YAAY;AACjB,2BAAK;AAAA,oBACT;AAAA,kBACJ;AAEA,sBAAI,UAAU,GAAG;AACb,2BAAO,WAAW,GAAG;AACjB,+BAAU,UAAU,IAAM,KAAK,MAAM,KAAK,UAAU,IAAI;AACxD,2BAAK;AACL,iCAAW;AAAA,oBACf;AAEA,wBAAI,UAAU,GAAG;AACb,0BAAI,gBAAgB,IAAI;AACxB,0BAAI,OAAQ,OAAQ,iBAAkB;AACtC,+BAAU,UAAU,WAAa,KAAK,MAAM,KAAK,UAAU,IAAI,SAAS;AACxE,2BAAK,aAAa;AAAA,oBACtB;AAAA,kBACJ;AACA,yBAAO;AAAA,gBACX;AACA,gBAAAA,WAAU,UAAU,YAAY,WAAY;AACxC,yBAAO,KAAK,KAAK,MAAM,SAAS,KAAK,cAAc,KAAK;AAAA,gBAC5D;AACA,uBAAOA;AAAA,cACX,EAAE;AAAA;AACF,YAAAZ,SAAQ,YAAY;AAAA,UAGd;AAAA;AAAA;AAAA,UAEC,SAASD,SAAQC,UAAS,qBAAqB;AAEtD;AAEA,mBAAO,eAAeA,UAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAAA,SAAQ,gBAAgB;AAAA,cACpB,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,IAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,MAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,MAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,MAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,MAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,MAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,KAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,KAAM;AAAA,cACN,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,MAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,MAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,KAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAAQ;AAAA,cACR,OAA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","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"jsQR\"] = factory();\n\telse\n\t\troot[\"jsQR\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitMatrix = /** @class */ (function () {\n function BitMatrix(data, width) {\n this.width = width;\n this.height = data.length / width;\n this.data = data;\n }\n BitMatrix.createEmpty = function (width, height) {\n return new BitMatrix(new Uint8ClampedArray(width * height), width);\n };\n BitMatrix.prototype.get = function (x, y) {\n if (x < 0 || x >= this.width || y < 0 || y >= this.height) {\n return false;\n }\n return !!this.data[y * this.width + x];\n };\n BitMatrix.prototype.set = function (x, y, v) {\n this.data[y * this.width + x] = v ? 1 : 0;\n };\n BitMatrix.prototype.setRegion = function (left, top, width, height, v) {\n for (var y = top; y < top + height; y++) {\n for (var x = left; x < left + width; x++) {\n this.set(x, y, !!v);\n }\n }\n };\n return BitMatrix;\n}());\nexports.BitMatrix = BitMatrix;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar GenericGFPoly_1 = __webpack_require__(2);\nfunction addOrSubtractGF(a, b) {\n return a ^ b; // tslint:disable-line:no-bitwise\n}\nexports.addOrSubtractGF = addOrSubtractGF;\nvar GenericGF = /** @class */ (function () {\n function GenericGF(primitive, size, genBase) {\n this.primitive = primitive;\n this.size = size;\n this.generatorBase = genBase;\n this.expTable = new Array(this.size);\n this.logTable = new Array(this.size);\n var x = 1;\n for (var i = 0; i < this.size; i++) {\n this.expTable[i] = x;\n x = x * 2;\n if (x >= this.size) {\n x = (x ^ this.primitive) & (this.size - 1); // tslint:disable-line:no-bitwise\n }\n }\n for (var i = 0; i < this.size - 1; i++) {\n this.logTable[this.expTable[i]] = i;\n }\n this.zero = new GenericGFPoly_1.default(this, Uint8ClampedArray.from([0]));\n this.one = new GenericGFPoly_1.default(this, Uint8ClampedArray.from([1]));\n }\n GenericGF.prototype.multiply = function (a, b) {\n if (a === 0 || b === 0) {\n return 0;\n }\n return this.expTable[(this.logTable[a] + this.logTable[b]) % (this.size - 1)];\n };\n GenericGF.prototype.inverse = function (a) {\n if (a === 0) {\n throw new Error(\"Can't invert 0\");\n }\n return this.expTable[this.size - this.logTable[a] - 1];\n };\n GenericGF.prototype.buildMonomial = function (degree, coefficient) {\n if (degree < 0) {\n throw new Error(\"Invalid monomial degree less than 0\");\n }\n if (coefficient === 0) {\n return this.zero;\n }\n var coefficients = new Uint8ClampedArray(degree + 1);\n coefficients[0] = coefficient;\n return new GenericGFPoly_1.default(this, coefficients);\n };\n GenericGF.prototype.log = function (a) {\n if (a === 0) {\n throw new Error(\"Can't take log(0)\");\n }\n return this.logTable[a];\n };\n GenericGF.prototype.exp = function (a) {\n return this.expTable[a];\n };\n return GenericGF;\n}());\nexports.default = GenericGF;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar GenericGF_1 = __webpack_require__(1);\nvar GenericGFPoly = /** @class */ (function () {\n function GenericGFPoly(field, coefficients) {\n if (coefficients.length === 0) {\n throw new Error(\"No coefficients.\");\n }\n this.field = field;\n var coefficientsLength = coefficients.length;\n if (coefficientsLength > 1 && coefficients[0] === 0) {\n // Leading term must be non-zero for anything except the constant polynomial \"0\"\n var firstNonZero = 1;\n while (firstNonZero < coefficientsLength && coefficients[firstNonZero] === 0) {\n firstNonZero++;\n }\n if (firstNonZero === coefficientsLength) {\n this.coefficients = field.zero.coefficients;\n }\n else {\n this.coefficients = new Uint8ClampedArray(coefficientsLength - firstNonZero);\n for (var i = 0; i < this.coefficients.length; i++) {\n this.coefficients[i] = coefficients[firstNonZero + i];\n }\n }\n }\n else {\n this.coefficients = coefficients;\n }\n }\n GenericGFPoly.prototype.degree = function () {\n return this.coefficients.length - 1;\n };\n GenericGFPoly.prototype.isZero = function () {\n return this.coefficients[0] === 0;\n };\n GenericGFPoly.prototype.getCoefficient = function (degree) {\n return this.coefficients[this.coefficients.length - 1 - degree];\n };\n GenericGFPoly.prototype.addOrSubtract = function (other) {\n var _a;\n if (this.isZero()) {\n return other;\n }\n if (other.isZero()) {\n return this;\n }\n var smallerCoefficients = this.coefficients;\n var largerCoefficients = other.coefficients;\n if (smallerCoefficients.length > largerCoefficients.length) {\n _a = [largerCoefficients, smallerCoefficients], smallerCoefficients = _a[0], largerCoefficients = _a[1];\n }\n var sumDiff = new Uint8ClampedArray(largerCoefficients.length);\n var lengthDiff = largerCoefficients.length - smallerCoefficients.length;\n for (var i = 0; i < lengthDiff; i++) {\n sumDiff[i] = largerCoefficients[i];\n }\n for (var i = lengthDiff; i < largerCoefficients.length; i++) {\n sumDiff[i] = GenericGF_1.addOrSubtractGF(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\n }\n return new GenericGFPoly(this.field, sumDiff);\n };\n GenericGFPoly.prototype.multiply = function (scalar) {\n if (scalar === 0) {\n return this.field.zero;\n }\n if (scalar === 1) {\n return this;\n }\n var size = this.coefficients.length;\n var product = new Uint8ClampedArray(size);\n for (var i = 0; i < size; i++) {\n product[i] = this.field.multiply(this.coefficients[i], scalar);\n }\n return new GenericGFPoly(this.field, product);\n };\n GenericGFPoly.prototype.multiplyPoly = function (other) {\n if (this.isZero() || other.isZero()) {\n return this.field.zero;\n }\n var aCoefficients = this.coefficients;\n var aLength = aCoefficients.length;\n var bCoefficients = other.coefficients;\n var bLength = bCoefficients.length;\n var product = new Uint8ClampedArray(aLength + bLength - 1);\n for (var i = 0; i < aLength; i++) {\n var aCoeff = aCoefficients[i];\n for (var j = 0; j < bLength; j++) {\n product[i + j] = GenericGF_1.addOrSubtractGF(product[i + j], this.field.multiply(aCoeff, bCoefficients[j]));\n }\n }\n return new GenericGFPoly(this.field, product);\n };\n GenericGFPoly.prototype.multiplyByMonomial = function (degree, coefficient) {\n if (degree < 0) {\n throw new Error(\"Invalid degree less than 0\");\n }\n if (coefficient === 0) {\n return this.field.zero;\n }\n var size = this.coefficients.length;\n var product = new Uint8ClampedArray(size + degree);\n for (var i = 0; i < size; i++) {\n product[i] = this.field.multiply(this.coefficients[i], coefficient);\n }\n return new GenericGFPoly(this.field, product);\n };\n GenericGFPoly.prototype.evaluateAt = function (a) {\n var result = 0;\n if (a === 0) {\n // Just return the x^0 coefficient\n return this.getCoefficient(0);\n }\n var size = this.coefficients.length;\n if (a === 1) {\n // Just the sum of the coefficients\n this.coefficients.forEach(function (coefficient) {\n result = GenericGF_1.addOrSubtractGF(result, coefficient);\n });\n return result;\n }\n result = this.coefficients[0];\n for (var i = 1; i < size; i++) {\n result = GenericGF_1.addOrSubtractGF(this.field.multiply(a, result), this.coefficients[i]);\n }\n return result;\n };\n return GenericGFPoly;\n}());\nexports.default = GenericGFPoly;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binarizer_1 = __webpack_require__(4);\nvar decoder_1 = __webpack_require__(5);\nvar extractor_1 = __webpack_require__(11);\nvar locator_1 = __webpack_require__(12);\nfunction scan(matrix) {\n var locations = locator_1.locate(matrix);\n if (!locations) {\n return null;\n }\n for (var _i = 0, locations_1 = locations; _i < locations_1.length; _i++) {\n var location_1 = locations_1[_i];\n var extracted = extractor_1.extract(matrix, location_1);\n var decoded = decoder_1.decode(extracted.matrix);\n if (decoded) {\n return {\n binaryData: decoded.bytes,\n data: decoded.text,\n chunks: decoded.chunks,\n version: decoded.version,\n location: {\n topRightCorner: extracted.mappingFunction(location_1.dimension, 0),\n topLeftCorner: extracted.mappingFunction(0, 0),\n bottomRightCorner: extracted.mappingFunction(location_1.dimension, location_1.dimension),\n bottomLeftCorner: extracted.mappingFunction(0, location_1.dimension),\n topRightFinderPattern: location_1.topRight,\n topLeftFinderPattern: location_1.topLeft,\n bottomLeftFinderPattern: location_1.bottomLeft,\n bottomRightAlignmentPattern: location_1.alignmentPattern,\n },\n };\n }\n }\n return null;\n}\nvar defaultOptions = {\n inversionAttempts: \"attemptBoth\",\n};\nfunction jsQR(data, width, height, providedOptions) {\n if (providedOptions === void 0) { providedOptions = {}; }\n var options = defaultOptions;\n Object.keys(options || {}).forEach(function (opt) {\n options[opt] = providedOptions[opt] || options[opt];\n });\n var shouldInvert = options.inversionAttempts === \"attemptBoth\" || options.inversionAttempts === \"invertFirst\";\n var tryInvertedFirst = options.inversionAttempts === \"onlyInvert\" || options.inversionAttempts === \"invertFirst\";\n var _a = binarizer_1.binarize(data, width, height, shouldInvert), binarized = _a.binarized, inverted = _a.inverted;\n var result = scan(tryInvertedFirst ? inverted : binarized);\n if (!result && (options.inversionAttempts === \"attemptBoth\" || options.inversionAttempts === \"invertFirst\")) {\n result = scan(tryInvertedFirst ? binarized : inverted);\n }\n return result;\n}\njsQR.default = jsQR;\nexports.default = jsQR;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitMatrix_1 = __webpack_require__(0);\nvar REGION_SIZE = 8;\nvar MIN_DYNAMIC_RANGE = 24;\nfunction numBetween(value, min, max) {\n return value < min ? min : value > max ? max : value;\n}\n// Like BitMatrix but accepts arbitry Uint8 values\nvar Matrix = /** @class */ (function () {\n function Matrix(width, height) {\n this.width = width;\n this.data = new Uint8ClampedArray(width * height);\n }\n Matrix.prototype.get = function (x, y) {\n return this.data[y * this.width + x];\n };\n Matrix.prototype.set = function (x, y, value) {\n this.data[y * this.width + x] = value;\n };\n return Matrix;\n}());\nfunction binarize(data, width, height, returnInverted) {\n if (data.length !== width * height * 4) {\n throw new Error(\"Malformed data passed to binarizer.\");\n }\n // Convert image to greyscale\n var greyscalePixels = new Matrix(width, height);\n for (var x = 0; x < width; x++) {\n for (var y = 0; y < height; y++) {\n var r = data[((y * width + x) * 4) + 0];\n var g = data[((y * width + x) * 4) + 1];\n var b = data[((y * width + x) * 4) + 2];\n greyscalePixels.set(x, y, 0.2126 * r + 0.7152 * g + 0.0722 * b);\n }\n }\n var horizontalRegionCount = Math.ceil(width / REGION_SIZE);\n var verticalRegionCount = Math.ceil(height / REGION_SIZE);\n var blackPoints = new Matrix(horizontalRegionCount, verticalRegionCount);\n for (var verticalRegion = 0; verticalRegion < verticalRegionCount; verticalRegion++) {\n for (var hortizontalRegion = 0; hortizontalRegion < horizontalRegionCount; hortizontalRegion++) {\n var sum = 0;\n var min = Infinity;\n var max = 0;\n for (var y = 0; y < REGION_SIZE; y++) {\n for (var x = 0; x < REGION_SIZE; x++) {\n var pixelLumosity = greyscalePixels.get(hortizontalRegion * REGION_SIZE + x, verticalRegion * REGION_SIZE + y);\n sum += pixelLumosity;\n min = Math.min(min, pixelLumosity);\n max = Math.max(max, pixelLumosity);\n }\n }\n var average = sum / (Math.pow(REGION_SIZE, 2));\n if (max - min <= MIN_DYNAMIC_RANGE) {\n // If variation within the block is low, assume this is a block with only light or only\n // dark pixels. In that case we do not want to use the average, as it would divide this\n // low contrast area into black and white pixels, essentially creating data out of noise.\n //\n // Default the blackpoint for these blocks to be half the min - effectively white them out\n average = min / 2;\n if (verticalRegion > 0 && hortizontalRegion > 0) {\n // Correct the \"white background\" assumption for blocks that have neighbors by comparing\n // the pixels in this block to the previously calculated black points. This is based on\n // the fact that dark barcode symbology is always surrounded by some amount of light\n // background for which reasonable black point estimates were made. The bp estimated at\n // the boundaries is used for the interior.\n // The (min < bp) is arbitrary but works better than other heuristics that were tried.\n var averageNeighborBlackPoint = (blackPoints.get(hortizontalRegion, verticalRegion - 1) +\n (2 * blackPoints.get(hortizontalRegion - 1, verticalRegion)) +\n blackPoints.get(hortizontalRegion - 1, verticalRegion - 1)) / 4;\n if (min < averageNeighborBlackPoint) {\n average = averageNeighborBlackPoint;\n }\n }\n }\n blackPoints.set(hortizontalRegion, verticalRegion, average);\n }\n }\n var binarized = BitMatrix_1.BitMatrix.createEmpty(width, height);\n var inverted = null;\n if (returnInverted) {\n inverted = BitMatrix_1.BitMatrix.createEmpty(width, height);\n }\n for (var verticalRegion = 0; verticalRegion < verticalRegionCount; verticalRegion++) {\n for (var hortizontalRegion = 0; hortizontalRegion < horizontalRegionCount; hortizontalRegion++) {\n var left = numBetween(hortizontalRegion, 2, horizontalRegionCount - 3);\n var top_1 = numBetween(verticalRegion, 2, verticalRegionCount - 3);\n var sum = 0;\n for (var xRegion = -2; xRegion <= 2; xRegion++) {\n for (var yRegion = -2; yRegion <= 2; yRegion++) {\n sum += blackPoints.get(left + xRegion, top_1 + yRegion);\n }\n }\n var threshold = sum / 25;\n for (var xRegion = 0; xRegion < REGION_SIZE; xRegion++) {\n for (var yRegion = 0; yRegion < REGION_SIZE; yRegion++) {\n var x = hortizontalRegion * REGION_SIZE + xRegion;\n var y = verticalRegion * REGION_SIZE + yRegion;\n var lum = greyscalePixels.get(x, y);\n binarized.set(x, y, lum <= threshold);\n if (returnInverted) {\n inverted.set(x, y, !(lum <= threshold));\n }\n }\n }\n }\n }\n if (returnInverted) {\n return { binarized: binarized, inverted: inverted };\n }\n return { binarized: binarized };\n}\nexports.binarize = binarize;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitMatrix_1 = __webpack_require__(0);\nvar decodeData_1 = __webpack_require__(6);\nvar reedsolomon_1 = __webpack_require__(9);\nvar version_1 = __webpack_require__(10);\n// tslint:disable:no-bitwise\nfunction numBitsDiffering(x, y) {\n var z = x ^ y;\n var bitCount = 0;\n while (z) {\n bitCount++;\n z &= z - 1;\n }\n return bitCount;\n}\nfunction pushBit(bit, byte) {\n return (byte << 1) | bit;\n}\n// tslint:enable:no-bitwise\nvar FORMAT_INFO_TABLE = [\n { bits: 0x5412, formatInfo: { errorCorrectionLevel: 1, dataMask: 0 } },\n { bits: 0x5125, formatInfo: { errorCorrectionLevel: 1, dataMask: 1 } },\n { bits: 0x5E7C, formatInfo: { errorCorrectionLevel: 1, dataMask: 2 } },\n { bits: 0x5B4B, formatInfo: { errorCorrectionLevel: 1, dataMask: 3 } },\n { bits: 0x45F9, formatInfo: { errorCorrectionLevel: 1, dataMask: 4 } },\n { bits: 0x40CE, formatInfo: { errorCorrectionLevel: 1, dataMask: 5 } },\n { bits: 0x4F97, formatInfo: { errorCorrectionLevel: 1, dataMask: 6 } },\n { bits: 0x4AA0, formatInfo: { errorCorrectionLevel: 1, dataMask: 7 } },\n { bits: 0x77C4, formatInfo: { errorCorrectionLevel: 0, dataMask: 0 } },\n { bits: 0x72F3, formatInfo: { errorCorrectionLevel: 0, dataMask: 1 } },\n { bits: 0x7DAA, formatInfo: { errorCorrectionLevel: 0, dataMask: 2 } },\n { bits: 0x789D, formatInfo: { errorCorrectionLevel: 0, dataMask: 3 } },\n { bits: 0x662F, formatInfo: { errorCorrectionLevel: 0, dataMask: 4 } },\n { bits: 0x6318, formatInfo: { errorCorrectionLevel: 0, dataMask: 5 } },\n { bits: 0x6C41, formatInfo: { errorCorrectionLevel: 0, dataMask: 6 } },\n { bits: 0x6976, formatInfo: { errorCorrectionLevel: 0, dataMask: 7 } },\n { bits: 0x1689, formatInfo: { errorCorrectionLevel: 3, dataMask: 0 } },\n { bits: 0x13BE, formatInfo: { errorCorrectionLevel: 3, dataMask: 1 } },\n { bits: 0x1CE7, formatInfo: { errorCorrectionLevel: 3, dataMask: 2 } },\n { bits: 0x19D0, formatInfo: { errorCorrectionLevel: 3, dataMask: 3 } },\n { bits: 0x0762, formatInfo: { errorCorrectionLevel: 3, dataMask: 4 } },\n { bits: 0x0255, formatInfo: { errorCorrectionLevel: 3, dataMask: 5 } },\n { bits: 0x0D0C, formatInfo: { errorCorrectionLevel: 3, dataMask: 6 } },\n { bits: 0x083B, formatInfo: { errorCorrectionLevel: 3, dataMask: 7 } },\n { bits: 0x355F, formatInfo: { errorCorrectionLevel: 2, dataMask: 0 } },\n { bits: 0x3068, formatInfo: { errorCorrectionLevel: 2, dataMask: 1 } },\n { bits: 0x3F31, formatInfo: { errorCorrectionLevel: 2, dataMask: 2 } },\n { bits: 0x3A06, formatInfo: { errorCorrectionLevel: 2, dataMask: 3 } },\n { bits: 0x24B4, formatInfo: { errorCorrectionLevel: 2, dataMask: 4 } },\n { bits: 0x2183, formatInfo: { errorCorrectionLevel: 2, dataMask: 5 } },\n { bits: 0x2EDA, formatInfo: { errorCorrectionLevel: 2, dataMask: 6 } },\n { bits: 0x2BED, formatInfo: { errorCorrectionLevel: 2, dataMask: 7 } },\n];\nvar DATA_MASKS = [\n function (p) { return ((p.y + p.x) % 2) === 0; },\n function (p) { return (p.y % 2) === 0; },\n function (p) { return p.x % 3 === 0; },\n function (p) { return (p.y + p.x) % 3 === 0; },\n function (p) { return (Math.floor(p.y / 2) + Math.floor(p.x / 3)) % 2 === 0; },\n function (p) { return ((p.x * p.y) % 2) + ((p.x * p.y) % 3) === 0; },\n function (p) { return ((((p.y * p.x) % 2) + (p.y * p.x) % 3) % 2) === 0; },\n function (p) { return ((((p.y + p.x) % 2) + (p.y * p.x) % 3) % 2) === 0; },\n];\nfunction buildFunctionPatternMask(version) {\n var dimension = 17 + 4 * version.versionNumber;\n var matrix = BitMatrix_1.BitMatrix.createEmpty(dimension, dimension);\n matrix.setRegion(0, 0, 9, 9, true); // Top left finder pattern + separator + format\n matrix.setRegion(dimension - 8, 0, 8, 9, true); // Top right finder pattern + separator + format\n matrix.setRegion(0, dimension - 8, 9, 8, true); // Bottom left finder pattern + separator + format\n // Alignment patterns\n for (var _i = 0, _a = version.alignmentPatternCenters; _i < _a.length; _i++) {\n var x = _a[_i];\n for (var _b = 0, _c = version.alignmentPatternCenters; _b < _c.length; _b++) {\n var y = _c[_b];\n if (!(x === 6 && y === 6 || x === 6 && y === dimension - 7 || x === dimension - 7 && y === 6)) {\n matrix.setRegion(x - 2, y - 2, 5, 5, true);\n }\n }\n }\n matrix.setRegion(6, 9, 1, dimension - 17, true); // Vertical timing pattern\n matrix.setRegion(9, 6, dimension - 17, 1, true); // Horizontal timing pattern\n if (version.versionNumber > 6) {\n matrix.setRegion(dimension - 11, 0, 3, 6, true); // Version info, top right\n matrix.setRegion(0, dimension - 11, 6, 3, true); // Version info, bottom left\n }\n return matrix;\n}\nfunction readCodewords(matrix, version, formatInfo) {\n var dataMask = DATA_MASKS[formatInfo.dataMask];\n var dimension = matrix.height;\n var functionPatternMask = buildFunctionPatternMask(version);\n var codewords = [];\n var currentByte = 0;\n var bitsRead = 0;\n // Read columns in pairs, from right to left\n var readingUp = true;\n for (var columnIndex = dimension - 1; columnIndex > 0; columnIndex -= 2) {\n if (columnIndex === 6) { // Skip whole column with vertical alignment pattern;\n columnIndex--;\n }\n for (var i = 0; i < dimension; i++) {\n var y = readingUp ? dimension - 1 - i : i;\n for (var columnOffset = 0; columnOffset < 2; columnOffset++) {\n var x = columnIndex - columnOffset;\n if (!functionPatternMask.get(x, y)) {\n bitsRead++;\n var bit = matrix.get(x, y);\n if (dataMask({ y: y, x: x })) {\n bit = !bit;\n }\n currentByte = pushBit(bit, currentByte);\n if (bitsRead === 8) { // Whole bytes\n codewords.push(currentByte);\n bitsRead = 0;\n currentByte = 0;\n }\n }\n }\n }\n readingUp = !readingUp;\n }\n return codewords;\n}\nfunction readVersion(matrix) {\n var dimension = matrix.height;\n var provisionalVersion = Math.floor((dimension - 17) / 4);\n if (provisionalVersion <= 6) { // 6 and under dont have version info in the QR code\n return version_1.VERSIONS[provisionalVersion - 1];\n }\n var topRightVersionBits = 0;\n for (var y = 5; y >= 0; y--) {\n for (var x = dimension - 9; x >= dimension - 11; x--) {\n topRightVersionBits = pushBit(matrix.get(x, y), topRightVersionBits);\n }\n }\n var bottomLeftVersionBits = 0;\n for (var x = 5; x >= 0; x--) {\n for (var y = dimension - 9; y >= dimension - 11; y--) {\n bottomLeftVersionBits = pushBit(matrix.get(x, y), bottomLeftVersionBits);\n }\n }\n var bestDifference = Infinity;\n var bestVersion;\n for (var _i = 0, VERSIONS_1 = version_1.VERSIONS; _i < VERSIONS_1.length; _i++) {\n var version = VERSIONS_1[_i];\n if (version.infoBits === topRightVersionBits || version.infoBits === bottomLeftVersionBits) {\n return version;\n }\n var difference = numBitsDiffering(topRightVersionBits, version.infoBits);\n if (difference < bestDifference) {\n bestVersion = version;\n bestDifference = difference;\n }\n difference = numBitsDiffering(bottomLeftVersionBits, version.infoBits);\n if (difference < bestDifference) {\n bestVersion = version;\n bestDifference = difference;\n }\n }\n // We can tolerate up to 3 bits of error since no two version info codewords will\n // differ in less than 8 bits.\n if (bestDifference <= 3) {\n return bestVersion;\n }\n}\nfunction readFormatInformation(matrix) {\n var topLeftFormatInfoBits = 0;\n for (var x = 0; x <= 8; x++) {\n if (x !== 6) { // Skip timing pattern bit\n topLeftFormatInfoBits = pushBit(matrix.get(x, 8), topLeftFormatInfoBits);\n }\n }\n for (var y = 7; y >= 0; y--) {\n if (y !== 6) { // Skip timing pattern bit\n topLeftFormatInfoBits = pushBit(matrix.get(8, y), topLeftFormatInfoBits);\n }\n }\n var dimension = matrix.height;\n var topRightBottomRightFormatInfoBits = 0;\n for (var y = dimension - 1; y >= dimension - 7; y--) { // bottom left\n topRightBottomRightFormatInfoBits = pushBit(matrix.get(8, y), topRightBottomRightFormatInfoBits);\n }\n for (var x = dimension - 8; x < dimension; x++) { // top right\n topRightBottomRightFormatInfoBits = pushBit(matrix.get(x, 8), topRightBottomRightFormatInfoBits);\n }\n var bestDifference = Infinity;\n var bestFormatInfo = null;\n for (var _i = 0, FORMAT_INFO_TABLE_1 = FORMAT_INFO_TABLE; _i < FORMAT_INFO_TABLE_1.length; _i++) {\n var _a = FORMAT_INFO_TABLE_1[_i], bits = _a.bits, formatInfo = _a.formatInfo;\n if (bits === topLeftFormatInfoBits || bits === topRightBottomRightFormatInfoBits) {\n return formatInfo;\n }\n var difference = numBitsDiffering(topLeftFormatInfoBits, bits);\n if (difference < bestDifference) {\n bestFormatInfo = formatInfo;\n bestDifference = difference;\n }\n if (topLeftFormatInfoBits !== topRightBottomRightFormatInfoBits) { // also try the other option\n difference = numBitsDiffering(topRightBottomRightFormatInfoBits, bits);\n if (difference < bestDifference) {\n bestFormatInfo = formatInfo;\n bestDifference = difference;\n }\n }\n }\n // Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits differing means we found a match\n if (bestDifference <= 3) {\n return bestFormatInfo;\n }\n return null;\n}\nfunction getDataBlocks(codewords, version, ecLevel) {\n var ecInfo = version.errorCorrectionLevels[ecLevel];\n var dataBlocks = [];\n var totalCodewords = 0;\n ecInfo.ecBlocks.forEach(function (block) {\n for (var i = 0; i < block.numBlocks; i++) {\n dataBlocks.push({ numDataCodewords: block.dataCodewordsPerBlock, codewords: [] });\n totalCodewords += block.dataCodewordsPerBlock + ecInfo.ecCodewordsPerBlock;\n }\n });\n // In some cases the QR code will be malformed enough that we pull off more or less than we should.\n // If we pull off less there's nothing we can do.\n // If we pull off more we can safely truncate\n if (codewords.length < totalCodewords) {\n return null;\n }\n codewords = codewords.slice(0, totalCodewords);\n var shortBlockSize = ecInfo.ecBlocks[0].dataCodewordsPerBlock;\n // Pull codewords to fill the blocks up to the minimum size\n for (var i = 0; i < shortBlockSize; i++) {\n for (var _i = 0, dataBlocks_1 = dataBlocks; _i < dataBlocks_1.length; _i++) {\n var dataBlock = dataBlocks_1[_i];\n dataBlock.codewords.push(codewords.shift());\n }\n }\n // If there are any large blocks, pull codewords to fill the last element of those\n if (ecInfo.ecBlocks.length > 1) {\n var smallBlockCount = ecInfo.ecBlocks[0].numBlocks;\n var largeBlockCount = ecInfo.ecBlocks[1].numBlocks;\n for (var i = 0; i < largeBlockCount; i++) {\n dataBlocks[smallBlockCount + i].codewords.push(codewords.shift());\n }\n }\n // Add the rest of the codewords to the blocks. These are the error correction codewords.\n while (codewords.length > 0) {\n for (var _a = 0, dataBlocks_2 = dataBlocks; _a < dataBlocks_2.length; _a++) {\n var dataBlock = dataBlocks_2[_a];\n dataBlock.codewords.push(codewords.shift());\n }\n }\n return dataBlocks;\n}\nfunction decodeMatrix(matrix) {\n var version = readVersion(matrix);\n if (!version) {\n return null;\n }\n var formatInfo = readFormatInformation(matrix);\n if (!formatInfo) {\n return null;\n }\n var codewords = readCodewords(matrix, version, formatInfo);\n var dataBlocks = getDataBlocks(codewords, version, formatInfo.errorCorrectionLevel);\n if (!dataBlocks) {\n return null;\n }\n // Count total number of data bytes\n var totalBytes = dataBlocks.reduce(function (a, b) { return a + b.numDataCodewords; }, 0);\n var resultBytes = new Uint8ClampedArray(totalBytes);\n var resultIndex = 0;\n for (var _i = 0, dataBlocks_3 = dataBlocks; _i < dataBlocks_3.length; _i++) {\n var dataBlock = dataBlocks_3[_i];\n var correctedBytes = reedsolomon_1.decode(dataBlock.codewords, dataBlock.codewords.length - dataBlock.numDataCodewords);\n if (!correctedBytes) {\n return null;\n }\n for (var i = 0; i < dataBlock.numDataCodewords; i++) {\n resultBytes[resultIndex++] = correctedBytes[i];\n }\n }\n try {\n return decodeData_1.decode(resultBytes, version.versionNumber);\n }\n catch (_a) {\n return null;\n }\n}\nfunction decode(matrix) {\n if (matrix == null) {\n return null;\n }\n var result = decodeMatrix(matrix);\n if (result) {\n return result;\n }\n // Decoding didn't work, try mirroring the QR across the topLeft -> bottomRight line.\n for (var x = 0; x < matrix.width; x++) {\n for (var y = x + 1; y < matrix.height; y++) {\n if (matrix.get(x, y) !== matrix.get(y, x)) {\n matrix.set(x, y, !matrix.get(x, y));\n matrix.set(y, x, !matrix.get(y, x));\n }\n }\n }\n return decodeMatrix(matrix);\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// tslint:disable:no-bitwise\nvar BitStream_1 = __webpack_require__(7);\nvar shiftJISTable_1 = __webpack_require__(8);\nvar Mode;\n(function (Mode) {\n Mode[\"Numeric\"] = \"numeric\";\n Mode[\"Alphanumeric\"] = \"alphanumeric\";\n Mode[\"Byte\"] = \"byte\";\n Mode[\"Kanji\"] = \"kanji\";\n Mode[\"ECI\"] = \"eci\";\n})(Mode = exports.Mode || (exports.Mode = {}));\nvar ModeByte;\n(function (ModeByte) {\n ModeByte[ModeByte[\"Terminator\"] = 0] = \"Terminator\";\n ModeByte[ModeByte[\"Numeric\"] = 1] = \"Numeric\";\n ModeByte[ModeByte[\"Alphanumeric\"] = 2] = \"Alphanumeric\";\n ModeByte[ModeByte[\"Byte\"] = 4] = \"Byte\";\n ModeByte[ModeByte[\"Kanji\"] = 8] = \"Kanji\";\n ModeByte[ModeByte[\"ECI\"] = 7] = \"ECI\";\n // StructuredAppend = 0x3,\n // FNC1FirstPosition = 0x5,\n // FNC1SecondPosition = 0x9,\n})(ModeByte || (ModeByte = {}));\nfunction decodeNumeric(stream, size) {\n var bytes = [];\n var text = \"\";\n var characterCountSize = [10, 12, 14][size];\n var length = stream.readBits(characterCountSize);\n // Read digits in groups of 3\n while (length >= 3) {\n var num = stream.readBits(10);\n if (num >= 1000) {\n throw new Error(\"Invalid numeric value above 999\");\n }\n var a = Math.floor(num / 100);\n var b = Math.floor(num / 10) % 10;\n var c = num % 10;\n bytes.push(48 + a, 48 + b, 48 + c);\n text += a.toString() + b.toString() + c.toString();\n length -= 3;\n }\n // If the number of digits aren't a multiple of 3, the remaining digits are special cased.\n if (length === 2) {\n var num = stream.readBits(7);\n if (num >= 100) {\n throw new Error(\"Invalid numeric value above 99\");\n }\n var a = Math.floor(num / 10);\n var b = num % 10;\n bytes.push(48 + a, 48 + b);\n text += a.toString() + b.toString();\n }\n else if (length === 1) {\n var num = stream.readBits(4);\n if (num >= 10) {\n throw new Error(\"Invalid numeric value above 9\");\n }\n bytes.push(48 + num);\n text += num.toString();\n }\n return { bytes: bytes, text: text };\n}\nvar AlphanumericCharacterCodes = [\n \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\",\n \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \" \", \"$\", \"%\", \"*\", \"+\", \"-\", \".\", \"/\", \":\",\n];\nfunction decodeAlphanumeric(stream, size) {\n var bytes = [];\n var text = \"\";\n var characterCountSize = [9, 11, 13][size];\n var length = stream.readBits(characterCountSize);\n while (length >= 2) {\n var v = stream.readBits(11);\n var a = Math.floor(v / 45);\n var b = v % 45;\n bytes.push(AlphanumericCharacterCodes[a].charCodeAt(0), AlphanumericCharacterCodes[b].charCodeAt(0));\n text += AlphanumericCharacterCodes[a] + AlphanumericCharacterCodes[b];\n length -= 2;\n }\n if (length === 1) {\n var a = stream.readBits(6);\n bytes.push(AlphanumericCharacterCodes[a].charCodeAt(0));\n text += AlphanumericCharacterCodes[a];\n }\n return { bytes: bytes, text: text };\n}\nfunction decodeByte(stream, size) {\n var bytes = [];\n var text = \"\";\n var characterCountSize = [8, 16, 16][size];\n var length = stream.readBits(characterCountSize);\n for (var i = 0; i < length; i++) {\n var b = stream.readBits(8);\n bytes.push(b);\n }\n try {\n text += decodeURIComponent(bytes.map(function (b) { return \"%\" + (\"0\" + b.toString(16)).substr(-2); }).join(\"\"));\n }\n catch (_a) {\n // failed to decode\n }\n return { bytes: bytes, text: text };\n}\nfunction decodeKanji(stream, size) {\n var bytes = [];\n var text = \"\";\n var characterCountSize = [8, 10, 12][size];\n var length = stream.readBits(characterCountSize);\n for (var i = 0; i < length; i++) {\n var k = stream.readBits(13);\n var c = (Math.floor(k / 0xC0) << 8) | (k % 0xC0);\n if (c < 0x1F00) {\n c += 0x8140;\n }\n else {\n c += 0xC140;\n }\n bytes.push(c >> 8, c & 0xFF);\n text += String.fromCharCode(shiftJISTable_1.shiftJISTable[c]);\n }\n return { bytes: bytes, text: text };\n}\nfunction decode(data, version) {\n var _a, _b, _c, _d;\n var stream = new BitStream_1.BitStream(data);\n // There are 3 'sizes' based on the version. 1-9 is small (0), 10-26 is medium (1) and 27-40 is large (2).\n var size = version <= 9 ? 0 : version <= 26 ? 1 : 2;\n var result = {\n text: \"\",\n bytes: [],\n chunks: [],\n version: version,\n };\n while (stream.available() >= 4) {\n var mode = stream.readBits(4);\n if (mode === ModeByte.Terminator) {\n return result;\n }\n else if (mode === ModeByte.ECI) {\n if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(7),\n });\n }\n else if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(14),\n });\n }\n else if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(21),\n });\n }\n else {\n // ECI data seems corrupted\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: -1,\n });\n }\n }\n else if (mode === ModeByte.Numeric) {\n var numericResult = decodeNumeric(stream, size);\n result.text += numericResult.text;\n (_a = result.bytes).push.apply(_a, numericResult.bytes);\n result.chunks.push({\n type: Mode.Numeric,\n text: numericResult.text,\n });\n }\n else if (mode === ModeByte.Alphanumeric) {\n var alphanumericResult = decodeAlphanumeric(stream, size);\n result.text += alphanumericResult.text;\n (_b = result.bytes).push.apply(_b, alphanumericResult.bytes);\n result.chunks.push({\n type: Mode.Alphanumeric,\n text: alphanumericResult.text,\n });\n }\n else if (mode === ModeByte.Byte) {\n var byteResult = decodeByte(stream, size);\n result.text += byteResult.text;\n (_c = result.bytes).push.apply(_c, byteResult.bytes);\n result.chunks.push({\n type: Mode.Byte,\n bytes: byteResult.bytes,\n text: byteResult.text,\n });\n }\n else if (mode === ModeByte.Kanji) {\n var kanjiResult = decodeKanji(stream, size);\n result.text += kanjiResult.text;\n (_d = result.bytes).push.apply(_d, kanjiResult.bytes);\n result.chunks.push({\n type: Mode.Kanji,\n bytes: kanjiResult.bytes,\n text: kanjiResult.text,\n });\n }\n }\n // If there is no data left, or the remaining bits are all 0, then that counts as a termination marker\n if (stream.available() === 0 || stream.readBits(stream.available()) === 0) {\n return result;\n }\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// tslint:disable:no-bitwise\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitStream = /** @class */ (function () {\n function BitStream(bytes) {\n this.byteOffset = 0;\n this.bitOffset = 0;\n this.bytes = bytes;\n }\n BitStream.prototype.readBits = function (numBits) {\n if (numBits < 1 || numBits > 32 || numBits > this.available()) {\n throw new Error(\"Cannot read \" + numBits.toString() + \" bits\");\n }\n var result = 0;\n // First, read remainder from current byte\n if (this.bitOffset > 0) {\n var bitsLeft = 8 - this.bitOffset;\n var toRead = numBits < bitsLeft ? numBits : bitsLeft;\n var bitsToNotRead = bitsLeft - toRead;\n var mask = (0xFF >> (8 - toRead)) << bitsToNotRead;\n result = (this.bytes[this.byteOffset] & mask) >> bitsToNotRead;\n numBits -= toRead;\n this.bitOffset += toRead;\n if (this.bitOffset === 8) {\n this.bitOffset = 0;\n this.byteOffset++;\n }\n }\n // Next read whole bytes\n if (numBits > 0) {\n while (numBits >= 8) {\n result = (result << 8) | (this.bytes[this.byteOffset] & 0xFF);\n this.byteOffset++;\n numBits -= 8;\n }\n // Finally read a partial byte\n if (numBits > 0) {\n var bitsToNotRead = 8 - numBits;\n var mask = (0xFF >> bitsToNotRead) << bitsToNotRead;\n result = (result << numBits) | ((this.bytes[this.byteOffset] & mask) >> bitsToNotRead);\n this.bitOffset += numBits;\n }\n }\n return result;\n };\n BitStream.prototype.available = function () {\n return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset;\n };\n return BitStream;\n}());\nexports.BitStream = BitStream;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shiftJISTable = {\n 0x20: 0x0020,\n 0x21: 0x0021,\n 0x22: 0x0022,\n 0x23: 0x0023,\n 0x24: 0x0024,\n 0x25: 0x0025,\n 0x26: 0x0026,\n 0x27: 0x0027,\n 0x28: 0x0028,\n 0x29: 0x0029,\n 0x2A: 0x002A,\n 0x2B: 0x002B,\n 0x2C: 0x002C,\n 0x2D: 0x002D,\n 0x2E: 0x002E,\n 0x2F: 0x002F,\n 0x30: 0x0030,\n 0x31: 0x0031,\n 0x32: 0x0032,\n 0x33: 0x0033,\n 0x34: 0x0034,\n 0x35: 0x0035,\n 0x36: 0x0036,\n 0x37: 0x0037,\n 0x38: 0x0038,\n 0x39: 0x0039,\n 0x3A: 0x003A,\n 0x3B: 0x003B,\n 0x3C: 0x003C,\n 0x3D: 0x003D,\n 0x3E: 0x003E,\n 0x3F: 0x003F,\n 0x40: 0x0040,\n 0x41: 0x0041,\n 0x42: 0x0042,\n 0x43: 0x0043,\n 0x44: 0x0044,\n 0x45: 0x0045,\n 0x46: 0x0046,\n 0x47: 0x0047,\n 0x48: 0x0048,\n 0x49: 0x0049,\n 0x4A: 0x004A,\n 0x4B: 0x004B,\n 0x4C: 0x004C,\n 0x4D: 0x004D,\n 0x4E: 0x004E,\n 0x4F: 0x004F,\n 0x50: 0x0050,\n 0x51: 0x0051,\n 0x52: 0x0052,\n 0x53: 0x0053,\n 0x54: 0x0054,\n 0x55: 0x0055,\n 0x56: 0x0056,\n 0x57: 0x0057,\n 0x58: 0x0058,\n 0x59: 0x0059,\n 0x5A: 0x005A,\n 0x5B: 0x005B,\n 0x5C: 0x00A5,\n 0x5D: 0x005D,\n 0x5E: 0x005E,\n 0x5F: 0x005F,\n 0x60: 0x0060,\n 0x61: 0x0061,\n 0x62: 0x0062,\n 0x63: 0x0063,\n 0x64: 0x0064,\n 0x65: 0x0065,\n 0x66: 0x0066,\n 0x67: 0x0067,\n 0x68: 0x0068,\n 0x69: 0x0069,\n 0x6A: 0x006A,\n 0x6B: 0x006B,\n 0x6C: 0x006C,\n 0x6D: 0x006D,\n 0x6E: 0x006E,\n 0x6F: 0x006F,\n 0x70: 0x0070,\n 0x71: 0x0071,\n 0x72: 0x0072,\n 0x73: 0x0073,\n 0x74: 0x0074,\n 0x75: 0x0075,\n 0x76: 0x0076,\n 0x77: 0x0077,\n 0x78: 0x0078,\n 0x79: 0x0079,\n 0x7A: 0x007A,\n 0x7B: 0x007B,\n 0x7C: 0x007C,\n 0x7D: 0x007D,\n 0x7E: 0x203E,\n 0x8140: 0x3000,\n 0x8141: 0x3001,\n 0x8142: 0x3002,\n 0x8143: 0xFF0C,\n 0x8144: 0xFF0E,\n 0x8145: 0x30FB,\n 0x8146: 0xFF1A,\n 0x8147: 0xFF1B,\n 0x8148: 0xFF1F,\n 0x8149: 0xFF01,\n 0x814A: 0x309B,\n 0x814B: 0x309C,\n 0x814C: 0x00B4,\n 0x814D: 0xFF40,\n 0x814E: 0x00A8,\n 0x814F: 0xFF3E,\n 0x8150: 0xFFE3,\n 0x8151: 0xFF3F,\n 0x8152: 0x30FD,\n 0x8153: 0x30FE,\n 0x8154: 0x309D,\n 0x8155: 0x309E,\n 0x8156: 0x3003,\n 0x8157: 0x4EDD,\n 0x8158: 0x3005,\n 0x8159: 0x3006,\n 0x815A: 0x3007,\n 0x815B: 0x30FC,\n 0x815C: 0x2015,\n 0x815D: 0x2010,\n 0x815E: 0xFF0F,\n 0x815F: 0x005C,\n 0x8160: 0x301C,\n 0x8161: 0x2016,\n 0x8162: 0xFF5C,\n 0x8163: 0x2026,\n 0x8164: 0x2025,\n 0x8165: 0x2018,\n 0x8166: 0x2019,\n 0x8167: 0x201C,\n 0x8168: 0x201D,\n 0x8169: 0xFF08,\n 0x816A: 0xFF09,\n 0x816B: 0x3014,\n 0x816C: 0x3015,\n 0x816D: 0xFF3B,\n 0x816E: 0xFF3D,\n 0x816F: 0xFF5B,\n 0x8170: 0xFF5D,\n 0x8171: 0x3008,\n 0x8172: 0x3009,\n 0x8173: 0x300A,\n 0x8174: 0x300B,\n 0x8175: 0x300C,\n 0x8176: 0x300D,\n 0x8177: 0x300E,\n 0x8178: 0x300F,\n 0x8179: 0x3010,\n 0x817A: 0x3011,\n 0x817B: 0xFF0B,\n 0x817C: 0x2212,\n 0x817D: 0x00B1,\n 0x817E: 0x00D7,\n 0x8180: 0x00F7,\n 0x8181: 0xFF1D,\n 0x8182: 0x2260,\n 0x8183: 0xFF1C,\n 0x8184: 0xFF1E,\n 0x8185: 0x2266,\n 0x8186: 0x2267,\n 0x8187: 0x221E,\n 0x8188: 0x2234,\n 0x8189: 0x2642,\n 0x818A: 0x2640,\n 0x818B: 0x00B0,\n 0x818C: 0x2032,\n 0x818D: 0x2033,\n 0x818E: 0x2103,\n 0x818F: 0xFFE5,\n 0x8190: 0xFF04,\n 0x8191: 0x00A2,\n 0x8192: 0x00A3,\n 0x8193: 0xFF05,\n 0x8194: 0xFF03,\n 0x8195: 0xFF06,\n 0x8196: 0xFF0A,\n 0x8197: 0xFF20,\n 0x8198: 0x00A7,\n 0x8199: 0x2606,\n 0x819A: 0x2605,\n 0x819B: 0x25CB,\n 0x819C: 0x25CF,\n 0x819D: 0x25CE,\n 0x819E: 0x25C7,\n 0x819F: 0x25C6,\n 0x81A0: 0x25A1,\n 0x81A1: 0x25A0,\n 0x81A2: 0x25B3,\n 0x81A3: 0x25B2,\n 0x81A4: 0x25BD,\n 0x81A5: 0x25BC,\n 0x81A6: 0x203B,\n 0x81A7: 0x3012,\n 0x81A8: 0x2192,\n 0x81A9: 0x2190,\n 0x81AA: 0x2191,\n 0x81AB: 0x2193,\n 0x81AC: 0x3013,\n 0x81B8: 0x2208,\n 0x81B9: 0x220B,\n 0x81BA: 0x2286,\n 0x81BB: 0x2287,\n 0x81BC: 0x2282,\n 0x81BD: 0x2283,\n 0x81BE: 0x222A,\n 0x81BF: 0x2229,\n 0x81C8: 0x2227,\n 0x81C9: 0x2228,\n 0x81CA: 0x00AC,\n 0x81CB: 0x21D2,\n 0x81CC: 0x21D4,\n 0x81CD: 0x2200,\n 0x81CE: 0x2203,\n 0x81DA: 0x2220,\n 0x81DB: 0x22A5,\n 0x81DC: 0x2312,\n 0x81DD: 0x2202,\n 0x81DE: 0x2207,\n 0x81DF: 0x2261,\n 0x81E0: 0x2252,\n 0x81E1: 0x226A,\n 0x81E2: 0x226B,\n 0x81E3: 0x221A,\n 0x81E4: 0x223D,\n 0x81E5: 0x221D,\n 0x81E6: 0x2235,\n 0x81E7: 0x222B,\n 0x81E8: 0x222C,\n 0x81F0: 0x212B,\n 0x81F1: 0x2030,\n 0x81F2: 0x266F,\n 0x81F3: 0x266D,\n 0x81F4: 0x266A,\n 0x81F5: 0x2020,\n 0x81F6: 0x2021,\n 0x81F7: 0x00B6,\n 0x81FC: 0x25EF,\n 0x824F: 0xFF10,\n 0x8250: 0xFF11,\n 0x8251: 0xFF12,\n 0x8252: 0xFF13,\n 0x8253: 0xFF14,\n 0x8254: 0xFF15,\n 0x8255: 0xFF16,\n 0x8256: 0xFF17,\n 0x8257: 0xFF18,\n 0x8258: 0xFF19,\n 0x8260: 0xFF21,\n 0x8261: 0xFF22,\n 0x8262: 0xFF23,\n 0x8263: 0xFF24,\n 0x8264: 0xFF25,\n 0x8265: 0xFF26,\n 0x8266: 0xFF27,\n 0x8267: 0xFF28,\n 0x8268: 0xFF29,\n 0x8269: 0xFF2A,\n 0x826A: 0xFF2B,\n 0x826B: 0xFF2C,\n 0x826C: 0xFF2D,\n 0x826D: 0xFF2E,\n 0x826E: 0xFF2F,\n 0x826F: 0xFF30,\n 0x8270: 0xFF31,\n 0x8271: 0xFF32,\n 0x8272: 0xFF33,\n 0x8273: 0xFF34,\n 0x8274: 0xFF35,\n 0x8275: 0xFF36,\n 0x8276: 0xFF37,\n 0x8277: 0xFF38,\n 0x8278: 0xFF39,\n 0x8279: 0xFF3A,\n 0x8281: 0xFF41,\n 0x8282: 0xFF42,\n 0x8283: 0xFF43,\n 0x8284: 0xFF44,\n 0x8285: 0xFF45,\n 0x8286: 0xFF46,\n 0x8287: 0xFF47,\n 0x8288: 0xFF48,\n 0x8289: 0xFF49,\n 0x828A: 0xFF4A,\n 0x828B: 0xFF4B,\n 0x828C: 0xFF4C,\n 0x828D: 0xFF4D,\n 0x828E: 0xFF4E,\n 0x828F: 0xFF4F,\n 0x8290: 0xFF50,\n 0x8291: 0xFF51,\n 0x8292: 0xFF52,\n 0x8293: 0xFF53,\n 0x8294: 0xFF54,\n 0x8295: 0xFF55,\n 0x8296: 0xFF56,\n 0x8297: 0xFF57,\n 0x8298: 0xFF58,\n 0x8299: 0xFF59,\n 0x829A: 0xFF5A,\n 0x829F: 0x3041,\n 0x82A0: 0x3042,\n 0x82A1: 0x3043,\n 0x82A2: 0x3044,\n 0x82A3: 0x3045,\n 0x82A4: 0x3046,\n 0x82A5: 0x3047,\n 0x82A6: 0x3048,\n 0x82A7: 0x3049,\n 0x82A8: 0x304A,\n 0x82A9: 0x304B,\n 0x82AA: 0x304C,\n 0x82AB: 0x304D,\n 0x82AC: 0x304E,\n 0x82AD: 0x304F,\n 0x82AE: 0x3050,\n 0x82AF: 0x3051,\n 0x82B0: 0x3052,\n 0x82B1: 0x3053,\n 0x82B2: 0x3054,\n 0x82B3: 0x3055,\n 0x82B4: 0x3056,\n 0x82B5: 0x3057,\n 0x82B6: 0x3058,\n 0x82B7: 0x3059,\n 0x82B8: 0x305A,\n 0x82B9: 0x305B,\n 0x82BA: 0x305C,\n 0x82BB: 0x305D,\n 0x82BC: 0x305E,\n 0x82BD: 0x305F,\n 0x82BE: 0x3060,\n 0x82BF: 0x3061,\n 0x82C0: 0x3062,\n 0x82C1: 0x3063,\n 0x82C2: 0x3064,\n 0x82C3: 0x3065,\n 0x82C4: 0x3066,\n 0x82C5: 0x3067,\n 0x82C6: 0x3068,\n 0x82C7: 0x3069,\n 0x82C8: 0x306A,\n 0x82C9: 0x306B,\n 0x82CA: 0x306C,\n 0x82CB: 0x306D,\n 0x82CC: 0x306E,\n 0x82CD: 0x306F,\n 0x82CE: 0x3070,\n 0x82CF: 0x3071,\n 0x82D0: 0x3072,\n 0x82D1: 0x3073,\n 0x82D2: 0x3074,\n 0x82D3: 0x3075,\n 0x82D4: 0x3076,\n 0x82D5: 0x3077,\n 0x82D6: 0x3078,\n 0x82D7: 0x3079,\n 0x82D8: 0x307A,\n 0x82D9: 0x307B,\n 0x82DA: 0x307C,\n 0x82DB: 0x307D,\n 0x82DC: 0x307E,\n 0x82DD: 0x307F,\n 0x82DE: 0x3080,\n 0x82DF: 0x3081,\n 0x82E0: 0x3082,\n 0x82E1: 0x3083,\n 0x82E2: 0x3084,\n 0x82E3: 0x3085,\n 0x82E4: 0x3086,\n 0x82E5: 0x3087,\n 0x82E6: 0x3088,\n 0x82E7: 0x3089,\n 0x82E8: 0x308A,\n 0x82E9: 0x308B,\n 0x82EA: 0x308C,\n 0x82EB: 0x308D,\n 0x82EC: 0x308E,\n 0x82ED: 0x308F,\n 0x82EE: 0x3090,\n 0x82EF: 0x3091,\n 0x82F0: 0x3092,\n 0x82F1: 0x3093,\n 0x8340: 0x30A1,\n 0x8341: 0x30A2,\n 0x8342: 0x30A3,\n 0x8343: 0x30A4,\n 0x8344: 0x30A5,\n 0x8345: 0x30A6,\n 0x8346: 0x30A7,\n 0x8347: 0x30A8,\n 0x8348: 0x30A9,\n 0x8349: 0x30AA,\n 0x834A: 0x30AB,\n 0x834B: 0x30AC,\n 0x834C: 0x30AD,\n 0x834D: 0x30AE,\n 0x834E: 0x30AF,\n 0x834F: 0x30B0,\n 0x8350: 0x30B1,\n 0x8351: 0x30B2,\n 0x8352: 0x30B3,\n 0x8353: 0x30B4,\n 0x8354: 0x30B5,\n 0x8355: 0x30B6,\n 0x8356: 0x30B7,\n 0x8357: 0x30B8,\n 0x8358: 0x30B9,\n 0x8359: 0x30BA,\n 0x835A: 0x30BB,\n 0x835B: 0x30BC,\n 0x835C: 0x30BD,\n 0x835D: 0x30BE,\n 0x835E: 0x30BF,\n 0x835F: 0x30C0,\n 0x8360: 0x30C1,\n 0x8361: 0x30C2,\n 0x8362: 0x30C3,\n 0x8363: 0x30C4,\n 0x8364: 0x30C5,\n 0x8365: 0x30C6,\n 0x8366: 0x30C7,\n 0x8367: 0x30C8,\n 0x8368: 0x30C9,\n 0x8369: 0x30CA,\n 0x836A: 0x30CB,\n 0x836B: 0x30CC,\n 0x836C: 0x30CD,\n 0x836D: 0x30CE,\n 0x836E: 0x30CF,\n 0x836F: 0x30D0,\n 0x8370: 0x30D1,\n 0x8371: 0x30D2,\n 0x8372: 0x30D3,\n 0x8373: 0x30D4,\n 0x8374: 0x30D5,\n 0x8375: 0x30D6,\n 0x8376: 0x30D7,\n 0x8377: 0x30D8,\n 0x8378: 0x30D9,\n 0x8379: 0x30DA,\n 0x837A: 0x30DB,\n 0x837B: 0x30DC,\n 0x837C: 0x30DD,\n 0x837D: 0x30DE,\n 0x837E: 0x30DF,\n 0x8380: 0x30E0,\n 0x8381: 0x30E1,\n 0x8382: 0x30E2,\n 0x8383: 0x30E3,\n 0x8384: 0x30E4,\n 0x8385: 0x30E5,\n 0x8386: 0x30E6,\n 0x8387: 0x30E7,\n 0x8388: 0x30E8,\n 0x8389: 0x30E9,\n 0x838A: 0x30EA,\n 0x838B: 0x30EB,\n 0x838C: 0x30EC,\n 0x838D: 0x30ED,\n 0x838E: 0x30EE,\n 0x838F: 0x30EF,\n 0x8390: 0x30F0,\n 0x8391: 0x30F1,\n 0x8392: 0x30F2,\n 0x8393: 0x30F3,\n 0x8394: 0x30F4,\n 0x8395: 0x30F5,\n 0x8396: 0x30F6,\n 0x839F: 0x0391,\n 0x83A0: 0x0392,\n 0x83A1: 0x0393,\n 0x83A2: 0x0394,\n 0x83A3: 0x0395,\n 0x83A4: 0x0396,\n 0x83A5: 0x0397,\n 0x83A6: 0x0398,\n 0x83A7: 0x0399,\n 0x83A8: 0x039A,\n 0x83A9: 0x039B,\n 0x83AA: 0x039C,\n 0x83AB: 0x039D,\n 0x83AC: 0x039E,\n 0x83AD: 0x039F,\n 0x83AE: 0x03A0,\n 0x83AF: 0x03A1,\n 0x83B0: 0x03A3,\n 0x83B1: 0x03A4,\n 0x83B2: 0x03A5,\n 0x83B3: 0x03A6,\n 0x83B4: 0x03A7,\n 0x83B5: 0x03A8,\n 0x83B6: 0x03A9,\n 0x83BF: 0x03B1,\n 0x83C0: 0x03B2,\n 0x83C1: 0x03B3,\n 0x83C2: 0x03B4,\n 0x83C3: 0x03B5,\n 0x83C4: 0x03B6,\n 0x83C5: 0x03B7,\n 0x83C6: 0x03B8,\n 0x83C7: 0x03B9,\n 0x83C8: 0x03BA,\n 0x83C9: 0x03BB,\n 0x83CA: 0x03BC,\n 0x83CB: 0x03BD,\n 0x83CC: 0x03BE,\n 0x83CD: 0x03BF,\n 0x83CE: 0x03C0,\n 0x83CF: 0x03C1,\n 0x83D0: 0x03C3,\n 0x83D1: 0x03C4,\n 0x83D2: 0x03C5,\n 0x83D3: 0x03C6,\n 0x83D4: 0x03C7,\n 0x83D5: 0x03C8,\n 0x83D6: 0x03C9,\n 0x8440: 0x0410,\n 0x8441: 0x0411,\n 0x8442: 0x0412,\n 0x8443: 0x0413,\n 0x8444: 0x0414,\n 0x8445: 0x0415,\n 0x8446: 0x0401,\n 0x8447: 0x0416,\n 0x8448: 0x0417,\n 0x8449: 0x0418,\n 0x844A: 0x0419,\n 0x844B: 0x041A,\n 0x844C: 0x041B,\n 0x844D: 0x041C,\n 0x844E: 0x041D,\n 0x844F: 0x041E,\n 0x8450: 0x041F,\n 0x8451: 0x0420,\n 0x8452: 0x0421,\n 0x8453: 0x0422,\n 0x8454: 0x0423,\n 0x8455: 0x0424,\n 0x8456: 0x0425,\n 0x8457: 0x0426,\n 0x8458: 0x0427,\n 0x8459: 0x0428,\n 0x845A: 0x0429,\n 0x845B: 0x042A,\n 0x845C: 0x042B,\n 0x845D: 0x042C,\n 0x845E: 0x042D,\n 0x845F: 0x042E,\n 0x8460: 0x042F,\n 0x8470: 0x0430,\n 0x8471: 0x0431,\n 0x8472: 0x0432,\n 0x8473: 0x0433,\n 0x8474: 0x0434,\n 0x8475: 0x0435,\n 0x8476: 0x0451,\n 0x8477: 0x0436,\n 0x8478: 0x0437,\n 0x8479: 0x0438,\n 0x847A: 0x0439,\n 0x847B: 0x043A,\n 0x847C: 0x043B,\n 0x847D: 0x043C,\n 0x847E: 0x043D,\n 0x8480: 0x043E,\n 0x8481: 0x043F,\n 0x8482: 0x0440,\n 0x8483: 0x0441,\n 0x8484: 0x0442,\n 0x8485: 0x0443,\n 0x8486: 0x0444,\n 0x8487: 0x0445,\n 0x8488: 0x0446,\n 0x8489: 0x0447,\n 0x848A: 0x0448,\n 0x848B: 0x0449,\n 0x848C: 0x044A,\n 0x848D: 0x044B,\n 0x848E: 0x044C,\n 0x848F: 0x044D,\n 0x8490: 0x044E,\n 0x8491: 0x044F,\n 0x849F: 0x2500,\n 0x84A0: 0x2502,\n 0x84A1: 0x250C,\n 0x84A2: 0x2510,\n 0x84A3: 0x2518,\n 0x84A4: 0x2514,\n 0x84A5: 0x251C,\n 0x84A6: 0x252C,\n 0x84A7: 0x2524,\n 0x84A8: 0x2534,\n 0x84A9: 0x253C,\n 0x84AA: 0x2501,\n 0x84AB: 0x2503,\n 0x84AC: 0x250F,\n 0x84AD: 0x2513,\n 0x84AE: 0x251B,\n 0x84AF: 0x2517,\n 0x84B0: 0x2523,\n 0x84B1: 0x2533,\n 0x84B2: 0x252B,\n 0x84B3: 0x253B,\n 0x84B4: 0x254B,\n 0x84B5: 0x2520,\n 0x84B6: 0x252F,\n 0x84B7: 0x2528,\n 0x84B8: 0x2537,\n 0x84B9: 0x253F,\n 0x84BA: 0x251D,\n 0x84BB: 0x2530,\n 0x84BC: 0x2525,\n 0x84BD: 0x2538,\n 0x84BE: 0x2542,\n 0x889F: 0x4E9C,\n 0x88A0: 0x5516,\n 0x88A1: 0x5A03,\n 0x88A2: 0x963F,\n 0x88A3: 0x54C0,\n 0x88A4: 0x611B,\n 0x88A5: 0x6328,\n 0x88A6: 0x59F6,\n 0x88A7: 0x9022,\n 0x88A8: 0x8475,\n 0x88A9: 0x831C,\n 0x88AA: 0x7A50,\n 0x88AB: 0x60AA,\n 0x88AC: 0x63E1,\n 0x88AD: 0x6E25,\n 0x88AE: 0x65ED,\n 0x88AF: 0x8466,\n 0x88B0: 0x82A6,\n 0x88B1: 0x9BF5,\n 0x88B2: 0x6893,\n 0x88B3: 0x5727,\n 0x88B4: 0x65A1,\n 0x88B5: 0x6271,\n 0x88B6: 0x5B9B,\n 0x88B7: 0x59D0,\n 0x88B8: 0x867B,\n 0x88B9: 0x98F4,\n 0x88BA: 0x7D62,\n 0x88BB: 0x7DBE,\n 0x88BC: 0x9B8E,\n 0x88BD: 0x6216,\n 0x88BE: 0x7C9F,\n 0x88BF: 0x88B7,\n 0x88C0: 0x5B89,\n 0x88C1: 0x5EB5,\n 0x88C2: 0x6309,\n 0x88C3: 0x6697,\n 0x88C4: 0x6848,\n 0x88C5: 0x95C7,\n 0x88C6: 0x978D,\n 0x88C7: 0x674F,\n 0x88C8: 0x4EE5,\n 0x88C9: 0x4F0A,\n 0x88CA: 0x4F4D,\n 0x88CB: 0x4F9D,\n 0x88CC: 0x5049,\n 0x88CD: 0x56F2,\n 0x88CE: 0x5937,\n 0x88CF: 0x59D4,\n 0x88D0: 0x5A01,\n 0x88D1: 0x5C09,\n 0x88D2: 0x60DF,\n 0x88D3: 0x610F,\n 0x88D4: 0x6170,\n 0x88D5: 0x6613,\n 0x88D6: 0x6905,\n 0x88D7: 0x70BA,\n 0x88D8: 0x754F,\n 0x88D9: 0x7570,\n 0x88DA: 0x79FB,\n 0x88DB: 0x7DAD,\n 0x88DC: 0x7DEF,\n 0x88DD: 0x80C3,\n 0x88DE: 0x840E,\n 0x88DF: 0x8863,\n 0x88E0: 0x8B02,\n 0x88E1: 0x9055,\n 0x88E2: 0x907A,\n 0x88E3: 0x533B,\n 0x88E4: 0x4E95,\n 0x88E5: 0x4EA5,\n 0x88E6: 0x57DF,\n 0x88E7: 0x80B2,\n 0x88E8: 0x90C1,\n 0x88E9: 0x78EF,\n 0x88EA: 0x4E00,\n 0x88EB: 0x58F1,\n 0x88EC: 0x6EA2,\n 0x88ED: 0x9038,\n 0x88EE: 0x7A32,\n 0x88EF: 0x8328,\n 0x88F0: 0x828B,\n 0x88F1: 0x9C2F,\n 0x88F2: 0x5141,\n 0x88F3: 0x5370,\n 0x88F4: 0x54BD,\n 0x88F5: 0x54E1,\n 0x88F6: 0x56E0,\n 0x88F7: 0x59FB,\n 0x88F8: 0x5F15,\n 0x88F9: 0x98F2,\n 0x88FA: 0x6DEB,\n 0x88FB: 0x80E4,\n 0x88FC: 0x852D,\n 0x8940: 0x9662,\n 0x8941: 0x9670,\n 0x8942: 0x96A0,\n 0x8943: 0x97FB,\n 0x8944: 0x540B,\n 0x8945: 0x53F3,\n 0x8946: 0x5B87,\n 0x8947: 0x70CF,\n 0x8948: 0x7FBD,\n 0x8949: 0x8FC2,\n 0x894A: 0x96E8,\n 0x894B: 0x536F,\n 0x894C: 0x9D5C,\n 0x894D: 0x7ABA,\n 0x894E: 0x4E11,\n 0x894F: 0x7893,\n 0x8950: 0x81FC,\n 0x8951: 0x6E26,\n 0x8952: 0x5618,\n 0x8953: 0x5504,\n 0x8954: 0x6B1D,\n 0x8955: 0x851A,\n 0x8956: 0x9C3B,\n 0x8957: 0x59E5,\n 0x8958: 0x53A9,\n 0x8959: 0x6D66,\n 0x895A: 0x74DC,\n 0x895B: 0x958F,\n 0x895C: 0x5642,\n 0x895D: 0x4E91,\n 0x895E: 0x904B,\n 0x895F: 0x96F2,\n 0x8960: 0x834F,\n 0x8961: 0x990C,\n 0x8962: 0x53E1,\n 0x8963: 0x55B6,\n 0x8964: 0x5B30,\n 0x8965: 0x5F71,\n 0x8966: 0x6620,\n 0x8967: 0x66F3,\n 0x8968: 0x6804,\n 0x8969: 0x6C38,\n 0x896A: 0x6CF3,\n 0x896B: 0x6D29,\n 0x896C: 0x745B,\n 0x896D: 0x76C8,\n 0x896E: 0x7A4E,\n 0x896F: 0x9834,\n 0x8970: 0x82F1,\n 0x8971: 0x885B,\n 0x8972: 0x8A60,\n 0x8973: 0x92ED,\n 0x8974: 0x6DB2,\n 0x8975: 0x75AB,\n 0x8976: 0x76CA,\n 0x8977: 0x99C5,\n 0x8978: 0x60A6,\n 0x8979: 0x8B01,\n 0x897A: 0x8D8A,\n 0x897B: 0x95B2,\n 0x897C: 0x698E,\n 0x897D: 0x53AD,\n 0x897E: 0x5186,\n 0x8980: 0x5712,\n 0x8981: 0x5830,\n 0x8982: 0x5944,\n 0x8983: 0x5BB4,\n 0x8984: 0x5EF6,\n 0x8985: 0x6028,\n 0x8986: 0x63A9,\n 0x8987: 0x63F4,\n 0x8988: 0x6CBF,\n 0x8989: 0x6F14,\n 0x898A: 0x708E,\n 0x898B: 0x7114,\n 0x898C: 0x7159,\n 0x898D: 0x71D5,\n 0x898E: 0x733F,\n 0x898F: 0x7E01,\n 0x8990: 0x8276,\n 0x8991: 0x82D1,\n 0x8992: 0x8597,\n 0x8993: 0x9060,\n 0x8994: 0x925B,\n 0x8995: 0x9D1B,\n 0x8996: 0x5869,\n 0x8997: 0x65BC,\n 0x8998: 0x6C5A,\n 0x8999: 0x7525,\n 0x899A: 0x51F9,\n 0x899B: 0x592E,\n 0x899C: 0x5965,\n 0x899D: 0x5F80,\n 0x899E: 0x5FDC,\n 0x899F: 0x62BC,\n 0x89A0: 0x65FA,\n 0x89A1: 0x6A2A,\n 0x89A2: 0x6B27,\n 0x89A3: 0x6BB4,\n 0x89A4: 0x738B,\n 0x89A5: 0x7FC1,\n 0x89A6: 0x8956,\n 0x89A7: 0x9D2C,\n 0x89A8: 0x9D0E,\n 0x89A9: 0x9EC4,\n 0x89AA: 0x5CA1,\n 0x89AB: 0x6C96,\n 0x89AC: 0x837B,\n 0x89AD: 0x5104,\n 0x89AE: 0x5C4B,\n 0x89AF: 0x61B6,\n 0x89B0: 0x81C6,\n 0x89B1: 0x6876,\n 0x89B2: 0x7261,\n 0x89B3: 0x4E59,\n 0x89B4: 0x4FFA,\n 0x89B5: 0x5378,\n 0x89B6: 0x6069,\n 0x89B7: 0x6E29,\n 0x89B8: 0x7A4F,\n 0x89B9: 0x97F3,\n 0x89BA: 0x4E0B,\n 0x89BB: 0x5316,\n 0x89BC: 0x4EEE,\n 0x89BD: 0x4F55,\n 0x89BE: 0x4F3D,\n 0x89BF: 0x4FA1,\n 0x89C0: 0x4F73,\n 0x89C1: 0x52A0,\n 0x89C2: 0x53EF,\n 0x89C3: 0x5609,\n 0x89C4: 0x590F,\n 0x89C5: 0x5AC1,\n 0x89C6: 0x5BB6,\n 0x89C7: 0x5BE1,\n 0x89C8: 0x79D1,\n 0x89C9: 0x6687,\n 0x89CA: 0x679C,\n 0x89CB: 0x67B6,\n 0x89CC: 0x6B4C,\n 0x89CD: 0x6CB3,\n 0x89CE: 0x706B,\n 0x89CF: 0x73C2,\n 0x89D0: 0x798D,\n 0x89D1: 0x79BE,\n 0x89D2: 0x7A3C,\n 0x89D3: 0x7B87,\n 0x89D4: 0x82B1,\n 0x89D5: 0x82DB,\n 0x89D6: 0x8304,\n 0x89D7: 0x8377,\n 0x89D8: 0x83EF,\n 0x89D9: 0x83D3,\n 0x89DA: 0x8766,\n 0x89DB: 0x8AB2,\n 0x89DC: 0x5629,\n 0x89DD: 0x8CA8,\n 0x89DE: 0x8FE6,\n 0x89DF: 0x904E,\n 0x89E0: 0x971E,\n 0x89E1: 0x868A,\n 0x89E2: 0x4FC4,\n 0x89E3: 0x5CE8,\n 0x89E4: 0x6211,\n 0x89E5: 0x7259,\n 0x89E6: 0x753B,\n 0x89E7: 0x81E5,\n 0x89E8: 0x82BD,\n 0x89E9: 0x86FE,\n 0x89EA: 0x8CC0,\n 0x89EB: 0x96C5,\n 0x89EC: 0x9913,\n 0x89ED: 0x99D5,\n 0x89EE: 0x4ECB,\n 0x89EF: 0x4F1A,\n 0x89F0: 0x89E3,\n 0x89F1: 0x56DE,\n 0x89F2: 0x584A,\n 0x89F3: 0x58CA,\n 0x89F4: 0x5EFB,\n 0x89F5: 0x5FEB,\n 0x89F6: 0x602A,\n 0x89F7: 0x6094,\n 0x89F8: 0x6062,\n 0x89F9: 0x61D0,\n 0x89FA: 0x6212,\n 0x89FB: 0x62D0,\n 0x89FC: 0x6539,\n 0x8A40: 0x9B41,\n 0x8A41: 0x6666,\n 0x8A42: 0x68B0,\n 0x8A43: 0x6D77,\n 0x8A44: 0x7070,\n 0x8A45: 0x754C,\n 0x8A46: 0x7686,\n 0x8A47: 0x7D75,\n 0x8A48: 0x82A5,\n 0x8A49: 0x87F9,\n 0x8A4A: 0x958B,\n 0x8A4B: 0x968E,\n 0x8A4C: 0x8C9D,\n 0x8A4D: 0x51F1,\n 0x8A4E: 0x52BE,\n 0x8A4F: 0x5916,\n 0x8A50: 0x54B3,\n 0x8A51: 0x5BB3,\n 0x8A52: 0x5D16,\n 0x8A53: 0x6168,\n 0x8A54: 0x6982,\n 0x8A55: 0x6DAF,\n 0x8A56: 0x788D,\n 0x8A57: 0x84CB,\n 0x8A58: 0x8857,\n 0x8A59: 0x8A72,\n 0x8A5A: 0x93A7,\n 0x8A5B: 0x9AB8,\n 0x8A5C: 0x6D6C,\n 0x8A5D: 0x99A8,\n 0x8A5E: 0x86D9,\n 0x8A5F: 0x57A3,\n 0x8A60: 0x67FF,\n 0x8A61: 0x86CE,\n 0x8A62: 0x920E,\n 0x8A63: 0x5283,\n 0x8A64: 0x5687,\n 0x8A65: 0x5404,\n 0x8A66: 0x5ED3,\n 0x8A67: 0x62E1,\n 0x8A68: 0x64B9,\n 0x8A69: 0x683C,\n 0x8A6A: 0x6838,\n 0x8A6B: 0x6BBB,\n 0x8A6C: 0x7372,\n 0x8A6D: 0x78BA,\n 0x8A6E: 0x7A6B,\n 0x8A6F: 0x899A,\n 0x8A70: 0x89D2,\n 0x8A71: 0x8D6B,\n 0x8A72: 0x8F03,\n 0x8A73: 0x90ED,\n 0x8A74: 0x95A3,\n 0x8A75: 0x9694,\n 0x8A76: 0x9769,\n 0x8A77: 0x5B66,\n 0x8A78: 0x5CB3,\n 0x8A79: 0x697D,\n 0x8A7A: 0x984D,\n 0x8A7B: 0x984E,\n 0x8A7C: 0x639B,\n 0x8A7D: 0x7B20,\n 0x8A7E: 0x6A2B,\n 0x8A80: 0x6A7F,\n 0x8A81: 0x68B6,\n 0x8A82: 0x9C0D,\n 0x8A83: 0x6F5F,\n 0x8A84: 0x5272,\n 0x8A85: 0x559D,\n 0x8A86: 0x6070,\n 0x8A87: 0x62EC,\n 0x8A88: 0x6D3B,\n 0x8A89: 0x6E07,\n 0x8A8A: 0x6ED1,\n 0x8A8B: 0x845B,\n 0x8A8C: 0x8910,\n 0x8A8D: 0x8F44,\n 0x8A8E: 0x4E14,\n 0x8A8F: 0x9C39,\n 0x8A90: 0x53F6,\n 0x8A91: 0x691B,\n 0x8A92: 0x6A3A,\n 0x8A93: 0x9784,\n 0x8A94: 0x682A,\n 0x8A95: 0x515C,\n 0x8A96: 0x7AC3,\n 0x8A97: 0x84B2,\n 0x8A98: 0x91DC,\n 0x8A99: 0x938C,\n 0x8A9A: 0x565B,\n 0x8A9B: 0x9D28,\n 0x8A9C: 0x6822,\n 0x8A9D: 0x8305,\n 0x8A9E: 0x8431,\n 0x8A9F: 0x7CA5,\n 0x8AA0: 0x5208,\n 0x8AA1: 0x82C5,\n 0x8AA2: 0x74E6,\n 0x8AA3: 0x4E7E,\n 0x8AA4: 0x4F83,\n 0x8AA5: 0x51A0,\n 0x8AA6: 0x5BD2,\n 0x8AA7: 0x520A,\n 0x8AA8: 0x52D8,\n 0x8AA9: 0x52E7,\n 0x8AAA: 0x5DFB,\n 0x8AAB: 0x559A,\n 0x8AAC: 0x582A,\n 0x8AAD: 0x59E6,\n 0x8AAE: 0x5B8C,\n 0x8AAF: 0x5B98,\n 0x8AB0: 0x5BDB,\n 0x8AB1: 0x5E72,\n 0x8AB2: 0x5E79,\n 0x8AB3: 0x60A3,\n 0x8AB4: 0x611F,\n 0x8AB5: 0x6163,\n 0x8AB6: 0x61BE,\n 0x8AB7: 0x63DB,\n 0x8AB8: 0x6562,\n 0x8AB9: 0x67D1,\n 0x8ABA: 0x6853,\n 0x8ABB: 0x68FA,\n 0x8ABC: 0x6B3E,\n 0x8ABD: 0x6B53,\n 0x8ABE: 0x6C57,\n 0x8ABF: 0x6F22,\n 0x8AC0: 0x6F97,\n 0x8AC1: 0x6F45,\n 0x8AC2: 0x74B0,\n 0x8AC3: 0x7518,\n 0x8AC4: 0x76E3,\n 0x8AC5: 0x770B,\n 0x8AC6: 0x7AFF,\n 0x8AC7: 0x7BA1,\n 0x8AC8: 0x7C21,\n 0x8AC9: 0x7DE9,\n 0x8ACA: 0x7F36,\n 0x8ACB: 0x7FF0,\n 0x8ACC: 0x809D,\n 0x8ACD: 0x8266,\n 0x8ACE: 0x839E,\n 0x8ACF: 0x89B3,\n 0x8AD0: 0x8ACC,\n 0x8AD1: 0x8CAB,\n 0x8AD2: 0x9084,\n 0x8AD3: 0x9451,\n 0x8AD4: 0x9593,\n 0x8AD5: 0x9591,\n 0x8AD6: 0x95A2,\n 0x8AD7: 0x9665,\n 0x8AD8: 0x97D3,\n 0x8AD9: 0x9928,\n 0x8ADA: 0x8218,\n 0x8ADB: 0x4E38,\n 0x8ADC: 0x542B,\n 0x8ADD: 0x5CB8,\n 0x8ADE: 0x5DCC,\n 0x8ADF: 0x73A9,\n 0x8AE0: 0x764C,\n 0x8AE1: 0x773C,\n 0x8AE2: 0x5CA9,\n 0x8AE3: 0x7FEB,\n 0x8AE4: 0x8D0B,\n 0x8AE5: 0x96C1,\n 0x8AE6: 0x9811,\n 0x8AE7: 0x9854,\n 0x8AE8: 0x9858,\n 0x8AE9: 0x4F01,\n 0x8AEA: 0x4F0E,\n 0x8AEB: 0x5371,\n 0x8AEC: 0x559C,\n 0x8AED: 0x5668,\n 0x8AEE: 0x57FA,\n 0x8AEF: 0x5947,\n 0x8AF0: 0x5B09,\n 0x8AF1: 0x5BC4,\n 0x8AF2: 0x5C90,\n 0x8AF3: 0x5E0C,\n 0x8AF4: 0x5E7E,\n 0x8AF5: 0x5FCC,\n 0x8AF6: 0x63EE,\n 0x8AF7: 0x673A,\n 0x8AF8: 0x65D7,\n 0x8AF9: 0x65E2,\n 0x8AFA: 0x671F,\n 0x8AFB: 0x68CB,\n 0x8AFC: 0x68C4,\n 0x8B40: 0x6A5F,\n 0x8B41: 0x5E30,\n 0x8B42: 0x6BC5,\n 0x8B43: 0x6C17,\n 0x8B44: 0x6C7D,\n 0x8B45: 0x757F,\n 0x8B46: 0x7948,\n 0x8B47: 0x5B63,\n 0x8B48: 0x7A00,\n 0x8B49: 0x7D00,\n 0x8B4A: 0x5FBD,\n 0x8B4B: 0x898F,\n 0x8B4C: 0x8A18,\n 0x8B4D: 0x8CB4,\n 0x8B4E: 0x8D77,\n 0x8B4F: 0x8ECC,\n 0x8B50: 0x8F1D,\n 0x8B51: 0x98E2,\n 0x8B52: 0x9A0E,\n 0x8B53: 0x9B3C,\n 0x8B54: 0x4E80,\n 0x8B55: 0x507D,\n 0x8B56: 0x5100,\n 0x8B57: 0x5993,\n 0x8B58: 0x5B9C,\n 0x8B59: 0x622F,\n 0x8B5A: 0x6280,\n 0x8B5B: 0x64EC,\n 0x8B5C: 0x6B3A,\n 0x8B5D: 0x72A0,\n 0x8B5E: 0x7591,\n 0x8B5F: 0x7947,\n 0x8B60: 0x7FA9,\n 0x8B61: 0x87FB,\n 0x8B62: 0x8ABC,\n 0x8B63: 0x8B70,\n 0x8B64: 0x63AC,\n 0x8B65: 0x83CA,\n 0x8B66: 0x97A0,\n 0x8B67: 0x5409,\n 0x8B68: 0x5403,\n 0x8B69: 0x55AB,\n 0x8B6A: 0x6854,\n 0x8B6B: 0x6A58,\n 0x8B6C: 0x8A70,\n 0x8B6D: 0x7827,\n 0x8B6E: 0x6775,\n 0x8B6F: 0x9ECD,\n 0x8B70: 0x5374,\n 0x8B71: 0x5BA2,\n 0x8B72: 0x811A,\n 0x8B73: 0x8650,\n 0x8B74: 0x9006,\n 0x8B75: 0x4E18,\n 0x8B76: 0x4E45,\n 0x8B77: 0x4EC7,\n 0x8B78: 0x4F11,\n 0x8B79: 0x53CA,\n 0x8B7A: 0x5438,\n 0x8B7B: 0x5BAE,\n 0x8B7C: 0x5F13,\n 0x8B7D: 0x6025,\n 0x8B7E: 0x6551,\n 0x8B80: 0x673D,\n 0x8B81: 0x6C42,\n 0x8B82: 0x6C72,\n 0x8B83: 0x6CE3,\n 0x8B84: 0x7078,\n 0x8B85: 0x7403,\n 0x8B86: 0x7A76,\n 0x8B87: 0x7AAE,\n 0x8B88: 0x7B08,\n 0x8B89: 0x7D1A,\n 0x8B8A: 0x7CFE,\n 0x8B8B: 0x7D66,\n 0x8B8C: 0x65E7,\n 0x8B8D: 0x725B,\n 0x8B8E: 0x53BB,\n 0x8B8F: 0x5C45,\n 0x8B90: 0x5DE8,\n 0x8B91: 0x62D2,\n 0x8B92: 0x62E0,\n 0x8B93: 0x6319,\n 0x8B94: 0x6E20,\n 0x8B95: 0x865A,\n 0x8B96: 0x8A31,\n 0x8B97: 0x8DDD,\n 0x8B98: 0x92F8,\n 0x8B99: 0x6F01,\n 0x8B9A: 0x79A6,\n 0x8B9B: 0x9B5A,\n 0x8B9C: 0x4EA8,\n 0x8B9D: 0x4EAB,\n 0x8B9E: 0x4EAC,\n 0x8B9F: 0x4F9B,\n 0x8BA0: 0x4FA0,\n 0x8BA1: 0x50D1,\n 0x8BA2: 0x5147,\n 0x8BA3: 0x7AF6,\n 0x8BA4: 0x5171,\n 0x8BA5: 0x51F6,\n 0x8BA6: 0x5354,\n 0x8BA7: 0x5321,\n 0x8BA8: 0x537F,\n 0x8BA9: 0x53EB,\n 0x8BAA: 0x55AC,\n 0x8BAB: 0x5883,\n 0x8BAC: 0x5CE1,\n 0x8BAD: 0x5F37,\n 0x8BAE: 0x5F4A,\n 0x8BAF: 0x602F,\n 0x8BB0: 0x6050,\n 0x8BB1: 0x606D,\n 0x8BB2: 0x631F,\n 0x8BB3: 0x6559,\n 0x8BB4: 0x6A4B,\n 0x8BB5: 0x6CC1,\n 0x8BB6: 0x72C2,\n 0x8BB7: 0x72ED,\n 0x8BB8: 0x77EF,\n 0x8BB9: 0x80F8,\n 0x8BBA: 0x8105,\n 0x8BBB: 0x8208,\n 0x8BBC: 0x854E,\n 0x8BBD: 0x90F7,\n 0x8BBE: 0x93E1,\n 0x8BBF: 0x97FF,\n 0x8BC0: 0x9957,\n 0x8BC1: 0x9A5A,\n 0x8BC2: 0x4EF0,\n 0x8BC3: 0x51DD,\n 0x8BC4: 0x5C2D,\n 0x8BC5: 0x6681,\n 0x8BC6: 0x696D,\n 0x8BC7: 0x5C40,\n 0x8BC8: 0x66F2,\n 0x8BC9: 0x6975,\n 0x8BCA: 0x7389,\n 0x8BCB: 0x6850,\n 0x8BCC: 0x7C81,\n 0x8BCD: 0x50C5,\n 0x8BCE: 0x52E4,\n 0x8BCF: 0x5747,\n 0x8BD0: 0x5DFE,\n 0x8BD1: 0x9326,\n 0x8BD2: 0x65A4,\n 0x8BD3: 0x6B23,\n 0x8BD4: 0x6B3D,\n 0x8BD5: 0x7434,\n 0x8BD6: 0x7981,\n 0x8BD7: 0x79BD,\n 0x8BD8: 0x7B4B,\n 0x8BD9: 0x7DCA,\n 0x8BDA: 0x82B9,\n 0x8BDB: 0x83CC,\n 0x8BDC: 0x887F,\n 0x8BDD: 0x895F,\n 0x8BDE: 0x8B39,\n 0x8BDF: 0x8FD1,\n 0x8BE0: 0x91D1,\n 0x8BE1: 0x541F,\n 0x8BE2: 0x9280,\n 0x8BE3: 0x4E5D,\n 0x8BE4: 0x5036,\n 0x8BE5: 0x53E5,\n 0x8BE6: 0x533A,\n 0x8BE7: 0x72D7,\n 0x8BE8: 0x7396,\n 0x8BE9: 0x77E9,\n 0x8BEA: 0x82E6,\n 0x8BEB: 0x8EAF,\n 0x8BEC: 0x99C6,\n 0x8BED: 0x99C8,\n 0x8BEE: 0x99D2,\n 0x8BEF: 0x5177,\n 0x8BF0: 0x611A,\n 0x8BF1: 0x865E,\n 0x8BF2: 0x55B0,\n 0x8BF3: 0x7A7A,\n 0x8BF4: 0x5076,\n 0x8BF5: 0x5BD3,\n 0x8BF6: 0x9047,\n 0x8BF7: 0x9685,\n 0x8BF8: 0x4E32,\n 0x8BF9: 0x6ADB,\n 0x8BFA: 0x91E7,\n 0x8BFB: 0x5C51,\n 0x8BFC: 0x5C48,\n 0x8C40: 0x6398,\n 0x8C41: 0x7A9F,\n 0x8C42: 0x6C93,\n 0x8C43: 0x9774,\n 0x8C44: 0x8F61,\n 0x8C45: 0x7AAA,\n 0x8C46: 0x718A,\n 0x8C47: 0x9688,\n 0x8C48: 0x7C82,\n 0x8C49: 0x6817,\n 0x8C4A: 0x7E70,\n 0x8C4B: 0x6851,\n 0x8C4C: 0x936C,\n 0x8C4D: 0x52F2,\n 0x8C4E: 0x541B,\n 0x8C4F: 0x85AB,\n 0x8C50: 0x8A13,\n 0x8C51: 0x7FA4,\n 0x8C52: 0x8ECD,\n 0x8C53: 0x90E1,\n 0x8C54: 0x5366,\n 0x8C55: 0x8888,\n 0x8C56: 0x7941,\n 0x8C57: 0x4FC2,\n 0x8C58: 0x50BE,\n 0x8C59: 0x5211,\n 0x8C5A: 0x5144,\n 0x8C5B: 0x5553,\n 0x8C5C: 0x572D,\n 0x8C5D: 0x73EA,\n 0x8C5E: 0x578B,\n 0x8C5F: 0x5951,\n 0x8C60: 0x5F62,\n 0x8C61: 0x5F84,\n 0x8C62: 0x6075,\n 0x8C63: 0x6176,\n 0x8C64: 0x6167,\n 0x8C65: 0x61A9,\n 0x8C66: 0x63B2,\n 0x8C67: 0x643A,\n 0x8C68: 0x656C,\n 0x8C69: 0x666F,\n 0x8C6A: 0x6842,\n 0x8C6B: 0x6E13,\n 0x8C6C: 0x7566,\n 0x8C6D: 0x7A3D,\n 0x8C6E: 0x7CFB,\n 0x8C6F: 0x7D4C,\n 0x8C70: 0x7D99,\n 0x8C71: 0x7E4B,\n 0x8C72: 0x7F6B,\n 0x8C73: 0x830E,\n 0x8C74: 0x834A,\n 0x8C75: 0x86CD,\n 0x8C76: 0x8A08,\n 0x8C77: 0x8A63,\n 0x8C78: 0x8B66,\n 0x8C79: 0x8EFD,\n 0x8C7A: 0x981A,\n 0x8C7B: 0x9D8F,\n 0x8C7C: 0x82B8,\n 0x8C7D: 0x8FCE,\n 0x8C7E: 0x9BE8,\n 0x8C80: 0x5287,\n 0x8C81: 0x621F,\n 0x8C82: 0x6483,\n 0x8C83: 0x6FC0,\n 0x8C84: 0x9699,\n 0x8C85: 0x6841,\n 0x8C86: 0x5091,\n 0x8C87: 0x6B20,\n 0x8C88: 0x6C7A,\n 0x8C89: 0x6F54,\n 0x8C8A: 0x7A74,\n 0x8C8B: 0x7D50,\n 0x8C8C: 0x8840,\n 0x8C8D: 0x8A23,\n 0x8C8E: 0x6708,\n 0x8C8F: 0x4EF6,\n 0x8C90: 0x5039,\n 0x8C91: 0x5026,\n 0x8C92: 0x5065,\n 0x8C93: 0x517C,\n 0x8C94: 0x5238,\n 0x8C95: 0x5263,\n 0x8C96: 0x55A7,\n 0x8C97: 0x570F,\n 0x8C98: 0x5805,\n 0x8C99: 0x5ACC,\n 0x8C9A: 0x5EFA,\n 0x8C9B: 0x61B2,\n 0x8C9C: 0x61F8,\n 0x8C9D: 0x62F3,\n 0x8C9E: 0x6372,\n 0x8C9F: 0x691C,\n 0x8CA0: 0x6A29,\n 0x8CA1: 0x727D,\n 0x8CA2: 0x72AC,\n 0x8CA3: 0x732E,\n 0x8CA4: 0x7814,\n 0x8CA5: 0x786F,\n 0x8CA6: 0x7D79,\n 0x8CA7: 0x770C,\n 0x8CA8: 0x80A9,\n 0x8CA9: 0x898B,\n 0x8CAA: 0x8B19,\n 0x8CAB: 0x8CE2,\n 0x8CAC: 0x8ED2,\n 0x8CAD: 0x9063,\n 0x8CAE: 0x9375,\n 0x8CAF: 0x967A,\n 0x8CB0: 0x9855,\n 0x8CB1: 0x9A13,\n 0x8CB2: 0x9E78,\n 0x8CB3: 0x5143,\n 0x8CB4: 0x539F,\n 0x8CB5: 0x53B3,\n 0x8CB6: 0x5E7B,\n 0x8CB7: 0x5F26,\n 0x8CB8: 0x6E1B,\n 0x8CB9: 0x6E90,\n 0x8CBA: 0x7384,\n 0x8CBB: 0x73FE,\n 0x8CBC: 0x7D43,\n 0x8CBD: 0x8237,\n 0x8CBE: 0x8A00,\n 0x8CBF: 0x8AFA,\n 0x8CC0: 0x9650,\n 0x8CC1: 0x4E4E,\n 0x8CC2: 0x500B,\n 0x8CC3: 0x53E4,\n 0x8CC4: 0x547C,\n 0x8CC5: 0x56FA,\n 0x8CC6: 0x59D1,\n 0x8CC7: 0x5B64,\n 0x8CC8: 0x5DF1,\n 0x8CC9: 0x5EAB,\n 0x8CCA: 0x5F27,\n 0x8CCB: 0x6238,\n 0x8CCC: 0x6545,\n 0x8CCD: 0x67AF,\n 0x8CCE: 0x6E56,\n 0x8CCF: 0x72D0,\n 0x8CD0: 0x7CCA,\n 0x8CD1: 0x88B4,\n 0x8CD2: 0x80A1,\n 0x8CD3: 0x80E1,\n 0x8CD4: 0x83F0,\n 0x8CD5: 0x864E,\n 0x8CD6: 0x8A87,\n 0x8CD7: 0x8DE8,\n 0x8CD8: 0x9237,\n 0x8CD9: 0x96C7,\n 0x8CDA: 0x9867,\n 0x8CDB: 0x9F13,\n 0x8CDC: 0x4E94,\n 0x8CDD: 0x4E92,\n 0x8CDE: 0x4F0D,\n 0x8CDF: 0x5348,\n 0x8CE0: 0x5449,\n 0x8CE1: 0x543E,\n 0x8CE2: 0x5A2F,\n 0x8CE3: 0x5F8C,\n 0x8CE4: 0x5FA1,\n 0x8CE5: 0x609F,\n 0x8CE6: 0x68A7,\n 0x8CE7: 0x6A8E,\n 0x8CE8: 0x745A,\n 0x8CE9: 0x7881,\n 0x8CEA: 0x8A9E,\n 0x8CEB: 0x8AA4,\n 0x8CEC: 0x8B77,\n 0x8CED: 0x9190,\n 0x8CEE: 0x4E5E,\n 0x8CEF: 0x9BC9,\n 0x8CF0: 0x4EA4,\n 0x8CF1: 0x4F7C,\n 0x8CF2: 0x4FAF,\n 0x8CF3: 0x5019,\n 0x8CF4: 0x5016,\n 0x8CF5: 0x5149,\n 0x8CF6: 0x516C,\n 0x8CF7: 0x529F,\n 0x8CF8: 0x52B9,\n 0x8CF9: 0x52FE,\n 0x8CFA: 0x539A,\n 0x8CFB: 0x53E3,\n 0x8CFC: 0x5411,\n 0x8D40: 0x540E,\n 0x8D41: 0x5589,\n 0x8D42: 0x5751,\n 0x8D43: 0x57A2,\n 0x8D44: 0x597D,\n 0x8D45: 0x5B54,\n 0x8D46: 0x5B5D,\n 0x8D47: 0x5B8F,\n 0x8D48: 0x5DE5,\n 0x8D49: 0x5DE7,\n 0x8D4A: 0x5DF7,\n 0x8D4B: 0x5E78,\n 0x8D4C: 0x5E83,\n 0x8D4D: 0x5E9A,\n 0x8D4E: 0x5EB7,\n 0x8D4F: 0x5F18,\n 0x8D50: 0x6052,\n 0x8D51: 0x614C,\n 0x8D52: 0x6297,\n 0x8D53: 0x62D8,\n 0x8D54: 0x63A7,\n 0x8D55: 0x653B,\n 0x8D56: 0x6602,\n 0x8D57: 0x6643,\n 0x8D58: 0x66F4,\n 0x8D59: 0x676D,\n 0x8D5A: 0x6821,\n 0x8D5B: 0x6897,\n 0x8D5C: 0x69CB,\n 0x8D5D: 0x6C5F,\n 0x8D5E: 0x6D2A,\n 0x8D5F: 0x6D69,\n 0x8D60: 0x6E2F,\n 0x8D61: 0x6E9D,\n 0x8D62: 0x7532,\n 0x8D63: 0x7687,\n 0x8D64: 0x786C,\n 0x8D65: 0x7A3F,\n 0x8D66: 0x7CE0,\n 0x8D67: 0x7D05,\n 0x8D68: 0x7D18,\n 0x8D69: 0x7D5E,\n 0x8D6A: 0x7DB1,\n 0x8D6B: 0x8015,\n 0x8D6C: 0x8003,\n 0x8D6D: 0x80AF,\n 0x8D6E: 0x80B1,\n 0x8D6F: 0x8154,\n 0x8D70: 0x818F,\n 0x8D71: 0x822A,\n 0x8D72: 0x8352,\n 0x8D73: 0x884C,\n 0x8D74: 0x8861,\n 0x8D75: 0x8B1B,\n 0x8D76: 0x8CA2,\n 0x8D77: 0x8CFC,\n 0x8D78: 0x90CA,\n 0x8D79: 0x9175,\n 0x8D7A: 0x9271,\n 0x8D7B: 0x783F,\n 0x8D7C: 0x92FC,\n 0x8D7D: 0x95A4,\n 0x8D7E: 0x964D,\n 0x8D80: 0x9805,\n 0x8D81: 0x9999,\n 0x8D82: 0x9AD8,\n 0x8D83: 0x9D3B,\n 0x8D84: 0x525B,\n 0x8D85: 0x52AB,\n 0x8D86: 0x53F7,\n 0x8D87: 0x5408,\n 0x8D88: 0x58D5,\n 0x8D89: 0x62F7,\n 0x8D8A: 0x6FE0,\n 0x8D8B: 0x8C6A,\n 0x8D8C: 0x8F5F,\n 0x8D8D: 0x9EB9,\n 0x8D8E: 0x514B,\n 0x8D8F: 0x523B,\n 0x8D90: 0x544A,\n 0x8D91: 0x56FD,\n 0x8D92: 0x7A40,\n 0x8D93: 0x9177,\n 0x8D94: 0x9D60,\n 0x8D95: 0x9ED2,\n 0x8D96: 0x7344,\n 0x8D97: 0x6F09,\n 0x8D98: 0x8170,\n 0x8D99: 0x7511,\n 0x8D9A: 0x5FFD,\n 0x8D9B: 0x60DA,\n 0x8D9C: 0x9AA8,\n 0x8D9D: 0x72DB,\n 0x8D9E: 0x8FBC,\n 0x8D9F: 0x6B64,\n 0x8DA0: 0x9803,\n 0x8DA1: 0x4ECA,\n 0x8DA2: 0x56F0,\n 0x8DA3: 0x5764,\n 0x8DA4: 0x58BE,\n 0x8DA5: 0x5A5A,\n 0x8DA6: 0x6068,\n 0x8DA7: 0x61C7,\n 0x8DA8: 0x660F,\n 0x8DA9: 0x6606,\n 0x8DAA: 0x6839,\n 0x8DAB: 0x68B1,\n 0x8DAC: 0x6DF7,\n 0x8DAD: 0x75D5,\n 0x8DAE: 0x7D3A,\n 0x8DAF: 0x826E,\n 0x8DB0: 0x9B42,\n 0x8DB1: 0x4E9B,\n 0x8DB2: 0x4F50,\n 0x8DB3: 0x53C9,\n 0x8DB4: 0x5506,\n 0x8DB5: 0x5D6F,\n 0x8DB6: 0x5DE6,\n 0x8DB7: 0x5DEE,\n 0x8DB8: 0x67FB,\n 0x8DB9: 0x6C99,\n 0x8DBA: 0x7473,\n 0x8DBB: 0x7802,\n 0x8DBC: 0x8A50,\n 0x8DBD: 0x9396,\n 0x8DBE: 0x88DF,\n 0x8DBF: 0x5750,\n 0x8DC0: 0x5EA7,\n 0x8DC1: 0x632B,\n 0x8DC2: 0x50B5,\n 0x8DC3: 0x50AC,\n 0x8DC4: 0x518D,\n 0x8DC5: 0x6700,\n 0x8DC6: 0x54C9,\n 0x8DC7: 0x585E,\n 0x8DC8: 0x59BB,\n 0x8DC9: 0x5BB0,\n 0x8DCA: 0x5F69,\n 0x8DCB: 0x624D,\n 0x8DCC: 0x63A1,\n 0x8DCD: 0x683D,\n 0x8DCE: 0x6B73,\n 0x8DCF: 0x6E08,\n 0x8DD0: 0x707D,\n 0x8DD1: 0x91C7,\n 0x8DD2: 0x7280,\n 0x8DD3: 0x7815,\n 0x8DD4: 0x7826,\n 0x8DD5: 0x796D,\n 0x8DD6: 0x658E,\n 0x8DD7: 0x7D30,\n 0x8DD8: 0x83DC,\n 0x8DD9: 0x88C1,\n 0x8DDA: 0x8F09,\n 0x8DDB: 0x969B,\n 0x8DDC: 0x5264,\n 0x8DDD: 0x5728,\n 0x8DDE: 0x6750,\n 0x8DDF: 0x7F6A,\n 0x8DE0: 0x8CA1,\n 0x8DE1: 0x51B4,\n 0x8DE2: 0x5742,\n 0x8DE3: 0x962A,\n 0x8DE4: 0x583A,\n 0x8DE5: 0x698A,\n 0x8DE6: 0x80B4,\n 0x8DE7: 0x54B2,\n 0x8DE8: 0x5D0E,\n 0x8DE9: 0x57FC,\n 0x8DEA: 0x7895,\n 0x8DEB: 0x9DFA,\n 0x8DEC: 0x4F5C,\n 0x8DED: 0x524A,\n 0x8DEE: 0x548B,\n 0x8DEF: 0x643E,\n 0x8DF0: 0x6628,\n 0x8DF1: 0x6714,\n 0x8DF2: 0x67F5,\n 0x8DF3: 0x7A84,\n 0x8DF4: 0x7B56,\n 0x8DF5: 0x7D22,\n 0x8DF6: 0x932F,\n 0x8DF7: 0x685C,\n 0x8DF8: 0x9BAD,\n 0x8DF9: 0x7B39,\n 0x8DFA: 0x5319,\n 0x8DFB: 0x518A,\n 0x8DFC: 0x5237,\n 0x8E40: 0x5BDF,\n 0x8E41: 0x62F6,\n 0x8E42: 0x64AE,\n 0x8E43: 0x64E6,\n 0x8E44: 0x672D,\n 0x8E45: 0x6BBA,\n 0x8E46: 0x85A9,\n 0x8E47: 0x96D1,\n 0x8E48: 0x7690,\n 0x8E49: 0x9BD6,\n 0x8E4A: 0x634C,\n 0x8E4B: 0x9306,\n 0x8E4C: 0x9BAB,\n 0x8E4D: 0x76BF,\n 0x8E4E: 0x6652,\n 0x8E4F: 0x4E09,\n 0x8E50: 0x5098,\n 0x8E51: 0x53C2,\n 0x8E52: 0x5C71,\n 0x8E53: 0x60E8,\n 0x8E54: 0x6492,\n 0x8E55: 0x6563,\n 0x8E56: 0x685F,\n 0x8E57: 0x71E6,\n 0x8E58: 0x73CA,\n 0x8E59: 0x7523,\n 0x8E5A: 0x7B97,\n 0x8E5B: 0x7E82,\n 0x8E5C: 0x8695,\n 0x8E5D: 0x8B83,\n 0x8E5E: 0x8CDB,\n 0x8E5F: 0x9178,\n 0x8E60: 0x9910,\n 0x8E61: 0x65AC,\n 0x8E62: 0x66AB,\n 0x8E63: 0x6B8B,\n 0x8E64: 0x4ED5,\n 0x8E65: 0x4ED4,\n 0x8E66: 0x4F3A,\n 0x8E67: 0x4F7F,\n 0x8E68: 0x523A,\n 0x8E69: 0x53F8,\n 0x8E6A: 0x53F2,\n 0x8E6B: 0x55E3,\n 0x8E6C: 0x56DB,\n 0x8E6D: 0x58EB,\n 0x8E6E: 0x59CB,\n 0x8E6F: 0x59C9,\n 0x8E70: 0x59FF,\n 0x8E71: 0x5B50,\n 0x8E72: 0x5C4D,\n 0x8E73: 0x5E02,\n 0x8E74: 0x5E2B,\n 0x8E75: 0x5FD7,\n 0x8E76: 0x601D,\n 0x8E77: 0x6307,\n 0x8E78: 0x652F,\n 0x8E79: 0x5B5C,\n 0x8E7A: 0x65AF,\n 0x8E7B: 0x65BD,\n 0x8E7C: 0x65E8,\n 0x8E7D: 0x679D,\n 0x8E7E: 0x6B62,\n 0x8E80: 0x6B7B,\n 0x8E81: 0x6C0F,\n 0x8E82: 0x7345,\n 0x8E83: 0x7949,\n 0x8E84: 0x79C1,\n 0x8E85: 0x7CF8,\n 0x8E86: 0x7D19,\n 0x8E87: 0x7D2B,\n 0x8E88: 0x80A2,\n 0x8E89: 0x8102,\n 0x8E8A: 0x81F3,\n 0x8E8B: 0x8996,\n 0x8E8C: 0x8A5E,\n 0x8E8D: 0x8A69,\n 0x8E8E: 0x8A66,\n 0x8E8F: 0x8A8C,\n 0x8E90: 0x8AEE,\n 0x8E91: 0x8CC7,\n 0x8E92: 0x8CDC,\n 0x8E93: 0x96CC,\n 0x8E94: 0x98FC,\n 0x8E95: 0x6B6F,\n 0x8E96: 0x4E8B,\n 0x8E97: 0x4F3C,\n 0x8E98: 0x4F8D,\n 0x8E99: 0x5150,\n 0x8E9A: 0x5B57,\n 0x8E9B: 0x5BFA,\n 0x8E9C: 0x6148,\n 0x8E9D: 0x6301,\n 0x8E9E: 0x6642,\n 0x8E9F: 0x6B21,\n 0x8EA0: 0x6ECB,\n 0x8EA1: 0x6CBB,\n 0x8EA2: 0x723E,\n 0x8EA3: 0x74BD,\n 0x8EA4: 0x75D4,\n 0x8EA5: 0x78C1,\n 0x8EA6: 0x793A,\n 0x8EA7: 0x800C,\n 0x8EA8: 0x8033,\n 0x8EA9: 0x81EA,\n 0x8EAA: 0x8494,\n 0x8EAB: 0x8F9E,\n 0x8EAC: 0x6C50,\n 0x8EAD: 0x9E7F,\n 0x8EAE: 0x5F0F,\n 0x8EAF: 0x8B58,\n 0x8EB0: 0x9D2B,\n 0x8EB1: 0x7AFA,\n 0x8EB2: 0x8EF8,\n 0x8EB3: 0x5B8D,\n 0x8EB4: 0x96EB,\n 0x8EB5: 0x4E03,\n 0x8EB6: 0x53F1,\n 0x8EB7: 0x57F7,\n 0x8EB8: 0x5931,\n 0x8EB9: 0x5AC9,\n 0x8EBA: 0x5BA4,\n 0x8EBB: 0x6089,\n 0x8EBC: 0x6E7F,\n 0x8EBD: 0x6F06,\n 0x8EBE: 0x75BE,\n 0x8EBF: 0x8CEA,\n 0x8EC0: 0x5B9F,\n 0x8EC1: 0x8500,\n 0x8EC2: 0x7BE0,\n 0x8EC3: 0x5072,\n 0x8EC4: 0x67F4,\n 0x8EC5: 0x829D,\n 0x8EC6: 0x5C61,\n 0x8EC7: 0x854A,\n 0x8EC8: 0x7E1E,\n 0x8EC9: 0x820E,\n 0x8ECA: 0x5199,\n 0x8ECB: 0x5C04,\n 0x8ECC: 0x6368,\n 0x8ECD: 0x8D66,\n 0x8ECE: 0x659C,\n 0x8ECF: 0x716E,\n 0x8ED0: 0x793E,\n 0x8ED1: 0x7D17,\n 0x8ED2: 0x8005,\n 0x8ED3: 0x8B1D,\n 0x8ED4: 0x8ECA,\n 0x8ED5: 0x906E,\n 0x8ED6: 0x86C7,\n 0x8ED7: 0x90AA,\n 0x8ED8: 0x501F,\n 0x8ED9: 0x52FA,\n 0x8EDA: 0x5C3A,\n 0x8EDB: 0x6753,\n 0x8EDC: 0x707C,\n 0x8EDD: 0x7235,\n 0x8EDE: 0x914C,\n 0x8EDF: 0x91C8,\n 0x8EE0: 0x932B,\n 0x8EE1: 0x82E5,\n 0x8EE2: 0x5BC2,\n 0x8EE3: 0x5F31,\n 0x8EE4: 0x60F9,\n 0x8EE5: 0x4E3B,\n 0x8EE6: 0x53D6,\n 0x8EE7: 0x5B88,\n 0x8EE8: 0x624B,\n 0x8EE9: 0x6731,\n 0x8EEA: 0x6B8A,\n 0x8EEB: 0x72E9,\n 0x8EEC: 0x73E0,\n 0x8EED: 0x7A2E,\n 0x8EEE: 0x816B,\n 0x8EEF: 0x8DA3,\n 0x8EF0: 0x9152,\n 0x8EF1: 0x9996,\n 0x8EF2: 0x5112,\n 0x8EF3: 0x53D7,\n 0x8EF4: 0x546A,\n 0x8EF5: 0x5BFF,\n 0x8EF6: 0x6388,\n 0x8EF7: 0x6A39,\n 0x8EF8: 0x7DAC,\n 0x8EF9: 0x9700,\n 0x8EFA: 0x56DA,\n 0x8EFB: 0x53CE,\n 0x8EFC: 0x5468,\n 0x8F40: 0x5B97,\n 0x8F41: 0x5C31,\n 0x8F42: 0x5DDE,\n 0x8F43: 0x4FEE,\n 0x8F44: 0x6101,\n 0x8F45: 0x62FE,\n 0x8F46: 0x6D32,\n 0x8F47: 0x79C0,\n 0x8F48: 0x79CB,\n 0x8F49: 0x7D42,\n 0x8F4A: 0x7E4D,\n 0x8F4B: 0x7FD2,\n 0x8F4C: 0x81ED,\n 0x8F4D: 0x821F,\n 0x8F4E: 0x8490,\n 0x8F4F: 0x8846,\n 0x8F50: 0x8972,\n 0x8F51: 0x8B90,\n 0x8F52: 0x8E74,\n 0x8F53: 0x8F2F,\n 0x8F54: 0x9031,\n 0x8F55: 0x914B,\n 0x8F56: 0x916C,\n 0x8F57: 0x96C6,\n 0x8F58: 0x919C,\n 0x8F59: 0x4EC0,\n 0x8F5A: 0x4F4F,\n 0x8F5B: 0x5145,\n 0x8F5C: 0x5341,\n 0x8F5D: 0x5F93,\n 0x8F5E: 0x620E,\n 0x8F5F: 0x67D4,\n 0x8F60: 0x6C41,\n 0x8F61: 0x6E0B,\n 0x8F62: 0x7363,\n 0x8F63: 0x7E26,\n 0x8F64: 0x91CD,\n 0x8F65: 0x9283,\n 0x8F66: 0x53D4,\n 0x8F67: 0x5919,\n 0x8F68: 0x5BBF,\n 0x8F69: 0x6DD1,\n 0x8F6A: 0x795D,\n 0x8F6B: 0x7E2E,\n 0x8F6C: 0x7C9B,\n 0x8F6D: 0x587E,\n 0x8F6E: 0x719F,\n 0x8F6F: 0x51FA,\n 0x8F70: 0x8853,\n 0x8F71: 0x8FF0,\n 0x8F72: 0x4FCA,\n 0x8F73: 0x5CFB,\n 0x8F74: 0x6625,\n 0x8F75: 0x77AC,\n 0x8F76: 0x7AE3,\n 0x8F77: 0x821C,\n 0x8F78: 0x99FF,\n 0x8F79: 0x51C6,\n 0x8F7A: 0x5FAA,\n 0x8F7B: 0x65EC,\n 0x8F7C: 0x696F,\n 0x8F7D: 0x6B89,\n 0x8F7E: 0x6DF3,\n 0x8F80: 0x6E96,\n 0x8F81: 0x6F64,\n 0x8F82: 0x76FE,\n 0x8F83: 0x7D14,\n 0x8F84: 0x5DE1,\n 0x8F85: 0x9075,\n 0x8F86: 0x9187,\n 0x8F87: 0x9806,\n 0x8F88: 0x51E6,\n 0x8F89: 0x521D,\n 0x8F8A: 0x6240,\n 0x8F8B: 0x6691,\n 0x8F8C: 0x66D9,\n 0x8F8D: 0x6E1A,\n 0x8F8E: 0x5EB6,\n 0x8F8F: 0x7DD2,\n 0x8F90: 0x7F72,\n 0x8F91: 0x66F8,\n 0x8F92: 0x85AF,\n 0x8F93: 0x85F7,\n 0x8F94: 0x8AF8,\n 0x8F95: 0x52A9,\n 0x8F96: 0x53D9,\n 0x8F97: 0x5973,\n 0x8F98: 0x5E8F,\n 0x8F99: 0x5F90,\n 0x8F9A: 0x6055,\n 0x8F9B: 0x92E4,\n 0x8F9C: 0x9664,\n 0x8F9D: 0x50B7,\n 0x8F9E: 0x511F,\n 0x8F9F: 0x52DD,\n 0x8FA0: 0x5320,\n 0x8FA1: 0x5347,\n 0x8FA2: 0x53EC,\n 0x8FA3: 0x54E8,\n 0x8FA4: 0x5546,\n 0x8FA5: 0x5531,\n 0x8FA6: 0x5617,\n 0x8FA7: 0x5968,\n 0x8FA8: 0x59BE,\n 0x8FA9: 0x5A3C,\n 0x8FAA: 0x5BB5,\n 0x8FAB: 0x5C06,\n 0x8FAC: 0x5C0F,\n 0x8FAD: 0x5C11,\n 0x8FAE: 0x5C1A,\n 0x8FAF: 0x5E84,\n 0x8FB0: 0x5E8A,\n 0x8FB1: 0x5EE0,\n 0x8FB2: 0x5F70,\n 0x8FB3: 0x627F,\n 0x8FB4: 0x6284,\n 0x8FB5: 0x62DB,\n 0x8FB6: 0x638C,\n 0x8FB7: 0x6377,\n 0x8FB8: 0x6607,\n 0x8FB9: 0x660C,\n 0x8FBA: 0x662D,\n 0x8FBB: 0x6676,\n 0x8FBC: 0x677E,\n 0x8FBD: 0x68A2,\n 0x8FBE: 0x6A1F,\n 0x8FBF: 0x6A35,\n 0x8FC0: 0x6CBC,\n 0x8FC1: 0x6D88,\n 0x8FC2: 0x6E09,\n 0x8FC3: 0x6E58,\n 0x8FC4: 0x713C,\n 0x8FC5: 0x7126,\n 0x8FC6: 0x7167,\n 0x8FC7: 0x75C7,\n 0x8FC8: 0x7701,\n 0x8FC9: 0x785D,\n 0x8FCA: 0x7901,\n 0x8FCB: 0x7965,\n 0x8FCC: 0x79F0,\n 0x8FCD: 0x7AE0,\n 0x8FCE: 0x7B11,\n 0x8FCF: 0x7CA7,\n 0x8FD0: 0x7D39,\n 0x8FD1: 0x8096,\n 0x8FD2: 0x83D6,\n 0x8FD3: 0x848B,\n 0x8FD4: 0x8549,\n 0x8FD5: 0x885D,\n 0x8FD6: 0x88F3,\n 0x8FD7: 0x8A1F,\n 0x8FD8: 0x8A3C,\n 0x8FD9: 0x8A54,\n 0x8FDA: 0x8A73,\n 0x8FDB: 0x8C61,\n 0x8FDC: 0x8CDE,\n 0x8FDD: 0x91A4,\n 0x8FDE: 0x9266,\n 0x8FDF: 0x937E,\n 0x8FE0: 0x9418,\n 0x8FE1: 0x969C,\n 0x8FE2: 0x9798,\n 0x8FE3: 0x4E0A,\n 0x8FE4: 0x4E08,\n 0x8FE5: 0x4E1E,\n 0x8FE6: 0x4E57,\n 0x8FE7: 0x5197,\n 0x8FE8: 0x5270,\n 0x8FE9: 0x57CE,\n 0x8FEA: 0x5834,\n 0x8FEB: 0x58CC,\n 0x8FEC: 0x5B22,\n 0x8FED: 0x5E38,\n 0x8FEE: 0x60C5,\n 0x8FEF: 0x64FE,\n 0x8FF0: 0x6761,\n 0x8FF1: 0x6756,\n 0x8FF2: 0x6D44,\n 0x8FF3: 0x72B6,\n 0x8FF4: 0x7573,\n 0x8FF5: 0x7A63,\n 0x8FF6: 0x84B8,\n 0x8FF7: 0x8B72,\n 0x8FF8: 0x91B8,\n 0x8FF9: 0x9320,\n 0x8FFA: 0x5631,\n 0x8FFB: 0x57F4,\n 0x8FFC: 0x98FE,\n 0x9040: 0x62ED,\n 0x9041: 0x690D,\n 0x9042: 0x6B96,\n 0x9043: 0x71ED,\n 0x9044: 0x7E54,\n 0x9045: 0x8077,\n 0x9046: 0x8272,\n 0x9047: 0x89E6,\n 0x9048: 0x98DF,\n 0x9049: 0x8755,\n 0x904A: 0x8FB1,\n 0x904B: 0x5C3B,\n 0x904C: 0x4F38,\n 0x904D: 0x4FE1,\n 0x904E: 0x4FB5,\n 0x904F: 0x5507,\n 0x9050: 0x5A20,\n 0x9051: 0x5BDD,\n 0x9052: 0x5BE9,\n 0x9053: 0x5FC3,\n 0x9054: 0x614E,\n 0x9055: 0x632F,\n 0x9056: 0x65B0,\n 0x9057: 0x664B,\n 0x9058: 0x68EE,\n 0x9059: 0x699B,\n 0x905A: 0x6D78,\n 0x905B: 0x6DF1,\n 0x905C: 0x7533,\n 0x905D: 0x75B9,\n 0x905E: 0x771F,\n 0x905F: 0x795E,\n 0x9060: 0x79E6,\n 0x9061: 0x7D33,\n 0x9062: 0x81E3,\n 0x9063: 0x82AF,\n 0x9064: 0x85AA,\n 0x9065: 0x89AA,\n 0x9066: 0x8A3A,\n 0x9067: 0x8EAB,\n 0x9068: 0x8F9B,\n 0x9069: 0x9032,\n 0x906A: 0x91DD,\n 0x906B: 0x9707,\n 0x906C: 0x4EBA,\n 0x906D: 0x4EC1,\n 0x906E: 0x5203,\n 0x906F: 0x5875,\n 0x9070: 0x58EC,\n 0x9071: 0x5C0B,\n 0x9072: 0x751A,\n 0x9073: 0x5C3D,\n 0x9074: 0x814E,\n 0x9075: 0x8A0A,\n 0x9076: 0x8FC5,\n 0x9077: 0x9663,\n 0x9078: 0x976D,\n 0x9079: 0x7B25,\n 0x907A: 0x8ACF,\n 0x907B: 0x9808,\n 0x907C: 0x9162,\n 0x907D: 0x56F3,\n 0x907E: 0x53A8,\n 0x9080: 0x9017,\n 0x9081: 0x5439,\n 0x9082: 0x5782,\n 0x9083: 0x5E25,\n 0x9084: 0x63A8,\n 0x9085: 0x6C34,\n 0x9086: 0x708A,\n 0x9087: 0x7761,\n 0x9088: 0x7C8B,\n 0x9089: 0x7FE0,\n 0x908A: 0x8870,\n 0x908B: 0x9042,\n 0x908C: 0x9154,\n 0x908D: 0x9310,\n 0x908E: 0x9318,\n 0x908F: 0x968F,\n 0x9090: 0x745E,\n 0x9091: 0x9AC4,\n 0x9092: 0x5D07,\n 0x9093: 0x5D69,\n 0x9094: 0x6570,\n 0x9095: 0x67A2,\n 0x9096: 0x8DA8,\n 0x9097: 0x96DB,\n 0x9098: 0x636E,\n 0x9099: 0x6749,\n 0x909A: 0x6919,\n 0x909B: 0x83C5,\n 0x909C: 0x9817,\n 0x909D: 0x96C0,\n 0x909E: 0x88FE,\n 0x909F: 0x6F84,\n 0x90A0: 0x647A,\n 0x90A1: 0x5BF8,\n 0x90A2: 0x4E16,\n 0x90A3: 0x702C,\n 0x90A4: 0x755D,\n 0x90A5: 0x662F,\n 0x90A6: 0x51C4,\n 0x90A7: 0x5236,\n 0x90A8: 0x52E2,\n 0x90A9: 0x59D3,\n 0x90AA: 0x5F81,\n 0x90AB: 0x6027,\n 0x90AC: 0x6210,\n 0x90AD: 0x653F,\n 0x90AE: 0x6574,\n 0x90AF: 0x661F,\n 0x90B0: 0x6674,\n 0x90B1: 0x68F2,\n 0x90B2: 0x6816,\n 0x90B3: 0x6B63,\n 0x90B4: 0x6E05,\n 0x90B5: 0x7272,\n 0x90B6: 0x751F,\n 0x90B7: 0x76DB,\n 0x90B8: 0x7CBE,\n 0x90B9: 0x8056,\n 0x90BA: 0x58F0,\n 0x90BB: 0x88FD,\n 0x90BC: 0x897F,\n 0x90BD: 0x8AA0,\n 0x90BE: 0x8A93,\n 0x90BF: 0x8ACB,\n 0x90C0: 0x901D,\n 0x90C1: 0x9192,\n 0x90C2: 0x9752,\n 0x90C3: 0x9759,\n 0x90C4: 0x6589,\n 0x90C5: 0x7A0E,\n 0x90C6: 0x8106,\n 0x90C7: 0x96BB,\n 0x90C8: 0x5E2D,\n 0x90C9: 0x60DC,\n 0x90CA: 0x621A,\n 0x90CB: 0x65A5,\n 0x90CC: 0x6614,\n 0x90CD: 0x6790,\n 0x90CE: 0x77F3,\n 0x90CF: 0x7A4D,\n 0x90D0: 0x7C4D,\n 0x90D1: 0x7E3E,\n 0x90D2: 0x810A,\n 0x90D3: 0x8CAC,\n 0x90D4: 0x8D64,\n 0x90D5: 0x8DE1,\n 0x90D6: 0x8E5F,\n 0x90D7: 0x78A9,\n 0x90D8: 0x5207,\n 0x90D9: 0x62D9,\n 0x90DA: 0x63A5,\n 0x90DB: 0x6442,\n 0x90DC: 0x6298,\n 0x90DD: 0x8A2D,\n 0x90DE: 0x7A83,\n 0x90DF: 0x7BC0,\n 0x90E0: 0x8AAC,\n 0x90E1: 0x96EA,\n 0x90E2: 0x7D76,\n 0x90E3: 0x820C,\n 0x90E4: 0x8749,\n 0x90E5: 0x4ED9,\n 0x90E6: 0x5148,\n 0x90E7: 0x5343,\n 0x90E8: 0x5360,\n 0x90E9: 0x5BA3,\n 0x90EA: 0x5C02,\n 0x90EB: 0x5C16,\n 0x90EC: 0x5DDD,\n 0x90ED: 0x6226,\n 0x90EE: 0x6247,\n 0x90EF: 0x64B0,\n 0x90F0: 0x6813,\n 0x90F1: 0x6834,\n 0x90F2: 0x6CC9,\n 0x90F3: 0x6D45,\n 0x90F4: 0x6D17,\n 0x90F5: 0x67D3,\n 0x90F6: 0x6F5C,\n 0x90F7: 0x714E,\n 0x90F8: 0x717D,\n 0x90F9: 0x65CB,\n 0x90FA: 0x7A7F,\n 0x90FB: 0x7BAD,\n 0x90FC: 0x7DDA,\n 0x9140: 0x7E4A,\n 0x9141: 0x7FA8,\n 0x9142: 0x817A,\n 0x9143: 0x821B,\n 0x9144: 0x8239,\n 0x9145: 0x85A6,\n 0x9146: 0x8A6E,\n 0x9147: 0x8CCE,\n 0x9148: 0x8DF5,\n 0x9149: 0x9078,\n 0x914A: 0x9077,\n 0x914B: 0x92AD,\n 0x914C: 0x9291,\n 0x914D: 0x9583,\n 0x914E: 0x9BAE,\n 0x914F: 0x524D,\n 0x9150: 0x5584,\n 0x9151: 0x6F38,\n 0x9152: 0x7136,\n 0x9153: 0x5168,\n 0x9154: 0x7985,\n 0x9155: 0x7E55,\n 0x9156: 0x81B3,\n 0x9157: 0x7CCE,\n 0x9158: 0x564C,\n 0x9159: 0x5851,\n 0x915A: 0x5CA8,\n 0x915B: 0x63AA,\n 0x915C: 0x66FE,\n 0x915D: 0x66FD,\n 0x915E: 0x695A,\n 0x915F: 0x72D9,\n 0x9160: 0x758F,\n 0x9161: 0x758E,\n 0x9162: 0x790E,\n 0x9163: 0x7956,\n 0x9164: 0x79DF,\n 0x9165: 0x7C97,\n 0x9166: 0x7D20,\n 0x9167: 0x7D44,\n 0x9168: 0x8607,\n 0x9169: 0x8A34,\n 0x916A: 0x963B,\n 0x916B: 0x9061,\n 0x916C: 0x9F20,\n 0x916D: 0x50E7,\n 0x916E: 0x5275,\n 0x916F: 0x53CC,\n 0x9170: 0x53E2,\n 0x9171: 0x5009,\n 0x9172: 0x55AA,\n 0x9173: 0x58EE,\n 0x9174: 0x594F,\n 0x9175: 0x723D,\n 0x9176: 0x5B8B,\n 0x9177: 0x5C64,\n 0x9178: 0x531D,\n 0x9179: 0x60E3,\n 0x917A: 0x60F3,\n 0x917B: 0x635C,\n 0x917C: 0x6383,\n 0x917D: 0x633F,\n 0x917E: 0x63BB,\n 0x9180: 0x64CD,\n 0x9181: 0x65E9,\n 0x9182: 0x66F9,\n 0x9183: 0x5DE3,\n 0x9184: 0x69CD,\n 0x9185: 0x69FD,\n 0x9186: 0x6F15,\n 0x9187: 0x71E5,\n 0x9188: 0x4E89,\n 0x9189: 0x75E9,\n 0x918A: 0x76F8,\n 0x918B: 0x7A93,\n 0x918C: 0x7CDF,\n 0x918D: 0x7DCF,\n 0x918E: 0x7D9C,\n 0x918F: 0x8061,\n 0x9190: 0x8349,\n 0x9191: 0x8358,\n 0x9192: 0x846C,\n 0x9193: 0x84BC,\n 0x9194: 0x85FB,\n 0x9195: 0x88C5,\n 0x9196: 0x8D70,\n 0x9197: 0x9001,\n 0x9198: 0x906D,\n 0x9199: 0x9397,\n 0x919A: 0x971C,\n 0x919B: 0x9A12,\n 0x919C: 0x50CF,\n 0x919D: 0x5897,\n 0x919E: 0x618E,\n 0x919F: 0x81D3,\n 0x91A0: 0x8535,\n 0x91A1: 0x8D08,\n 0x91A2: 0x9020,\n 0x91A3: 0x4FC3,\n 0x91A4: 0x5074,\n 0x91A5: 0x5247,\n 0x91A6: 0x5373,\n 0x91A7: 0x606F,\n 0x91A8: 0x6349,\n 0x91A9: 0x675F,\n 0x91AA: 0x6E2C,\n 0x91AB: 0x8DB3,\n 0x91AC: 0x901F,\n 0x91AD: 0x4FD7,\n 0x91AE: 0x5C5E,\n 0x91AF: 0x8CCA,\n 0x91B0: 0x65CF,\n 0x91B1: 0x7D9A,\n 0x91B2: 0x5352,\n 0x91B3: 0x8896,\n 0x91B4: 0x5176,\n 0x91B5: 0x63C3,\n 0x91B6: 0x5B58,\n 0x91B7: 0x5B6B,\n 0x91B8: 0x5C0A,\n 0x91B9: 0x640D,\n 0x91BA: 0x6751,\n 0x91BB: 0x905C,\n 0x91BC: 0x4ED6,\n 0x91BD: 0x591A,\n 0x91BE: 0x592A,\n 0x91BF: 0x6C70,\n 0x91C0: 0x8A51,\n 0x91C1: 0x553E,\n 0x91C2: 0x5815,\n 0x91C3: 0x59A5,\n 0x91C4: 0x60F0,\n 0x91C5: 0x6253,\n 0x91C6: 0x67C1,\n 0x91C7: 0x8235,\n 0x91C8: 0x6955,\n 0x91C9: 0x9640,\n 0x91CA: 0x99C4,\n 0x91CB: 0x9A28,\n 0x91CC: 0x4F53,\n 0x91CD: 0x5806,\n 0x91CE: 0x5BFE,\n 0x91CF: 0x8010,\n 0x91D0: 0x5CB1,\n 0x91D1: 0x5E2F,\n 0x91D2: 0x5F85,\n 0x91D3: 0x6020,\n 0x91D4: 0x614B,\n 0x91D5: 0x6234,\n 0x91D6: 0x66FF,\n 0x91D7: 0x6CF0,\n 0x91D8: 0x6EDE,\n 0x91D9: 0x80CE,\n 0x91DA: 0x817F,\n 0x91DB: 0x82D4,\n 0x91DC: 0x888B,\n 0x91DD: 0x8CB8,\n 0x91DE: 0x9000,\n 0x91DF: 0x902E,\n 0x91E0: 0x968A,\n 0x91E1: 0x9EDB,\n 0x91E2: 0x9BDB,\n 0x91E3: 0x4EE3,\n 0x91E4: 0x53F0,\n 0x91E5: 0x5927,\n 0x91E6: 0x7B2C,\n 0x91E7: 0x918D,\n 0x91E8: 0x984C,\n 0x91E9: 0x9DF9,\n 0x91EA: 0x6EDD,\n 0x91EB: 0x7027,\n 0x91EC: 0x5353,\n 0x91ED: 0x5544,\n 0x91EE: 0x5B85,\n 0x91EF: 0x6258,\n 0x91F0: 0x629E,\n 0x91F1: 0x62D3,\n 0x91F2: 0x6CA2,\n 0x91F3: 0x6FEF,\n 0x91F4: 0x7422,\n 0x91F5: 0x8A17,\n 0x91F6: 0x9438,\n 0x91F7: 0x6FC1,\n 0x91F8: 0x8AFE,\n 0x91F9: 0x8338,\n 0x91FA: 0x51E7,\n 0x91FB: 0x86F8,\n 0x91FC: 0x53EA,\n 0x9240: 0x53E9,\n 0x9241: 0x4F46,\n 0x9242: 0x9054,\n 0x9243: 0x8FB0,\n 0x9244: 0x596A,\n 0x9245: 0x8131,\n 0x9246: 0x5DFD,\n 0x9247: 0x7AEA,\n 0x9248: 0x8FBF,\n 0x9249: 0x68DA,\n 0x924A: 0x8C37,\n 0x924B: 0x72F8,\n 0x924C: 0x9C48,\n 0x924D: 0x6A3D,\n 0x924E: 0x8AB0,\n 0x924F: 0x4E39,\n 0x9250: 0x5358,\n 0x9251: 0x5606,\n 0x9252: 0x5766,\n 0x9253: 0x62C5,\n 0x9254: 0x63A2,\n 0x9255: 0x65E6,\n 0x9256: 0x6B4E,\n 0x9257: 0x6DE1,\n 0x9258: 0x6E5B,\n 0x9259: 0x70AD,\n 0x925A: 0x77ED,\n 0x925B: 0x7AEF,\n 0x925C: 0x7BAA,\n 0x925D: 0x7DBB,\n 0x925E: 0x803D,\n 0x925F: 0x80C6,\n 0x9260: 0x86CB,\n 0x9261: 0x8A95,\n 0x9262: 0x935B,\n 0x9263: 0x56E3,\n 0x9264: 0x58C7,\n 0x9265: 0x5F3E,\n 0x9266: 0x65AD,\n 0x9267: 0x6696,\n 0x9268: 0x6A80,\n 0x9269: 0x6BB5,\n 0x926A: 0x7537,\n 0x926B: 0x8AC7,\n 0x926C: 0x5024,\n 0x926D: 0x77E5,\n 0x926E: 0x5730,\n 0x926F: 0x5F1B,\n 0x9270: 0x6065,\n 0x9271: 0x667A,\n 0x9272: 0x6C60,\n 0x9273: 0x75F4,\n 0x9274: 0x7A1A,\n 0x9275: 0x7F6E,\n 0x9276: 0x81F4,\n 0x9277: 0x8718,\n 0x9278: 0x9045,\n 0x9279: 0x99B3,\n 0x927A: 0x7BC9,\n 0x927B: 0x755C,\n 0x927C: 0x7AF9,\n 0x927D: 0x7B51,\n 0x927E: 0x84C4,\n 0x9280: 0x9010,\n 0x9281: 0x79E9,\n 0x9282: 0x7A92,\n 0x9283: 0x8336,\n 0x9284: 0x5AE1,\n 0x9285: 0x7740,\n 0x9286: 0x4E2D,\n 0x9287: 0x4EF2,\n 0x9288: 0x5B99,\n 0x9289: 0x5FE0,\n 0x928A: 0x62BD,\n 0x928B: 0x663C,\n 0x928C: 0x67F1,\n 0x928D: 0x6CE8,\n 0x928E: 0x866B,\n 0x928F: 0x8877,\n 0x9290: 0x8A3B,\n 0x9291: 0x914E,\n 0x9292: 0x92F3,\n 0x9293: 0x99D0,\n 0x9294: 0x6A17,\n 0x9295: 0x7026,\n 0x9296: 0x732A,\n 0x9297: 0x82E7,\n 0x9298: 0x8457,\n 0x9299: 0x8CAF,\n 0x929A: 0x4E01,\n 0x929B: 0x5146,\n 0x929C: 0x51CB,\n 0x929D: 0x558B,\n 0x929E: 0x5BF5,\n 0x929F: 0x5E16,\n 0x92A0: 0x5E33,\n 0x92A1: 0x5E81,\n 0x92A2: 0x5F14,\n 0x92A3: 0x5F35,\n 0x92A4: 0x5F6B,\n 0x92A5: 0x5FB4,\n 0x92A6: 0x61F2,\n 0x92A7: 0x6311,\n 0x92A8: 0x66A2,\n 0x92A9: 0x671D,\n 0x92AA: 0x6F6E,\n 0x92AB: 0x7252,\n 0x92AC: 0x753A,\n 0x92AD: 0x773A,\n 0x92AE: 0x8074,\n 0x92AF: 0x8139,\n 0x92B0: 0x8178,\n 0x92B1: 0x8776,\n 0x92B2: 0x8ABF,\n 0x92B3: 0x8ADC,\n 0x92B4: 0x8D85,\n 0x92B5: 0x8DF3,\n 0x92B6: 0x929A,\n 0x92B7: 0x9577,\n 0x92B8: 0x9802,\n 0x92B9: 0x9CE5,\n 0x92BA: 0x52C5,\n 0x92BB: 0x6357,\n 0x92BC: 0x76F4,\n 0x92BD: 0x6715,\n 0x92BE: 0x6C88,\n 0x92BF: 0x73CD,\n 0x92C0: 0x8CC3,\n 0x92C1: 0x93AE,\n 0x92C2: 0x9673,\n 0x92C3: 0x6D25,\n 0x92C4: 0x589C,\n 0x92C5: 0x690E,\n 0x92C6: 0x69CC,\n 0x92C7: 0x8FFD,\n 0x92C8: 0x939A,\n 0x92C9: 0x75DB,\n 0x92CA: 0x901A,\n 0x92CB: 0x585A,\n 0x92CC: 0x6802,\n 0x92CD: 0x63B4,\n 0x92CE: 0x69FB,\n 0x92CF: 0x4F43,\n 0x92D0: 0x6F2C,\n 0x92D1: 0x67D8,\n 0x92D2: 0x8FBB,\n 0x92D3: 0x8526,\n 0x92D4: 0x7DB4,\n 0x92D5: 0x9354,\n 0x92D6: 0x693F,\n 0x92D7: 0x6F70,\n 0x92D8: 0x576A,\n 0x92D9: 0x58F7,\n 0x92DA: 0x5B2C,\n 0x92DB: 0x7D2C,\n 0x92DC: 0x722A,\n 0x92DD: 0x540A,\n 0x92DE: 0x91E3,\n 0x92DF: 0x9DB4,\n 0x92E0: 0x4EAD,\n 0x92E1: 0x4F4E,\n 0x92E2: 0x505C,\n 0x92E3: 0x5075,\n 0x92E4: 0x5243,\n 0x92E5: 0x8C9E,\n 0x92E6: 0x5448,\n 0x92E7: 0x5824,\n 0x92E8: 0x5B9A,\n 0x92E9: 0x5E1D,\n 0x92EA: 0x5E95,\n 0x92EB: 0x5EAD,\n 0x92EC: 0x5EF7,\n 0x92ED: 0x5F1F,\n 0x92EE: 0x608C,\n 0x92EF: 0x62B5,\n 0x92F0: 0x633A,\n 0x92F1: 0x63D0,\n 0x92F2: 0x68AF,\n 0x92F3: 0x6C40,\n 0x92F4: 0x7887,\n 0x92F5: 0x798E,\n 0x92F6: 0x7A0B,\n 0x92F7: 0x7DE0,\n 0x92F8: 0x8247,\n 0x92F9: 0x8A02,\n 0x92FA: 0x8AE6,\n 0x92FB: 0x8E44,\n 0x92FC: 0x9013,\n 0x9340: 0x90B8,\n 0x9341: 0x912D,\n 0x9342: 0x91D8,\n 0x9343: 0x9F0E,\n 0x9344: 0x6CE5,\n 0x9345: 0x6458,\n 0x9346: 0x64E2,\n 0x9347: 0x6575,\n 0x9348: 0x6EF4,\n 0x9349: 0x7684,\n 0x934A: 0x7B1B,\n 0x934B: 0x9069,\n 0x934C: 0x93D1,\n 0x934D: 0x6EBA,\n 0x934E: 0x54F2,\n 0x934F: 0x5FB9,\n 0x9350: 0x64A4,\n 0x9351: 0x8F4D,\n 0x9352: 0x8FED,\n 0x9353: 0x9244,\n 0x9354: 0x5178,\n 0x9355: 0x586B,\n 0x9356: 0x5929,\n 0x9357: 0x5C55,\n 0x9358: 0x5E97,\n 0x9359: 0x6DFB,\n 0x935A: 0x7E8F,\n 0x935B: 0x751C,\n 0x935C: 0x8CBC,\n 0x935D: 0x8EE2,\n 0x935E: 0x985B,\n 0x935F: 0x70B9,\n 0x9360: 0x4F1D,\n 0x9361: 0x6BBF,\n 0x9362: 0x6FB1,\n 0x9363: 0x7530,\n 0x9364: 0x96FB,\n 0x9365: 0x514E,\n 0x9366: 0x5410,\n 0x9367: 0x5835,\n 0x9368: 0x5857,\n 0x9369: 0x59AC,\n 0x936A: 0x5C60,\n 0x936B: 0x5F92,\n 0x936C: 0x6597,\n 0x936D: 0x675C,\n 0x936E: 0x6E21,\n 0x936F: 0x767B,\n 0x9370: 0x83DF,\n 0x9371: 0x8CED,\n 0x9372: 0x9014,\n 0x9373: 0x90FD,\n 0x9374: 0x934D,\n 0x9375: 0x7825,\n 0x9376: 0x783A,\n 0x9377: 0x52AA,\n 0x9378: 0x5EA6,\n 0x9379: 0x571F,\n 0x937A: 0x5974,\n 0x937B: 0x6012,\n 0x937C: 0x5012,\n 0x937D: 0x515A,\n 0x937E: 0x51AC,\n 0x9380: 0x51CD,\n 0x9381: 0x5200,\n 0x9382: 0x5510,\n 0x9383: 0x5854,\n 0x9384: 0x5858,\n 0x9385: 0x5957,\n 0x9386: 0x5B95,\n 0x9387: 0x5CF6,\n 0x9388: 0x5D8B,\n 0x9389: 0x60BC,\n 0x938A: 0x6295,\n 0x938B: 0x642D,\n 0x938C: 0x6771,\n 0x938D: 0x6843,\n 0x938E: 0x68BC,\n 0x938F: 0x68DF,\n 0x9390: 0x76D7,\n 0x9391: 0x6DD8,\n 0x9392: 0x6E6F,\n 0x9393: 0x6D9B,\n 0x9394: 0x706F,\n 0x9395: 0x71C8,\n 0x9396: 0x5F53,\n 0x9397: 0x75D8,\n 0x9398: 0x7977,\n 0x9399: 0x7B49,\n 0x939A: 0x7B54,\n 0x939B: 0x7B52,\n 0x939C: 0x7CD6,\n 0x939D: 0x7D71,\n 0x939E: 0x5230,\n 0x939F: 0x8463,\n 0x93A0: 0x8569,\n 0x93A1: 0x85E4,\n 0x93A2: 0x8A0E,\n 0x93A3: 0x8B04,\n 0x93A4: 0x8C46,\n 0x93A5: 0x8E0F,\n 0x93A6: 0x9003,\n 0x93A7: 0x900F,\n 0x93A8: 0x9419,\n 0x93A9: 0x9676,\n 0x93AA: 0x982D,\n 0x93AB: 0x9A30,\n 0x93AC: 0x95D8,\n 0x93AD: 0x50CD,\n 0x93AE: 0x52D5,\n 0x93AF: 0x540C,\n 0x93B0: 0x5802,\n 0x93B1: 0x5C0E,\n 0x93B2: 0x61A7,\n 0x93B3: 0x649E,\n 0x93B4: 0x6D1E,\n 0x93B5: 0x77B3,\n 0x93B6: 0x7AE5,\n 0x93B7: 0x80F4,\n 0x93B8: 0x8404,\n 0x93B9: 0x9053,\n 0x93BA: 0x9285,\n 0x93BB: 0x5CE0,\n 0x93BC: 0x9D07,\n 0x93BD: 0x533F,\n 0x93BE: 0x5F97,\n 0x93BF: 0x5FB3,\n 0x93C0: 0x6D9C,\n 0x93C1: 0x7279,\n 0x93C2: 0x7763,\n 0x93C3: 0x79BF,\n 0x93C4: 0x7BE4,\n 0x93C5: 0x6BD2,\n 0x93C6: 0x72EC,\n 0x93C7: 0x8AAD,\n 0x93C8: 0x6803,\n 0x93C9: 0x6A61,\n 0x93CA: 0x51F8,\n 0x93CB: 0x7A81,\n 0x93CC: 0x6934,\n 0x93CD: 0x5C4A,\n 0x93CE: 0x9CF6,\n 0x93CF: 0x82EB,\n 0x93D0: 0x5BC5,\n 0x93D1: 0x9149,\n 0x93D2: 0x701E,\n 0x93D3: 0x5678,\n 0x93D4: 0x5C6F,\n 0x93D5: 0x60C7,\n 0x93D6: 0x6566,\n 0x93D7: 0x6C8C,\n 0x93D8: 0x8C5A,\n 0x93D9: 0x9041,\n 0x93DA: 0x9813,\n 0x93DB: 0x5451,\n 0x93DC: 0x66C7,\n 0x93DD: 0x920D,\n 0x93DE: 0x5948,\n 0x93DF: 0x90A3,\n 0x93E0: 0x5185,\n 0x93E1: 0x4E4D,\n 0x93E2: 0x51EA,\n 0x93E3: 0x8599,\n 0x93E4: 0x8B0E,\n 0x93E5: 0x7058,\n 0x93E6: 0x637A,\n 0x93E7: 0x934B,\n 0x93E8: 0x6962,\n 0x93E9: 0x99B4,\n 0x93EA: 0x7E04,\n 0x93EB: 0x7577,\n 0x93EC: 0x5357,\n 0x93ED: 0x6960,\n 0x93EE: 0x8EDF,\n 0x93EF: 0x96E3,\n 0x93F0: 0x6C5D,\n 0x93F1: 0x4E8C,\n 0x93F2: 0x5C3C,\n 0x93F3: 0x5F10,\n 0x93F4: 0x8FE9,\n 0x93F5: 0x5302,\n 0x93F6: 0x8CD1,\n 0x93F7: 0x8089,\n 0x93F8: 0x8679,\n 0x93F9: 0x5EFF,\n 0x93FA: 0x65E5,\n 0x93FB: 0x4E73,\n 0x93FC: 0x5165,\n 0x9440: 0x5982,\n 0x9441: 0x5C3F,\n 0x9442: 0x97EE,\n 0x9443: 0x4EFB,\n 0x9444: 0x598A,\n 0x9445: 0x5FCD,\n 0x9446: 0x8A8D,\n 0x9447: 0x6FE1,\n 0x9448: 0x79B0,\n 0x9449: 0x7962,\n 0x944A: 0x5BE7,\n 0x944B: 0x8471,\n 0x944C: 0x732B,\n 0x944D: 0x71B1,\n 0x944E: 0x5E74,\n 0x944F: 0x5FF5,\n 0x9450: 0x637B,\n 0x9451: 0x649A,\n 0x9452: 0x71C3,\n 0x9453: 0x7C98,\n 0x9454: 0x4E43,\n 0x9455: 0x5EFC,\n 0x9456: 0x4E4B,\n 0x9457: 0x57DC,\n 0x9458: 0x56A2,\n 0x9459: 0x60A9,\n 0x945A: 0x6FC3,\n 0x945B: 0x7D0D,\n 0x945C: 0x80FD,\n 0x945D: 0x8133,\n 0x945E: 0x81BF,\n 0x945F: 0x8FB2,\n 0x9460: 0x8997,\n 0x9461: 0x86A4,\n 0x9462: 0x5DF4,\n 0x9463: 0x628A,\n 0x9464: 0x64AD,\n 0x9465: 0x8987,\n 0x9466: 0x6777,\n 0x9467: 0x6CE2,\n 0x9468: 0x6D3E,\n 0x9469: 0x7436,\n 0x946A: 0x7834,\n 0x946B: 0x5A46,\n 0x946C: 0x7F75,\n 0x946D: 0x82AD,\n 0x946E: 0x99AC,\n 0x946F: 0x4FF3,\n 0x9470: 0x5EC3,\n 0x9471: 0x62DD,\n 0x9472: 0x6392,\n 0x9473: 0x6557,\n 0x9474: 0x676F,\n 0x9475: 0x76C3,\n 0x9476: 0x724C,\n 0x9477: 0x80CC,\n 0x9478: 0x80BA,\n 0x9479: 0x8F29,\n 0x947A: 0x914D,\n 0x947B: 0x500D,\n 0x947C: 0x57F9,\n 0x947D: 0x5A92,\n 0x947E: 0x6885,\n 0x9480: 0x6973,\n 0x9481: 0x7164,\n 0x9482: 0x72FD,\n 0x9483: 0x8CB7,\n 0x9484: 0x58F2,\n 0x9485: 0x8CE0,\n 0x9486: 0x966A,\n 0x9487: 0x9019,\n 0x9488: 0x877F,\n 0x9489: 0x79E4,\n 0x948A: 0x77E7,\n 0x948B: 0x8429,\n 0x948C: 0x4F2F,\n 0x948D: 0x5265,\n 0x948E: 0x535A,\n 0x948F: 0x62CD,\n 0x9490: 0x67CF,\n 0x9491: 0x6CCA,\n 0x9492: 0x767D,\n 0x9493: 0x7B94,\n 0x9494: 0x7C95,\n 0x9495: 0x8236,\n 0x9496: 0x8584,\n 0x9497: 0x8FEB,\n 0x9498: 0x66DD,\n 0x9499: 0x6F20,\n 0x949A: 0x7206,\n 0x949B: 0x7E1B,\n 0x949C: 0x83AB,\n 0x949D: 0x99C1,\n 0x949E: 0x9EA6,\n 0x949F: 0x51FD,\n 0x94A0: 0x7BB1,\n 0x94A1: 0x7872,\n 0x94A2: 0x7BB8,\n 0x94A3: 0x8087,\n 0x94A4: 0x7B48,\n 0x94A5: 0x6AE8,\n 0x94A6: 0x5E61,\n 0x94A7: 0x808C,\n 0x94A8: 0x7551,\n 0x94A9: 0x7560,\n 0x94AA: 0x516B,\n 0x94AB: 0x9262,\n 0x94AC: 0x6E8C,\n 0x94AD: 0x767A,\n 0x94AE: 0x9197,\n 0x94AF: 0x9AEA,\n 0x94B0: 0x4F10,\n 0x94B1: 0x7F70,\n 0x94B2: 0x629C,\n 0x94B3: 0x7B4F,\n 0x94B4: 0x95A5,\n 0x94B5: 0x9CE9,\n 0x94B6: 0x567A,\n 0x94B7: 0x5859,\n 0x94B8: 0x86E4,\n 0x94B9: 0x96BC,\n 0x94BA: 0x4F34,\n 0x94BB: 0x5224,\n 0x94BC: 0x534A,\n 0x94BD: 0x53CD,\n 0x94BE: 0x53DB,\n 0x94BF: 0x5E06,\n 0x94C0: 0x642C,\n 0x94C1: 0x6591,\n 0x94C2: 0x677F,\n 0x94C3: 0x6C3E,\n 0x94C4: 0x6C4E,\n 0x94C5: 0x7248,\n 0x94C6: 0x72AF,\n 0x94C7: 0x73ED,\n 0x94C8: 0x7554,\n 0x94C9: 0x7E41,\n 0x94CA: 0x822C,\n 0x94CB: 0x85E9,\n 0x94CC: 0x8CA9,\n 0x94CD: 0x7BC4,\n 0x94CE: 0x91C6,\n 0x94CF: 0x7169,\n 0x94D0: 0x9812,\n 0x94D1: 0x98EF,\n 0x94D2: 0x633D,\n 0x94D3: 0x6669,\n 0x94D4: 0x756A,\n 0x94D5: 0x76E4,\n 0x94D6: 0x78D0,\n 0x94D7: 0x8543,\n 0x94D8: 0x86EE,\n 0x94D9: 0x532A,\n 0x94DA: 0x5351,\n 0x94DB: 0x5426,\n 0x94DC: 0x5983,\n 0x94DD: 0x5E87,\n 0x94DE: 0x5F7C,\n 0x94DF: 0x60B2,\n 0x94E0: 0x6249,\n 0x94E1: 0x6279,\n 0x94E2: 0x62AB,\n 0x94E3: 0x6590,\n 0x94E4: 0x6BD4,\n 0x94E5: 0x6CCC,\n 0x94E6: 0x75B2,\n 0x94E7: 0x76AE,\n 0x94E8: 0x7891,\n 0x94E9: 0x79D8,\n 0x94EA: 0x7DCB,\n 0x94EB: 0x7F77,\n 0x94EC: 0x80A5,\n 0x94ED: 0x88AB,\n 0x94EE: 0x8AB9,\n 0x94EF: 0x8CBB,\n 0x94F0: 0x907F,\n 0x94F1: 0x975E,\n 0x94F2: 0x98DB,\n 0x94F3: 0x6A0B,\n 0x94F4: 0x7C38,\n 0x94F5: 0x5099,\n 0x94F6: 0x5C3E,\n 0x94F7: 0x5FAE,\n 0x94F8: 0x6787,\n 0x94F9: 0x6BD8,\n 0x94FA: 0x7435,\n 0x94FB: 0x7709,\n 0x94FC: 0x7F8E,\n 0x9540: 0x9F3B,\n 0x9541: 0x67CA,\n 0x9542: 0x7A17,\n 0x9543: 0x5339,\n 0x9544: 0x758B,\n 0x9545: 0x9AED,\n 0x9546: 0x5F66,\n 0x9547: 0x819D,\n 0x9548: 0x83F1,\n 0x9549: 0x8098,\n 0x954A: 0x5F3C,\n 0x954B: 0x5FC5,\n 0x954C: 0x7562,\n 0x954D: 0x7B46,\n 0x954E: 0x903C,\n 0x954F: 0x6867,\n 0x9550: 0x59EB,\n 0x9551: 0x5A9B,\n 0x9552: 0x7D10,\n 0x9553: 0x767E,\n 0x9554: 0x8B2C,\n 0x9555: 0x4FF5,\n 0x9556: 0x5F6A,\n 0x9557: 0x6A19,\n 0x9558: 0x6C37,\n 0x9559: 0x6F02,\n 0x955A: 0x74E2,\n 0x955B: 0x7968,\n 0x955C: 0x8868,\n 0x955D: 0x8A55,\n 0x955E: 0x8C79,\n 0x955F: 0x5EDF,\n 0x9560: 0x63CF,\n 0x9561: 0x75C5,\n 0x9562: 0x79D2,\n 0x9563: 0x82D7,\n 0x9564: 0x9328,\n 0x9565: 0x92F2,\n 0x9566: 0x849C,\n 0x9567: 0x86ED,\n 0x9568: 0x9C2D,\n 0x9569: 0x54C1,\n 0x956A: 0x5F6C,\n 0x956B: 0x658C,\n 0x956C: 0x6D5C,\n 0x956D: 0x7015,\n 0x956E: 0x8CA7,\n 0x956F: 0x8CD3,\n 0x9570: 0x983B,\n 0x9571: 0x654F,\n 0x9572: 0x74F6,\n 0x9573: 0x4E0D,\n 0x9574: 0x4ED8,\n 0x9575: 0x57E0,\n 0x9576: 0x592B,\n 0x9577: 0x5A66,\n 0x9578: 0x5BCC,\n 0x9579: 0x51A8,\n 0x957A: 0x5E03,\n 0x957B: 0x5E9C,\n 0x957C: 0x6016,\n 0x957D: 0x6276,\n 0x957E: 0x6577,\n 0x9580: 0x65A7,\n 0x9581: 0x666E,\n 0x9582: 0x6D6E,\n 0x9583: 0x7236,\n 0x9584: 0x7B26,\n 0x9585: 0x8150,\n 0x9586: 0x819A,\n 0x9587: 0x8299,\n 0x9588: 0x8B5C,\n 0x9589: 0x8CA0,\n 0x958A: 0x8CE6,\n 0x958B: 0x8D74,\n 0x958C: 0x961C,\n 0x958D: 0x9644,\n 0x958E: 0x4FAE,\n 0x958F: 0x64AB,\n 0x9590: 0x6B66,\n 0x9591: 0x821E,\n 0x9592: 0x8461,\n 0x9593: 0x856A,\n 0x9594: 0x90E8,\n 0x9595: 0x5C01,\n 0x9596: 0x6953,\n 0x9597: 0x98A8,\n 0x9598: 0x847A,\n 0x9599: 0x8557,\n 0x959A: 0x4F0F,\n 0x959B: 0x526F,\n 0x959C: 0x5FA9,\n 0x959D: 0x5E45,\n 0x959E: 0x670D,\n 0x959F: 0x798F,\n 0x95A0: 0x8179,\n 0x95A1: 0x8907,\n 0x95A2: 0x8986,\n 0x95A3: 0x6DF5,\n 0x95A4: 0x5F17,\n 0x95A5: 0x6255,\n 0x95A6: 0x6CB8,\n 0x95A7: 0x4ECF,\n 0x95A8: 0x7269,\n 0x95A9: 0x9B92,\n 0x95AA: 0x5206,\n 0x95AB: 0x543B,\n 0x95AC: 0x5674,\n 0x95AD: 0x58B3,\n 0x95AE: 0x61A4,\n 0x95AF: 0x626E,\n 0x95B0: 0x711A,\n 0x95B1: 0x596E,\n 0x95B2: 0x7C89,\n 0x95B3: 0x7CDE,\n 0x95B4: 0x7D1B,\n 0x95B5: 0x96F0,\n 0x95B6: 0x6587,\n 0x95B7: 0x805E,\n 0x95B8: 0x4E19,\n 0x95B9: 0x4F75,\n 0x95BA: 0x5175,\n 0x95BB: 0x5840,\n 0x95BC: 0x5E63,\n 0x95BD: 0x5E73,\n 0x95BE: 0x5F0A,\n 0x95BF: 0x67C4,\n 0x95C0: 0x4E26,\n 0x95C1: 0x853D,\n 0x95C2: 0x9589,\n 0x95C3: 0x965B,\n 0x95C4: 0x7C73,\n 0x95C5: 0x9801,\n 0x95C6: 0x50FB,\n 0x95C7: 0x58C1,\n 0x95C8: 0x7656,\n 0x95C9: 0x78A7,\n 0x95CA: 0x5225,\n 0x95CB: 0x77A5,\n 0x95CC: 0x8511,\n 0x95CD: 0x7B86,\n 0x95CE: 0x504F,\n 0x95CF: 0x5909,\n 0x95D0: 0x7247,\n 0x95D1: 0x7BC7,\n 0x95D2: 0x7DE8,\n 0x95D3: 0x8FBA,\n 0x95D4: 0x8FD4,\n 0x95D5: 0x904D,\n 0x95D6: 0x4FBF,\n 0x95D7: 0x52C9,\n 0x95D8: 0x5A29,\n 0x95D9: 0x5F01,\n 0x95DA: 0x97AD,\n 0x95DB: 0x4FDD,\n 0x95DC: 0x8217,\n 0x95DD: 0x92EA,\n 0x95DE: 0x5703,\n 0x95DF: 0x6355,\n 0x95E0: 0x6B69,\n 0x95E1: 0x752B,\n 0x95E2: 0x88DC,\n 0x95E3: 0x8F14,\n 0x95E4: 0x7A42,\n 0x95E5: 0x52DF,\n 0x95E6: 0x5893,\n 0x95E7: 0x6155,\n 0x95E8: 0x620A,\n 0x95E9: 0x66AE,\n 0x95EA: 0x6BCD,\n 0x95EB: 0x7C3F,\n 0x95EC: 0x83E9,\n 0x95ED: 0x5023,\n 0x95EE: 0x4FF8,\n 0x95EF: 0x5305,\n 0x95F0: 0x5446,\n 0x95F1: 0x5831,\n 0x95F2: 0x5949,\n 0x95F3: 0x5B9D,\n 0x95F4: 0x5CF0,\n 0x95F5: 0x5CEF,\n 0x95F6: 0x5D29,\n 0x95F7: 0x5E96,\n 0x95F8: 0x62B1,\n 0x95F9: 0x6367,\n 0x95FA: 0x653E,\n 0x95FB: 0x65B9,\n 0x95FC: 0x670B,\n 0x9640: 0x6CD5,\n 0x9641: 0x6CE1,\n 0x9642: 0x70F9,\n 0x9643: 0x7832,\n 0x9644: 0x7E2B,\n 0x9645: 0x80DE,\n 0x9646: 0x82B3,\n 0x9647: 0x840C,\n 0x9648: 0x84EC,\n 0x9649: 0x8702,\n 0x964A: 0x8912,\n 0x964B: 0x8A2A,\n 0x964C: 0x8C4A,\n 0x964D: 0x90A6,\n 0x964E: 0x92D2,\n 0x964F: 0x98FD,\n 0x9650: 0x9CF3,\n 0x9651: 0x9D6C,\n 0x9652: 0x4E4F,\n 0x9653: 0x4EA1,\n 0x9654: 0x508D,\n 0x9655: 0x5256,\n 0x9656: 0x574A,\n 0x9657: 0x59A8,\n 0x9658: 0x5E3D,\n 0x9659: 0x5FD8,\n 0x965A: 0x5FD9,\n 0x965B: 0x623F,\n 0x965C: 0x66B4,\n 0x965D: 0x671B,\n 0x965E: 0x67D0,\n 0x965F: 0x68D2,\n 0x9660: 0x5192,\n 0x9661: 0x7D21,\n 0x9662: 0x80AA,\n 0x9663: 0x81A8,\n 0x9664: 0x8B00,\n 0x9665: 0x8C8C,\n 0x9666: 0x8CBF,\n 0x9667: 0x927E,\n 0x9668: 0x9632,\n 0x9669: 0x5420,\n 0x966A: 0x982C,\n 0x966B: 0x5317,\n 0x966C: 0x50D5,\n 0x966D: 0x535C,\n 0x966E: 0x58A8,\n 0x966F: 0x64B2,\n 0x9670: 0x6734,\n 0x9671: 0x7267,\n 0x9672: 0x7766,\n 0x9673: 0x7A46,\n 0x9674: 0x91E6,\n 0x9675: 0x52C3,\n 0x9676: 0x6CA1,\n 0x9677: 0x6B86,\n 0x9678: 0x5800,\n 0x9679: 0x5E4C,\n 0x967A: 0x5954,\n 0x967B: 0x672C,\n 0x967C: 0x7FFB,\n 0x967D: 0x51E1,\n 0x967E: 0x76C6,\n 0x9680: 0x6469,\n 0x9681: 0x78E8,\n 0x9682: 0x9B54,\n 0x9683: 0x9EBB,\n 0x9684: 0x57CB,\n 0x9685: 0x59B9,\n 0x9686: 0x6627,\n 0x9687: 0x679A,\n 0x9688: 0x6BCE,\n 0x9689: 0x54E9,\n 0x968A: 0x69D9,\n 0x968B: 0x5E55,\n 0x968C: 0x819C,\n 0x968D: 0x6795,\n 0x968E: 0x9BAA,\n 0x968F: 0x67FE,\n 0x9690: 0x9C52,\n 0x9691: 0x685D,\n 0x9692: 0x4EA6,\n 0x9693: 0x4FE3,\n 0x9694: 0x53C8,\n 0x9695: 0x62B9,\n 0x9696: 0x672B,\n 0x9697: 0x6CAB,\n 0x9698: 0x8FC4,\n 0x9699: 0x4FAD,\n 0x969A: 0x7E6D,\n 0x969B: 0x9EBF,\n 0x969C: 0x4E07,\n 0x969D: 0x6162,\n 0x969E: 0x6E80,\n 0x969F: 0x6F2B,\n 0x96A0: 0x8513,\n 0x96A1: 0x5473,\n 0x96A2: 0x672A,\n 0x96A3: 0x9B45,\n 0x96A4: 0x5DF3,\n 0x96A5: 0x7B95,\n 0x96A6: 0x5CAC,\n 0x96A7: 0x5BC6,\n 0x96A8: 0x871C,\n 0x96A9: 0x6E4A,\n 0x96AA: 0x84D1,\n 0x96AB: 0x7A14,\n 0x96AC: 0x8108,\n 0x96AD: 0x5999,\n 0x96AE: 0x7C8D,\n 0x96AF: 0x6C11,\n 0x96B0: 0x7720,\n 0x96B1: 0x52D9,\n 0x96B2: 0x5922,\n 0x96B3: 0x7121,\n 0x96B4: 0x725F,\n 0x96B5: 0x77DB,\n 0x96B6: 0x9727,\n 0x96B7: 0x9D61,\n 0x96B8: 0x690B,\n 0x96B9: 0x5A7F,\n 0x96BA: 0x5A18,\n 0x96BB: 0x51A5,\n 0x96BC: 0x540D,\n 0x96BD: 0x547D,\n 0x96BE: 0x660E,\n 0x96BF: 0x76DF,\n 0x96C0: 0x8FF7,\n 0x96C1: 0x9298,\n 0x96C2: 0x9CF4,\n 0x96C3: 0x59EA,\n 0x96C4: 0x725D,\n 0x96C5: 0x6EC5,\n 0x96C6: 0x514D,\n 0x96C7: 0x68C9,\n 0x96C8: 0x7DBF,\n 0x96C9: 0x7DEC,\n 0x96CA: 0x9762,\n 0x96CB: 0x9EBA,\n 0x96CC: 0x6478,\n 0x96CD: 0x6A21,\n 0x96CE: 0x8302,\n 0x96CF: 0x5984,\n 0x96D0: 0x5B5F,\n 0x96D1: 0x6BDB,\n 0x96D2: 0x731B,\n 0x96D3: 0x76F2,\n 0x96D4: 0x7DB2,\n 0x96D5: 0x8017,\n 0x96D6: 0x8499,\n 0x96D7: 0x5132,\n 0x96D8: 0x6728,\n 0x96D9: 0x9ED9,\n 0x96DA: 0x76EE,\n 0x96DB: 0x6762,\n 0x96DC: 0x52FF,\n 0x96DD: 0x9905,\n 0x96DE: 0x5C24,\n 0x96DF: 0x623B,\n 0x96E0: 0x7C7E,\n 0x96E1: 0x8CB0,\n 0x96E2: 0x554F,\n 0x96E3: 0x60B6,\n 0x96E4: 0x7D0B,\n 0x96E5: 0x9580,\n 0x96E6: 0x5301,\n 0x96E7: 0x4E5F,\n 0x96E8: 0x51B6,\n 0x96E9: 0x591C,\n 0x96EA: 0x723A,\n 0x96EB: 0x8036,\n 0x96EC: 0x91CE,\n 0x96ED: 0x5F25,\n 0x96EE: 0x77E2,\n 0x96EF: 0x5384,\n 0x96F0: 0x5F79,\n 0x96F1: 0x7D04,\n 0x96F2: 0x85AC,\n 0x96F3: 0x8A33,\n 0x96F4: 0x8E8D,\n 0x96F5: 0x9756,\n 0x96F6: 0x67F3,\n 0x96F7: 0x85AE,\n 0x96F8: 0x9453,\n 0x96F9: 0x6109,\n 0x96FA: 0x6108,\n 0x96FB: 0x6CB9,\n 0x96FC: 0x7652,\n 0x9740: 0x8AED,\n 0x9741: 0x8F38,\n 0x9742: 0x552F,\n 0x9743: 0x4F51,\n 0x9744: 0x512A,\n 0x9745: 0x52C7,\n 0x9746: 0x53CB,\n 0x9747: 0x5BA5,\n 0x9748: 0x5E7D,\n 0x9749: 0x60A0,\n 0x974A: 0x6182,\n 0x974B: 0x63D6,\n 0x974C: 0x6709,\n 0x974D: 0x67DA,\n 0x974E: 0x6E67,\n 0x974F: 0x6D8C,\n 0x9750: 0x7336,\n 0x9751: 0x7337,\n 0x9752: 0x7531,\n 0x9753: 0x7950,\n 0x9754: 0x88D5,\n 0x9755: 0x8A98,\n 0x9756: 0x904A,\n 0x9757: 0x9091,\n 0x9758: 0x90F5,\n 0x9759: 0x96C4,\n 0x975A: 0x878D,\n 0x975B: 0x5915,\n 0x975C: 0x4E88,\n 0x975D: 0x4F59,\n 0x975E: 0x4E0E,\n 0x975F: 0x8A89,\n 0x9760: 0x8F3F,\n 0x9761: 0x9810,\n 0x9762: 0x50AD,\n 0x9763: 0x5E7C,\n 0x9764: 0x5996,\n 0x9765: 0x5BB9,\n 0x9766: 0x5EB8,\n 0x9767: 0x63DA,\n 0x9768: 0x63FA,\n 0x9769: 0x64C1,\n 0x976A: 0x66DC,\n 0x976B: 0x694A,\n 0x976C: 0x69D8,\n 0x976D: 0x6D0B,\n 0x976E: 0x6EB6,\n 0x976F: 0x7194,\n 0x9770: 0x7528,\n 0x9771: 0x7AAF,\n 0x9772: 0x7F8A,\n 0x9773: 0x8000,\n 0x9774: 0x8449,\n 0x9775: 0x84C9,\n 0x9776: 0x8981,\n 0x9777: 0x8B21,\n 0x9778: 0x8E0A,\n 0x9779: 0x9065,\n 0x977A: 0x967D,\n 0x977B: 0x990A,\n 0x977C: 0x617E,\n 0x977D: 0x6291,\n 0x977E: 0x6B32,\n 0x9780: 0x6C83,\n 0x9781: 0x6D74,\n 0x9782: 0x7FCC,\n 0x9783: 0x7FFC,\n 0x9784: 0x6DC0,\n 0x9785: 0x7F85,\n 0x9786: 0x87BA,\n 0x9787: 0x88F8,\n 0x9788: 0x6765,\n 0x9789: 0x83B1,\n 0x978A: 0x983C,\n 0x978B: 0x96F7,\n 0x978C: 0x6D1B,\n 0x978D: 0x7D61,\n 0x978E: 0x843D,\n 0x978F: 0x916A,\n 0x9790: 0x4E71,\n 0x9791: 0x5375,\n 0x9792: 0x5D50,\n 0x9793: 0x6B04,\n 0x9794: 0x6FEB,\n 0x9795: 0x85CD,\n 0x9796: 0x862D,\n 0x9797: 0x89A7,\n 0x9798: 0x5229,\n 0x9799: 0x540F,\n 0x979A: 0x5C65,\n 0x979B: 0x674E,\n 0x979C: 0x68A8,\n 0x979D: 0x7406,\n 0x979E: 0x7483,\n 0x979F: 0x75E2,\n 0x97A0: 0x88CF,\n 0x97A1: 0x88E1,\n 0x97A2: 0x91CC,\n 0x97A3: 0x96E2,\n 0x97A4: 0x9678,\n 0x97A5: 0x5F8B,\n 0x97A6: 0x7387,\n 0x97A7: 0x7ACB,\n 0x97A8: 0x844E,\n 0x97A9: 0x63A0,\n 0x97AA: 0x7565,\n 0x97AB: 0x5289,\n 0x97AC: 0x6D41,\n 0x97AD: 0x6E9C,\n 0x97AE: 0x7409,\n 0x97AF: 0x7559,\n 0x97B0: 0x786B,\n 0x97B1: 0x7C92,\n 0x97B2: 0x9686,\n 0x97B3: 0x7ADC,\n 0x97B4: 0x9F8D,\n 0x97B5: 0x4FB6,\n 0x97B6: 0x616E,\n 0x97B7: 0x65C5,\n 0x97B8: 0x865C,\n 0x97B9: 0x4E86,\n 0x97BA: 0x4EAE,\n 0x97BB: 0x50DA,\n 0x97BC: 0x4E21,\n 0x97BD: 0x51CC,\n 0x97BE: 0x5BEE,\n 0x97BF: 0x6599,\n 0x97C0: 0x6881,\n 0x97C1: 0x6DBC,\n 0x97C2: 0x731F,\n 0x97C3: 0x7642,\n 0x97C4: 0x77AD,\n 0x97C5: 0x7A1C,\n 0x97C6: 0x7CE7,\n 0x97C7: 0x826F,\n 0x97C8: 0x8AD2,\n 0x97C9: 0x907C,\n 0x97CA: 0x91CF,\n 0x97CB: 0x9675,\n 0x97CC: 0x9818,\n 0x97CD: 0x529B,\n 0x97CE: 0x7DD1,\n 0x97CF: 0x502B,\n 0x97D0: 0x5398,\n 0x97D1: 0x6797,\n 0x97D2: 0x6DCB,\n 0x97D3: 0x71D0,\n 0x97D4: 0x7433,\n 0x97D5: 0x81E8,\n 0x97D6: 0x8F2A,\n 0x97D7: 0x96A3,\n 0x97D8: 0x9C57,\n 0x97D9: 0x9E9F,\n 0x97DA: 0x7460,\n 0x97DB: 0x5841,\n 0x97DC: 0x6D99,\n 0x97DD: 0x7D2F,\n 0x97DE: 0x985E,\n 0x97DF: 0x4EE4,\n 0x97E0: 0x4F36,\n 0x97E1: 0x4F8B,\n 0x97E2: 0x51B7,\n 0x97E3: 0x52B1,\n 0x97E4: 0x5DBA,\n 0x97E5: 0x601C,\n 0x97E6: 0x73B2,\n 0x97E7: 0x793C,\n 0x97E8: 0x82D3,\n 0x97E9: 0x9234,\n 0x97EA: 0x96B7,\n 0x97EB: 0x96F6,\n 0x97EC: 0x970A,\n 0x97ED: 0x9E97,\n 0x97EE: 0x9F62,\n 0x97EF: 0x66A6,\n 0x97F0: 0x6B74,\n 0x97F1: 0x5217,\n 0x97F2: 0x52A3,\n 0x97F3: 0x70C8,\n 0x97F4: 0x88C2,\n 0x97F5: 0x5EC9,\n 0x97F6: 0x604B,\n 0x97F7: 0x6190,\n 0x97F8: 0x6F23,\n 0x97F9: 0x7149,\n 0x97FA: 0x7C3E,\n 0x97FB: 0x7DF4,\n 0x97FC: 0x806F,\n 0x9840: 0x84EE,\n 0x9841: 0x9023,\n 0x9842: 0x932C,\n 0x9843: 0x5442,\n 0x9844: 0x9B6F,\n 0x9845: 0x6AD3,\n 0x9846: 0x7089,\n 0x9847: 0x8CC2,\n 0x9848: 0x8DEF,\n 0x9849: 0x9732,\n 0x984A: 0x52B4,\n 0x984B: 0x5A41,\n 0x984C: 0x5ECA,\n 0x984D: 0x5F04,\n 0x984E: 0x6717,\n 0x984F: 0x697C,\n 0x9850: 0x6994,\n 0x9851: 0x6D6A,\n 0x9852: 0x6F0F,\n 0x9853: 0x7262,\n 0x9854: 0x72FC,\n 0x9855: 0x7BED,\n 0x9856: 0x8001,\n 0x9857: 0x807E,\n 0x9858: 0x874B,\n 0x9859: 0x90CE,\n 0x985A: 0x516D,\n 0x985B: 0x9E93,\n 0x985C: 0x7984,\n 0x985D: 0x808B,\n 0x985E: 0x9332,\n 0x985F: 0x8AD6,\n 0x9860: 0x502D,\n 0x9861: 0x548C,\n 0x9862: 0x8A71,\n 0x9863: 0x6B6A,\n 0x9864: 0x8CC4,\n 0x9865: 0x8107,\n 0x9866: 0x60D1,\n 0x9867: 0x67A0,\n 0x9868: 0x9DF2,\n 0x9869: 0x4E99,\n 0x986A: 0x4E98,\n 0x986B: 0x9C10,\n 0x986C: 0x8A6B,\n 0x986D: 0x85C1,\n 0x986E: 0x8568,\n 0x986F: 0x6900,\n 0x9870: 0x6E7E,\n 0x9871: 0x7897,\n 0x9872: 0x8155,\n 0x989F: 0x5F0C,\n 0x98A0: 0x4E10,\n 0x98A1: 0x4E15,\n 0x98A2: 0x4E2A,\n 0x98A3: 0x4E31,\n 0x98A4: 0x4E36,\n 0x98A5: 0x4E3C,\n 0x98A6: 0x4E3F,\n 0x98A7: 0x4E42,\n 0x98A8: 0x4E56,\n 0x98A9: 0x4E58,\n 0x98AA: 0x4E82,\n 0x98AB: 0x4E85,\n 0x98AC: 0x8C6B,\n 0x98AD: 0x4E8A,\n 0x98AE: 0x8212,\n 0x98AF: 0x5F0D,\n 0x98B0: 0x4E8E,\n 0x98B1: 0x4E9E,\n 0x98B2: 0x4E9F,\n 0x98B3: 0x4EA0,\n 0x98B4: 0x4EA2,\n 0x98B5: 0x4EB0,\n 0x98B6: 0x4EB3,\n 0x98B7: 0x4EB6,\n 0x98B8: 0x4ECE,\n 0x98B9: 0x4ECD,\n 0x98BA: 0x4EC4,\n 0x98BB: 0x4EC6,\n 0x98BC: 0x4EC2,\n 0x98BD: 0x4ED7,\n 0x98BE: 0x4EDE,\n 0x98BF: 0x4EED,\n 0x98C0: 0x4EDF,\n 0x98C1: 0x4EF7,\n 0x98C2: 0x4F09,\n 0x98C3: 0x4F5A,\n 0x98C4: 0x4F30,\n 0x98C5: 0x4F5B,\n 0x98C6: 0x4F5D,\n 0x98C7: 0x4F57,\n 0x98C8: 0x4F47,\n 0x98C9: 0x4F76,\n 0x98CA: 0x4F88,\n 0x98CB: 0x4F8F,\n 0x98CC: 0x4F98,\n 0x98CD: 0x4F7B,\n 0x98CE: 0x4F69,\n 0x98CF: 0x4F70,\n 0x98D0: 0x4F91,\n 0x98D1: 0x4F6F,\n 0x98D2: 0x4F86,\n 0x98D3: 0x4F96,\n 0x98D4: 0x5118,\n 0x98D5: 0x4FD4,\n 0x98D6: 0x4FDF,\n 0x98D7: 0x4FCE,\n 0x98D8: 0x4FD8,\n 0x98D9: 0x4FDB,\n 0x98DA: 0x4FD1,\n 0x98DB: 0x4FDA,\n 0x98DC: 0x4FD0,\n 0x98DD: 0x4FE4,\n 0x98DE: 0x4FE5,\n 0x98DF: 0x501A,\n 0x98E0: 0x5028,\n 0x98E1: 0x5014,\n 0x98E2: 0x502A,\n 0x98E3: 0x5025,\n 0x98E4: 0x5005,\n 0x98E5: 0x4F1C,\n 0x98E6: 0x4FF6,\n 0x98E7: 0x5021,\n 0x98E8: 0x5029,\n 0x98E9: 0x502C,\n 0x98EA: 0x4FFE,\n 0x98EB: 0x4FEF,\n 0x98EC: 0x5011,\n 0x98ED: 0x5006,\n 0x98EE: 0x5043,\n 0x98EF: 0x5047,\n 0x98F0: 0x6703,\n 0x98F1: 0x5055,\n 0x98F2: 0x5050,\n 0x98F3: 0x5048,\n 0x98F4: 0x505A,\n 0x98F5: 0x5056,\n 0x98F6: 0x506C,\n 0x98F7: 0x5078,\n 0x98F8: 0x5080,\n 0x98F9: 0x509A,\n 0x98FA: 0x5085,\n 0x98FB: 0x50B4,\n 0x98FC: 0x50B2,\n 0x9940: 0x50C9,\n 0x9941: 0x50CA,\n 0x9942: 0x50B3,\n 0x9943: 0x50C2,\n 0x9944: 0x50D6,\n 0x9945: 0x50DE,\n 0x9946: 0x50E5,\n 0x9947: 0x50ED,\n 0x9948: 0x50E3,\n 0x9949: 0x50EE,\n 0x994A: 0x50F9,\n 0x994B: 0x50F5,\n 0x994C: 0x5109,\n 0x994D: 0x5101,\n 0x994E: 0x5102,\n 0x994F: 0x5116,\n 0x9950: 0x5115,\n 0x9951: 0x5114,\n 0x9952: 0x511A,\n 0x9953: 0x5121,\n 0x9954: 0x513A,\n 0x9955: 0x5137,\n 0x9956: 0x513C,\n 0x9957: 0x513B,\n 0x9958: 0x513F,\n 0x9959: 0x5140,\n 0x995A: 0x5152,\n 0x995B: 0x514C,\n 0x995C: 0x5154,\n 0x995D: 0x5162,\n 0x995E: 0x7AF8,\n 0x995F: 0x5169,\n 0x9960: 0x516A,\n 0x9961: 0x516E,\n 0x9962: 0x5180,\n 0x9963: 0x5182,\n 0x9964: 0x56D8,\n 0x9965: 0x518C,\n 0x9966: 0x5189,\n 0x9967: 0x518F,\n 0x9968: 0x5191,\n 0x9969: 0x5193,\n 0x996A: 0x5195,\n 0x996B: 0x5196,\n 0x996C: 0x51A4,\n 0x996D: 0x51A6,\n 0x996E: 0x51A2,\n 0x996F: 0x51A9,\n 0x9970: 0x51AA,\n 0x9971: 0x51AB,\n 0x9972: 0x51B3,\n 0x9973: 0x51B1,\n 0x9974: 0x51B2,\n 0x9975: 0x51B0,\n 0x9976: 0x51B5,\n 0x9977: 0x51BD,\n 0x9978: 0x51C5,\n 0x9979: 0x51C9,\n 0x997A: 0x51DB,\n 0x997B: 0x51E0,\n 0x997C: 0x8655,\n 0x997D: 0x51E9,\n 0x997E: 0x51ED,\n 0x9980: 0x51F0,\n 0x9981: 0x51F5,\n 0x9982: 0x51FE,\n 0x9983: 0x5204,\n 0x9984: 0x520B,\n 0x9985: 0x5214,\n 0x9986: 0x520E,\n 0x9987: 0x5227,\n 0x9988: 0x522A,\n 0x9989: 0x522E,\n 0x998A: 0x5233,\n 0x998B: 0x5239,\n 0x998C: 0x524F,\n 0x998D: 0x5244,\n 0x998E: 0x524B,\n 0x998F: 0x524C,\n 0x9990: 0x525E,\n 0x9991: 0x5254,\n 0x9992: 0x526A,\n 0x9993: 0x5274,\n 0x9994: 0x5269,\n 0x9995: 0x5273,\n 0x9996: 0x527F,\n 0x9997: 0x527D,\n 0x9998: 0x528D,\n 0x9999: 0x5294,\n 0x999A: 0x5292,\n 0x999B: 0x5271,\n 0x999C: 0x5288,\n 0x999D: 0x5291,\n 0x999E: 0x8FA8,\n 0x999F: 0x8FA7,\n 0x99A0: 0x52AC,\n 0x99A1: 0x52AD,\n 0x99A2: 0x52BC,\n 0x99A3: 0x52B5,\n 0x99A4: 0x52C1,\n 0x99A5: 0x52CD,\n 0x99A6: 0x52D7,\n 0x99A7: 0x52DE,\n 0x99A8: 0x52E3,\n 0x99A9: 0x52E6,\n 0x99AA: 0x98ED,\n 0x99AB: 0x52E0,\n 0x99AC: 0x52F3,\n 0x99AD: 0x52F5,\n 0x99AE: 0x52F8,\n 0x99AF: 0x52F9,\n 0x99B0: 0x5306,\n 0x99B1: 0x5308,\n 0x99B2: 0x7538,\n 0x99B3: 0x530D,\n 0x99B4: 0x5310,\n 0x99B5: 0x530F,\n 0x99B6: 0x5315,\n 0x99B7: 0x531A,\n 0x99B8: 0x5323,\n 0x99B9: 0x532F,\n 0x99BA: 0x5331,\n 0x99BB: 0x5333,\n 0x99BC: 0x5338,\n 0x99BD: 0x5340,\n 0x99BE: 0x5346,\n 0x99BF: 0x5345,\n 0x99C0: 0x4E17,\n 0x99C1: 0x5349,\n 0x99C2: 0x534D,\n 0x99C3: 0x51D6,\n 0x99C4: 0x535E,\n 0x99C5: 0x5369,\n 0x99C6: 0x536E,\n 0x99C7: 0x5918,\n 0x99C8: 0x537B,\n 0x99C9: 0x5377,\n 0x99CA: 0x5382,\n 0x99CB: 0x5396,\n 0x99CC: 0x53A0,\n 0x99CD: 0x53A6,\n 0x99CE: 0x53A5,\n 0x99CF: 0x53AE,\n 0x99D0: 0x53B0,\n 0x99D1: 0x53B6,\n 0x99D2: 0x53C3,\n 0x99D3: 0x7C12,\n 0x99D4: 0x96D9,\n 0x99D5: 0x53DF,\n 0x99D6: 0x66FC,\n 0x99D7: 0x71EE,\n 0x99D8: 0x53EE,\n 0x99D9: 0x53E8,\n 0x99DA: 0x53ED,\n 0x99DB: 0x53FA,\n 0x99DC: 0x5401,\n 0x99DD: 0x543D,\n 0x99DE: 0x5440,\n 0x99DF: 0x542C,\n 0x99E0: 0x542D,\n 0x99E1: 0x543C,\n 0x99E2: 0x542E,\n 0x99E3: 0x5436,\n 0x99E4: 0x5429,\n 0x99E5: 0x541D,\n 0x99E6: 0x544E,\n 0x99E7: 0x548F,\n 0x99E8: 0x5475,\n 0x99E9: 0x548E,\n 0x99EA: 0x545F,\n 0x99EB: 0x5471,\n 0x99EC: 0x5477,\n 0x99ED: 0x5470,\n 0x99EE: 0x5492,\n 0x99EF: 0x547B,\n 0x99F0: 0x5480,\n 0x99F1: 0x5476,\n 0x99F2: 0x5484,\n 0x99F3: 0x5490,\n 0x99F4: 0x5486,\n 0x99F5: 0x54C7,\n 0x99F6: 0x54A2,\n 0x99F7: 0x54B8,\n 0x99F8: 0x54A5,\n 0x99F9: 0x54AC,\n 0x99FA: 0x54C4,\n 0x99FB: 0x54C8,\n 0x99FC: 0x54A8,\n 0x9A40: 0x54AB,\n 0x9A41: 0x54C2,\n 0x9A42: 0x54A4,\n 0x9A43: 0x54BE,\n 0x9A44: 0x54BC,\n 0x9A45: 0x54D8,\n 0x9A46: 0x54E5,\n 0x9A47: 0x54E6,\n 0x9A48: 0x550F,\n 0x9A49: 0x5514,\n 0x9A4A: 0x54FD,\n 0x9A4B: 0x54EE,\n 0x9A4C: 0x54ED,\n 0x9A4D: 0x54FA,\n 0x9A4E: 0x54E2,\n 0x9A4F: 0x5539,\n 0x9A50: 0x5540,\n 0x9A51: 0x5563,\n 0x9A52: 0x554C,\n 0x9A53: 0x552E,\n 0x9A54: 0x555C,\n 0x9A55: 0x5545,\n 0x9A56: 0x5556,\n 0x9A57: 0x5557,\n 0x9A58: 0x5538,\n 0x9A59: 0x5533,\n 0x9A5A: 0x555D,\n 0x9A5B: 0x5599,\n 0x9A5C: 0x5580,\n 0x9A5D: 0x54AF,\n 0x9A5E: 0x558A,\n 0x9A5F: 0x559F,\n 0x9A60: 0x557B,\n 0x9A61: 0x557E,\n 0x9A62: 0x5598,\n 0x9A63: 0x559E,\n 0x9A64: 0x55AE,\n 0x9A65: 0x557C,\n 0x9A66: 0x5583,\n 0x9A67: 0x55A9,\n 0x9A68: 0x5587,\n 0x9A69: 0x55A8,\n 0x9A6A: 0x55DA,\n 0x9A6B: 0x55C5,\n 0x9A6C: 0x55DF,\n 0x9A6D: 0x55C4,\n 0x9A6E: 0x55DC,\n 0x9A6F: 0x55E4,\n 0x9A70: 0x55D4,\n 0x9A71: 0x5614,\n 0x9A72: 0x55F7,\n 0x9A73: 0x5616,\n 0x9A74: 0x55FE,\n 0x9A75: 0x55FD,\n 0x9A76: 0x561B,\n 0x9A77: 0x55F9,\n 0x9A78: 0x564E,\n 0x9A79: 0x5650,\n 0x9A7A: 0x71DF,\n 0x9A7B: 0x5634,\n 0x9A7C: 0x5636,\n 0x9A7D: 0x5632,\n 0x9A7E: 0x5638,\n 0x9A80: 0x566B,\n 0x9A81: 0x5664,\n 0x9A82: 0x562F,\n 0x9A83: 0x566C,\n 0x9A84: 0x566A,\n 0x9A85: 0x5686,\n 0x9A86: 0x5680,\n 0x9A87: 0x568A,\n 0x9A88: 0x56A0,\n 0x9A89: 0x5694,\n 0x9A8A: 0x568F,\n 0x9A8B: 0x56A5,\n 0x9A8C: 0x56AE,\n 0x9A8D: 0x56B6,\n 0x9A8E: 0x56B4,\n 0x9A8F: 0x56C2,\n 0x9A90: 0x56BC,\n 0x9A91: 0x56C1,\n 0x9A92: 0x56C3,\n 0x9A93: 0x56C0,\n 0x9A94: 0x56C8,\n 0x9A95: 0x56CE,\n 0x9A96: 0x56D1,\n 0x9A97: 0x56D3,\n 0x9A98: 0x56D7,\n 0x9A99: 0x56EE,\n 0x9A9A: 0x56F9,\n 0x9A9B: 0x5700,\n 0x9A9C: 0x56FF,\n 0x9A9D: 0x5704,\n 0x9A9E: 0x5709,\n 0x9A9F: 0x5708,\n 0x9AA0: 0x570B,\n 0x9AA1: 0x570D,\n 0x9AA2: 0x5713,\n 0x9AA3: 0x5718,\n 0x9AA4: 0x5716,\n 0x9AA5: 0x55C7,\n 0x9AA6: 0x571C,\n 0x9AA7: 0x5726,\n 0x9AA8: 0x5737,\n 0x9AA9: 0x5738,\n 0x9AAA: 0x574E,\n 0x9AAB: 0x573B,\n 0x9AAC: 0x5740,\n 0x9AAD: 0x574F,\n 0x9AAE: 0x5769,\n 0x9AAF: 0x57C0,\n 0x9AB0: 0x5788,\n 0x9AB1: 0x5761,\n 0x9AB2: 0x577F,\n 0x9AB3: 0x5789,\n 0x9AB4: 0x5793,\n 0x9AB5: 0x57A0,\n 0x9AB6: 0x57B3,\n 0x9AB7: 0x57A4,\n 0x9AB8: 0x57AA,\n 0x9AB9: 0x57B0,\n 0x9ABA: 0x57C3,\n 0x9ABB: 0x57C6,\n 0x9ABC: 0x57D4,\n 0x9ABD: 0x57D2,\n 0x9ABE: 0x57D3,\n 0x9ABF: 0x580A,\n 0x9AC0: 0x57D6,\n 0x9AC1: 0x57E3,\n 0x9AC2: 0x580B,\n 0x9AC3: 0x5819,\n 0x9AC4: 0x581D,\n 0x9AC5: 0x5872,\n 0x9AC6: 0x5821,\n 0x9AC7: 0x5862,\n 0x9AC8: 0x584B,\n 0x9AC9: 0x5870,\n 0x9ACA: 0x6BC0,\n 0x9ACB: 0x5852,\n 0x9ACC: 0x583D,\n 0x9ACD: 0x5879,\n 0x9ACE: 0x5885,\n 0x9ACF: 0x58B9,\n 0x9AD0: 0x589F,\n 0x9AD1: 0x58AB,\n 0x9AD2: 0x58BA,\n 0x9AD3: 0x58DE,\n 0x9AD4: 0x58BB,\n 0x9AD5: 0x58B8,\n 0x9AD6: 0x58AE,\n 0x9AD7: 0x58C5,\n 0x9AD8: 0x58D3,\n 0x9AD9: 0x58D1,\n 0x9ADA: 0x58D7,\n 0x9ADB: 0x58D9,\n 0x9ADC: 0x58D8,\n 0x9ADD: 0x58E5,\n 0x9ADE: 0x58DC,\n 0x9ADF: 0x58E4,\n 0x9AE0: 0x58DF,\n 0x9AE1: 0x58EF,\n 0x9AE2: 0x58FA,\n 0x9AE3: 0x58F9,\n 0x9AE4: 0x58FB,\n 0x9AE5: 0x58FC,\n 0x9AE6: 0x58FD,\n 0x9AE7: 0x5902,\n 0x9AE8: 0x590A,\n 0x9AE9: 0x5910,\n 0x9AEA: 0x591B,\n 0x9AEB: 0x68A6,\n 0x9AEC: 0x5925,\n 0x9AED: 0x592C,\n 0x9AEE: 0x592D,\n 0x9AEF: 0x5932,\n 0x9AF0: 0x5938,\n 0x9AF1: 0x593E,\n 0x9AF2: 0x7AD2,\n 0x9AF3: 0x5955,\n 0x9AF4: 0x5950,\n 0x9AF5: 0x594E,\n 0x9AF6: 0x595A,\n 0x9AF7: 0x5958,\n 0x9AF8: 0x5962,\n 0x9AF9: 0x5960,\n 0x9AFA: 0x5967,\n 0x9AFB: 0x596C,\n 0x9AFC: 0x5969,\n 0x9B40: 0x5978,\n 0x9B41: 0x5981,\n 0x9B42: 0x599D,\n 0x9B43: 0x4F5E,\n 0x9B44: 0x4FAB,\n 0x9B45: 0x59A3,\n 0x9B46: 0x59B2,\n 0x9B47: 0x59C6,\n 0x9B48: 0x59E8,\n 0x9B49: 0x59DC,\n 0x9B4A: 0x598D,\n 0x9B4B: 0x59D9,\n 0x9B4C: 0x59DA,\n 0x9B4D: 0x5A25,\n 0x9B4E: 0x5A1F,\n 0x9B4F: 0x5A11,\n 0x9B50: 0x5A1C,\n 0x9B51: 0x5A09,\n 0x9B52: 0x5A1A,\n 0x9B53: 0x5A40,\n 0x9B54: 0x5A6C,\n 0x9B55: 0x5A49,\n 0x9B56: 0x5A35,\n 0x9B57: 0x5A36,\n 0x9B58: 0x5A62,\n 0x9B59: 0x5A6A,\n 0x9B5A: 0x5A9A,\n 0x9B5B: 0x5ABC,\n 0x9B5C: 0x5ABE,\n 0x9B5D: 0x5ACB,\n 0x9B5E: 0x5AC2,\n 0x9B5F: 0x5ABD,\n 0x9B60: 0x5AE3,\n 0x9B61: 0x5AD7,\n 0x9B62: 0x5AE6,\n 0x9B63: 0x5AE9,\n 0x9B64: 0x5AD6,\n 0x9B65: 0x5AFA,\n 0x9B66: 0x5AFB,\n 0x9B67: 0x5B0C,\n 0x9B68: 0x5B0B,\n 0x9B69: 0x5B16,\n 0x9B6A: 0x5B32,\n 0x9B6B: 0x5AD0,\n 0x9B6C: 0x5B2A,\n 0x9B6D: 0x5B36,\n 0x9B6E: 0x5B3E,\n 0x9B6F: 0x5B43,\n 0x9B70: 0x5B45,\n 0x9B71: 0x5B40,\n 0x9B72: 0x5B51,\n 0x9B73: 0x5B55,\n 0x9B74: 0x5B5A,\n 0x9B75: 0x5B5B,\n 0x9B76: 0x5B65,\n 0x9B77: 0x5B69,\n 0x9B78: 0x5B70,\n 0x9B79: 0x5B73,\n 0x9B7A: 0x5B75,\n 0x9B7B: 0x5B78,\n 0x9B7C: 0x6588,\n 0x9B7D: 0x5B7A,\n 0x9B7E: 0x5B80,\n 0x9B80: 0x5B83,\n 0x9B81: 0x5BA6,\n 0x9B82: 0x5BB8,\n 0x9B83: 0x5BC3,\n 0x9B84: 0x5BC7,\n 0x9B85: 0x5BC9,\n 0x9B86: 0x5BD4,\n 0x9B87: 0x5BD0,\n 0x9B88: 0x5BE4,\n 0x9B89: 0x5BE6,\n 0x9B8A: 0x5BE2,\n 0x9B8B: 0x5BDE,\n 0x9B8C: 0x5BE5,\n 0x9B8D: 0x5BEB,\n 0x9B8E: 0x5BF0,\n 0x9B8F: 0x5BF6,\n 0x9B90: 0x5BF3,\n 0x9B91: 0x5C05,\n 0x9B92: 0x5C07,\n 0x9B93: 0x5C08,\n 0x9B94: 0x5C0D,\n 0x9B95: 0x5C13,\n 0x9B96: 0x5C20,\n 0x9B97: 0x5C22,\n 0x9B98: 0x5C28,\n 0x9B99: 0x5C38,\n 0x9B9A: 0x5C39,\n 0x9B9B: 0x5C41,\n 0x9B9C: 0x5C46,\n 0x9B9D: 0x5C4E,\n 0x9B9E: 0x5C53,\n 0x9B9F: 0x5C50,\n 0x9BA0: 0x5C4F,\n 0x9BA1: 0x5B71,\n 0x9BA2: 0x5C6C,\n 0x9BA3: 0x5C6E,\n 0x9BA4: 0x4E62,\n 0x9BA5: 0x5C76,\n 0x9BA6: 0x5C79,\n 0x9BA7: 0x5C8C,\n 0x9BA8: 0x5C91,\n 0x9BA9: 0x5C94,\n 0x9BAA: 0x599B,\n 0x9BAB: 0x5CAB,\n 0x9BAC: 0x5CBB,\n 0x9BAD: 0x5CB6,\n 0x9BAE: 0x5CBC,\n 0x9BAF: 0x5CB7,\n 0x9BB0: 0x5CC5,\n 0x9BB1: 0x5CBE,\n 0x9BB2: 0x5CC7,\n 0x9BB3: 0x5CD9,\n 0x9BB4: 0x5CE9,\n 0x9BB5: 0x5CFD,\n 0x9BB6: 0x5CFA,\n 0x9BB7: 0x5CED,\n 0x9BB8: 0x5D8C,\n 0x9BB9: 0x5CEA,\n 0x9BBA: 0x5D0B,\n 0x9BBB: 0x5D15,\n 0x9BBC: 0x5D17,\n 0x9BBD: 0x5D5C,\n 0x9BBE: 0x5D1F,\n 0x9BBF: 0x5D1B,\n 0x9BC0: 0x5D11,\n 0x9BC1: 0x5D14,\n 0x9BC2: 0x5D22,\n 0x9BC3: 0x5D1A,\n 0x9BC4: 0x5D19,\n 0x9BC5: 0x5D18,\n 0x9BC6: 0x5D4C,\n 0x9BC7: 0x5D52,\n 0x9BC8: 0x5D4E,\n 0x9BC9: 0x5D4B,\n 0x9BCA: 0x5D6C,\n 0x9BCB: 0x5D73,\n 0x9BCC: 0x5D76,\n 0x9BCD: 0x5D87,\n 0x9BCE: 0x5D84,\n 0x9BCF: 0x5D82,\n 0x9BD0: 0x5DA2,\n 0x9BD1: 0x5D9D,\n 0x9BD2: 0x5DAC,\n 0x9BD3: 0x5DAE,\n 0x9BD4: 0x5DBD,\n 0x9BD5: 0x5D90,\n 0x9BD6: 0x5DB7,\n 0x9BD7: 0x5DBC,\n 0x9BD8: 0x5DC9,\n 0x9BD9: 0x5DCD,\n 0x9BDA: 0x5DD3,\n 0x9BDB: 0x5DD2,\n 0x9BDC: 0x5DD6,\n 0x9BDD: 0x5DDB,\n 0x9BDE: 0x5DEB,\n 0x9BDF: 0x5DF2,\n 0x9BE0: 0x5DF5,\n 0x9BE1: 0x5E0B,\n 0x9BE2: 0x5E1A,\n 0x9BE3: 0x5E19,\n 0x9BE4: 0x5E11,\n 0x9BE5: 0x5E1B,\n 0x9BE6: 0x5E36,\n 0x9BE7: 0x5E37,\n 0x9BE8: 0x5E44,\n 0x9BE9: 0x5E43,\n 0x9BEA: 0x5E40,\n 0x9BEB: 0x5E4E,\n 0x9BEC: 0x5E57,\n 0x9BED: 0x5E54,\n 0x9BEE: 0x5E5F,\n 0x9BEF: 0x5E62,\n 0x9BF0: 0x5E64,\n 0x9BF1: 0x5E47,\n 0x9BF2: 0x5E75,\n 0x9BF3: 0x5E76,\n 0x9BF4: 0x5E7A,\n 0x9BF5: 0x9EBC,\n 0x9BF6: 0x5E7F,\n 0x9BF7: 0x5EA0,\n 0x9BF8: 0x5EC1,\n 0x9BF9: 0x5EC2,\n 0x9BFA: 0x5EC8,\n 0x9BFB: 0x5ED0,\n 0x9BFC: 0x5ECF,\n 0x9C40: 0x5ED6,\n 0x9C41: 0x5EE3,\n 0x9C42: 0x5EDD,\n 0x9C43: 0x5EDA,\n 0x9C44: 0x5EDB,\n 0x9C45: 0x5EE2,\n 0x9C46: 0x5EE1,\n 0x9C47: 0x5EE8,\n 0x9C48: 0x5EE9,\n 0x9C49: 0x5EEC,\n 0x9C4A: 0x5EF1,\n 0x9C4B: 0x5EF3,\n 0x9C4C: 0x5EF0,\n 0x9C4D: 0x5EF4,\n 0x9C4E: 0x5EF8,\n 0x9C4F: 0x5EFE,\n 0x9C50: 0x5F03,\n 0x9C51: 0x5F09,\n 0x9C52: 0x5F5D,\n 0x9C53: 0x5F5C,\n 0x9C54: 0x5F0B,\n 0x9C55: 0x5F11,\n 0x9C56: 0x5F16,\n 0x9C57: 0x5F29,\n 0x9C58: 0x5F2D,\n 0x9C59: 0x5F38,\n 0x9C5A: 0x5F41,\n 0x9C5B: 0x5F48,\n 0x9C5C: 0x5F4C,\n 0x9C5D: 0x5F4E,\n 0x9C5E: 0x5F2F,\n 0x9C5F: 0x5F51,\n 0x9C60: 0x5F56,\n 0x9C61: 0x5F57,\n 0x9C62: 0x5F59,\n 0x9C63: 0x5F61,\n 0x9C64: 0x5F6D,\n 0x9C65: 0x5F73,\n 0x9C66: 0x5F77,\n 0x9C67: 0x5F83,\n 0x9C68: 0x5F82,\n 0x9C69: 0x5F7F,\n 0x9C6A: 0x5F8A,\n 0x9C6B: 0x5F88,\n 0x9C6C: 0x5F91,\n 0x9C6D: 0x5F87,\n 0x9C6E: 0x5F9E,\n 0x9C6F: 0x5F99,\n 0x9C70: 0x5F98,\n 0x9C71: 0x5FA0,\n 0x9C72: 0x5FA8,\n 0x9C73: 0x5FAD,\n 0x9C74: 0x5FBC,\n 0x9C75: 0x5FD6,\n 0x9C76: 0x5FFB,\n 0x9C77: 0x5FE4,\n 0x9C78: 0x5FF8,\n 0x9C79: 0x5FF1,\n 0x9C7A: 0x5FDD,\n 0x9C7B: 0x60B3,\n 0x9C7C: 0x5FFF,\n 0x9C7D: 0x6021,\n 0x9C7E: 0x6060,\n 0x9C80: 0x6019,\n 0x9C81: 0x6010,\n 0x9C82: 0x6029,\n 0x9C83: 0x600E,\n 0x9C84: 0x6031,\n 0x9C85: 0x601B,\n 0x9C86: 0x6015,\n 0x9C87: 0x602B,\n 0x9C88: 0x6026,\n 0x9C89: 0x600F,\n 0x9C8A: 0x603A,\n 0x9C8B: 0x605A,\n 0x9C8C: 0x6041,\n 0x9C8D: 0x606A,\n 0x9C8E: 0x6077,\n 0x9C8F: 0x605F,\n 0x9C90: 0x604A,\n 0x9C91: 0x6046,\n 0x9C92: 0x604D,\n 0x9C93: 0x6063,\n 0x9C94: 0x6043,\n 0x9C95: 0x6064,\n 0x9C96: 0x6042,\n 0x9C97: 0x606C,\n 0x9C98: 0x606B,\n 0x9C99: 0x6059,\n 0x9C9A: 0x6081,\n 0x9C9B: 0x608D,\n 0x9C9C: 0x60E7,\n 0x9C9D: 0x6083,\n 0x9C9E: 0x609A,\n 0x9C9F: 0x6084,\n 0x9CA0: 0x609B,\n 0x9CA1: 0x6096,\n 0x9CA2: 0x6097,\n 0x9CA3: 0x6092,\n 0x9CA4: 0x60A7,\n 0x9CA5: 0x608B,\n 0x9CA6: 0x60E1,\n 0x9CA7: 0x60B8,\n 0x9CA8: 0x60E0,\n 0x9CA9: 0x60D3,\n 0x9CAA: 0x60B4,\n 0x9CAB: 0x5FF0,\n 0x9CAC: 0x60BD,\n 0x9CAD: 0x60C6,\n 0x9CAE: 0x60B5,\n 0x9CAF: 0x60D8,\n 0x9CB0: 0x614D,\n 0x9CB1: 0x6115,\n 0x9CB2: 0x6106,\n 0x9CB3: 0x60F6,\n 0x9CB4: 0x60F7,\n 0x9CB5: 0x6100,\n 0x9CB6: 0x60F4,\n 0x9CB7: 0x60FA,\n 0x9CB8: 0x6103,\n 0x9CB9: 0x6121,\n 0x9CBA: 0x60FB,\n 0x9CBB: 0x60F1,\n 0x9CBC: 0x610D,\n 0x9CBD: 0x610E,\n 0x9CBE: 0x6147,\n 0x9CBF: 0x613E,\n 0x9CC0: 0x6128,\n 0x9CC1: 0x6127,\n 0x9CC2: 0x614A,\n 0x9CC3: 0x613F,\n 0x9CC4: 0x613C,\n 0x9CC5: 0x612C,\n 0x9CC6: 0x6134,\n 0x9CC7: 0x613D,\n 0x9CC8: 0x6142,\n 0x9CC9: 0x6144,\n 0x9CCA: 0x6173,\n 0x9CCB: 0x6177,\n 0x9CCC: 0x6158,\n 0x9CCD: 0x6159,\n 0x9CCE: 0x615A,\n 0x9CCF: 0x616B,\n 0x9CD0: 0x6174,\n 0x9CD1: 0x616F,\n 0x9CD2: 0x6165,\n 0x9CD3: 0x6171,\n 0x9CD4: 0x615F,\n 0x9CD5: 0x615D,\n 0x9CD6: 0x6153,\n 0x9CD7: 0x6175,\n 0x9CD8: 0x6199,\n 0x9CD9: 0x6196,\n 0x9CDA: 0x6187,\n 0x9CDB: 0x61AC,\n 0x9CDC: 0x6194,\n 0x9CDD: 0x619A,\n 0x9CDE: 0x618A,\n 0x9CDF: 0x6191,\n 0x9CE0: 0x61AB,\n 0x9CE1: 0x61AE,\n 0x9CE2: 0x61CC,\n 0x9CE3: 0x61CA,\n 0x9CE4: 0x61C9,\n 0x9CE5: 0x61F7,\n 0x9CE6: 0x61C8,\n 0x9CE7: 0x61C3,\n 0x9CE8: 0x61C6,\n 0x9CE9: 0x61BA,\n 0x9CEA: 0x61CB,\n 0x9CEB: 0x7F79,\n 0x9CEC: 0x61CD,\n 0x9CED: 0x61E6,\n 0x9CEE: 0x61E3,\n 0x9CEF: 0x61F6,\n 0x9CF0: 0x61FA,\n 0x9CF1: 0x61F4,\n 0x9CF2: 0x61FF,\n 0x9CF3: 0x61FD,\n 0x9CF4: 0x61FC,\n 0x9CF5: 0x61FE,\n 0x9CF6: 0x6200,\n 0x9CF7: 0x6208,\n 0x9CF8: 0x6209,\n 0x9CF9: 0x620D,\n 0x9CFA: 0x620C,\n 0x9CFB: 0x6214,\n 0x9CFC: 0x621B,\n 0x9D40: 0x621E,\n 0x9D41: 0x6221,\n 0x9D42: 0x622A,\n 0x9D43: 0x622E,\n 0x9D44: 0x6230,\n 0x9D45: 0x6232,\n 0x9D46: 0x6233,\n 0x9D47: 0x6241,\n 0x9D48: 0x624E,\n 0x9D49: 0x625E,\n 0x9D4A: 0x6263,\n 0x9D4B: 0x625B,\n 0x9D4C: 0x6260,\n 0x9D4D: 0x6268,\n 0x9D4E: 0x627C,\n 0x9D4F: 0x6282,\n 0x9D50: 0x6289,\n 0x9D51: 0x627E,\n 0x9D52: 0x6292,\n 0x9D53: 0x6293,\n 0x9D54: 0x6296,\n 0x9D55: 0x62D4,\n 0x9D56: 0x6283,\n 0x9D57: 0x6294,\n 0x9D58: 0x62D7,\n 0x9D59: 0x62D1,\n 0x9D5A: 0x62BB,\n 0x9D5B: 0x62CF,\n 0x9D5C: 0x62FF,\n 0x9D5D: 0x62C6,\n 0x9D5E: 0x64D4,\n 0x9D5F: 0x62C8,\n 0x9D60: 0x62DC,\n 0x9D61: 0x62CC,\n 0x9D62: 0x62CA,\n 0x9D63: 0x62C2,\n 0x9D64: 0x62C7,\n 0x9D65: 0x629B,\n 0x9D66: 0x62C9,\n 0x9D67: 0x630C,\n 0x9D68: 0x62EE,\n 0x9D69: 0x62F1,\n 0x9D6A: 0x6327,\n 0x9D6B: 0x6302,\n 0x9D6C: 0x6308,\n 0x9D6D: 0x62EF,\n 0x9D6E: 0x62F5,\n 0x9D6F: 0x6350,\n 0x9D70: 0x633E,\n 0x9D71: 0x634D,\n 0x9D72: 0x641C,\n 0x9D73: 0x634F,\n 0x9D74: 0x6396,\n 0x9D75: 0x638E,\n 0x9D76: 0x6380,\n 0x9D77: 0x63AB,\n 0x9D78: 0x6376,\n 0x9D79: 0x63A3,\n 0x9D7A: 0x638F,\n 0x9D7B: 0x6389,\n 0x9D7C: 0x639F,\n 0x9D7D: 0x63B5,\n 0x9D7E: 0x636B,\n 0x9D80: 0x6369,\n 0x9D81: 0x63BE,\n 0x9D82: 0x63E9,\n 0x9D83: 0x63C0,\n 0x9D84: 0x63C6,\n 0x9D85: 0x63E3,\n 0x9D86: 0x63C9,\n 0x9D87: 0x63D2,\n 0x9D88: 0x63F6,\n 0x9D89: 0x63C4,\n 0x9D8A: 0x6416,\n 0x9D8B: 0x6434,\n 0x9D8C: 0x6406,\n 0x9D8D: 0x6413,\n 0x9D8E: 0x6426,\n 0x9D8F: 0x6436,\n 0x9D90: 0x651D,\n 0x9D91: 0x6417,\n 0x9D92: 0x6428,\n 0x9D93: 0x640F,\n 0x9D94: 0x6467,\n 0x9D95: 0x646F,\n 0x9D96: 0x6476,\n 0x9D97: 0x644E,\n 0x9D98: 0x652A,\n 0x9D99: 0x6495,\n 0x9D9A: 0x6493,\n 0x9D9B: 0x64A5,\n 0x9D9C: 0x64A9,\n 0x9D9D: 0x6488,\n 0x9D9E: 0x64BC,\n 0x9D9F: 0x64DA,\n 0x9DA0: 0x64D2,\n 0x9DA1: 0x64C5,\n 0x9DA2: 0x64C7,\n 0x9DA3: 0x64BB,\n 0x9DA4: 0x64D8,\n 0x9DA5: 0x64C2,\n 0x9DA6: 0x64F1,\n 0x9DA7: 0x64E7,\n 0x9DA8: 0x8209,\n 0x9DA9: 0x64E0,\n 0x9DAA: 0x64E1,\n 0x9DAB: 0x62AC,\n 0x9DAC: 0x64E3,\n 0x9DAD: 0x64EF,\n 0x9DAE: 0x652C,\n 0x9DAF: 0x64F6,\n 0x9DB0: 0x64F4,\n 0x9DB1: 0x64F2,\n 0x9DB2: 0x64FA,\n 0x9DB3: 0x6500,\n 0x9DB4: 0x64FD,\n 0x9DB5: 0x6518,\n 0x9DB6: 0x651C,\n 0x9DB7: 0x6505,\n 0x9DB8: 0x6524,\n 0x9DB9: 0x6523,\n 0x9DBA: 0x652B,\n 0x9DBB: 0x6534,\n 0x9DBC: 0x6535,\n 0x9DBD: 0x6537,\n 0x9DBE: 0x6536,\n 0x9DBF: 0x6538,\n 0x9DC0: 0x754B,\n 0x9DC1: 0x6548,\n 0x9DC2: 0x6556,\n 0x9DC3: 0x6555,\n 0x9DC4: 0x654D,\n 0x9DC5: 0x6558,\n 0x9DC6: 0x655E,\n 0x9DC7: 0x655D,\n 0x9DC8: 0x6572,\n 0x9DC9: 0x6578,\n 0x9DCA: 0x6582,\n 0x9DCB: 0x6583,\n 0x9DCC: 0x8B8A,\n 0x9DCD: 0x659B,\n 0x9DCE: 0x659F,\n 0x9DCF: 0x65AB,\n 0x9DD0: 0x65B7,\n 0x9DD1: 0x65C3,\n 0x9DD2: 0x65C6,\n 0x9DD3: 0x65C1,\n 0x9DD4: 0x65C4,\n 0x9DD5: 0x65CC,\n 0x9DD6: 0x65D2,\n 0x9DD7: 0x65DB,\n 0x9DD8: 0x65D9,\n 0x9DD9: 0x65E0,\n 0x9DDA: 0x65E1,\n 0x9DDB: 0x65F1,\n 0x9DDC: 0x6772,\n 0x9DDD: 0x660A,\n 0x9DDE: 0x6603,\n 0x9DDF: 0x65FB,\n 0x9DE0: 0x6773,\n 0x9DE1: 0x6635,\n 0x9DE2: 0x6636,\n 0x9DE3: 0x6634,\n 0x9DE4: 0x661C,\n 0x9DE5: 0x664F,\n 0x9DE6: 0x6644,\n 0x9DE7: 0x6649,\n 0x9DE8: 0x6641,\n 0x9DE9: 0x665E,\n 0x9DEA: 0x665D,\n 0x9DEB: 0x6664,\n 0x9DEC: 0x6667,\n 0x9DED: 0x6668,\n 0x9DEE: 0x665F,\n 0x9DEF: 0x6662,\n 0x9DF0: 0x6670,\n 0x9DF1: 0x6683,\n 0x9DF2: 0x6688,\n 0x9DF3: 0x668E,\n 0x9DF4: 0x6689,\n 0x9DF5: 0x6684,\n 0x9DF6: 0x6698,\n 0x9DF7: 0x669D,\n 0x9DF8: 0x66C1,\n 0x9DF9: 0x66B9,\n 0x9DFA: 0x66C9,\n 0x9DFB: 0x66BE,\n 0x9DFC: 0x66BC,\n 0x9E40: 0x66C4,\n 0x9E41: 0x66B8,\n 0x9E42: 0x66D6,\n 0x9E43: 0x66DA,\n 0x9E44: 0x66E0,\n 0x9E45: 0x663F,\n 0x9E46: 0x66E6,\n 0x9E47: 0x66E9,\n 0x9E48: 0x66F0,\n 0x9E49: 0x66F5,\n 0x9E4A: 0x66F7,\n 0x9E4B: 0x670F,\n 0x9E4C: 0x6716,\n 0x9E4D: 0x671E,\n 0x9E4E: 0x6726,\n 0x9E4F: 0x6727,\n 0x9E50: 0x9738,\n 0x9E51: 0x672E,\n 0x9E52: 0x673F,\n 0x9E53: 0x6736,\n 0x9E54: 0x6741,\n 0x9E55: 0x6738,\n 0x9E56: 0x6737,\n 0x9E57: 0x6746,\n 0x9E58: 0x675E,\n 0x9E59: 0x6760,\n 0x9E5A: 0x6759,\n 0x9E5B: 0x6763,\n 0x9E5C: 0x6764,\n 0x9E5D: 0x6789,\n 0x9E5E: 0x6770,\n 0x9E5F: 0x67A9,\n 0x9E60: 0x677C,\n 0x9E61: 0x676A,\n 0x9E62: 0x678C,\n 0x9E63: 0x678B,\n 0x9E64: 0x67A6,\n 0x9E65: 0x67A1,\n 0x9E66: 0x6785,\n 0x9E67: 0x67B7,\n 0x9E68: 0x67EF,\n 0x9E69: 0x67B4,\n 0x9E6A: 0x67EC,\n 0x9E6B: 0x67B3,\n 0x9E6C: 0x67E9,\n 0x9E6D: 0x67B8,\n 0x9E6E: 0x67E4,\n 0x9E6F: 0x67DE,\n 0x9E70: 0x67DD,\n 0x9E71: 0x67E2,\n 0x9E72: 0x67EE,\n 0x9E73: 0x67B9,\n 0x9E74: 0x67CE,\n 0x9E75: 0x67C6,\n 0x9E76: 0x67E7,\n 0x9E77: 0x6A9C,\n 0x9E78: 0x681E,\n 0x9E79: 0x6846,\n 0x9E7A: 0x6829,\n 0x9E7B: 0x6840,\n 0x9E7C: 0x684D,\n 0x9E7D: 0x6832,\n 0x9E7E: 0x684E,\n 0x9E80: 0x68B3,\n 0x9E81: 0x682B,\n 0x9E82: 0x6859,\n 0x9E83: 0x6863,\n 0x9E84: 0x6877,\n 0x9E85: 0x687F,\n 0x9E86: 0x689F,\n 0x9E87: 0x688F,\n 0x9E88: 0x68AD,\n 0x9E89: 0x6894,\n 0x9E8A: 0x689D,\n 0x9E8B: 0x689B,\n 0x9E8C: 0x6883,\n 0x9E8D: 0x6AAE,\n 0x9E8E: 0x68B9,\n 0x9E8F: 0x6874,\n 0x9E90: 0x68B5,\n 0x9E91: 0x68A0,\n 0x9E92: 0x68BA,\n 0x9E93: 0x690F,\n 0x9E94: 0x688D,\n 0x9E95: 0x687E,\n 0x9E96: 0x6901,\n 0x9E97: 0x68CA,\n 0x9E98: 0x6908,\n 0x9E99: 0x68D8,\n 0x9E9A: 0x6922,\n 0x9E9B: 0x6926,\n 0x9E9C: 0x68E1,\n 0x9E9D: 0x690C,\n 0x9E9E: 0x68CD,\n 0x9E9F: 0x68D4,\n 0x9EA0: 0x68E7,\n 0x9EA1: 0x68D5,\n 0x9EA2: 0x6936,\n 0x9EA3: 0x6912,\n 0x9EA4: 0x6904,\n 0x9EA5: 0x68D7,\n 0x9EA6: 0x68E3,\n 0x9EA7: 0x6925,\n 0x9EA8: 0x68F9,\n 0x9EA9: 0x68E0,\n 0x9EAA: 0x68EF,\n 0x9EAB: 0x6928,\n 0x9EAC: 0x692A,\n 0x9EAD: 0x691A,\n 0x9EAE: 0x6923,\n 0x9EAF: 0x6921,\n 0x9EB0: 0x68C6,\n 0x9EB1: 0x6979,\n 0x9EB2: 0x6977,\n 0x9EB3: 0x695C,\n 0x9EB4: 0x6978,\n 0x9EB5: 0x696B,\n 0x9EB6: 0x6954,\n 0x9EB7: 0x697E,\n 0x9EB8: 0x696E,\n 0x9EB9: 0x6939,\n 0x9EBA: 0x6974,\n 0x9EBB: 0x693D,\n 0x9EBC: 0x6959,\n 0x9EBD: 0x6930,\n 0x9EBE: 0x6961,\n 0x9EBF: 0x695E,\n 0x9EC0: 0x695D,\n 0x9EC1: 0x6981,\n 0x9EC2: 0x696A,\n 0x9EC3: 0x69B2,\n 0x9EC4: 0x69AE,\n 0x9EC5: 0x69D0,\n 0x9EC6: 0x69BF,\n 0x9EC7: 0x69C1,\n 0x9EC8: 0x69D3,\n 0x9EC9: 0x69BE,\n 0x9ECA: 0x69CE,\n 0x9ECB: 0x5BE8,\n 0x9ECC: 0x69CA,\n 0x9ECD: 0x69DD,\n 0x9ECE: 0x69BB,\n 0x9ECF: 0x69C3,\n 0x9ED0: 0x69A7,\n 0x9ED1: 0x6A2E,\n 0x9ED2: 0x6991,\n 0x9ED3: 0x69A0,\n 0x9ED4: 0x699C,\n 0x9ED5: 0x6995,\n 0x9ED6: 0x69B4,\n 0x9ED7: 0x69DE,\n 0x9ED8: 0x69E8,\n 0x9ED9: 0x6A02,\n 0x9EDA: 0x6A1B,\n 0x9EDB: 0x69FF,\n 0x9EDC: 0x6B0A,\n 0x9EDD: 0x69F9,\n 0x9EDE: 0x69F2,\n 0x9EDF: 0x69E7,\n 0x9EE0: 0x6A05,\n 0x9EE1: 0x69B1,\n 0x9EE2: 0x6A1E,\n 0x9EE3: 0x69ED,\n 0x9EE4: 0x6A14,\n 0x9EE5: 0x69EB,\n 0x9EE6: 0x6A0A,\n 0x9EE7: 0x6A12,\n 0x9EE8: 0x6AC1,\n 0x9EE9: 0x6A23,\n 0x9EEA: 0x6A13,\n 0x9EEB: 0x6A44,\n 0x9EEC: 0x6A0C,\n 0x9EED: 0x6A72,\n 0x9EEE: 0x6A36,\n 0x9EEF: 0x6A78,\n 0x9EF0: 0x6A47,\n 0x9EF1: 0x6A62,\n 0x9EF2: 0x6A59,\n 0x9EF3: 0x6A66,\n 0x9EF4: 0x6A48,\n 0x9EF5: 0x6A38,\n 0x9EF6: 0x6A22,\n 0x9EF7: 0x6A90,\n 0x9EF8: 0x6A8D,\n 0x9EF9: 0x6AA0,\n 0x9EFA: 0x6A84,\n 0x9EFB: 0x6AA2,\n 0x9EFC: 0x6AA3,\n 0x9F40: 0x6A97,\n 0x9F41: 0x8617,\n 0x9F42: 0x6ABB,\n 0x9F43: 0x6AC3,\n 0x9F44: 0x6AC2,\n 0x9F45: 0x6AB8,\n 0x9F46: 0x6AB3,\n 0x9F47: 0x6AAC,\n 0x9F48: 0x6ADE,\n 0x9F49: 0x6AD1,\n 0x9F4A: 0x6ADF,\n 0x9F4B: 0x6AAA,\n 0x9F4C: 0x6ADA,\n 0x9F4D: 0x6AEA,\n 0x9F4E: 0x6AFB,\n 0x9F4F: 0x6B05,\n 0x9F50: 0x8616,\n 0x9F51: 0x6AFA,\n 0x9F52: 0x6B12,\n 0x9F53: 0x6B16,\n 0x9F54: 0x9B31,\n 0x9F55: 0x6B1F,\n 0x9F56: 0x6B38,\n 0x9F57: 0x6B37,\n 0x9F58: 0x76DC,\n 0x9F59: 0x6B39,\n 0x9F5A: 0x98EE,\n 0x9F5B: 0x6B47,\n 0x9F5C: 0x6B43,\n 0x9F5D: 0x6B49,\n 0x9F5E: 0x6B50,\n 0x9F5F: 0x6B59,\n 0x9F60: 0x6B54,\n 0x9F61: 0x6B5B,\n 0x9F62: 0x6B5F,\n 0x9F63: 0x6B61,\n 0x9F64: 0x6B78,\n 0x9F65: 0x6B79,\n 0x9F66: 0x6B7F,\n 0x9F67: 0x6B80,\n 0x9F68: 0x6B84,\n 0x9F69: 0x6B83,\n 0x9F6A: 0x6B8D,\n 0x9F6B: 0x6B98,\n 0x9F6C: 0x6B95,\n 0x9F6D: 0x6B9E,\n 0x9F6E: 0x6BA4,\n 0x9F6F: 0x6BAA,\n 0x9F70: 0x6BAB,\n 0x9F71: 0x6BAF,\n 0x9F72: 0x6BB2,\n 0x9F73: 0x6BB1,\n 0x9F74: 0x6BB3,\n 0x9F75: 0x6BB7,\n 0x9F76: 0x6BBC,\n 0x9F77: 0x6BC6,\n 0x9F78: 0x6BCB,\n 0x9F79: 0x6BD3,\n 0x9F7A: 0x6BDF,\n 0x9F7B: 0x6BEC,\n 0x9F7C: 0x6BEB,\n 0x9F7D: 0x6BF3,\n 0x9F7E: 0x6BEF,\n 0x9F80: 0x9EBE,\n 0x9F81: 0x6C08,\n 0x9F82: 0x6C13,\n 0x9F83: 0x6C14,\n 0x9F84: 0x6C1B,\n 0x9F85: 0x6C24,\n 0x9F86: 0x6C23,\n 0x9F87: 0x6C5E,\n 0x9F88: 0x6C55,\n 0x9F89: 0x6C62,\n 0x9F8A: 0x6C6A,\n 0x9F8B: 0x6C82,\n 0x9F8C: 0x6C8D,\n 0x9F8D: 0x6C9A,\n 0x9F8E: 0x6C81,\n 0x9F8F: 0x6C9B,\n 0x9F90: 0x6C7E,\n 0x9F91: 0x6C68,\n 0x9F92: 0x6C73,\n 0x9F93: 0x6C92,\n 0x9F94: 0x6C90,\n 0x9F95: 0x6CC4,\n 0x9F96: 0x6CF1,\n 0x9F97: 0x6CD3,\n 0x9F98: 0x6CBD,\n 0x9F99: 0x6CD7,\n 0x9F9A: 0x6CC5,\n 0x9F9B: 0x6CDD,\n 0x9F9C: 0x6CAE,\n 0x9F9D: 0x6CB1,\n 0x9F9E: 0x6CBE,\n 0x9F9F: 0x6CBA,\n 0x9FA0: 0x6CDB,\n 0x9FA1: 0x6CEF,\n 0x9FA2: 0x6CD9,\n 0x9FA3: 0x6CEA,\n 0x9FA4: 0x6D1F,\n 0x9FA5: 0x884D,\n 0x9FA6: 0x6D36,\n 0x9FA7: 0x6D2B,\n 0x9FA8: 0x6D3D,\n 0x9FA9: 0x6D38,\n 0x9FAA: 0x6D19,\n 0x9FAB: 0x6D35,\n 0x9FAC: 0x6D33,\n 0x9FAD: 0x6D12,\n 0x9FAE: 0x6D0C,\n 0x9FAF: 0x6D63,\n 0x9FB0: 0x6D93,\n 0x9FB1: 0x6D64,\n 0x9FB2: 0x6D5A,\n 0x9FB3: 0x6D79,\n 0x9FB4: 0x6D59,\n 0x9FB5: 0x6D8E,\n 0x9FB6: 0x6D95,\n 0x9FB7: 0x6FE4,\n 0x9FB8: 0x6D85,\n 0x9FB9: 0x6DF9,\n 0x9FBA: 0x6E15,\n 0x9FBB: 0x6E0A,\n 0x9FBC: 0x6DB5,\n 0x9FBD: 0x6DC7,\n 0x9FBE: 0x6DE6,\n 0x9FBF: 0x6DB8,\n 0x9FC0: 0x6DC6,\n 0x9FC1: 0x6DEC,\n 0x9FC2: 0x6DDE,\n 0x9FC3: 0x6DCC,\n 0x9FC4: 0x6DE8,\n 0x9FC5: 0x6DD2,\n 0x9FC6: 0x6DC5,\n 0x9FC7: 0x6DFA,\n 0x9FC8: 0x6DD9,\n 0x9FC9: 0x6DE4,\n 0x9FCA: 0x6DD5,\n 0x9FCB: 0x6DEA,\n 0x9FCC: 0x6DEE,\n 0x9FCD: 0x6E2D,\n 0x9FCE: 0x6E6E,\n 0x9FCF: 0x6E2E,\n 0x9FD0: 0x6E19,\n 0x9FD1: 0x6E72,\n 0x9FD2: 0x6E5F,\n 0x9FD3: 0x6E3E,\n 0x9FD4: 0x6E23,\n 0x9FD5: 0x6E6B,\n 0x9FD6: 0x6E2B,\n 0x9FD7: 0x6E76,\n 0x9FD8: 0x6E4D,\n 0x9FD9: 0x6E1F,\n 0x9FDA: 0x6E43,\n 0x9FDB: 0x6E3A,\n 0x9FDC: 0x6E4E,\n 0x9FDD: 0x6E24,\n 0x9FDE: 0x6EFF,\n 0x9FDF: 0x6E1D,\n 0x9FE0: 0x6E38,\n 0x9FE1: 0x6E82,\n 0x9FE2: 0x6EAA,\n 0x9FE3: 0x6E98,\n 0x9FE4: 0x6EC9,\n 0x9FE5: 0x6EB7,\n 0x9FE6: 0x6ED3,\n 0x9FE7: 0x6EBD,\n 0x9FE8: 0x6EAF,\n 0x9FE9: 0x6EC4,\n 0x9FEA: 0x6EB2,\n 0x9FEB: 0x6ED4,\n 0x9FEC: 0x6ED5,\n 0x9FED: 0x6E8F,\n 0x9FEE: 0x6EA5,\n 0x9FEF: 0x6EC2,\n 0x9FF0: 0x6E9F,\n 0x9FF1: 0x6F41,\n 0x9FF2: 0x6F11,\n 0x9FF3: 0x704C,\n 0x9FF4: 0x6EEC,\n 0x9FF5: 0x6EF8,\n 0x9FF6: 0x6EFE,\n 0x9FF7: 0x6F3F,\n 0x9FF8: 0x6EF2,\n 0x9FF9: 0x6F31,\n 0x9FFA: 0x6EEF,\n 0x9FFB: 0x6F32,\n 0x9FFC: 0x6ECC,\n 0xA1: 0xFF61,\n 0xA2: 0xFF62,\n 0xA3: 0xFF63,\n 0xA4: 0xFF64,\n 0xA5: 0xFF65,\n 0xA6: 0xFF66,\n 0xA7: 0xFF67,\n 0xA8: 0xFF68,\n 0xA9: 0xFF69,\n 0xAA: 0xFF6A,\n 0xAB: 0xFF6B,\n 0xAC: 0xFF6C,\n 0xAD: 0xFF6D,\n 0xAE: 0xFF6E,\n 0xAF: 0xFF6F,\n 0xB0: 0xFF70,\n 0xB1: 0xFF71,\n 0xB2: 0xFF72,\n 0xB3: 0xFF73,\n 0xB4: 0xFF74,\n 0xB5: 0xFF75,\n 0xB6: 0xFF76,\n 0xB7: 0xFF77,\n 0xB8: 0xFF78,\n 0xB9: 0xFF79,\n 0xBA: 0xFF7A,\n 0xBB: 0xFF7B,\n 0xBC: 0xFF7C,\n 0xBD: 0xFF7D,\n 0xBE: 0xFF7E,\n 0xBF: 0xFF7F,\n 0xC0: 0xFF80,\n 0xC1: 0xFF81,\n 0xC2: 0xFF82,\n 0xC3: 0xFF83,\n 0xC4: 0xFF84,\n 0xC5: 0xFF85,\n 0xC6: 0xFF86,\n 0xC7: 0xFF87,\n 0xC8: 0xFF88,\n 0xC9: 0xFF89,\n 0xCA: 0xFF8A,\n 0xCB: 0xFF8B,\n 0xCC: 0xFF8C,\n 0xCD: 0xFF8D,\n 0xCE: 0xFF8E,\n 0xCF: 0xFF8F,\n 0xD0: 0xFF90,\n 0xD1: 0xFF91,\n 0xD2: 0xFF92,\n 0xD3: 0xFF93,\n 0xD4: 0xFF94,\n 0xD5: 0xFF95,\n 0xD6: 0xFF96,\n 0xD7: 0xFF97,\n 0xD8: 0xFF98,\n 0xD9: 0xFF99,\n 0xDA: 0xFF9A,\n 0xDB: 0xFF9B,\n 0xDC: 0xFF9C,\n 0xDD: 0xFF9D,\n 0xDE: 0xFF9E,\n 0xDF: 0xFF9F,\n 0xE040: 0x6F3E,\n 0xE041: 0x6F13,\n 0xE042: 0x6EF7,\n 0xE043: 0x6F86,\n 0xE044: 0x6F7A,\n 0xE045: 0x6F78,\n 0xE046: 0x6F81,\n 0xE047: 0x6F80,\n 0xE048: 0x6F6F,\n 0xE049: 0x6F5B,\n 0xE04A: 0x6FF3,\n 0xE04B: 0x6F6D,\n 0xE04C: 0x6F82,\n 0xE04D: 0x6F7C,\n 0xE04E: 0x6F58,\n 0xE04F: 0x6F8E,\n 0xE050: 0x6F91,\n 0xE051: 0x6FC2,\n 0xE052: 0x6F66,\n 0xE053: 0x6FB3,\n 0xE054: 0x6FA3,\n 0xE055: 0x6FA1,\n 0xE056: 0x6FA4,\n 0xE057: 0x6FB9,\n 0xE058: 0x6FC6,\n 0xE059: 0x6FAA,\n 0xE05A: 0x6FDF,\n 0xE05B: 0x6FD5,\n 0xE05C: 0x6FEC,\n 0xE05D: 0x6FD4,\n 0xE05E: 0x6FD8,\n 0xE05F: 0x6FF1,\n 0xE060: 0x6FEE,\n 0xE061: 0x6FDB,\n 0xE062: 0x7009,\n 0xE063: 0x700B,\n 0xE064: 0x6FFA,\n 0xE065: 0x7011,\n 0xE066: 0x7001,\n 0xE067: 0x700F,\n 0xE068: 0x6FFE,\n 0xE069: 0x701B,\n 0xE06A: 0x701A,\n 0xE06B: 0x6F74,\n 0xE06C: 0x701D,\n 0xE06D: 0x7018,\n 0xE06E: 0x701F,\n 0xE06F: 0x7030,\n 0xE070: 0x703E,\n 0xE071: 0x7032,\n 0xE072: 0x7051,\n 0xE073: 0x7063,\n 0xE074: 0x7099,\n 0xE075: 0x7092,\n 0xE076: 0x70AF,\n 0xE077: 0x70F1,\n 0xE078: 0x70AC,\n 0xE079: 0x70B8,\n 0xE07A: 0x70B3,\n 0xE07B: 0x70AE,\n 0xE07C: 0x70DF,\n 0xE07D: 0x70CB,\n 0xE07E: 0x70DD,\n 0xE080: 0x70D9,\n 0xE081: 0x7109,\n 0xE082: 0x70FD,\n 0xE083: 0x711C,\n 0xE084: 0x7119,\n 0xE085: 0x7165,\n 0xE086: 0x7155,\n 0xE087: 0x7188,\n 0xE088: 0x7166,\n 0xE089: 0x7162,\n 0xE08A: 0x714C,\n 0xE08B: 0x7156,\n 0xE08C: 0x716C,\n 0xE08D: 0x718F,\n 0xE08E: 0x71FB,\n 0xE08F: 0x7184,\n 0xE090: 0x7195,\n 0xE091: 0x71A8,\n 0xE092: 0x71AC,\n 0xE093: 0x71D7,\n 0xE094: 0x71B9,\n 0xE095: 0x71BE,\n 0xE096: 0x71D2,\n 0xE097: 0x71C9,\n 0xE098: 0x71D4,\n 0xE099: 0x71CE,\n 0xE09A: 0x71E0,\n 0xE09B: 0x71EC,\n 0xE09C: 0x71E7,\n 0xE09D: 0x71F5,\n 0xE09E: 0x71FC,\n 0xE09F: 0x71F9,\n 0xE0A0: 0x71FF,\n 0xE0A1: 0x720D,\n 0xE0A2: 0x7210,\n 0xE0A3: 0x721B,\n 0xE0A4: 0x7228,\n 0xE0A5: 0x722D,\n 0xE0A6: 0x722C,\n 0xE0A7: 0x7230,\n 0xE0A8: 0x7232,\n 0xE0A9: 0x723B,\n 0xE0AA: 0x723C,\n 0xE0AB: 0x723F,\n 0xE0AC: 0x7240,\n 0xE0AD: 0x7246,\n 0xE0AE: 0x724B,\n 0xE0AF: 0x7258,\n 0xE0B0: 0x7274,\n 0xE0B1: 0x727E,\n 0xE0B2: 0x7282,\n 0xE0B3: 0x7281,\n 0xE0B4: 0x7287,\n 0xE0B5: 0x7292,\n 0xE0B6: 0x7296,\n 0xE0B7: 0x72A2,\n 0xE0B8: 0x72A7,\n 0xE0B9: 0x72B9,\n 0xE0BA: 0x72B2,\n 0xE0BB: 0x72C3,\n 0xE0BC: 0x72C6,\n 0xE0BD: 0x72C4,\n 0xE0BE: 0x72CE,\n 0xE0BF: 0x72D2,\n 0xE0C0: 0x72E2,\n 0xE0C1: 0x72E0,\n 0xE0C2: 0x72E1,\n 0xE0C3: 0x72F9,\n 0xE0C4: 0x72F7,\n 0xE0C5: 0x500F,\n 0xE0C6: 0x7317,\n 0xE0C7: 0x730A,\n 0xE0C8: 0x731C,\n 0xE0C9: 0x7316,\n 0xE0CA: 0x731D,\n 0xE0CB: 0x7334,\n 0xE0CC: 0x732F,\n 0xE0CD: 0x7329,\n 0xE0CE: 0x7325,\n 0xE0CF: 0x733E,\n 0xE0D0: 0x734E,\n 0xE0D1: 0x734F,\n 0xE0D2: 0x9ED8,\n 0xE0D3: 0x7357,\n 0xE0D4: 0x736A,\n 0xE0D5: 0x7368,\n 0xE0D6: 0x7370,\n 0xE0D7: 0x7378,\n 0xE0D8: 0x7375,\n 0xE0D9: 0x737B,\n 0xE0DA: 0x737A,\n 0xE0DB: 0x73C8,\n 0xE0DC: 0x73B3,\n 0xE0DD: 0x73CE,\n 0xE0DE: 0x73BB,\n 0xE0DF: 0x73C0,\n 0xE0E0: 0x73E5,\n 0xE0E1: 0x73EE,\n 0xE0E2: 0x73DE,\n 0xE0E3: 0x74A2,\n 0xE0E4: 0x7405,\n 0xE0E5: 0x746F,\n 0xE0E6: 0x7425,\n 0xE0E7: 0x73F8,\n 0xE0E8: 0x7432,\n 0xE0E9: 0x743A,\n 0xE0EA: 0x7455,\n 0xE0EB: 0x743F,\n 0xE0EC: 0x745F,\n 0xE0ED: 0x7459,\n 0xE0EE: 0x7441,\n 0xE0EF: 0x745C,\n 0xE0F0: 0x7469,\n 0xE0F1: 0x7470,\n 0xE0F2: 0x7463,\n 0xE0F3: 0x746A,\n 0xE0F4: 0x7476,\n 0xE0F5: 0x747E,\n 0xE0F6: 0x748B,\n 0xE0F7: 0x749E,\n 0xE0F8: 0x74A7,\n 0xE0F9: 0x74CA,\n 0xE0FA: 0x74CF,\n 0xE0FB: 0x74D4,\n 0xE0FC: 0x73F1,\n 0xE140: 0x74E0,\n 0xE141: 0x74E3,\n 0xE142: 0x74E7,\n 0xE143: 0x74E9,\n 0xE144: 0x74EE,\n 0xE145: 0x74F2,\n 0xE146: 0x74F0,\n 0xE147: 0x74F1,\n 0xE148: 0x74F8,\n 0xE149: 0x74F7,\n 0xE14A: 0x7504,\n 0xE14B: 0x7503,\n 0xE14C: 0x7505,\n 0xE14D: 0x750C,\n 0xE14E: 0x750E,\n 0xE14F: 0x750D,\n 0xE150: 0x7515,\n 0xE151: 0x7513,\n 0xE152: 0x751E,\n 0xE153: 0x7526,\n 0xE154: 0x752C,\n 0xE155: 0x753C,\n 0xE156: 0x7544,\n 0xE157: 0x754D,\n 0xE158: 0x754A,\n 0xE159: 0x7549,\n 0xE15A: 0x755B,\n 0xE15B: 0x7546,\n 0xE15C: 0x755A,\n 0xE15D: 0x7569,\n 0xE15E: 0x7564,\n 0xE15F: 0x7567,\n 0xE160: 0x756B,\n 0xE161: 0x756D,\n 0xE162: 0x7578,\n 0xE163: 0x7576,\n 0xE164: 0x7586,\n 0xE165: 0x7587,\n 0xE166: 0x7574,\n 0xE167: 0x758A,\n 0xE168: 0x7589,\n 0xE169: 0x7582,\n 0xE16A: 0x7594,\n 0xE16B: 0x759A,\n 0xE16C: 0x759D,\n 0xE16D: 0x75A5,\n 0xE16E: 0x75A3,\n 0xE16F: 0x75C2,\n 0xE170: 0x75B3,\n 0xE171: 0x75C3,\n 0xE172: 0x75B5,\n 0xE173: 0x75BD,\n 0xE174: 0x75B8,\n 0xE175: 0x75BC,\n 0xE176: 0x75B1,\n 0xE177: 0x75CD,\n 0xE178: 0x75CA,\n 0xE179: 0x75D2,\n 0xE17A: 0x75D9,\n 0xE17B: 0x75E3,\n 0xE17C: 0x75DE,\n 0xE17D: 0x75FE,\n 0xE17E: 0x75FF,\n 0xE180: 0x75FC,\n 0xE181: 0x7601,\n 0xE182: 0x75F0,\n 0xE183: 0x75FA,\n 0xE184: 0x75F2,\n 0xE185: 0x75F3,\n 0xE186: 0x760B,\n 0xE187: 0x760D,\n 0xE188: 0x7609,\n 0xE189: 0x761F,\n 0xE18A: 0x7627,\n 0xE18B: 0x7620,\n 0xE18C: 0x7621,\n 0xE18D: 0x7622,\n 0xE18E: 0x7624,\n 0xE18F: 0x7634,\n 0xE190: 0x7630,\n 0xE191: 0x763B,\n 0xE192: 0x7647,\n 0xE193: 0x7648,\n 0xE194: 0x7646,\n 0xE195: 0x765C,\n 0xE196: 0x7658,\n 0xE197: 0x7661,\n 0xE198: 0x7662,\n 0xE199: 0x7668,\n 0xE19A: 0x7669,\n 0xE19B: 0x766A,\n 0xE19C: 0x7667,\n 0xE19D: 0x766C,\n 0xE19E: 0x7670,\n 0xE19F: 0x7672,\n 0xE1A0: 0x7676,\n 0xE1A1: 0x7678,\n 0xE1A2: 0x767C,\n 0xE1A3: 0x7680,\n 0xE1A4: 0x7683,\n 0xE1A5: 0x7688,\n 0xE1A6: 0x768B,\n 0xE1A7: 0x768E,\n 0xE1A8: 0x7696,\n 0xE1A9: 0x7693,\n 0xE1AA: 0x7699,\n 0xE1AB: 0x769A,\n 0xE1AC: 0x76B0,\n 0xE1AD: 0x76B4,\n 0xE1AE: 0x76B8,\n 0xE1AF: 0x76B9,\n 0xE1B0: 0x76BA,\n 0xE1B1: 0x76C2,\n 0xE1B2: 0x76CD,\n 0xE1B3: 0x76D6,\n 0xE1B4: 0x76D2,\n 0xE1B5: 0x76DE,\n 0xE1B6: 0x76E1,\n 0xE1B7: 0x76E5,\n 0xE1B8: 0x76E7,\n 0xE1B9: 0x76EA,\n 0xE1BA: 0x862F,\n 0xE1BB: 0x76FB,\n 0xE1BC: 0x7708,\n 0xE1BD: 0x7707,\n 0xE1BE: 0x7704,\n 0xE1BF: 0x7729,\n 0xE1C0: 0x7724,\n 0xE1C1: 0x771E,\n 0xE1C2: 0x7725,\n 0xE1C3: 0x7726,\n 0xE1C4: 0x771B,\n 0xE1C5: 0x7737,\n 0xE1C6: 0x7738,\n 0xE1C7: 0x7747,\n 0xE1C8: 0x775A,\n 0xE1C9: 0x7768,\n 0xE1CA: 0x776B,\n 0xE1CB: 0x775B,\n 0xE1CC: 0x7765,\n 0xE1CD: 0x777F,\n 0xE1CE: 0x777E,\n 0xE1CF: 0x7779,\n 0xE1D0: 0x778E,\n 0xE1D1: 0x778B,\n 0xE1D2: 0x7791,\n 0xE1D3: 0x77A0,\n 0xE1D4: 0x779E,\n 0xE1D5: 0x77B0,\n 0xE1D6: 0x77B6,\n 0xE1D7: 0x77B9,\n 0xE1D8: 0x77BF,\n 0xE1D9: 0x77BC,\n 0xE1DA: 0x77BD,\n 0xE1DB: 0x77BB,\n 0xE1DC: 0x77C7,\n 0xE1DD: 0x77CD,\n 0xE1DE: 0x77D7,\n 0xE1DF: 0x77DA,\n 0xE1E0: 0x77DC,\n 0xE1E1: 0x77E3,\n 0xE1E2: 0x77EE,\n 0xE1E3: 0x77FC,\n 0xE1E4: 0x780C,\n 0xE1E5: 0x7812,\n 0xE1E6: 0x7926,\n 0xE1E7: 0x7820,\n 0xE1E8: 0x792A,\n 0xE1E9: 0x7845,\n 0xE1EA: 0x788E,\n 0xE1EB: 0x7874,\n 0xE1EC: 0x7886,\n 0xE1ED: 0x787C,\n 0xE1EE: 0x789A,\n 0xE1EF: 0x788C,\n 0xE1F0: 0x78A3,\n 0xE1F1: 0x78B5,\n 0xE1F2: 0x78AA,\n 0xE1F3: 0x78AF,\n 0xE1F4: 0x78D1,\n 0xE1F5: 0x78C6,\n 0xE1F6: 0x78CB,\n 0xE1F7: 0x78D4,\n 0xE1F8: 0x78BE,\n 0xE1F9: 0x78BC,\n 0xE1FA: 0x78C5,\n 0xE1FB: 0x78CA,\n 0xE1FC: 0x78EC,\n 0xE240: 0x78E7,\n 0xE241: 0x78DA,\n 0xE242: 0x78FD,\n 0xE243: 0x78F4,\n 0xE244: 0x7907,\n 0xE245: 0x7912,\n 0xE246: 0x7911,\n 0xE247: 0x7919,\n 0xE248: 0x792C,\n 0xE249: 0x792B,\n 0xE24A: 0x7940,\n 0xE24B: 0x7960,\n 0xE24C: 0x7957,\n 0xE24D: 0x795F,\n 0xE24E: 0x795A,\n 0xE24F: 0x7955,\n 0xE250: 0x7953,\n 0xE251: 0x797A,\n 0xE252: 0x797F,\n 0xE253: 0x798A,\n 0xE254: 0x799D,\n 0xE255: 0x79A7,\n 0xE256: 0x9F4B,\n 0xE257: 0x79AA,\n 0xE258: 0x79AE,\n 0xE259: 0x79B3,\n 0xE25A: 0x79B9,\n 0xE25B: 0x79BA,\n 0xE25C: 0x79C9,\n 0xE25D: 0x79D5,\n 0xE25E: 0x79E7,\n 0xE25F: 0x79EC,\n 0xE260: 0x79E1,\n 0xE261: 0x79E3,\n 0xE262: 0x7A08,\n 0xE263: 0x7A0D,\n 0xE264: 0x7A18,\n 0xE265: 0x7A19,\n 0xE266: 0x7A20,\n 0xE267: 0x7A1F,\n 0xE268: 0x7980,\n 0xE269: 0x7A31,\n 0xE26A: 0x7A3B,\n 0xE26B: 0x7A3E,\n 0xE26C: 0x7A37,\n 0xE26D: 0x7A43,\n 0xE26E: 0x7A57,\n 0xE26F: 0x7A49,\n 0xE270: 0x7A61,\n 0xE271: 0x7A62,\n 0xE272: 0x7A69,\n 0xE273: 0x9F9D,\n 0xE274: 0x7A70,\n 0xE275: 0x7A79,\n 0xE276: 0x7A7D,\n 0xE277: 0x7A88,\n 0xE278: 0x7A97,\n 0xE279: 0x7A95,\n 0xE27A: 0x7A98,\n 0xE27B: 0x7A96,\n 0xE27C: 0x7AA9,\n 0xE27D: 0x7AC8,\n 0xE27E: 0x7AB0,\n 0xE280: 0x7AB6,\n 0xE281: 0x7AC5,\n 0xE282: 0x7AC4,\n 0xE283: 0x7ABF,\n 0xE284: 0x9083,\n 0xE285: 0x7AC7,\n 0xE286: 0x7ACA,\n 0xE287: 0x7ACD,\n 0xE288: 0x7ACF,\n 0xE289: 0x7AD5,\n 0xE28A: 0x7AD3,\n 0xE28B: 0x7AD9,\n 0xE28C: 0x7ADA,\n 0xE28D: 0x7ADD,\n 0xE28E: 0x7AE1,\n 0xE28F: 0x7AE2,\n 0xE290: 0x7AE6,\n 0xE291: 0x7AED,\n 0xE292: 0x7AF0,\n 0xE293: 0x7B02,\n 0xE294: 0x7B0F,\n 0xE295: 0x7B0A,\n 0xE296: 0x7B06,\n 0xE297: 0x7B33,\n 0xE298: 0x7B18,\n 0xE299: 0x7B19,\n 0xE29A: 0x7B1E,\n 0xE29B: 0x7B35,\n 0xE29C: 0x7B28,\n 0xE29D: 0x7B36,\n 0xE29E: 0x7B50,\n 0xE29F: 0x7B7A,\n 0xE2A0: 0x7B04,\n 0xE2A1: 0x7B4D,\n 0xE2A2: 0x7B0B,\n 0xE2A3: 0x7B4C,\n 0xE2A4: 0x7B45,\n 0xE2A5: 0x7B75,\n 0xE2A6: 0x7B65,\n 0xE2A7: 0x7B74,\n 0xE2A8: 0x7B67,\n 0xE2A9: 0x7B70,\n 0xE2AA: 0x7B71,\n 0xE2AB: 0x7B6C,\n 0xE2AC: 0x7B6E,\n 0xE2AD: 0x7B9D,\n 0xE2AE: 0x7B98,\n 0xE2AF: 0x7B9F,\n 0xE2B0: 0x7B8D,\n 0xE2B1: 0x7B9C,\n 0xE2B2: 0x7B9A,\n 0xE2B3: 0x7B8B,\n 0xE2B4: 0x7B92,\n 0xE2B5: 0x7B8F,\n 0xE2B6: 0x7B5D,\n 0xE2B7: 0x7B99,\n 0xE2B8: 0x7BCB,\n 0xE2B9: 0x7BC1,\n 0xE2BA: 0x7BCC,\n 0xE2BB: 0x7BCF,\n 0xE2BC: 0x7BB4,\n 0xE2BD: 0x7BC6,\n 0xE2BE: 0x7BDD,\n 0xE2BF: 0x7BE9,\n 0xE2C0: 0x7C11,\n 0xE2C1: 0x7C14,\n 0xE2C2: 0x7BE6,\n 0xE2C3: 0x7BE5,\n 0xE2C4: 0x7C60,\n 0xE2C5: 0x7C00,\n 0xE2C6: 0x7C07,\n 0xE2C7: 0x7C13,\n 0xE2C8: 0x7BF3,\n 0xE2C9: 0x7BF7,\n 0xE2CA: 0x7C17,\n 0xE2CB: 0x7C0D,\n 0xE2CC: 0x7BF6,\n 0xE2CD: 0x7C23,\n 0xE2CE: 0x7C27,\n 0xE2CF: 0x7C2A,\n 0xE2D0: 0x7C1F,\n 0xE2D1: 0x7C37,\n 0xE2D2: 0x7C2B,\n 0xE2D3: 0x7C3D,\n 0xE2D4: 0x7C4C,\n 0xE2D5: 0x7C43,\n 0xE2D6: 0x7C54,\n 0xE2D7: 0x7C4F,\n 0xE2D8: 0x7C40,\n 0xE2D9: 0x7C50,\n 0xE2DA: 0x7C58,\n 0xE2DB: 0x7C5F,\n 0xE2DC: 0x7C64,\n 0xE2DD: 0x7C56,\n 0xE2DE: 0x7C65,\n 0xE2DF: 0x7C6C,\n 0xE2E0: 0x7C75,\n 0xE2E1: 0x7C83,\n 0xE2E2: 0x7C90,\n 0xE2E3: 0x7CA4,\n 0xE2E4: 0x7CAD,\n 0xE2E5: 0x7CA2,\n 0xE2E6: 0x7CAB,\n 0xE2E7: 0x7CA1,\n 0xE2E8: 0x7CA8,\n 0xE2E9: 0x7CB3,\n 0xE2EA: 0x7CB2,\n 0xE2EB: 0x7CB1,\n 0xE2EC: 0x7CAE,\n 0xE2ED: 0x7CB9,\n 0xE2EE: 0x7CBD,\n 0xE2EF: 0x7CC0,\n 0xE2F0: 0x7CC5,\n 0xE2F1: 0x7CC2,\n 0xE2F2: 0x7CD8,\n 0xE2F3: 0x7CD2,\n 0xE2F4: 0x7CDC,\n 0xE2F5: 0x7CE2,\n 0xE2F6: 0x9B3B,\n 0xE2F7: 0x7CEF,\n 0xE2F8: 0x7CF2,\n 0xE2F9: 0x7CF4,\n 0xE2FA: 0x7CF6,\n 0xE2FB: 0x7CFA,\n 0xE2FC: 0x7D06,\n 0xE340: 0x7D02,\n 0xE341: 0x7D1C,\n 0xE342: 0x7D15,\n 0xE343: 0x7D0A,\n 0xE344: 0x7D45,\n 0xE345: 0x7D4B,\n 0xE346: 0x7D2E,\n 0xE347: 0x7D32,\n 0xE348: 0x7D3F,\n 0xE349: 0x7D35,\n 0xE34A: 0x7D46,\n 0xE34B: 0x7D73,\n 0xE34C: 0x7D56,\n 0xE34D: 0x7D4E,\n 0xE34E: 0x7D72,\n 0xE34F: 0x7D68,\n 0xE350: 0x7D6E,\n 0xE351: 0x7D4F,\n 0xE352: 0x7D63,\n 0xE353: 0x7D93,\n 0xE354: 0x7D89,\n 0xE355: 0x7D5B,\n 0xE356: 0x7D8F,\n 0xE357: 0x7D7D,\n 0xE358: 0x7D9B,\n 0xE359: 0x7DBA,\n 0xE35A: 0x7DAE,\n 0xE35B: 0x7DA3,\n 0xE35C: 0x7DB5,\n 0xE35D: 0x7DC7,\n 0xE35E: 0x7DBD,\n 0xE35F: 0x7DAB,\n 0xE360: 0x7E3D,\n 0xE361: 0x7DA2,\n 0xE362: 0x7DAF,\n 0xE363: 0x7DDC,\n 0xE364: 0x7DB8,\n 0xE365: 0x7D9F,\n 0xE366: 0x7DB0,\n 0xE367: 0x7DD8,\n 0xE368: 0x7DDD,\n 0xE369: 0x7DE4,\n 0xE36A: 0x7DDE,\n 0xE36B: 0x7DFB,\n 0xE36C: 0x7DF2,\n 0xE36D: 0x7DE1,\n 0xE36E: 0x7E05,\n 0xE36F: 0x7E0A,\n 0xE370: 0x7E23,\n 0xE371: 0x7E21,\n 0xE372: 0x7E12,\n 0xE373: 0x7E31,\n 0xE374: 0x7E1F,\n 0xE375: 0x7E09,\n 0xE376: 0x7E0B,\n 0xE377: 0x7E22,\n 0xE378: 0x7E46,\n 0xE379: 0x7E66,\n 0xE37A: 0x7E3B,\n 0xE37B: 0x7E35,\n 0xE37C: 0x7E39,\n 0xE37D: 0x7E43,\n 0xE37E: 0x7E37,\n 0xE380: 0x7E32,\n 0xE381: 0x7E3A,\n 0xE382: 0x7E67,\n 0xE383: 0x7E5D,\n 0xE384: 0x7E56,\n 0xE385: 0x7E5E,\n 0xE386: 0x7E59,\n 0xE387: 0x7E5A,\n 0xE388: 0x7E79,\n 0xE389: 0x7E6A,\n 0xE38A: 0x7E69,\n 0xE38B: 0x7E7C,\n 0xE38C: 0x7E7B,\n 0xE38D: 0x7E83,\n 0xE38E: 0x7DD5,\n 0xE38F: 0x7E7D,\n 0xE390: 0x8FAE,\n 0xE391: 0x7E7F,\n 0xE392: 0x7E88,\n 0xE393: 0x7E89,\n 0xE394: 0x7E8C,\n 0xE395: 0x7E92,\n 0xE396: 0x7E90,\n 0xE397: 0x7E93,\n 0xE398: 0x7E94,\n 0xE399: 0x7E96,\n 0xE39A: 0x7E8E,\n 0xE39B: 0x7E9B,\n 0xE39C: 0x7E9C,\n 0xE39D: 0x7F38,\n 0xE39E: 0x7F3A,\n 0xE39F: 0x7F45,\n 0xE3A0: 0x7F4C,\n 0xE3A1: 0x7F4D,\n 0xE3A2: 0x7F4E,\n 0xE3A3: 0x7F50,\n 0xE3A4: 0x7F51,\n 0xE3A5: 0x7F55,\n 0xE3A6: 0x7F54,\n 0xE3A7: 0x7F58,\n 0xE3A8: 0x7F5F,\n 0xE3A9: 0x7F60,\n 0xE3AA: 0x7F68,\n 0xE3AB: 0x7F69,\n 0xE3AC: 0x7F67,\n 0xE3AD: 0x7F78,\n 0xE3AE: 0x7F82,\n 0xE3AF: 0x7F86,\n 0xE3B0: 0x7F83,\n 0xE3B1: 0x7F88,\n 0xE3B2: 0x7F87,\n 0xE3B3: 0x7F8C,\n 0xE3B4: 0x7F94,\n 0xE3B5: 0x7F9E,\n 0xE3B6: 0x7F9D,\n 0xE3B7: 0x7F9A,\n 0xE3B8: 0x7FA3,\n 0xE3B9: 0x7FAF,\n 0xE3BA: 0x7FB2,\n 0xE3BB: 0x7FB9,\n 0xE3BC: 0x7FAE,\n 0xE3BD: 0x7FB6,\n 0xE3BE: 0x7FB8,\n 0xE3BF: 0x8B71,\n 0xE3C0: 0x7FC5,\n 0xE3C1: 0x7FC6,\n 0xE3C2: 0x7FCA,\n 0xE3C3: 0x7FD5,\n 0xE3C4: 0x7FD4,\n 0xE3C5: 0x7FE1,\n 0xE3C6: 0x7FE6,\n 0xE3C7: 0x7FE9,\n 0xE3C8: 0x7FF3,\n 0xE3C9: 0x7FF9,\n 0xE3CA: 0x98DC,\n 0xE3CB: 0x8006,\n 0xE3CC: 0x8004,\n 0xE3CD: 0x800B,\n 0xE3CE: 0x8012,\n 0xE3CF: 0x8018,\n 0xE3D0: 0x8019,\n 0xE3D1: 0x801C,\n 0xE3D2: 0x8021,\n 0xE3D3: 0x8028,\n 0xE3D4: 0x803F,\n 0xE3D5: 0x803B,\n 0xE3D6: 0x804A,\n 0xE3D7: 0x8046,\n 0xE3D8: 0x8052,\n 0xE3D9: 0x8058,\n 0xE3DA: 0x805A,\n 0xE3DB: 0x805F,\n 0xE3DC: 0x8062,\n 0xE3DD: 0x8068,\n 0xE3DE: 0x8073,\n 0xE3DF: 0x8072,\n 0xE3E0: 0x8070,\n 0xE3E1: 0x8076,\n 0xE3E2: 0x8079,\n 0xE3E3: 0x807D,\n 0xE3E4: 0x807F,\n 0xE3E5: 0x8084,\n 0xE3E6: 0x8086,\n 0xE3E7: 0x8085,\n 0xE3E8: 0x809B,\n 0xE3E9: 0x8093,\n 0xE3EA: 0x809A,\n 0xE3EB: 0x80AD,\n 0xE3EC: 0x5190,\n 0xE3ED: 0x80AC,\n 0xE3EE: 0x80DB,\n 0xE3EF: 0x80E5,\n 0xE3F0: 0x80D9,\n 0xE3F1: 0x80DD,\n 0xE3F2: 0x80C4,\n 0xE3F3: 0x80DA,\n 0xE3F4: 0x80D6,\n 0xE3F5: 0x8109,\n 0xE3F6: 0x80EF,\n 0xE3F7: 0x80F1,\n 0xE3F8: 0x811B,\n 0xE3F9: 0x8129,\n 0xE3FA: 0x8123,\n 0xE3FB: 0x812F,\n 0xE3FC: 0x814B,\n 0xE440: 0x968B,\n 0xE441: 0x8146,\n 0xE442: 0x813E,\n 0xE443: 0x8153,\n 0xE444: 0x8151,\n 0xE445: 0x80FC,\n 0xE446: 0x8171,\n 0xE447: 0x816E,\n 0xE448: 0x8165,\n 0xE449: 0x8166,\n 0xE44A: 0x8174,\n 0xE44B: 0x8183,\n 0xE44C: 0x8188,\n 0xE44D: 0x818A,\n 0xE44E: 0x8180,\n 0xE44F: 0x8182,\n 0xE450: 0x81A0,\n 0xE451: 0x8195,\n 0xE452: 0x81A4,\n 0xE453: 0x81A3,\n 0xE454: 0x815F,\n 0xE455: 0x8193,\n 0xE456: 0x81A9,\n 0xE457: 0x81B0,\n 0xE458: 0x81B5,\n 0xE459: 0x81BE,\n 0xE45A: 0x81B8,\n 0xE45B: 0x81BD,\n 0xE45C: 0x81C0,\n 0xE45D: 0x81C2,\n 0xE45E: 0x81BA,\n 0xE45F: 0x81C9,\n 0xE460: 0x81CD,\n 0xE461: 0x81D1,\n 0xE462: 0x81D9,\n 0xE463: 0x81D8,\n 0xE464: 0x81C8,\n 0xE465: 0x81DA,\n 0xE466: 0x81DF,\n 0xE467: 0x81E0,\n 0xE468: 0x81E7,\n 0xE469: 0x81FA,\n 0xE46A: 0x81FB,\n 0xE46B: 0x81FE,\n 0xE46C: 0x8201,\n 0xE46D: 0x8202,\n 0xE46E: 0x8205,\n 0xE46F: 0x8207,\n 0xE470: 0x820A,\n 0xE471: 0x820D,\n 0xE472: 0x8210,\n 0xE473: 0x8216,\n 0xE474: 0x8229,\n 0xE475: 0x822B,\n 0xE476: 0x8238,\n 0xE477: 0x8233,\n 0xE478: 0x8240,\n 0xE479: 0x8259,\n 0xE47A: 0x8258,\n 0xE47B: 0x825D,\n 0xE47C: 0x825A,\n 0xE47D: 0x825F,\n 0xE47E: 0x8264,\n 0xE480: 0x8262,\n 0xE481: 0x8268,\n 0xE482: 0x826A,\n 0xE483: 0x826B,\n 0xE484: 0x822E,\n 0xE485: 0x8271,\n 0xE486: 0x8277,\n 0xE487: 0x8278,\n 0xE488: 0x827E,\n 0xE489: 0x828D,\n 0xE48A: 0x8292,\n 0xE48B: 0x82AB,\n 0xE48C: 0x829F,\n 0xE48D: 0x82BB,\n 0xE48E: 0x82AC,\n 0xE48F: 0x82E1,\n 0xE490: 0x82E3,\n 0xE491: 0x82DF,\n 0xE492: 0x82D2,\n 0xE493: 0x82F4,\n 0xE494: 0x82F3,\n 0xE495: 0x82FA,\n 0xE496: 0x8393,\n 0xE497: 0x8303,\n 0xE498: 0x82FB,\n 0xE499: 0x82F9,\n 0xE49A: 0x82DE,\n 0xE49B: 0x8306,\n 0xE49C: 0x82DC,\n 0xE49D: 0x8309,\n 0xE49E: 0x82D9,\n 0xE49F: 0x8335,\n 0xE4A0: 0x8334,\n 0xE4A1: 0x8316,\n 0xE4A2: 0x8332,\n 0xE4A3: 0x8331,\n 0xE4A4: 0x8340,\n 0xE4A5: 0x8339,\n 0xE4A6: 0x8350,\n 0xE4A7: 0x8345,\n 0xE4A8: 0x832F,\n 0xE4A9: 0x832B,\n 0xE4AA: 0x8317,\n 0xE4AB: 0x8318,\n 0xE4AC: 0x8385,\n 0xE4AD: 0x839A,\n 0xE4AE: 0x83AA,\n 0xE4AF: 0x839F,\n 0xE4B0: 0x83A2,\n 0xE4B1: 0x8396,\n 0xE4B2: 0x8323,\n 0xE4B3: 0x838E,\n 0xE4B4: 0x8387,\n 0xE4B5: 0x838A,\n 0xE4B6: 0x837C,\n 0xE4B7: 0x83B5,\n 0xE4B8: 0x8373,\n 0xE4B9: 0x8375,\n 0xE4BA: 0x83A0,\n 0xE4BB: 0x8389,\n 0xE4BC: 0x83A8,\n 0xE4BD: 0x83F4,\n 0xE4BE: 0x8413,\n 0xE4BF: 0x83EB,\n 0xE4C0: 0x83CE,\n 0xE4C1: 0x83FD,\n 0xE4C2: 0x8403,\n 0xE4C3: 0x83D8,\n 0xE4C4: 0x840B,\n 0xE4C5: 0x83C1,\n 0xE4C6: 0x83F7,\n 0xE4C7: 0x8407,\n 0xE4C8: 0x83E0,\n 0xE4C9: 0x83F2,\n 0xE4CA: 0x840D,\n 0xE4CB: 0x8422,\n 0xE4CC: 0x8420,\n 0xE4CD: 0x83BD,\n 0xE4CE: 0x8438,\n 0xE4CF: 0x8506,\n 0xE4D0: 0x83FB,\n 0xE4D1: 0x846D,\n 0xE4D2: 0x842A,\n 0xE4D3: 0x843C,\n 0xE4D4: 0x855A,\n 0xE4D5: 0x8484,\n 0xE4D6: 0x8477,\n 0xE4D7: 0x846B,\n 0xE4D8: 0x84AD,\n 0xE4D9: 0x846E,\n 0xE4DA: 0x8482,\n 0xE4DB: 0x8469,\n 0xE4DC: 0x8446,\n 0xE4DD: 0x842C,\n 0xE4DE: 0x846F,\n 0xE4DF: 0x8479,\n 0xE4E0: 0x8435,\n 0xE4E1: 0x84CA,\n 0xE4E2: 0x8462,\n 0xE4E3: 0x84B9,\n 0xE4E4: 0x84BF,\n 0xE4E5: 0x849F,\n 0xE4E6: 0x84D9,\n 0xE4E7: 0x84CD,\n 0xE4E8: 0x84BB,\n 0xE4E9: 0x84DA,\n 0xE4EA: 0x84D0,\n 0xE4EB: 0x84C1,\n 0xE4EC: 0x84C6,\n 0xE4ED: 0x84D6,\n 0xE4EE: 0x84A1,\n 0xE4EF: 0x8521,\n 0xE4F0: 0x84FF,\n 0xE4F1: 0x84F4,\n 0xE4F2: 0x8517,\n 0xE4F3: 0x8518,\n 0xE4F4: 0x852C,\n 0xE4F5: 0x851F,\n 0xE4F6: 0x8515,\n 0xE4F7: 0x8514,\n 0xE4F8: 0x84FC,\n 0xE4F9: 0x8540,\n 0xE4FA: 0x8563,\n 0xE4FB: 0x8558,\n 0xE4FC: 0x8548,\n 0xE540: 0x8541,\n 0xE541: 0x8602,\n 0xE542: 0x854B,\n 0xE543: 0x8555,\n 0xE544: 0x8580,\n 0xE545: 0x85A4,\n 0xE546: 0x8588,\n 0xE547: 0x8591,\n 0xE548: 0x858A,\n 0xE549: 0x85A8,\n 0xE54A: 0x856D,\n 0xE54B: 0x8594,\n 0xE54C: 0x859B,\n 0xE54D: 0x85EA,\n 0xE54E: 0x8587,\n 0xE54F: 0x859C,\n 0xE550: 0x8577,\n 0xE551: 0x857E,\n 0xE552: 0x8590,\n 0xE553: 0x85C9,\n 0xE554: 0x85BA,\n 0xE555: 0x85CF,\n 0xE556: 0x85B9,\n 0xE557: 0x85D0,\n 0xE558: 0x85D5,\n 0xE559: 0x85DD,\n 0xE55A: 0x85E5,\n 0xE55B: 0x85DC,\n 0xE55C: 0x85F9,\n 0xE55D: 0x860A,\n 0xE55E: 0x8613,\n 0xE55F: 0x860B,\n 0xE560: 0x85FE,\n 0xE561: 0x85FA,\n 0xE562: 0x8606,\n 0xE563: 0x8622,\n 0xE564: 0x861A,\n 0xE565: 0x8630,\n 0xE566: 0x863F,\n 0xE567: 0x864D,\n 0xE568: 0x4E55,\n 0xE569: 0x8654,\n 0xE56A: 0x865F,\n 0xE56B: 0x8667,\n 0xE56C: 0x8671,\n 0xE56D: 0x8693,\n 0xE56E: 0x86A3,\n 0xE56F: 0x86A9,\n 0xE570: 0x86AA,\n 0xE571: 0x868B,\n 0xE572: 0x868C,\n 0xE573: 0x86B6,\n 0xE574: 0x86AF,\n 0xE575: 0x86C4,\n 0xE576: 0x86C6,\n 0xE577: 0x86B0,\n 0xE578: 0x86C9,\n 0xE579: 0x8823,\n 0xE57A: 0x86AB,\n 0xE57B: 0x86D4,\n 0xE57C: 0x86DE,\n 0xE57D: 0x86E9,\n 0xE57E: 0x86EC,\n 0xE580: 0x86DF,\n 0xE581: 0x86DB,\n 0xE582: 0x86EF,\n 0xE583: 0x8712,\n 0xE584: 0x8706,\n 0xE585: 0x8708,\n 0xE586: 0x8700,\n 0xE587: 0x8703,\n 0xE588: 0x86FB,\n 0xE589: 0x8711,\n 0xE58A: 0x8709,\n 0xE58B: 0x870D,\n 0xE58C: 0x86F9,\n 0xE58D: 0x870A,\n 0xE58E: 0x8734,\n 0xE58F: 0x873F,\n 0xE590: 0x8737,\n 0xE591: 0x873B,\n 0xE592: 0x8725,\n 0xE593: 0x8729,\n 0xE594: 0x871A,\n 0xE595: 0x8760,\n 0xE596: 0x875F,\n 0xE597: 0x8778,\n 0xE598: 0x874C,\n 0xE599: 0x874E,\n 0xE59A: 0x8774,\n 0xE59B: 0x8757,\n 0xE59C: 0x8768,\n 0xE59D: 0x876E,\n 0xE59E: 0x8759,\n 0xE59F: 0x8753,\n 0xE5A0: 0x8763,\n 0xE5A1: 0x876A,\n 0xE5A2: 0x8805,\n 0xE5A3: 0x87A2,\n 0xE5A4: 0x879F,\n 0xE5A5: 0x8782,\n 0xE5A6: 0x87AF,\n 0xE5A7: 0x87CB,\n 0xE5A8: 0x87BD,\n 0xE5A9: 0x87C0,\n 0xE5AA: 0x87D0,\n 0xE5AB: 0x96D6,\n 0xE5AC: 0x87AB,\n 0xE5AD: 0x87C4,\n 0xE5AE: 0x87B3,\n 0xE5AF: 0x87C7,\n 0xE5B0: 0x87C6,\n 0xE5B1: 0x87BB,\n 0xE5B2: 0x87EF,\n 0xE5B3: 0x87F2,\n 0xE5B4: 0x87E0,\n 0xE5B5: 0x880F,\n 0xE5B6: 0x880D,\n 0xE5B7: 0x87FE,\n 0xE5B8: 0x87F6,\n 0xE5B9: 0x87F7,\n 0xE5BA: 0x880E,\n 0xE5BB: 0x87D2,\n 0xE5BC: 0x8811,\n 0xE5BD: 0x8816,\n 0xE5BE: 0x8815,\n 0xE5BF: 0x8822,\n 0xE5C0: 0x8821,\n 0xE5C1: 0x8831,\n 0xE5C2: 0x8836,\n 0xE5C3: 0x8839,\n 0xE5C4: 0x8827,\n 0xE5C5: 0x883B,\n 0xE5C6: 0x8844,\n 0xE5C7: 0x8842,\n 0xE5C8: 0x8852,\n 0xE5C9: 0x8859,\n 0xE5CA: 0x885E,\n 0xE5CB: 0x8862,\n 0xE5CC: 0x886B,\n 0xE5CD: 0x8881,\n 0xE5CE: 0x887E,\n 0xE5CF: 0x889E,\n 0xE5D0: 0x8875,\n 0xE5D1: 0x887D,\n 0xE5D2: 0x88B5,\n 0xE5D3: 0x8872,\n 0xE5D4: 0x8882,\n 0xE5D5: 0x8897,\n 0xE5D6: 0x8892,\n 0xE5D7: 0x88AE,\n 0xE5D8: 0x8899,\n 0xE5D9: 0x88A2,\n 0xE5DA: 0x888D,\n 0xE5DB: 0x88A4,\n 0xE5DC: 0x88B0,\n 0xE5DD: 0x88BF,\n 0xE5DE: 0x88B1,\n 0xE5DF: 0x88C3,\n 0xE5E0: 0x88C4,\n 0xE5E1: 0x88D4,\n 0xE5E2: 0x88D8,\n 0xE5E3: 0x88D9,\n 0xE5E4: 0x88DD,\n 0xE5E5: 0x88F9,\n 0xE5E6: 0x8902,\n 0xE5E7: 0x88FC,\n 0xE5E8: 0x88F4,\n 0xE5E9: 0x88E8,\n 0xE5EA: 0x88F2,\n 0xE5EB: 0x8904,\n 0xE5EC: 0x890C,\n 0xE5ED: 0x890A,\n 0xE5EE: 0x8913,\n 0xE5EF: 0x8943,\n 0xE5F0: 0x891E,\n 0xE5F1: 0x8925,\n 0xE5F2: 0x892A,\n 0xE5F3: 0x892B,\n 0xE5F4: 0x8941,\n 0xE5F5: 0x8944,\n 0xE5F6: 0x893B,\n 0xE5F7: 0x8936,\n 0xE5F8: 0x8938,\n 0xE5F9: 0x894C,\n 0xE5FA: 0x891D,\n 0xE5FB: 0x8960,\n 0xE5FC: 0x895E,\n 0xE640: 0x8966,\n 0xE641: 0x8964,\n 0xE642: 0x896D,\n 0xE643: 0x896A,\n 0xE644: 0x896F,\n 0xE645: 0x8974,\n 0xE646: 0x8977,\n 0xE647: 0x897E,\n 0xE648: 0x8983,\n 0xE649: 0x8988,\n 0xE64A: 0x898A,\n 0xE64B: 0x8993,\n 0xE64C: 0x8998,\n 0xE64D: 0x89A1,\n 0xE64E: 0x89A9,\n 0xE64F: 0x89A6,\n 0xE650: 0x89AC,\n 0xE651: 0x89AF,\n 0xE652: 0x89B2,\n 0xE653: 0x89BA,\n 0xE654: 0x89BD,\n 0xE655: 0x89BF,\n 0xE656: 0x89C0,\n 0xE657: 0x89DA,\n 0xE658: 0x89DC,\n 0xE659: 0x89DD,\n 0xE65A: 0x89E7,\n 0xE65B: 0x89F4,\n 0xE65C: 0x89F8,\n 0xE65D: 0x8A03,\n 0xE65E: 0x8A16,\n 0xE65F: 0x8A10,\n 0xE660: 0x8A0C,\n 0xE661: 0x8A1B,\n 0xE662: 0x8A1D,\n 0xE663: 0x8A25,\n 0xE664: 0x8A36,\n 0xE665: 0x8A41,\n 0xE666: 0x8A5B,\n 0xE667: 0x8A52,\n 0xE668: 0x8A46,\n 0xE669: 0x8A48,\n 0xE66A: 0x8A7C,\n 0xE66B: 0x8A6D,\n 0xE66C: 0x8A6C,\n 0xE66D: 0x8A62,\n 0xE66E: 0x8A85,\n 0xE66F: 0x8A82,\n 0xE670: 0x8A84,\n 0xE671: 0x8AA8,\n 0xE672: 0x8AA1,\n 0xE673: 0x8A91,\n 0xE674: 0x8AA5,\n 0xE675: 0x8AA6,\n 0xE676: 0x8A9A,\n 0xE677: 0x8AA3,\n 0xE678: 0x8AC4,\n 0xE679: 0x8ACD,\n 0xE67A: 0x8AC2,\n 0xE67B: 0x8ADA,\n 0xE67C: 0x8AEB,\n 0xE67D: 0x8AF3,\n 0xE67E: 0x8AE7,\n 0xE680: 0x8AE4,\n 0xE681: 0x8AF1,\n 0xE682: 0x8B14,\n 0xE683: 0x8AE0,\n 0xE684: 0x8AE2,\n 0xE685: 0x8AF7,\n 0xE686: 0x8ADE,\n 0xE687: 0x8ADB,\n 0xE688: 0x8B0C,\n 0xE689: 0x8B07,\n 0xE68A: 0x8B1A,\n 0xE68B: 0x8AE1,\n 0xE68C: 0x8B16,\n 0xE68D: 0x8B10,\n 0xE68E: 0x8B17,\n 0xE68F: 0x8B20,\n 0xE690: 0x8B33,\n 0xE691: 0x97AB,\n 0xE692: 0x8B26,\n 0xE693: 0x8B2B,\n 0xE694: 0x8B3E,\n 0xE695: 0x8B28,\n 0xE696: 0x8B41,\n 0xE697: 0x8B4C,\n 0xE698: 0x8B4F,\n 0xE699: 0x8B4E,\n 0xE69A: 0x8B49,\n 0xE69B: 0x8B56,\n 0xE69C: 0x8B5B,\n 0xE69D: 0x8B5A,\n 0xE69E: 0x8B6B,\n 0xE69F: 0x8B5F,\n 0xE6A0: 0x8B6C,\n 0xE6A1: 0x8B6F,\n 0xE6A2: 0x8B74,\n 0xE6A3: 0x8B7D,\n 0xE6A4: 0x8B80,\n 0xE6A5: 0x8B8C,\n 0xE6A6: 0x8B8E,\n 0xE6A7: 0x8B92,\n 0xE6A8: 0x8B93,\n 0xE6A9: 0x8B96,\n 0xE6AA: 0x8B99,\n 0xE6AB: 0x8B9A,\n 0xE6AC: 0x8C3A,\n 0xE6AD: 0x8C41,\n 0xE6AE: 0x8C3F,\n 0xE6AF: 0x8C48,\n 0xE6B0: 0x8C4C,\n 0xE6B1: 0x8C4E,\n 0xE6B2: 0x8C50,\n 0xE6B3: 0x8C55,\n 0xE6B4: 0x8C62,\n 0xE6B5: 0x8C6C,\n 0xE6B6: 0x8C78,\n 0xE6B7: 0x8C7A,\n 0xE6B8: 0x8C82,\n 0xE6B9: 0x8C89,\n 0xE6BA: 0x8C85,\n 0xE6BB: 0x8C8A,\n 0xE6BC: 0x8C8D,\n 0xE6BD: 0x8C8E,\n 0xE6BE: 0x8C94,\n 0xE6BF: 0x8C7C,\n 0xE6C0: 0x8C98,\n 0xE6C1: 0x621D,\n 0xE6C2: 0x8CAD,\n 0xE6C3: 0x8CAA,\n 0xE6C4: 0x8CBD,\n 0xE6C5: 0x8CB2,\n 0xE6C6: 0x8CB3,\n 0xE6C7: 0x8CAE,\n 0xE6C8: 0x8CB6,\n 0xE6C9: 0x8CC8,\n 0xE6CA: 0x8CC1,\n 0xE6CB: 0x8CE4,\n 0xE6CC: 0x8CE3,\n 0xE6CD: 0x8CDA,\n 0xE6CE: 0x8CFD,\n 0xE6CF: 0x8CFA,\n 0xE6D0: 0x8CFB,\n 0xE6D1: 0x8D04,\n 0xE6D2: 0x8D05,\n 0xE6D3: 0x8D0A,\n 0xE6D4: 0x8D07,\n 0xE6D5: 0x8D0F,\n 0xE6D6: 0x8D0D,\n 0xE6D7: 0x8D10,\n 0xE6D8: 0x9F4E,\n 0xE6D9: 0x8D13,\n 0xE6DA: 0x8CCD,\n 0xE6DB: 0x8D14,\n 0xE6DC: 0x8D16,\n 0xE6DD: 0x8D67,\n 0xE6DE: 0x8D6D,\n 0xE6DF: 0x8D71,\n 0xE6E0: 0x8D73,\n 0xE6E1: 0x8D81,\n 0xE6E2: 0x8D99,\n 0xE6E3: 0x8DC2,\n 0xE6E4: 0x8DBE,\n 0xE6E5: 0x8DBA,\n 0xE6E6: 0x8DCF,\n 0xE6E7: 0x8DDA,\n 0xE6E8: 0x8DD6,\n 0xE6E9: 0x8DCC,\n 0xE6EA: 0x8DDB,\n 0xE6EB: 0x8DCB,\n 0xE6EC: 0x8DEA,\n 0xE6ED: 0x8DEB,\n 0xE6EE: 0x8DDF,\n 0xE6EF: 0x8DE3,\n 0xE6F0: 0x8DFC,\n 0xE6F1: 0x8E08,\n 0xE6F2: 0x8E09,\n 0xE6F3: 0x8DFF,\n 0xE6F4: 0x8E1D,\n 0xE6F5: 0x8E1E,\n 0xE6F6: 0x8E10,\n 0xE6F7: 0x8E1F,\n 0xE6F8: 0x8E42,\n 0xE6F9: 0x8E35,\n 0xE6FA: 0x8E30,\n 0xE6FB: 0x8E34,\n 0xE6FC: 0x8E4A,\n 0xE740: 0x8E47,\n 0xE741: 0x8E49,\n 0xE742: 0x8E4C,\n 0xE743: 0x8E50,\n 0xE744: 0x8E48,\n 0xE745: 0x8E59,\n 0xE746: 0x8E64,\n 0xE747: 0x8E60,\n 0xE748: 0x8E2A,\n 0xE749: 0x8E63,\n 0xE74A: 0x8E55,\n 0xE74B: 0x8E76,\n 0xE74C: 0x8E72,\n 0xE74D: 0x8E7C,\n 0xE74E: 0x8E81,\n 0xE74F: 0x8E87,\n 0xE750: 0x8E85,\n 0xE751: 0x8E84,\n 0xE752: 0x8E8B,\n 0xE753: 0x8E8A,\n 0xE754: 0x8E93,\n 0xE755: 0x8E91,\n 0xE756: 0x8E94,\n 0xE757: 0x8E99,\n 0xE758: 0x8EAA,\n 0xE759: 0x8EA1,\n 0xE75A: 0x8EAC,\n 0xE75B: 0x8EB0,\n 0xE75C: 0x8EC6,\n 0xE75D: 0x8EB1,\n 0xE75E: 0x8EBE,\n 0xE75F: 0x8EC5,\n 0xE760: 0x8EC8,\n 0xE761: 0x8ECB,\n 0xE762: 0x8EDB,\n 0xE763: 0x8EE3,\n 0xE764: 0x8EFC,\n 0xE765: 0x8EFB,\n 0xE766: 0x8EEB,\n 0xE767: 0x8EFE,\n 0xE768: 0x8F0A,\n 0xE769: 0x8F05,\n 0xE76A: 0x8F15,\n 0xE76B: 0x8F12,\n 0xE76C: 0x8F19,\n 0xE76D: 0x8F13,\n 0xE76E: 0x8F1C,\n 0xE76F: 0x8F1F,\n 0xE770: 0x8F1B,\n 0xE771: 0x8F0C,\n 0xE772: 0x8F26,\n 0xE773: 0x8F33,\n 0xE774: 0x8F3B,\n 0xE775: 0x8F39,\n 0xE776: 0x8F45,\n 0xE777: 0x8F42,\n 0xE778: 0x8F3E,\n 0xE779: 0x8F4C,\n 0xE77A: 0x8F49,\n 0xE77B: 0x8F46,\n 0xE77C: 0x8F4E,\n 0xE77D: 0x8F57,\n 0xE77E: 0x8F5C,\n 0xE780: 0x8F62,\n 0xE781: 0x8F63,\n 0xE782: 0x8F64,\n 0xE783: 0x8F9C,\n 0xE784: 0x8F9F,\n 0xE785: 0x8FA3,\n 0xE786: 0x8FAD,\n 0xE787: 0x8FAF,\n 0xE788: 0x8FB7,\n 0xE789: 0x8FDA,\n 0xE78A: 0x8FE5,\n 0xE78B: 0x8FE2,\n 0xE78C: 0x8FEA,\n 0xE78D: 0x8FEF,\n 0xE78E: 0x9087,\n 0xE78F: 0x8FF4,\n 0xE790: 0x9005,\n 0xE791: 0x8FF9,\n 0xE792: 0x8FFA,\n 0xE793: 0x9011,\n 0xE794: 0x9015,\n 0xE795: 0x9021,\n 0xE796: 0x900D,\n 0xE797: 0x901E,\n 0xE798: 0x9016,\n 0xE799: 0x900B,\n 0xE79A: 0x9027,\n 0xE79B: 0x9036,\n 0xE79C: 0x9035,\n 0xE79D: 0x9039,\n 0xE79E: 0x8FF8,\n 0xE79F: 0x904F,\n 0xE7A0: 0x9050,\n 0xE7A1: 0x9051,\n 0xE7A2: 0x9052,\n 0xE7A3: 0x900E,\n 0xE7A4: 0x9049,\n 0xE7A5: 0x903E,\n 0xE7A6: 0x9056,\n 0xE7A7: 0x9058,\n 0xE7A8: 0x905E,\n 0xE7A9: 0x9068,\n 0xE7AA: 0x906F,\n 0xE7AB: 0x9076,\n 0xE7AC: 0x96A8,\n 0xE7AD: 0x9072,\n 0xE7AE: 0x9082,\n 0xE7AF: 0x907D,\n 0xE7B0: 0x9081,\n 0xE7B1: 0x9080,\n 0xE7B2: 0x908A,\n 0xE7B3: 0x9089,\n 0xE7B4: 0x908F,\n 0xE7B5: 0x90A8,\n 0xE7B6: 0x90AF,\n 0xE7B7: 0x90B1,\n 0xE7B8: 0x90B5,\n 0xE7B9: 0x90E2,\n 0xE7BA: 0x90E4,\n 0xE7BB: 0x6248,\n 0xE7BC: 0x90DB,\n 0xE7BD: 0x9102,\n 0xE7BE: 0x9112,\n 0xE7BF: 0x9119,\n 0xE7C0: 0x9132,\n 0xE7C1: 0x9130,\n 0xE7C2: 0x914A,\n 0xE7C3: 0x9156,\n 0xE7C4: 0x9158,\n 0xE7C5: 0x9163,\n 0xE7C6: 0x9165,\n 0xE7C7: 0x9169,\n 0xE7C8: 0x9173,\n 0xE7C9: 0x9172,\n 0xE7CA: 0x918B,\n 0xE7CB: 0x9189,\n 0xE7CC: 0x9182,\n 0xE7CD: 0x91A2,\n 0xE7CE: 0x91AB,\n 0xE7CF: 0x91AF,\n 0xE7D0: 0x91AA,\n 0xE7D1: 0x91B5,\n 0xE7D2: 0x91B4,\n 0xE7D3: 0x91BA,\n 0xE7D4: 0x91C0,\n 0xE7D5: 0x91C1,\n 0xE7D6: 0x91C9,\n 0xE7D7: 0x91CB,\n 0xE7D8: 0x91D0,\n 0xE7D9: 0x91D6,\n 0xE7DA: 0x91DF,\n 0xE7DB: 0x91E1,\n 0xE7DC: 0x91DB,\n 0xE7DD: 0x91FC,\n 0xE7DE: 0x91F5,\n 0xE7DF: 0x91F6,\n 0xE7E0: 0x921E,\n 0xE7E1: 0x91FF,\n 0xE7E2: 0x9214,\n 0xE7E3: 0x922C,\n 0xE7E4: 0x9215,\n 0xE7E5: 0x9211,\n 0xE7E6: 0x925E,\n 0xE7E7: 0x9257,\n 0xE7E8: 0x9245,\n 0xE7E9: 0x9249,\n 0xE7EA: 0x9264,\n 0xE7EB: 0x9248,\n 0xE7EC: 0x9295,\n 0xE7ED: 0x923F,\n 0xE7EE: 0x924B,\n 0xE7EF: 0x9250,\n 0xE7F0: 0x929C,\n 0xE7F1: 0x9296,\n 0xE7F2: 0x9293,\n 0xE7F3: 0x929B,\n 0xE7F4: 0x925A,\n 0xE7F5: 0x92CF,\n 0xE7F6: 0x92B9,\n 0xE7F7: 0x92B7,\n 0xE7F8: 0x92E9,\n 0xE7F9: 0x930F,\n 0xE7FA: 0x92FA,\n 0xE7FB: 0x9344,\n 0xE7FC: 0x932E,\n 0xE840: 0x9319,\n 0xE841: 0x9322,\n 0xE842: 0x931A,\n 0xE843: 0x9323,\n 0xE844: 0x933A,\n 0xE845: 0x9335,\n 0xE846: 0x933B,\n 0xE847: 0x935C,\n 0xE848: 0x9360,\n 0xE849: 0x937C,\n 0xE84A: 0x936E,\n 0xE84B: 0x9356,\n 0xE84C: 0x93B0,\n 0xE84D: 0x93AC,\n 0xE84E: 0x93AD,\n 0xE84F: 0x9394,\n 0xE850: 0x93B9,\n 0xE851: 0x93D6,\n 0xE852: 0x93D7,\n 0xE853: 0x93E8,\n 0xE854: 0x93E5,\n 0xE855: 0x93D8,\n 0xE856: 0x93C3,\n 0xE857: 0x93DD,\n 0xE858: 0x93D0,\n 0xE859: 0x93C8,\n 0xE85A: 0x93E4,\n 0xE85B: 0x941A,\n 0xE85C: 0x9414,\n 0xE85D: 0x9413,\n 0xE85E: 0x9403,\n 0xE85F: 0x9407,\n 0xE860: 0x9410,\n 0xE861: 0x9436,\n 0xE862: 0x942B,\n 0xE863: 0x9435,\n 0xE864: 0x9421,\n 0xE865: 0x943A,\n 0xE866: 0x9441,\n 0xE867: 0x9452,\n 0xE868: 0x9444,\n 0xE869: 0x945B,\n 0xE86A: 0x9460,\n 0xE86B: 0x9462,\n 0xE86C: 0x945E,\n 0xE86D: 0x946A,\n 0xE86E: 0x9229,\n 0xE86F: 0x9470,\n 0xE870: 0x9475,\n 0xE871: 0x9477,\n 0xE872: 0x947D,\n 0xE873: 0x945A,\n 0xE874: 0x947C,\n 0xE875: 0x947E,\n 0xE876: 0x9481,\n 0xE877: 0x947F,\n 0xE878: 0x9582,\n 0xE879: 0x9587,\n 0xE87A: 0x958A,\n 0xE87B: 0x9594,\n 0xE87C: 0x9596,\n 0xE87D: 0x9598,\n 0xE87E: 0x9599,\n 0xE880: 0x95A0,\n 0xE881: 0x95A8,\n 0xE882: 0x95A7,\n 0xE883: 0x95AD,\n 0xE884: 0x95BC,\n 0xE885: 0x95BB,\n 0xE886: 0x95B9,\n 0xE887: 0x95BE,\n 0xE888: 0x95CA,\n 0xE889: 0x6FF6,\n 0xE88A: 0x95C3,\n 0xE88B: 0x95CD,\n 0xE88C: 0x95CC,\n 0xE88D: 0x95D5,\n 0xE88E: 0x95D4,\n 0xE88F: 0x95D6,\n 0xE890: 0x95DC,\n 0xE891: 0x95E1,\n 0xE892: 0x95E5,\n 0xE893: 0x95E2,\n 0xE894: 0x9621,\n 0xE895: 0x9628,\n 0xE896: 0x962E,\n 0xE897: 0x962F,\n 0xE898: 0x9642,\n 0xE899: 0x964C,\n 0xE89A: 0x964F,\n 0xE89B: 0x964B,\n 0xE89C: 0x9677,\n 0xE89D: 0x965C,\n 0xE89E: 0x965E,\n 0xE89F: 0x965D,\n 0xE8A0: 0x965F,\n 0xE8A1: 0x9666,\n 0xE8A2: 0x9672,\n 0xE8A3: 0x966C,\n 0xE8A4: 0x968D,\n 0xE8A5: 0x9698,\n 0xE8A6: 0x9695,\n 0xE8A7: 0x9697,\n 0xE8A8: 0x96AA,\n 0xE8A9: 0x96A7,\n 0xE8AA: 0x96B1,\n 0xE8AB: 0x96B2,\n 0xE8AC: 0x96B0,\n 0xE8AD: 0x96B4,\n 0xE8AE: 0x96B6,\n 0xE8AF: 0x96B8,\n 0xE8B0: 0x96B9,\n 0xE8B1: 0x96CE,\n 0xE8B2: 0x96CB,\n 0xE8B3: 0x96C9,\n 0xE8B4: 0x96CD,\n 0xE8B5: 0x894D,\n 0xE8B6: 0x96DC,\n 0xE8B7: 0x970D,\n 0xE8B8: 0x96D5,\n 0xE8B9: 0x96F9,\n 0xE8BA: 0x9704,\n 0xE8BB: 0x9706,\n 0xE8BC: 0x9708,\n 0xE8BD: 0x9713,\n 0xE8BE: 0x970E,\n 0xE8BF: 0x9711,\n 0xE8C0: 0x970F,\n 0xE8C1: 0x9716,\n 0xE8C2: 0x9719,\n 0xE8C3: 0x9724,\n 0xE8C4: 0x972A,\n 0xE8C5: 0x9730,\n 0xE8C6: 0x9739,\n 0xE8C7: 0x973D,\n 0xE8C8: 0x973E,\n 0xE8C9: 0x9744,\n 0xE8CA: 0x9746,\n 0xE8CB: 0x9748,\n 0xE8CC: 0x9742,\n 0xE8CD: 0x9749,\n 0xE8CE: 0x975C,\n 0xE8CF: 0x9760,\n 0xE8D0: 0x9764,\n 0xE8D1: 0x9766,\n 0xE8D2: 0x9768,\n 0xE8D3: 0x52D2,\n 0xE8D4: 0x976B,\n 0xE8D5: 0x9771,\n 0xE8D6: 0x9779,\n 0xE8D7: 0x9785,\n 0xE8D8: 0x977C,\n 0xE8D9: 0x9781,\n 0xE8DA: 0x977A,\n 0xE8DB: 0x9786,\n 0xE8DC: 0x978B,\n 0xE8DD: 0x978F,\n 0xE8DE: 0x9790,\n 0xE8DF: 0x979C,\n 0xE8E0: 0x97A8,\n 0xE8E1: 0x97A6,\n 0xE8E2: 0x97A3,\n 0xE8E3: 0x97B3,\n 0xE8E4: 0x97B4,\n 0xE8E5: 0x97C3,\n 0xE8E6: 0x97C6,\n 0xE8E7: 0x97C8,\n 0xE8E8: 0x97CB,\n 0xE8E9: 0x97DC,\n 0xE8EA: 0x97ED,\n 0xE8EB: 0x9F4F,\n 0xE8EC: 0x97F2,\n 0xE8ED: 0x7ADF,\n 0xE8EE: 0x97F6,\n 0xE8EF: 0x97F5,\n 0xE8F0: 0x980F,\n 0xE8F1: 0x980C,\n 0xE8F2: 0x9838,\n 0xE8F3: 0x9824,\n 0xE8F4: 0x9821,\n 0xE8F5: 0x9837,\n 0xE8F6: 0x983D,\n 0xE8F7: 0x9846,\n 0xE8F8: 0x984F,\n 0xE8F9: 0x984B,\n 0xE8FA: 0x986B,\n 0xE8FB: 0x986F,\n 0xE8FC: 0x9870,\n 0xE940: 0x9871,\n 0xE941: 0x9874,\n 0xE942: 0x9873,\n 0xE943: 0x98AA,\n 0xE944: 0x98AF,\n 0xE945: 0x98B1,\n 0xE946: 0x98B6,\n 0xE947: 0x98C4,\n 0xE948: 0x98C3,\n 0xE949: 0x98C6,\n 0xE94A: 0x98E9,\n 0xE94B: 0x98EB,\n 0xE94C: 0x9903,\n 0xE94D: 0x9909,\n 0xE94E: 0x9912,\n 0xE94F: 0x9914,\n 0xE950: 0x9918,\n 0xE951: 0x9921,\n 0xE952: 0x991D,\n 0xE953: 0x991E,\n 0xE954: 0x9924,\n 0xE955: 0x9920,\n 0xE956: 0x992C,\n 0xE957: 0x992E,\n 0xE958: 0x993D,\n 0xE959: 0x993E,\n 0xE95A: 0x9942,\n 0xE95B: 0x9949,\n 0xE95C: 0x9945,\n 0xE95D: 0x9950,\n 0xE95E: 0x994B,\n 0xE95F: 0x9951,\n 0xE960: 0x9952,\n 0xE961: 0x994C,\n 0xE962: 0x9955,\n 0xE963: 0x9997,\n 0xE964: 0x9998,\n 0xE965: 0x99A5,\n 0xE966: 0x99AD,\n 0xE967: 0x99AE,\n 0xE968: 0x99BC,\n 0xE969: 0x99DF,\n 0xE96A: 0x99DB,\n 0xE96B: 0x99DD,\n 0xE96C: 0x99D8,\n 0xE96D: 0x99D1,\n 0xE96E: 0x99ED,\n 0xE96F: 0x99EE,\n 0xE970: 0x99F1,\n 0xE971: 0x99F2,\n 0xE972: 0x99FB,\n 0xE973: 0x99F8,\n 0xE974: 0x9A01,\n 0xE975: 0x9A0F,\n 0xE976: 0x9A05,\n 0xE977: 0x99E2,\n 0xE978: 0x9A19,\n 0xE979: 0x9A2B,\n 0xE97A: 0x9A37,\n 0xE97B: 0x9A45,\n 0xE97C: 0x9A42,\n 0xE97D: 0x9A40,\n 0xE97E: 0x9A43,\n 0xE980: 0x9A3E,\n 0xE981: 0x9A55,\n 0xE982: 0x9A4D,\n 0xE983: 0x9A5B,\n 0xE984: 0x9A57,\n 0xE985: 0x9A5F,\n 0xE986: 0x9A62,\n 0xE987: 0x9A65,\n 0xE988: 0x9A64,\n 0xE989: 0x9A69,\n 0xE98A: 0x9A6B,\n 0xE98B: 0x9A6A,\n 0xE98C: 0x9AAD,\n 0xE98D: 0x9AB0,\n 0xE98E: 0x9ABC,\n 0xE98F: 0x9AC0,\n 0xE990: 0x9ACF,\n 0xE991: 0x9AD1,\n 0xE992: 0x9AD3,\n 0xE993: 0x9AD4,\n 0xE994: 0x9ADE,\n 0xE995: 0x9ADF,\n 0xE996: 0x9AE2,\n 0xE997: 0x9AE3,\n 0xE998: 0x9AE6,\n 0xE999: 0x9AEF,\n 0xE99A: 0x9AEB,\n 0xE99B: 0x9AEE,\n 0xE99C: 0x9AF4,\n 0xE99D: 0x9AF1,\n 0xE99E: 0x9AF7,\n 0xE99F: 0x9AFB,\n 0xE9A0: 0x9B06,\n 0xE9A1: 0x9B18,\n 0xE9A2: 0x9B1A,\n 0xE9A3: 0x9B1F,\n 0xE9A4: 0x9B22,\n 0xE9A5: 0x9B23,\n 0xE9A6: 0x9B25,\n 0xE9A7: 0x9B27,\n 0xE9A8: 0x9B28,\n 0xE9A9: 0x9B29,\n 0xE9AA: 0x9B2A,\n 0xE9AB: 0x9B2E,\n 0xE9AC: 0x9B2F,\n 0xE9AD: 0x9B32,\n 0xE9AE: 0x9B44,\n 0xE9AF: 0x9B43,\n 0xE9B0: 0x9B4F,\n 0xE9B1: 0x9B4D,\n 0xE9B2: 0x9B4E,\n 0xE9B3: 0x9B51,\n 0xE9B4: 0x9B58,\n 0xE9B5: 0x9B74,\n 0xE9B6: 0x9B93,\n 0xE9B7: 0x9B83,\n 0xE9B8: 0x9B91,\n 0xE9B9: 0x9B96,\n 0xE9BA: 0x9B97,\n 0xE9BB: 0x9B9F,\n 0xE9BC: 0x9BA0,\n 0xE9BD: 0x9BA8,\n 0xE9BE: 0x9BB4,\n 0xE9BF: 0x9BC0,\n 0xE9C0: 0x9BCA,\n 0xE9C1: 0x9BB9,\n 0xE9C2: 0x9BC6,\n 0xE9C3: 0x9BCF,\n 0xE9C4: 0x9BD1,\n 0xE9C5: 0x9BD2,\n 0xE9C6: 0x9BE3,\n 0xE9C7: 0x9BE2,\n 0xE9C8: 0x9BE4,\n 0xE9C9: 0x9BD4,\n 0xE9CA: 0x9BE1,\n 0xE9CB: 0x9C3A,\n 0xE9CC: 0x9BF2,\n 0xE9CD: 0x9BF1,\n 0xE9CE: 0x9BF0,\n 0xE9CF: 0x9C15,\n 0xE9D0: 0x9C14,\n 0xE9D1: 0x9C09,\n 0xE9D2: 0x9C13,\n 0xE9D3: 0x9C0C,\n 0xE9D4: 0x9C06,\n 0xE9D5: 0x9C08,\n 0xE9D6: 0x9C12,\n 0xE9D7: 0x9C0A,\n 0xE9D8: 0x9C04,\n 0xE9D9: 0x9C2E,\n 0xE9DA: 0x9C1B,\n 0xE9DB: 0x9C25,\n 0xE9DC: 0x9C24,\n 0xE9DD: 0x9C21,\n 0xE9DE: 0x9C30,\n 0xE9DF: 0x9C47,\n 0xE9E0: 0x9C32,\n 0xE9E1: 0x9C46,\n 0xE9E2: 0x9C3E,\n 0xE9E3: 0x9C5A,\n 0xE9E4: 0x9C60,\n 0xE9E5: 0x9C67,\n 0xE9E6: 0x9C76,\n 0xE9E7: 0x9C78,\n 0xE9E8: 0x9CE7,\n 0xE9E9: 0x9CEC,\n 0xE9EA: 0x9CF0,\n 0xE9EB: 0x9D09,\n 0xE9EC: 0x9D08,\n 0xE9ED: 0x9CEB,\n 0xE9EE: 0x9D03,\n 0xE9EF: 0x9D06,\n 0xE9F0: 0x9D2A,\n 0xE9F1: 0x9D26,\n 0xE9F2: 0x9DAF,\n 0xE9F3: 0x9D23,\n 0xE9F4: 0x9D1F,\n 0xE9F5: 0x9D44,\n 0xE9F6: 0x9D15,\n 0xE9F7: 0x9D12,\n 0xE9F8: 0x9D41,\n 0xE9F9: 0x9D3F,\n 0xE9FA: 0x9D3E,\n 0xE9FB: 0x9D46,\n 0xE9FC: 0x9D48,\n 0xEA40: 0x9D5D,\n 0xEA41: 0x9D5E,\n 0xEA42: 0x9D64,\n 0xEA43: 0x9D51,\n 0xEA44: 0x9D50,\n 0xEA45: 0x9D59,\n 0xEA46: 0x9D72,\n 0xEA47: 0x9D89,\n 0xEA48: 0x9D87,\n 0xEA49: 0x9DAB,\n 0xEA4A: 0x9D6F,\n 0xEA4B: 0x9D7A,\n 0xEA4C: 0x9D9A,\n 0xEA4D: 0x9DA4,\n 0xEA4E: 0x9DA9,\n 0xEA4F: 0x9DB2,\n 0xEA50: 0x9DC4,\n 0xEA51: 0x9DC1,\n 0xEA52: 0x9DBB,\n 0xEA53: 0x9DB8,\n 0xEA54: 0x9DBA,\n 0xEA55: 0x9DC6,\n 0xEA56: 0x9DCF,\n 0xEA57: 0x9DC2,\n 0xEA58: 0x9DD9,\n 0xEA59: 0x9DD3,\n 0xEA5A: 0x9DF8,\n 0xEA5B: 0x9DE6,\n 0xEA5C: 0x9DED,\n 0xEA5D: 0x9DEF,\n 0xEA5E: 0x9DFD,\n 0xEA5F: 0x9E1A,\n 0xEA60: 0x9E1B,\n 0xEA61: 0x9E1E,\n 0xEA62: 0x9E75,\n 0xEA63: 0x9E79,\n 0xEA64: 0x9E7D,\n 0xEA65: 0x9E81,\n 0xEA66: 0x9E88,\n 0xEA67: 0x9E8B,\n 0xEA68: 0x9E8C,\n 0xEA69: 0x9E92,\n 0xEA6A: 0x9E95,\n 0xEA6B: 0x9E91,\n 0xEA6C: 0x9E9D,\n 0xEA6D: 0x9EA5,\n 0xEA6E: 0x9EA9,\n 0xEA6F: 0x9EB8,\n 0xEA70: 0x9EAA,\n 0xEA71: 0x9EAD,\n 0xEA72: 0x9761,\n 0xEA73: 0x9ECC,\n 0xEA74: 0x9ECE,\n 0xEA75: 0x9ECF,\n 0xEA76: 0x9ED0,\n 0xEA77: 0x9ED4,\n 0xEA78: 0x9EDC,\n 0xEA79: 0x9EDE,\n 0xEA7A: 0x9EDD,\n 0xEA7B: 0x9EE0,\n 0xEA7C: 0x9EE5,\n 0xEA7D: 0x9EE8,\n 0xEA7E: 0x9EEF,\n 0xEA80: 0x9EF4,\n 0xEA81: 0x9EF6,\n 0xEA82: 0x9EF7,\n 0xEA83: 0x9EF9,\n 0xEA84: 0x9EFB,\n 0xEA85: 0x9EFC,\n 0xEA86: 0x9EFD,\n 0xEA87: 0x9F07,\n 0xEA88: 0x9F08,\n 0xEA89: 0x76B7,\n 0xEA8A: 0x9F15,\n 0xEA8B: 0x9F21,\n 0xEA8C: 0x9F2C,\n 0xEA8D: 0x9F3E,\n 0xEA8E: 0x9F4A,\n 0xEA8F: 0x9F52,\n 0xEA90: 0x9F54,\n 0xEA91: 0x9F63,\n 0xEA92: 0x9F5F,\n 0xEA93: 0x9F60,\n 0xEA94: 0x9F61,\n 0xEA95: 0x9F66,\n 0xEA96: 0x9F67,\n 0xEA97: 0x9F6C,\n 0xEA98: 0x9F6A,\n 0xEA99: 0x9F77,\n 0xEA9A: 0x9F72,\n 0xEA9B: 0x9F76,\n 0xEA9C: 0x9F95,\n 0xEA9D: 0x9F9C,\n 0xEA9E: 0x9FA0,\n 0xEA9F: 0x582F,\n 0xEAA0: 0x69C7,\n 0xEAA1: 0x9059,\n 0xEAA2: 0x7464,\n 0xEAA3: 0x51DC,\n 0xEAA4: 0x7199,\n};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar GenericGF_1 = __webpack_require__(1);\nvar GenericGFPoly_1 = __webpack_require__(2);\nfunction runEuclideanAlgorithm(field, a, b, R) {\n var _a;\n // Assume a's degree is >= b's\n if (a.degree() < b.degree()) {\n _a = [b, a], a = _a[0], b = _a[1];\n }\n var rLast = a;\n var r = b;\n var tLast = field.zero;\n var t = field.one;\n // Run Euclidean algorithm until r's degree is less than R/2\n while (r.degree() >= R / 2) {\n var rLastLast = rLast;\n var tLastLast = tLast;\n rLast = r;\n tLast = t;\n // Divide rLastLast by rLast, with quotient in q and remainder in r\n if (rLast.isZero()) {\n // Euclidean algorithm already terminated?\n return null;\n }\n r = rLastLast;\n var q = field.zero;\n var denominatorLeadingTerm = rLast.getCoefficient(rLast.degree());\n var dltInverse = field.inverse(denominatorLeadingTerm);\n while (r.degree() >= rLast.degree() && !r.isZero()) {\n var degreeDiff = r.degree() - rLast.degree();\n var scale = field.multiply(r.getCoefficient(r.degree()), dltInverse);\n q = q.addOrSubtract(field.buildMonomial(degreeDiff, scale));\n r = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));\n }\n t = q.multiplyPoly(tLast).addOrSubtract(tLastLast);\n if (r.degree() >= rLast.degree()) {\n return null;\n }\n }\n var sigmaTildeAtZero = t.getCoefficient(0);\n if (sigmaTildeAtZero === 0) {\n return null;\n }\n var inverse = field.inverse(sigmaTildeAtZero);\n return [t.multiply(inverse), r.multiply(inverse)];\n}\nfunction findErrorLocations(field, errorLocator) {\n // This is a direct application of Chien's search\n var numErrors = errorLocator.degree();\n if (numErrors === 1) {\n return [errorLocator.getCoefficient(1)];\n }\n var result = new Array(numErrors);\n var errorCount = 0;\n for (var i = 1; i < field.size && errorCount < numErrors; i++) {\n if (errorLocator.evaluateAt(i) === 0) {\n result[errorCount] = field.inverse(i);\n errorCount++;\n }\n }\n if (errorCount !== numErrors) {\n return null;\n }\n return result;\n}\nfunction findErrorMagnitudes(field, errorEvaluator, errorLocations) {\n // This is directly applying Forney's Formula\n var s = errorLocations.length;\n var result = new Array(s);\n for (var i = 0; i < s; i++) {\n var xiInverse = field.inverse(errorLocations[i]);\n var denominator = 1;\n for (var j = 0; j < s; j++) {\n if (i !== j) {\n denominator = field.multiply(denominator, GenericGF_1.addOrSubtractGF(1, field.multiply(errorLocations[j], xiInverse)));\n }\n }\n result[i] = field.multiply(errorEvaluator.evaluateAt(xiInverse), field.inverse(denominator));\n if (field.generatorBase !== 0) {\n result[i] = field.multiply(result[i], xiInverse);\n }\n }\n return result;\n}\nfunction decode(bytes, twoS) {\n var outputBytes = new Uint8ClampedArray(bytes.length);\n outputBytes.set(bytes);\n var field = new GenericGF_1.default(0x011D, 256, 0); // x^8 + x^4 + x^3 + x^2 + 1\n var poly = new GenericGFPoly_1.default(field, outputBytes);\n var syndromeCoefficients = new Uint8ClampedArray(twoS);\n var error = false;\n for (var s = 0; s < twoS; s++) {\n var evaluation = poly.evaluateAt(field.exp(s + field.generatorBase));\n syndromeCoefficients[syndromeCoefficients.length - 1 - s] = evaluation;\n if (evaluation !== 0) {\n error = true;\n }\n }\n if (!error) {\n return outputBytes;\n }\n var syndrome = new GenericGFPoly_1.default(field, syndromeCoefficients);\n var sigmaOmega = runEuclideanAlgorithm(field, field.buildMonomial(twoS, 1), syndrome, twoS);\n if (sigmaOmega === null) {\n return null;\n }\n var errorLocations = findErrorLocations(field, sigmaOmega[0]);\n if (errorLocations == null) {\n return null;\n }\n var errorMagnitudes = findErrorMagnitudes(field, sigmaOmega[1], errorLocations);\n for (var i = 0; i < errorLocations.length; i++) {\n var position = outputBytes.length - 1 - field.log(errorLocations[i]);\n if (position < 0) {\n return null;\n }\n outputBytes[position] = GenericGF_1.addOrSubtractGF(outputBytes[position], errorMagnitudes[i]);\n }\n return outputBytes;\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSIONS = [\n {\n infoBits: null,\n versionNumber: 1,\n alignmentPatternCenters: [],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 7,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 19 }],\n },\n {\n ecCodewordsPerBlock: 10,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 16 }],\n },\n {\n ecCodewordsPerBlock: 13,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 13 }],\n },\n {\n ecCodewordsPerBlock: 17,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 9 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 2,\n alignmentPatternCenters: [6, 18],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 10,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 34 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 28 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 22 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 16 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 3,\n alignmentPatternCenters: [6, 22],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 15,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 55 }],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 44 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 17 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 13 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 4,\n alignmentPatternCenters: [6, 26],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 80 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 32 }],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 24 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 9 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 5,\n alignmentPatternCenters: [6, 30],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 108 }],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 43 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n { numBlocks: 2, dataCodewordsPerBlock: 16 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 11 },\n { numBlocks: 2, dataCodewordsPerBlock: 12 },\n ],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 6,\n alignmentPatternCenters: [6, 34],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 68 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 27 }],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 19 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 15 }],\n },\n ],\n },\n {\n infoBits: 0x07C94,\n versionNumber: 7,\n alignmentPatternCenters: [6, 22, 38],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 78 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 31 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 4, dataCodewordsPerBlock: 15 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 13 },\n { numBlocks: 1, dataCodewordsPerBlock: 14 },\n ],\n },\n ],\n },\n {\n infoBits: 0x085BC,\n versionNumber: 8,\n alignmentPatternCenters: [6, 24, 42],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 97 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 38 },\n { numBlocks: 2, dataCodewordsPerBlock: 39 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 18 },\n { numBlocks: 2, dataCodewordsPerBlock: 19 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 14 },\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x09A99,\n versionNumber: 9,\n alignmentPatternCenters: [6, 26, 46],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 116 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 36 },\n { numBlocks: 2, dataCodewordsPerBlock: 37 },\n ],\n },\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 16 },\n { numBlocks: 4, dataCodewordsPerBlock: 17 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 12 },\n { numBlocks: 4, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0A4D3,\n versionNumber: 10,\n alignmentPatternCenters: [6, 28, 50],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 68 },\n { numBlocks: 2, dataCodewordsPerBlock: 69 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 43 },\n { numBlocks: 1, dataCodewordsPerBlock: 44 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 19 },\n { numBlocks: 2, dataCodewordsPerBlock: 20 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 15 },\n { numBlocks: 2, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0BBF6,\n versionNumber: 11,\n alignmentPatternCenters: [6, 30, 54],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 81 }],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 50 },\n { numBlocks: 4, dataCodewordsPerBlock: 51 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 22 },\n { numBlocks: 4, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 12 },\n { numBlocks: 8, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0C762,\n versionNumber: 12,\n alignmentPatternCenters: [6, 32, 58],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 92 },\n { numBlocks: 2, dataCodewordsPerBlock: 93 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 36 },\n { numBlocks: 2, dataCodewordsPerBlock: 37 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 20 },\n { numBlocks: 6, dataCodewordsPerBlock: 21 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 14 },\n { numBlocks: 4, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0D847,\n versionNumber: 13,\n alignmentPatternCenters: [6, 34, 62],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 107 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 37 },\n { numBlocks: 1, dataCodewordsPerBlock: 38 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 20 },\n { numBlocks: 4, dataCodewordsPerBlock: 21 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 11 },\n { numBlocks: 4, dataCodewordsPerBlock: 12 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0E60D,\n versionNumber: 14,\n alignmentPatternCenters: [6, 26, 46, 66],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 115 },\n { numBlocks: 1, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 40 },\n { numBlocks: 5, dataCodewordsPerBlock: 41 },\n ],\n },\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 16 },\n { numBlocks: 5, dataCodewordsPerBlock: 17 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 12 },\n { numBlocks: 5, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0F928,\n versionNumber: 15,\n alignmentPatternCenters: [6, 26, 48, 70],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 87 },\n { numBlocks: 1, dataCodewordsPerBlock: 88 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 41 },\n { numBlocks: 5, dataCodewordsPerBlock: 42 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 24 },\n { numBlocks: 7, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 12 },\n { numBlocks: 7, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x10B78,\n versionNumber: 16,\n alignmentPatternCenters: [6, 26, 50, 74],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 98 },\n { numBlocks: 1, dataCodewordsPerBlock: 99 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 45 },\n { numBlocks: 3, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 19 },\n { numBlocks: 2, dataCodewordsPerBlock: 20 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 15 },\n { numBlocks: 13, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1145D,\n versionNumber: 17,\n alignmentPatternCenters: [6, 30, 54, 78],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 107 },\n { numBlocks: 5, dataCodewordsPerBlock: 108 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 46 },\n { numBlocks: 1, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 22 },\n { numBlocks: 15, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 17, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x12A17,\n versionNumber: 18,\n alignmentPatternCenters: [6, 30, 56, 82],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 120 },\n { numBlocks: 1, dataCodewordsPerBlock: 121 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 9, dataCodewordsPerBlock: 43 },\n { numBlocks: 4, dataCodewordsPerBlock: 44 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 22 },\n { numBlocks: 1, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x13532,\n versionNumber: 19,\n alignmentPatternCenters: [6, 30, 58, 86],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 113 },\n { numBlocks: 4, dataCodewordsPerBlock: 114 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 44 },\n { numBlocks: 11, dataCodewordsPerBlock: 45 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 21 },\n { numBlocks: 4, dataCodewordsPerBlock: 22 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 9, dataCodewordsPerBlock: 13 },\n { numBlocks: 16, dataCodewordsPerBlock: 14 },\n ],\n },\n ],\n },\n {\n infoBits: 0x149A6,\n versionNumber: 20,\n alignmentPatternCenters: [6, 34, 62, 90],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 107 },\n { numBlocks: 5, dataCodewordsPerBlock: 108 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 41 },\n { numBlocks: 13, dataCodewordsPerBlock: 42 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 24 },\n { numBlocks: 5, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 15 },\n { numBlocks: 10, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x15683,\n versionNumber: 21,\n alignmentPatternCenters: [6, 28, 50, 72, 94],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 116 },\n { numBlocks: 4, dataCodewordsPerBlock: 117 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 42 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 22 },\n { numBlocks: 6, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 16 },\n { numBlocks: 6, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x168C9,\n versionNumber: 22,\n alignmentPatternCenters: [6, 26, 50, 74, 98],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 111 },\n { numBlocks: 7, dataCodewordsPerBlock: 112 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 46 }],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 24 },\n { numBlocks: 16, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 34, dataCodewordsPerBlock: 13 }],\n },\n ],\n },\n {\n infoBits: 0x177EC,\n versionNumber: 23,\n alignmentPatternCenters: [6, 30, 54, 74, 102],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 121 },\n { numBlocks: 5, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 47 },\n { numBlocks: 14, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 16, dataCodewordsPerBlock: 15 },\n { numBlocks: 14, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x18EC4,\n versionNumber: 24,\n alignmentPatternCenters: [6, 28, 54, 80, 106],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 117 },\n { numBlocks: 4, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 45 },\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 24 },\n { numBlocks: 16, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 30, dataCodewordsPerBlock: 16 },\n { numBlocks: 2, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x191E1,\n versionNumber: 25,\n alignmentPatternCenters: [6, 32, 58, 84, 110],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 106 },\n { numBlocks: 4, dataCodewordsPerBlock: 107 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 47 },\n { numBlocks: 13, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 24 },\n { numBlocks: 22, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 15 },\n { numBlocks: 13, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1AFAB,\n versionNumber: 26,\n alignmentPatternCenters: [6, 30, 58, 86, 114],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 114 },\n { numBlocks: 2, dataCodewordsPerBlock: 115 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 46 },\n { numBlocks: 4, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 28, dataCodewordsPerBlock: 22 },\n { numBlocks: 6, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 33, dataCodewordsPerBlock: 16 },\n { numBlocks: 4, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1B08E,\n versionNumber: 27,\n alignmentPatternCenters: [6, 34, 62, 90, 118],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 122 },\n { numBlocks: 4, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 45 },\n { numBlocks: 3, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 23 },\n { numBlocks: 26, dataCodewordsPerBlock: 24 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 15 },\n { numBlocks: 28, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1CC1A,\n versionNumber: 28,\n alignmentPatternCenters: [6, 26, 50, 74, 98, 122],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 117 },\n { numBlocks: 10, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 45 },\n { numBlocks: 23, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 24 },\n { numBlocks: 31, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 15 },\n { numBlocks: 31, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1D33F,\n versionNumber: 29,\n alignmentPatternCenters: [6, 30, 54, 78, 102, 126],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 116 },\n { numBlocks: 7, dataCodewordsPerBlock: 117 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 21, dataCodewordsPerBlock: 45 },\n { numBlocks: 7, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 23 },\n { numBlocks: 37, dataCodewordsPerBlock: 24 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n { numBlocks: 26, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1ED75,\n versionNumber: 30,\n alignmentPatternCenters: [6, 26, 52, 78, 104, 130],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 115 },\n { numBlocks: 10, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 47 },\n { numBlocks: 10, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 24 },\n { numBlocks: 25, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 23, dataCodewordsPerBlock: 15 },\n { numBlocks: 25, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1F250,\n versionNumber: 31,\n alignmentPatternCenters: [6, 30, 56, 82, 108, 134],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 115 },\n { numBlocks: 3, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 46 },\n { numBlocks: 29, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 42, dataCodewordsPerBlock: 24 },\n { numBlocks: 1, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 23, dataCodewordsPerBlock: 15 },\n { numBlocks: 28, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x209D5,\n versionNumber: 32,\n alignmentPatternCenters: [6, 34, 60, 86, 112, 138],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 115 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 46 },\n { numBlocks: 23, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 24 },\n { numBlocks: 35, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n { numBlocks: 35, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x216F0,\n versionNumber: 33,\n alignmentPatternCenters: [6, 30, 58, 86, 114, 142],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 115 },\n { numBlocks: 1, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n { numBlocks: 21, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 29, dataCodewordsPerBlock: 24 },\n { numBlocks: 19, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 15 },\n { numBlocks: 46, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x228BA,\n versionNumber: 34,\n alignmentPatternCenters: [6, 34, 62, 90, 118, 146],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 115 },\n { numBlocks: 6, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n { numBlocks: 23, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 44, dataCodewordsPerBlock: 24 },\n { numBlocks: 7, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 59, dataCodewordsPerBlock: 16 },\n { numBlocks: 1, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x2379F,\n versionNumber: 35,\n alignmentPatternCenters: [6, 30, 54, 78, 102, 126, 150],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 121 },\n { numBlocks: 7, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 47 },\n { numBlocks: 26, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 39, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 15 },\n { numBlocks: 41, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x24B0B,\n versionNumber: 36,\n alignmentPatternCenters: [6, 24, 50, 76, 102, 128, 154],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 121 },\n { numBlocks: 14, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 47 },\n { numBlocks: 34, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 46, dataCodewordsPerBlock: 24 },\n { numBlocks: 10, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n { numBlocks: 64, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x2542E,\n versionNumber: 37,\n alignmentPatternCenters: [6, 28, 54, 80, 106, 132, 158],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 122 },\n { numBlocks: 4, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 29, dataCodewordsPerBlock: 46 },\n { numBlocks: 14, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 49, dataCodewordsPerBlock: 24 },\n { numBlocks: 10, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 24, dataCodewordsPerBlock: 15 },\n { numBlocks: 46, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x26A64,\n versionNumber: 38,\n alignmentPatternCenters: [6, 32, 58, 84, 110, 136, 162],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 122 },\n { numBlocks: 18, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 46 },\n { numBlocks: 32, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 48, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 42, dataCodewordsPerBlock: 15 },\n { numBlocks: 32, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x27541,\n versionNumber: 39,\n alignmentPatternCenters: [6, 26, 54, 82, 110, 138, 166],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 20, dataCodewordsPerBlock: 117 },\n { numBlocks: 4, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 40, dataCodewordsPerBlock: 47 },\n { numBlocks: 7, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 43, dataCodewordsPerBlock: 24 },\n { numBlocks: 22, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 15 },\n { numBlocks: 67, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x28C69,\n versionNumber: 40,\n alignmentPatternCenters: [6, 30, 58, 86, 114, 142, 170],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 118 },\n { numBlocks: 6, dataCodewordsPerBlock: 119 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 18, dataCodewordsPerBlock: 47 },\n { numBlocks: 31, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 34, dataCodewordsPerBlock: 24 },\n { numBlocks: 34, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 20, dataCodewordsPerBlock: 15 },\n { numBlocks: 61, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n];\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitMatrix_1 = __webpack_require__(0);\nfunction squareToQuadrilateral(p1, p2, p3, p4) {\n var dx3 = p1.x - p2.x + p3.x - p4.x;\n var dy3 = p1.y - p2.y + p3.y - p4.y;\n if (dx3 === 0 && dy3 === 0) { // Affine\n return {\n a11: p2.x - p1.x,\n a12: p2.y - p1.y,\n a13: 0,\n a21: p3.x - p2.x,\n a22: p3.y - p2.y,\n a23: 0,\n a31: p1.x,\n a32: p1.y,\n a33: 1,\n };\n }\n else {\n var dx1 = p2.x - p3.x;\n var dx2 = p4.x - p3.x;\n var dy1 = p2.y - p3.y;\n var dy2 = p4.y - p3.y;\n var denominator = dx1 * dy2 - dx2 * dy1;\n var a13 = (dx3 * dy2 - dx2 * dy3) / denominator;\n var a23 = (dx1 * dy3 - dx3 * dy1) / denominator;\n return {\n a11: p2.x - p1.x + a13 * p2.x,\n a12: p2.y - p1.y + a13 * p2.y,\n a13: a13,\n a21: p4.x - p1.x + a23 * p4.x,\n a22: p4.y - p1.y + a23 * p4.y,\n a23: a23,\n a31: p1.x,\n a32: p1.y,\n a33: 1,\n };\n }\n}\nfunction quadrilateralToSquare(p1, p2, p3, p4) {\n // Here, the adjoint serves as the inverse:\n var sToQ = squareToQuadrilateral(p1, p2, p3, p4);\n return {\n a11: sToQ.a22 * sToQ.a33 - sToQ.a23 * sToQ.a32,\n a12: sToQ.a13 * sToQ.a32 - sToQ.a12 * sToQ.a33,\n a13: sToQ.a12 * sToQ.a23 - sToQ.a13 * sToQ.a22,\n a21: sToQ.a23 * sToQ.a31 - sToQ.a21 * sToQ.a33,\n a22: sToQ.a11 * sToQ.a33 - sToQ.a13 * sToQ.a31,\n a23: sToQ.a13 * sToQ.a21 - sToQ.a11 * sToQ.a23,\n a31: sToQ.a21 * sToQ.a32 - sToQ.a22 * sToQ.a31,\n a32: sToQ.a12 * sToQ.a31 - sToQ.a11 * sToQ.a32,\n a33: sToQ.a11 * sToQ.a22 - sToQ.a12 * sToQ.a21,\n };\n}\nfunction times(a, b) {\n return {\n a11: a.a11 * b.a11 + a.a21 * b.a12 + a.a31 * b.a13,\n a12: a.a12 * b.a11 + a.a22 * b.a12 + a.a32 * b.a13,\n a13: a.a13 * b.a11 + a.a23 * b.a12 + a.a33 * b.a13,\n a21: a.a11 * b.a21 + a.a21 * b.a22 + a.a31 * b.a23,\n a22: a.a12 * b.a21 + a.a22 * b.a22 + a.a32 * b.a23,\n a23: a.a13 * b.a21 + a.a23 * b.a22 + a.a33 * b.a23,\n a31: a.a11 * b.a31 + a.a21 * b.a32 + a.a31 * b.a33,\n a32: a.a12 * b.a31 + a.a22 * b.a32 + a.a32 * b.a33,\n a33: a.a13 * b.a31 + a.a23 * b.a32 + a.a33 * b.a33,\n };\n}\nfunction extract(image, location) {\n var qToS = quadrilateralToSquare({ x: 3.5, y: 3.5 }, { x: location.dimension - 3.5, y: 3.5 }, { x: location.dimension - 6.5, y: location.dimension - 6.5 }, { x: 3.5, y: location.dimension - 3.5 });\n var sToQ = squareToQuadrilateral(location.topLeft, location.topRight, location.alignmentPattern, location.bottomLeft);\n var transform = times(sToQ, qToS);\n var matrix = BitMatrix_1.BitMatrix.createEmpty(location.dimension, location.dimension);\n var mappingFunction = function (x, y) {\n var denominator = transform.a13 * x + transform.a23 * y + transform.a33;\n return {\n x: (transform.a11 * x + transform.a21 * y + transform.a31) / denominator,\n y: (transform.a12 * x + transform.a22 * y + transform.a32) / denominator,\n };\n };\n for (var y = 0; y < location.dimension; y++) {\n for (var x = 0; x < location.dimension; x++) {\n var xValue = x + 0.5;\n var yValue = y + 0.5;\n var sourcePixel = mappingFunction(xValue, yValue);\n matrix.set(x, y, image.get(Math.floor(sourcePixel.x), Math.floor(sourcePixel.y)));\n }\n }\n return {\n matrix: matrix,\n mappingFunction: mappingFunction,\n };\n}\nexports.extract = extract;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MAX_FINDERPATTERNS_TO_SEARCH = 4;\nvar MIN_QUAD_RATIO = 0.5;\nvar MAX_QUAD_RATIO = 1.5;\nvar distance = function (a, b) { return Math.sqrt(Math.pow((b.x - a.x), 2) + Math.pow((b.y - a.y), 2)); };\nfunction sum(values) {\n return values.reduce(function (a, b) { return a + b; });\n}\n// Takes three finder patterns and organizes them into topLeft, topRight, etc\nfunction reorderFinderPatterns(pattern1, pattern2, pattern3) {\n var _a, _b, _c, _d;\n // Find distances between pattern centers\n var oneTwoDistance = distance(pattern1, pattern2);\n var twoThreeDistance = distance(pattern2, pattern3);\n var oneThreeDistance = distance(pattern1, pattern3);\n var bottomLeft;\n var topLeft;\n var topRight;\n // Assume one closest to other two is B; A and C will just be guesses at first\n if (twoThreeDistance >= oneTwoDistance && twoThreeDistance >= oneThreeDistance) {\n _a = [pattern2, pattern1, pattern3], bottomLeft = _a[0], topLeft = _a[1], topRight = _a[2];\n }\n else if (oneThreeDistance >= twoThreeDistance && oneThreeDistance >= oneTwoDistance) {\n _b = [pattern1, pattern2, pattern3], bottomLeft = _b[0], topLeft = _b[1], topRight = _b[2];\n }\n else {\n _c = [pattern1, pattern3, pattern2], bottomLeft = _c[0], topLeft = _c[1], topRight = _c[2];\n }\n // Use cross product to figure out whether bottomLeft (A) and topRight (C) are correct or flipped in relation to topLeft (B)\n // This asks whether BC x BA has a positive z component, which is the arrangement we want. If it's negative, then\n // we've got it flipped around and should swap topRight and bottomLeft.\n if (((topRight.x - topLeft.x) * (bottomLeft.y - topLeft.y)) - ((topRight.y - topLeft.y) * (bottomLeft.x - topLeft.x)) < 0) {\n _d = [topRight, bottomLeft], bottomLeft = _d[0], topRight = _d[1];\n }\n return { bottomLeft: bottomLeft, topLeft: topLeft, topRight: topRight };\n}\n// Computes the dimension (number of modules on a side) of the QR Code based on the position of the finder patterns\nfunction computeDimension(topLeft, topRight, bottomLeft, matrix) {\n var moduleSize = (sum(countBlackWhiteRun(topLeft, bottomLeft, matrix, 5)) / 7 + // Divide by 7 since the ratio is 1:1:3:1:1\n sum(countBlackWhiteRun(topLeft, topRight, matrix, 5)) / 7 +\n sum(countBlackWhiteRun(bottomLeft, topLeft, matrix, 5)) / 7 +\n sum(countBlackWhiteRun(topRight, topLeft, matrix, 5)) / 7) / 4;\n if (moduleSize < 1) {\n throw new Error(\"Invalid module size\");\n }\n var topDimension = Math.round(distance(topLeft, topRight) / moduleSize);\n var sideDimension = Math.round(distance(topLeft, bottomLeft) / moduleSize);\n var dimension = Math.floor((topDimension + sideDimension) / 2) + 7;\n switch (dimension % 4) {\n case 0:\n dimension++;\n break;\n case 2:\n dimension--;\n break;\n }\n return { dimension: dimension, moduleSize: moduleSize };\n}\n// Takes an origin point and an end point and counts the sizes of the black white run from the origin towards the end point.\n// Returns an array of elements, representing the pixel size of the black white run.\n// Uses a variant of http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\nfunction countBlackWhiteRunTowardsPoint(origin, end, matrix, length) {\n var switchPoints = [{ x: Math.floor(origin.x), y: Math.floor(origin.y) }];\n var steep = Math.abs(end.y - origin.y) > Math.abs(end.x - origin.x);\n var fromX;\n var fromY;\n var toX;\n var toY;\n if (steep) {\n fromX = Math.floor(origin.y);\n fromY = Math.floor(origin.x);\n toX = Math.floor(end.y);\n toY = Math.floor(end.x);\n }\n else {\n fromX = Math.floor(origin.x);\n fromY = Math.floor(origin.y);\n toX = Math.floor(end.x);\n toY = Math.floor(end.y);\n }\n var dx = Math.abs(toX - fromX);\n var dy = Math.abs(toY - fromY);\n var error = Math.floor(-dx / 2);\n var xStep = fromX < toX ? 1 : -1;\n var yStep = fromY < toY ? 1 : -1;\n var currentPixel = true;\n // Loop up until x == toX, but not beyond\n for (var x = fromX, y = fromY; x !== toX + xStep; x += xStep) {\n // Does current pixel mean we have moved white to black or vice versa?\n // Scanning black in state 0,2 and white in state 1, so if we find the wrong\n // color, advance to next state or end if we are in state 2 already\n var realX = steep ? y : x;\n var realY = steep ? x : y;\n if (matrix.get(realX, realY) !== currentPixel) {\n currentPixel = !currentPixel;\n switchPoints.push({ x: realX, y: realY });\n if (switchPoints.length === length + 1) {\n break;\n }\n }\n error += dy;\n if (error > 0) {\n if (y === toY) {\n break;\n }\n y += yStep;\n error -= dx;\n }\n }\n var distances = [];\n for (var i = 0; i < length; i++) {\n if (switchPoints[i] && switchPoints[i + 1]) {\n distances.push(distance(switchPoints[i], switchPoints[i + 1]));\n }\n else {\n distances.push(0);\n }\n }\n return distances;\n}\n// Takes an origin point and an end point and counts the sizes of the black white run in the origin point\n// along the line that intersects with the end point. Returns an array of elements, representing the pixel sizes\n// of the black white run. Takes a length which represents the number of switches from black to white to look for.\nfunction countBlackWhiteRun(origin, end, matrix, length) {\n var _a;\n var rise = end.y - origin.y;\n var run = end.x - origin.x;\n var towardsEnd = countBlackWhiteRunTowardsPoint(origin, end, matrix, Math.ceil(length / 2));\n var awayFromEnd = countBlackWhiteRunTowardsPoint(origin, { x: origin.x - run, y: origin.y - rise }, matrix, Math.ceil(length / 2));\n var middleValue = towardsEnd.shift() + awayFromEnd.shift() - 1; // Substract one so we don't double count a pixel\n return (_a = awayFromEnd.concat(middleValue)).concat.apply(_a, towardsEnd);\n}\n// Takes in a black white run and an array of expected ratios. Returns the average size of the run as well as the \"error\" -\n// that is the amount the run diverges from the expected ratio\nfunction scoreBlackWhiteRun(sequence, ratios) {\n var averageSize = sum(sequence) / sum(ratios);\n var error = 0;\n ratios.forEach(function (ratio, i) {\n error += Math.pow((sequence[i] - ratio * averageSize), 2);\n });\n return { averageSize: averageSize, error: error };\n}\n// Takes an X,Y point and an array of sizes and scores the point against those ratios.\n// For example for a finder pattern takes the ratio list of 1:1:3:1:1 and checks horizontal, vertical and diagonal ratios\n// against that.\nfunction scorePattern(point, ratios, matrix) {\n try {\n var horizontalRun = countBlackWhiteRun(point, { x: -1, y: point.y }, matrix, ratios.length);\n var verticalRun = countBlackWhiteRun(point, { x: point.x, y: -1 }, matrix, ratios.length);\n var topLeftPoint = {\n x: Math.max(0, point.x - point.y) - 1,\n y: Math.max(0, point.y - point.x) - 1,\n };\n var topLeftBottomRightRun = countBlackWhiteRun(point, topLeftPoint, matrix, ratios.length);\n var bottomLeftPoint = {\n x: Math.min(matrix.width, point.x + point.y) + 1,\n y: Math.min(matrix.height, point.y + point.x) + 1,\n };\n var bottomLeftTopRightRun = countBlackWhiteRun(point, bottomLeftPoint, matrix, ratios.length);\n var horzError = scoreBlackWhiteRun(horizontalRun, ratios);\n var vertError = scoreBlackWhiteRun(verticalRun, ratios);\n var diagDownError = scoreBlackWhiteRun(topLeftBottomRightRun, ratios);\n var diagUpError = scoreBlackWhiteRun(bottomLeftTopRightRun, ratios);\n var ratioError = Math.sqrt(horzError.error * horzError.error +\n vertError.error * vertError.error +\n diagDownError.error * diagDownError.error +\n diagUpError.error * diagUpError.error);\n var avgSize = (horzError.averageSize + vertError.averageSize + diagDownError.averageSize + diagUpError.averageSize) / 4;\n var sizeError = (Math.pow((horzError.averageSize - avgSize), 2) +\n Math.pow((vertError.averageSize - avgSize), 2) +\n Math.pow((diagDownError.averageSize - avgSize), 2) +\n Math.pow((diagUpError.averageSize - avgSize), 2)) / avgSize;\n return ratioError + sizeError;\n }\n catch (_a) {\n return Infinity;\n }\n}\nfunction recenterLocation(matrix, p) {\n var leftX = Math.round(p.x);\n while (matrix.get(leftX, Math.round(p.y))) {\n leftX--;\n }\n var rightX = Math.round(p.x);\n while (matrix.get(rightX, Math.round(p.y))) {\n rightX++;\n }\n var x = (leftX + rightX) / 2;\n var topY = Math.round(p.y);\n while (matrix.get(Math.round(x), topY)) {\n topY--;\n }\n var bottomY = Math.round(p.y);\n while (matrix.get(Math.round(x), bottomY)) {\n bottomY++;\n }\n var y = (topY + bottomY) / 2;\n return { x: x, y: y };\n}\nfunction locate(matrix) {\n var finderPatternQuads = [];\n var activeFinderPatternQuads = [];\n var alignmentPatternQuads = [];\n var activeAlignmentPatternQuads = [];\n var _loop_1 = function (y) {\n var length_1 = 0;\n var lastBit = false;\n var scans = [0, 0, 0, 0, 0];\n var _loop_2 = function (x) {\n var v = matrix.get(x, y);\n if (v === lastBit) {\n length_1++;\n }\n else {\n scans = [scans[1], scans[2], scans[3], scans[4], length_1];\n length_1 = 1;\n lastBit = v;\n // Do the last 5 color changes ~ match the expected ratio for a finder pattern? 1:1:3:1:1 of b:w:b:w:b\n var averageFinderPatternBlocksize = sum(scans) / 7;\n var validFinderPattern = Math.abs(scans[0] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[1] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[2] - 3 * averageFinderPatternBlocksize) < 3 * averageFinderPatternBlocksize &&\n Math.abs(scans[3] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[4] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n !v; // And make sure the current pixel is white since finder patterns are bordered in white\n // Do the last 3 color changes ~ match the expected ratio for an alignment pattern? 1:1:1 of w:b:w\n var averageAlignmentPatternBlocksize = sum(scans.slice(-3)) / 3;\n var validAlignmentPattern = Math.abs(scans[2] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n Math.abs(scans[3] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n Math.abs(scans[4] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n v; // Is the current pixel black since alignment patterns are bordered in black\n if (validFinderPattern) {\n // Compute the start and end x values of the large center black square\n var endX_1 = x - scans[3] - scans[4];\n var startX_1 = endX_1 - scans[2];\n var line = { startX: startX_1, endX: endX_1, y: y };\n // Is there a quad directly above the current spot? If so, extend it with the new line. Otherwise, create a new quad with\n // that line as the starting point.\n var matchingQuads = activeFinderPatternQuads.filter(function (q) {\n return (startX_1 >= q.bottom.startX && startX_1 <= q.bottom.endX) ||\n (endX_1 >= q.bottom.startX && startX_1 <= q.bottom.endX) ||\n (startX_1 <= q.bottom.startX && endX_1 >= q.bottom.endX && ((scans[2] / (q.bottom.endX - q.bottom.startX)) < MAX_QUAD_RATIO &&\n (scans[2] / (q.bottom.endX - q.bottom.startX)) > MIN_QUAD_RATIO));\n });\n if (matchingQuads.length > 0) {\n matchingQuads[0].bottom = line;\n }\n else {\n activeFinderPatternQuads.push({ top: line, bottom: line });\n }\n }\n if (validAlignmentPattern) {\n // Compute the start and end x values of the center black square\n var endX_2 = x - scans[4];\n var startX_2 = endX_2 - scans[3];\n var line = { startX: startX_2, y: y, endX: endX_2 };\n // Is there a quad directly above the current spot? If so, extend it with the new line. Otherwise, create a new quad with\n // that line as the starting point.\n var matchingQuads = activeAlignmentPatternQuads.filter(function (q) {\n return (startX_2 >= q.bottom.startX && startX_2 <= q.bottom.endX) ||\n (endX_2 >= q.bottom.startX && startX_2 <= q.bottom.endX) ||\n (startX_2 <= q.bottom.startX && endX_2 >= q.bottom.endX && ((scans[2] / (q.bottom.endX - q.bottom.startX)) < MAX_QUAD_RATIO &&\n (scans[2] / (q.bottom.endX - q.bottom.startX)) > MIN_QUAD_RATIO));\n });\n if (matchingQuads.length > 0) {\n matchingQuads[0].bottom = line;\n }\n else {\n activeAlignmentPatternQuads.push({ top: line, bottom: line });\n }\n }\n }\n };\n for (var x = -1; x <= matrix.width; x++) {\n _loop_2(x);\n }\n finderPatternQuads.push.apply(finderPatternQuads, activeFinderPatternQuads.filter(function (q) { return q.bottom.y !== y && q.bottom.y - q.top.y >= 2; }));\n activeFinderPatternQuads = activeFinderPatternQuads.filter(function (q) { return q.bottom.y === y; });\n alignmentPatternQuads.push.apply(alignmentPatternQuads, activeAlignmentPatternQuads.filter(function (q) { return q.bottom.y !== y; }));\n activeAlignmentPatternQuads = activeAlignmentPatternQuads.filter(function (q) { return q.bottom.y === y; });\n };\n for (var y = 0; y <= matrix.height; y++) {\n _loop_1(y);\n }\n finderPatternQuads.push.apply(finderPatternQuads, activeFinderPatternQuads.filter(function (q) { return q.bottom.y - q.top.y >= 2; }));\n alignmentPatternQuads.push.apply(alignmentPatternQuads, activeAlignmentPatternQuads);\n var finderPatternGroups = finderPatternQuads\n .filter(function (q) { return q.bottom.y - q.top.y >= 2; }) // All quads must be at least 2px tall since the center square is larger than a block\n .map(function (q) {\n var x = (q.top.startX + q.top.endX + q.bottom.startX + q.bottom.endX) / 4;\n var y = (q.top.y + q.bottom.y + 1) / 2;\n if (!matrix.get(Math.round(x), Math.round(y))) {\n return;\n }\n var lengths = [q.top.endX - q.top.startX, q.bottom.endX - q.bottom.startX, q.bottom.y - q.top.y + 1];\n var size = sum(lengths) / lengths.length;\n var score = scorePattern({ x: Math.round(x), y: Math.round(y) }, [1, 1, 3, 1, 1], matrix);\n return { score: score, x: x, y: y, size: size };\n })\n .filter(function (q) { return !!q; }) // Filter out any rejected quads from above\n .sort(function (a, b) { return a.score - b.score; })\n // Now take the top finder pattern options and try to find 2 other options with a similar size.\n .map(function (point, i, finderPatterns) {\n if (i > MAX_FINDERPATTERNS_TO_SEARCH) {\n return null;\n }\n var otherPoints = finderPatterns\n .filter(function (p, ii) { return i !== ii; })\n .map(function (p) { return ({ x: p.x, y: p.y, score: p.score + (Math.pow((p.size - point.size), 2)) / point.size, size: p.size }); })\n .sort(function (a, b) { return a.score - b.score; });\n if (otherPoints.length < 2) {\n return null;\n }\n var score = point.score + otherPoints[0].score + otherPoints[1].score;\n return { points: [point].concat(otherPoints.slice(0, 2)), score: score };\n })\n .filter(function (q) { return !!q; }) // Filter out any rejected finder patterns from above\n .sort(function (a, b) { return a.score - b.score; });\n if (finderPatternGroups.length === 0) {\n return null;\n }\n var _a = reorderFinderPatterns(finderPatternGroups[0].points[0], finderPatternGroups[0].points[1], finderPatternGroups[0].points[2]), topRight = _a.topRight, topLeft = _a.topLeft, bottomLeft = _a.bottomLeft;\n var alignment = findAlignmentPattern(matrix, alignmentPatternQuads, topRight, topLeft, bottomLeft);\n var result = [];\n if (alignment) {\n result.push({\n alignmentPattern: { x: alignment.alignmentPattern.x, y: alignment.alignmentPattern.y },\n bottomLeft: { x: bottomLeft.x, y: bottomLeft.y },\n dimension: alignment.dimension,\n topLeft: { x: topLeft.x, y: topLeft.y },\n topRight: { x: topRight.x, y: topRight.y },\n });\n }\n // We normally use the center of the quads as the location of the tracking points, which is optimal for most cases and will account\n // for a skew in the image. However, In some cases, a slight skew might not be real and instead be caused by image compression\n // errors and/or low resolution. For those cases, we'd be better off centering the point exactly in the middle of the black area. We\n // compute and return the location data for the naively centered points as it is little additional work and allows for multiple\n // attempts at decoding harder images.\n var midTopRight = recenterLocation(matrix, topRight);\n var midTopLeft = recenterLocation(matrix, topLeft);\n var midBottomLeft = recenterLocation(matrix, bottomLeft);\n var centeredAlignment = findAlignmentPattern(matrix, alignmentPatternQuads, midTopRight, midTopLeft, midBottomLeft);\n if (centeredAlignment) {\n result.push({\n alignmentPattern: { x: centeredAlignment.alignmentPattern.x, y: centeredAlignment.alignmentPattern.y },\n bottomLeft: { x: midBottomLeft.x, y: midBottomLeft.y },\n topLeft: { x: midTopLeft.x, y: midTopLeft.y },\n topRight: { x: midTopRight.x, y: midTopRight.y },\n dimension: centeredAlignment.dimension,\n });\n }\n if (result.length === 0) {\n return null;\n }\n return result;\n}\nexports.locate = locate;\nfunction findAlignmentPattern(matrix, alignmentPatternQuads, topRight, topLeft, bottomLeft) {\n var _a;\n // Now that we've found the three finder patterns we can determine the blockSize and the size of the QR code.\n // We'll use these to help find the alignment pattern but also later when we do the extraction.\n var dimension;\n var moduleSize;\n try {\n (_a = computeDimension(topLeft, topRight, bottomLeft, matrix), dimension = _a.dimension, moduleSize = _a.moduleSize);\n }\n catch (e) {\n return null;\n }\n // Now find the alignment pattern\n var bottomRightFinderPattern = {\n x: topRight.x - topLeft.x + bottomLeft.x,\n y: topRight.y - topLeft.y + bottomLeft.y,\n };\n var modulesBetweenFinderPatterns = ((distance(topLeft, bottomLeft) + distance(topLeft, topRight)) / 2 / moduleSize);\n var correctionToTopLeft = 1 - (3 / modulesBetweenFinderPatterns);\n var expectedAlignmentPattern = {\n x: topLeft.x + correctionToTopLeft * (bottomRightFinderPattern.x - topLeft.x),\n y: topLeft.y + correctionToTopLeft * (bottomRightFinderPattern.y - topLeft.y),\n };\n var alignmentPatterns = alignmentPatternQuads\n .map(function (q) {\n var x = (q.top.startX + q.top.endX + q.bottom.startX + q.bottom.endX) / 4;\n var y = (q.top.y + q.bottom.y + 1) / 2;\n if (!matrix.get(Math.floor(x), Math.floor(y))) {\n return;\n }\n var lengths = [q.top.endX - q.top.startX, q.bottom.endX - q.bottom.startX, (q.bottom.y - q.top.y + 1)];\n var size = sum(lengths) / lengths.length;\n var sizeScore = scorePattern({ x: Math.floor(x), y: Math.floor(y) }, [1, 1, 1], matrix);\n var score = sizeScore + distance({ x: x, y: y }, expectedAlignmentPattern);\n return { x: x, y: y, score: score };\n })\n .filter(function (v) { return !!v; })\n .sort(function (a, b) { return a.score - b.score; });\n // If there are less than 15 modules between finder patterns it's a version 1 QR code and as such has no alignmemnt pattern\n // so we can only use our best guess.\n var alignmentPattern = modulesBetweenFinderPatterns >= 15 && alignmentPatterns.length ? alignmentPatterns[0] : expectedAlignmentPattern;\n return { alignmentPattern: alignmentPattern, dimension: dimension };\n}\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","import React, { useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationResult,\n useLocalStorage,\n useMemoizedFn,\n useOrderlyContext,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport {\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Box,\n cn,\n Divider,\n Flex,\n modal,\n SimpleSheet,\n Switch,\n ThrottledButton,\n toast,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { TPSLAdvancedWidget } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { AdditionalConfigButton } from \"./components/additional/additionalConfigButton\";\nimport {\n AdditionalInfo,\n AdditionalInfoProps,\n} from \"./components/additional/additionalInfo\";\nimport { PinButton } from \"./components/additional/pinButton\";\nimport { AdvancedTPSLResult } from \"./components/advancedTPSLResult\";\nimport { AssetInfo } from \"./components/assetInfo\";\nimport { Available } from \"./components/available\";\nimport { orderConfirmDialogId } from \"./components/dialog/confirm.ui\";\nimport { MaxQtyConfirm } from \"./components/dialog/maxQtyConfirm\";\nimport { scaledOrderConfirmDialogId } from \"./components/dialog/scaledOrderConfirm\";\nimport { OrderEntryHeader } from \"./components/header\";\nimport { OrderEntryProvider } from \"./components/orderEntryProvider\";\nimport { OrderInput } from \"./components/orderInput\";\nimport { QuantitySlider } from \"./components/quantitySlider\";\nimport { ReduceOnlySwitch } from \"./components/reduceOnlySwitch\";\nimport { OrderTPSL } from \"./components/tpsl\";\nimport { type OrderEntryScriptReturn } from \"./orderEntry.script\";\nimport { getScaledPlaceOrderMessage } from \"./utils\";\n\ntype OrderEntryProps = OrderEntryScriptReturn & {\n containerRef?: React.RefObject<HTMLDivElement>;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n};\n\nexport const OrderEntry: React.FC<OrderEntryProps> = (props) => {\n const {\n side,\n formattedOrder,\n setOrderValue,\n setOrderValues,\n symbolInfo,\n maxQty,\n freeCollateral,\n helper,\n submit,\n metaState,\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n disableFeatures,\n currentLtv,\n fillMiddleValue,\n soundAlert,\n setSoundAlert,\n currentFocusInput,\n } = props;\n const [maxQtyConfirmOpen, setMaxQtyConfirmOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const { isMobile } = useScreen();\n const [hasAdvancedTPSLResult, setHasAdvancedTPSLResult] =\n useState<boolean>(false);\n\n const { errors, validated } = metaState;\n\n const [errorMsgVisible, setErrorMsgVisible] = useState(false);\n\n const [needConfirm, setNeedConfirm] = useLocalStorage(\n \"orderly_order_confirm\",\n true,\n );\n const [pinned, setPinned] = useLocalStorage(\n \"orderly-order-additional-pinned\",\n true,\n );\n const [showTPSLAdvanced, setShowTPSLAdvanced] = useState(false);\n const [hidden, setHidden] = useLocalStorage(\"orderly-order-hidden\", false);\n\n const [slippage, setSlippage] = useLocalStorage(\"orderly-slippage\", \"1\", {\n parseJSON: ((value: string | null) => {\n return !value || value === '\"\"' ? \"1\" : JSON.parse(value);\n }) as any,\n });\n\n const { notification } = useOrderlyContext();\n\n const soundAlertId = useId();\n\n const isSlPriceWarning =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(validated ? errors : null);\n\n const buttonLabel = useMemo(() => {\n return side === OrderSide.BUY\n ? t(\"orderEntry.buyLong\")\n : t(\"orderEntry.sellShort\");\n }, [side, t]);\n\n useEffect(() => {\n if (validated) {\n setErrorMsgVisible(true);\n }\n }, [validated]);\n\n // set slippage\n useEffect(() => {\n if (disableFeatures?.includes(\"slippageSetting\")) {\n return;\n }\n if (slippage) {\n setOrderValue(\"slippage\", Number(slippage));\n } else {\n setOrderValue(\"slippage\", undefined);\n }\n }, [slippage, disableFeatures]);\n\n useEffect(() => {\n const clickHandler = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (\n target.closest(\"#order-entry-submit-button\")\n // || target.closest(\".orderly-order-entry\")\n ) {\n return;\n }\n setErrorMsgVisible((visible) => {\n if (visible) {\n return false;\n }\n return visible;\n });\n };\n\n if (errorMsgVisible) {\n document.addEventListener(\"click\", clickHandler);\n } else {\n document.removeEventListener(\"click\", clickHandler);\n }\n\n return () => {\n document.removeEventListener(\"click\", clickHandler);\n };\n }, [errorMsgVisible]);\n\n const onSubmit = useMemoizedFn(async () => {\n const isScaledOrder = formattedOrder.order_type === OrderType.SCALED;\n\n // TODO: in the future, we will be add `level` to `OrderValidationItem`, use `level` manager ui state\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n helper\n .validate(isSlPriceError ? props.slPriceError : undefined)\n .then(\n // validate success, it return the order\n // TODO: get order from other function\n (order: any) => {\n // scaled order is always need confirm\n if (isScaledOrder) {\n return modal.show(scaledOrderConfirmDialogId, {\n order,\n symbolInfo,\n size: isMobile ? \"sm\" : \"md\",\n });\n }\n\n if (needConfirm) {\n return modal.show(orderConfirmDialogId, {\n order: formattedOrder,\n symbolInfo,\n });\n }\n\n return true;\n },\n // should catch validate error first, then submit\n (errors: OrderValidationResult) => {\n // slippage error message is not show input tooltip, so we need to manually show it by toast\n if (errors.slippage) {\n toast.error(t(\"orderEntry.slippage.error.max\"));\n }\n\n // when switch order type, validated not changed, so we need to set it to true\n setErrorMsgVisible(true);\n\n return Promise.reject();\n },\n )\n .then(() => {\n // validate success, submit order\n return submit({ resetOnSuccess: false }).then((result: any) => {\n if (!result.success && result.message) {\n toast.error(result.message);\n } else if (result.success && isScaledOrder) {\n const message = getScaledPlaceOrderMessage(result);\n if (message) {\n toast.success(message);\n }\n }\n });\n })\n .catch((error) => {\n // submit order error\n if (error?.message) {\n toast.error(error.message);\n // toast.error(`Error:${error.message}`);\n\n // if (error instanceof ApiError) {\n // toast.error(error.message);\n }\n });\n });\n\n const formattedMaxQty = useMemo(() => {\n return new Decimal(maxQty)\n .todp(symbolInfo.base_dp, Decimal.ROUND_DOWN)\n .toString();\n }, [maxQty, symbolInfo.base_dp]);\n\n const onMaxQtyConfirm = useCallback(() => {\n setOrderValue(\"order_quantity\", formattedMaxQty);\n // submit order when order_quantity updated\n requestAnimationFrame(() => {\n onSubmit();\n });\n setMaxQtyConfirmOpen(false);\n }, [setOrderValue, formattedMaxQty]);\n\n const validateSubmit = async () => {\n // show a prompt reminding the user. If the user confirms, automatically disable Reduce Only and proceed with the action.\n if (formattedOrder.reduce_only && maxQty === 0) {\n return modal.confirm({\n title: t(\"orderEntry.reduceOnly.reminder\"),\n content: t(\"orderEntry.reduceOnly.reminder.content\"),\n okLabel: t(\"orderEntry.placeOrderNow\"),\n onOk: async () => {\n setOrderValue(\"reduce_only\", false);\n // submit order when reduce only updated\n requestAnimationFrame(() => {\n props.resetMetaState();\n onSubmit();\n });\n return Promise.resolve(true);\n },\n onCancel: async () => {\n return Promise.resolve(false);\n },\n });\n } else if (maxQty > 0 && Number(formattedOrder.order_quantity) > maxQty) {\n setMaxQtyConfirmOpen(true);\n } else {\n onSubmit();\n }\n };\n\n const onShowTPSLAdvanced = () => {\n helper.validate().then(\n () => {\n setShowTPSLAdvanced(true);\n },\n (errors) => {\n const tpslKey = new Set([\"tp_trigger_price\", \"sl_trigger_price\"]);\n if (Object.keys(errors).every((key: string) => tpslKey.has(key))) {\n setShowTPSLAdvanced(true);\n }\n },\n );\n // modal.show(TPSLAdvancedDialogId, {\n // order: formattedOrder,\n // setOrderValue: setOrderValue,\n // });\n // setShowTPSLAdvanced(true);\n };\n\n const onSubmitAdvancedTPSL = (order: OrderlyOrder) => {\n if (order.side !== formattedOrder.side) {\n setOrderValue(\"side\", order.side);\n }\n setOrderValues({\n position_type: order.position_type,\n tp_order_type: order.tp_order_type,\n tp_pnl: order.tp_pnl,\n tp_offset: order.tp_offset,\n tp_offset_percentage: order.tp_offset_percentage,\n tp_ROI: order.tp_ROI,\n tp_trigger_price: order.tp_trigger_price,\n tp_order_price: order.tp_order_price,\n sl_order_type: order.sl_order_type,\n sl_trigger_price: order.sl_trigger_price,\n sl_order_price: order.sl_order_price,\n sl_pnl: order.sl_pnl,\n sl_offset: order.sl_offset,\n sl_offset_percentage: order.sl_offset_percentage,\n sl_ROI: order.sl_ROI,\n });\n setShowTPSLAdvanced(false);\n setHasAdvancedTPSLResult(true);\n };\n\n const onDeleteAdvancedTPSL = () => {\n setHasAdvancedTPSLResult(false);\n setOrderValues({\n tp_trigger_price: undefined,\n tp_order_price: undefined,\n tp_order_type: OrderType.MARKET,\n sl_trigger_price: undefined,\n sl_order_price: undefined,\n sl_order_type: OrderType.MARKET,\n tp_pnl: undefined,\n sl_pnl: undefined,\n position_type: PositionType.FULL,\n });\n };\n\n useEffect(() => {\n setHasAdvancedTPSLResult(false);\n }, [props.symbol]);\n\n const showReduceOnlySection =\n (isMobile &&\n formattedOrder.order_type !== OrderType.LIMIT &&\n formattedOrder.order_type !== OrderType.MARKET) ||\n !isMobile;\n\n const showSoundSection =\n Boolean(notification?.orderFilled?.media) &&\n (notification?.orderFilled?.displayInOrderEntry ?? true);\n\n const additionalInfoProps: AdditionalInfoProps = {\n pinned,\n setPinned,\n needConfirm,\n setNeedConfirm,\n hidden,\n setHidden,\n onValueChange: setOrderValue,\n orderTypeExtra: formattedOrder[\"order_type_ext\"],\n showExtra:\n formattedOrder[\"order_type\"] === OrderType.LIMIT && !props.tpslSwitch,\n };\n // Additional info (fok,ioc、post only, order confirm hidden)\n const extraButton = !pinned && (\n <AdditionalConfigButton {...additionalInfoProps} />\n );\n\n return (\n <OrderEntryProvider\n errors={errors}\n errorMsgVisible={errorMsgVisible}\n symbolInfo={symbolInfo}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n getErrorMsg={getErrorMsg}\n setOrderValue={setOrderValue}\n setOrderValues={setOrderValues}\n currentFocusInput={currentFocusInput.current}\n priceInputRef={props.priceInputRef}\n priceInputContainerRef={props.priceInputContainerRef}\n triggerPriceInputRef={props.triggerPriceInputRef}\n activatedPriceInputRef={props.activatedPriceInputRef}\n lastQuantityInputType={props.lastQuantityInputType}\n leverage={props.symbolLeverage}\n >\n <MaxQtyConfirm\n open={maxQtyConfirmOpen}\n onOpenChange={setMaxQtyConfirmOpen}\n maxQty={formattedMaxQty}\n onConfirm={onMaxQtyConfirm}\n base={symbolInfo.base}\n />\n <div\n className={\"oui-space-y-2 oui-text-base-contrast-54 xl:oui-space-y-3\"}\n ref={props.containerRef}\n >\n <OrderEntryHeader\n symbol={props.symbol}\n canTrade={props.canTrade}\n side={side}\n order_type={formattedOrder.order_type!}\n setOrderValue={setOrderValue}\n symbolLeverage={props.symbolLeverage}\n />\n\n <Available\n currentLtv={currentLtv}\n canTrade={props.canTrade}\n quote={symbolInfo?.quote}\n freeCollateral={freeCollateral}\n />\n\n <OrderInput\n values={formattedOrder}\n priceInputContainerWidth={props.priceInputContainerWidth}\n fillMiddleValue={fillMiddleValue}\n bbo={{\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n }}\n />\n\n <QuantitySlider\n canTrade={props.canTrade}\n side={props.side}\n order_quantity={formattedOrder.order_quantity}\n maxQty={maxQty}\n />\n\n {/* Submit button */}\n <ThrottledButton\n fullWidth\n id={\"order-entry-submit-button\"}\n // color={side === OrderSide.BUY ? \"buy\" : \"sell\"}\n data-type={OrderSide.BUY}\n className={cn(\n side === OrderSide.BUY\n ? \"orderly-order-entry-submit-button-buy oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\"\n : \"orderly-order-entry-submit-button-sell oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\",\n )}\n onClick={validateSubmit}\n loading={props.isMutating}\n disabled={!props.canTrade}\n >\n {buttonLabel}\n </ThrottledButton>\n\n {/* Asset info */}\n <AssetInfo\n canTrade={props.canTrade}\n quote={symbolInfo.quote}\n estLiqPrice={props.estLiqPrice}\n estLeverage={props.estLeverage}\n currentLeverage={props.currentLeverage}\n slippage={slippage}\n dp={symbolInfo.quote_dp}\n setSlippage={setSlippage}\n estSlippage={props.estSlippage}\n orderType={formattedOrder.order_type!}\n disableFeatures={disableFeatures}\n symbol={props.symbol}\n />\n\n <Divider className=\"oui-w-full\" />\n\n {/* TP SL switch and content */}\n {hasAdvancedTPSLResult ? (\n <AdvancedTPSLResult\n order={formattedOrder}\n symbolInfo={props.symbolInfo}\n errors={validated ? errors : null}\n onEdit={() => {\n setShowTPSLAdvanced(true);\n }}\n onDelete={() => {\n onDeleteAdvancedTPSL();\n }}\n />\n ) : (\n <OrderTPSL\n // onCancelTPSL={props.cancelTP_SL}\n // onEnableTP_SL={props.enableTP_SL}\n quote_dp={props.symbolInfo.quote_dp}\n switchState={props.tpslSwitch}\n onSwitchChanged={props.setTpslSwitch}\n orderType={formattedOrder.order_type!}\n errors={\n validated || isSlPriceWarning\n ? { ...errors, ...props.slPriceError }\n : null\n }\n setOrderValue={setOrderValue}\n reduceOnlyChecked={formattedOrder.reduce_only ?? false}\n onReduceOnlyChange={(checked) => {\n setOrderValue(\"reduce_only\", checked);\n }}\n values={{\n position_type:\n formattedOrder.position_type ?? PositionType.PARTIAL,\n tp: {\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n },\n sl: {\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n },\n }}\n showTPSLAdvanced={onShowTPSLAdvanced}\n onChange={(key, value) => {\n setOrderValue(key, value);\n }}\n />\n )}\n\n {showReduceOnlySection && (\n <Flex justify={\"between\"} itemAlign={\"center\"} className=\"oui-mt-2\">\n <ReduceOnlySwitch\n checked={formattedOrder.reduce_only ?? false}\n onCheckedChange={(checked) => {\n setOrderValue(\"reduce_only\", checked);\n }}\n />\n {!showSoundSection && extraButton}\n </Flex>\n )}\n {showSoundSection && (\n <Flex justify={\"between\"} itemAlign={\"center\"}>\n <Flex itemAlign={\"center\"} gapX={1}>\n <Switch\n className=\"oui-h-[14px]\"\n id={soundAlertId}\n checked={soundAlert}\n onCheckedChange={(checked) => setSoundAlert(checked)}\n />\n <label htmlFor={soundAlertId} className={\"oui-text-xs\"}>\n {t(\"portfolio.setting.soundAlerts\")}\n </label>\n </Flex>\n {extraButton}\n </Flex>\n )}\n {!showSoundSection &&\n isMobile &&\n (formattedOrder.order_type == OrderType.LIMIT ||\n formattedOrder.order_type == OrderType.MARKET) &&\n !formattedOrder.reduce_only &&\n !pinned && (\n <Flex className=\"oui-w-full\" justify={\"end\"}>\n {extraButton}\n </Flex>\n )}\n {/* Additional info (fok,ioc、post only, order confirm hidden) */}\n {pinned && (\n <Box p={2} r={\"md\"} intensity={700} position={\"relative\"}>\n <AdditionalInfo {...additionalInfoProps} />\n <PinButton\n onClick={() => {\n setPinned(false);\n }}\n className={\"oui-group oui-absolute oui-right-2 oui-top-2\"}\n data-testid=\"oui-testid-orderEntry-pinned-button\"\n />\n </Box>\n )}\n </div>\n\n <SimpleSheet\n open={showTPSLAdvanced}\n onOpenChange={setShowTPSLAdvanced}\n classNames={{\n body: \"oui-h-full oui-pb-0 oui-border-none\",\n overlay: \"!oui-bg-base-10/60\",\n content: cn(\n \"oui-rounded-[16px] oui-border-none !oui-p-0\",\n isMobile\n ? \"oui-inset-y-0 oui-right-0 oui-w-[280px]\"\n : \"!oui-bottom-[40px] oui-right-3 oui-top-[44px] !oui-h-auto oui-w-[360px]\",\n ),\n }}\n contentProps={{ side: \"right\", closeable: false }}\n >\n <TPSLAdvancedWidget\n setOrderValue={setOrderValue}\n order={formattedOrder as OrderlyOrder}\n onSubmit={onSubmitAdvancedTPSL}\n onClose={() => {\n setShowTPSLAdvanced(false);\n }}\n symbolLeverage={props.symbolLeverage}\n />\n </SimpleSheet>\n </OrderEntryProvider>\n );\n};\n","import { useState } from \"react\";\nimport {\n PopoverContent,\n PopoverRoot,\n PopoverTrigger,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AdditionalInfo, AdditionalInfoProps } from \"./additionalInfo\";\n\nexport function AdditionalConfigButton(props: AdditionalInfoProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n data-testid=\"oui-testid-orderEntry-additional-button\"\n onClick={() => {\n setOpen(true);\n }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-white/[.36] hover:oui-fill-white/80\"\n >\n <path\n d=\"M3.332 2.665a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667z\"\n // fill=\"#fff\"\n // fillOpacity={open ? 0.8 : 0.36}\n />\n </svg>\n </button>\n </PopoverTrigger>\n <PopoverContent side={\"top\"} align={\"end\"} className={\"oui-w-[230px]\"}>\n <AdditionalInfo {...props} />\n </PopoverContent>\n </PopoverRoot>\n );\n}\n","import { FC, useEffect } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderlyOrder, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Checkbox, cn, Divider, Flex, Switch } from \"@kodiak-finance/orderly-ui\";\n\nexport type AdditionalInfoProps = {\n pinned: boolean;\n setPinned: (value: boolean) => void;\n needConfirm: boolean;\n setNeedConfirm: (value: boolean) => void;\n hidden: boolean;\n setHidden: (value: boolean) => void;\n onValueChange?: (key: keyof OrderlyOrder, value: any) => void;\n orderTypeExtra?: OrderType;\n showExtra?: boolean;\n};\n\nexport const AdditionalInfo: FC<AdditionalInfoProps> = (props) => {\n const { pinned, orderTypeExtra } = props;\n const { t } = useTranslation();\n\n const onTypeToggle = (type: OrderType) => (checked: boolean) => {\n if (props.onValueChange) {\n props.onValueChange(\n \"order_type_ext\" as keyof OrderlyOrder,\n checked ? type : \"\",\n // orderTypeExtra === type ? \"\" : type\n );\n }\n };\n\n useEffect(() => {\n props.onValueChange?.(\"visible_quantity\", props.hidden ? 0 : 1);\n }, [props.hidden]);\n\n return (\n <div className={\"oui-text-base-contrast-54\"}>\n <Flex\n justify={pinned ? \"start\" : \"between\"}\n mb={3}\n width={pinned ? \"unset\" : \"100%\"}\n className=\"oui-gap-x-2 md:oui-gap-x-3\"\n wrap=\"wrap\"\n gapY={1}\n >\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-postOnly-checkBox\"\n id={\"toggle_order_post_only\"}\n className=\"oui-peer\"\n color={\"white\"}\n variant={\"radio\"}\n disabled={!props.showExtra}\n checked={orderTypeExtra === OrderType.POST_ONLY}\n onCheckedChange={onTypeToggle(OrderType.POST_ONLY)}\n />\n <label\n htmlFor={\"toggle_order_post_only\"}\n className={cn(\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {t(\"orderEntry.orderType.postOnly\")}\n </label>\n </Flex>\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-ioc-checkBox\"\n id={\"toggle_order_iov\"}\n color={\"white\"}\n className=\"oui-peer\"\n variant={\"radio\"}\n checked={orderTypeExtra === OrderType.IOC}\n onCheckedChange={onTypeToggle(OrderType.IOC)}\n disabled={!props.showExtra}\n />\n <label\n htmlFor={\"toggle_order_iov\"}\n className={cn(\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {t(\"orderEntry.orderType.ioc\")}\n </label>\n </Flex>\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-fox-checkBox\"\n id={\"toggle_order_fok\"}\n color={\"white\"}\n variant={\"radio\"}\n className=\"oui-peer\"\n checked={orderTypeExtra === OrderType.FOK}\n onCheckedChange={onTypeToggle(OrderType.FOK)}\n disabled={!props.showExtra}\n />\n <label\n htmlFor={\"toggle_order_fok\"}\n className={cn(\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {t(\"orderEntry.orderType.fok\")}\n </label>\n </Flex>\n </Flex>\n\n <Flex gapX={6}>\n <Flex>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-orderConfirm-checkBox\"\n id={\"toggle_order_confirm\"}\n color={\"white\"}\n checked={props.needConfirm}\n onCheckedChange={(checked) => {\n props.setNeedConfirm(!!checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_confirm\"}\n className={\"oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.orderConfirm\")}\n </label>\n </Flex>\n <Flex>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-hidden-checkBox\"\n id={\"toggle_order_hidden\"}\n color={\"white\"}\n checked={props.hidden}\n onCheckedChange={(checked: boolean) => {\n props.setHidden(checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_hidden\"}\n className={\"oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.hidden\")}\n </label>\n </Flex>\n </Flex>\n {!pinned && (\n <>\n <Divider className={\"oui-my-3\"} />\n <Flex>\n <Switch\n data-testid=\"oui-testid-orderEntry-additional-keepVisible-switch\"\n id={\"toggle_order_keep_visible\"}\n onCheckedChange={(checked) => {\n props.setPinned(checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_keep_visible\"}\n className={\"oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.keepVisible\")}\n </label>\n </Flex>\n </>\n )}\n </div>\n );\n};\n","import { HTMLAttributes, useState } from \"react\";\n\nconst defaultPath =\n \"M10.007 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.852-2.523 1.233.361 1.95.015 2.961-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103 5.35 5.35 0 0 0-2.104-1.312c-.448-.15-.808-.208-1.042-.208\";\n\nexport const PinButton = (props: HTMLAttributes<HTMLButtonElement>) => {\n const [path, setPath] = useState(defaultPath);\n return (\n <button {...props}>\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n onMouseEnter={() => {\n setPath(\n 'M10.008 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.15-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.107.507.508.94 1.13 1.119 1.945-.636.61-1.026.658-1.662.323a.67.67 0 0 0-.779.117c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.292-.076 1.773-.48 2.206-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.515 2.226-.514 1.742.001 2.668-.448 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.686-.29-1.047.321-1.67\"',\n );\n }}\n onMouseLeave={() => {\n setPath(defaultPath);\n }}\n className=\"oui-text-primary-darken\"\n >\n <path d={path} />\n </svg>\n </button>\n );\n};\n","import { SVGProps } from \"react\";\nimport { OrderValidationResult } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport {\n API,\n OrderlyOrder,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport { Divider, Flex, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport function AdvancedTPSLResult(props: {\n order: Partial<OrderlyOrder>;\n symbolInfo: API.SymbolExt;\n errors: OrderValidationResult | null;\n onEdit: () => void;\n onDelete: () => void;\n}) {\n const { order: formattedOrder, symbolInfo, onEdit, onDelete, errors } = props;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n const { t } = useTranslation();\n\n const renderTp = () => {\n const error = getErrorMsg(\"tp_trigger_price\");\n if (formattedOrder.tp_trigger_price || formattedOrder.tp_order_price) {\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-w-full\"\n gap={4}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n gapY={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpTriggerPrice\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.tp_trigger_price ?? \"\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpOrderPrice\")}</Text>\n {formattedOrder.tp_order_type === OrderType.LIMIT ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.tp_order_price ?? \"\"}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast\">Market</Text>\n )}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.totalEstTpPnl\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n coloring\n dp={2}\n >\n {Number(formattedOrder.tp_pnl)}\n </Text.numeral>\n </Flex>\n </Flex>\n {error && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-danger\" />\n <Text className=\"oui-text-danger\">{error}</Text>\n </Flex>\n )}\n </Flex>\n );\n }\n return null;\n };\n\n const renderSl = () => {\n if (formattedOrder.sl_trigger_price || formattedOrder.sl_order_price) {\n const error = getErrorMsg(\"sl_trigger_price\");\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-w-full\"\n gap={4}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n gapY={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slTriggerPrice\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.sl_trigger_price ?? \"\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slOrderPrice\")}</Text>\n {formattedOrder.sl_order_type === OrderType.LIMIT ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.sl_order_price ?? \"\"}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast\">Market</Text>\n )}\n </Flex>\n\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.totalEstSlPnl\")}</Text>\n <Text.numeral\n coloring\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n dp={2}\n >\n {Number(formattedOrder.sl_pnl)}\n </Text.numeral>\n </Flex>\n {error && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-danger\" />\n <Text className=\"oui-text-danger\">{error}</Text>\n </Flex>\n )}\n </Flex>\n </Flex>\n );\n }\n return null;\n };\n\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-w-full oui-text-2xs\"\n gap={4}\n >\n <Flex justify={\"between\"} itemAlign={\"start\"} className=\"oui-w-full\">\n <Text>{t(\"common.tpsl\")}</Text>\n <Flex gap={2}>\n <DeleteIcon\n size={12}\n className=\"oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n opacity={1}\n onClick={onDelete}\n />\n <EditIcon\n size={12}\n className=\"oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n onClick={onEdit}\n />\n </Flex>\n </Flex>\n <Flex justify={\"between\"} itemAlign={\"start\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.mode\")}</Text>\n <Text className=\"oui-text-base-contrast\">\n {formattedOrder.position_type === PositionType.FULL\n ? t(\"tpsl.fullPosition\")\n : t(\"tpsl.partialPosition\")}\n </Text>\n </Flex>\n {renderTp()}\n {renderSl()}\n\n <Divider className=\"oui-mb-2 oui-w-full\" />\n </Flex>\n );\n}\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\nconst DeleteIcon: React.FC<IconProps> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={props.size}\n height={props.size}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M5.99903 0.976562C5.44653 0.976562 4.99903 1.42406 4.99903 1.97656H2.49902C2.22302 1.97656 1.99902 2.20056 1.99902 2.47656C1.99902 2.75256 2.22302 2.97656 2.49902 2.97656H9.49903C9.77503 2.97656 9.99903 2.75256 9.99903 2.47656C9.99903 2.20056 9.77503 1.97656 9.49903 1.97656H6.99903C6.99903 1.42406 6.55153 0.976562 5.99903 0.976562ZM2.49902 3.97655V8.97654C2.49902 10.0715 3.40152 10.961 4.49903 10.961L7.51453 10.9765C8.61203 10.9765 9.49903 10.074 9.49903 8.97654V3.97655H2.49902ZM4.99903 5.47655C5.27503 5.47655 5.49903 5.70055 5.49903 5.97655V8.97654C5.49903 9.25254 5.27503 9.47654 4.99903 9.47654C4.72303 9.47654 4.49903 9.25254 4.49903 8.97654V5.97655C4.49903 5.70055 4.72303 5.47655 4.99903 5.47655ZM6.99903 5.47655C7.27503 5.47655 7.49903 5.70055 7.49903 5.97655V8.97654C7.49903 9.25254 7.27503 9.47654 6.99903 9.47654C6.72303 9.47654 6.49903 9.25254 6.49903 8.97654V5.97655C6.49903 5.70055 6.72303 5.47655 6.99903 5.47655Z\" />\n </svg>\n );\n};\n\nconst EditIcon: React.FC<IconProps> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 12 12\"\n width={props.size}\n height={props.size}\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.49779 0.976562C8.36529 0.976562 8.23229 1.02357 8.13829 1.11707C7.86029 1.39507 6.85979 2.39558 6.63779 2.61808L2.13529 7.12059L1.63479 7.62059C1.56529 7.69059 1.52929 7.78958 1.50979 7.88658L1.00979 10.3881C0.939788 10.7381 1.23779 11.0361 1.58779 10.9666C1.90079 10.9036 3.77679 10.5286 4.08929 10.4661C4.18629 10.4466 4.28529 10.4106 4.35529 10.3411L4.85529 9.84059L9.35779 5.33808C9.58029 5.11608 10.5808 4.11506 10.8588 3.83756C10.9523 3.74356 10.9993 3.61056 10.9993 3.47806C10.9993 2.65956 10.7908 2.07456 10.3583 1.63306C9.92179 1.18756 9.33879 0.976562 8.49779 0.976562ZM8.69479 1.98606C9.14629 2.01256 9.43879 2.11608 9.63929 2.32108C9.84429 2.53008 9.97379 2.82008 10.0018 3.26258C9.72779 3.53608 9.32679 3.93106 8.99829 4.25956C8.60179 3.86306 8.11279 3.37407 7.71629 2.97757C8.04529 2.64907 8.42129 2.25956 8.69479 1.98606ZM6.99729 3.69657L8.27929 4.97858L4.49579 8.76207L3.21379 7.48009L6.99729 3.69657ZM2.49479 8.19908L3.77679 9.48107L3.72979 9.52809C3.39979 9.59409 2.73329 9.73359 2.11929 9.85659L2.44779 8.24608L2.49479 8.19908Z\" />\n </svg>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text, textVariants } from \"@kodiak-finance/orderly-ui\";\nimport { FeesWidget } from \"../fee\";\nimport { SlippageUI } from \"../slippage/slippage.ui\";\n\nexport function AssetInfo(props: {\n symbol: string;\n canTrade: boolean;\n quote: string;\n estLiqPrice: number | null;\n estLeverage: number | null;\n currentLeverage: number | null;\n slippage: string;\n dp: number;\n estSlippage: number | null;\n setSlippage: (slippage: string) => void;\n orderType: OrderType;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n}) {\n const { canTrade, disableFeatures, orderType, symbol } = props;\n const { t } = useTranslation();\n\n return (\n <div className={\"oui-space-y-[2px] xl:oui-space-y-1\"}>\n <Flex justify={\"between\"}>\n <Text size={\"2xs\"}>{t(\"orderEntry.estLiqPrice\")}</Text>\n <Text.numeral\n unit={props.quote}\n size={\"2xs\"}\n dp={props.dp}\n className={\"oui-text-base-contrast-80\"}\n unitClassName={\"oui-ml-1 oui-text-base-contrast-36\"}\n >\n {canTrade ? (props.estLiqPrice ?? \"--\") : \"--\"}\n </Text.numeral>\n </Flex>\n\n {orderType === OrderType.MARKET &&\n !disableFeatures?.includes(\"slippageSetting\") && (\n <SlippageUI\n slippage={props.slippage}\n setSlippage={props.setSlippage}\n estSlippage={props.estSlippage}\n />\n )}\n\n {!disableFeatures?.includes(\"feesInfo\") && (\n <FeesWidget symbol={props.symbol} />\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { pick } from \"ramda\";\nimport {\n useFeeState,\n useRwaSymbolsInfoStore,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { EffectiveFeesWidget } from \"./effectiveFee\";\nimport { RegularFeesWidget } from \"./regularFee\";\n\nconst isEffective = (val?: unknown) =>\n typeof val !== \"undefined\" && val !== null;\n\nexport const FeesWidget: React.FC<{ symbol: string }> = ({ symbol }) => {\n const { refereeRebate, ...others } = useFeeState();\n const info = useRwaSymbolsInfoStore();\n const isRwa = info?.[symbol] !== undefined;\n const isEffectiveFee = isEffective(refereeRebate);\n return isEffectiveFee ? (\n <EffectiveFeesWidget\n taker={isRwa ? others.rwaEffectiveTakerFee : others.effectiveTakerFee}\n maker={isRwa ? others.rwaEffectiveMakerFee : others.effectiveMakerFee}\n />\n ) : (\n <RegularFeesWidget\n taker={isRwa ? others.rwaTakerFee : others.takerFee}\n maker={isRwa ? others.rwaMakerFee : others.makerFee}\n />\n );\n};\n","import React from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Flex,\n modal,\n Text,\n Tooltip,\n useModal,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\nimport {\n RouterAdapter,\n useScaffoldContext,\n} from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { EffectiveFee } from \"./icons\";\n\nconst EffectiveFeeBody: React.FC<{\n routerAdapter: RouterAdapter | undefined;\n onClose?: () => void;\n}> = ({ routerAdapter, onClose }) => {\n const { t } = useTranslation();\n return (\n <Text size=\"2xs\" className=\"oui-whitespace-normal oui-break-words\">\n {t(\"portfolio.feeTier.effectiveFee.tooltip\")}{\" \"}\n <a\n href=\"/rewards/affiliate\"\n onClick={(e) => {\n e.preventDefault();\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate\",\n name: t(\"portfolio.feeTier.effectiveFee.tooltipLink\"),\n });\n onClose?.();\n }}\n className=\"oui-cursor-pointer oui-border-none oui-bg-transparent oui-p-0 oui-text-2xs oui-underline hover:oui-text-base-contrast-80\"\n >\n {t(\"portfolio.feeTier.effectiveFee.tooltipLink\")}\n </a>\n </Text>\n );\n};\n\nconst EffectiveFeeMobileContent: React.FC<{\n routerAdapter: RouterAdapter | undefined;\n}> = ({ routerAdapter }) => {\n const { hide } = useModal();\n return <EffectiveFeeBody routerAdapter={routerAdapter} onClose={hide} />;\n};\n\nconst EffectiveFeeSection: React.FC<{\n routerAdapter: RouterAdapter | undefined;\n}> = (props) => {\n const { routerAdapter } = props;\n const { isMobile } = useScreen();\n const { t } = useTranslation();\n if (isMobile) {\n return (\n <EffectiveFee\n onClick={() => {\n modal.dialog({\n size: \"sm\",\n title: t(\"common.tips\"),\n content: (\n <EffectiveFeeMobileContent routerAdapter={routerAdapter} />\n ),\n });\n }}\n />\n );\n }\n return (\n <Tooltip\n content={<EffectiveFeeBody routerAdapter={routerAdapter} />}\n className=\"oui-p-1.5 oui-text-base-contrast-54\"\n >\n <EffectiveFee className={\"oui-cursor-pointer\"} />\n </Tooltip>\n );\n};\n\nexport const EffectiveFeeUI: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n const { t } = useTranslation();\n const { routerAdapter } = useScaffoldContext();\n const { taker, maker } = props;\n\n const originalTrailingFees = (\n <Flex itemAlign=\"center\" justify=\"between\" width={\"100%\"} gap={1}>\n <Flex width={\"100%\"} itemAlign=\"center\" justify={\"between\"}>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"common.fees\")}\n </Text>\n <AuthGuard\n fallback={() => (\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}: --% / {t(\"dmm.maker\")}: --%\n </Text>\n )}\n >\n <Flex gap={1}>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {taker}\n </Text>\n <Text size=\"2xs\">/</Text>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.maker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {maker}\n </Text>\n </Flex>\n </AuthGuard>\n </Flex>\n <EffectiveFeeSection routerAdapter={routerAdapter} />\n </Flex>\n );\n\n return originalTrailingFees;\n};\n","import { registerSimpleDialog, registerSimpleSheet } from \"@kodiak-finance/orderly-ui\";\nimport {\n useChainSelectorScript,\n UseChainSelectorScriptOptions,\n} from \"./chainSelector.script\";\nimport { ChainSelector, ChainSelectorProps } from \"./chainSelector.ui\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\n\nexport type ChainSelectorWidgetProps = UseChainSelectorScriptOptions &\n Pick<ChainSelectorProps, \"isWrongNetwork\" | \"variant\" | \"className\">;\n\nexport const ChainSelectorWidget = (props: ChainSelectorWidgetProps) => {\n const state = useChainSelectorScript(props);\n\n return (\n <ChainSelector\n {...state}\n variant={props.variant}\n isWrongNetwork={props.isWrongNetwork}\n />\n );\n};\n\nexport const ChainSelectorDialogId = \"ChainSelectorDialogId\";\nexport const ChainSelectorSheetId = \"ChainSelectorSheetId\";\n\nregisterSimpleDialog(ChainSelectorDialogId, ChainSelectorWidget, {\n size: \"lg\",\n title: () => i18n.t(\"connector.switchNetwork\"),\n variant: \"wide\",\n isWrongNetwork: true,\n});\n\nregisterSimpleSheet(ChainSelectorSheetId, ChainSelectorWidget, {\n title: () => i18n.t(\"connector.switchNetwork\"),\n classNames: {\n content: \"!oui-bg-base-8\",\n body: \"!oui-bg-base-8\",\n },\n variant: \"compact\",\n isWrongNetwork: true,\n});\n","import { useMemo, useCallback, useState, useEffect } from \"react\";\nimport { useConfig, useStorageChain } from \"@kodiak-finance/orderly-hooks\";\nimport {\n useChains,\n useWalletConnector,\n useLocalStorage,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { NetworkId } from \"@kodiak-finance/orderly-types\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { ChainType, TChainItem } from \"./type\";\nimport { useOrderlyTheme } from \"@kodiak-finance/orderly-ui\";\n\nconst KEY = \"orderly_selected_chains\";\nconst MAX_RECENT_CHAINS = 6;\n\nexport type UseChainSelectorScriptReturn = ReturnType<\n typeof useChainSelectorScript\n>;\n\nexport type UseChainSelectorScriptOptions = {\n networkId?: NetworkId;\n bridgeLessOnly?: boolean;\n close?: () => void;\n resolve?: (isSuccess: boolean) => void;\n reject?: () => void;\n onChainChangeBefore?: (\n chainId: number,\n state: {\n isTestnet: boolean;\n }\n ) => void;\n onChainChangeAfter?: (\n chainId: number,\n state: {\n isTestnet: boolean;\n isWalletConnected: boolean;\n }\n ) => void;\n};\n\nexport const useChainSelectorScript = (\n options: UseChainSelectorScriptOptions\n) => {\n const { networkId, bridgeLessOnly } = options || {};\n const { setStorageChain } = useStorageChain();\n\n const config = useConfig();\n const [_chains, { checkChainSupport }] = useChains();\n const { setChain, connectedChain } = useWalletConnector();\n\n const { onChainChanged, currentChainId, setCurrentChainId, wrongNetwork } =\n useAppContext();\n\n const [selectChainId, setSelectChainId] = useState<number | undefined>(\n currentChainId\n );\n\n const { getComponentTheme } = useOrderlyTheme();\n\n const chains = useMemo(() => {\n const bridgeLessChains = bridgeLessOnly\n ? _chains.mainnet.filter((chain) => chain.network_infos.bridgeless)\n : _chains.mainnet;\n\n return {\n mainnet: bridgeLessChains.map((chain) => ({\n name: chain.network_infos.name,\n id: chain.network_infos.chain_id,\n lowestFee: chain.network_infos.bridgeless,\n isTestnet: false,\n })),\n testnet: _chains.testnet.map((chain) => ({\n name: chain.network_infos.name,\n id: chain.network_infos.chain_id,\n lowestFee: chain.network_infos.bridgeless,\n isTestnet: true,\n })),\n };\n }, [_chains, bridgeLessOnly]);\n\n const showTestnet = useMemo(() => {\n const chainSelectorOverrides = getComponentTheme(\"chainSelector\", {\n showTestnet: true,\n });\n\n if (\n chainSelectorOverrides.showTestnet === false ||\n !chains.testnet.length\n ) {\n return false;\n }\n\n return true;\n }, [chains.testnet]);\n\n const { recentChains, saveRecentChain } = useRecentChains(chains);\n\n const onChainChange = async (chain: TChainItem) => {\n if (connectedChain) {\n const result = await setChain({ chainId: chain.id });\n\n if (!result) return result;\n\n return {\n result,\n wrongNetwork: !checkChainSupport(chain.id, config.get(\"networkId\")),\n chainId: chain.id,\n };\n }\n\n setStorageChain(chain.id);\n\n setCurrentChainId(chain.id);\n return {\n result: true,\n wrongNetwork: false,\n chainId: chain.id,\n };\n // return Promise.reject(\"No connected chain\");\n };\n\n const changedCallback = (chain: TChainItem, isWalletConnected: boolean) => {\n const params = {\n isTestnet: chain.isTestnet,\n isWalletConnected,\n };\n options.onChainChangeAfter?.(chain.id, params);\n onChainChanged?.(chain.id, params);\n };\n\n const onChainClick = async (chain: TChainItem) => {\n setSelectChainId(chain.id);\n options.onChainChangeBefore?.(chain.id, { isTestnet: chain.isTestnet });\n try {\n const complete = await onChainChange?.(chain);\n\n if (complete) {\n options.resolve?.(complete);\n options.close?.();\n saveRecentChain(chain);\n changedCallback(chain, true);\n } else {\n setSelectChainId(undefined);\n changedCallback(chain, false);\n }\n } catch (err) {\n changedCallback(chain, false);\n }\n };\n\n const { selectedTab, onTabChange } = useChainTab(\n chains,\n currentChainId,\n wrongNetwork,\n showTestnet\n );\n\n return {\n recentChains,\n chains,\n selectChainId,\n onChainClick,\n selectedTab,\n onTabChange,\n showTestnet,\n };\n};\n\nfunction useChainTab(\n chains: Record<NetworkId, TChainItem[]>,\n currentChainId?: number,\n wrongNetwork?: boolean,\n showTestnet?: boolean\n) {\n const [selectedTab, setSelectedTab] = useState<ChainType>(ChainType.Mainnet);\n\n const onTabChange = (tab: ChainType) => {\n setSelectedTab(tab);\n };\n\n useEffect(() => {\n if (!showTestnet) {\n setSelectedTab(ChainType.Mainnet);\n return;\n }\n\n if (currentChainId) {\n const isMainnet = chains.mainnet?.some(\n (chain) => chain.id === currentChainId\n );\n if (isMainnet) {\n setSelectedTab(wrongNetwork ? ChainType.Testnet : ChainType.Mainnet);\n return;\n }\n\n const isTestnet = chains.testnet?.some(\n (chain) => chain.id === currentChainId\n );\n if (isTestnet) {\n setSelectedTab(wrongNetwork ? ChainType.Mainnet : ChainType.Testnet);\n return;\n }\n }\n }, [currentChainId, chains, wrongNetwork, showTestnet]);\n\n return { selectedTab, onTabChange };\n}\n\nfunction useRecentChains(chains: Record<NetworkId, TChainItem[]>) {\n const [recentChainsIds, setRecentChainsIds] = useLocalStorage<string[]>(\n KEY,\n []\n );\n\n const recentChains = useMemo<TChainItem[]>(() => {\n return recentChainsIds\n ?.map((id: string) =>\n chains.mainnet?.find((item) => item.id === parseInt(id))\n )\n .filter((chains: TChainItem) => !!chains);\n }, [chains, recentChainsIds]);\n\n const saveRecentChain = useCallback(\n (chain: TChainItem) => {\n // only mainnet can save chain id to local storage\n if (chain.isTestnet) {\n return;\n }\n let ids = recentChainsIds?.filter((id: number) => id !== chain.id);\n ids = [chain.id, ...ids].slice(0, MAX_RECENT_CHAINS);\n setRecentChainsIds(ids);\n },\n [recentChainsIds]\n );\n\n return { recentChains, saveRecentChain };\n}\n","import {\n Box,\n Flex,\n Text,\n ChainIcon,\n Tabs,\n TabPanel,\n cn,\n tv,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ChainType, TChainItem } from \"./type\";\nimport { UseChainSelectorScriptReturn } from \"./chainSelector.script\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nexport type ChainSelectorProps = {\n isWrongNetwork?: boolean;\n /**\n * wide: This represents the wide screen (desktop) UI mode\n * compact: This indicates a compact (mobile) UI pattern.\n */\n variant?: \"wide\" | \"compact\";\n className?: string;\n} & UseChainSelectorScriptReturn;\n\nconst chainSelectorVariants = tv({\n slots: {\n icon: \"\",\n list: \"oui-grid oui-grid-cols-1 oui-gap-1\",\n mainnetList: '\"',\n testnetList: '\"',\n recentList: \"\",\n item: \"oui-w-full oui-rounded-md\",\n tip: \"oui-text-center\",\n },\n variants: {\n variant: {\n compact: {\n icon: \"oui-w-6 oui-h-6\",\n list: \"oui-bg-base-9 oui-rounded-lg oui-p-1\",\n mainnetList: \"oui-grid-cols-2 oui-mt-4\",\n testnetList: \"oui-grid-cols-1 oui-mt-4\",\n recentList: \"oui-mt-4\",\n item: \"oui-bg-base-6 hover:oui-bg-base-7\",\n tip: \"oui-pt-6\",\n },\n wide: {\n icon: \"oui-w-[18px] oui-h-[18px]\",\n mainnetList: \"oui-grid-cols-3 oui-mt-3\",\n testnetList: \"oui-grid-cols-2 oui-mt-3\",\n recentList: \"oui-mt-3\",\n item: \"oui-bg-base-5 hover:oui-bg-base-6\",\n tip: \"oui-pt-8\",\n },\n },\n selected: {\n true: {\n item: \"\",\n },\n false: { item: \"oui-bg-transparent\" },\n },\n },\n compoundVariants: [\n {\n variant: \"compact\",\n selected: true,\n className: {\n item: \"hover:oui-bg-base-6\",\n },\n },\n {\n variant: \"wide\",\n selected: true,\n className: {\n item: \"hover:oui-bg-base-5\",\n },\n },\n ],\n defaultVariants: {\n variant: \"wide\",\n selected: false,\n },\n});\n\n//------------------ ChainSelector start ------------------\nexport const ChainSelector = (props: ChainSelectorProps) => {\n const { isWrongNetwork, variant = \"wide\" } = props;\n const { t } = useTranslation();\n const { list, recentList, mainnetList, testnetList, icon, item, tip } =\n chainSelectorVariants({ variant });\n\n return (\n <Box className={cn(\"oui-font-semibold\", props.className)}>\n <Tabs\n value={props.selectedTab}\n variant=\"contained\"\n size={variant === \"wide\" ? \"md\" : \"lg\"}\n onValueChange={(e) => props.onTabChange(e as ChainType)}\n >\n <TabPanel value={ChainType.Mainnet} title={t(\"connector.mainnet\")}>\n {!!props.recentChains?.length && (\n <Flex gap={2} className={recentList()}>\n {props.recentChains?.map((item) => {\n return (\n <RecentChainItem\n key={item.id}\n item={item}\n onClick={() => props.onChainClick(item)}\n iconClassName={icon()}\n />\n );\n })}\n </Flex>\n )}\n\n <Box r=\"2xl\" className={cn(list(), mainnetList())}>\n {props.chains.mainnet?.map((chain) => {\n const selected = props.selectChainId === chain.id;\n return (\n <ChainItem\n key={chain.id}\n selected={selected}\n item={chain}\n onClick={() => props.onChainClick(chain)}\n className={item({ selected })}\n />\n );\n })}\n </Box>\n </TabPanel>\n\n {props.showTestnet && (\n <TabPanel value={ChainType.Testnet} title={t(\"connector.testnet\")}>\n <Box r=\"2xl\" className={cn(list(), testnetList())}>\n {props.chains.testnet?.map((chain) => {\n const selected = props.selectChainId === chain.id;\n return (\n <ChainItem\n key={chain.id}\n selected={selected}\n item={chain}\n onClick={() => props.onChainClick(chain)}\n className={item({ selected })}\n />\n );\n })}\n </Box>\n </TabPanel>\n )}\n </Tabs>\n\n {isWrongNetwork && (\n <Box className={tip()}>\n <Text color=\"warning\" size=\"xs\">\n {t(\"connector.wrongNetwork.tooltip\")}\n </Text>\n </Box>\n )}\n </Box>\n );\n};\n// ------------------ ChainSelector end ------------------\n\n// ------------------ ChainItem start ------------------\nexport const ChainItem = (props: {\n selected: boolean;\n item: TChainItem;\n onClick?: () => void;\n className?: string;\n}) => {\n const { item } = props;\n return (\n <button className={props.className} onClick={props.onClick}>\n <Flex justify=\"between\" className=\"oui-py-2.5\" px={3}>\n <Flex itemAlign=\"center\" width=\"100%\" className=\"oui-gap-x-[6px]\">\n <ChainIcon chainId={item.id} size=\"xs\" />\n <Text size=\"2xs\">{item.name}</Text>\n </Flex>\n {props.selected && (\n <Box gradient=\"brand\" r=\"full\" width={4} height={4} />\n )}\n </Flex>\n </button>\n );\n};\n\n// ------------------ Recent ChainItem start ------------------\nexport const RecentChainItem = (props: {\n item: TChainItem;\n onClick?: () => void;\n iconClassName?: string;\n}) => {\n return (\n <button\n className=\"oui-border oui-border-line-12 oui-rounded-lg hover:oui-border-primary-light\"\n onClick={props.onClick}\n >\n <Flex itemAlign=\"center\" p={2}>\n <ChainIcon chainId={props.item.id} className={props.iconClassName} />\n </Flex>\n </button>\n );\n};\n","// src/lib/mode.ts\nvar mode_default = {\n MODE_NUMBER: 1 << 0,\n MODE_ALPHA_NUM: 1 << 1,\n MODE_8BIT_BYTE: 1 << 2,\n MODE_KANJI: 1 << 3\n};\n\n// src/lib/8BitByte.ts\nvar QR8bitByte = class {\n mode;\n data;\n constructor(data) {\n this.mode = mode_default.MODE_8BIT_BYTE;\n this.data = data;\n }\n getLength() {\n return this.data.length;\n }\n // FIXME?\n write(buffer) {\n for (let i = 0; i < this.data.length; i++) {\n buffer.put(this.data.charCodeAt(i), 8);\n }\n }\n};\n\n// src/lib/ErrorCorrectLevel.ts\nvar ErrorCorrectLevel = {\n /**\n * Allows recovery of up to 7% data loss\n */\n L: 1,\n /**\n * Allows recovery of up to 15% data loss\n */\n M: 0,\n /**\n * Allows recovery of up to 25% data loss\n */\n Q: 3,\n /**\n * Allows recovery of up to 30% data loss\n */\n H: 2\n};\n\n// src/lib/RSBlock.ts\nvar QRRSBlock = class _QRRSBlock {\n totalCount;\n dataCount;\n constructor(totalCount, dataCount) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n }\n static RS_BLOCK_TABLE = [\n // L\n // M\n // Q\n // H\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12],\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n static getRSBlocks(typeNumber, errorCorrectLevel) {\n const rsBlock = _QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n if (rsBlock == void 0) {\n throw new Error(\n \"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel\n );\n }\n const length = rsBlock.length / 3;\n const list = [];\n for (let i = 0; i < length; i++) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n for (let j = 0; j < count; j++) {\n list.push(new _QRRSBlock(totalCount, dataCount));\n }\n }\n return list;\n }\n static getRsBlockTable(typeNumber, errorCorrectLevel) {\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n return _QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case ErrorCorrectLevel.M:\n return _QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case ErrorCorrectLevel.Q:\n return _QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case ErrorCorrectLevel.H:\n return _QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default:\n return void 0;\n }\n }\n};\n\n// src/lib/BitBuffer.ts\nvar QRBitBuffer = class {\n buffer;\n length;\n constructor() {\n this.buffer = [];\n this.length = 0;\n }\n get(index) {\n const bufIndex = Math.floor(index / 8);\n return (this.buffer[bufIndex] >>> 7 - index % 8 & 1) == 1;\n }\n put(num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit((num >>> length - i - 1 & 1) == 1);\n }\n }\n getLengthInBits() {\n return this.length;\n }\n putBit(bit) {\n const bufIndex = Math.floor(this.length / 8);\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[bufIndex] |= 128 >>> this.length % 8;\n }\n this.length++;\n }\n};\n\n// src/lib/math.ts\nvar QRMath = {\n glog: function(n) {\n if (n < 1) {\n throw new Error(\"glog(\" + n + \")\");\n }\n return QRMath.LOG_TABLE[n];\n },\n gexp: function(n) {\n while (n < 0) {\n n += 255;\n }\n while (n >= 256) {\n n -= 255;\n }\n return QRMath.EXP_TABLE[n];\n },\n EXP_TABLE: new Array(256),\n LOG_TABLE: new Array(256)\n};\nfor (let i = 0; i < 8; i++) {\n QRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (let i = 8; i < 256; i++) {\n QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];\n}\nfor (let i = 0; i < 255; i++) {\n QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;\n}\nvar math_default = QRMath;\n\n// src/lib/Polynomial.ts\nvar QRPolynomial = class _QRPolynomial {\n num;\n constructor(num, shift) {\n if (num.length == void 0) {\n throw new Error(num.length + \"/\" + shift);\n }\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset++;\n }\n this.num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i++) {\n this.num[i] = num[i + offset];\n }\n }\n get(index) {\n return this.num[index];\n }\n getLength() {\n return this.num.length;\n }\n multiply(e) {\n const num = new Array(this.getLength() + e.getLength() - 1);\n for (let i = 0; i < this.getLength(); i++) {\n for (let j = 0; j < e.getLength(); j++) {\n num[i + j] ^= math_default.gexp(math_default.glog(this.get(i)) + math_default.glog(e.get(j)));\n }\n }\n return new _QRPolynomial(num, 0);\n }\n mod(e) {\n if (this.getLength() - e.getLength() < 0) {\n return this;\n }\n const ratio = math_default.glog(this.get(0)) - math_default.glog(e.get(0));\n const num = new Array(this.getLength());\n for (let i = 0; i < this.getLength(); i++) {\n num[i] = this.get(i);\n }\n for (let i = 0; i < e.getLength(); i++) {\n num[i] ^= math_default.gexp(math_default.glog(e.get(i)) + ratio);\n }\n return new _QRPolynomial(num, 0).mod(e);\n }\n};\n\n// src/lib/util.ts\nvar QRMaskPattern = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n};\nvar QRUtil = {\n PATTERN_POSITION_TABLE: [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ],\n G15: 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0,\n G18: 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0,\n G15_MASK: 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1,\n getBCHTypeInfo: function(data) {\n let d = data << 10;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= QRUtil.G15 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15);\n }\n return (data << 10 | d) ^ QRUtil.G15_MASK;\n },\n getBCHTypeNumber: function(data) {\n let d = data << 12;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= QRUtil.G18 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18);\n }\n return data << 12 | d;\n },\n getBCHDigit: function(data) {\n let digit = 0;\n while (data != 0) {\n digit++;\n data >>>= 1;\n }\n return digit;\n },\n getPatternPosition: function(typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n getMask: function(maskPattern, i, j) {\n switch (maskPattern) {\n case QRMaskPattern.PATTERN000:\n return (i + j) % 2 == 0;\n case QRMaskPattern.PATTERN001:\n return i % 2 == 0;\n case QRMaskPattern.PATTERN010:\n return j % 3 == 0;\n case QRMaskPattern.PATTERN011:\n return (i + j) % 3 == 0;\n case QRMaskPattern.PATTERN100:\n return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;\n case QRMaskPattern.PATTERN101:\n return i * j % 2 + i * j % 3 == 0;\n case QRMaskPattern.PATTERN110:\n return (i * j % 2 + i * j % 3) % 2 == 0;\n case QRMaskPattern.PATTERN111:\n return (i * j % 3 + (i + j) % 2) % 2 == 0;\n default:\n throw new Error(\"bad maskPattern:\" + maskPattern);\n }\n },\n getErrorCorrectPolynomial: function(errorCorrectLength) {\n let a = new QRPolynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new QRPolynomial([1, math_default.gexp(i)], 0));\n }\n return a;\n },\n getLengthInBits: function(mode, type) {\n if (1 <= type && type < 10) {\n switch (mode) {\n case mode_default.MODE_NUMBER:\n return 10;\n case mode_default.MODE_ALPHA_NUM:\n return 9;\n case mode_default.MODE_8BIT_BYTE:\n return 8;\n case mode_default.MODE_KANJI:\n return 8;\n default:\n throw new Error(\"mode:\" + mode);\n }\n } else if (type < 27) {\n switch (mode) {\n case mode_default.MODE_NUMBER:\n return 12;\n case mode_default.MODE_ALPHA_NUM:\n return 11;\n case mode_default.MODE_8BIT_BYTE:\n return 16;\n case mode_default.MODE_KANJI:\n return 10;\n default:\n throw new Error(\"mode:\" + mode);\n }\n } else if (type < 41) {\n switch (mode) {\n case mode_default.MODE_NUMBER:\n return 14;\n case mode_default.MODE_ALPHA_NUM:\n return 13;\n case mode_default.MODE_8BIT_BYTE:\n return 16;\n case mode_default.MODE_KANJI:\n return 12;\n default:\n throw new Error(\"mode:\" + mode);\n }\n } else {\n throw new Error(\"type:\" + type);\n }\n },\n getLostPoint: function(qrCode) {\n const moduleCount = qrCode.getModuleCount();\n let lostPoint = 0;\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount; col++) {\n let sameCount = 0;\n const dark = qrCode.isDark(row, col);\n for (let r = -1; r <= 1; r++) {\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n for (let c = -1; c <= 1; c++) {\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n if (r == 0 && c == 0) {\n continue;\n }\n if (dark == qrCode.isDark(row + r, col + c)) {\n sameCount++;\n }\n }\n }\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n }\n for (let row = 0; row < moduleCount - 1; row++) {\n for (let col = 0; col < moduleCount - 1; col++) {\n let count = 0;\n if (qrCode.isDark(row, col))\n count++;\n if (qrCode.isDark(row + 1, col))\n count++;\n if (qrCode.isDark(row, col + 1))\n count++;\n if (qrCode.isDark(row + 1, col + 1))\n count++;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount - 6; col++) {\n if (qrCode.isDark(row, col) && !qrCode.isDark(row, col + 1) && qrCode.isDark(row, col + 2) && qrCode.isDark(row, col + 3) && qrCode.isDark(row, col + 4) && !qrCode.isDark(row, col + 5) && qrCode.isDark(row, col + 6)) {\n lostPoint += 40;\n }\n }\n }\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount - 6; row++) {\n if (qrCode.isDark(row, col) && !qrCode.isDark(row + 1, col) && qrCode.isDark(row + 2, col) && qrCode.isDark(row + 3, col) && qrCode.isDark(row + 4, col) && !qrCode.isDark(row + 5, col) && qrCode.isDark(row + 6, col)) {\n lostPoint += 40;\n }\n }\n }\n let darkCount = 0;\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col)) {\n darkCount++;\n }\n }\n }\n const ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n return lostPoint;\n }\n};\nvar util_default = QRUtil;\n\n// src/lib/QRCode.ts\nvar QRCode = class _QRCode {\n typeNumber;\n errorCorrectLevel;\n modules;\n moduleCount;\n dataCache;\n dataList;\n constructor(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n }\n // TODO data may be anything, but we start with string\n addData(data) {\n const newData = new QR8bitByte(data);\n this.dataList.push(newData);\n this.dataCache = null;\n }\n isDark(row, col) {\n if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n throw new Error(row + \",\" + col);\n }\n if (this.modules === null) {\n throw new Error(\"this.modules is null\");\n }\n return this.modules[row][col];\n }\n getModuleCount() {\n return this.moduleCount;\n }\n make() {\n if (this.typeNumber < 1) {\n let typeNumber = 1;\n for (typeNumber = 1; typeNumber < 40; typeNumber++) {\n const rsBlocks = QRRSBlock.getRSBlocks(\n typeNumber,\n this.errorCorrectLevel\n );\n const buffer = new QRBitBuffer();\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n for (let i = 0; i < this.dataList.length; i++) {\n const data = this.dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(\n data.getLength(),\n util_default.getLengthInBits(data.mode, typeNumber)\n );\n data.write(buffer);\n }\n if (buffer.getLengthInBits() <= totalDataCount * 8)\n break;\n }\n this.typeNumber = typeNumber;\n }\n this.makeImpl(false, this.getBestMaskPattern());\n }\n makeImpl(test, maskPattern) {\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = new Array(this.moduleCount);\n for (let row = 0; row < this.moduleCount; row++) {\n this.modules[row] = new Array(this.moduleCount);\n for (let col = 0; col < this.moduleCount; col++) {\n this.modules[row][col] = null;\n }\n }\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n if (this.dataCache == null) {\n this.dataCache = _QRCode.createData(\n this.typeNumber,\n this.errorCorrectLevel,\n this.dataList\n );\n }\n this.mapData(this.dataCache, maskPattern);\n }\n setupPositionProbePattern(row, col) {\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || this.moduleCount <= row + r)\n continue;\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || this.moduleCount <= col + c)\n continue;\n if (0 <= r && r <= 6 && (c == 0 || c == 6) || 0 <= c && c <= 6 && (r == 0 || r == 6) || 2 <= r && r <= 4 && 2 <= c && c <= 4) {\n if (this.modules === null) {\n throw new Error(\"this.modules is null\");\n }\n this.modules[row + r][col + c] = true;\n } else {\n if (this.modules === null) {\n throw new Error(\"this.modules is null\");\n }\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n getBestMaskPattern() {\n let minLostPoint = 0;\n let pattern = 0;\n for (let i = 0; i < 8; i++) {\n this.makeImpl(true, i);\n const lostPoint = util_default.getLostPoint(this);\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n return pattern;\n }\n setupTimingPattern() {\n if (this.modules === null) {\n throw new Error(\"this.modules is null\");\n }\n for (let r = 8; r < this.moduleCount - 8; r++) {\n if (this.modules[r][6] != null) {\n continue;\n }\n this.modules[r][6] = r % 2 == 0;\n }\n for (let c = 8; c < this.moduleCount - 8; c++) {\n if (this.modules[6][c] != null) {\n continue;\n }\n this.modules[6][c] = c % 2 == 0;\n }\n }\n setupPositionAdjustPattern() {\n if (this.modules === null) {\n throw new Error(\"this.modules is null\");\n }\n const pos = util_default.getPatternPosition(this.typeNumber);\n for (let i = 0; i < pos.length; i++) {\n for (let j = 0; j < pos.length; j++) {\n const row = pos[i];\n const col = pos[j];\n if (this.modules[row][col] != null) {\n continue;\n }\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r == -2 || r == 2 || c == -2 || c == 2 || r == 0 && c == 0) {\n this.modules[row + r][col + c] = true;\n } else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n }\n setupTypeNumber(test) {\n if (this.modules === null) {\n throw new Error(\"this.modules is null\");\n }\n const bits = util_default.getBCHTypeNumber(this.typeNumber);\n for (let i = 0; i < 18; i++) {\n const mod = !test && (bits >> i & 1) == 1;\n this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n }\n for (let i = 0; i < 18; i++) {\n const mod = !test && (bits >> i & 1) == 1;\n this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n }\n setupTypeInfo(test, maskPattern) {\n if (this.modules === null) {\n throw new Error(\"this.modules is null\");\n }\n const data = this.errorCorrectLevel << 3 | maskPattern;\n const bits = util_default.getBCHTypeInfo(data);\n for (let i = 0; i < 15; i++) {\n const mod = !test && (bits >> i & 1) == 1;\n if (i < 6) {\n this.modules[i][8] = mod;\n } else if (i < 8) {\n this.modules[i + 1][8] = mod;\n } else {\n this.modules[this.moduleCount - 15 + i][8] = mod;\n }\n }\n for (let i = 0; i < 15; i++) {\n const mod = !test && (bits >> i & 1) == 1;\n if (i < 8) {\n this.modules[8][this.moduleCount - i - 1] = mod;\n } else if (i < 9) {\n this.modules[8][15 - i - 1 + 1] = mod;\n } else {\n this.modules[8][15 - i - 1] = mod;\n }\n }\n this.modules[this.moduleCount - 8][8] = !test;\n }\n mapData(data, maskPattern) {\n if (this.modules === null) {\n throw new Error(\"this.modules is null\");\n }\n let inc = -1;\n let row = this.moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col == 6)\n col--;\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (this.modules[row][col - c] == null) {\n let dark = false;\n if (byteIndex < data.length) {\n dark = (data[byteIndex] >>> bitIndex & 1) == 1;\n }\n const mask = util_default.getMask(maskPattern, row, col - c);\n if (mask) {\n dark = !dark;\n }\n this.modules[row][col - c] = dark;\n bitIndex--;\n if (bitIndex == -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n row += inc;\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n }\n static PAD0 = 236;\n static PAD1 = 17;\n static createData(typeNumber, errorCorrectLevel, dataList) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n const buffer = new QRBitBuffer();\n for (let i = 0; i < dataList.length; i++) {\n const data = dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), util_default.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error(\n \"code length overflow. (\" + buffer.getLengthInBits() + \">\" + totalDataCount * 8 + \")\"\n );\n }\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n while (true) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(_QRCode.PAD0, 8);\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(_QRCode.PAD1, 8);\n }\n return _QRCode.createBytes(buffer, rsBlocks);\n }\n static createBytes(buffer, rsBlocks) {\n let offset = 0;\n let maxDcCount = 0;\n let maxEcCount = 0;\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n for (let r = 0; r < rsBlocks.length; r++) {\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n dcdata[r] = new Array(dcCount);\n for (let i = 0; i < dcdata[r].length; i++) {\n dcdata[r][i] = 255 & buffer.buffer[i + offset];\n }\n offset += dcCount;\n const rsPoly = util_default.getErrorCorrectPolynomial(ecCount);\n const rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (let i = 0; i < ecdata[r].length; i++) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;\n }\n }\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n const data = new Array(totalCodeCount);\n let index = 0;\n for (let i = 0; i < maxDcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < dcdata[r].length) {\n data[index++] = dcdata[r][i];\n }\n }\n }\n for (let i = 0; i < maxEcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < ecdata[r].length) {\n data[index++] = ecdata[r][i];\n }\n }\n }\n return data;\n }\n};\n\n// src/index.ts\nvar qrcode = (data, opt) => {\n opt = opt || {};\n const qr = new QRCode(\n opt.typeNumber || -1,\n opt.errorCorrectLevel || ErrorCorrectLevel.H\n );\n qr.addData(data);\n qr.make();\n return qr;\n};\nexport {\n ErrorCorrectLevel,\n QRCode,\n qrcode\n};\n","import { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\nimport React from \"react\";\n\nexport const CommuntiyTelegramIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M4.108 9.464S9.645 7.13 11.565 6.31c.736-.328 3.233-1.38 3.233-1.38s1.152-.46 1.056.658c-.032.46-.288 2.069-.544 3.81-.384 2.463-.8 5.157-.8 5.157s-.064.755-.608.887c-.544.13-1.44-.46-1.6-.592-.129-.098-2.401-1.576-3.233-2.299-.224-.197-.48-.591.032-1.051a124 124 0 0 0 3.36-3.285c.384-.394.768-1.313-.832-.197-2.272 1.61-4.513 3.12-4.513 3.12s-.512.33-1.472.034-2.08-.69-2.08-.69-.768-.493.544-1.018\" />\n </svg>\n );\n});\nexport const CommuntiyDiscordIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M14.956 5.522c1.604 2.374 2.396 5.053 2.1 8.136a.05.05 0 0 1-.02.033 11.7 11.7 0 0 1-3.55 1.805.045.045 0 0 1-.05-.017 9.6 9.6 0 0 1-.725-1.188.046.046 0 0 1 .024-.063 7 7 0 0 0 1.108-.531.046.046 0 0 0 .004-.076 6 6 0 0 1-.22-.174.04.04 0 0 0-.047-.006c-2.296 1.068-4.812 1.068-7.136 0a.04.04 0 0 0-.046.006 6 6 0 0 1-.22.174.046.046 0 0 0 .005.076c.353.204.721.384 1.107.531.025.01.037.039.025.063a8.5 8.5 0 0 1-.725 1.188.05.05 0 0 1-.05.017 11.7 11.7 0 0 1-3.546-1.805.05.05 0 0 1-.018-.033c-.248-2.667.257-5.368 2.097-8.137a.04.04 0 0 1 .02-.016 11.6 11.6 0 0 1 2.89-.903.05.05 0 0 1 .046.022c.125.224.269.51.366.744a10.7 10.7 0 0 1 3.246 0 8 8 0 0 1 .36-.744.044.044 0 0 1 .046-.022 11.7 11.7 0 0 1 2.89.903q.012.005.019.017m-6.018 5.07c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.576 1.442 1.276 1.442.71 0 1.276-.647 1.276-1.441m4.718 0c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.577 1.442 1.276 1.442.717 0 1.276-.647 1.276-1.441\" />\n </svg>\n );\n});\nexport const CommuntiyXIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"m4.42 4.73 4.633 6.194-4.662 5.037H5.44l4.082-4.41 3.298 4.41h3.57l-4.893-6.543 4.34-4.689h-1.05l-3.759 4.062-3.037-4.062zm1.543.772h1.64l7.244 9.686h-1.64z\" />\n </svg>\n );\n});\n\nCommuntiyXIcon.displayName = \"CommuntiyXIcon\";\nCommuntiyTelegramIcon.displayName = \"CommuntiyTelegramIcon\";\nCommuntiyDiscordIcon.displayName = \"CommuntiyDiscordIcon\";\n","import React from \"react\";\nimport { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\n\nexport const OrderlyTextIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { opacity = 1, ...rest } = props;\n return (\n <svg\n ref={ref}\n width=\"45\"\n height=\"14\"\n viewBox=\"0 0 45 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.352 2.558a.063.063 0 0 1-.04.112H2.419a.063.063 0 0 1-.04-.112A4.73 4.73 0 0 1 5.365 1.5c1.132 0 2.171.396 2.987 1.058M3.518 7.546a.18.18 0 0 0-.148-.08H.886a.085.085 0 0 0-.083.11 4.75 4.75 0 0 0 4.562 3.429 4.75 4.75 0 0 0 4.562-3.43.085.085 0 0 0-.082-.108H7.36a.18.18 0 0 0-.148.079 2.252 2.252 0 0 1-3.694 0m3.518-2.812a.18.18 0 0 0 .134.061h2.598c.06 0 .101-.057.082-.113a4.8 4.8 0 0 0-.801-1.432.17.17 0 0 0-.132-.062H1.814a.17.17 0 0 0-.132.062A4.8 4.8 0 0 0 .88 4.682a.085.085 0 0 0 .081.113h2.6c.05 0 .099-.023.133-.06a2.25 2.25 0 0 1 1.67-.742c.663 0 1.258.286 1.67.741M7.6 6.95a.067.067 0 0 1-.063-.086 2.26 2.26 0 0 0-.079-1.45.067.067 0 0 1 .061-.093h2.45c.03 0 .058.022.063.052a4.8 4.8 0 0 1 .04 1.52.064.064 0 0 1-.065.057zm-4.407-.086a.067.067 0 0 1-.063.086H.723a.064.064 0 0 1-.064-.056 4.8 4.8 0 0 1 .039-1.52.065.065 0 0 1 .063-.053h2.45c.047 0 .079.049.061.093a2.25 2.25 0 0 0-.079 1.45\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n <path\n d=\"M11.272 4.438h1.685v1.61l-.275-.312q.237-.511.662-.874.425-.361.949-.487.524-.124 1.073.038v1.585q-.661-.224-1.223-.125-.55.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.148 3.22q0-.923.4-1.697.41-.774 1.123-1.211a2.95 2.95 0 0 1 1.573-.437 2.7 2.7 0 0 1 1.523.437 2.8 2.8 0 0 1 1.01 1.198q.363.762.363 1.71 0 .95-.362 1.71-.35.762-1.011 1.199a2.7 2.7 0 0 1-1.523.437 2.95 2.95 0 0 1-1.573-.437 3.1 3.1 0 0 1-1.124-1.198 3.7 3.7 0 0 1-.4-1.71m1.748 0q0 .5.224.924.225.412.612.65.387.236.861.236.475 0 .862-.237.386-.237.611-.649.225-.424.225-.924 0-.498-.225-.91-.225-.425-.611-.65a1.6 1.6 0 0 0-.862-.237q-.474 0-.861.237a1.6 1.6 0 0 0-.612.65q-.224.412-.224.91m3.395-6.016h1.685v9.237h-1.685zm4.192 5.329h3.97l-.387.537a2 2 0 0 0-.25-.9 1.63 1.63 0 0 0-.612-.623 1.64 1.64 0 0 0-.861-.225q-.487 0-.886.25a1.6 1.6 0 0 0-.625.686 2.1 2.1 0 0 0-.224.961q0 .537.224.974.239.436.662.687.425.25.961.25.525 0 .937-.238.423-.25.661-.674l1.386.624q-.45.787-1.236 1.26-.786.463-1.798.463-.96 0-1.747-.437a3.3 3.3 0 0 1-1.248-1.198 3.34 3.34 0 0 1-.45-1.71q0-.924.437-1.686.45-.775 1.223-1.21.774-.45 1.723-.45 1.061 0 1.885.537.825.536 1.21 1.448.4.898.226 1.96h-5.181zm6.221-2.534h1.685v1.61l-.274-.312q.237-.511.661-.874.425-.361.949-.487.525-.124 1.073.038v1.585q-.661-.224-1.223-.125-.549.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.885-2.796h1.686v9.237H35.86zm4.359 9.324q.224.487.587.737.362.262.836.262.711 0 1.186-.5.487-.486.487-1.26V9.08l.262.35a2.43 2.43 0 0 1-.911 1.011q-.6.362-1.373.362-.8 0-1.386-.337a2.3 2.3 0 0 1-.886-.936q-.312-.6-.312-1.386V4.438h1.685v3.408q0 .436.162.761.162.312.462.5.312.174.761.174.45 0 .8-.175a1.3 1.3 0 0 0 .549-.511q.187-.338.187-.75V4.439H45v5.767q0 .936-.45 1.685a3.07 3.07 0 0 1-1.21 1.186 3.4 3.4 0 0 1-1.698.424q-.973 0-1.735-.474a3.3 3.3 0 0 1-1.186-1.26z\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n </svg>\n );\n }\n);\n","import { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\nimport React from \"react\";\n// import { BaseIcon, BaseIconProps } from \"./baseIcon\";\n\nexport const SignalIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { size = 18, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n ref={ref}\n className=\"oui-fill-success-light\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M9.02092 2.92969C6.18562 2.92969 3.51037 4.13854 1.68502 6.18754C1.40947 6.49676 1.446 6.96671 1.75537 7.24218C2.0646 7.51743 2.53447 7.48143 2.81002 7.17183C4.35112 5.44196 6.6141 4.42969 9.02092 4.42969C11.4205 4.42969 13.6369 5.43123 15.185 7.17183C15.4603 7.48143 15.9301 7.51743 16.2397 7.24218C16.5492 6.96694 16.5853 6.49699 16.31 6.18754C14.4787 4.12856 11.8512 2.92969 9.02092 2.92969ZM9.02092 5.92969C7.04092 5.92969 5.20867 6.78461 3.93502 8.25019C3.6633 8.56294 3.6927 9.03318 4.00537 9.30468C4.31797 9.57618 4.7883 9.54693 5.06002 9.23418C6.05175 8.09343 7.47982 7.42968 9.02092 7.42968C10.5348 7.42968 11.9446 8.08144 12.935 9.18769C13.2113 9.49593 13.681 9.51093 13.9897 9.23418C14.2983 8.95818 14.3364 8.48793 14.06 8.17968C12.7879 6.75896 10.9659 5.92969 9.02092 5.92969ZM9.02092 8.92968C7.91917 8.92968 6.89242 9.40218 6.18502 10.2189C5.91375 10.5317 5.94225 11.0019 6.25537 11.2734C6.56835 11.5449 7.03875 11.5164 7.31002 11.2029C7.73542 10.7124 8.3589 10.4297 9.02092 10.4297C9.6684 10.4297 10.2604 10.7072 10.685 11.1797C10.962 11.4879 11.4552 11.5037 11.7631 11.2262C12.0712 10.9494 12.087 10.4799 11.81 10.1717C11.1037 9.38643 10.0983 8.92968 9.02092 8.92968ZM8.99752 11.9297C8.81609 11.9297 8.64374 12.0047 8.50537 12.1404C8.50537 12.1404 7.3935 13.2362 6.95842 13.6637C6.52342 14.0919 6.7968 14.9319 7.49752 14.9297H9.63037H10.4975C11.1864 14.9319 11.477 14.0739 11.0366 13.6404C10.5961 13.2069 9.51322 12.1404 9.51314 12.1404C9.37469 12.0047 9.17894 11.9297 8.99752 11.9297Z\" />\n </svg>\n );\n }\n);\n\nSignalIcon.displayName = \"SignalIcon\";\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const InfoIcon: FC<IconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={`${size}px`}\n height={`${size}px`}\n fill=\"none\"\n viewBox={`0 0 20 20`}\n {...rest}\n >\n <path\n d=\"M10.012 1.66602C5.40954 1.66602 1.67871 5.39685 1.67871 9.99935C1.67871 14.6018 5.40954 18.3327 10.012 18.3327C14.6145 18.3327 18.3454 14.6018 18.3454 9.99935C18.3454 5.39685 14.6145 1.66602 10.012 1.66602ZM10.012 5.83268C10.472 5.83268 10.8454 6.20602 10.8454 6.66602V10.8327C10.8454 11.2927 10.472 11.666 10.012 11.666C9.55204 11.666 9.17871 11.2927 9.17871 10.8327V6.66602C9.17871 6.20602 9.55204 5.83268 10.012 5.83268ZM10.012 12.4993C10.472 12.4993 10.8454 12.8727 10.8454 13.3327C10.8454 13.7927 10.472 14.166 10.012 14.166C9.55204 14.166 9.17871 13.7927 9.17871 13.3327C9.17871 12.8727 9.55204 12.4993 10.012 12.4993Z\"\n fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import React from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const CloseIcon: React.FC<IconProps> = (props) => {\n const { size = 16, ...rest } = props;\n return (\n <svg\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M3.32972 2.60449C3.15912 2.60449 2.98072 2.66183 2.85052 2.79183C2.59019 3.0525 2.59019 3.48982 2.85052 3.75049L7.03806 7.93782L2.85052 12.1252C2.59019 12.3858 2.59019 12.8232 2.85052 13.0838C3.11092 13.3438 3.54852 13.3438 3.80892 13.0838L7.99639 8.89649L12.1839 13.0838C12.4443 13.3438 12.8819 13.3438 13.1423 13.0838C13.4026 12.8232 13.4026 12.3858 13.1423 12.1252L8.95472 7.93782L13.1423 3.75049C13.4026 3.48982 13.4026 3.0525 13.1423 2.79183C13.0121 2.66183 12.8336 2.60449 12.6631 2.60449C12.4925 2.60449 12.3141 2.66183 12.1839 2.79183L7.99639 6.97916L3.80892 2.79183C3.67872 2.66183 3.50032 2.60449 3.32972 2.60449Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const OrderlyLogo: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width=\"200\"\n height=\"24\"\n viewBox=\"0 0 200 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M22.2637 18.5152H26.1444V13.3629C26.1444 10.2669 27.9664 9.39239 29.6701 9.39239C29.9777 9.39239 30.2617 9.41602 30.6639 9.46329V6.20176C30.2853 6.10722 29.9777 6.08359 29.7174 6.08359C27.8481 6.08359 26.6886 7.3362 26.2153 9.27421H26.1444V6.22539H22.2637V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M37.3191 18.7516C39.1411 18.7516 40.3952 17.7826 40.7265 16.8608V18.5152H44.6072V1.97122H40.7265V7.87979C40.3952 6.95806 39.1411 5.98905 37.3191 5.98905C34.8108 5.98905 31.9713 7.83252 31.9713 12.3703C31.9713 16.9317 34.8108 18.7516 37.3191 18.7516ZM35.6153 12.3703C35.6153 10.196 36.9168 9.20331 38.2892 9.20331C39.638 9.20331 40.8921 10.196 40.8921 12.3703C40.8921 14.5447 39.638 15.5373 38.2892 15.5373C36.9168 15.5373 35.6153 14.5447 35.6153 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M53.418 18.7516C56.4468 18.7516 58.6475 17.1917 59.2154 14.3556H55.8079C55.595 15.1592 55.0744 15.8209 53.489 15.8209C51.9746 15.8209 51.0281 15.1355 50.8151 13.3393H59.31C59.3573 13.0557 59.381 12.8194 59.381 12.3703C59.381 7.57255 56.5888 5.98905 53.418 5.98905C50.1289 5.98905 47.1474 7.73799 47.1474 12.323C47.1474 17.0972 50.3655 18.7516 53.418 18.7516ZM50.8388 11.0941C51.0754 9.676 51.8799 8.9197 53.3234 8.9197C55.0981 8.9197 55.6423 10.0305 55.7133 11.0941H50.8388Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.8978 18.5152H65.7784V13.3629C65.7784 10.2669 67.6005 9.39239 69.3042 9.39239C69.6118 9.39239 69.8957 9.41602 70.298 9.46329V6.20176C69.9194 6.10722 69.6118 6.08359 69.3515 6.08359C67.4821 6.08359 66.3227 7.3362 65.8494 9.27421H65.7784V6.22539H61.8978V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M72.5672 18.5152H76.4479V1.97122H72.5672V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M79.8261 20.0278V23.2893C83.6358 23.6911 85.2212 22.4149 86.8776 18.3734L91.8468 6.22539H87.8714L85.1739 13.5757L82.5473 6.22539H78.5957L83.0679 17.2626C83.3755 17.9953 83.3992 18.3734 83.1389 18.9643C82.9259 19.437 82.3817 20.3587 79.8261 20.0278Z\"\n fill=\"white\"\n />\n <path\n d=\"M100.278 18.5152H104.229V8.63609H104.324L110.287 18.5152H114.546V1.97122H110.571V12.1103H110.476L104.371 1.97122H100.278V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M123.327 18.7516C126.356 18.7516 128.557 17.1917 129.125 14.3556H125.717C125.504 15.1592 124.984 15.8209 123.398 15.8209C121.884 15.8209 120.937 15.1355 120.724 13.3393H129.219C129.267 13.0557 129.29 12.8194 129.29 12.3703C129.29 7.57255 126.498 5.98905 123.327 5.98905C120.038 5.98905 117.057 7.73799 117.057 12.323C117.057 17.0972 120.275 18.7516 123.327 18.7516ZM120.748 11.0941C120.985 9.676 121.789 8.9197 123.233 8.9197C125.007 8.9197 125.552 10.0305 125.623 11.0941H120.748Z\"\n fill=\"white\"\n />\n <path\n d=\"M137.439 18.6807C138.172 18.6807 138.882 18.5861 139.474 18.4207V15.5609C138.93 15.6082 138.717 15.6082 138.456 15.6082C137.202 15.6082 136.966 14.9228 136.966 14.072V9.22695H139.379V6.22539H136.966V3.01113H133.085V6.22539H130.979V9.22695H133.085V14.6156C133.085 17.4753 134.789 18.6807 137.439 18.6807Z\"\n fill=\"white\"\n />\n <path\n d=\"M144.456 18.5152H148.833L150.797 11.3777L152.761 18.5152H157.115L160.333 6.22539H156.666L154.749 14.781H154.654L152.454 6.22539H149.117L146.917 14.781H146.822L144.905 6.22539H141.261L144.456 18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M167.796 18.7516C170.896 18.7516 174.043 16.8845 174.043 12.3703C174.043 7.85616 170.896 5.98905 167.796 5.98905C164.673 5.98905 161.549 7.85616 161.549 12.3703C161.549 16.8845 164.673 18.7516 167.796 18.7516ZM165.169 12.3703C165.169 10.196 166.282 9.20331 167.796 9.20331C169.287 9.20331 170.399 10.196 170.399 12.3703C170.399 14.5447 169.287 15.5373 167.796 15.5373C166.282 15.5373 165.169 14.5447 165.169 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M176.554 18.5152H180.434V13.3629C180.434 10.2669 182.256 9.39239 183.96 9.39239C184.268 9.39239 184.552 9.41602 184.954 9.46329V6.20176C184.575 6.10722 184.268 6.08359 184.007 6.08359C182.138 6.08359 180.979 7.3362 180.505 9.27421H180.434V6.22539H176.554V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M187.223 18.5152H191.104V14.9701L192.074 13.9302L195.742 18.5152H200.001L194.44 11.4249L199.362 6.22539H195.126L191.104 10.8104V1.97122H187.223V18.5152Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.66235 0.640167L9.70838 0.640167C12.1367 0.64581 14.355 1.54403 16.052 3.02375C16.1722 3.1286 16.0961 3.32102 15.9365 3.32102L3.43427 3.32102C3.27465 3.32102 3.1985 3.1286 3.31874 3.02375C5.01571 1.54403 7.23406 0.645809 9.66235 0.640167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.9175 12.9472C5.84821 12.8485 5.73663 12.7865 5.61594 12.7865L0.606422 12.7865C0.461299 12.7865 0.355489 12.924 0.39667 13.063C1.58273 17.0661 5.29234 19.9869 9.68495 19.9869C14.0776 19.9869 17.7872 17.0661 18.9732 13.063C19.0144 12.924 18.9086 12.7865 18.7635 12.7865L13.754 12.7865C13.6333 12.7865 13.5218 12.8485 13.4525 12.9472C12.6208 14.1317 11.2434 14.9061 9.68499 14.9061C8.12654 14.9061 6.74917 14.1317 5.9175 12.9472Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.3322 7.51577C13.4208 7.63078 13.5556 7.7029 13.7009 7.7029L18.7216 7.7029C18.868 7.7029 18.9741 7.56325 18.9304 7.42361C18.551 6.2113 17.9392 5.10154 17.147 4.14637C17.0811 4.06686 16.9826 4.02197 16.8792 4.02197L2.4903 4.02197C2.38694 4.02197 2.28845 4.06686 2.22251 4.14637C1.43037 5.10153 0.818541 6.2113 0.439134 7.42361C0.395431 7.56325 0.501494 7.7029 0.647976 7.7029L5.66868 7.7029C5.81394 7.7029 5.9488 7.63078 6.03735 7.51577C6.87801 6.42387 8.19911 5.72017 9.68478 5.72017C11.1704 5.72017 12.4916 6.42387 13.3322 7.51577Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.1283 12.0868C14.0334 12.0868 13.969 11.9902 14.0018 11.9013C14.184 11.4069 14.2835 10.8724 14.2835 10.3148C14.2835 9.70687 14.1652 9.12653 13.9505 8.59547C13.9142 8.50592 13.9788 8.40582 14.0755 8.40582L19.0003 8.40582C19.1057 8.40582 19.1968 8.48012 19.2156 8.58377C19.3172 9.14546 19.3702 9.72401 19.3702 10.3149C19.3702 10.8567 19.3256 11.3881 19.2399 11.9057C19.2225 12.0108 19.1307 12.0868 19.0241 12.0868L14.1283 12.0868ZM5.36846 11.9013C5.40122 11.9902 5.33678 12.0868 5.24195 12.0868L0.346163 12.0868C0.239492 12.0868 0.147732 12.0108 0.130321 11.9057C0.0445957 11.3881 0 10.8567 0 10.3149C0 9.72401 0.0530502 9.14546 0.154653 8.58377C0.173403 8.48011 0.264481 8.40582 0.369941 8.40582L5.29476 8.40582C5.39146 8.40582 5.45599 8.50592 5.41977 8.59547C5.20498 9.12653 5.08673 9.70687 5.08673 10.3148C5.08673 10.8724 5.18623 11.4069 5.36846 11.9013Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","export {\n CommuntiyXIcon,\n CommuntiyTelegramIcon,\n CommuntiyDiscordIcon,\n} from \"./communtiyIcons\";\nexport { OrderlyTextIcon } from \"./orderlyNetworkTextIcon\";\nexport { SignalIcon } from \"./signal\";\nexport { InfoIcon } from \"./infoIcon\";\nexport { CloseIcon } from \"./closeIcon\";\nexport { OrderlyLogo } from \"./orderlyLogo\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Checkbox, cn, Flex, SimpleDialog } from \"@kodiak-finance/orderly-ui\";\nimport { InfoIcon } from \"../icons\";\nimport type { UseRestrictedInfoScriptReturn } from \"./restrictedInfo.script\";\n\nexport type RestrictedInfoProps = UseRestrictedInfoScriptReturn & {\n className?: string;\n};\n\nexport const RestrictedInfo: FC<RestrictedInfoProps> = (props) => {\n const { brokerName, agree, setAgree } = props;\n const {\n ip,\n content,\n restrictedOpen,\n canUnblock,\n accessRestricted,\n setAccessRestricted,\n } = props.restrictedInfo || {};\n const { t } = useTranslation();\n\n // if user region is in the canUnblock regions and accessRestricted is not set, show the dialog\n if (restrictedOpen && canUnblock && accessRestricted === undefined) {\n return (\n <SimpleDialog\n open={canUnblock}\n title={t(\"restrictedInfo.accessRestricted\")}\n size=\"sm\"\n closable={false}\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => {\n setAccessRestricted(true);\n },\n size: \"md\",\n },\n primary: {\n label: t(\"common.confirm\"),\n onClick: async () => {\n setAccessRestricted(false);\n },\n size: \"md\",\n disabled: !agree,\n },\n }}\n >\n {t(\"restrictedInfo.accessRestricted.description\")}\n\n <Flex gapX={1} pt={2}>\n <Checkbox\n id=\"orderConfirm\"\n color={\"white\"}\n checked={agree}\n onCheckedChange={(checked) => {\n setAgree(!!checked);\n }}\n />\n <label htmlFor=\"orderConfirm\" className=\"oui-cursor-pointer\">\n {t(\"restrictedInfo.accessRestricted.agree\")}\n </label>\n </Flex>\n </SimpleDialog>\n );\n }\n\n if (!restrictedOpen) {\n return;\n }\n\n const renderContent = () => {\n if (typeof content === \"function\") {\n return <span>{content({ ip: ip!, brokerName })}</span>;\n }\n return (\n content || (\n <span>\n {t(\"restrictedInfo.description.default\", {\n brokerName,\n ip,\n })}\n </span>\n )\n );\n };\n\n return (\n <Flex\n ref={props.container}\n justify=\"center\"\n className={cn(\n \"oui-restricted-info\",\n \"oui-rounded-xl oui-p-[7px]\",\n \"oui-text-warning-darken\",\n props.className,\n )}\n >\n <Flex\n className={cn(\n \"oui-min-h-[20px] oui-gap-1\",\n \"oui-text-2xs oui-leading-4 md:oui-text-sm\",\n \"oui-items-start lg:oui-justify-center\",\n props.mutiLine ? \"lg:oui-items-start\" : \"lg:oui-items-center\",\n )}\n >\n <InfoIcon size={20} className=\"oui-size-4 oui-shrink-0 lg:oui-size-5\" />\n {renderContent()}\n </Flex>\n </Flex>\n );\n};\n","import { useRef, useState } from \"react\";\nimport { useConfig, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useObserverElement } from \"@kodiak-finance/orderly-ui\";\n\nexport type UseRestrictedInfoScriptReturn = ReturnType<\n typeof useRestrictedInfoScript\n> & {\n brokerName?: string;\n};\n\nexport const useRestrictedInfoScript = () => {\n const { restrictedInfo } = useAppContext();\n const brokerName = useConfig(\"brokerName\");\n const container = useRef<HTMLDivElement>(null);\n const [mutiLine, setMutiLine] = useState(false);\n const [agree, setAgree] = useState(false);\n\n const [canUnblock, setCanUnblock] = useLocalStorage(\n \"orderly_unblock_restricted\",\n true,\n );\n\n useObserverElement(container.current, (entry) => {\n setMutiLine(entry.contentRect.height > 28);\n });\n\n return {\n restrictedInfo,\n brokerName,\n container,\n mutiLine,\n agree,\n setAgree,\n };\n};\n","import { FC } from \"react\";\nimport { useRestrictedInfoScript } from \"./restrictedInfo.script\";\nimport { RestrictedInfo, RestrictedInfoProps } from \"./restrictedInfo.ui\";\n\nexport type RestrictedInfoWidgetProps = Pick<RestrictedInfoProps, \"className\">;\n\nexport const RestrictedInfoWidget: FC<RestrictedInfoWidgetProps> = (props) => {\n const state = useRestrictedInfoScript();\n return <RestrictedInfo {...props} {...state} />;\n};\n","export { RestrictedInfo } from \"./restrictedInfo.ui\";\nexport { RestrictedInfoWidget } from \"./restrictedInfo.widget\";\nexport { useRestrictedInfoScript } from \"./restrictedInfo.script\";\n","import React, { useMemo } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { BottomNavItem } from \"./bottomNav.widget\";\n\nexport type BottomNavProps = {\n mainMenus?: BottomNavItem[];\n current?: string | string[];\n onRouteChange?: RouterAdapter[\"onRouteChange\"];\n};\n\nexport const BottomNav: React.FC<BottomNavProps> = (props) => {\n const { mainMenus, current, onRouteChange } = props;\n\n const isSubmenu = useMemo(() => {\n return mainMenus?.every((menu) => menu.href !== current);\n }, [mainMenus, current]);\n\n const menus = useMemo(() => {\n return mainMenus?.map((menu) => {\n const isActive = current === menu.href;\n const isExternalLink =\n menu.href.startsWith(\"http://\") || menu.href.startsWith(\"https://\");\n // const isTrading = menu.href === \"/\" || /trading/i.test(menu.name);\n return (\n <Flex\n key={menu.name}\n direction={\"column\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-flex-1\"\n onClick={() => {\n if (isExternalLink) {\n window.location.href = menu.href;\n } else {\n onRouteChange?.({ href: menu.href, name: menu.name });\n }\n }}\n >\n {/* TODO: add new trading menu when ai is ready */}\n {/* {isTrading ? (\n <BottomNavTradingMenu\n label={menu.name}\n active={!!isActive}\n activeIcon={menu.activeIcon}\n inactiveIcon={menu.inactiveIcon}\n onNavigate={() =>\n onRouteChange?.({ href: menu.href, name: menu.name })\n }\n />\n ) : (\n <Text>{isActive ? menu.activeIcon : menu.inactiveIcon}</Text>\n )} */}\n <Text>{isActive ? menu.activeIcon : menu.inactiveIcon}</Text>\n <Text size=\"2xs\" intensity={isActive ? 98 : 36}>\n {menu.name}\n </Text>\n </Flex>\n );\n });\n }, [mainMenus, current, onRouteChange]);\n\n if (isSubmenu || !mainMenus) {\n return null;\n }\n\n return (\n <Flex\n width={\"100%\"}\n height={64}\n px={3}\n itemAlign={\"center\"}\n justify={\"between\"}\n className=\"oui-border-t oui-border-line-4 oui-bg-base-9\"\n >\n {menus}\n </Flex>\n );\n};\n","import React, { ReactNode } from \"react\";\nimport { type RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { BottomNav } from \"./bottomNav.ui.mobile\";\n\nexport type BottomNavItem = {\n name: string;\n href: string;\n activeIcon: ReactNode;\n inactiveIcon: ReactNode;\n};\n\nexport type BottomNavProps = {\n mainMenus?: BottomNavItem[];\n current?: string;\n onRouteChange?: RouterAdapter[\"onRouteChange\"];\n};\n\nexport const BottomNavWidget: React.FC<BottomNavProps> = (props) => {\n const { isMobile } = useScreen();\n const { mainMenus, ...rest } = props;\n return isMobile ? <BottomNav mainMenus={mainMenus} {...rest} /> : null;\n};\n","import React, { useState } from \"react\";\nimport {\n Flex,\n PopoverRoot,\n PopoverTrigger,\n PopoverContent,\n Text,\n SpotIcon,\n PerpsIcon,\n SelectedChoicesFillIcon,\n PopupUnionIcon,\n CloseRoundFillIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\n\ntype TradingMenuChoiceProps = {\n icon: React.ReactNode;\n label: string;\n selected?: boolean;\n onClick?: () => void;\n className?: string;\n};\n\nconst TradingMenuChoice: React.FC<TradingMenuChoiceProps> = (props) => {\n const { icon, label, selected, onClick, className } = props;\n return (\n <Flex\n itemAlign=\"center\"\n className={cn(\n \"oui-w-full oui-px-2 oui-py-3\",\n \"oui-rounded-md\",\n \"oui-cursor-pointer\",\n className,\n )}\n onClick={onClick}\n >\n <Flex gap={2} itemAlign=\"center\">\n {icon}\n <Text size=\"sm\" intensity={80} weight=\"semibold\">\n {label}\n </Text>\n </Flex>\n <Flex className=\"oui-ml-auto\">\n {selected ? <SelectedChoicesFillIcon size={14} /> : null}\n </Flex>\n </Flex>\n );\n};\n\nexport type BottomNavTradingMenuProps = {\n active: boolean;\n activeIcon: React.ReactNode;\n inactiveIcon: React.ReactNode;\n label: string;\n onNavigate: () => void;\n};\n\nexport const BottomNavTradingMenu: React.FC<BottomNavTradingMenuProps> = (\n props,\n) => {\n const { active, activeIcon, inactiveIcon, onNavigate, label } = props;\n const [open, setOpen] = useState(false);\n\n const onClickTrigger = () => {\n if (!active) {\n onNavigate();\n return;\n }\n setOpen((v) => !v);\n };\n\n return (\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {!open ? (\n <>\n <Flex\n width={48}\n height={48}\n r=\"full\"\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-bg-base-7 oui--mt-6\"\n onClick={onClickTrigger}\n >\n {active ? activeIcon : inactiveIcon}\n </Flex>\n <Text\n size=\"2xs\"\n intensity={active ? 98 : 36}\n className=\"oui-text-center\"\n >\n {label}\n </Text>\n </>\n ) : (\n <Flex\n width={48}\n height={48}\n r=\"full\"\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-relative oui--mt-12\"\n onClick={(e) => {\n e.stopPropagation?.();\n setOpen(false);\n }}\n >\n <PopupUnionIcon\n size={78}\n className=\"oui-text-base-8 oui-absolute oui-left-1/2 oui-top-1/2 -oui-translate-x-1/2 -oui-translate-y-1/2\"\n />\n <Flex\n className=\"oui-absolute oui-left-1/2 oui-top-1/2 -oui-translate-x-1/2 -oui-translate-y-1/2\"\n itemAlign=\"center\"\n justify=\"center\"\n >\n <CloseRoundFillIcon size={28} />\n </Flex>\n </Flex>\n )}\n </PopoverTrigger>\n <PopoverContent\n sideOffset={12}\n align=\"center\"\n side=\"top\"\n className=\"!oui-w-[180px] !oui-bg-base-8 !oui-p-1 oui-border-none oui--mb-[22px]\"\n >\n <Flex direction=\"column\" className=\"oui-gap-1 oui-w-full\">\n <TradingMenuChoice\n icon={<SpotIcon size={20} />}\n label=\"Spot\"\n onClick={() => {\n window.location.href = \"https://woofi.com/swap\";\n setOpen(false);\n }}\n className=\"\"\n />\n <TradingMenuChoice\n icon={<PerpsIcon size={20} />}\n label=\"Perps\"\n selected={true}\n onClick={() => setOpen(false)}\n className=\"oui-bg-base-6\"\n />\n </Flex>\n </PopoverContent>\n </PopoverRoot>\n );\n};\n","export { BottomNavWidget, type BottomNavProps } from \"./bottomNav.widget\";\nexport { BottomNav } from \"./bottomNav.ui.mobile\";\nexport { BottomNavTradingMenu } from \"./tradingMenu.ui\";\n","import {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AccountMenu, AccountMenuProps } from \"./menu.ui\";\nimport { useAccountMenu } from \"./useWidgetBuilder.script\";\nimport { FC } from \"react\";\n\nexport const AccountMenuWidget = () => {\n const state = useAccountMenu();\n return <AccountMenu {...state} />;\n};\n\ninstallExtension<AccountMenuProps>({\n name: \"account-menu\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.AccountMenu],\n builder: useAccountMenu,\n __isInternal: true,\n})((props: AccountMenuProps) => {\n return <AccountMenu {...props} />;\n});\n\nexport const WalletConnectButtonExtension = () => {\n return <ExtensionSlot position={ExtensionPositionEnum.AccountMenu} />;\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Divider,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n EVMAvatar,\n Flex,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\nexport type AccountMenuProps = {\n accountState: AccountState;\n address?: string;\n onDisconnect: () => void;\n connect: () => Promise<void>;\n onCrateAccount: () => Promise<void>;\n onCreateOrderlyKey: () => Promise<void>;\n onOpenExplorer: () => void;\n onSwitchNetwork: () => void;\n wrongNetwork: boolean;\n disabledConnect?: boolean;\n isMobile: boolean;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { t } = useTranslation();\n const {\n accountState: state,\n onDisconnect,\n onOpenExplorer,\n wrongNetwork,\n onSwitchNetwork,\n isMobile,\n } = props;\n const disabled = state.validating || props.disabledConnect;\n\n if (!disabled && wrongNetwork) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-wrongNetwork-btn\"\n size=\"md\"\n color=\"warning\"\n onClick={onSwitchNetwork}\n >\n {t(\"connector.wrongNetwork\")}\n </Button>\n );\n }\n\n if (\n !disabled &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return (\n <WalletMenu\n address={state.address!}\n onDisconnect={onDisconnect}\n onOpenExplorer={onOpenExplorer}\n />\n );\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || disabled) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant={disabled ? undefined : \"gradient\"}\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={disabled}\n onClick={() => {\n props\n .connect()\n .then((r) => {\n console.log(\"*****\", r);\n })\n .catch((e) => console.error(e));\n }}\n >\n {isMobile ? t(\"connector.connect\") : t(\"connector.connectWallet\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please connect wallet before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return (\n <Button size=\"md\" onClick={() => props.onCrateAccount()}>\n {t(\"connector.createAccount\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please sign in before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.DisabledTrading) {\n return (\n <Button\n size=\"md\"\n onClick={() => {\n props\n .onCreateOrderlyKey()\n .then((r) => console.log(r))\n .catch((e) => console.error(e));\n }}\n >\n {t(\"connector.enableTrading\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // content={\"Please enable trading before starting to trade\"}\n // align={\"end\"}\n // >\n\n // </Tooltip>\n // );\n }\n};\n\nexport type AccountState = {\n status: AccountStatusEnum;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\n chainNamespace?: string;\n\n accountId?: string;\n userId?: string;\n address?: string;\n isNew?: boolean;\n\n connectWallet?: {\n name: string;\n chainId: number;\n };\n};\n\nconst WalletMenu = (props: {\n address: string;\n onDisconnect: () => void;\n onOpenExplorer: () => void;\n}) => {\n const { address, onDisconnect } = props;\n const { t } = useTranslation();\n\n return (\n <DropdownMenuRoot>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n >\n <Text.formatted rule=\"address\" className=\"oui-text-[rgba(0,0,0,.88)]\">\n {address}\n </Text.formatted>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n size={\"xl\"}\n align={\"end\"}\n onCloseAutoFocus={(e) => e.preventDefault()}\n style={{ width: \"280px\" }}\n className={\"oui-py-5 oui-font-semibold\"}\n sideOffset={12}\n >\n <DropdownMenuGroup>\n <Flex px={4}>\n <Flex gap={2} className={\"oui-flex-1\"}>\n <EVMAvatar address={address} size={\"md\"} />\n <Text.formatted rule={\"address\"} size={\"base\"}>\n {address}\n </Text.formatted>\n </Flex>\n <Flex gap={2}>\n <button\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-copyAddress\"\n onClick={async () => {\n // copy\n await navigator.clipboard.writeText(address);\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n // fill=\"none\"\n className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path\n d=\"M5.249 2.243a3 3 0 0 0-3 3v4.5a3 3 0 0 0 3 3 3 3 0 0 0 3 3h4.5a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3 3 3 0 0 0-3-3zm7.5 4.5a1.5 1.5 0 0 1 1.5 1.5v4.5a1.5 1.5 0 0 1-1.5 1.5h-4.5a1.5 1.5 0 0 1-1.5-1.5h3a3 3 0 0 0 3-3z\"\n // fill=\"currentcolor\"\n // fillOpacity=\".36\"\n\n // className={''}\n />\n </svg>\n </button>\n <button onClick={() => props.onOpenExplorer()}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path d=\"M12.7432 15.7432C14.3999 15.7432 15.7432 14.3999 15.7432 12.7432V5.24316C15.7432 3.58641 14.3999 2.24316 12.7432 2.24316H5.24316C3.58641 2.24316 2.24316 3.58641 2.24316 5.24316V12.7432C2.24316 14.3999 3.58641 15.7432 5.24316 15.7432H12.7432ZM6.74316 11.9932C6.55116 11.9932 6.35092 11.9287 6.20392 11.7824C5.91142 11.4892 5.91142 10.9972 6.20392 10.7039L9.20392 7.70392L7.49316 5.99316H11.9932V10.4932L10.2824 8.78241L7.28241 11.7824C7.13616 11.9287 6.93516 11.9932 6.74316 11.9932Z\" />\n </svg>\n </button>\n </Flex>\n </Flex>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} />\n {/* <DropdownMenuGroup>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n opacity=\".998\"\n d=\"M5.243 2.197a3 3 0 0 0-3 3v7.5a3 3 0 0 0 3 3h7.5a3 3 0 0 0 3-3v-7.5a3 3 0 0 0-3-3zm0 1.5h7.5a1.5 1.5 0 0 1 1.5 1.5v7.5a1.52 1.52 0 0 1-.754 1.298c-.144-1.771-2.046-2.798-4.496-2.798S4.603 12.251 4.486 14a1.52 1.52 0 0 1-.743-1.303v-7.5a1.5 1.5 0 0 1 1.5-1.5m3.75 1.5a2.625 2.625 0 1 0 0 5.25 2.625 2.625 0 0 0 0-5.25\"\n fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Overview</span>\n </Flex>\n </DropdownMenuItem>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M5.693 1.499c-1.463 0-2.672 1.11-2.672 2.508v9.984c0 1.398 1.209 2.508 2.672 2.508h6.657c1.463 0 2.672-1.11 2.672-2.508V6.726c0-2.672-2.58-5.227-5.25-5.227zm4.829 1.594c1.329.352 2.562 1.58 2.906 2.906h-1.735c-.667 0-1.171-.472-1.171-1.008zm-3.75 2.906h.75a.75.75 0 0 1 0 1.5h-.75a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5\"\n fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Orders</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} /> */}\n <DropdownMenuGroup>\n <DropdownMenuItem\n size={\"xl\"}\n onSelect={(event) => {\n event.preventDefault();\n onDisconnect();\n }}\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-disconnect\"\n >\n <Flex gap={2} className={\"oui-text-danger-light\"}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.97 14.03a.75.75 0 0 1 0-1.06l.262-.263C2.594 12.354 1.5 11.108 1.5 9.06c0-2.447 1.563-3.75 3.75-3.75H6a.75.75 0 0 1 0 1.5h-.75C3.837 6.81 3 7.508 3 9.06s.837 2.25 2.25 2.25h.38l1.188-1.188a.75.75 0 0 1-.068-.312v-.75c0-1.162.381-2.19 1.172-2.883.645-.565 1.512-.867 2.578-.867h1.13l1.34-1.34a.75.75 0 0 1 1.061 1.06l-9 9a.75.75 0 0 1-1.06 0m6.14-7.2L8.27 8.668c.065-.583.281-1.056.635-1.367.289-.253.684-.419 1.205-.473M7.825 12.8l3.414-3.415c-.126 2.12-1.496 3.297-3.414 3.415m7.705-6.58a.75.75 0 0 0-1.06 1.06c.508.509.53 1.202.53 1.72 0 .739-.014 1.203-.53 1.72-.165.164-.455.307-.825.405a3.8 3.8 0 0 1-.895.125H12a.75.75 0 0 0 0 1.5h.75c.31 0 .787-.045 1.28-.175.48-.127 1.065-.36 1.5-.795.97-.97.97-1.991.97-2.75v-.06c0-.51.002-1.778-.97-2.75\"\n fill=\"currentcolor\"\n />\n </svg>\n <span>{t(\"connector.disconnect\")}</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useAccount,\n useChains,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { modal, toast, useScreen, Text } from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorSheetId,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"@kodiak-finance/orderly-ui-connector\";\n\nconst ModalTitle = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nexport const useAccountMenu = (): any => {\n const { t } = useTranslation();\n const { disconnect, connectedChain } = useWalletConnector();\n const { account, state } = useAccount();\n const { connectWallet, disabledConnect, wrongNetwork, setCurrentChainId } =\n useAppContext();\n\n const [, { findByChainId }] = useChains();\n\n const { isMobile } = useScreen();\n\n const onCrateAccount = async () => {\n const modalId = isMobile ? WalletConnectorSheetId : WalletConnectorModalId;\n modal\n .show(modalId, {\n title: <ModalTitle />,\n })\n .then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err),\n );\n };\n\n const onCreateOrderlyKey = async () => {\n const modalId = isMobile ? WalletConnectorSheetId : WalletConnectorModalId;\n modal\n .show(modalId, {\n title: <ModalTitle />,\n })\n .then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err),\n );\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler({ status });\n } else {\n toast.success(t(\"connector.walletConnected\"));\n }\n });\n\n modal.show<{ wrongNetwork: boolean }>(ChainSelectorDialogId).then(\n (r) => {\n if (!r.wrongNetwork) {\n if (state.status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler(state);\n } else {\n toast.success(t(\"connector.walletConnected\"));\n }\n }\n },\n (error) => {\n console.log(\"[switchChain error]\", error);\n },\n );\n };\n\n const connect = async () => {\n const res = await connectWallet();\n\n if (!res) {\n return;\n }\n\n if (res.wrongNetwork) {\n switchChain();\n } else {\n statusChangeHandler(res);\n }\n };\n\n const statusChangeHandler = (nextState: any) => {\n if (\n nextState.validating ||\n nextState.status <= AccountStatusEnum.Connected\n ) {\n return;\n }\n\n if (nextState.status < AccountStatusEnum.SignedIn) {\n onCrateAccount();\n }\n if (nextState.status < AccountStatusEnum.EnableTrading) {\n onCreateOrderlyKey();\n }\n };\n\n const onOpenExplorer = useCallback(() => {\n if (!connectedChain) {\n return;\n }\n const chainInfo = findByChainId(\n connectedChain!.id as number,\n \"network_infos\",\n );\n\n if (chainInfo) {\n // @ts-ignore\n const { explorer_base_url } = chainInfo;\n if (explorer_base_url) {\n if (explorer_base_url.endsWith(\"/\")) {\n window.open(`${explorer_base_url}address/${account.address}`);\n } else {\n window.open(`${explorer_base_url}/address/${account.address}`);\n }\n }\n }\n }, [state, connectedChain]);\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n };\n\n const onSwitchNetwork = () => {\n const modalId = isMobile ? ChainSelectorSheetId : ChainSelectorDialogId;\n modal\n .show<{\n wrongNetwork: boolean;\n }>(modalId, {\n bridgeLessOnly: false,\n isWrongNetwork: wrongNetwork,\n })\n .then(\n (r: any) => {\n console.log(r?.chainId);\n if (r?.chainId) {\n setCurrentChainId(r?.chainId);\n }\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n\n return {\n address: state.address,\n accountState: state,\n connect,\n onCrateAccount,\n onCreateOrderlyKey,\n onOpenExplorer,\n onDisconnect,\n onSwitchNetwork,\n wrongNetwork,\n disabledConnect,\n isMobile,\n } as const;\n};\n\nexport type AccountMenuProps = ReturnType<typeof useAccountMenu>;\n","import { useMemo, useState } from \"react\";\nimport { useAccount, useWalletConnector } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useScaffoldContext } from \"../scaffold\";\nimport { CampaignProps } from \"./campaignButton\";\nimport { MainNavItemsProps } from \"./mainMenus/mainNavMenus.ui\";\nimport type { MainNavItem } from \"./mainMenus/navItem\";\nimport { MainNavWidgetProps } from \"./mainNav.widget\";\n\n// Hrefs here will NOT trigger routing when clicked (top-level item)\nconst NON_ROUTING_HREFS: string[] = [\"/vaults\"];\n\n// export type CampaignPosition = \"menuLeading\" | \"menuTailing\" | \"navTailing\";\nexport enum CampaignPositionEnum {\n menuLeading = \"menuLeading\",\n menuTailing = \"menuTailing\",\n navTailing = \"navTailing\",\n}\n\nexport type MainNavScriptReturn = ReturnType<typeof useMainNavScript>;\n\nexport const useMainNavScript = (props: MainNavWidgetProps) => {\n const { onItemClick, campaignPosition = CampaignPositionEnum.navTailing } =\n props;\n const { state } = useAccount();\n const { routerAdapter } = useScaffoldContext();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const [current, setCurrent] = useState(() => {\n if (typeof props.initialMenu === \"undefined\") return [];\n\n return !Array.isArray(props.initialMenu)\n ? [props.initialMenu]\n : props.initialMenu;\n });\n\n const onItemClickHandler = (scope: string) => (item: MainNavItem[]) => {\n const lastItem = item[item.length - 1];\n\n if (!lastItem) return;\n\n /**\n * If the target is not _blank, we should update the current state\n */\n if (lastItem.target !== \"_blank\") {\n setCurrent(item.map((item) => item.href));\n }\n\n const current = item[item.length - 1];\n const isExternalLink =\n typeof current.href === \"string\" &&\n (current.href.startsWith(\"http://\") ||\n current.href.startsWith(\"https://\"));\n\n // Hard-coded non-routing list\n if (NON_ROUTING_HREFS.includes(current.href)) {\n return;\n }\n\n if (current.target) {\n window.open(current.href, current.target);\n return;\n } else if (isExternalLink) {\n window.location.href = current.href;\n return;\n }\n const args = {\n href: current.href,\n name: current.name,\n scope,\n target: current.target,\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n };\n\n const mainNavConfig = useMemo(() => {\n const config = {\n leading: null,\n trailing: null,\n logo: {},\n mainMenus: [\n // { name: \"Trading\", href: \"/trading\" },\n // { name: \"Portfolio\", href: \"/portfolio\" },\n // { name: \"Markets\", href: \"/markets\" },\n // { name: \"Rewards\", href: \"/rewards\" },\n ],\n ...props,\n campaignPosition,\n };\n if (props.leading) {\n config.leading = props.leading;\n }\n\n if (props.trailing) {\n config.trailing = props.trailing;\n }\n\n if (props.campaigns) {\n if (campaignPosition === CampaignPositionEnum.menuTailing) {\n config.mainMenus = [...config.mainMenus, props.campaigns];\n } else if (campaignPosition === CampaignPositionEnum.menuLeading) {\n config.mainMenus = [props.campaigns, ...config.mainMenus];\n } else {\n config.campaigns = props.campaigns;\n }\n }\n\n return config;\n }, [props]);\n\n const { mainMenus, campaigns } = useMemo(() => {\n const converted: {\n campaigns?: CampaignProps;\n mainMenus?: MainNavItemsProps;\n } = {};\n\n if (mainNavConfig.mainMenus && mainNavConfig.mainMenus.length) {\n converted.mainMenus = {\n items: mainNavConfig.mainMenus,\n /**\n * @type string\n * The current item of the router\n */\n current,\n onItemClick: onItemClickHandler(\"mainMenu\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"mainMenu\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n if (mainNavConfig.campaigns && mainNavConfig.campaigns.children?.length) {\n converted.campaigns = {\n item: mainNavConfig.campaigns,\n current,\n onItemClick: onItemClickHandler(\"campaign\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"campaign\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n return converted;\n }, [mainNavConfig]);\n\n return {\n // currentProduct,\n // logo: mainNavConfig.logo,\n ...mainNavConfig,\n mainMenus,\n campaigns,\n isConnected: !!connectedChain,\n wrongNetwork,\n status: state.status,\n disabledConnect,\n };\n};\n","import React from \"react\";\nimport { Box, cn } from \"@kodiak-finance/orderly-ui\";\nimport { MainNavMobile } from \"../main/mainNav.ui.mobile\";\nimport { NotificationWidget } from \"../notification/notification.widget\";\nimport type { ScaffoldScriptReturn } from \"./scaffold.script\";\nimport type { ScaffoldProps } from \"./scaffold.widget\";\n\nconst LazyRestrictedInfoWidget = React.lazy(() =>\n import(\"../restrictedInfo\").then((mod) => {\n return { default: mod.RestrictedInfoWidget };\n }),\n);\n\nconst LazyBottomNav = React.lazy(() =>\n import(\"../bottomNav\").then((mod) => {\n return { default: mod.BottomNav };\n }),\n);\n\nexport const MobileScaffold: React.FC<\n React.PropsWithChildren<ScaffoldScriptReturn & ScaffoldProps>\n> = (props) => {\n const {\n classNames,\n topNavbarRef,\n bottomNavHeight,\n topBar,\n mainNavProps,\n routerAdapter,\n bottomNavRef,\n bottomNavProps,\n bottomNav,\n children,\n } = props;\n\n return (\n <div\n style={{\n paddingBottom: `calc(${bottomNavHeight}px + 12px + env(safe-area-inset-bottom))`,\n }}\n className={cn(\n \"oui-scaffold-root oui-w-full oui-bg-base-10 oui-pt-2\",\n classNames?.root,\n )}\n >\n <header\n ref={topNavbarRef}\n className={cn(\n \"oui-scaffold-topNavbar\",\n \"oui-sticky oui-top-0 oui-z-10 oui-w-full oui-bg-base-10\",\n classNames?.topNavbar,\n )}\n >\n {topBar ?? (\n <MainNavMobile {...mainNavProps} routerAdapter={routerAdapter} />\n )}\n </header>\n\n <Box\n className={cn(\n \"oui-scaffold-container oui-overflow-hidden\",\n // \"oui-relative\",\n // \"oui-custom-scrollbar oui-overflow-y-auto\",\n classNames?.container,\n )}\n >\n <React.Suspense fallback={null}>\n <LazyRestrictedInfoWidget className=\"oui-mx-1 oui-mb-1 oui-bg-base-6\" />\n </React.Suspense>\n\n <Box\n height=\"100%\"\n width=\"100%\"\n className={cn(\"oui-scaffold-content\", classNames?.content)}\n >\n {children}\n </Box>\n </Box>\n <footer\n ref={bottomNavRef}\n className={cn(\n \"oui-scaffold-bottomNav\",\n \"oui-fixed oui-bottom-0 oui-z-10\",\n \"oui-w-full oui-bg-base-9\",\n // only effective on real device\n \"oui-pb-[calc(env(safe-area-inset-bottom))]\",\n classNames?.bottomNav,\n )}\n >\n {bottomNav ?? (\n <React.Suspense fallback={null}>\n <LazyBottomNav\n mainMenus={bottomNavProps?.mainMenus}\n current={bottomNavProps?.current || mainNavProps?.initialMenu}\n onRouteChange={routerAdapter?.onRouteChange}\n />\n </React.Suspense>\n )}\n </footer>\n\n <NotificationWidget />\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AccountStatusEnum,\n type RouterAdapter,\n} from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text, ChevronLeftIcon, cn } from \"@kodiak-finance/orderly-ui\";\nimport { WalletConnectButtonExtension } from \"../accountMenu/menu.widget\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport { LanguageSwitcherWidget } from \"../languageSwitcher\";\nimport { LeftNavWidget } from \"../leftNav\";\nimport { ScanQRCodeWidget } from \"../scanQRCode\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport { LinkDeviceWidget } from \"./linkDevice\";\nimport { MainLogo } from \"./mainLogo\";\nimport { MainNavWidgetProps } from \"./mainNav.widget\";\n\ntype MainNavMobileProps = {\n current?: string;\n subItems?: {\n name: string;\n href: string;\n }[];\n routerAdapter?: RouterAdapter;\n} & MainNavWidgetProps;\n\nexport const MainNavMobile: FC<MainNavMobileProps> = (props) => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n const currentMenu = useMemo(() => {\n if (Array.isArray(props?.initialMenu)) {\n return props?.campaigns;\n }\n return props?.mainMenus?.find((menu) => {\n if (!props.current) {\n return menu.href === props?.initialMenu;\n } else {\n return menu.href === props.current;\n }\n });\n }, [props?.mainMenus, props?.initialMenu, props?.current]);\n\n const title = useMemo(() => {\n if (currentMenu?.isHomePageInMobile) {\n return <MainLogo {...props?.logo} />;\n }\n return (\n <Text className=\"oui-text-2xl oui-font-bold oui-text-base-contrast\">\n {currentMenu?.name}\n </Text>\n );\n }, [currentMenu, props?.logo]);\n\n const isSub = useMemo(() => {\n return Boolean(!currentMenu || currentMenu.isSubMenuInMobile);\n }, [currentMenu]);\n\n const subTitle = useMemo(() => {\n if (currentMenu?.isSubMenuInMobile) {\n return currentMenu?.name;\n }\n if (props?.subItems?.some((item) => item.href === props?.current)) {\n return props?.subItems?.find((item) => item.href === props?.current)\n ?.name;\n }\n return null;\n }, [props?.subItems, props?.current, currentMenu]);\n\n const onBack = () => {\n let target = props.mainMenus?.find(\n (item) => item.href === props.initialMenu,\n );\n if (currentMenu?.isSubMenuInMobile) {\n target = currentMenu?.subMenuBackNav;\n }\n\n if (target && typeof window !== \"undefined\") {\n const url = new URL(window.location.href);\n const cleanUrl = `${url.pathname}`;\n window.history.replaceState({}, \"\", cleanUrl);\n }\n\n props?.routerAdapter?.onRouteChange(target as any);\n };\n\n const showLinkDevice =\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n const showChainMenu = !showLinkDevice && !wrongNetwork;\n\n const showQrcode = state.status === AccountStatusEnum.NotConnected;\n\n const showSubAccount = useMemo(\n () => state.status >= AccountStatusEnum.EnableTrading,\n [state.status],\n );\n\n if (isSub) {\n return (\n <Flex\n width={\"100%\"}\n height={44}\n px={3}\n direction={\"row\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-relative\"\n >\n <ChevronLeftIcon\n className=\"oui-absolute oui-left-6 oui-text-base-contrast-54\"\n onClick={onBack}\n />\n <Text className=\"oui-text-base oui-font-bold oui-text-base-contrast\">\n {subTitle}\n </Text>\n </Flex>\n );\n }\n\n const renderContent = () => {\n const languageSwitcher = <LanguageSwitcherWidget />;\n const scanQRCode = showQrcode && <ScanQRCodeWidget />;\n const subAccount = showSubAccount && <SubAccountWidget />;\n const linkDevice = showLinkDevice && <LinkDeviceWidget />;\n const chainMenu = showChainMenu && <ChainMenuWidget />;\n const walletConnect = <WalletConnectButtonExtension />;\n\n const leftNav = props.leftNav && (\n <LeftNavWidget\n {...props.leftNav}\n logo={props?.logo}\n routerAdapter={props?.routerAdapter}\n />\n );\n\n if (typeof props.customRender === \"function\") {\n return props.customRender?.({\n leftNav,\n title,\n languageSwitcher,\n scanQRCode,\n subAccount,\n linkDevice,\n chainMenu,\n walletConnect,\n });\n }\n\n return (\n <Flex width=\"100%\" justify=\"between\">\n <Flex gapX={2}>\n {props?.customLeftNav || leftNav}\n {title}\n </Flex>\n\n <Flex gapX={2}>\n {props.leading}\n {languageSwitcher}\n {scanQRCode}\n {/* {subAccount} */}\n {/* {linkDevice} */}\n {chainMenu}\n {walletConnect}\n {props.trailing}\n </Flex>\n </Flex>\n );\n };\n\n return (\n <Flex\n width={\"100%\"}\n height={44}\n px={3}\n itemAlign={\"center\"}\n className={cn(props.className, props.classNames?.root)}\n >\n {renderContent()}\n </Flex>\n );\n};\n","import { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useChainMenuScript } from \"./chainMenu.script\";\nimport { ChainMenu } from \"./chainMenu.ui\";\nimport { ChainMenuUiMobile } from \"./chainMenu.ui.mobile\";\n\nexport const ChainMenuWidget = () => {\n const state = useChainMenuScript();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <ChainMenuUiMobile {...state} />;\n }\n return <ChainMenu {...state} />;\n};\n","import { useEffect, useState } from \"react\";\nimport {\n useChains,\n useConfig,\n useAccount,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { API, Chain, NetworkId } from \"@kodiak-finance/orderly-types\";\n\nexport type UseChainMenuScriptReturn = ReturnType<typeof useChainMenuScript>;\n\nexport const useChainMenuScript = () => {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const { state } = useAccount();\n const { connectedChain } = useWalletConnector();\n const { currentChainId, wrongNetwork, disabledConnect, setCurrentChainId } =\n useAppContext();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const hide = () => {\n setOpen(false);\n };\n\n const onChainChangeBefore = () => {\n setLoading(true);\n hide();\n };\n\n const onChainChangeAfter = () => {\n setLoading(false);\n };\n\n return {\n isConnected: !!connectedChain,\n currentChainId,\n wrongNetwork,\n disabledConnect,\n accountStatus: state.status,\n networkId,\n open,\n onOpenChange: setOpen,\n hide,\n onChainChangeBefore,\n onChainChangeAfter,\n loading,\n setCurrentChainId,\n };\n};\n\nexport type UseChainMenuBuilderScript = ReturnType<typeof useChainMenuScript>;\n","import { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n ChainIcon,\n cn,\n Flex,\n modal,\n Tooltip,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Spinner,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorWidget,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport { WalletConnectorModalId } from \"@kodiak-finance/orderly-ui-connector\";\nimport { UseChainMenuScriptReturn } from \"./chainMenu.script\";\n\nconst ModalTitle = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nexport const ChainMenu = (props: UseChainMenuScriptReturn) => {\n const { t } = useTranslation();\n\n if (props.wrongNetwork && props.isConnected && !props.disabledConnect) {\n return (\n <Tooltip\n open\n hideWhenDetached\n content={t(\"connector.wrongNetwork.tooltip\")}\n className=\"oui-bg-base-5\"\n arrow={{ className: \"oui-fill-base-5\" }}\n >\n <Button\n color=\"warning\"\n size=\"md\"\n onClick={() => {\n modal\n .show<{ wrongNetwork: boolean }>(ChainSelectorDialogId, {\n networkId: props.networkId,\n })\n .then(\n (r) => {\n if (\n !r.wrongNetwork &&\n props.accountStatus < AccountStatusEnum.EnableTrading\n ) {\n modal\n .show(WalletConnectorModalId, {\n title: <ModalTitle />,\n })\n .then(\n (r) => console.log(r),\n (error) => console.log(error),\n );\n }\n },\n (error) => console.log(error),\n );\n }}\n >\n {t(\"connector.wrongNetwork\")}\n </Button>\n </Tooltip>\n );\n }\n\n const renderIcon = () => {\n if (props.loading) {\n return <Spinner className=\"oui-w-[18px] oui-h-[18px]\" />;\n }\n\n if (props.currentChainId) {\n return <ChainIcon chainId={props.currentChainId} size=\"xs\" />;\n }\n };\n\n const trigger = (\n <Flex\n intensity={500}\n justify=\"center\"\n className={cn(\n \"oui-relative oui-cursor-pointer\",\n \"oui-w-11 oui-h-8\",\n \"oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px]\",\n )}\n >\n {renderIcon()}\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-bottom-0\"\n >\n <defs>\n <linearGradient\n id=\"paint0_linear_490_5080\"\n x1=\"10\"\n y1=\"5\"\n x2=\"-5.79673e-08\"\n y2=\"5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n <path\n d=\"M10 7V0L0 10H7C8.65685 10 10 8.65685 10 7Z\"\n fill=\"url(#paint0_linear_490_5080)\"\n />\n </svg>\n </Flex>\n );\n\n return (\n <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n sideOffset={4}\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-bg-base-8 oui-w-[456px] oui-p-4 oui-rounded-xl\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\",\n )}\n >\n <ChainSelectorWidget\n close={props.hide}\n onChainChangeBefore={props.onChainChangeBefore}\n onChainChangeAfter={props.onChainChangeAfter}\n />\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Box, ChainIcon, modal, toast } from \"@kodiak-finance/orderly-ui\";\nimport { ChainSelectorSheetId } from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport { UseChainMenuScriptReturn } from \"./chainMenu.script\";\n\nexport const ChainMenuUiMobile = (props: UseChainMenuScriptReturn) => {\n const { t } = useTranslation();\n\n return (\n <button\n onClick={(e) => {\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorSheetId, {\n // networkId: props.networkId,\n bridgeLessOnly: false,\n isWrongNetwork: props.wrongNetwork,\n })\n .then(\n (r: any) => {\n console.log(r?.chainId, props);\n if (r?.chainId) {\n props.setCurrentChainId(r?.chainId);\n }\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n }}\n >\n <Box className=\"oui-relative oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px] oui-bg-base-5 oui-px-2 oui-h-8 oui-w-8 oui-flex oui-items-center oui-justify-center\">\n <ChainIcon\n chainId={props.currentChainId!}\n size=\"xs\"\n className=\"oui-h-[18px] oui-w-[18px]\"\n />\n <div className=\"oui-absolute oui-right-0 oui-bottom-0\">\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M9 6V0L0 9h6a3 3 0 0 0 3-3\" fill=\"url(#a)\" />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"9\"\n y1=\"4.5\"\n x2=\"0\"\n y2=\"4.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </Box>\n </button>\n );\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { useTrack } from \"@kodiak-finance/orderly-hooks\";\nimport {\n i18n,\n LocaleContextState,\n useLocaleContext,\n} from \"@kodiak-finance/orderly-i18n\";\nimport { TrackerEventName } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\n\nexport type LanguageSwitcherScriptReturn = ReturnType<\n typeof useLanguageSwitcherScript\n>;\n\nexport type LanguageSwitcherScriptOptions = Pick<\n LocaleContextState,\n \"popup\"\n> & { open?: boolean; onOpenChange?: (open: boolean) => void };\n\nexport const useLanguageSwitcherScript = (\n options?: LanguageSwitcherScriptOptions,\n) => {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [selectedLang, setSelectedLang] = useState(i18n.language);\n const { languages, onLanguageBeforeChanged, onLanguageChanged, popup } =\n useLocaleContext();\n\n const { track, setIdentify } = useTrack();\n\n const { isMobile } = useScreen();\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (typeof options?.onOpenChange === \"function\") {\n options.onOpenChange(open);\n } else {\n setOpen(open);\n }\n },\n [options?.onOpenChange, setOpen],\n );\n\n const onLangChange = async (lang: string, displayName: string) => {\n setLoading(true);\n setSelectedLang(lang);\n await onLanguageBeforeChanged(lang);\n await i18n.changeLanguage(lang);\n await onLanguageChanged(lang);\n onOpenChange(false);\n setLoading(false);\n track(TrackerEventName.switchLanguage, {\n language: displayName,\n language_code: lang,\n });\n\n setIdentify({\n language_code: lang,\n });\n };\n\n const _popup = useMemo(\n () => ({\n ...popup,\n ...options?.popup,\n mode:\n options?.popup?.mode || popup?.mode || (isMobile ? \"sheet\" : \"modal\"),\n }),\n [popup, options?.popup, isMobile],\n );\n\n const _open = useMemo(() => {\n if (typeof options?.open === \"boolean\") {\n return options.open;\n }\n return open;\n }, [options?.open, open]);\n\n return {\n open: _open,\n onOpenChange,\n languages,\n selectedLang,\n onLangChange,\n loading,\n popup: _popup,\n };\n};\n","import { FC, SVGProps, forwardRef } from \"react\";\nimport { useTranslation, Language } from \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n Flex,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Text,\n Box,\n Spinner,\n SimpleDialog,\n useScreen,\n SimpleSheet,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { LanguageSwitcherScriptReturn } from \"./languageSwitcher.script\";\n\nexport type LanguageSwitcherProps = LanguageSwitcherScriptReturn;\n\nexport const LanguageSwitcher: FC<LanguageSwitcherProps> = (props) => {\n const { languages, popup } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n if (languages.length <= 1) {\n return null;\n }\n\n const trigger = (\n <Tooltip content={t(\"languageSwitcher.tooltip\")}>\n <LanguageIcon\n className={cn(\n \"oui-size-6 lg:oui-size-5\",\n \"oui-cursor-pointer oui-text-base-contrast-80\",\n \"oui-transition-colors hover:oui-fill-base-contrast\",\n isMobile && \"oui-size-[18px]\",\n )}\n id=\"language-switcher-icon\"\n onClick={() => props.onOpenChange(true)}\n />\n </Tooltip>\n );\n\n const header = (\n <Text weight=\"semibold\">{t(\"languageSwitcher.language\")}</Text>\n );\n\n const languageList = languages.map((item) => {\n const selected = props.selectedLang === item.localCode;\n return (\n <LanguageItem\n className={cn(\n [\"modal\", \"sheet\"].includes(popup.mode ?? \"\") &&\n \"oui-w-[calc((100%_-_4px)/2)] lg:oui-w-[calc((100%_-_8px)/3)]\",\n )}\n key={item.localCode}\n selected={selected}\n item={item}\n onClick={() => props.onLangChange(item.localCode, item.displayName)}\n loading={props.loading}\n />\n );\n });\n\n const context = (\n <Flex gap={1} className=\"oui-flex-wrap\">\n {languageList}\n </Flex>\n );\n\n const footer = (\n <Box mt={4}>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-warning-darken\"\n >\n {t(\"languageSwitcher.tips\")}\n </Text>\n </Box>\n );\n\n if (popup?.mode === \"sheet\" && isMobile) {\n return (\n <>\n {trigger}\n <SimpleSheet\n open={props.open}\n onOpenChange={props.onOpenChange}\n classNames={{\n content: cn(\"oui-px-5 oui-pb-5\", popup?.className),\n body: \"oui-pb-[env(safe-area-inset-bottom)]\",\n }}\n contentProps={{\n style: popup?.style,\n }}\n title={header}\n >\n {context}\n {footer}\n </SimpleSheet>\n </>\n );\n }\n\n if (popup?.mode === \"dropdown\") {\n const context = (\n <Box\n mt={4}\n className={cn(\n //40 * 8 + 4 * 7 = 348px, more than 8 will show scrollbars\n \"oui-custom-scrollbar oui-max-h-[348px] oui-overflow-y-auto\",\n \"oui-grid oui-gap-1 oui-pr-[6px]\",\n )}\n >\n {languageList}\n </Box>\n );\n\n return (\n <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n sideOffset={10}\n align=\"start\"\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-w-[320px] lg:oui-w-[360px]\",\n \"oui-rounded-xl oui-bg-base-8 oui-p-5\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\",\n )}\n >\n {header}\n {context}\n {footer}\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n }\n\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size={isMobile ? \"sm\" : \"xl\"}\n classNames={{\n content: popup?.className,\n }}\n contentProps={{\n style: popup?.style,\n }}\n >\n {context}\n {footer}\n </SimpleDialog>\n </>\n );\n};\n\ntype LanguageItemProps = {\n selected: boolean;\n item: Language;\n onClick?: () => void;\n loading?: boolean;\n className?: string;\n};\n\nconst LanguageItem: FC<LanguageItemProps> = (props) => {\n const { item } = props;\n\n const renderTrailing = () => {\n if (props.loading && props.selected) {\n return <Spinner size=\"sm\" />;\n }\n if (props.selected) {\n return <Box gradient=\"brand\" r=\"full\" width={4} height={4} />;\n }\n return null;\n };\n\n return (\n <button\n className={cn(\n \"oui-group oui-rounded-md hover:oui-bg-base-5\",\n props.selected && \"oui-bg-base-5\",\n props.className,\n )}\n onClick={props.onClick}\n >\n <Flex justify=\"between\" className=\"oui-h-10\" px={3}>\n <Flex itemAlign=\"center\" width=\"100%\" className=\"oui-gap-x-[6px]\">\n <Text\n size=\"2xs\"\n className={cn(\n \"oui-text-base-contrast-36 group-hover:oui-text-base-contrast-80\",\n props.selected && \"oui-text-base-contrast-80\",\n )}\n >\n {item.displayName}\n </Text>\n </Flex>\n {renderTrailing()}\n </Flex>\n </button>\n );\n};\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nconst LanguageIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M10 1.678a8.333 8.333 0 1 0 0 16.667 8.333 8.333 0 1 0 0-16.667m0 1.667c1.1 0 2.308 2.527 2.492 5.831l-4.975.01c.183-3.304 1.382-5.84 2.482-5.84m-2.943.67c-.717 1.393-1.1 3.242-1.193 5.165L3.38 9.174c.248-2.271 1.778-4.176 3.676-5.159m5.889.003c1.898.983 3.388 2.835 3.676 5.168l-2.483-.008c-.078-2-.52-3.758-1.193-5.16m-9.56 6.83 2.483-.02c.092 1.923.478 3.803 1.191 5.182a6.79 6.79 0 0 1-3.674-5.162m4.118.007 4.975-.01c-.184 3.303-1.38 5.833-2.48 5.833s-2.312-2.519-2.495-5.823m6.64-.008 2.471-.008c-.287 2.208-1.68 4.18-3.672 5.162.74-1.53 1.108-3.23 1.2-5.154\" />\n </svg>\n );\n});\n","import {\n LanguageSwitcherScriptOptions,\n useLanguageSwitcherScript,\n} from \"./languageSwitcher.script\";\nimport { LanguageSwitcher } from \"./languageSwitcher.ui\";\n\nexport type LanguageSwitcherWidgetProps = LanguageSwitcherScriptOptions;\n\nexport const LanguageSwitcherWidget = (props: LanguageSwitcherWidgetProps) => {\n const state = useLanguageSwitcherScript(props);\n return <LanguageSwitcher {...state} />;\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useLeftNavScript = () => {\n const [open, setOpen] = useState(false);\n\n const showSheet = useCallback(() => {\n setOpen(true);\n }, []);\n\n const hideSheet = useCallback(() => {\n setOpen(false);\n }, []);\n\n return {\n open,\n onOpenChange: setOpen,\n showSheet,\n hideSheet,\n };\n};\n\nexport type LeftNavScriptReturn = ReturnType<typeof useLeftNavScript>;\n","import { FC, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n type RouterAdapter,\n type RouteOption,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Sheet,\n SheetContent,\n VectorIcon,\n SwapHorizIcon,\n PeopleIcon,\n Text,\n Divider,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../main/mainLogo\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport {\n CommunityDiscord,\n CommunityDune,\n CommunityTG,\n CommunityX,\n} from \"./communityIcon\";\nimport { LeftNavScriptReturn } from \"./leftNav.script\";\nimport { LeftNavItem, LeftNavProps } from \"./leftNav.type\";\n\nexport type LeftNavUIProps = LeftNavProps &\n Partial<LeftNavScriptReturn> & {\n className?: string;\n logo?: {\n src: string;\n alt: string;\n };\n routerAdapter?: RouterAdapter;\n showSubAccount?: boolean;\n };\n\nexport const LeftNavUI: FC<LeftNavUIProps> = (props) => {\n return (\n <>\n <div onClick={props.showSheet} className={props?.className}>\n <VectorIcon />\n </div>\n <LeftNavSheet {...props} />\n </>\n );\n};\n\nconst LeftNavSheet: FC<LeftNavUIProps> = (props) => {\n const { state } = useAccount();\n const { t } = useTranslation();\n\n const { primaryMenus, secondaryMenus } = useMemo(() => {\n const primary = (props?.menus || []).filter((m) => !m.isSecondary);\n const secondary = (props?.menus || []).filter((m) => m.isSecondary);\n return { primaryMenus: primary, secondaryMenus: secondary };\n }, [props.menus]);\n\n const showSubAccount = useMemo(\n () => state.status >= AccountStatusEnum.EnableTrading,\n [state.status],\n );\n\n const onRouteChange = (option: RouteOption) => {\n props.routerAdapter?.onRouteChange?.(option);\n props.hideSheet?.();\n };\n\n const subAccountTrigger = useMemo(() => {\n const name =\n state.accountId === state.mainAccountId\n ? state.address\n : state.subAccounts?.find((item) => item.id === state.accountId)\n ?.description || \"\";\n return (\n <div className=\"oui-flex oui-w-full oui-cursor-pointer oui-items-center oui-gap-2 oui-rounded-xl oui-bg-base-5 oui-p-3\">\n <div>\n <PeopleIcon />\n </div>\n <div className=\"oui-flex oui-flex-col oui-gap-1 oui-font-semibold\">\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-sm oui-text-base-contrast\"\n >\n {name}\n </Text.formatted>\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-2xs oui-text-base-contrast-36\"\n >{`ID: ${state.accountId}`}</Text.formatted>\n </div>\n <div className=\"oui-ml-auto\">\n <SwapHorizIcon />\n </div>\n </div>\n );\n }, [state, t]);\n\n const openExternalLink = (url: string) => {\n window.open(url, \"_blank\");\n };\n\n return (\n <Sheet open={props.open} onOpenChange={props.onOpenChange}>\n <SheetContent\n side=\"left\"\n className=\"oui-w-[276px] oui-bg-base-8\"\n closeable\n closeableSize={24}\n closeOpacity={0.54}\n >\n <div className=\"oui-relative oui-flex oui-h-full oui-flex-col oui-gap-3\">\n <div className=\"oui-mt-[6px] oui-flex oui-h-[44px] oui-items-center [&_img]:!oui-h-[18px]\">\n <MainLogo {...props?.logo} />\n </div>\n {props?.leading}\n {showSubAccount && (\n <SubAccountWidget customTrigger={subAccountTrigger} />\n )}\n {(primaryMenus.length > 0 || secondaryMenus.length > 0) && (\n <div className=\"oui-flex oui-h-[calc(100vh-260px)] oui-flex-col oui-items-start oui-overflow-y-auto\">\n {primaryMenus.map((item) => (\n <NavItem\n item={item}\n key={`item-${item.name}`}\n onClick={onRouteChange}\n />\n ))}\n {secondaryMenus.length > 0 && primaryMenus.length > 0 && (\n <Divider className=\"oui-my-1 oui-w-full\" intensity={8} />\n )}\n {secondaryMenus.map((item) => (\n <NavItem\n item={item}\n key={`item-${item.name}`}\n onClick={onRouteChange}\n />\n ))}\n </div>\n )}\n <div className=\"oui-z-60 oui-absolute oui-bottom-6 oui-flex oui-w-full oui-flex-col oui-gap-4 oui-bg-base-8\">\n <div className=\"oui-flex oui-items-center oui-justify-around\">\n {props.telegramUrl && (\n <div\n onClick={() => openExternalLink(props.telegramUrl as string)}\n >\n <CommunityTG width={24} height={24} />\n </div>\n )}\n {props.twitterUrl && (\n <div\n onClick={() => openExternalLink(props.twitterUrl as string)}\n >\n <CommunityX width={24} height={24} />\n </div>\n )}\n {props.discordUrl && (\n <div\n onClick={() => openExternalLink(props.discordUrl as string)}\n >\n <CommunityDiscord width={24} height={24} />\n </div>\n )}\n {props.duneUrl && (\n <div\n onClick={() => openExternalLink(props.duneUrl as string)}\n className=\"oui-mb-1\"\n >\n <CommunityDune />\n </div>\n )}\n </div>\n {props.feedbackUrl && (\n <div\n className=\"oui-text-center oui-text-2xs oui-font-semibold oui-text-primary oui-underline\"\n onClick={() => openExternalLink(props.feedbackUrl as string)}\n >\n {t(\"leftNav.feedback\")}\n </div>\n )}\n </div>\n </div>\n </SheetContent>\n </Sheet>\n );\n};\n\ntype NavItemProps = {\n item: LeftNavItem;\n onClick?: (option: RouteOption) => void;\n};\n\nconst NavItem: FC<NavItemProps> = ({ item, onClick }) => {\n const {\n href,\n name,\n icon,\n trailing,\n onlyInMainAccount,\n customRender,\n target,\n } = item;\n const { isMainAccount } = useAccount();\n const onItemClick = () => {\n // Check if href is a full URL (external link)\n const isExternalLink =\n href.startsWith(\"http://\") || href.startsWith(\"https://\");\n\n if (target) {\n window.open(href, target);\n } else if (isExternalLink) {\n window.location.href = href;\n } else {\n onClick?.({ href: href, name: name, scope: \"leftNav\" });\n }\n };\n if (typeof customRender === \"function\") {\n return (\n <div\n className=\"oui-flex oui-w-full oui-items-center oui-p-3\"\n onClick={onItemClick}\n >\n {customRender({ name: name, href: href })}\n </div>\n );\n }\n if (onlyInMainAccount && !isMainAccount) {\n return null;\n }\n const isSecondary = !!item.isSecondary;\n const textClassName = isSecondary\n ? \"oui-text-xs oui-font-normal oui-text-base-contrast-54\"\n : \"oui-text-base oui-font-semibold oui-text-base-contrast-80\";\n return (\n <div\n className={`oui-flex oui-w-full oui-items-center oui-gap-2 oui-p-3 ${isSecondary ? \"oui-py-2\" : \"\"}`}\n onClick={onItemClick}\n >\n <div>{icon}</div>\n <div className={textClassName}>{name}</div>\n {trailing}\n </div>\n );\n};\n","import { FC } from \"react\";\nimport { useAppConfig } from \"@kodiak-finance/orderly-react-app\";\nimport { OrderlyLogo } from \"../icons\";\nimport { Logo } from \"@kodiak-finance/orderly-ui\";\n\ntype MainLogoProps = {\n src?: string;\n alt?: string;\n};\n\nexport const MainLogo: FC<MainLogoProps> = (props) => {\n const { appIcons } = useAppConfig();\n\n if (props.src) {\n return <Logo src={props.src} alt={props.alt} />;\n }\n\n const { main } = appIcons || {};\n\n if (main?.img) {\n return <img src={main?.img} />;\n }\n\n if (main?.component) {\n return main.component;\n }\n\n return <OrderlyLogo />;\n};\n","import { useCallback, useEffect, useMemo, useState, useRef } from \"react\";\nimport {\n useAccount,\n useIndexPricesStream,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n ABSTRACT_CHAIN_ID_MAP,\n API,\n EMPTY_LIST,\n EMPTY_OBJECT,\n} from \"@kodiak-finance/orderly-types\";\nimport { toast, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountValue } from \"./useAccountValue\";\n\nexport type SubAccountScriptReturn = ReturnType<typeof SubAccountScript>;\n\ntype AccountValueInfo = {\n id: string;\n userAddress?: string;\n description?: string;\n holding: API.Holding[];\n accountValue?: number;\n};\n\nexport const SubAccountScript = () => {\n const [open, setOpen] = useState(false);\n const [mainAccountHolding, setMainAccountHolding] = useState<API.Holding[]>(\n [],\n );\n const { wallet, connectedChain } = useWalletConnector();\n const { data: indexPrices } = useIndexPricesStream();\n const { isMobile } = useScreen();\n const { state, account, subAccount, switchAccount } = useAccount();\n const { t } = useTranslation();\n const mainAccountId = state.mainAccountId;\n\n const { accountValue } = useAccountValue(mainAccountId);\n\n const currentAccountId = state.accountId;\n\n const hasRefreshedRef = useRef(false);\n\n const userAddress = useMemo(() => {\n let address = state.address;\n if (\n connectedChain?.id &&\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain?.id as string))\n ) {\n address = account.getAdditionalInfo()?.AGWAddress;\n }\n\n return address;\n }, [wallet, state, account, connectedChain]);\n\n const subAccounts = useMemo(() => {\n if (!state.subAccounts || !state.subAccounts.length) {\n return [];\n }\n\n const currentSubAccount = state.subAccounts.find(\n (subAccount) => subAccount.id === currentAccountId,\n );\n\n if (currentSubAccount) {\n return [\n currentSubAccount,\n ...state.subAccounts.filter(\n (subAccount) => subAccount.id !== currentAccountId,\n ),\n ];\n }\n\n return [...state.subAccounts];\n }, [state.subAccounts, currentAccountId]);\n\n const _popup = useMemo(\n () => ({ mode: isMobile ? \"sheet\" : \"modal\" }),\n [isMobile],\n );\n\n const doCreatSubAccount = useCallback(\n (nickName: string) => {\n return subAccount.create(nickName);\n },\n [subAccount],\n );\n\n const onSwitch = useCallback(\n (accountId: string) => {\n return switchAccount(accountId)\n .catch((error) => {\n console.error(error);\n })\n .then((res) => {\n toast.success(t(\"subAccount.modal.switch.success.description\"));\n });\n },\n [switchAccount],\n );\n\n const accountsWithValues = useMemo(() => {\n const mainAccountUnsettlePnl = accountValue[mainAccountId!] ?? 0;\n\n const mainAccount =\n mainAccountId && state.address\n ? {\n id: mainAccountId,\n userAddress: state.address,\n holding: mainAccountHolding,\n accountValue: calculateAccountValue(\n mainAccountHolding,\n mainAccountUnsettlePnl,\n indexPrices || EMPTY_OBJECT,\n ),\n }\n : undefined;\n\n const updatedSubAccounts = subAccounts.map((subAccount) => {\n const subAccountUnsettlePnl = accountValue[subAccount.id] ?? 0;\n return {\n ...subAccount,\n accountValue: calculateAccountValue(\n subAccount.holding || EMPTY_LIST,\n subAccountUnsettlePnl,\n indexPrices || EMPTY_OBJECT,\n ),\n };\n });\n\n return {\n mainAccount,\n subAccounts: updatedSubAccounts,\n };\n }, [\n mainAccountId,\n state.address,\n mainAccountHolding,\n subAccounts,\n accountValue,\n indexPrices,\n ]);\n\n useEffect(() => {\n if (!open) {\n hasRefreshedRef.current = false;\n return;\n }\n\n if (!hasRefreshedRef.current && mainAccountId) {\n hasRefreshedRef.current = true;\n subAccount.refresh().then((res) => {\n setMainAccountHolding(res[mainAccountId] || []);\n });\n }\n }, [open, mainAccountId, subAccount]);\n\n return {\n userAddress,\n mainAccount: accountsWithValues.mainAccount,\n currentAccountId,\n open,\n onOpenChange: setOpen,\n popup: _popup,\n createSubAccount: doCreatSubAccount,\n subAccounts: accountsWithValues.subAccounts,\n onSwitch,\n };\n};\n\nconst calculateAccountValue = (\n holdings: API.Holding[],\n unsettlePnl: number,\n indexPrices: Record<string, number>,\n) => {\n const holding = holdings.reduce((acc, holding) => {\n const price = getTokenIndexPrice(holding.token, indexPrices);\n if (!price) {\n return acc;\n }\n return acc + new Decimal(holding.holding).times(price).toNumber();\n }, 0);\n return holding + unsettlePnl;\n};\n\nconst getTokenIndexPrice = (\n token: string,\n indexPrices: Record<string, number>,\n) => {\n if (token === \"USDC\") {\n return 1;\n }\n const symbol = `PERP_${token}_USDC`;\n return indexPrices[symbol] ?? 0;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useSubAccountQuery } from \"@kodiak-finance/orderly-hooks\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\nexport const useAccountValue = (mainAccountId?: string) => {\n const [accountValue, setAccountValue] = useState<Record<string, number>>({});\n const {\n data: newPositions = [],\n isLoading: isPositionLoading,\n mutate: mutatePositions,\n } = useSubAccountQuery<API.PositionExt[]>(\"/v1/client/aggregate/positions\", {\n // formatter: (data) => data,\n errorRetryCount: 3,\n accountId: mainAccountId,\n });\n\n useEffect(() => {\n if (isPositionLoading) {\n return;\n }\n if (!newPositions || newPositions.length === 0) {\n setAccountValue({});\n return;\n }\n const value = newPositions.reduce(\n (acc, position) => {\n const accountId = position.account_id!;\n if (acc[accountId]) {\n acc[accountId] = new Decimal(acc[accountId])\n .plus(position.unsettled_pnl)\n .toNumber();\n } else {\n acc[accountId] = new Decimal(position.unsettled_pnl).toNumber();\n }\n return acc;\n },\n {} as Record<string, number>,\n );\n setAccountValue(value);\n }, [newPositions, isPositionLoading]);\n return {\n accountValue,\n };\n};\n","import { useCallback, useRef, useMemo, useState, ReactNode } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n SimpleDialog,\n useScreen,\n Text,\n Flex,\n ScrollArea,\n modal,\n cn,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n PopoverRoot,\n PopoverContent,\n PopoverAnchor,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AccountItem } from \"./components/accountItem\";\nimport { CreateSubAccount } from \"./components/createSubAccountModal\";\nimport { EditNickNameDialog } from \"./components/editNickNameModal\";\nimport { SubAccountIcon, SwapIcon } from \"./icons\";\nimport { SubAccountScriptReturn } from \"./subAccount.script\";\n\nexport function SubAccountUI(\n props: SubAccountScriptReturn & { customTrigger?: ReactNode },\n) {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onMouseEnter = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n // setOpen(true);\n }, []);\n const header = <Text weight=\"semibold\">{t(\"subAccount.modal.title\")}</Text>;\n const trigger = useMemo(() => {\n if (props.customTrigger && isMobile) {\n return (\n <div onClick={() => props.onOpenChange(true)}>\n {props.customTrigger}\n </div>\n );\n }\n if (isMobile) {\n return (\n <Flex\n className=\"oui-size-8 oui-rounded-md oui-bg-base-6\"\n itemAlign=\"center\"\n justify=\"center\"\n >\n <SubAccountIcon\n className={cn(\"oui-cursor-pointer\")}\n onClick={() => props.onOpenChange(true)}\n />\n </Flex>\n );\n }\n return <SubAccountIcon className={cn(\"oui-cursor-pointer\")} />;\n }, [isMobile, props.customTrigger]);\n\n const [editDialogOpen, setEditDialogOpen] = useState(false);\n const [editAccountItem, setEditAccountItem] = useState<\n | {\n accountId: string;\n description: string;\n }\n | undefined\n >(undefined);\n\n const noSubAccount = (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"center\"\n px={5}\n width=\"100%\"\n className=\"oui-h-[120px]\"\n >\n <Text className=\"oui-text-center oui-text-xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"subAccount.modal.noAccount.description\")}\n </Text>\n </Flex>\n );\n\n const renderSubAccount = () => {\n if (!props.subAccounts?.length) {\n return noSubAccount;\n }\n return (\n <ScrollArea className=\"oui-custom-scrollbar oui-max-h-[200px] oui-w-full oui-overflow-y-auto\">\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n {props.subAccounts.map((subAccount) => (\n <AccountItem\n key={subAccount.id}\n accountId={subAccount.id}\n description={subAccount.description}\n isMainAccount={false}\n isCurrent={subAccount.id === props.currentAccountId}\n onSwitch={(accountId) => {\n props.onSwitch?.(accountId);\n }}\n accountValue={subAccount.accountValue ?? 0}\n onEdit={() => {\n setEditAccountItem({\n accountId: subAccount.id,\n description: subAccount.description ?? \"\",\n });\n setEditDialogOpen(true);\n }}\n />\n ))}\n </Flex>\n </ScrollArea>\n );\n };\n\n const content = (\n <>\n <Flex direction=\"column\" gap={5} itemAlign=\"start\" width=\"100%\">\n {!isMobile && header}\n <Flex direction=\"column\" gap={5} itemAlign=\"start\" width=\"100%\">\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast-54\">\n {t(\"subAccount.modal.mainAccount.title\")}\n </Text>\n <AccountItem\n accountId={props.mainAccount?.id ?? \"\"}\n isMainAccount={true}\n userAddress={props.userAddress ?? \"\"}\n isCurrent={props.currentAccountId === props.mainAccount?.id}\n onSwitch={(accountId) => {\n props.onSwitch?.(accountId);\n }}\n accountValue={props.mainAccount?.accountValue ?? 0}\n />\n </Flex>\n\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n <Flex justify=\"between\" itemAlign=\"center\" width=\"100%\" gap={2}>\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast-54\">\n {t(\"subAccount.modal.subAccounts.title\")}\n </Text>\n <Flex justify=\"end\" gap={2}>\n {props.subAccounts.length > 0 && (\n <SwapIcon\n className=\"oui-cursor-pointer oui-fill-base-contrast-54 hover:oui-fill-base-contrast\"\n onClick={() => {\n // todo need show transfer modal\n let dialogId = \"TransferDialogId\";\n if (isMobile) {\n dialogId = \"TransferSheetId\";\n }\n modal.show(dialogId);\n }}\n />\n )}\n <CreateSubAccount create={props.createSubAccount} />\n </Flex>\n </Flex>\n {renderSubAccount()}\n </Flex>\n </Flex>\n </Flex>\n <EditNickNameDialog\n accountId={editAccountItem?.accountId ?? \"\"}\n nickName={editAccountItem?.description ?? \"\"}\n open={editDialogOpen}\n onOpenChange={setEditDialogOpen}\n />\n </>\n );\n if (isMobile) {\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"xs\"\n classNames={{\n content: \"oui-w-[300px]\",\n }}\n >\n {content}\n </SimpleDialog>\n </>\n );\n }\n\n return (\n <PopoverRoot open={props.open} onOpenChange={props.onOpenChange}>\n <PopoverAnchor>\n <div\n onMouseEnter={() => {\n props.onOpenChange(true);\n }}\n onMouseLeave={() => {\n timer.current = setTimeout(() => {\n props.onOpenChange(false);\n }, 150);\n }}\n >\n {trigger}\n </div>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n side=\"bottom\"\n sideOffset={16}\n collisionPadding={{ right: 16 }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={() => {\n props.onOpenChange(false);\n timer.current ? clearTimeout(timer.current) : void 0;\n }}\n className={cn(\n \"oui-w-[300px] oui-space-y-[2px] oui-border oui-border-line-6 oui-p-5\",\n )}\n >\n {content}\n </PopoverContent>\n </PopoverRoot>\n );\n}\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n CopyIcon,\n formatAddress,\n toast,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { EditIcon } from \"../icons\";\n\ninterface AccountItemProps {\n isMainAccount?: boolean;\n accountId: string;\n description?: string;\n userAddress?: string;\n balance?: string;\n isCurrent?: boolean;\n onSwitch?: (accountId: string) => void;\n accountValue?: number;\n onEdit?: (accountItem: { accountId: string; description: string }) => void;\n}\n\nconst AccountIdForCopy = (props: { accountId: string }) => {\n const { t } = useTranslation();\n const info = useMemo(() => {\n return {\n leading: props.accountId.slice(0, 6),\n middle: props.accountId.slice(6, -4),\n trailing: props.accountId.slice(-4),\n };\n }, [props.accountId]);\n const copy = useCallback(() => {\n navigator.clipboard.writeText(props.accountId);\n toast.success(t(\"common.copy.copied\"));\n }, [props.accountId]);\n return (\n <Flex\n className=\"oui-min-h-[50px] oui-w-[180px]\"\n gap={2}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Text className=\"oui-w-full oui-break-all oui-text-2xs oui-text-base-contrast-36\">\n <Text className=\"oui-text-base-contrast\">{info.leading}</Text>\n <Text>{info.middle}</Text>\n <Text className=\"oui-text-base-contrast\">{info.trailing}</Text>\n </Text>\n <CopyIcon\n onClick={copy}\n className=\"oui-cursor-pointer oui-text-base-contrast-36 hover:oui-text-base-contrast\"\n />\n </Flex>\n );\n};\n\nexport const AccountItem = (props: AccountItemProps) => {\n const { t } = useTranslation();\n\n return (\n <>\n <Flex\n justify=\"between\"\n itemAlign=\"center\"\n width=\"100%\"\n className={cn(\n \"oui-relative oui-cursor-pointer oui-rounded-[6px] oui-bg-base-6 oui-px-3 oui-py-4\",\n \"oui-border oui-border-base-6\",\n props.isCurrent && \" oui-border-[#38E2FE] \",\n !props.isCurrent && \"hover:oui-border-base-contrast-16\",\n )}\n >\n <div\n className=\"oui-absolute oui-inset-0 oui-z-0 \"\n onClick={() => {\n if (props.isCurrent) {\n return;\n }\n props.onSwitch?.(props.accountId);\n }}\n />\n {props.isCurrent && (\n <div\n className={cn(\n \"oui-absolute -oui-right-[1px] -oui-top-[1px] oui-leading-3 oui-text-base-contrast-54\",\n \"oui-text-[10px] oui-font-semibold oui-text-black\",\n \"oui-rounded-[6px] oui-rounded-br-none oui-rounded-tl-none oui-bg-[#38E2FE] oui-py-0.5 oui-pl-1 oui-pr-[5px]\",\n )}\n >\n {t(\"subAccount.modal.current\")}\n </div>\n )}\n <Flex\n key={props.accountId}\n direction=\"column\"\n itemAlign=\"start\"\n gap={1}\n className=\"oui-z-[2]\"\n >\n {props.isMainAccount ? (\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast\">\n {formatAddress(props.userAddress ?? \"\")}\n </Text>\n ) : (\n <Flex\n justify=\"start\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-gap-[2px] oui-fill-base-contrast-54 hover:oui-fill-base-contrast\"\n onClick={(event) => {\n props.onEdit?.({\n accountId: props.accountId,\n description: props.description ?? \"\",\n });\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast\">\n {props.description}\n </Text>\n <EditIcon className=\"oui-fill-base-contrast-54 hover:oui-fill-base-contrast\" />\n </Flex>\n )}\n <Tooltip content={<AccountIdForCopy accountId={props.accountId} />}>\n <Text className=\"oui-text-2xs oui-leading-3 oui-text-base-contrast-36 hover:oui-text-base-contrast\">\n ID: {formatAddress(props.accountId)}\n </Text>\n </Tooltip>\n </Flex>\n <Flex\n className=\"oui-text-xs oui-text-base-contrast\"\n itemAlign=\"end\"\n gap={1}\n >\n <Text.numeral rule=\"price\" dp={2}>\n {props.accountValue ?? 0}\n </Text.numeral>\n <Text>USDC</Text>\n </Flex>\n </Flex>\n </>\n );\n};\n","import { FC, forwardRef, SVGProps } from \"react\";\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\nexport const SubAccountIcon = forwardRef<SVGSVGElement, IconProps>(\n (props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path\n d=\"M10 2.5C8.16892 2.5 6.66667 4.00225 6.66667 5.83333C6.66667 7.66441 8.16892 9.16667 10 9.16667C11.8311 9.16667 13.3333 7.66441 13.3333 5.83333C13.3333 4.00225 11.8311 2.5 10 2.5ZM10 4.16667C10.9303 4.16667 11.6667 4.90299 11.6667 5.83333C11.6667 6.76368 10.9303 7.5 10 7.5C9.06965 7.5 8.33333 6.76368 8.33333 5.83333C8.33333 4.90299 9.06965 4.16667 10 4.16667ZM10 11.6667C8.54587 11.6667 6.82264 12.0082 5.37435 12.5798C4.65021 12.8656 3.99558 13.205 3.47168 13.641C2.94778 14.0769 2.5 14.6662 2.5 15.4167V17.5H17.5V16.6667V15.4167C17.5 14.6662 17.0522 14.0769 16.5283 13.641C16.0044 13.205 15.3498 12.8656 14.6257 12.5798C13.1774 12.0082 11.4541 11.6667 10 11.6667ZM10 13.3333C11.1784 13.3333 12.7884 13.645 14.0153 14.1292C14.6288 14.3713 15.1475 14.66 15.4622 14.9219C15.777 15.1838 15.8333 15.3622 15.8333 15.4167V15.8333H4.16667V15.4167C4.16667 15.3622 4.22299 15.1838 4.53776 14.9219C4.85253 14.66 5.37124 14.3713 5.9847 14.1292C7.21162 13.645 8.82163 13.3333 10 13.3333Z\"\n fill=\"white\"\n fillOpacity=\"0.98\"\n />\n </svg>\n );\n },\n);\n\nexport const SwapIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M6 16L2 12L6 8L7.0625 9.0625L4.875 11.25H11V12.75H4.875L7.0625 14.9375L6 16ZM14 11L12.9375 9.9375L15.125 7.75H9V6.25H15.125L12.9375 4.0625L14 3L18 7L14 11Z\" />\n </svg>\n );\n});\n\nexport const AddIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M9.25 14H10.75V10.75H14V9.25H10.75V6H9.25V9.25H6V10.75H9.25V14ZM4.5 17C4.0875 17 3.73437 16.8531 3.44062 16.5594C3.14687 16.2656 3 15.9125 3 15.5V4.5C3 4.0875 3.14687 3.73438 3.44062 3.44063C3.73437 3.14688 4.0875 3 4.5 3H15.5C15.9125 3 16.2656 3.14688 16.5594 3.44063C16.8531 3.73438 17 4.0875 17 4.5V15.5C17 15.9125 16.8531 16.2656 16.5594 16.5594C16.2656 16.8531 15.9125 17 15.5 17H4.5ZM4.5 15.5H15.5V4.5H4.5V15.5Z\" />\n </svg>\n );\n});\n\nexport const EditIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 12, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M9.95551 2.00049C9.81619 2.00049 9.67686 2.05318 9.57074 2.15918L5.43256 6.29785L5.24945 7.25049L6.20209 7.06738L10.3403 2.9292C10.443 2.82645 10.4999 2.68968 10.4999 2.54443C10.4999 2.39918 10.443 2.26218 10.3403 2.15918C10.2341 2.05318 10.0948 2.00049 9.95551 2.00049ZM3.12494 2.25C2.37147 2.25 1.74994 2.87153 1.74994 3.625V9.375C1.74994 10.1285 2.37147 10.75 3.12494 10.75H8.87494C9.62841 10.75 10.2499 10.1285 10.2499 9.375V5.25C10.2509 5.18374 10.2386 5.11796 10.2139 5.05648C10.1892 4.99499 10.1525 4.93903 10.106 4.89185C10.0595 4.84466 10.0041 4.8072 9.94293 4.78162C9.8818 4.75605 9.8162 4.74288 9.74994 4.74288C9.68368 4.74288 9.61807 4.75605 9.55695 4.78162C9.49582 4.8072 9.44038 4.84466 9.39386 4.89185C9.34734 4.93903 9.31066 4.99499 9.28595 5.05648C9.26124 5.11796 9.249 5.18374 9.24994 5.25V9.375C9.24994 9.58803 9.08797 9.75 8.87494 9.75H3.12494C2.91191 9.75 2.74994 9.58803 2.74994 9.375V3.625C2.74994 3.41197 2.91191 3.25 3.12494 3.25H7.24994C7.3162 3.25094 7.38198 3.2387 7.44346 3.21399C7.50494 3.18928 7.5609 3.1526 7.60809 3.10608C7.65527 3.05956 7.69274 3.00412 7.71832 2.94299C7.74389 2.88186 7.75706 2.81626 7.75706 2.75C7.75706 2.68374 7.74389 2.61814 7.71832 2.55701C7.69274 2.49588 7.65527 2.44044 7.60809 2.39392C7.5609 2.3474 7.50494 2.31072 7.44346 2.28601C7.38198 2.2613 7.3162 2.24906 7.24994 2.25H3.12494Z\" />\n </svg>\n );\n});\n","import { useState, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n Flex,\n SimpleDialog,\n toast,\n Text,\n useScreen,\n cn,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AddIcon } from \"../icons\";\nimport { NickNameTextField } from \"./common\";\n\nconst MAX_SUB_ACCOUNT_COUNT = 10;\ntype CreateSubAccountProps = {\n create: (nickName: string) => Promise<void>;\n};\n\nexport const CreateSubAccount = (props: CreateSubAccountProps) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const [open, setOpen] = useState(false);\n const [nickName, setNickName] = useState<string | undefined>(undefined);\n const { state } = useAccount();\n const [invalid, setInvalid] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const { widgetConfigs } = useAppContext();\n\n const maxSubAccountCount = useMemo(() => {\n return (\n widgetConfigs?.subAccount?.maxSubAccountCount ?? MAX_SUB_ACCOUNT_COUNT\n );\n }, [widgetConfigs]);\n\n const subAccountCount = useMemo(() => {\n return state.subAccounts?.length ?? 0;\n }, [state]);\n\n const trigger = useMemo(() => {\n return subAccountCount >= maxSubAccountCount ? (\n <Tooltip\n className=\"oui-max-w-[188px]\"\n content={t(\"subAccount.modal.create.max.description\")}\n >\n <AddIcon\n className={cn(\"oui-cursor-not-allowed oui-fill-base-contrast-20\")}\n />\n </Tooltip>\n ) : (\n <AddIcon\n className={cn(\n \"oui-cursor-pointer oui-fill-base-contrast-54 hover:oui-fill-base-contrast\",\n )}\n onClick={() => {\n setOpen(true);\n }}\n />\n );\n }, [subAccountCount, maxSubAccountCount]);\n\n const header = (\n <Flex\n py={3}\n direction=\"column\"\n justify=\"between\"\n itemAlign=\"start\"\n width=\"100%\"\n >\n <Text weight=\"semibold\">{t(\"subAccount.modal.create.title\")}</Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"subAccount.modal.create.description\", {\n subAccountCount,\n remainingCount: maxSubAccountCount - subAccountCount,\n })}\n </Text>\n </Flex>\n );\n\n const reset = () => {\n setNickName(\"\");\n setInvalid(false);\n setLoading(false);\n };\n\n const validateNickName = (nickName: string | undefined) => {\n if (!nickName || !(nickName.length >= 1 && nickName.length <= 20)) {\n setInvalid(true);\n return true;\n }\n setInvalid(false);\n return false;\n };\n\n const doCreatSubAccount = (nickName: string | undefined) => {\n let _nickName = `Sub-account ${subAccountCount + 1}`;\n if (nickName) {\n _nickName = nickName.trim();\n }\n\n setLoading(true);\n props\n .create(_nickName)\n .then((res) => {\n console.log(\"res\", res);\n reset();\n toast.success(t(\"subAccount.modal.create.success.description\"));\n\n setOpen(false);\n })\n .catch((e: any) => {\n toast.error(t(\"subAccount.modal.create.failed.description\"));\n })\n .finally(() => {\n setLoading(false);\n });\n };\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={open}\n onOpenChange={(open) => {\n reset();\n setOpen(open);\n }}\n size={isMobile ? \"sm\" : \"xl\"}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n disabled: invalid || loading,\n loading: loading,\n onClick: () => {\n const invalid = validateNickName(nickName);\n if (invalid) {\n return;\n }\n doCreatSubAccount(nickName);\n },\n },\n }}\n classNames={{\n content: \"oui-w-[360px]\",\n }}\n >\n <NickNameTextField\n nickName={nickName}\n setNickName={(nickName) => {\n validateNickName(nickName);\n setNickName(nickName);\n }}\n subAccountCount={subAccountCount}\n invalid={invalid}\n />\n </SimpleDialog>\n </>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter, TextField } from \"@kodiak-finance/orderly-ui\";\n\nexport const NickNameDescriptionText = \"\";\n\nexport const NickNameTextField = (props: {\n nickName: string | undefined;\n setNickName: (nickName: string | undefined) => void;\n subAccountCount?: number;\n invalid?: boolean;\n}) => {\n const { t } = useTranslation();\n return (\n <TextField\n placeholder={`Sub-account ${(props.subAccountCount ?? 0) + 1}`}\n fullWidth\n label={t(\"subAccount.modal.nickName.label\")}\n value={props.nickName}\n onChange={(e) => {\n const _value = e.target.value.replace(/[^a-zA-Z0-9@,\\s_-]/g, \"\");\n props.setNickName(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter(/[^a-zA-Z0-9@,\\s_-]/g),\n ]}\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input: \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n maxLength={20}\n minLength={1}\n autoComplete=\"off\"\n helpText={t(\"subAccount.modal.create.nickname.role\")}\n className=\"oui-mb-4\"\n color={props.invalid ? \"danger\" : undefined}\n />\n );\n};\n","import { FC } from \"react\";\nimport { useLeftNavScript } from \"./leftNav.script\";\nimport { LeftNavUI, LeftNavUIProps } from \"./leftNav.ui\";\n\nexport const LeftNavWidget: FC<LeftNavUIProps> = (props) => {\n const state = useLeftNavScript();\n return <LeftNavUI {...props} {...state} />;\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\n\nexport type UseScanQRCodeScriptReturn = ReturnType<typeof useScanQRCodeScript>;\n\nexport const useScanQRCodeScript = () => {\n const [open, setOpen] = useState(false);\n const { widgetConfigs } = useAppContext();\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const [showScanTooltip, setShowScanTooltip] = useLocalStorage(\n \"orderly_qr_code_scan_tooltip_open\",\n true,\n );\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n const onScanSuccess = (url: string) => {\n if (!isValidURL(url)) {\n return;\n }\n const { onSuccess } = widgetConfigs?.scanQRCode || {};\n if (typeof onSuccess === \"function\") {\n onSuccess(url);\n } else {\n window.location.href = url;\n }\n };\n\n useEffect(() => {\n if (showScanTooltip) {\n timerRef.current = setTimeout(() => {\n setShowScanTooltip(false);\n }, 8000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [showScanTooltip]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n onScanSuccess,\n showScanTooltip,\n };\n};\n\nfunction isValidURL(str: string) {\n try {\n const url = new URL(str);\n return [\"http:\", \"https:\"].includes(url.protocol);\n } catch {\n return false;\n }\n}\n","import { FC, SVGProps } from \"react\";\nimport { useTranslation, Trans } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n cn,\n Flex,\n SimpleDialog,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../main/mainLogo\";\nimport { UseScanQRCodeScriptReturn } from \"./scanQRCode.script\";\nimport { QRCodeScanner, QRCODE_WIDTH, QRCODE_HEIGHT } from \"./scanner\";\n\ntype ScanQRCodeProps = UseScanQRCodeScriptReturn;\n\nexport const ScanQRCode: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n return (\n <>\n <Tooltip\n open={props.showScanTooltip}\n content={t(\"linkDevice.scanQRCode.tooltip\")}\n className=\"oui-bg-base-6 oui-text-2xs oui-font-semibold oui-text-warning-darken\"\n arrow={{ className: \"!oui-fill-base-6\" }}\n >\n <Flex\n className=\"oui-h-8 oui-w-8 oui-cursor-pointer oui-items-center oui-justify-center oui-rounded-md oui-bg-base-5 oui-px-[6px]\"\n onClick={props.showDialog}\n >\n <ScanIcon className=\"oui-text-base-contrast-80\" />\n </Flex>\n </Tooltip>\n <SimpleDialog\n title={<MainLogo />}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n >\n <ScanQRCodeContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nconst ScanQRCodeContent: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex justify=\"center\" direction=\"column\" gapY={5}>\n <Box width={QRCODE_WIDTH} height={QRCODE_HEIGHT} className=\"oui-relative\">\n <QRCodeScanner onSuccess={props.onScanSuccess} />\n <>\n <LineGradient />\n <RadiusGradient className=\"oui-absolute oui-left-[-1.5px] oui-top-[-1.5px]\" />\n <RadiusGradient className=\"oui-absolute oui-right-[-1.5px] oui-top-[-1.5px] oui-rotate-90\" />\n <RadiusGradient className=\"oui-absolute oui-bottom-[-1.5px] oui-left-[-1.5px] -oui-rotate-90\" />\n <RadiusGradient className=\"oui-absolute oui-bottom-[-1.5px] oui-right-[-1.5px] -oui-rotate-180\" />\n </>\n </Box>\n\n {/* </Box> */}\n <Text size=\"sm\" intensity={98} weight=\"semibold\">\n {t(\"linkDevice.scanQRCode\")}\n </Text>\n <span className=\"oui-px-3 oui-text-center\">\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-break-words\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.scanQRCode.description\"\n components={[\n <LinkDeviceIcon\n key=\"0\"\n className=\"oui-mx-1 oui-inline-block oui-text-base-contrast-80\"\n />,\n ]}\n />\n </Text>\n </span>\n </Flex>\n );\n};\n\nconst ScanIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M5.249 2.243a3 3 0 0 0-3 3v.75a.75.75 0 0 0 1.5 0v-.75a1.5 1.5 0 0 1 1.5-1.5h2.25a.75.75 0 0 0 0-1.5zm5.25 0a.75.75 0 0 0 0 1.5h2.25a1.5 1.5 0 0 1 1.5 1.5v.75a.75.75 0 0 0 1.5 0v-.75a3 3 0 0 0-3-3zm-7.5 9a.75.75 0 0 0-.75.75v.75a3 3 0 0 0 3 3h2.25a.75.75 0 0 0 0-1.5h-2.25a1.5 1.5 0 0 1-1.5-1.5v-.75a.75.75 0 0 0-.75-.75m12 0a.75.75 0 0 0-.75.75v.75a1.5 1.5 0 0 1-1.5 1.5h-2.25a.75.75 0 0 0 0 1.5h2.25a3 3 0 0 0 3-3v-.75a.75.75 0 0 0-.75-.75M5.25 8.999a.75.75 0 0 1 .75-.75h6a.75.75 0 0 1 0 1.5H6a.75.75 0 0 1-.75-.75\" />\n </svg>\n);\n\nexport interface LinkDeviceIconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon: FC<LinkDeviceIconProps> = (props) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n};\n\nconst LineGradient: FC<SVGProps<SVGSVGElement>> = () => {\n return (\n <div\n className={cn(\n \"oui-absolute oui-left-[30px] oui-top-0\",\n \"oui-h-[2px] oui-w-[calc(100%-60px)] oui-rounded-full\",\n \"oui-bg-[linear-gradient(270deg,rgb(var(--oui-gradient-brand-end))_0%,rgb(var(--oui-gradient-brand-start))_100%)]\",\n \"oui-shadow-[0_0_8px_4px_rgba(var(--oui-gradient-brand-start)/0.12)]\",\n \"oui-animate-scan-qr-code\",\n )}\n />\n );\n};\n\nconst RadiusGradient: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 64 64\"\n fill=\"none\"\n {...props}\n >\n <path\n d=\"M62 2H18C9.16344 2 2 9.16344 2 18V62\"\n stroke=\"url(#paint0_linear_136_6227)\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_136_6227\"\n x1=\"2\"\n y1=\"32\"\n x2=\"62\"\n y2=\"32\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n","import { FC, useEffect, useRef } from \"react\";\nimport jsQR from \"jsqr\";\n\ntype ScannerProps = {\n onSuccess?: (data: string) => void;\n};\n\nexport const QRCODE_WIDTH = 320;\nexport const QRCODE_HEIGHT = 320;\nconst RATIO = 2;\n\n/**\n * QR Code Scanner\n * reference https://github.com/cozmo/jsQR/blob/master/docs/index.html\n */\nexport const QRCodeScanner: FC<ScannerProps> = (props) => {\n const videoRef = useRef<HTMLVideoElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n const tick = () => {\n const video = videoRef.current;\n const canvas = canvasRef.current;\n if (!video || !canvas) return;\n\n const ctx = canvas.getContext(\"2d\")!;\n\n if (video.readyState === video.HAVE_ENOUGH_DATA) {\n const videoWidth = video.videoWidth;\n const videoHeight = video.videoHeight;\n\n const canvasAspectRatio = canvas.width / canvas.height;\n const videoAspectRatio = videoWidth / videoHeight;\n\n let sx, sy, sWidth, sHeight;\n\n if (videoAspectRatio > canvasAspectRatio) {\n // The video is wide. Crop the left and right sides\n sHeight = videoHeight;\n sWidth = videoHeight * canvasAspectRatio;\n sx = (videoWidth - sWidth) / 2;\n sy = 0;\n } else {\n // The video is high. Crop the top and bottom sides\n sWidth = videoWidth;\n sHeight = videoWidth / canvasAspectRatio;\n sx = 0;\n sy = (videoHeight - sHeight) / 2;\n }\n\n ctx.drawImage(\n video,\n sx,\n sy,\n sWidth,\n sHeight,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n\n // ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const res = jsQR(imageData.data, imageData.width, imageData.height, {\n inversionAttempts: \"dontInvert\",\n });\n\n if (res?.data) {\n console.log(\"scan result\", res.data);\n props.onSuccess?.(res.data);\n }\n }\n requestAnimationFrame(tick);\n };\n\n useEffect(() => {\n const video = videoRef.current;\n if (!open || !video) return;\n\n // Use facingMode: environment to attemt to get the front camera on phones\n navigator?.mediaDevices\n ?.getUserMedia({\n video: {\n facingMode: \"environment\",\n width: { ideal: QRCODE_WIDTH * RATIO },\n height: { ideal: QRCODE_HEIGHT * RATIO },\n },\n })\n .then((stream) => {\n video.srcObject = stream;\n // required to tell iOS safari we don't want fullscreen\n video.setAttribute(\"playsinline\", \"true\");\n video.play();\n\n video.onloadeddata = () => {\n console.log(\"Video data loaded.\");\n // const videoTrack = stream.getVideoTracks()[0];\n // const settings = videoTrack.getSettings();\n // console.log(\"video size\", `${settings.width}x${settings.height}`);\n\n requestAnimationFrame(tick);\n };\n })\n .catch((err) => {\n console.error(\"Error accessing camera:\", err);\n });\n\n return () => {\n // Cleanup: stop video stream when component unmounts\n const stream = video.srcObject as MediaStream;\n if (stream) {\n const tracks = stream.getTracks();\n tracks.forEach((track: any) => track.stop());\n }\n video.srcObject = null;\n };\n }, [videoRef, canvasRef]);\n\n return (\n <>\n <video\n ref={videoRef}\n width={QRCODE_WIDTH}\n height={QRCODE_HEIGHT}\n className=\"oui-hidden oui-rounded-2xl oui-bg-base-10\"\n />\n <canvas\n ref={canvasRef}\n width={QRCODE_WIDTH * RATIO}\n height={QRCODE_HEIGHT * RATIO}\n style={{ width: QRCODE_WIDTH, height: QRCODE_HEIGHT }}\n className=\"oui-rounded-2xl oui-bg-base-10\"\n />\n </>\n );\n};\n","import React from \"react\";\nimport { useScanQRCodeScript } from \"./scanQRCode.script\";\nimport { ScanQRCode } from \"./scanQRCode.ui\";\n\nexport const ScanQRCodeWidget: React.FC = () => {\n const state = useScanQRCodeScript();\n return <ScanQRCode {...state} />;\n};\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useLinkDeviceScript } from \"./linkDevice.script\";\nimport { LinkDevice } from \"./linkDevice.ui\";\nimport { LinkDeviceMobile } from \"./linkDevice.ui.mobile\";\n\nexport const LinkDeviceWidget: React.FC = () => {\n const { isMobile } = useScreen();\n const state = useLinkDeviceScript();\n if (isMobile) {\n return <LinkDeviceMobile {...state} />;\n }\n return <LinkDevice {...state} />;\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport {\n useAccount,\n useChains,\n useEventEmitter,\n useTrack,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { TrackerEventName } from \"@kodiak-finance/orderly-types\";\n\nexport type UseLinkDeviceScriptReturn = ReturnType<typeof useLinkDeviceScript>;\n\nconst ExpireSeconds = 60;\n\nexport function useLinkDeviceScript() {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(true);\n const [confirm, setConfirm] = useState(false);\n const [seconds, setSeconds] = useState(ExpireSeconds);\n const [secretKey, setSecretKey] = useState(\"\");\n const [url, setUrl] = useState(\"\");\n const ee = useEventEmitter();\n const { track } = useTrack();\n\n const { state, account } = useAccount();\n\n const [_, { findByChainId }] = useChains(undefined, {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const createTrackParams = () => {\n const chain = findByChainId(account.chainId as number);\n return {\n wallet: state?.connectWallet?.name,\n network: chain?.network_infos.name,\n };\n };\n\n const getOrderlyKey = useCallback(async () => {\n try {\n const res = await account.createApiKey(30);\n setSecretKey(res.secretKey);\n setLoading(false);\n\n track(TrackerEventName.signLinkDeviceMessageSuccess, createTrackParams());\n } catch (e) {\n console.error(\"getOrderlyKey\", e);\n\n if (e instanceof Error) {\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n }\n }\n hideDialog();\n }\n }, [account]);\n\n const showDialog = useCallback(() => {\n setOpen(true);\n getOrderlyKey();\n track(TrackerEventName.clickLinkDeviceButton, createTrackParams());\n }, [account]);\n\n const hideDialog = useCallback(() => {\n setOpen(false);\n }, []);\n\n const onConfirm = useCallback(() => {\n setConfirm(true);\n track(TrackerEventName.linkDeviceModalClickConfirm, {});\n }, []);\n\n const copyUrl = useCallback(() => {\n navigator.clipboard.writeText(url);\n }, [url]);\n\n useEffect(() => {\n // when hide dialog, reset data\n if (!open) {\n setConfirm(false);\n setLoading(true);\n setSeconds(ExpireSeconds);\n setSecretKey(\"\");\n setUrl(\"\");\n }\n }, [open]);\n\n useEffect(() => {\n if (seconds === 0) {\n hideDialog();\n return;\n }\n\n if (!confirm) {\n return;\n }\n\n const timer = setTimeout(() => {\n setSeconds(seconds - 1);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, [seconds, confirm]);\n\n useEffect(() => {\n if (confirm && secretKey) {\n const timestamp = Math.floor(Date.now() / 1000) + ExpireSeconds;\n const params = {\n k: secretKey,\n t: timestamp,\n a: account.address,\n i: account.chainId,\n n: account.walletAdapter?.chainNamespace,\n };\n const url = createUrl(params);\n setUrl(url);\n }\n }, [confirm, secretKey]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n loading,\n seconds,\n confirm,\n onConfirm,\n url,\n copyUrl,\n };\n}\n\nfunction createUrl(params: Record<string, any>) {\n const str = JSON.stringify(params);\n const base64 = window.btoa(str);\n console.log(\"str\", str.length, str);\n console.log(\"base64\", base64.length, base64);\n return `${window.location.origin}?link=${base64}`;\n}\n","import { FC, SVGProps, forwardRef, useEffect, useRef } from \"react\";\nimport { qrcode as qr } from \"@akamfoad/qr\";\nimport { Trans, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n CopyIcon,\n Flex,\n SimpleDialog,\n SimpleDialogFooter,\n SimpleDialogFooterProps,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../mainLogo\";\nimport { UseLinkDeviceScriptReturn } from \"./linkDevice.script\";\n\nexport type LinkDeviceProps = UseLinkDeviceScriptReturn;\n\nexport const LinkDevice: FC<LinkDeviceProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <>\n <Tooltip content={t(\"linkDevice.tooltip\")}>\n <LinkDeviceIcon\n className=\"oui-text-base-contrast-80 oui-cursor-pointer hover:oui-fill-base-contrast oui-transition-colors\"\n onClick={props.showDialog}\n />\n </Tooltip>\n\n <SimpleDialog\n title={<Text weight=\"semibold\">{t(\"common.confirm\")}</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n contentProps={{\n onInteractOutside: (e) => {\n const el = document.querySelector(\"#privy-dialog\");\n if (el) {\n e.preventDefault();\n }\n },\n }}\n >\n <LinkDeviceContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nexport const LinkDeviceContent: FC<LinkDeviceProps> = (props) => {\n if (props.loading) {\n return <Loading />;\n }\n\n if (props.confirm) {\n return (\n <QRCode\n hideDialog={props.hideDialog}\n seconds={props.seconds}\n url={props.url}\n copyUrl={props.copyUrl}\n />\n );\n }\n\n return (\n <LinkDeviceConfirm\n hideDialog={props.hideDialog}\n onConfirm={props.onConfirm}\n />\n );\n};\n\ntype QRCodeProps = Pick<\n LinkDeviceProps,\n \"seconds\" | \"hideDialog\" | \"copyUrl\"\n> & {\n url?: string;\n};\n\nconst QRCode: FC<QRCodeProps> = (props) => {\n const { t } = useTranslation();\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n primary: {\n label: t(\"common.ok\"),\n onClick: props.hideDialog,\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\" gapY={3}>\n <Text size=\"base\" intensity={98}>\n {t(\"linkDevice.scanQRCode\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center\"\n >\n {/* @ts-ignore */}\n <Trans i18nKey=\"linkDevice.createQRCode.success.description\" />\n </Text>\n\n <Text size=\"sm\" intensity={54}>\n {`${t(\"common.countdown\")}: `}\n <Text.gradient color=\"brand\" className=\"oui-tabular-nums\">\n {props.seconds}s\n </Text.gradient>\n </Text>\n\n <Flex\n className={cn(\n \"oui-w-[240px] oui-h-[240px] \",\n \"oui-border oui-border-base-contrast-20 oui-rounded-2xl\",\n )}\n justify=\"center\"\n itemAlign=\"center\"\n >\n <Flex\n className=\"oui-w-[220px] oui-h-[220px] oui-rounded-lg oui-bg-white\"\n justify=\"center\"\n itemAlign=\"center\"\n >\n <QRCodeCanvas width={196} height={196} content={props.url} />\n </Flex>\n </Flex>\n\n <Flex\n direction=\"row\"\n gap={1}\n className={cn(\n \"oui-cursor-pointer\",\n \"oui-group oui-text-base-contrast-54 hover:oui-text-base-contrast\",\n )}\n onClick={props.copyUrl}\n >\n <CopyIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-54 group-hover:oui-text-base-contrast\"\n />\n <Text size=\"2xs\" weight=\"regular\">\n {t(\"linkDevice.createQRCode.success.copyUrl\")}\n </Text>\n </Flex>\n\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\ntype QRCodeCanvasProps = {\n width: number;\n height: number;\n content?: string;\n};\n\nconst QRCodeCanvas: FC<QRCodeCanvasProps> = (props) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!canvasRef.current || !props.content) return;\n\n const qrcode = qr(props.content);\n const width = props.width;\n const height = props.height;\n\n const ctx = canvasRef.current.getContext(\"2d\")!;\n\n const cells = qrcode.modules!;\n\n const tileW = width / cells.length;\n const tileH = height / cells.length;\n\n for (let r = 0; r < cells.length; ++r) {\n const row = cells[r];\n for (let c = 0; c < row.length; ++c) {\n ctx.fillStyle = row[c] ? \"#000\" : \"#fff\";\n const w = Math.ceil((c + 1) * tileW) - Math.floor(c * tileW);\n const h = Math.ceil((r + 1) * tileH) - Math.floor(r * tileH);\n ctx.fillRect(Math.round(c * tileW), Math.round(r * tileH), w, h);\n }\n }\n }, [canvasRef, props.content]);\n\n return <canvas width={props.width} height={props.height} ref={canvasRef} />;\n};\n\ntype LinkDeviceConfirmProps = Pick<LinkDeviceProps, \"hideDialog\" | \"onConfirm\">;\n\nconst LinkDeviceConfirm: FC<LinkDeviceConfirmProps> = (props) => {\n const { t } = useTranslation();\n\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n secondary: {\n label: t(\"common.cancel\"),\n onClick: props.hideDialog,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n primary: {\n label: t(\"common.confirm\"),\n onClick: props.onConfirm,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\">\n <MainLogo />\n <Text size=\"base\" intensity={98} className=\"oui-mt-5\">\n {t(\"linkDevice.createQRCode.linkMobileDevice\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center oui-mt-3\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.createQRCode.linkMobileDevice.description\"\n values={{\n hostname: window.location.hostname,\n }}\n />\n </Text>\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\nconst Loading = () => {\n const { t } = useTranslation();\n\n return (\n <Flex direction=\"column\" gap={5}>\n <Spinner />\n <Text size=\"sm\" intensity={98}>\n {t(\"linkDevice.createQRCode.loading.description\")}\n </Text>\n </Flex>\n );\n};\n\nconst Spinner = () => {\n return (\n <svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 80 80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-animate-spin\"\n >\n <path\n d=\"M11.4858 52.1631C10.4698 52.5965 9.28872 52.1259 8.91766 51.0855C7.68926 47.6412 7.04029 44.0121 7.00182 40.3463C6.95634 36.0129 7.76483 31.713 9.38113 27.6921C10.9974 23.6712 13.3899 20.0079 16.4219 16.9116C18.9868 14.2923 21.967 12.122 25.2375 10.4861C26.2253 9.99202 27.4035 10.4698 27.8369 11.4858L28.8571 13.8773C29.2904 14.8933 28.8139 16.0615 27.8336 16.5706C25.3569 17.8567 23.0959 19.5294 21.1375 21.5293C18.7119 24.0064 16.7979 26.9369 15.5049 30.1537C14.2119 33.3704 13.5651 36.8103 13.6015 40.277C13.6308 43.076 14.1051 45.8482 15.0026 48.4906C15.3579 49.5365 14.8933 50.7096 13.8773 51.143L11.4858 52.1631Z\"\n fill=\"url(#paint0_linear_177_6754)\"\n />\n <path\n d=\"M73 40C73 58.2254 58.2254 73 40 73C21.7746 73 7 58.2254 7 40C7 21.7746 21.7746 7 40 7C58.2254 7 73 21.7746 73 40ZM13.6 40C13.6 54.5803 25.4197 66.4 40 66.4C54.5803 66.4 66.4 54.5803 66.4 40C66.4 25.4197 54.5803 13.6 40 13.6C25.4197 13.6 13.6 25.4197 13.6 40Z\"\n fill=\"white\"\n fillOpacity=\"0.06\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_177_6754\"\n x1=\"73\"\n y1=\"40\"\n x2=\"7\"\n y2=\"40\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon = forwardRef<SVGSVGElement, IconProps>(\n (props, ref) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n },\n);\n","import { FC, SVGProps, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { SimpleDialog } from \"@kodiak-finance/orderly-ui\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { LinkDeviceProps } from \"./linkDevice.ui\";\n\nexport const LinkDeviceMobile: FC<LinkDeviceProps> = (props) => {\n const [open, setOpen] = useState(false);\n const { account } = useAccount();\n const { t } = useTranslation();\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n };\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n size=\"xs\"\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: t(\"connector.disconnect\"),\n onClick: async () => {\n await onDisconnect();\n hideDialog();\n },\n size: \"md\",\n variant: \"outlined\",\n color: \"danger\",\n },\n }}\n >\n <Text intensity={54} size=\"sm\">\n {t(\"linkDevice.scanQRCode.connected.description\")}\n </Text>\n </SimpleDialog>\n <Flex\n className=\"oui-text-base-contrast oui-px-[6px]\"\n intensity={500}\n height={28}\n r=\"md\"\n onClick={showDialog}\n >\n <DesktopIcon />\n <Dot />\n <LinkIcon />\n <Dot />\n <MobileIcon />\n </Flex>\n </>\n );\n};\n\nconst Dot = () => {\n return (\n <Flex className=\"oui-gap-x-px oui-px-px\">\n <DotIcon />\n <DotIcon />\n <DotIcon />\n </Flex>\n );\n};\n\nconst DesktopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M4.5 2.93a2.25 2.25 0 0 0-2.25 2.25v5.25a.75.75 0 0 0-.75.75v1.5c0 1.272.93 2.25 2.25 2.25h10.5c1.318 0 2.25-.978 2.25-2.25v-1.5a.75.75 0 0 0-.75-.75V5.18a2.25 2.25 0 0 0-2.25-2.25zm0 1.5h9a.75.75 0 0 1 .75.75v5.25H3.75V5.18a.75.75 0 0 1 .75-.75M3 11.93h12v.75c0 .46-.277.75-.75.75H3.75c-.474 0-.75-.29-.75-.75z\" />\n </svg>\n);\n\nconst MobileIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M13.498 3.715a2.25 2.25 0 0 0-2.25-2.25h-4.5a2.25 2.25 0 0 0-2.25 2.25v10.5a2.25 2.25 0 0 0 2.25 2.25h4.5a2.25 2.25 0 0 0 2.25-2.25zm-1.5 0v9.75h-6v-9.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75m-2.25 11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0\" />\n </svg>\n);\n\nconst LinkIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.007 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0m7.486-2.344A.6.6 0 0 1 8.91 3.5c.15 0 .305.048.418.156a.55.55 0 0 1 0 .798L5.254 8.337a.62.62 0 0 1-.837 0L2.67 6.673a.55.55 0 0 1 0-.798.62.62 0 0 1 .837 0l1.329 1.266z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"11.007\"\n y1=\"5.999\"\n x2=\"1.007\"\n y2=\"5.999\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nconst DotIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"2\"\n height=\"2\"\n viewBox=\"0 0 2 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M.667.334a.667.667 0 1 1 0 1.333.667.667 0 0 1 0-1.333\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"1.333\"\n y1=\"1.001\"\n x2=\"0\"\n y2=\"1.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import { FC, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AnnouncementType, type API } from \"@kodiak-finance/orderly-types\";\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n Divider,\n Flex,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n AnnouncementIcon,\n BattleIcon,\n FundIcon,\n SecurityIcon,\n} from \"../announcementCenter/icons\";\nimport {\n CampaignContentCard,\n DelistingContentCard,\n ListingContentCard,\n MaintenanceContentCard,\n} from \"./contentCard\";\n\nexport interface NotificationProps {\n // Define your notification props here\n className?: string;\n // children?: React.ReactNode;\n dataSource: API.AnnouncementRow[];\n onClose?: () => void;\n}\n\nexport interface NotificationItemProps {\n id: string;\n type?: \"success\" | \"error\" | \"warning\" | \"info\";\n title?: string;\n message: string;\n onClose?: () => void;\n}\n\nexport interface NotificationListProps {\n notifications: NotificationItemProps[];\n onRemove?: (id: string) => void;\n}\n\nconst NotificationHeader: FC<{\n // type: AnnouncementType;\n dataSource: API.AnnouncementRow[];\n current: number;\n expanded?: boolean;\n onExpandToggle?: () => void;\n // onClose?: () => void;\n}> = (props) => {\n const { t } = useTranslation();\n const { expanded } = props;\n const { type } = props.dataSource[props.current];\n\n const title = useMemo(() => {\n switch (type) {\n case AnnouncementType.Campaign:\n return (\n <Text\n size=\"sm\"\n className=\"oui-text-transparent oui-bg-clip-text oui-gradient-brand\"\n >\n {t(\"notification.campaign\")}\n </Text>\n );\n case AnnouncementType.Delisting:\n return <Text size=\"sm\">{t(\"notification.delistingTitle\")}</Text>;\n case AnnouncementType.Listing:\n return (\n <Text size=\"sm\" color=\"buy\">\n {t(\"notification.listing\")}\n </Text>\n );\n case AnnouncementType.Maintenance:\n return (\n <Text size=\"sm\" color=\"warning\">\n {t(\"notification.maintenanceTitle\")}\n </Text>\n );\n default:\n return (\n <Text size=\"sm\" color=\"inherit\">\n {t(\"notification.generalTitle\")}\n </Text>\n );\n }\n }, [type, t]);\n const icon = useMemo(() => {\n switch (type) {\n case AnnouncementType.Campaign:\n return <BattleIcon color=\"white\" />;\n\n case AnnouncementType.Listing:\n return <FundIcon color=\"success\" />;\n case AnnouncementType.Maintenance:\n return <SecurityIcon color=\"warning\" />;\n case AnnouncementType.Delisting:\n default:\n return <AnnouncementIcon color=\"white\" />;\n }\n }, [type]);\n return (\n <Flex itemAlign=\"center\" justify=\"between\" className=\"oui-px-4 oui-py-3\">\n <div className=\"orderly-notification-header oui-flex oui-items-center oui-gap-2\">\n {icon}\n {title}\n </div>\n <button\n onClick={props.onExpandToggle}\n className=\"oui-transition-transform oui-duration-300\"\n style={{\n transform: !expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n >\n <ChevronDownIcon size={18} color=\"white\" />\n </button>\n </Flex>\n );\n};\n\nconst NotificationFooter: FC<{\n total: number;\n current: number;\n onCloseAll: () => void;\n onPrev: () => void;\n onNext: () => void;\n}> = (props) => {\n const { total, current, onCloseAll, onPrev, onNext } = props;\n const { t } = useTranslation();\n return (\n <Flex\n className=\"orderly-notification-footer oui-px-4 oui-py-2\"\n itemAlign=\"center\"\n justify=\"between\"\n >\n <Flex gap={2}>\n <button\n disabled={current - 1 < 0}\n onClick={onPrev}\n className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-base-6 hover:oui-bg-base-5 disabled:oui-opacity-50\"\n >\n <ChevronLeftIcon size={14} color=\"white\" />\n </button>\n <Text intensity={54} size=\"sm\">\n {current + 1}/{total}\n </Text>\n <button\n disabled={current + 1 >= total}\n onClick={onNext}\n className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-base-6 hover:oui-bg-base-5 disabled:oui-opacity-50\"\n >\n <ChevronRightIcon size={14} color=\"white\" />\n </button>\n </Flex>\n <button onClick={onCloseAll}>\n <Text size=\"xs\" color=\"primary\">\n {t(\"notification.closeAll\", { total })}\n </Text>\n </button>\n </Flex>\n );\n};\n\nconst NotificationContent: FC<{\n dataSource: (API.AnnouncementRow & {\n startTime?: number;\n endTime?: number;\n })[];\n current: number;\n onItemClick: (url: string) => void;\n}> = (props) => {\n const elements = useMemo(() => {\n return props.dataSource.map((message) => {\n const { type } = message;\n switch (type) {\n case AnnouncementType.Campaign:\n return (\n <CampaignContentCard\n message={message.message}\n coverImage={message.coverImage ?? \"\"}\n updateTime={message.updated_time ?? 0}\n url={message.url ?? \"\"}\n onItemClick={props.onItemClick}\n />\n );\n case AnnouncementType.Maintenance:\n return (\n <MaintenanceContentCard\n message={message.message}\n startTime={message.startTime ?? 0}\n endTime={message.endTime ?? 0}\n />\n );\n case AnnouncementType.Delisting:\n return (\n <DelistingContentCard\n message={message.message}\n updateTime={message.updated_time ?? 0}\n />\n );\n default:\n return (\n <ListingContentCard\n message={message.message}\n updateTime={message.updated_time ?? 0}\n />\n );\n }\n });\n }, [props.dataSource]);\n return <>{elements[props.current]}</>;\n};\n\nexport const NotificationUI: FC<\n NotificationProps & {\n maintenanceMessage?: string;\n onItemClick: (url: string) => void;\n }\n> = (props) => {\n const [expanded, setExpanded] = useState(true);\n\n const [current, setCurrent] = useState(0);\n const len = useMemo(() => props.dataSource?.length ?? 0, [props.dataSource]);\n\n if (len === 0) {\n return null;\n }\n\n return (\n <div className=\"orderly-notification oui-w-full \">\n <NotificationHeader\n dataSource={props.dataSource ?? []}\n current={current}\n expanded={expanded}\n onExpandToggle={() => {\n setExpanded(!expanded);\n }}\n />\n <Divider className=\"oui-mx-4\" />\n <div\n className=\"oui-grid oui-transition-all oui-duration-300 oui-ease-in-out\"\n style={{\n gridTemplateRows: expanded ? \"1fr\" : \"0fr\",\n }}\n >\n {/* Inner div needs overflow-hidden and min-height-0 for grid animation to work */}\n <div className=\"oui-min-h-0 oui-overflow-hidden \">\n <div className=\"oui-px-4 oui-py-3\">\n <NotificationContent\n dataSource={props.dataSource ?? []}\n current={current}\n onItemClick={props.onItemClick}\n />\n </div>\n </div>\n </div>\n\n <NotificationFooter\n total={len}\n current={current}\n onCloseAll={props.onClose ?? (() => {})}\n onPrev={() => {\n if (current - 1 < 0) {\n return;\n }\n setCurrent(current - 1);\n }}\n onNext={() => {\n if (current + 1 >= len) {\n return;\n }\n setCurrent(current + 1);\n }}\n />\n </div>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { UTCDateMini } from \"@date-fns/utc\";\nimport { format } from \"date-fns\";\nimport { produce } from \"immer\";\nimport {\n MaintenanceStatus,\n useLocalStorage,\n useMaintenanceStatus,\n useOrderlyContext,\n useQuery,\n useWS,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AnnouncementType,\n API,\n EMPTY_LIST,\n WSMessage,\n} from \"@kodiak-finance/orderly-types\";\nimport { getTimestamp } from \"@kodiak-finance/orderly-utils\";\n\nconst oneDay = 1000 * 60 * 60 * 24;\n\nconst maintentanceId = \"-1\";\n\nexport type AnnouncementOptions = {\n hideTips?: boolean;\n};\n\ninterface AnnouncementStore {\n show?: boolean;\n lastUpdateTime?: number | null;\n}\n\nconst ORDERLY_ANNOUNCEMENT_KEY = \"orderly_announcement\";\n\nconst getTimeString = (timestamp: number) => {\n const date = format(new UTCDateMini(timestamp), \"MMM dd\");\n const time = format(new UTCDateMini(timestamp), \"h:mm aa\");\n return `${time} (UTC) on ${date}`;\n};\n\nconst sortDataByUpdatedTime = (ori: API.Announcement) => {\n return produce<API.Announcement>(ori, (draft) => {\n if (Array.isArray(draft.rows)) {\n draft.rows.sort((a, b) => {\n if (a.updated_time && b.updated_time) {\n return b.updated_time - a.updated_time;\n }\n return 0;\n });\n }\n });\n};\n\nconst useAnnouncementData = () => {\n const ws = useWS();\n\n const [announcementStore, setStore] = useLocalStorage<AnnouncementStore>(\n ORDERLY_ANNOUNCEMENT_KEY,\n {},\n );\n\n const [tips, setTips] = useState<API.Announcement>({});\n\n const [maintenanceDialogInfo, setMaintenanceDialogInfo] = useState<string>();\n\n const { startTime, endTime, status, brokerName } = useMaintenanceStatus();\n\n const { t } = useTranslation();\n\n const { data: announcements } = useQuery<API.Announcement>(\n `/v2/public/announcement`,\n {\n revalidateOnFocus: false,\n refreshInterval: 60 * 60 * 1000, // refresh every 1 hour\n formatter: (data) => data,\n },\n );\n\n const getMaintentTipsContent = (\n brokerName: string,\n startDate: string,\n endDate: string,\n ) => t(\"maintenance.tips.description\", { brokerName, startDate, endDate });\n\n const getMaintentDialogContent = (brokerName: string, endDate: string) =>\n t(\"maintenance.dialog.description\", { brokerName, endDate });\n\n useEffect(() => {\n const unsubscribe = ws.subscribe(\"announcement\", {\n onMessage(message: WSMessage.Announcement) {\n if (message) {\n setTips((prev) => {\n return produce(prev, (draft) => {\n // Make sure draft.rows is an array\n if (!Array.isArray(draft.rows)) {\n draft.rows = [];\n }\n const idx = draft.rows.findIndex(\n (tip) => tip.announcement_id === message.announcement_id,\n );\n // Filter out old tips with the same id\n if (idx !== -1) {\n draft.rows.splice(idx, 1);\n }\n // Add the latest tip\n draft.rows.push({\n announcement_id: message.announcement_id,\n message: message.message,\n url: message.url,\n i18n: message.i18n,\n type: message.type,\n updated_time: message.updated_time,\n });\n });\n });\n // @ts-ignore\n setStore((prev) => ({ ...prev, show: true }));\n }\n },\n onError(err) {\n if (err instanceof Error) {\n console.error(\"Error receiving announcement:\", err.message);\n }\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [ws]);\n\n useEffect(() => {\n if (!announcements?.rows) {\n return;\n }\n const apiTime = announcements.last_updated_time ?? 0;\n const cachedTime = announcementStore.lastUpdateTime ?? 0;\n if (cachedTime < apiTime) {\n setTips((prev) => ({ ...prev, rows: announcements?.rows }));\n setStore({ show: true, lastUpdateTime: apiTime });\n } else {\n setTips((prev) => {\n return produce<API.Announcement>(prev, (draft) => {\n if (announcements?.rows?.length) {\n // If there are announcement rows available, create a Set to store IDs of existing tips\n const existingIds = new Set<string | number>(\n prev.rows?.map((tip) => tip.announcement_id),\n );\n // Find the maintenance tip in previous tips (if any)\n const maintenanceTip = prev.rows?.find(\n (tip) => tip.announcement_id === maintentanceId,\n );\n // Clear the draft’s rows array to refill it\n draft.rows = [];\n announcements.rows.forEach((item) => {\n if (!existingIds.has(item.announcement_id)) {\n // If the item’s ID is not in existingIds, push it into the draft\n draft.rows?.push(item);\n }\n });\n if (maintenanceTip) {\n // If a maintenance tip existed before, unshift it to the front\n draft.rows.unshift(maintenanceTip);\n }\n } else {\n // Find the index of the maintenance tip in draft rows\n const idx = draft.rows?.findIndex(\n (tip) => tip.announcement_id === maintentanceId,\n );\n if (idx !== undefined && idx !== -1) {\n // Remove the maintenance tip from draft rows\n draft.rows?.splice(idx, 1);\n }\n }\n });\n });\n }\n }, [announcements]);\n\n useEffect(() => {\n const startDate = startTime ? getTimeString(startTime) : \"-\";\n const endDate = endTime ? getTimeString(endTime) : \"-\";\n if (status === MaintenanceStatus.Maintenance) {\n setMaintenanceDialogInfo(getMaintentDialogContent(brokerName, endDate));\n return;\n }\n setMaintenanceDialogInfo(undefined);\n\n if (startTime && endTime) {\n // if (startTime < getTimestamp() + oneDay) {\n setTips((prev) =>\n produce<API.Announcement>(prev, (draft) => {\n // Make sure draft.rows is an array\n if (!Array.isArray(draft.rows)) {\n draft.rows = [];\n }\n // Rebuild rows: insert the latest maintenance tip first, then put the old non-maintenance ones at the end\n draft.rows = [\n {\n announcement_id: maintentanceId,\n type: AnnouncementType.Maintenance,\n /** @ts-ignore */\n startTime: startTime,\n /** @ts-ignore */\n endTime: endTime,\n message: getMaintentTipsContent(brokerName, startDate, endDate),\n },\n ...draft.rows.filter(\n (tip) => tip.type !== AnnouncementType.Maintenance,\n ),\n ];\n }),\n );\n } else {\n setTips((prev) => {\n return produce<API.Announcement>(prev, (draft) => {\n const index = draft.rows?.findIndex(\n (tip) => tip.announcement_id === maintentanceId,\n );\n if (index !== undefined && index !== -1) {\n draft.rows?.splice(index, 1);\n }\n });\n });\n }\n }, [startTime, endTime, status, brokerName, t]);\n\n const { customAnnouncements } = useAppContext();\n\n // Merge custom announcements with API announcements\n const mergedTips = useMemo(() => {\n const tipsCopy = { ...tips };\n if (customAnnouncements && customAnnouncements.length > 0) {\n // Custom announcements appear first (higher priority)\n tipsCopy.rows = [...customAnnouncements, ...(tips.rows || [])];\n }\n return sortDataByUpdatedTime(tipsCopy);\n }, [tips, customAnnouncements]);\n\n return {\n tips: mergedTips,\n maintenanceDialogInfo: maintenanceDialogInfo,\n };\n};\n\nexport type AnnouncementReturn = ReturnType<typeof useAnnouncement>;\n\nexport const useAnnouncement = (options?: AnnouncementOptions) => {\n const { showAnnouncement, setShowAnnouncement } = useAppContext();\n const { dataAdapter } = useOrderlyContext();\n\n const { tips: mergedTips, maintenanceDialogInfo } = useAnnouncementData();\n\n const memoizedTips = useMemo<API.AnnouncementRow[]>(() => {\n if (typeof dataAdapter?.announcementList === \"function\") {\n return dataAdapter.announcementList(\n mergedTips?.rows ?? (EMPTY_LIST as API.AnnouncementRow[]),\n );\n }\n return mergedTips?.rows ?? (EMPTY_LIST as API.AnnouncementRow[]);\n }, [dataAdapter?.announcementList, mergedTips?.rows]);\n\n const [announcementStore, setStore] = useLocalStorage<AnnouncementStore>(\n ORDERLY_ANNOUNCEMENT_KEY,\n {},\n );\n\n const closeTips = () => {\n // @ts-ignore\n setStore((prev) => ({ ...prev, show: false }));\n };\n\n useEffect(() => {\n const len = memoizedTips.length;\n setShowAnnouncement(\n Boolean(len) && announcementStore.show && !options?.hideTips,\n );\n }, [\n memoizedTips,\n announcementStore.show,\n options?.hideTips,\n setShowAnnouncement,\n ]);\n\n return {\n maintenanceDialogInfo,\n tips: memoizedTips,\n closeTips: closeTips,\n showAnnouncement: showAnnouncement,\n };\n};\n","import { FC, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport { NotificationUI as NotificationUIComponent } from \"@kodiak-finance/orderly-ui-notification\";\nimport { windowGuard } from \"@kodiak-finance/orderly-utils\";\nimport { useScaffoldContext } from \"../scaffold\";\n\nexport const NotificationUI: FC<{\n dataSource: API.AnnouncementRow[];\n onClose: () => void;\n showAnnouncement: boolean;\n}> = (props) => {\n const { dataSource, showAnnouncement } = props;\n const { routerAdapter } = useScaffoldContext();\n const onItemClick = (url: string) => {\n if (!url) return;\n routerAdapter?.onRouteChange({\n href: url,\n name: url,\n target: \"_blank\",\n });\n };\n\n const notificationRef = useRef<HTMLDivElement>(null);\n const len = useMemo(() => dataSource?.length ?? 0, [dataSource]);\n\n const onClose = useCallback(() => {\n if (len === 0) {\n return;\n }\n windowGuard(() => {\n if (notificationRef.current) {\n const animationendHandler = () => {\n props.onClose();\n notificationRef.current!.removeEventListener(\n \"transitionend\",\n animationendHandler,\n );\n };\n\n notificationRef.current.addEventListener(\n \"transitionend\",\n animationendHandler,\n );\n requestAnimationFrame(() => {\n notificationRef.current!.style.transform = \"translateY(120%)\";\n });\n }\n });\n }, [props.onClose, len]);\n\n useEffect(() => {\n if (len === 0) {\n return;\n }\n if (showAnnouncement) {\n // open the notification`\n windowGuard(() => {\n if (notificationRef.current) {\n requestAnimationFrame(() => {\n notificationRef.current!.style.transform = \"translateY(0)\";\n });\n }\n });\n }\n }, [showAnnouncement, len]);\n\n if (len === 0) {\n return null;\n }\n\n return (\n <div\n ref={notificationRef}\n data-state={showAnnouncement ? \"open\" : \"closed\"}\n className={cn(\n \"oui-fixed oui-bottom-[calc(env(safe-area-inset-bottom)+8px)] oui-left-2 oui-z-50 oui-w-[calc(100%_-_16px)] oui-translate-y-[120%] oui-rounded-lg oui-border oui-border-line-6 oui-bg-base-8 md:oui-bottom-10 md:oui-left-auto md:oui-right-3 md:oui-w-[420px]\",\n \"oui-transition-all oui-duration-300 oui-ease-in-out\",\n showAnnouncement ? \"oui-visible\" : \"oui-invisible\",\n )}\n >\n <NotificationUIComponent\n dataSource={dataSource}\n onClose={onClose}\n onItemClick={onItemClick}\n />\n </div>\n );\n};\n","import { useScaffoldContext } from \"../scaffold/scaffoldContext\";\nimport { NotificationUI } from \"./notification.ui\";\n\nexport const NotificationWidget = () => {\n const { announcementState } = useScaffoldContext();\n\n return (\n <NotificationUI\n dataSource={announcementState.tips}\n onClose={announcementState.closeTips}\n showAnnouncement={announcementState.showAnnouncement}\n />\n );\n};\n","import React from \"react\";\nimport {\n Box,\n Flex,\n tv,\n VariantProps,\n Text,\n cn,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype SideMenuItem = {\n name: string;\n icon?: React.ReactNode;\n href?: string;\n disabled?: boolean;\n onClick?: () => void;\n hide?: boolean;\n};\n\nconst menuItemVariants = tv({\n slots: {\n button: [\n \"oui-min-h-10\",\n \"oui-px-3\",\n \"oui-py-2\",\n \"oui-rounded-md\",\n \"oui-w-full\",\n \"oui-text-left\",\n \"oui-text-base\",\n \"oui-text-base-contrast-36\",\n // \"oui-flex\",\n \"oui-group\",\n // \"oui-space-x-2\",\n // \"oui-items-center\",\n \"hover:oui-bg-base-8\",\n \"oui-transition-colors\",\n \"group-data-[state=closed]/bar:oui-w-[42px]\",\n \"oui-overflow-hidden\",\n ],\n icon: [],\n },\n variants: {\n mode: {\n \"icon-only\": {\n button: \"oui-w-10\",\n icon: \"w-6 h-6\",\n },\n full: {\n button: \"oui-full\",\n icon: \"w-6 h-6\",\n },\n },\n active: {\n true: {\n button: \"oui-bg-base-5 hover:oui-bg-base-5\",\n },\n },\n open: {\n true: {\n button: \"\",\n },\n },\n },\n});\n\nconst MenuItem = React.memo<\n {\n item: SideMenuItem;\n active?: boolean;\n open?: boolean;\n onClick?: (item: SideMenuItem) => void;\n } & VariantProps<typeof menuItemVariants>\n>((props) => {\n const { item, mode, open, onClick, active, ...rest } = props;\n const { button } = menuItemVariants({\n mode,\n active: props.active,\n open: props.open,\n });\n const children = (\n <button\n data-actived={props.active}\n disabled={item.disabled}\n className={button()}\n onClick={() => {\n props.onClick?.(item);\n }}\n >\n <Flex itemAlign={\"center\"} gap={2} as=\"span\">\n <div>{item.icon}</div>\n {props.open && (\n <Text.gradient\n color={props.active ? \"brand\" : \"inherit\"}\n angle={45}\n size=\"base\"\n className=\"oui-break-all oui-animate-in oui-fade-in\"\n >\n {item.name}\n </Text.gradient>\n )}\n </Flex>\n </button>\n );\n\n if (props.open) {\n return <li className=\"oui-min-w-[120px]\">{children}</li>;\n }\n\n return (\n <li>\n <Tooltip content={item.name} side=\"right\" align=\"center\" sideOffset={20}>\n {children}\n </Tooltip>\n </li>\n );\n});\n\nMenuItem.displayName = \"LeftMenuItem\";\n\nconst SideMenus: React.FC<{\n menus?: SideMenuItem[];\n current?: string;\n open?: boolean;\n onItemSelect?: (item: SideMenuItem) => void;\n}> = (props) => {\n return (\n <Box py={6}>\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-pointer-events-none oui-invisible oui-absolute\"\n >\n <defs>\n <linearGradient\n id=\"side-menu-gradient\"\n x1=\"15.7432\"\n y1=\"8.94726\"\n x2=\"2.24316\"\n y2=\"8.94726\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop stopColor=\"rgb(var(--oui-gradient-brand-start))\" offset=\"1\" />\n </linearGradient>\n </defs>\n </svg>\n <ul className=\"oui-space-y-4\">\n {props.menus?.map((item, index) => {\n if (item?.hide) {\n return null;\n }\n return (\n <MenuItem\n key={index}\n item={item}\n open={props.open}\n active={item.href === props.current}\n onClick={props.onItemSelect}\n />\n );\n })}\n </ul>\n </Box>\n );\n};\n\ntype SideBarHeaderProps = {\n onToggle?: () => void;\n open?: boolean;\n title?: React.ReactNode;\n};\n\nconst SideBarHeader: React.FC<SideBarHeaderProps> = (props) => {\n const { title } = props;\n\n const titleElemet =\n typeof title === \"string\" ? (\n <Text intensity={54} size=\"xs\">\n {title}\n </Text>\n ) : (\n title\n );\n\n const iconProps = {\n className:\n \"oui-text-base-contrast-36 hover:oui-text-base-contrast-80 oui-cursor-pointer\",\n onClick: props.onToggle,\n };\n\n return (\n <Flex\n justify={props.open ? \"between\" : \"center\"}\n itemAlign=\"center\"\n className=\"oui-h-6\"\n >\n {props.open ? titleElemet : null}\n\n {props.open ? (\n <CollapseIcon {...iconProps} />\n ) : (\n <ExpandIcon {...iconProps} />\n )}\n </Flex>\n );\n};\n\ntype SideBarProps = {\n title?: React.ReactNode;\n items?: SideMenuItem[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n onItemSelect?: (item: SideMenuItem) => void;\n current?: string;\n className?: string;\n maxWidth?: number;\n minWidth?: number;\n style?: React.CSSProperties;\n};\n\nconst SideBar: React.FC<SideBarProps> = (props) => {\n const { open = true, items, current, onItemSelect } = props;\n\n return (\n <Box\n data-state={open ? \"opened\" : \"closed\"}\n className={cn(\"oui-group/bar\", props.className)}\n style={props.style}\n >\n <SideBarHeader\n open={open}\n title={props.title}\n onToggle={() => {\n props.onOpenChange?.(!open);\n }}\n />\n <SideMenus\n menus={items}\n current={current}\n onItemSelect={onItemSelect}\n open={open}\n />\n </Box>\n );\n};\n\nSideBar.displayName = \"SideBar\";\n\nconst ExpandIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M6.326 8.826a.84.84 0 0 0-.6.234L2.16 12.627v-2.135H.492v4.167c0 .46.373.833.834.833h4.166v-1.667H3.357l3.567-3.567a.857.857 0 0 0 0-1.198.84.84 0 0 0-.598-.234M10.502.492V2.16h2.135L9.07 5.726a.857.857 0 0 0 0 1.199.86.86 0 0 0 1.197 0l3.568-3.568v2.135h1.667V1.326a.834.834 0 0 0-.834-.834z\" />\n </svg>\n);\n\nconst CollapseIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M14.668.492a.85.85 0 0 0-.599.234l-3.567 3.568V2.159H8.835v4.167c0 .46.373.833.833.833h4.167V5.492H11.7l3.569-3.567a.86.86 0 0 0 0-1.199.85.85 0 0 0-.6-.234m-12.5 8.334v1.666h2.135L.736 14.06a.86.86 0 0 0 0 1.198.86.86 0 0 0 1.198 0l3.568-3.567v2.134h1.666V9.66a.834.834 0 0 0-.833-.833z\" />\n </svg>\n);\n\nexport { SideBar };\n\nexport type { SideBarProps, SideMenuItem };\n","import { useState } from \"react\";\nimport { SideBarProps } from \"./sidebar.ui\";\nimport { useScaffoldContext } from \"../scaffold\";\n\nexport const useSideNavBuilder = (\n props?: Partial<SideBarProps>\n): SideBarProps => {\n const [current, setCurrent] = useState(props?.items?.[0].href || \"/\");\n const { expanded, setExpand } = useScaffoldContext();\n\n if (typeof setExpand === \"undefined\") {\n console.warn(\"SideBar component must be used within a Scaffold component\");\n }\n\n return {\n items: [],\n current,\n open: expanded,\n onOpenChange: (open) => {\n setExpand?.(open);\n },\n onItemSelect: (item) => {\n if (item.href) {\n setCurrent(item.href);\n }\n },\n ...props,\n };\n};\n","import React from \"react\";\nimport { SideBar, SideBarProps } from \"./sidebar.ui\";\nimport { useSideNavBuilder } from \"./useSideNavBuilder.script\";\n\nexport const SideNavbarWidget: React.FC<Partial<SideBarProps>> = (props) => {\n const state = useSideNavBuilder(props);\n return <SideBar {...state} />;\n};\n","import React from \"react\";\nimport { isValidElement } from \"react\";\nimport { Box, cn, Grid } from \"@kodiak-finance/orderly-ui\";\nimport { FooterWidget } from \"../footer\";\nimport { MainNavWidget } from \"../main/mainNav.widget\";\nimport { NotificationWidget } from \"../notification/notification.widget\";\nimport { RestrictedInfoWidget } from \"../restrictedInfo\";\nimport { SideNavbarWidget } from \"../sidebar\";\nimport type { ScaffoldScriptReturn } from \"./scaffold.script\";\nimport type { ScaffoldProps } from \"./scaffold.widget\";\n\nexport type DesktopScaffoldProps = React.PropsWithChildren<\n ScaffoldProps & ScaffoldScriptReturn\n>;\n\nexport const DesktopScaffold: React.FC<DesktopScaffoldProps> = (props) => {\n const {\n classNames,\n footerHeight,\n topNavbarRef,\n mainNavProps,\n topBar,\n announcementRef,\n // restrictedInfo,\n hasLeftSidebar,\n expand,\n leftSideProps,\n leftSidebar,\n footer,\n footerRef,\n sideBarCollaspedWidth,\n sideBarExpandWidth,\n footerProps,\n children,\n } = props;\n return (\n <div\n style={{\n height: `calc(100vh - ${footerHeight}px)`,\n }}\n className={cn(\n \"oui-scaffold-root oui-font-semibold\",\n // default text and background color\n \"oui-bg-base-10 oui-text-base-contrast\",\n \"oui-flex oui-flex-col\",\n \"oui-custom-scrollbar oui-overflow-auto\",\n classNames?.root,\n )}\n >\n {/* topNavbar */}\n <Box\n ref={topNavbarRef}\n className={cn(\n \"oui-scaffold-topNavbar oui-bg-base-9\",\n classNames?.topNavbar,\n )}\n >\n {topBar ?? <MainNavWidget {...mainNavProps} />}\n </Box>\n <div\n className={cn(\n \"oui-scaffold-container\",\n \"oui-relative oui-h-full\",\n // 1024px - 6px (scrollbar widt) = 1018px\n \"oui-min-w-[1018px]\",\n classNames?.container,\n )}\n >\n <Box px={2} ref={announcementRef}>\n <RestrictedInfoWidget\n className={cn(\n \"oui-scaffold-restricted-info\",\n \"oui-relative oui-z-[1]\",\n \"oui-mt-2\",\n \"oui-bg-base-9\",\n \"oui-min-w-[994px]\",\n )}\n />\n {/* <AnnouncementWidget\n className={\"oui-mx-auto oui-mt-2\"}\n hideTips={restrictedInfo?.restrictedOpen}\n /> */}\n </Box>\n {/*--------- body start ------ */}\n {!hasLeftSidebar ? (\n // ----------No leftSidebar layout start ---------\n <Box height=\"100%\" className={cn(classNames?.content)}>\n {children}\n </Box>\n ) : (\n // ----------No leftSidebar layout end ---------\n // ---------- left & body layout start ---------\n <Grid\n className={cn(\n \"oui-box-content oui-flex oui-transition-all xl:oui-grid\",\n \"oui-min-h-full oui-flex-1\",\n classNames?.body,\n )}\n style={{\n gridTemplateColumns: `${\n expand\n ? `${sideBarExpandWidth}px`\n : `${sideBarCollaspedWidth}px`\n } 1fr`,\n // gridTemplateRows: \"auto 1fr\",\n // gridTemplateAreas: `\"left main\" \"left main\"`,\n }}\n >\n <div className={cn(classNames?.leftSidebar)}>\n {isValidElement<any>(leftSidebar) ? (\n leftSidebar\n ) : (\n <SideNavbarWidget {...leftSideProps} />\n )}\n </div>\n <Box\n width={\"100%\"}\n className={cn(\"oui-overflow-hidden\", classNames?.content)}\n >\n {children}\n </Box>\n </Grid>\n // ---------- left & body layout end ---------\n )}\n </div>\n\n {/* footer */}\n <Box\n ref={footerRef}\n className={cn(\n \"oui-scaffold-footer oui-w-full oui-bg-base-10\",\n \"oui-fixed oui-bottom-0 oui-z-50\",\n \"oui-border-t oui-border-line-12\",\n classNames?.footer,\n )}\n >\n {footer || <FooterWidget {...footerProps} />}\n </Box>\n <NotificationWidget />\n </div>\n );\n};\n","import React, { useContext, useMemo } from \"react\";\nimport {\n OrderlyContext,\n useChains,\n useMemoizedFn,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAnnouncement } from \"@kodiak-finance/orderly-ui-notification\";\nimport { checkChainSupport } from \"../../utils/chain\";\nimport { ScaffoldContext, ScaffoldState } from \"./scaffoldContext\";\n\nexport type ScaffoldProviderProps = Omit<\n ScaffoldState,\n \"checkChainSupport\" | \"announcementState\"\n>;\n\nexport const ScaffoldProvider: React.FC<\n React.PropsWithChildren<ScaffoldProviderProps>\n> = (props) => {\n const {\n routerAdapter,\n expanded,\n setExpand,\n topNavbarHeight,\n footerHeight,\n announcementHeight,\n children,\n } = props;\n\n const [chains] = useChains();\n\n const { networkId } = useContext<any>(OrderlyContext);\n\n const announcementState = useAnnouncement();\n\n // console.log(\"announcementState\", announcementState);\n\n const checkChainSupportHandle = useMemoizedFn((chainId: number | string) => {\n return checkChainSupport(\n chainId,\n networkId === \"testnet\" ? chains.testnet : chains.mainnet,\n );\n });\n\n const memoizedValue = useMemo<ScaffoldState>(() => {\n return {\n routerAdapter: routerAdapter,\n expanded: expanded,\n setExpand: setExpand,\n checkChainSupport: checkChainSupportHandle,\n topNavbarHeight: topNavbarHeight,\n footerHeight: footerHeight,\n announcementHeight: announcementHeight,\n announcementState: announcementState,\n };\n }, [\n routerAdapter,\n expanded,\n setExpand,\n checkChainSupportHandle,\n topNavbarHeight,\n footerHeight,\n announcementHeight,\n announcementState,\n ]);\n\n return (\n <ScaffoldContext.Provider value={memoizedValue}>\n {children}\n </ScaffoldContext.Provider>\n );\n};\n","import { API } from \"@kodiak-finance/orderly-types\";\n\nexport function checkChainSupport(\n chainId: number | string,\n chains: API.Chain[]\n) {\n if (typeof chainId === \"string\") {\n chainId = parseInt(chainId);\n }\n return chains.some((chain) => {\n return chain.network_infos.chain_id === chainId;\n });\n}\n","import React, { PropsWithChildren, ReactNode } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { BottomNavProps } from \"../bottomNav/bottomNav.widget\";\nimport { FooterProps } from \"../footer\";\nimport { LeftNavProps } from \"../leftNav\";\nimport { MainNavWidgetProps } from \"../main/mainNav.widget\";\nimport { SideBarProps } from \"../sidebar\";\nimport { MobileScaffold } from \"./scaffold.mobile.ui\";\nimport { useScaffoldScript } from \"./scaffold.script\";\nimport { DesktopScaffold } from \"./scaffold.ui\";\nimport { ScaffoldProvider } from \"./scaffoldProvider\";\n\nexport type ScaffoldProps = {\n /**\n * custom left sidebar component, only works on desktop\n * if provided, the layout will use this component over the default sidebar component\n */\n leftSidebar?: ReactNode;\n /**\n * custom left sidebar props, only works on desktop\n */\n leftSideProps?: SideBarProps;\n /**\n * custom left nav props, only works on mobile\n */\n leftNavProps?: LeftNavProps;\n /**\n * custom top bar component\n */\n topBar?: ReactNode;\n /**\n * custom top nav props\n */\n mainNavProps?: MainNavWidgetProps;\n /**\n * custom bottom nav component, only works on mobile\n */\n bottomNav?: ReactNode;\n /**\n * custom bottom nav component, only works on mobile\n */\n bottomNavProps?: BottomNavProps;\n /**\n * custom footer component, only works on desktop\n */\n footer?: ReactNode;\n /**\n * custom footer props, only works on desktop\n */\n footerProps?: FooterProps;\n routerAdapter?: RouterAdapter;\n classNames?: {\n // root = topNavbar + container + footer\n root?: string;\n container?: string;\n content?: string;\n // body = leftSidebar + content\n body?: string;\n leftSidebar?: string;\n topNavbar?: string;\n footer?: string;\n bottomNav?: string;\n };\n};\n\nexport const Scaffold: React.FC<PropsWithChildren<ScaffoldProps>> = (props) => {\n const state = useScaffoldScript(props);\n\n const renderContent = () => {\n if (state.isMobile) {\n return (\n <MobileScaffold {...props} {...state}>\n {props.children}\n </MobileScaffold>\n );\n }\n\n return (\n <DesktopScaffold {...props} {...state}>\n {props.children}\n </DesktopScaffold>\n );\n };\n\n return (\n <ScaffoldProvider\n routerAdapter={props.routerAdapter}\n expanded={state.expand}\n setExpand={state.setExpand}\n topNavbarHeight={state.topNavbarHeight}\n footerHeight={state.footerHeight}\n announcementHeight={state.announcementHeight}\n >\n {renderContent()}\n </ScaffoldProvider>\n );\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { cn, Divider, Flex, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { WalletConnectButtonExtension } from \"../accountMenu/menu.widget\";\nimport { AccountSummaryWidget } from \"../accountSummary\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport { LanguageSwitcherWidget } from \"../languageSwitcher\";\nimport { MessageCenterWidget } from \"../messageCenter/msgCenter.widget\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport { CampaignButton } from \"./campaignButton\";\nimport { LinkDeviceWidget } from \"./linkDevice\";\nimport { MainLogo } from \"./mainLogo\";\nimport { MainNavMenusExtension } from \"./mainMenus/mainNavMenus.widget\";\nimport { CampaignPositionEnum, MainNavScriptReturn } from \"./mainNav.script\";\n\nexport const MainNav: FC<PropsWithChildren<MainNavScriptReturn>> = (props) => {\n const { className, classNames, campaigns, campaignPosition } = props;\n\n const showCampaignButton =\n campaignPosition === CampaignPositionEnum.navTailing && campaigns;\n\n const showLinkIcon =\n !props.wrongNetwork &&\n !props.disabledConnect &&\n props.status! >= AccountStatusEnum.SignedIn;\n\n const showSubAccount = props.status! >= AccountStatusEnum.EnableTrading;\n\n const hideWalletConnectButton =\n !props.disabledConnect && props.wrongNetwork && props.isConnected;\n\n const { isDesktop } = useScreen();\n\n const children = useMemo(() => {\n if (typeof props.children === \"undefined\") {\n return null;\n }\n return <Flex grow>{props.children}</Flex>;\n }, [props.children]);\n\n const showChainMenu = isDesktop;\n\n const renderContent = () => {\n const title = <MainLogo {...props.logo} />;\n const accountSummary = <AccountSummaryWidget />;\n const linkDevice = showLinkIcon && <LinkDeviceWidget />;\n const languageSwitcher = <LanguageSwitcherWidget />;\n const subAccount = showSubAccount && <SubAccountWidget />;\n const chainMenu = showChainMenu && <ChainMenuWidget />;\n const notify = <MessageCenterWidget />;\n const walletConnect = !hideWalletConnectButton && (\n <WalletConnectButtonExtension />\n );\n\n const mainNav = (\n <>\n <MainNavMenusExtension\n {...props.mainMenus}\n classNames={classNames?.mainNav}\n />\n {!!showCampaignButton && (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n )}\n </>\n );\n\n if (typeof props.customRender === \"function\") {\n return props.customRender?.({\n title,\n mainNav,\n accountSummary,\n linkDevice,\n languageSwitcher,\n subAccount,\n chainMenu,\n notify,\n walletConnect,\n });\n }\n\n return (\n <>\n <Flex\n itemAlign={\"center\"}\n className={cn(\n \"oui-gap-3\",\n // let the left and right views show spacing when overlapping\n \"oui-overflow-hidden\",\n )}\n >\n {title}\n {props.leading}\n {mainNav}\n {props.trailing}\n </Flex>\n\n {children}\n\n <Flex itemAlign={\"center\"} className=\"oui-gap-2\">\n {accountSummary}\n {showLinkIcon && (\n <>\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n {linkDevice}\n </>\n )}\n {notify}\n {languageSwitcher}\n {subAccount}\n {chainMenu}\n {walletConnect}\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n width=\"100%\"\n as=\"header\"\n itemAlign={\"center\"}\n height={\"48px\"}\n justify={\"between\"}\n px={3}\n gapX={3}\n className={cn(\n \"oui-main-nav oui-font-semibold oui-border-0 lg:oui-border-b-white/[0.12] lg:oui-border-b\",\n className,\n classNames?.root,\n )}\n >\n {renderContent()}\n </Flex>\n );\n};\n\nMainNav.displayName = \"MainNav\";\n","import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Popover,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype AccountSummaryUi = {\n totalValue: number | null;\n freeCollateral: number | null;\n maxLeverage?: number | null;\n currentLeverage: number | null;\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n onKeyToTop: (key: string) => void;\n};\n\n//----------------- TotalValue -----------------\nconst TotalValue: FC<{\n totalValue: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n totalValue = 0,\n visible = true,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"common.totalValue\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n\n <Text intensity={54}>≈</Text>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n as=\"div\"\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- FreeCollateral -----------------\nconst FreeCollateral: FC<{\n freeCollateral?: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n freeCollateral,\n visible,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"trading.asset.freeCollateral\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n {/* <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Free collateral\n </Text>\n </Box> */}\n <Text.numeral\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n visible={visible}\n as=\"div\"\n >\n {freeCollateral ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- CurrentLeverage -----------------\nconst CurrentLeverage: FC<{\n currentLeverage: number | null;\n}> = (props) => {\n const { currentLeverage } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"leverage.currentLeverage\")}\n </Text>\n </Box>\n <Text.numeral as={\"div\"} unit=\"x\">\n {currentLeverage ?? 0}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- UnrealPnL -----------------\nconst UnrealPnL: FC<{\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const { visible, onToggleVisibility, visibleAvailable = true } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"common.unrealizedPnl\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n <Text.numeral\n as={\"div\"}\n coloring\n showIdentifier\n weight={\"semibold\"}\n visible={visible}\n suffix={\n <Text.numeral coloring prefix={\"(\"} suffix={\")\"} rule={\"percentages\"}>\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.numeral>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- AccountInfoPopover -----------------\nconst AccountInfoPopover = (props: {\n totalValue: number | null;\n freeCollateral: number | null;\n // maxLeverage?: number | null;\n currentLeverage: number | null;\n unrealPnL: number | null;\n unrealized_pnl_ROI: number | null;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n visible?: boolean;\n onKeyToTop: (key: string) => void;\n}) => {\n const { totalValue, keys, elementKeys } = props;\n const { t } = useTranslation();\n\n const onSetToTop = (key: SummaryKey) => (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n props.onKeyToTop(key);\n };\n\n const elements = elementKeys.map((key) => {\n switch (key) {\n case \"totalValue\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"totalValue\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"totalValue\")}\n onClick={() => props.onToggleItemByKey(\"totalValue\")}\n />\n <span>{t(\"common.totalValue\")}</span>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"freeCollateral\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"freeCollateral\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"freeCollateral\")}\n onClick={() => props.onToggleItemByKey(\"freeCollateral\")}\n />\n <span>{t(\"trading.asset.freeCollateral\")}</span>\n </Flex>\n <Text.numeral\n unit=\"USDC\"\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {props.freeCollateral ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"unrealPnL\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"unrealPnL\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"unrealPnL\")}\n onClick={() => props.onToggleItemByKey(\"unrealPnL\")}\n />\n <span>{t(\"common.unrealizedPnl\")}</span>\n </Flex>\n <Text.pnl\n coloring\n showIdentifier\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n suffix={\n <Text.roi\n coloring\n prefix={\"(\"}\n visible={props.visible}\n suffix={\")\"}\n rule={\"percentages\"}\n >\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.roi>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.pnl>\n </DropdownMenu>\n );\n case \"currentLeverage\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"currentLeverage\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"currentLeverage\")}\n onClick={() => props.onToggleItemByKey(\"currentLeverage\")}\n />\n <span>{t(\"leverage.currentLeverage\")}</span>\n </Flex>\n <Text.numeral\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unit=\"x\"\n >\n {props.currentLeverage ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n\n default:\n return null;\n }\n });\n\n return (\n <Flex\n className={\"oui-text-2xs oui-font-semibold\"}\n direction={\"column\"}\n gapY={1}\n >\n {elements}\n </Flex>\n );\n};\n\nconst DropdownMenu: FC<\n PropsWithChildren<{\n onSetTop: (event: React.MouseEvent) => void;\n }>\n> = (props) => {\n return (\n <div className=\"oui-group oui-relative oui-w-full oui-rounded oui-px-[6px] oui-py-1 hover:oui-bg-base-6\">\n <Flex justify={\"between\"} width={\"100%\"}>\n {props.children}\n </Flex>\n <button\n className=\"oui-absolute oui-right-1 oui-top-1\"\n onClick={props.onSetTop}\n >\n <svg\n className=\"oui-translate-x-3 oui-cursor-pointer oui-opacity-0 oui-transition-all group-hover:oui-translate-x-0 group-hover:oui-opacity-100 oui-group/icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"16\"\n height=\"16\"\n rx=\"2\"\n // fill=\"rgb(var(--oui-color-primary-darken))\"\n className=\"oui-fill-primary-darken\"\n />\n <path\n // fill=\"rgb(var(--oui-color-primary-contrast))\"\n className=\"oui-fill-primary-contrast/50 group-hover/icon:oui-fill-primary-contrast\"\n d=\"M3.507 3.999a.5.5 0 1 0 0 1h9a.5.5 0 0 0 0-1zm4 8.006a.5.5 0 0 0 1 0V7.724l1.5 1.484.703-.703-2.343-2.36a.515.515 0 0 0-.72 0l-2.343 2.36.703.703 1.5-1.484z\"\n />\n </svg>\n </button>\n </div>\n );\n};\n\nconst IdentityButton = (props: {\n active: boolean;\n onClick: React.MouseEventHandler;\n}) => {\n return (\n <button onClick={props.onClick}>\n {props.active ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977\"\n fill=\"currentcolor\"\n className={\"oui-text-primary-light\"}\n />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977m.193 1.027c.531.098 1.066.45 1.447.83.381.382.706.848.84 1.459-.477.458-.77.494-1.247.243a.5.5 0 0 0-.583.087c-.91.91-1.15 1.736-1.15 2.85 0 .97-.057 1.33-.36 1.655-.085.092-.203.078-.281 0L2.849 5.615a.18.18 0 0 1-.012-.255c.178-.217.576-.386 1.669-.386 1.306.001 2-.335 2.859-1.14a.5.5 0 0 0 .094-.578c-.257-.513-.217-.784.24-1.252\"\n fill=\"currentcolor\"\n />\n </svg>\n )}\n </button>\n );\n};\n\ntype SummaryKey =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\";\n\nexport type AccountSummaryList = Array<SummaryKey>;\nconst AccountSummaryItems: Record<SummaryKey, JSX.ElementType> = {\n totalValue: TotalValue,\n freeCollateral: FreeCollateral,\n unrealPnL: UnrealPnL,\n currentLeverage: CurrentLeverage,\n};\n\nexport const AccountSummary: React.FC<AccountSummaryUi> = (props) => {\n const { keys, ...rest } = props;\n let canToggleIndex = 0;\n const sizeRef = React.useRef(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n if (Array.isArray(entries) && entries.length > 0) {\n const width = entries[0].contentRect.width;\n if (width > 1556) {\n sizeRef.current = 5;\n } else if (width > 1480) {\n sizeRef.current = 4;\n } else if (width > 1366) {\n sizeRef.current = 3;\n } else if (width > 1280) {\n sizeRef.current = 2;\n } else if (width > 1180) {\n sizeRef.current = 1;\n } else {\n sizeRef.current = 0;\n }\n }\n });\n\n resizeObserver.observe(document.body);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const elements = keys.slice(0, sizeRef.current).map((key, index) => {\n switch (key) {\n case \"freeCollateral\": {\n return (\n <FreeCollateral\n freeCollateral={props.freeCollateral}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n\n case \"unrealPnL\":\n return (\n <UnrealPnL\n unrealPnL={props.unrealPnL}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n case \"currentLeverage\": {\n canToggleIndex++;\n return <CurrentLeverage currentLeverage={props.currentLeverage} />;\n }\n case \"totalValue\":\n default:\n return (\n <TotalValue\n totalValue={props.totalValue}\n onToggleVisibility={props.onToggleVisibility}\n visible={props.visible}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n });\n\n return (\n <div className=\"oui-flex oui-items-center oui-gap-6\">\n <Items elements={elements} />\n <Popover\n content={\n <AccountInfoPopover\n totalValue={rest.totalValue}\n freeCollateral={props.freeCollateral}\n currentLeverage={props.currentLeverage}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n unrealPnL={props.unrealPnL}\n keys={keys}\n elementKeys={props.elementKeys}\n onToggleItemByKey={props.onToggleItemByKey}\n onKeyToTop={props.onKeyToTop}\n visible={props.visible}\n />\n }\n contentProps={{\n onOpenAutoFocus: (event) => event.preventDefault(),\n sideOffset: 12,\n className: \"oui-p-1\",\n }}\n arrow\n >\n <div className=\"oui-cursor-pointer oui-group\">\n <Dot />\n </div>\n </Popover>\n </div>\n );\n};\n\nconst Items: FC<{\n elements: JSX.Element[];\n}> = (props) => {\n return (\n <div className=\"oui-flex oui-gap-6\">\n {props.elements.map((Element, index) => (\n <div key={index}>{Element}</div>\n ))}\n </div>\n );\n};\n\nconst Dot = () => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-36 hover:oui-fill-primary-light group-data-[state=open]:oui-fill-primary-light\"\n >\n <path d=\"M10.007 8.335a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m-5.84 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m11.666 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333\" />\n </svg>\n );\n};\n","import { useState } from \"react\";\nimport {\n useLeverage,\n useLocalStorage,\n useMarginRatio,\n usePositionStream,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useCollateral, useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport type AccountSummaryType =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport const useTotalValueBuilderScript = () => {\n const [keys, setKeys] = useLocalStorage<string[]>(\"accountSummaryTypes\", [\n \"totalValue\",\n ]);\n\n const [elementKeys, setElementKeys] = useState<string[]>([\n \"totalValue\",\n \"freeCollateral\",\n \"unrealPnL\",\n \"currentLeverage\",\n \"maxLeverage\",\n ]);\n\n const { freeCollateral, totalValue } = useCollateral({ dp: 2 });\n\n const { state } = useAccount();\n\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n\n const [{ aggregated, totalUnrealizedROI }] = usePositionStream();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const { currentLeverage } = useMarginRatio();\n\n const { maxLeverage } = useLeverage();\n\n const onToggleItemByKey = (key: string) => {\n if (keys.includes(key)) {\n setKeys(keys.filter((k: string) => k !== key));\n } else {\n setKeys([...keys, key]);\n }\n };\n\n const onKeyToTop = (key: string) => {\n if (!keys.includes(key)) {\n setKeys([key, ...keys]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n return;\n }\n\n setKeys([key, ...keys.filter((k: string) => k !== key)]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n };\n\n const unavailable =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n totalValue: unavailable ? null : totalValue,\n freeCollateral: unavailable ? null : freeCollateral,\n maxLeverage: unavailable ? null : maxLeverage,\n currentLeverage: unavailable ? null : currentLeverage,\n unrealPnL: unavailable ? null : aggregated?.total_unreal_pnl,\n unrealized_pnl_ROI: unavailable ? null : totalUnrealizedROI,\n // type,\n keys,\n elementKeys,\n // onTypeChange,\n visible,\n wrongNetwork,\n onToggleItemByKey,\n onKeyToTop,\n onToggleVisibility: () => setVisible(!visible),\n };\n};\n\nexport type UseTotalValueBuilderScript = ReturnType<\n typeof useTotalValueBuilderScript\n>;\n","import React from \"react\";\nimport { AccountSummary } from \"./accountSummary.ui\";\nimport type { AccountSummaryList } from \"./accountSummary.ui\";\nimport { useTotalValueBuilderScript } from \"./useWidgetBuilder.script\";\n\nexport const AccountSummaryWidget: React.FC = () => {\n const state = useTotalValueBuilderScript();\n return (\n <AccountSummary\n {...state}\n elementKeys={state.elementKeys as AccountSummaryList}\n />\n );\n};\n","import { FC, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport {\n BellIcon,\n DialogHeader,\n DialogBody,\n DialogContent,\n Dialog,\n Popover,\n Divider,\n DialogTitle,\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipContent,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AnnouncementCenterUI } from \"@kodiak-finance/orderly-ui-notification\";\nimport { useScaffoldContext } from \"../scaffold\";\n\n/**\n * Notify bell with Popover (click) + Tooltip (hover) coexisting.\n * - We control Popover open state; when Popover is open, we disable Tooltip to prevent hover/click conflicts.\n * - Both triggers use `asChild` and stack on the same real DOM element to avoid extra wrappers.\n */\nexport const MessageCenter: FC<{\n maintenanceDialogInfo?: string;\n messages: API.AnnouncementRow[];\n showAnnouncement: boolean;\n closeTips: () => void;\n}> = (props) => {\n const { maintenanceDialogInfo, messages, showAnnouncement, closeTips } =\n props;\n const { routerAdapter } = useScaffoldContext();\n const { t } = useTranslation();\n const messageSize = useMemo(() => messages.length, [messages]);\n // Track Popover open to suppress Tooltip while the popover is visible\n const [popoverOpen, setPopoverOpen] = useState(false);\n\n const onItemClick = (url: string) => {\n if (!url) return;\n routerAdapter?.onRouteChange({\n href: url,\n name: url,\n target: \"_blank\",\n });\n };\n\n return (\n <>\n {!!maintenanceDialogInfo && (\n <Dialog open>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[320px] lg:oui-w-auto\"\n >\n <DialogHeader>\n <DialogTitle>{t(\"maintenance.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-2xs lg:oui-text-xs\">\n {maintenanceDialogInfo}\n </DialogBody>\n </DialogContent>\n </Dialog>\n )}\n <TooltipProvider delayDuration={250}>\n {/* When the Popover is open, force Tooltip closed to avoid dual overlays */}\n <TooltipRoot open={popoverOpen ? false : undefined}>\n <Popover\n open={popoverOpen}\n onOpenChange={(open) => {\n setPopoverOpen(open);\n if (open) {\n closeTips();\n }\n }}\n arrow\n content={\n <AnnouncementCenterUI\n dataSource={messages}\n onItemClick={onItemClick}\n />\n }\n contentProps={{\n align: \"end\",\n className: \"oui-w-[360px] oui-shadow-xl oui-p-0\",\n }}\n >\n {/* Stack TooltipTrigger and PopoverTrigger (via Popover's asChild) on the same element */}\n <TooltipTrigger asChild>\n <div className=\"oui-relative oui-flex oui-cursor-pointer oui-items-center oui-justify-center\">\n <BellIcon\n color=\"white\"\n opacity={0.8}\n size={20}\n viewBox=\"0 0 20 20\"\n className=\"hover:oui-opacity-100\"\n />\n {messageSize > 0 && showAnnouncement && (\n <div className=\"oui-absolute -oui-right-[6px] -oui-top-[6px] oui-flex oui-size-4 oui-items-center oui-justify-center oui-rounded-full oui-bg-primary-darken oui-text-[10px] oui-leading-none\">\n {messageSize}\n </div>\n )}\n </div>\n </TooltipTrigger>\n </Popover>\n <TooltipContent side=\"bottom\">\n {t(\"ui.messageCenter.tooltip\")}\n </TooltipContent>\n </TooltipRoot>\n </TooltipProvider>\n </>\n );\n};\n","import React, {\n cloneElement,\n FC,\n HTMLAttributeAnchorTarget,\n PropsWithChildren,\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useAccount, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport {\n ChevronDownIcon,\n PopoverContent,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport {\n Box,\n cn,\n PopoverAnchor,\n PopoverRoot,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\nconst ActiveIcon: React.FC = () => (\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n >\n <path\n d=\"M2.913 4.515a.5.5 0 0 0-.328.202.51.51 0 0 0 .14.701L5.722 7.41a.51.51 0 0 0 .562 0l2.995-1.992a.51.51 0 0 0 .14-.7.51.51 0 0 0-.701-.14L6.002 6.382 3.287 4.577a.5.5 0 0 0-.374-.062\"\n fill=\"url(#mainNavDropDownIcon)\"\n />\n <defs>\n <linearGradient\n id=\"mainNavDropDownIcon\"\n x1=\"9.502\"\n y1=\"5.994\"\n x2=\"2.502\"\n y2=\"5.994\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop stopColor=\"rgb(var(--oui-gradient-brand-start))\" offset={1} />\n </linearGradient>\n </defs>\n </svg>\n);\n\nexport type MainNavItem = {\n id?: string;\n testid?: string;\n name: string;\n label?: string;\n href: string;\n target?: HTMLAttributeAnchorTarget;\n icon?: string | React.ReactElement;\n activeIcon?: string | React.ReactElement;\n tag?: string;\n description?: string;\n disabled?: boolean;\n children?: MainNavItem[];\n className?: string;\n asChild?: boolean;\n\n /**\n * if true, the item will be shown as a submenu in mobile\n */\n isSubMenuInMobile?: boolean;\n /**\n * if provided, the item is a submenu in mobile, and this will be the a back nav\n */\n subMenuBackNav?: {\n name: string;\n href: string;\n };\n /**\n * if true, the item will be shown as a home page in mobile\n */\n isHomePageInMobile?: boolean;\n customRender?: (option: {\n name: string;\n href: string;\n isActive?: boolean;\n }) => React.ReactNode;\n /**\n * Custom submenu renderer - provides full control over submenu content\n * Renders as a free-form component without any predefined structure\n * @returns React node to render as submenu content\n */\n customSubMenuRender?: () => React.ReactNode;\n /**\n * if true, this item will only be shown in the main account\n * @default false\n **/\n onlyInMainAccount?: boolean;\n tooltipConfig?: {\n /**\n * if true, the tooltip will be shown on first visit\n */\n showOnFirstVisit?: boolean;\n /**\n * the text to show in the tooltip\n */\n text?: string;\n };\n};\n\nconst isObject = (value: any): value is object => {\n return !!value && value.constructor === Object;\n};\n\nconst ORDERLY_NAV_BUTTON_TOOLTIP_OPEN = \"ORDERLY_NAV_BUTTON_TOOLTIP_OPEN\";\n\nexport const NavItem: FC<\n Omit<React.HTMLAttributes<HTMLButtonElement>, \"onClick\"> & {\n item: MainNavItem;\n onClick?: (item: MainNavItem[]) => void;\n // active?: boolean;\n currentPath?: string[];\n classNames?: {\n navItem?: string;\n subMenu?: string;\n };\n }\n> = (props) => {\n const { classNames, currentPath, item, onClick, ...buttonProps } = props;\n\n const { customRender, tooltipConfig, onlyInMainAccount } = item;\n\n const { isMainAccount } = useAccount();\n\n const [showButtonTooltip, setShowButtonTooltip] = useLocalStorage(\n ORDERLY_NAV_BUTTON_TOOLTIP_OPEN,\n true,\n );\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (showButtonTooltip) {\n timerRef.current = setTimeout(() => {\n setShowButtonTooltip(false);\n }, 8000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [showButtonTooltip]);\n\n const isActive = useMemo(\n () => currentPath?.[0] === item.href,\n [currentPath, item.href],\n );\n\n const hasSubMenu =\n Array.isArray(item.children) ||\n typeof item.customSubMenuRender === \"function\";\n const hasCustomSubMenuRender = typeof item.customSubMenuRender === \"function\";\n\n const onClickHandler = useCallback(() => {\n if (hasSubMenu && !hasCustomSubMenuRender) {\n return;\n }\n onClick?.([item]);\n }, [hasSubMenu, hasCustomSubMenuRender, item, onClick]);\n\n const buttonRender = () => {\n if (typeof customRender === \"function\") {\n return customRender({\n name: item.name,\n href: item.href,\n isActive,\n });\n }\n const button = (\n <button\n id={item.id}\n data-testid={item.testid}\n {...buttonProps}\n disabled={item.disabled}\n data-actived={isActive}\n className={cn(\n \"oui-group oui-relative oui-h-[32px] oui-rounded oui-px-3 oui-py-1 oui-text-sm oui-text-base-contrast-36 hover:oui-bg-base-7\",\n item.className,\n classNames?.navItem,\n )}\n onClick={onClickHandler}\n >\n <span className={\"oui-flex oui-items-center\"}>\n <ItemIcon isActive={isActive} item={item} />\n <Text.gradient\n color={isActive ? \"brand\" : \"inherit\"}\n angle={45}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {item.label ?? item.name}\n </Text.gradient>\n {hasSubMenu && (\n <span className={\"oui-ml-1 group-data-[open=true]:oui-rotate-180\"}>\n {isActive ? (\n <ActiveIcon />\n ) : (\n <ChevronDownIcon size={12} color={\"white\"} />\n )}\n </span>\n )}\n </span>\n <Box\n invisible={!isActive}\n position=\"absolute\"\n bottom={0}\n left={\"50%\"}\n height={\"3px\"}\n r=\"full\"\n width={\"calc(100% - 24px)\"} // oui-px-3 * 2\n gradient=\"brand\"\n angle={45}\n className=\"-oui-translate-x-1/2 \"\n />\n </button>\n );\n\n if (isObject(tooltipConfig) && tooltipConfig.showOnFirstVisit) {\n return (\n <Tooltip\n open={showButtonTooltip}\n content={tooltipConfig.text}\n className={\n \"oui-w-64 oui-max-w-64 oui-bg-base-6 oui-text-2xs oui-font-semibold\"\n }\n >\n {button}\n </Tooltip>\n );\n }\n return button;\n };\n\n if (onlyInMainAccount && !isMainAccount) {\n return null;\n }\n\n if (!hasSubMenu) {\n return buttonRender();\n }\n\n return (\n <SubMenus\n items={item.children || []}\n className={classNames?.subMenu}\n current={currentPath?.[1]}\n onItemClick={(subItem: MainNavItem) => {\n onClick?.([item, subItem]);\n }}\n customSubMenuRender={item.customSubMenuRender}\n >\n {buttonRender()}\n </SubMenus>\n );\n};\n\nconst SubMenus: React.FC<\n PropsWithChildren<{\n items: MainNavItem[];\n className?: string;\n current?: string;\n onItemClick: (item: MainNavItem) => void;\n customSubMenuRender?: () => React.ReactNode;\n }>\n> = (props) => {\n const {\n children,\n items,\n className,\n current,\n onItemClick,\n customSubMenuRender,\n } = props;\n const [open, setOpen] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onMouseEnter = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n // setOpen(true);\n }, []);\n\n useEffect(() => {\n return () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n };\n }, []);\n\n const classNames = (children as ReactElement).props?.className;\n\n return (\n <PopoverRoot open={open}>\n <PopoverAnchor>\n <div\n className={\"oui-group\"}\n data-open={open}\n onMouseEnter={() => {\n setOpen(true);\n }}\n onMouseLeave={() => {\n timer.current = setTimeout(() => {\n setOpen(false);\n }, 150);\n }}\n >\n {cloneElement(children as React.ReactElement<any>, {\n className: cn(classNames, open && \"oui-bg-base-7\"),\n })}\n </div>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={() => {\n setOpen(false);\n if (timer.current) {\n clearTimeout(timer.current);\n }\n }}\n className={cn(\n customSubMenuRender\n ? \"oui-w-auto oui-p-0 oui-border-0 oui-rounded-lg\"\n : \"oui-w-[200px] oui-space-y-[2px] oui-border oui-border-line-6 oui-p-1\",\n className,\n )}\n >\n {customSubMenuRender\n ? customSubMenuRender()\n : items.map((item, index) => {\n return (\n <SubMenu\n key={index}\n item={item}\n onClick={onItemClick}\n active={item.href === current}\n />\n );\n })}\n </PopoverContent>\n </PopoverRoot>\n );\n};\n\nconst SubMenu: React.FC<{\n item: MainNavItem;\n active?: boolean;\n onClick: (item: MainNavItem) => void;\n}> = (props) => {\n const { item, active, onClick } = props;\n const hasDescription = typeof item.description !== \"undefined\";\n const hasIcon = typeof item.icon !== \"undefined\" && item.icon !== null;\n return (\n <Flex\n px={2}\n py={3}\n gapX={2}\n data-active={active ?? false}\n itemAlign={hasDescription ? \"start\" : \"center\"}\n className={cn(\n \"oui-group oui-w-full oui-cursor-pointer oui-text-base-contrast-80 hover:oui-bg-base-6 data-[active=true]:oui-bg-base-5\",\n // props.active && \"oui-bg-base-5\"\n )}\n r={\"md\"}\n onClick={() => {\n onClick(item);\n }}\n data-testid={item.testid}\n >\n {hasIcon && (\n <div\n className={cn(\n \"oui-relative oui-size-6\",\n hasDescription && \"oui-translate-y-1\",\n )}\n >\n <ItemIcon isActive={active ?? false} item={item} />\n </div>\n )}\n <div className=\"oui-flex-1\">\n <SubMenuTitle item={item} isActive={active} />\n {hasDescription && (\n <Text size={\"2xs\"} as={\"div\"} intensity={36}>\n {item.description}\n </Text>\n )}\n </div>\n </Flex>\n );\n};\n\nconst SubMenuTitle: React.FC<{ item: MainNavItem; isActive?: boolean }> = (\n props,\n) => {\n const { item, isActive } = props;\n return (\n <Flex itemAlign={\"center\"} width={\"100%\"} position=\"relative\">\n <div className=\"oui-flex oui-flex-1\">\n <Text.gradient\n color={isActive ? \"brand\" : \"inherit\"}\n size={\"xs\"}\n as={\"div\"}\n intensity={80}\n weight={\"semibold\"}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {item.name}\n </Text.gradient>\n {typeof item.tag !== \"undefined\" && <Tag item={item} />}\n </div>\n {/* {item.target === \"_blank\" && <OutlinkIcon />} */}\n </Flex>\n );\n};\n\nconst Tag: React.FC<{ item: MainNavItem }> = (props) => {\n return (\n <div\n className={\n \"oui-ml-1 oui-inline-flex oui-rounded oui-bg-gradient-to-r oui-from-[rgb(var(--oui-gradient-brand-start)_/_0.12)] oui-to-[rgb(var(--oui-gradient-brand-end)_/_0.12)] oui-px-2 oui-py-1\"\n }\n >\n <Text.gradient\n color={\"brand\"}\n size={\"3xs\"}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {props.item.tag}\n </Text.gradient>\n </div>\n );\n};\n\nconst ICON_CLASSNAME =\n \"oui-flex oui-border oui-border-line oui-w-6 oui-h-6 oui-rounded-md oui-justify-center oui-items-center oui-absolute oui-left-0 oui-top-0\";\n\nconst ItemIcon: React.FC<{ item: MainNavItem; isActive: boolean }> = (\n props,\n) => {\n const { isActive } = props;\n if (!props.item.icon) {\n return null;\n }\n if (typeof props.item.icon === \"string\") {\n return (\n <span className={\"oui-mr-1 oui-size-[20px]\"}>\n {\n <img\n src={\n isActive\n ? (props.item.activeIcon as string) || props.item.icon\n : props.item.icon\n }\n className={\"oui-max-h-full oui-max-w-full\"}\n />\n }\n </span>\n );\n }\n // return isActive ? props.item.activeIcon || props.item.icon : props.item.icon;\n return (\n <>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"group-hover:oui-invisible group-data-[active=true]:oui-invisible\",\n )}\n >\n {props.item.icon}\n </div>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"oui-invisible group-hover:oui-visible group-data-[active=true]:oui-visible\",\n )}\n >\n {props.item.activeIcon || props.item.icon}\n </div>\n </>\n );\n};\n\nconst OutlinkIcon: React.FC = () => {\n return (\n <>\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-top-0 group-hover:oui-invisible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-invisible oui-absolute oui-right-0 oui-top-0 group-hover:oui-visible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"url(#outlineIcon)\"\n />\n <defs>\n <linearGradient\n id=\"outlineIcon\"\n x1=\"17.492\"\n y1=\"9.992\"\n x2=\"2.492\"\n y2=\"9.992\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n </>\n );\n};\n","import React, { useId } from \"react\";\n\nexport const EffectiveFee = React.forwardRef<\n SVGSVGElement,\n React.SVGAttributes<SVGSVGElement>\n>((props, ref) => {\n const linearId = useId();\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={14}\n height={14}\n viewBox=\"0 0 14 14\"\n fill=\"currentColor\"\n ref={ref}\n focusable={false}\n {...props}\n >\n <path\n d=\"M6.16411 1.53106C6.61974 1.07566 7.35888 1.07551 7.81442 1.53106L8.48833 2.20496C8.6797 2.39624 8.93064 2.51452 9.19755 2.54106L9.3132 2.54676H10.2662C10.9104 2.54691 11.4328 3.06926 11.4329 3.71343V4.66647C11.4329 4.97589 11.5559 5.27312 11.7747 5.49191L12.4492 6.16582C12.9047 6.62142 12.9047 7.36054 12.4492 7.81613L11.7753 8.49004L11.6972 8.57549C11.5272 8.78302 11.433 9.04426 11.4329 9.31491V10.2685L11.4272 10.3876C11.3715 10.9366 10.9348 11.373 10.3859 11.4289L10.2662 11.4352H9.3132L9.19755 11.4409C8.93066 11.4674 8.67969 11.5857 8.48833 11.777L7.81442 12.4509L7.72555 12.5306C7.29789 12.8795 6.68066 12.8794 6.25297 12.5306L6.16411 12.4509L5.4902 11.777C5.29887 11.5857 5.04786 11.4675 4.78097 11.4409L4.66533 11.4352H3.71171L3.59265 11.4289C3.04358 11.3731 2.60705 10.9367 2.55131 10.3876L2.54505 10.2685V9.31491C2.54499 9.04416 2.45089 8.78306 2.28072 8.57549L2.20325 8.49004L1.52934 7.81613C1.10213 7.38905 1.07534 6.71297 1.44902 6.25469L1.52934 6.16582L2.20382 5.49191C2.42248 5.27314 2.54505 4.97579 2.54505 4.66647V3.71343C2.54513 3.10945 3.00442 2.61221 3.59265 2.55246L3.71171 2.54676H4.66533L4.78097 2.54106C5.00968 2.51826 5.22694 2.4281 5.40475 2.28244L5.4902 2.20496L6.16411 1.53106ZM6.31507 3.02983C5.87756 3.46727 5.28401 3.71336 4.66533 3.71343H3.71171V4.66647C3.71171 5.28521 3.46614 5.87922 3.02869 6.31678L2.35421 6.99069L3.02812 7.6646C3.46577 8.10214 3.71164 8.69607 3.71171 9.31491V10.2685H4.66533C5.28396 10.2686 5.87757 10.5142 6.31507 10.9515L6.98898 11.6255L7.66289 10.9515C8.10045 10.5141 8.69446 10.2685 9.3132 10.2685H10.2662V9.31491C10.2663 8.69604 10.5127 8.10214 10.9504 7.6646L11.6243 6.99069L10.9498 6.31678C10.5122 5.8792 10.2662 5.28531 10.2662 4.66647V3.71343H9.3132C8.69438 3.71343 8.10047 3.46739 7.66289 3.02983L6.98898 2.35592L6.31507 3.02983ZM8.52934 4.64255C8.7571 4.41479 9.12639 4.41489 9.35421 4.64255C9.58202 4.87035 9.58202 5.23961 9.35421 5.46742L5.4657 9.35593C5.2379 9.58372 4.86863 9.58373 4.64083 9.35593C4.41318 9.12811 4.41308 8.75881 4.64083 8.53106L8.52934 4.64255ZM8.66435 7.83265C9.1245 7.83272 9.49777 8.2059 9.49777 8.66607C9.49769 9.12616 9.12445 9.49941 8.66435 9.49948C8.20419 9.49948 7.83101 9.12621 7.83094 8.66607C7.83094 8.20586 8.20415 7.83265 8.66435 7.83265ZM5.33126 4.49956C5.79141 4.49963 6.16468 4.87282 6.16468 5.33298C6.1646 5.79307 5.79136 6.16575 5.33126 6.16582C4.87111 6.16582 4.49793 5.79311 4.49785 5.33298C4.49785 4.87277 4.87106 4.49956 5.33126 4.49956Z\"\n fill={`url(#${linearId})`}\n />\n <defs>\n <linearGradient\n id={linearId}\n x1=\"12.7908\"\n y1=\"6.99084\"\n x2=\"1.1875\"\n y2=\"6.99084\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop stopColor=\"rgb(var(--oui-gradient-brand-start))\" offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n EffectiveFee.displayName = \"EffectiveFee\";\n}\n","import React from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { EffectiveFeeUI } from \"./effectiveFee.ui\";\n\nexport const EffectiveFeesWidget: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n return <EffectiveFeeUI {...props} />;\n};\n","import React from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\n\nexport const RegularFeesUI: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n const { t } = useTranslation();\n const { taker, maker } = props;\n\n const originalTrailingFees = (\n <Flex itemAlign=\"center\" justify=\"between\" width={\"100%\"} gap={1}>\n <Flex width={\"100%\"} itemAlign=\"center\" justify={\"between\"}>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"common.fees\")}\n </Text>\n <AuthGuard\n fallback={() => (\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}: --% / {t(\"dmm.maker\")}: --%\n </Text>\n )}\n >\n <Flex gap={1}>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {taker}\n </Text>\n <Text size=\"2xs\">/</Text>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.maker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {maker}\n </Text>\n </Flex>\n </AuthGuard>\n </Flex>\n </Flex>\n );\n\n return originalTrailingFees;\n};\n","import React from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { RegularFeesUI } from \"./regularFees.ui\";\n\nexport const RegularFeesWidget: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n return <RegularFeesUI {...props} />;\n};\n","import { useRef } from \"react\";\nimport { useBoolean } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n EditIcon,\n Flex,\n Text,\n SimpleDialog,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\nimport { SlippageEditor } from \"./slippageEditor\";\n\nexport const SlippageCell = (props: {\n slippage: string;\n setSlippage: (slippage: string) => void;\n estSlippage: number | null;\n}) => {\n const { t } = useTranslation();\n const [open, { setTrue: setOpen, setFalse: setClose, toggle }] =\n useBoolean(false);\n\n const { isMobile } = useScreen();\n const slippageRef = useRef<{ getValue: () => number | undefined }>(null);\n\n const onConfirm = () => {\n const val = slippageRef.current?.getValue();\n\n props.setSlippage(!val ? \"1\" : val.toString());\n setClose();\n return Promise.resolve(true);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={toggle}\n title={t(\"common.settings\")}\n contentProps={{ size: isMobile ? \"xs\" : \"sm\" }}\n actions={{\n primary: {\n disabled: false,\n label: t(\"common.save\"),\n onClick: onConfirm,\n },\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => setClose(),\n },\n }}\n >\n <SlippageEditor\n ref={slippageRef}\n isMobile={isMobile}\n initialValue={props.slippage ? Number(props.slippage) : undefined}\n />\n </SimpleDialog>\n <Flex justify={\"between\"}>\n <Text size=\"2xs\">{t(\"orderEntry.slippage\")}</Text>\n <AuthGuard\n fallback={() => (\n <Text size=\"2xs\">\n {t(\"orderEntry.slippage.est\")}: -% / {t(\"common.max\")}: --%\n </Text>\n )}\n >\n <Flex gap={1}>\n <Text.numeral\n size=\"2xs\"\n rule=\"percentages\"\n prefix={`${t(\"orderEntry.slippage.est\")}: `}\n suffix={` / ${t(\"common.max\")}: `}\n >\n {props.estSlippage ?? 0}\n </Text.numeral>\n <button className=\"oui-text-2xs\" onClick={() => setOpen()}>\n <Flex className=\"oui-gap-0.5\" as=\"span\">\n <Text size=\"2xs\" className=\"oui-text-primary\">\n {`${props.slippage || \"-\"}%`}\n </Text>\n <EditIcon\n className=\"oui-text-primary oui-hidden md:oui-block\"\n size={12}\n opacity={1}\n />\n </Flex>\n </button>\n </Flex>\n </AuthGuard>\n </Flex>\n </>\n );\n};\n","import {\n FC,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n cn,\n ExclamationFillIcon,\n Flex,\n Input,\n inputFormatter,\n modal,\n Text,\n Tooltip,\n TooltipTrigger,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\ninterface SlippageProps {\n initialValue?: number;\n isMobile?: boolean;\n}\n\nconst options = [0.01, 0.05, 0.1];\n\nexport const SlippageEditor = forwardRef<\n { getValue: () => number | undefined },\n SlippageProps\n>((props, ref) => {\n const { t } = useTranslation();\n const [value, setValue] = useState<number>();\n const [customValue, setCustomValue] = useState(\"\");\n const [error, setError] = useState<string | undefined>(undefined);\n\n useImperativeHandle(ref, () => ({\n getValue: () =>\n customValue ? new Decimal(customValue)?.toNumber() : value,\n }));\n\n useEffect(() => {\n if (props.initialValue && !options.includes(props.initialValue!)) {\n setCustomValue(props.initialValue!.toString());\n } else {\n setValue(props.initialValue);\n }\n }, [props.initialValue, open]);\n\n const onClick = (val: number) => {\n setValue(val);\n setCustomValue(\"\");\n setError(undefined);\n };\n\n const onValueChange = (val: string) => {\n if (!val) {\n setCustomValue(val);\n return;\n }\n\n const d = new Decimal(val);\n setValue(undefined);\n if (d.gt(3)) {\n setCustomValue(\"3\");\n setError(t(\"orderEntry.slippage.error.exceed\"));\n } else {\n setCustomValue(val);\n setError(undefined);\n }\n };\n\n const toolTipButton = props.isMobile ? (\n <button\n onClick={() => {\n // setOpen(true)\n modal.alert({\n title: t(\"common.tips\"),\n message: <Text size=\"2xs\">{t(\"orderEntry.slippage.tips\")}</Text>,\n });\n }}\n >\n <ExclamationFillIcon className=\"oui-text-base-contrast-54\" size={16} />\n </button>\n ) : (\n <Tooltip\n // @ts-ignore\n content={\n <Text intensity={80} size=\"2xs\">\n {t(\"orderEntry.slippage.tips\")}\n </Text>\n }\n className=\"oui-w-[260px] oui-bg-base-6\"\n arrow={{ className: \"oui-fill-base-6\" }}\n >\n <TooltipTrigger>\n <ExclamationFillIcon className=\"oui-text-base-contrast-54\" size={16} />\n </TooltipTrigger>\n </Tooltip>\n );\n\n return (\n <div className=\"oui-text-2xs\">\n <Flex mb={2} gapX={1}>\n <Text size=\"xs\">{t(\"orderEntry.slippage\")}</Text>\n {toolTipButton}\n </Flex>\n <Flex gapX={2}>\n {options.map((item) => {\n const isActive = value === item;\n return (\n <SlippageItem\n key={item}\n value={item}\n isActive={isActive}\n onClick={() => {\n onClick(item);\n }}\n />\n );\n })}\n\n <Input\n suffix=\"%\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(2),\n ]}\n value={customValue}\n onValueChange={onValueChange}\n classNames={{\n root: cn(\n \"oui-rounded-md oui-bg-base-6\",\n \"oui-h-[40px] oui-w-[74px]\",\n ),\n input: \"oui-text-base-contrast\",\n additional: \"oui-pl-1\",\n }}\n />\n </Flex>\n {!!error && (\n <Box mt={5} className=\"-oui-mb-5\">\n <Text size=\"2xs\" color=\"danger\">\n {error}\n </Text>\n </Box>\n )}\n </div>\n );\n});\n\ntype SlippageItemProps = {\n value: number;\n isActive: boolean;\n onClick: () => void;\n};\n\nconst SlippageItem: FC<SlippageItemProps> = ({ value, isActive, onClick }) => {\n return (\n <Flex\n intensity={600}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"md\"\n width={74}\n height={40}\n className={cn(\n \"oui-cursor-pointer oui-select-none\",\n isActive && \"oui-bg-primary-light\",\n )}\n onClick={onClick}\n >\n <Text size=\"sm\" intensity={80}>\n {value}%\n </Text>\n </Flex>\n );\n};\n","import { SlippageCell } from \"./components/slippageCell\";\n\nexport const SlippageUI = (props: {\n slippage: string;\n setSlippage: (slippage: string) => void;\n estSlippage: number | null;\n}) => {\n return <SlippageCell {...props} />;\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Flex,\n Tooltip,\n Text,\n InfoCircleIcon,\n AddCircleIcon,\n Button,\n modal,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { LTVRiskTooltipWidget } from \"../LTVRiskTooltip\";\n\ntype AvailableProps = {\n canTrade: boolean;\n currentLtv: number;\n freeCollateral: number;\n quote?: string;\n};\n\nexport const Available = (props: AvailableProps) => {\n const { canTrade, currentLtv, quote, freeCollateral } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const showLTV = useMemo(() => {\n return (\n typeof currentLtv === \"number\" &&\n !Number.isNaN(currentLtv) &&\n currentLtv > 0\n );\n }, [currentLtv]);\n\n return (\n <Flex itemAlign={\"center\"} justify={\"between\"}>\n <Text size={\"2xs\"}>{t(\"common.available\")}</Text>\n <Flex itemAlign={\"center\"} justify={\"center\"} gap={1}>\n {showLTV && (\n <Tooltip\n className={\"oui-bg-base-6 oui-p-2\"}\n content={<LTVRiskTooltipWidget />}\n >\n <InfoCircleIcon\n className={\"oui-cursor-pointer oui-text-warning oui-opacity-80\"}\n />\n </Tooltip>\n )}\n <Text.numeral\n unit={quote}\n size={\"2xs\"}\n className={\"oui-text-base-contrast-80\"}\n unitClassName={\"oui-ml-1 oui-text-base-contrast-54\"}\n dp={2}\n padding={false}\n >\n {canTrade ? freeCollateral : 0}\n </Text.numeral>\n <Button\n variant=\"text\"\n size=\"xs\"\n color=\"secondary\"\n className=\"oui-p-0 hover:oui-text-base-contrast-80\"\n onClick={() => {\n // TODO: when we plan to move modal IDs to a public package, we need to use the ID from the public package\n const handleDomId = isMobile\n ? \"DepositAndWithdrawWithSheetId\"\n : \"DepositAndWithdrawWithDialogId\";\n modal.show(handleDomId, {\n activeTab: \"deposit\",\n });\n }}\n >\n <AddCircleIcon opacity={1} />\n </Button>\n </Flex>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Button, cn, Divider, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { removeTrailingZeros } from \"@kodiak-finance/orderly-utils\";\nimport type { LTVTooltipScriptReturn } from \"./LTVRiskTooltip.script\";\n\nconst calculateLTVColor = (val: number): string => {\n if (val >= 0 && val < 50) {\n return \"oui-text-success\";\n } else if (val >= 50 && val < 80) {\n return \"oui-text-warning\";\n } else if (val >= 80) {\n return \"oui-text-danger\";\n } else {\n return \"\";\n }\n};\n\nexport const LTVRiskTooltipUI: React.FC<LTVTooltipScriptReturn> = (props) => {\n const { t } = useTranslation();\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isThresholdLoading,\n holdingData = [],\n currentLtv,\n onConvert,\n } = props;\n return (\n <Flex gap={1} className=\"oui-w-72 oui-max-w-72\" direction=\"column\">\n <Flex width={\"100%\"} justify=\"between\" itemAlign=\"center\">\n <Text intensity={36} size=\"xs\">\n {t(\"common.assets\")}\n </Text>\n <Text intensity={36} size=\"xs\">\n {t(\"transfer.deposit.collateralContribution\")}\n </Text>\n </Flex>\n {holdingData.map((asset, index) => {\n return (\n <Flex\n key={`item-${index}`}\n width={\"100%\"}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Text intensity={80} size=\"xs\">\n {asset.token}\n </Text>\n <Text\n size=\"xs\"\n intensity={80}\n className={cn(\n Number(asset.collateralContribution) < 0 && \"oui-text-warning\",\n )}\n >\n {removeTrailingZeros(asset.collateralContribution)}\n </Text>\n </Flex>\n );\n })}\n <Divider className=\"oui-w-full\" />\n <Flex width={\"100%\"} justify=\"between\" itemAlign=\"center\">\n <Text intensity={36} size=\"xs\">\n {t(\"transfer.LTV.currentLTV\")}\n </Text>\n <Text\n size=\"xs\"\n intensity={36}\n className={cn(\"oui-select-none\", calculateLTVColor(currentLtv))}\n >\n {currentLtv}%\n </Text>\n </Flex>\n <Text className=\"oui-py-2\" intensity={54} size=\"2xs\">\n {t(\"transfer.LTV.tooltip\", {\n threshold: isThresholdLoading ? \"-\" : ltv_threshold,\n usdcThreshold: isThresholdLoading ? \"-\" : negative_usdc_threshold,\n })}\n </Text>\n <Button\n fullWidth\n size={\"md\"}\n variant={\"outlined\"}\n color={\"secondary\"}\n onClick={onConvert}\n >\n {t(\"transfer.convert.convertAssets\")}\n </Button>\n </Flex>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useComputedLTV,\n useHoldingStream,\n useIndexPricesStream,\n useQuery,\n useAppStore,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { account } from \"@kodiak-finance/orderly-perp\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal, zero } from \"@kodiak-finance/orderly-utils\";\n\nconst useConvertThreshold = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n { errorRetryCount: 3 },\n );\n return {\n ltv_threshold: new Decimal(data?.ltv_threshold ?? 0).mul(100).toNumber(),\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n } as const;\n};\n\nexport const useLTVTooltipScript = () => {\n const { data: holdingList = [], isLoading: isHoldingLoading } =\n useHoldingStream();\n\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isLoading: isThresholdLoading,\n } = useConvertThreshold();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const { getIndexPrice } = useIndexPricesStream();\n\n const holdingData = holdingList.map((item) => {\n const tokenInfo = tokensInfo?.find(({ token }) => token === item.token);\n\n // Use extracted function for index price calculation\n const indexPrice = getIndexPrice(item.token);\n\n // Calculate collateral ratio for this token\n const collateralRatio = tokenInfo\n ? account.collateralRatio({\n baseWeight: tokenInfo.base_weight ?? 0,\n discountFactor: tokenInfo.discount_factor ?? 0,\n collateralQty: item.holding,\n collateralCap: tokenInfo?.user_max_qty ?? item.holding,\n indexPrice: indexPrice,\n })\n : zero;\n\n // Calculate collateral contribution for this token\n const collateralContribution = account.collateralContribution({\n collateralQty: item.holding,\n collateralCap: tokenInfo?.user_max_qty ?? item.holding,\n collateralRatio: collateralRatio.toNumber(),\n indexPrice: indexPrice,\n });\n\n return {\n ...item,\n collateralContribution: collateralContribution,\n };\n });\n\n const currentLtv = useComputedLTV();\n\n const onConvert = useCallback(async () => {\n return modal.show(\"ConvertDialogId\");\n }, []);\n\n return {\n holdingData,\n isHoldingLoading,\n ltv_threshold,\n negative_usdc_threshold,\n isThresholdLoading,\n currentLtv: currentLtv,\n onConvert: onConvert,\n };\n};\n\nexport type LTVTooltipScriptReturn = ReturnType<typeof useLTVTooltipScript>;\n","import React from \"react\";\nimport { useLTVTooltipScript } from \"./LTVRiskTooltip.script\";\nimport { LTVRiskTooltipUI } from \"./LTVRiskTooltip.ui\";\n\nexport const LTVRiskTooltipWidget: React.FC = () => {\n const state = useLTVTooltipScript();\n return <LTVRiskTooltipUI {...state} />;\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { usePositionStream } from \"@kodiak-finance/orderly-hooks\";\nimport { i18n, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n BBOOrderType,\n API,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport { OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport {\n Badge,\n Button,\n Checkbox,\n cn,\n Divider,\n Flex,\n Grid,\n registerSimpleDialog,\n Text,\n textVariants,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal, getBBOType } from \"@kodiak-finance/orderly-utils\";\nimport { isBBOOrder } from \"../../utils\";\n\ntype OrderConfirmDialogProps = {\n order: OrderlyOrder;\n symbolInfo: API.SymbolExt;\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nexport const OrderConfirmDialog = (props: OrderConfirmDialogProps) => {\n const { symbolInfo, order, onConfirm, onCancel } = props;\n const { quote, quote_dp, base_dp } = symbolInfo;\n const { side, order_type, order_type_ext, level, symbol } = order;\n const { t } = useTranslation();\n const [{ rows: positions }] = usePositionStream(symbol);\n const position = positions?.[0];\n const positionQty = position?.position_qty;\n\n const [_, setNeedConfirm] = useLocalStorage(\"orderly_order_confirm\", true);\n\n const renderPositionType = () => {\n if (order.position_type === PositionType.FULL) {\n return <Text>{t(\"tpsl.positionType.full\")}</Text>;\n }\n return <Text>{t(\"tpsl.positionType.partial\")}</Text>;\n };\n\n const renderPrice = () => {\n if (\n order_type === OrderType.MARKET ||\n order_type === OrderType.STOP_MARKET\n ) {\n return <Text intensity={80}>{t(\"common.marketPrice\")}</Text>;\n }\n\n if (isBBOOrder({ order_type, order_type_ext })) {\n const bboType = getBBOType({\n type: order_type_ext!,\n side,\n level,\n });\n const label = {\n [BBOOrderType.COUNTERPARTY1]: t(\"orderEntry.bbo.counterparty1\"),\n [BBOOrderType.COUNTERPARTY5]: t(\"orderEntry.bbo.counterparty5\"),\n [BBOOrderType.QUEUE1]: t(\"orderEntry.bbo.queue1\"),\n [BBOOrderType.QUEUE5]: t(\"orderEntry.bbo.queue5\"),\n }[bboType!];\n\n return <Text intensity={80}>{label}</Text>;\n }\n\n return (\n <Text.numeral\n unit={quote}\n rule=\"price\"\n className=\"oui-text-base-contrast\"\n unitClassName=\"oui-text-base-contrast-36 oui-ml-1\"\n dp={quote_dp}\n padding={false}\n >\n {order.order_price}\n </Text.numeral>\n );\n };\n\n const renderTPSLPrice = ({\n price,\n isOrderPrice,\n isEnable,\n colorType,\n }: {\n price: string;\n isOrderPrice?: boolean;\n isEnable?: boolean;\n colorType: \"TP\" | \"SL\";\n }) => {\n if (!isEnable) {\n return <Text className=\"oui-text-base-contrast-36\">-- USDC</Text>;\n }\n if (!price) {\n if (isOrderPrice) {\n return (\n <Text className=\"oui-text-base-contrast-36\">\n {t(\"common.marketPrice\")}\n </Text>\n );\n }\n }\n return (\n <Text.numeral\n unit={\"USDC\"}\n rule={\"price\"}\n className={cn(\n \"oui-text-base-contrast\",\n colorType === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n dp={quote_dp}\n padding={false}\n >\n {price}\n </Text.numeral>\n );\n };\n\n const renderTPSLQty = () => {\n if (!positionQty || !order.order_quantity) {\n return null;\n }\n let qty = new Decimal(order.order_quantity);\n if (order.position_type === PositionType.FULL) {\n qty = qty.plus(new Decimal(positionQty ?? 0));\n }\n return (\n <Flex justify={\"between\"}>\n <Text>\n {order.position_type === PositionType.FULL\n ? t(\"common.positionQty\")\n : t(\"common.orderQty\")}\n </Text>\n <Text.numeral\n rule={\"price\"}\n dp={base_dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {qty.toNumber()}\n </Text.numeral>\n </Flex>\n );\n };\n\n const renderPriceAndTotal = () => {\n if (order_type === OrderType.TRAILING_STOP) {\n const { activated_price, callback_value, callback_rate } = order;\n\n const callbackView = callback_rate ? (\n <Flex justify={\"between\"}>\n <Text>{t(\"orderEntry.trailingRate\")}</Text>\n <Text className=\"oui-text-base-contrast\">{callback_rate}%</Text>\n </Flex>\n ) : (\n <OrderItem\n title={t(\"orderEntry.trailingValue\")}\n value={callback_value!}\n unit={quote}\n dp={quote_dp}\n />\n );\n return (\n <>\n {activated_price && (\n <OrderItem\n title={t(\"common.triggerPrice\")}\n value={activated_price!}\n unit={quote}\n dp={quote_dp}\n />\n )}\n {callbackView}\n </>\n );\n }\n\n return (\n <>\n <Flex justify={\"between\"}>\n <Text>{t(\"common.price\")}</Text>\n {renderPrice()}\n </Flex>\n <OrderItem\n title={t(\"common.estTotal\")}\n value={order.total}\n unit={quote}\n dp={quote_dp}\n />\n </>\n );\n };\n\n const header = (\n <Flex justify={\"between\"}>\n <Text.formatted rule={\"symbol\"} showIcon>\n {order.symbol}\n </Text.formatted>\n <Flex justify={\"end\"} gapX={1}>\n <OrderTypeTag type={order_type} />\n {side === OrderSide.BUY ? (\n <Badge color={\"buy\"} size={\"sm\"}>\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge color={\"sell\"} size={\"sm\"}>\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n );\n\n const quantityItem = (\n <Flex justify={\"between\"}>\n <Text>{t(\"common.orderQty\")}</Text>\n <Text.numeral\n rule={\"price\"}\n dp={base_dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {order.order_quantity}\n </Text.numeral>\n </Flex>\n );\n\n const triggerPriceItem = (order_type === OrderType.STOP_LIMIT ||\n (order_type === OrderType.STOP_MARKET && order.trigger_price)) && (\n <OrderItem\n title={t(\"common.trigger\")}\n value={order.trigger_price}\n unit={quote}\n dp={quote_dp}\n />\n );\n\n const tpslTriggerPrice = (order.tp_trigger_price ||\n order.sl_trigger_price) && (\n <>\n <Divider className=\"oui-my-4\" />\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className: \"oui-space-y-1 oui-w-full oui-flex oui-flex-col oui-gap-3\",\n })}\n >\n <Text className=\"oui-text-base-contrast\">{renderPositionType()}</Text>\n {renderTPSLQty()}\n\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpTriggerPrice\")}</Text>\n {renderTPSLPrice({\n price: order.tp_trigger_price ?? \"\",\n isOrderPrice: false,\n isEnable: !!order.tp_trigger_price,\n colorType: \"TP\",\n })}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpOrderPrice\")}</Text>\n {renderTPSLPrice({\n price: order.tp_order_price ?? \"\",\n isOrderPrice: true,\n isEnable: !!order.tp_trigger_price,\n colorType: \"TP\",\n })}\n </Flex>\n </Flex>\n\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slTriggerPrice\")}</Text>\n {renderTPSLPrice({\n price: order.sl_trigger_price ?? \"\",\n isOrderPrice: false,\n isEnable: !!order.sl_trigger_price,\n colorType: \"SL\",\n })}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slOrderPrice\")}</Text>\n {renderTPSLPrice({\n price: order.sl_order_price ?? \"\",\n isOrderPrice: true,\n isEnable: !!order.sl_trigger_price,\n colorType: \"SL\",\n })}\n </Flex>\n </Flex>\n </div>\n </>\n );\n\n const orderConfirmCheckbox = (\n <Flex gapX={1} pt={4} pb={5}>\n <Checkbox\n id=\"orderConfirm\"\n color={\"white\"}\n onCheckedChange={(checked) => {\n setNeedConfirm(!!!checked);\n }}\n />\n <label\n htmlFor=\"orderConfirm\"\n className={textVariants({\n size: \"xs\",\n intensity: 54,\n })}\n >\n {t(\"orderEntry.disableOrderConfirm\")}\n </label>\n </Flex>\n );\n\n const buttons = (\n <Grid cols={2} gapX={3}>\n <Button color={\"secondary\"} size={\"md\"} onClick={() => onCancel()}>\n {t(\"common.cancel\")}\n </Button>\n <Button size={\"md\"} onClick={() => onConfirm()}>\n {t(\"common.confirm\")}\n </Button>\n </Grid>\n );\n\n return (\n <>\n {header}\n <Divider className=\"oui-my-4\" />\n\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className: \"oui-space-y-1\",\n })}\n >\n {quantityItem}\n {triggerPriceItem}\n\n {renderPriceAndTotal()}\n </div>\n\n {tpslTriggerPrice}\n\n {orderConfirmCheckbox}\n\n {buttons}\n </>\n );\n};\n\ntype OrderItemProps = {\n title: ReactNode;\n value: string;\n unit: string;\n dp: number;\n};\n\nconst OrderItem: FC<OrderItemProps> = (props) => {\n const { title, value, unit, dp } = props;\n return (\n <Flex justify=\"between\">\n <Text>{title}</Text>\n <Text.numeral\n unit={unit}\n rule=\"price\"\n dp={dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n unitClassName=\"oui-text-base-contrast-36 oui-ml-1\"\n >\n {value}\n </Text.numeral>\n </Flex>\n );\n};\n\nOrderConfirmDialog.displayName = \"OrderConfirmDialog\";\n\nconst OrderTypeTag = (props: { type: OrderType }) => {\n const { t } = useTranslation();\n const typeStr = useMemo(() => {\n switch (props.type) {\n case OrderType.LIMIT:\n return t(\"orderEntry.orderType.limit\");\n case OrderType.MARKET:\n return t(\"common.marketPrice\");\n case OrderType.STOP_LIMIT:\n return t(\"orderEntry.orderType.stopLimit\");\n case OrderType.STOP_MARKET:\n return t(\"orderEntry.orderType.stopMarket\");\n case OrderType.TRAILING_STOP:\n return t(\"orderEntry.orderType.trailingStop\");\n default:\n return \"\";\n }\n }, [props.type]);\n\n return (\n <Badge color={\"neutral\"} size={\"sm\"}>\n {typeStr}\n </Badge>\n );\n};\n\nconst Dialog = (\n props: Omit<OrderConfirmDialogProps, \"onCancel\" | \"onConfirm\"> & {\n close: () => void;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n },\n) => {\n const { close, resolve, reject, ...rest } = props;\n\n return (\n <OrderConfirmDialog\n {...rest}\n onCancel={() => {\n reject();\n close();\n }}\n onConfirm={() => {\n resolve();\n close();\n }}\n />\n );\n};\n\nexport const orderConfirmDialogId = \"orderConfirm\";\n\nregisterSimpleDialog(orderConfirmDialogId, Dialog, {\n size: \"sm\",\n title: () => i18n.t(\"orderEntry.orderConfirm\"),\n});\n","import { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport {\n BBOOrderType,\n OrderLevel,\n OrderSide,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\n\nexport enum BBOStatus {\n ON = \"on\",\n OFF = \"off\",\n DISABLED = \"disabled\",\n}\n\n/**\n * if provide order_type, check order_type and order_type_ext, otherswise only check order_type_ext\n */\nexport function isBBOOrder(options: {\n order_type?: OrderType;\n order_type_ext?: OrderType;\n}) {\n const { order_type, order_type_ext } = options;\n\n const isBBO = [OrderType.ASK, OrderType.BID].includes(order_type_ext!);\n\n if (order_type) {\n return order_type === OrderType.LIMIT && isBBO;\n }\n\n return isBBO;\n}\n\nexport function getOrderTypeByBBO(value: BBOOrderType, size: OrderSide) {\n if (\n [BBOOrderType.COUNTERPARTY1, BBOOrderType.COUNTERPARTY5].includes(value)\n ) {\n return size === OrderSide.BUY ? OrderType.ASK : OrderType.BID;\n }\n\n if ([BBOOrderType.QUEUE1, BBOOrderType.QUEUE5].includes(value)) {\n return size === OrderSide.BUY ? OrderType.BID : OrderType.ASK;\n }\n}\n\nexport function getOrderLevelByBBO(value: BBOOrderType) {\n if ([BBOOrderType.COUNTERPARTY1, BBOOrderType.QUEUE1].includes(value)) {\n return OrderLevel.ONE;\n }\n\n if ([BBOOrderType.COUNTERPARTY5, BBOOrderType.QUEUE5].includes(value)) {\n return OrderLevel.FIVE;\n }\n}\n\nexport function getScaledPlaceOrderMessage(result: any) {\n const rows = result?.data?.rows || [];\n\n if (rows.length > 0) {\n const totalCount = rows.length;\n const successCount = rows.filter((row: any) => row.success).length;\n\n // fully successful\n if (successCount === totalCount) {\n return i18n.t(\"orderEntry.scaledOrder.fullySuccessful\", {\n total: totalCount,\n });\n }\n\n // all failed\n if (successCount === 0) {\n return i18n.t(\"orderEntry.scaledOrder.allFailed\");\n }\n\n // partially successful\n return i18n.t(\"orderEntry.scaledOrder.partiallySuccessful\", {\n successCount,\n total: totalCount,\n });\n }\n}\n\nexport const safeNumber = (val: number | string) => {\n return Number.isNaN(Number(val)) ? 0 : Number(val);\n};\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { SimpleDialog } from \"@kodiak-finance/orderly-ui\";\n\ntype MaxQtyConfirmProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n maxQty: string;\n onConfirm: () => void;\n base: string;\n};\n\nexport const MaxQtyConfirm: FC<MaxQtyConfirmProps> = memo((props) => {\n const { t } = useTranslation();\n return (\n <SimpleDialog\n open={props.open}\n title={t(\"orderEntry.orderConfirm\")}\n closable\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n actions={{\n primary: {\n label: t(\"orderEntry.placeOrderNow\"),\n className: \"oui-text-sm oui-font-semibold oui-w-[100%] oui-h-8\",\n onClick: () => {\n props.onConfirm();\n return Promise.resolve();\n },\n },\n secondary: {\n label: t(\"common.cancel\"),\n className: \"oui-text-sm oui-font-semibold oui-w-[100%] oui-h-8\",\n onClick: () => {\n props.onOpenChange(false);\n return Promise.resolve();\n },\n },\n }}\n >\n <div className=\"oui-text-2xs lg:oui-text-sm\">\n {t(\"orderEntry.maxQty.reminder.content\", {\n maxQty: `${props.maxQty} ${props.base}`,\n })}\n </div>\n </SimpleDialog>\n );\n});\n","import { forwardRef, SVGProps, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Flex,\n Grid,\n DataTable,\n cn,\n Badge,\n TokenIcon,\n Tooltip,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n ScaledOrderConfirmScriptOptions,\n ScaledOrderConfirmScriptReturns,\n} from \"./scaledOrderConfirm.script\";\n\nexport type ScaledOrderConfirmProps = ScaledOrderConfirmScriptOptions &\n ScaledOrderConfirmScriptReturns & {\n close?: () => void;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n };\n\nexport const ScaledOrderConfirm = (props: ScaledOrderConfirmProps) => {\n const { order, symbolInfo, dataSource, national, askAndBid, totalQuantity } =\n props;\n const { base, quote, base_dp, quote_dp } = symbolInfo;\n const { t } = useTranslation();\n\n const onCancel = () => {\n props.reject();\n props.close?.();\n };\n\n const onConfirm = () => {\n props.resolve();\n props.close?.();\n };\n\n const columns = useMemo(() => {\n return [\n {\n title: t(\"common.symbol\"),\n dataIndex: \"symbol\",\n width: 125,\n render: (value: string, record: any) => {\n return (\n <Flex gap={2}>\n <div\n className={cn(\n \"oui-h-[38px] oui-w-1 oui-shrink-0 oui-rounded-[1px]\",\n record.side === OrderSide.BUY\n ? \"oui-bg-trade-profit\"\n : \"oui-bg-trade-loss\",\n )}\n />\n <Flex direction=\"column\" itemAlign=\"start\">\n <Flex gapX={1}>\n <TokenIcon symbol={value} className=\"oui-size-3\" />\n <Text.formatted\n rule=\"symbol\"\n size=\"xs\"\n formatString=\"base-type\"\n >\n {value}\n </Text.formatted>\n </Flex>\n\n <Badge color=\"neutral\" size=\"xs\">\n {t(\"orderEntry.orderType.limit\")}\n </Badge>\n </Flex>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.quantity\"),\n dataIndex: \"order_quantity\",\n width: 100,\n render: (value: string, record: any) => {\n return (\n <Text.numeral\n rule=\"price\"\n dp={base_dp}\n padding={false}\n color={record.side === OrderSide.BUY ? \"buy\" : \"sell\"}\n >\n {value}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.orderPrice\"),\n dataIndex: \"order_price\",\n width: 100,\n render: (value: string, record: any) => {\n // buy: limit_price_i >= ask0 , show warning.\n // sell: limit price <= bid0 , show warning.\n const showWarning = !!(record.side === OrderSide.BUY\n ? askAndBid?.[0] && Number(value) >= askAndBid?.[0]\n : askAndBid?.[1] && Number(value) <= askAndBid?.[1]);\n\n return (\n <Flex gapX={1}>\n <Text.numeral rule=\"price\" dp={quote_dp}>\n {value}\n </Text.numeral>\n\n {showWarning && (\n <Tooltip\n content={t(\n \"orderEntry.confirmScaledOrder.orderPrice.warning\",\n )}\n className=\"oui-w-[240px] oui-text-2xs oui-font-semibold oui-text-base-contrast-80\"\n >\n <TooltipIcon className=\"oui-text-warning-darken\" />\n </Tooltip>\n )}\n </Flex>\n );\n },\n },\n ];\n }, [t, symbolInfo, askAndBid, base_dp, quote_dp]);\n\n return (\n <div className=\"oui-font-semibold\">\n <DataTable\n classNames={{\n root: cn(\n \"oui-bg-base-7\",\n \"oui-rounded-lg\",\n // need to set overflow hidden because table header will avoid the border radius\n \"oui-overflow-hidden\",\n // \"oui-text-2xs lg:oui-text-xs\",\n // if orders is greater than 6, set the height to 320px to show scroll bar\n order.orders?.length >= 6 && \"oui-h-[320px]\",\n ),\n // set the min height of the table to show 2 rows\n scroll: \"!oui-min-h-[130px]\",\n }}\n dataSource={dataSource}\n columns={columns}\n bordered\n onRow={() => {\n return {\n className: cn(\"oui-h-[50px]\"),\n };\n }}\n />\n <div className=\"oui-mb-5 oui-mt-4 oui-text-2xs\">\n <Flex justify=\"between\">\n <Text>{t(\"orderEntry.totalOrders\")}</Text>\n <Text intensity={80}>{order.orders?.length}</Text>\n </Flex>\n\n <Flex justify=\"between\" mt={2}>\n <Text>{t(\"orderEntry.totalQuantity\")}</Text>\n <Text.numeral\n rule=\"price\"\n unit={base}\n dp={base_dp}\n padding={false}\n intensity={80}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalQuantity}\n </Text.numeral>\n </Flex>\n\n <Flex justify=\"between\" mt={2}>\n <Text>{t(\"common.notional\")}</Text>\n <Text.numeral\n rule=\"price\"\n unit={quote}\n dp={quote_dp}\n padding={false}\n intensity={80}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {national}\n </Text.numeral>\n </Flex>\n </div>\n\n <Grid cols={2} gapX={3}>\n <Button color={\"secondary\"} size={\"md\"} onClick={onCancel}>\n {t(\"common.cancel\")}\n </Button>\n <Button size={\"md\"} onClick={onConfirm}>\n {t(\"common.confirm\")}\n </Button>\n </Grid>\n </div>\n );\n};\n\nexport const TooltipIcon = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n width=\"12\"\n height=\"13\"\n viewBox=\"0 0 12 13\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...props}\n >\n <path d=\"M5.99951 1.50708C3.23811 1.50708 0.999512 3.74558 0.999512 6.50708C0.999512 9.26858 3.23811 11.5071 5.99951 11.5071C8.76091 11.5071 10.9995 9.26858 10.9995 6.50708C10.9995 3.74558 8.76091 1.50708 5.99951 1.50708ZM5.99951 4.00708C6.27566 4.00708 6.49951 4.23108 6.49951 4.50708C6.49951 4.78308 6.27566 5.00708 5.99951 5.00708C5.72336 5.00708 5.49951 4.78308 5.49951 4.50708C5.49951 4.23108 5.72336 4.00708 5.99951 4.00708ZM5.99951 5.50708C6.27566 5.50708 6.49951 5.73108 6.49951 6.00708V8.50708C6.49951 8.78308 6.27566 9.00708 5.99951 9.00708C5.72336 9.00708 5.49951 8.78308 5.49951 8.50708V6.00708C5.49951 5.73108 5.72336 5.50708 5.99951 5.50708Z\" />\n </svg>\n );\n },\n);\n","import { useMemo } from \"react\";\nimport { API, OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { Decimal, zero } from \"@kodiak-finance/orderly-utils\";\nimport { useAskAndBid } from \"../../../hooks/useAskAndBid\";\n\nexport type ScaledOrderConfirmScriptOptions = {\n order: OrderlyOrder & {\n orders: OrderlyOrder[];\n };\n symbolInfo: API.SymbolExt;\n};\n\nexport type ScaledOrderConfirmScriptReturns = ReturnType<\n typeof useScaledOrderConfirmScript\n>;\n\nexport function useScaledOrderConfirmScript(\n options: ScaledOrderConfirmScriptOptions,\n) {\n const { order, symbolInfo } = options;\n const orders = order.orders;\n\n const askAndBid = useAskAndBid();\n\n const national = useMemo(() => {\n const national = orders.reduce((acc, order) => {\n return acc.add(new Decimal(order.order_price).mul(order.order_quantity));\n }, zero);\n\n return national.toNumber();\n }, [orders]);\n\n const totalQuantity = useMemo(() => {\n const totalQuantity = orders.reduce((acc, order) => {\n return acc.add(new Decimal(order.order_quantity));\n }, zero);\n\n return totalQuantity.toString();\n }, [orders, symbolInfo.base_dp]);\n\n return { dataSource: orders, national, askAndBid, totalQuantity };\n}\n","import { useEffect, useState } from \"react\";\nimport { useDebouncedCallback, useEventEmitter } from \"@kodiak-finance/orderly-hooks\";\n\nexport function useAskAndBid() {\n const ee = useEventEmitter();\n\n const [askAndBid, setAskAndBid] = useState<[number, number]>([0, 0]);\n\n const onOrderBookUpdate = useDebouncedCallback((data: any) => {\n const ask0 = data.asks?.[data.asks.length - 1]?.[0];\n const bid0 = data.bids?.[0]?.[0];\n setAskAndBid([ask0, bid0]);\n }, 200);\n\n useEffect(() => {\n ee.on(\"orderbook:update\", onOrderBookUpdate);\n return () => {\n ee.off(\"orderbook:update\", onOrderBookUpdate);\n onOrderBookUpdate.cancel();\n };\n }, [onOrderBookUpdate]);\n\n return askAndBid;\n}\n","import { FC } from \"react\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { registerSimpleDialog } from \"@kodiak-finance/orderly-ui\";\nimport { useScaledOrderConfirmScript } from \"./scaledOrderConfirm.script\";\nimport {\n ScaledOrderConfirm,\n ScaledOrderConfirmProps,\n} from \"./scaledOrderConfirm.ui\";\n\nexport type ScaledOrderConfirmWidgetProps = ScaledOrderConfirmProps;\n\nexport const ScaledOrderConfirmWidget: FC<ScaledOrderConfirmWidgetProps> = (\n props,\n) => {\n const state = useScaledOrderConfirmScript(props);\n\n return <ScaledOrderConfirm {...props} {...state} />;\n};\n\nexport const scaledOrderConfirmDialogId = \"scaledOrderConfirm\";\n\nregisterSimpleDialog(scaledOrderConfirmDialogId, ScaledOrderConfirmWidget, {\n size: \"md\",\n title: () => i18n.t(\"orderEntry.confirmScaledOrder\"),\n contentProps: {\n // className: \"oui-p-0\",\n },\n});\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderlyOrder, OrderSide, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Button, cn } from \"@kodiak-finance/orderly-ui\";\nimport { OrderTypeSelect } from \"../orderTypeSelect\";\nimport { LeverageBadge } from \"./LeverageBadge\";\n\ntype OrderEntryHeaderProps = {\n symbol: string;\n side: OrderSide;\n canTrade: boolean;\n order_type: OrderType;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n symbolLeverage?: number;\n};\n\nexport function OrderEntryHeader(props: OrderEntryHeaderProps) {\n const { canTrade, side, order_type, setOrderValue } = props;\n const { t } = useTranslation();\n\n return (\n <>\n <div\n className={cn(\n \"oui-grid oui-w-full oui-flex-1 oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]\",\n \"oui-grid-cols-2\",\n )}\n >\n <Button\n onClick={() => {\n props.setOrderValue(\"side\", OrderSide.BUY);\n }}\n size={\"md\"}\n fullWidth\n data-type={OrderSide.BUY}\n className={cn(\n side === OrderSide.BUY && canTrade\n ? \"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\"\n : \"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6\",\n )}\n data-testid=\"oui-testid-orderEntry-side-buy-button\"\n >\n {t(\"common.buy\")}\n </Button>\n <Button\n onClick={() => {\n props.setOrderValue(\"side\", OrderSide.SELL);\n }}\n data-type={OrderSide.SELL}\n fullWidth\n size={\"md\"}\n className={cn(\n side === OrderSide.SELL && props.canTrade\n ? \"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\"\n : \"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6\",\n )}\n data-testid=\"oui-testid-orderEntry-side-sell-button\"\n >\n {t(\"common.sell\")}\n </Button>\n </div>\n <div\n className={cn(\n \"oui-grid oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]\",\n \"oui-grid-cols-2\",\n )}\n >\n <div className=\"oui-w-full\">\n <OrderTypeSelect\n type={order_type!}\n side={side}\n canTrade={canTrade}\n onChange={(type) => {\n setOrderValue(\"order_type\", type);\n }}\n />\n </div>\n <div className=\"oui-w-full\">\n <LeverageBadge\n symbol={props.symbol}\n side={props.side}\n symbolLeverage={props.symbolLeverage}\n />\n </div>\n </div>\n </>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Select, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport const OrderTypeSelect = (props: {\n type: OrderType;\n onChange: (type: OrderType) => void;\n side: OrderSide;\n canTrade: boolean;\n}) => {\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n { label: t(\"orderEntry.orderType.limitOrder\"), value: OrderType.LIMIT },\n { label: t(\"orderEntry.orderType.marketOrder\"), value: OrderType.MARKET },\n {\n label: t(\"orderEntry.orderType.stopLimit\"),\n value: OrderType.STOP_LIMIT,\n },\n {\n label: t(\"orderEntry.orderType.stopMarket\"),\n value: OrderType.STOP_MARKET,\n },\n {\n label: t(\"orderEntry.orderType.scaledOrder\"),\n value: OrderType.SCALED,\n },\n {\n label: t(\"orderEntry.orderType.trailingStop\"),\n value: OrderType.TRAILING_STOP,\n },\n ];\n }, [t]);\n\n const displayLabelMap = useMemo(() => {\n return {\n [OrderType.LIMIT]: t(\"orderEntry.orderType.limit\"),\n [OrderType.MARKET]: t(\"common.marketPrice\"),\n [OrderType.STOP_LIMIT]: t(\"orderEntry.orderType.stopLimit\"),\n [OrderType.STOP_MARKET]: t(\"orderEntry.orderType.stopMarket\"),\n [OrderType.SCALED]: t(\"orderEntry.orderType.scaledOrder\"),\n [OrderType.TRAILING_STOP]: t(\"orderEntry.orderType.trailingStop\"),\n };\n }, [t]);\n\n return (\n <Select.options\n testid=\"oui-testid-orderEntry-orderType-button\"\n currentValue={props.type}\n value={props.type}\n options={options}\n onValueChange={props.onChange}\n contentProps={{\n className: \"oui-bg-base-8\",\n }}\n classNames={{\n trigger: \"oui-bg-base-6 oui-border-line\",\n }}\n valueFormatter={(value, option) => {\n const item = options.find((o) => o.value === value);\n if (!item) {\n return <Text size={\"xs\"}>{option.placeholder}</Text>;\n }\n\n const label = displayLabelMap[value as keyof typeof displayLabelMap];\n\n return (\n <Text\n size={\"xs\"}\n color={\n props.canTrade\n ? props.side === OrderSide.BUY\n ? \"buy\"\n : \"sell\"\n : undefined\n }\n >\n {label}\n </Text>\n );\n }}\n size={\"md\"}\n />\n );\n};\n","import { useSymbolLeverage } from \"@kodiak-finance/orderly-hooks\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { cn, Flex, modal, Text, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport {\n SymbolLeverageDialogId,\n SymbolLeverageSheetId,\n} from \"@kodiak-finance/orderly-ui-leverage\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\ntype LeverageBadgeProps = {\n symbol: string;\n side: OrderSide;\n symbolLeverage?: number;\n};\n\nexport const LeverageBadge = (props: LeverageBadgeProps) => {\n const { symbol, side, symbolLeverage } = props;\n const { isMobile } = useScreen();\n const { maxLeverage } = useSymbolLeverage(symbol);\n\n const curLeverage = symbolLeverage || maxLeverage;\n\n const showModal = () => {\n const modalId = isMobile ? SymbolLeverageSheetId : SymbolLeverageDialogId;\n modal.show(modalId, {\n symbol,\n side,\n curLeverage,\n });\n };\n\n return (\n <Flex\n justify=\"center\"\n itemAlign=\"center\"\n gapX={1}\n className={cn(\n \"oui-h-8\",\n \"oui-rounded oui-border oui-border-line oui-bg-base-6\",\n \"oui-cursor-pointer oui-select-none oui-text-xs oui-font-semibold oui-text-base-contrast-54\",\n )}\n onClick={showModal}\n >\n <Text>Cross</Text>\n <Text.numeral dp={0} rm={Decimal.ROUND_DOWN} unit=\"X\">\n {curLeverage}\n </Text.numeral>\n </Flex>\n );\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { OrderEntryContext, OrderEntryContextState } from \"./orderEntryContext\";\n\nexport const OrderEntryProvider: FC<\n PropsWithChildren<OrderEntryContextState>\n> = (props) => {\n const {\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n } = props;\n\n const memoizedValue = useMemo<OrderEntryContextState>(() => {\n return {\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n // refs\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n };\n }, [\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n ]);\n\n return (\n <OrderEntryContext.Provider value={memoizedValue}>\n {props.children}\n </OrderEntryContext.Provider>\n );\n};\n","import {\n createContext,\n FocusEventHandler,\n useContext,\n RefObject,\n MutableRefObject,\n} from \"react\";\nimport { OrderValidationResult } from \"@kodiak-finance/orderly-hooks\";\nimport { API, OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { InputType } from \"../types\";\n\nexport type OrderEntryContextState = {\n errors: OrderValidationResult | null;\n errorMsgVisible: boolean;\n symbolInfo: API.SymbolExt;\n onFocus: (type: InputType) => FocusEventHandler;\n onBlur: (type: InputType) => FocusEventHandler;\n getErrorMsg: (\n key: keyof OrderValidationResult,\n customValue?: string,\n ) => string;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n setOrderValues: (values: Partial<OrderlyOrder>) => void;\n currentFocusInput: InputType;\n // refs\n priceInputRef: RefObject<HTMLInputElement>;\n priceInputContainerRef: RefObject<HTMLDivElement>;\n triggerPriceInputRef: RefObject<HTMLInputElement>;\n activatedPriceInputRef: RefObject<HTMLInputElement>;\n lastQuantityInputType: MutableRefObject<InputType>;\n leverage?: number;\n};\n\nexport const OrderEntryContext = createContext<OrderEntryContextState>(\n {} as OrderEntryContextState,\n);\n\nexport const useOrderEntryContext = () => {\n return useContext(OrderEntryContext);\n};\n","import { OrderlyOrder, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { PriceInput, PriceInputProps } from \"./limit/priceInput\";\nimport { QtyAndTotalInput } from \"./qtyAndTotal/qtyAndTotalInput\";\nimport { ScaledOrderInput } from \"./scaledOrder\";\nimport { TriggerPriceInput } from \"./stop/triggerPriceInput\";\nimport { TrailingStopInput } from \"./trailingStop\";\n\nexport type OrderInputProps = {\n values: Partial<OrderlyOrder>;\n} & Omit<PriceInputProps, \"order_price\" | \"order_type\">;\n\nexport function OrderInput(props: OrderInputProps) {\n const { values } = props;\n\n const type = values.order_type;\n\n if (type === OrderType.SCALED) {\n return <ScaledOrderInput values={values} />;\n }\n\n if (type === OrderType.TRAILING_STOP) {\n return <TrailingStopInput values={values} />;\n }\n\n const showTriggerPrice =\n type === OrderType.STOP_LIMIT || type === OrderType.STOP_MARKET;\n\n const showPrice = type === OrderType.LIMIT || type === OrderType.STOP_LIMIT;\n\n const triggerPriceInput = showTriggerPrice && (\n <TriggerPriceInput trigger_price={values.trigger_price} />\n );\n\n const priceInput = showPrice && (\n <PriceInput\n order_type={values.order_type!}\n order_price={values.order_price}\n bbo={props.bbo}\n fillMiddleValue={props.fillMiddleValue}\n priceInputContainerWidth={props.priceInputContainerWidth}\n />\n );\n\n return (\n <div className={\"oui-space-y-1\"}>\n {triggerPriceInput}\n {priceInput}\n <QtyAndTotalInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n </div>\n );\n}\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { cn, inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { OrderEntryScriptReturn } from \"../../../orderEntry.script\";\nimport { InputType } from \"../../../types\";\nimport { BBOStatus } from \"../../../utils\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { BBOOrderTypeSelect } from \"./bboOrderTypeSelect\";\nimport { LimitPriceSuffix } from \"./limitPriceSuffix\";\n\nexport type PriceInputProps = {\n order_type: OrderType;\n order_price?: string;\n bbo: Pick<\n OrderEntryScriptReturn,\n \"bboStatus\" | \"bboType\" | \"onBBOChange\" | \"toggleBBO\"\n >;\n priceInputContainerWidth?: number;\n fillMiddleValue: OrderEntryScriptReturn[\"fillMiddleValue\"];\n};\n\n// TODO: memo component\nexport const PriceInput: FC<PriceInputProps> = (props) => {\n const { bbo } = props;\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n priceInputRef,\n priceInputContainerRef,\n } = useOrderEntryContext();\n\n const { quote, quote_dp } = symbolInfo;\n\n const readOnly = bbo.bboStatus === BBOStatus.ON;\n\n const suffix =\n props.order_type === OrderType.LIMIT ? (\n <LimitPriceSuffix\n quote={quote}\n bbo={bbo}\n fillMiddleValue={props.fillMiddleValue}\n />\n ) : (\n quote\n );\n\n return (\n <div\n ref={priceInputContainerRef}\n className=\"oui-group oui-relative oui-w-full\"\n >\n <CustomInput\n id=\"order_price_input\"\n name=\"order_price_input\"\n label={t(\"common.price\")}\n suffix={suffix}\n value={props.order_price}\n onChange={(e) => {\n setOrderValue(\"order_price\", e);\n }}\n error={getErrorMsg(\"order_price\")}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.PRICE)}\n onBlur={onBlur(InputType.PRICE)}\n readonly={readOnly}\n inputMode=\"decimal\"\n ref={priceInputRef}\n classNames={{\n root: cn(readOnly && \"focus-within:oui-outline-transparent \"),\n input: cn(readOnly && \"oui-cursor-auto\"),\n }}\n />\n {bbo.bboStatus === BBOStatus.ON && (\n <div className={cn(\"oui-absolute oui-bottom-1 oui-left-0\")}>\n <BBOOrderTypeSelect\n value={bbo.bboType}\n onChange={bbo.onBBOChange}\n contentStyle={{\n width: props.priceInputContainerWidth,\n }}\n />\n </div>\n )}\n </div>\n );\n};\n","import { forwardRef, PropsWithChildren, ReactNode } from \"react\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport {\n cn,\n inputFormatter,\n Input,\n InputProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { useOrderEntryContext } from \"../orderEntryContext\";\n\nexport type CustomInputProps = {\n label: string;\n suffix?: ReactNode;\n placeholder?: string;\n id: string;\n className?: string;\n name?: string;\n onChange?: (value: string) => void;\n value?: InputProps[\"value\"];\n autoFocus?: InputProps[\"autoFocus\"];\n error?: string;\n onFocus?: InputProps[\"onFocus\"];\n onBlur?: InputProps[\"onBlur\"];\n formatters?: InputProps[\"formatters\"];\n overrideFormatters?: InputProps[\"formatters\"];\n classNames?: InputProps[\"classNames\"];\n readonly?: boolean;\n prefix?: ReactNode;\n inputMode?: InputProps[\"inputMode\"];\n};\n\nexport const CustomInput = forwardRef<HTMLInputElement, CustomInputProps>(\n (props, ref) => {\n const { placeholder = \"0\" } = props;\n const { errorMsgVisible } = useOrderEntryContext();\n\n return (\n <Input.tooltip\n ref={ref}\n tooltip={errorMsgVisible ? props.error : undefined}\n autoComplete={\"off\"}\n autoFocus={props.autoFocus}\n size={\"lg\"}\n placeholder={props.readonly ? \"\" : placeholder}\n id={props.id}\n name={props.name}\n color={props.error ? \"danger\" : undefined}\n inputMode={props.inputMode || \"decimal\"}\n prefix={\n props.prefix || (\n <InputLabel id={props.id} className={props.classNames?.prefix}>\n {props.label}\n </InputLabel>\n )\n }\n suffix={props.suffix}\n value={props.readonly ? \"\" : props.value || \"\"}\n // onChange={props.onChange}\n onValueChange={props.onChange}\n onFocus={(event) => {\n props.onFocus?.(event);\n }}\n onBlur={(event) => {\n props.onBlur?.(event);\n }}\n formatters={\n props.overrideFormatters || [\n ...(props.formatters ?? EMPTY_LIST),\n inputFormatter.numberFormatter,\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]\n }\n classNames={{\n root: cn(\n \"orderly-order-entry oui-relative oui-h-[54px] oui-rounded oui-border oui-border-solid oui-border-line oui-px-2 oui-py-1 group-first:oui-rounded-t-xl group-last:oui-rounded-b-xl\",\n props.className,\n props.classNames?.root,\n ),\n input: cn(\"oui-mb-1 oui-mt-5 oui-h-5\", props?.classNames?.input),\n // prefix: cn(props.classNames?.prefix),\n suffix: cn(\n \"oui-absolute oui-right-0 oui-top-0 oui-justify-start oui-py-2 oui-text-2xs oui-text-base-contrast-36\",\n props.classNames?.suffix,\n ),\n }}\n readOnly={props.readonly}\n />\n );\n },\n);\n\nCustomInput.displayName = \"CustomInput\";\n\nconst InputLabel = (\n props: PropsWithChildren<{ id: string; className?: string }>,\n) => {\n return (\n <label\n htmlFor={props.id}\n className={cn(\n \"oui-absolute oui-left-2 oui-top-[7px] oui-text-2xs oui-text-base-contrast-36\",\n props.className,\n )}\n >\n {props.children}\n </label>\n );\n};\n","import { CSSProperties, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { BBOOrderType } from \"@kodiak-finance/orderly-types\";\nimport { Box, Select, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport const BBOOrderTypeSelect = (props: {\n value?: BBOOrderType;\n onChange: (value: BBOOrderType) => void;\n contentStyle?: CSSProperties;\n}) => {\n const { t } = useTranslation();\n\n const options = useMemo(\n () => [\n {\n label: t(\"orderEntry.bbo.counterparty1\"),\n value: BBOOrderType.COUNTERPARTY1,\n },\n {\n label: t(\"orderEntry.bbo.counterparty5\"),\n value: BBOOrderType.COUNTERPARTY5,\n },\n {\n label: t(\"orderEntry.bbo.queue1\"),\n value: BBOOrderType.QUEUE1,\n },\n {\n label: t(\"orderEntry.bbo.queue5\"),\n value: BBOOrderType.QUEUE5,\n },\n ],\n [],\n );\n\n return (\n <Select.options\n testid=\"oui-testid-orderEntry-bbo-orderType-button\"\n currentValue={props.value}\n value={props.value}\n options={options}\n onValueChange={props.onChange}\n contentProps={{\n className: \"oui-bg-base-8 oui-w-full\",\n style: props.contentStyle,\n }}\n size={\"sm\"}\n classNames={{\n trigger: \"oui-border-none oui-bg-transparent\",\n }}\n valueFormatter={(value, option) => {\n const item = options.find((item) => item.value === value);\n\n return (\n <Box>\n <Text size=\"sm\">{item?.label}</Text>\n </Box>\n );\n }}\n />\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, cn, modal, Text } from \"@kodiak-finance/orderly-ui\";\nimport { OrderEntryScriptReturn } from \"../../../orderEntry.script\";\nimport { BBOStatus } from \"../../../utils\";\n\ntype LimitPriceSuffixProps = {\n quote: string;\n bbo: Pick<\n OrderEntryScriptReturn,\n \"bboStatus\" | \"bboType\" | \"onBBOChange\" | \"toggleBBO\"\n >;\n fillMiddleValue: OrderEntryScriptReturn[\"fillMiddleValue\"];\n};\n\nexport const LimitPriceSuffix = (props: LimitPriceSuffixProps) => {\n const { quote, bbo, fillMiddleValue } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"end\"\n className={cn(\"oui-order-entry-limit-price-input-suffix\", \"oui-text-2xs\")}\n >\n {quote}\n <Flex justify={\"end\"} itemAlign=\"center\" gap={2}>\n <Flex\n px={3}\n height={20}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"base\"\n className={cn(\n \"oui-mt-[2px] oui-cursor-pointer oui-select-none oui-border\",\n bbo.bboStatus === BBOStatus.ON\n ? \"oui-border-primary\"\n : \"oui-border-line-12\",\n bbo.bboStatus === BBOStatus.DISABLED && \"oui-cursor-not-allowed\",\n )}\n onClick={() => {\n if (bbo.bboStatus === BBOStatus.DISABLED) {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"xs\",\n content: (\n <Text intensity={54}>\n {t(\"orderEntry.bbo.disabled.tips\")}\n </Text>\n ),\n });\n } else {\n bbo.toggleBBO();\n }\n }}\n >\n <Text\n className={cn(\n bbo.bboStatus === BBOStatus.ON && \"oui-text-primary\",\n bbo.bboStatus === BBOStatus.OFF && \"oui-text-base-contrast-54\",\n bbo.bboStatus === BBOStatus.DISABLED &&\n \"oui-text-base-contrast-20\",\n )}\n >\n {t(\"orderEntry.bbo\")}\n </Text>\n </Flex>\n <Text\n className={cn(\n \"oui-select-none\",\n \"oui-cursor-pointer oui-text-primary\",\n )}\n onClick={fillMiddleValue}\n >\n Mid\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, memo } from \"react\";\nimport { Grid } from \"@kodiak-finance/orderly-ui\";\nimport { QuantityInput } from \"./quantityInput\";\nimport { TotalInput } from \"./totalInput\";\n\ntype QtyAndTotalInputProps = {\n order_quantity?: string;\n total?: string;\n};\n\nexport const QtyAndTotalInput: FC<QtyAndTotalInputProps> = memo((props) => {\n return (\n <Grid cols={2} className=\"oui-group oui-space-x-1\">\n <QuantityInput order_quantity={props.order_quantity} />\n <TotalInput total={props.total} />\n </Grid>\n );\n});\n\nQtyAndTotalInput.displayName = \"QtyAndTotalInput\";\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype QuantityInputProps = {\n order_quantity?: string;\n};\n\nexport const QuantityInput: FC<QuantityInputProps> = memo((props) => {\n const { t } = useTranslation();\n\n const { symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const { base, base_dp } = symbolInfo;\n\n return (\n <CustomInput\n id=\"order_quantity_input\"\n name=\"order_quantity_input\"\n label={t(\"common.qty\")}\n suffix={base}\n error={getErrorMsg(\"order_quantity\")}\n value={props.order_quantity}\n onChange={(e) => {\n setOrderValue(\"order_quantity\", e);\n }}\n formatters={[inputFormatter.dpFormatter(base_dp)]}\n onFocus={onFocus(InputType.QUANTITY)}\n onBlur={onBlur(InputType.QUANTITY)}\n className=\"!oui-rounded-r\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n />\n );\n});\n\nQuantityInput.displayName = \"QuantityInput\";\n","import { FC, memo, useEffect, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { OrderTotalType, TotalTypeSelect } from \"./totalTypeSelect\";\n\ntype TotalInputProps = {\n total?: string;\n};\n\n/**\n * order size = order size (notional) = quantity * price\n * Initial margin = order size / leverage = quantity * price / leverage\n * Order size = Initial margin * leverage = quantity * price\n */\nexport const TotalInput: FC<TotalInputProps> = memo((props) => {\n const { t } = useTranslation();\n const { total } = props;\n\n const [margin, setMargin] = useState(\"\");\n\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n leverage = 1,\n currentFocusInput,\n } = useOrderEntryContext();\n\n const { quote } = symbolInfo;\n\n const [totalType, setTotalType] = useLocalStorage<OrderTotalType>(\n \"orderly_order_total_type\",\n OrderTotalType.OrderSize,\n );\n\n useEffect(() => {\n if (total) {\n if (currentFocusInput !== InputType.MARGIN) {\n const margin = new Decimal(total).div(leverage).todp(2).toString();\n setMargin(margin);\n }\n } else {\n setMargin(\"\");\n }\n }, [total, leverage, currentFocusInput]);\n\n const onMarginChange = (val: string) => {\n const total = val ? new Decimal(val).mul(leverage).toString() : \"\";\n setOrderValue(\"total\", total);\n setMargin(val);\n };\n\n const prefix = <TotalTypeSelect value={totalType} onChange={setTotalType} />;\n\n if (totalType === OrderTotalType.InitialMargin) {\n return (\n <CustomInput\n id=\"order_margin_input\"\n name=\"order_margin_input\"\n label={`${t(\"orderEntry.initialMargin\")}≈`}\n prefix={prefix}\n suffix={quote}\n error={getErrorMsg(\"total\") ? \"initial margin error\" : \"\"}\n value={margin}\n onChange={onMarginChange}\n // national precision is 2\n formatters={[inputFormatter.dpFormatter(2)]}\n onFocus={onFocus(InputType.MARGIN)}\n onBlur={onBlur(InputType.MARGIN)}\n className=\"!oui-rounded-l\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n />\n );\n }\n\n return (\n <CustomInput\n id=\"order_total_input\"\n name=\"order_total_input\"\n label={`${t(\"orderEntry.orderSize\")}≈`}\n prefix={prefix}\n suffix={quote}\n error={getErrorMsg(\"total\")}\n value={props.total}\n onChange={(val) => {\n setOrderValue(\"total\", val);\n }}\n className=\"!oui-rounded-l\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n // national precision is 2\n formatters={[inputFormatter.dpFormatter(2)]}\n onFocus={onFocus(InputType.TOTAL)}\n onBlur={onBlur(InputType.TOTAL)}\n />\n );\n});\n\nTotalInput.displayName = \"TotalInput\";\n","import { FC, memo, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Select } from \"@kodiak-finance/orderly-ui\";\n\nexport enum OrderTotalType {\n OrderSize = \"orderSize\",\n InitialMargin = \"initialMargin\",\n}\n\ntype TotalTypeSelectProps = {\n value: OrderTotalType;\n onChange: (value: OrderTotalType) => void;\n};\n\nexport const TotalTypeSelect: FC<TotalTypeSelectProps> = memo((props) => {\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n {\n label: t(\"orderEntry.orderSize\"),\n value: OrderTotalType.OrderSize,\n },\n {\n label: t(\"orderEntry.initialMargin\"),\n value: OrderTotalType.InitialMargin,\n },\n ];\n }, [t]);\n\n return (\n <Select.options\n size={\"xs\"}\n value={props.value}\n valueFormatter={(value, option) => {\n const item = options.find((o) => o.value === value);\n return item?.label + \"≈\";\n }}\n classNames={{\n trigger: cn(\n \"oui-w-auto oui-border-none oui-bg-transparent\",\n \"oui-absolute oui-left-0 oui-top-[5px] oui-text-2xs oui-text-base-contrast-36\",\n ),\n }}\n onValueChange={props.onChange}\n options={options}\n />\n );\n});\n\nTotalTypeSelect.displayName = \"TotalTypeSelect\";\n","import { DistributionType, OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { cn, Grid } from \"@kodiak-finance/orderly-ui\";\nimport { QuantityDistributionInput } from \"./quantityDistributionInput\";\nimport { ScaledPriceInput } from \"./scaledPriceInput\";\nimport { ScaledQuantityInput } from \"./scaledQuantityInput\";\nimport { SkewInput } from \"./skewInput\";\nimport { TotalOrdersInput } from \"./totalOrdersInput\";\n\ntype ScaledOrderInputProps = {\n values: Partial<OrderlyOrder>;\n};\n\nexport const ScaledOrderInput = (props: ScaledOrderInputProps) => {\n const { values } = props;\n\n const showSkewInput = values.distribution_type === DistributionType.CUSTOM;\n\n return (\n <div className=\"oui-space-y-1\">\n <ScaledPriceInput\n start_price={values.start_price}\n end_price={values.end_price}\n />\n\n <Grid cols={2} className=\"oui-group oui-space-x-1\">\n <ScaledQuantityInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n <TotalOrdersInput total_orders={values.total_orders} />\n </Grid>\n\n <QuantityDistributionInput\n distribution_type={values.distribution_type}\n className={cn(!showSkewInput && \"oui-rounded-b-xl\")}\n />\n\n {showSkewInput && <SkewInput skew={values.skew} />}\n </div>\n );\n};\n","import { FC, memo, useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DistributionType } from \"@kodiak-finance/orderly-types\";\nimport { Box, Checkbox, cn, Flex, modal, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\nexport type QuantityDistributionInputProps = {\n distribution_type?: DistributionType;\n className?: string;\n};\n\nexport const QuantityDistributionInput: FC<QuantityDistributionInputProps> =\n memo((props) => {\n const { t } = useTranslation();\n const { setOrderValue } = useOrderEntryContext();\n\n const showHint = () => {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"sm\",\n content: <QuantityDistributionHint value={props.distribution_type} />,\n // classNames: {\n // content: \"oui-bg-base-6\",\n // },\n });\n };\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"center\"\n p={2}\n r=\"base\"\n // gapY={1}\n width=\"100%\"\n intensity={600}\n className={cn(\n \"oui-t-rounded oui-text-base-contrast-36\",\n \"oui-border oui-border-solid oui-border-line\",\n props.className,\n )}\n >\n <Text\n size=\"2xs\"\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n onClick={showHint}\n >\n {t(\"orderEntry.quantityDistribution\")}\n </Text>\n <QuantityDistribution\n value={props.distribution_type}\n onValueChange={(value) => {\n setOrderValue(\"distribution_type\", value);\n }}\n />\n </Flex>\n );\n });\n\ntype QuantityDistributionHintProps = {\n value?: DistributionType;\n};\n\nconst QuantityDistributionHint: FC<QuantityDistributionHintProps> = (props) => {\n const { t } = useTranslation();\n const [type, setType] = useState(DistributionType.FLAT);\n\n useEffect(() => {\n setType(\n [\n DistributionType.FLAT,\n DistributionType.ASCENDING,\n DistributionType.DESCENDING,\n ].includes(props.value!)\n ? props.value!\n : DistributionType.FLAT,\n );\n }, [props.value]);\n\n const content = useMemo(() => {\n return [\n {\n type: DistributionType.FLAT,\n title: t(\"orderEntry.distributionType.flat\"),\n description: t(\"orderEntry.distributionType.flat.description\"),\n formula: `${t(\"orderEntry.skew\")} = 1`,\n quantity: <FlatQuantity />,\n },\n {\n type: DistributionType.ASCENDING,\n title: t(\"orderEntry.distributionType.ascending\"),\n description: t(\"orderEntry.distributionType.ascending.description\"),\n formula: `${t(\"orderEntry.skew\")} > 1`,\n quantity: <AscendingQuantity />,\n },\n {\n type: DistributionType.DESCENDING,\n title: t(\"orderEntry.distributionType.descending\"),\n description: t(\"orderEntry.distributionType.descending.description\"),\n formula: `0 < ${t(\"orderEntry.skew\")} < 1`,\n quantity: <DescendingQuantity />,\n },\n ];\n }, []);\n\n const currentContent = useMemo(() => {\n return content.find((item) => item.type === type);\n }, [content, type]);\n\n return (\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-54\">\n <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n <Text intensity={80}>\n {t(\"orderEntry.quantityDistribution.description\")}\n </Text>\n <Text>{t(\"orderEntry.quantityDistribution.formula\")}</Text>\n </Flex>\n <Flex intensity={600} p={1} r=\"base\" mt={3} itemAlign=\"start\">\n <Flex direction=\"column\" itemAlign=\"start\">\n {content.map((item) => (\n <Box\n key={item.title}\n intensity={type === item.type ? 500 : 600}\n width={78}\n p={2}\n className=\"oui-cursor-pointer oui-rounded-l\"\n onClick={() => {\n setType(item.type);\n }}\n >\n <Text>{item.title}</Text>\n </Box>\n ))}\n </Flex>\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n gapY={1}\n p={2}\n intensity={500}\n width=\"100%\"\n className={cn(\n \"oui-rounded-r\",\n type === DistributionType.FLAT && \"oui-rounded-bl\",\n type === DistributionType.ASCENDING && \"oui-rounded-l\",\n type === DistributionType.DESCENDING && \"oui-rounded-tl\",\n )}\n >\n <div>{currentContent?.formula}</div>\n <Text>{currentContent?.description}</Text>\n <Flex width=\"100%\" justify=\"center\">\n {currentContent?.quantity}\n </Flex>\n <Flex width=\"100%\" gapX={1} justify=\"center\">\n <Text className=\"oui-text-base-1\">{t(\"common.price\")}</Text>\n <PriceChart />\n </Flex>\n </Flex>\n </Flex>\n </div>\n );\n};\n\ntype QuantityDistributionProps = {\n value?: DistributionType;\n onValueChange: (value: DistributionType) => void;\n};\n\nconst QuantityDistribution: FC<QuantityDistributionProps> = (props) => {\n const { value, onValueChange } = props;\n const { t } = useTranslation();\n\n const onChange = (value: DistributionType) => (checked: boolean) => {\n onValueChange(value);\n };\n\n const distributionTypeMap = useMemo(() => {\n return {\n [DistributionType.FLAT]: t(\"orderEntry.distributionType.flat\"),\n [DistributionType.ASCENDING]: t(\n \"orderEntry.distributionType.ascending.abbr\",\n ),\n [DistributionType.DESCENDING]: t(\n \"orderEntry.distributionType.descending.abbr\",\n ),\n [DistributionType.CUSTOM]: t(\"orderEntry.distributionType.custom\"),\n };\n }, [t]);\n\n return (\n <Flex className={cn(\"oui-gap-x-[6px] lg:oui-gap-x-2\")} wrap=\"wrap\">\n {Object.values(DistributionType).map((type) => {\n return (\n <Flex itemAlign={\"center\"} key={type}>\n <Checkbox\n id={`distribution-type-${type}`}\n color={\"white\"}\n variant={\"radio\"}\n checked={value === type}\n onCheckedChange={onChange(type)}\n />\n <label\n htmlFor={`distribution-type-${type}`}\n className={cn(\n \"oui-text-2xs\",\n \"oui-ml-1\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {distributionTypeMap[type]}\n </label>\n </Flex>\n );\n })}\n </Flex>\n );\n};\n\nconst FlatQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"18\"\n y=\"18\"\n width=\"181\"\n height=\"4\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"15\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"62\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"109\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"156\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"203\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n </svg>\n );\n};\n\nconst AscendingQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"18\"\n y=\"18\"\n width=\"181\"\n height=\"4\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"15\"\n cy=\"20\"\n r=\"4.28571\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.42857\"\n />\n <circle\n cx=\"62\"\n cy=\"20\"\n r=\"5.14286\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.71429\"\n />\n <circle\n cx=\"109\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"156\"\n cy=\"20\"\n r=\"6.85714\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.28571\"\n />\n <circle\n cx=\"203\"\n cy=\"20\"\n r=\"7.71429\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.57143\"\n />\n </svg>\n );\n};\n\nconst DescendingQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"181\"\n height=\"4\"\n transform=\"matrix(-1 0 0 1 200 18)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"5\"\n cy=\"5\"\n r=\"4.28571\"\n transform=\"matrix(-1 0 0 1 208 15)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.42857\"\n />\n <circle\n cx=\"6\"\n cy=\"6\"\n r=\"5.14286\"\n transform=\"matrix(-1 0 0 1 162 14)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.71429\"\n />\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n transform=\"matrix(-1 0 0 1 116 13)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.85714\"\n transform=\"matrix(-1 0 0 1 70 12)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.28571\"\n />\n <circle\n cx=\"9\"\n cy=\"9\"\n r=\"7.71429\"\n transform=\"matrix(-1 0 0 1 24 11)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.57143\"\n />\n </svg>\n );\n};\n\nconst PriceChart = () => {\n return (\n <svg\n width=\"176\"\n height=\"8\"\n viewBox=\"0 0 176 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M175.354 4.35355C175.549 4.15829 175.549 3.84171 175.354 3.64645L172.172 0.464466C171.976 0.269204 171.66 0.269204 171.464 0.464466C171.269 0.659728 171.269 0.976311 171.464 1.17157L174.293 4L171.464 6.82843C171.269 7.02369 171.269 7.34027 171.464 7.53553C171.66 7.7308 171.976 7.7308 172.172 7.53553L175.354 4.35355ZM0 4V4.5H175V4V3.5H0V4Z\"\n fill=\"rgb(var(--oui-color-base-1))\"\n />\n </svg>\n );\n};\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype ScaledPriceInputProps = {\n start_price?: string;\n end_price?: string;\n};\n\nexport const ScaledPriceInput = memo((props: ScaledPriceInputProps) => {\n const { t } = useTranslation();\n\n const { symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const { quote, quote_dp } = symbolInfo;\n\n return (\n <>\n <CustomInput\n label={t(\"orderEntry.startPrice\")}\n suffix={quote}\n id=\"order_start_price_input\"\n value={props.start_price}\n error={getErrorMsg(\"start_price\")}\n onChange={(e) => {\n setOrderValue(\"start_price\", e);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.START_PRICE)}\n onBlur={onBlur(InputType.START_PRICE)}\n inputMode=\"decimal\"\n classNames={{\n root: \"oui-rounded-t-xl\",\n }}\n />\n <CustomInput\n label={t(\"orderEntry.endPrice\")}\n suffix={quote}\n id=\"order_end_price_input\"\n value={props.end_price}\n error={getErrorMsg(\"end_price\")}\n onChange={(val) => {\n setOrderValue(\"end_price\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.END_PRICE)}\n onBlur={onBlur(InputType.END_PRICE)}\n inputMode=\"decimal\"\n />\n </>\n );\n});\n\nScaledPriceInput.displayName = \"ScaledPriceInput\";\n","import { memo } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { ScaledQuantityUnit } from \"./scaledQuantityUnit\";\n\ntype ScaledQuantityInputProps = {\n order_quantity?: string;\n total?: string;\n};\n\nexport const ScaledQuantityInput = memo((props: ScaledQuantityInputProps) => {\n const { t } = useTranslation();\n const { errors, symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const [quantityUnit, setQuantityUnit] = useLocalStorage<\"quote\" | \"base\">(\n \"orderly_order_quantity_unit\",\n \"quote\",\n );\n\n const { base, quote, base_dp, quote_dp } = symbolInfo;\n\n const isBase = quantityUnit === \"base\";\n const unit = isBase ? base : quote;\n\n const suffix = (\n <ScaledQuantityUnit\n base={base}\n quote={quote}\n value={unit}\n onValueChange={(value) => {\n setQuantityUnit(value === base ? \"base\" : \"quote\");\n }}\n />\n );\n\n if (isBase) {\n return (\n <CustomInput\n label={t(\"common.qty\")}\n suffix={suffix}\n id=\"order_quantity_input\"\n name=\"order_quantity_input\"\n className=\"!oui-rounded-r\"\n value={props.order_quantity}\n error={getErrorMsg(\n \"order_quantity\",\n `${errors?.order_quantity?.value} ${base}`,\n )}\n onChange={(val) => {\n setOrderValue(\"order_quantity\", val);\n }}\n formatters={[inputFormatter.dpFormatter(base_dp)]}\n onFocus={onFocus(InputType.QUANTITY)}\n onBlur={onBlur(InputType.QUANTITY)}\n inputMode=\"decimal\"\n />\n );\n }\n\n return (\n <CustomInput\n label={t(\"common.qty\")}\n suffix={suffix}\n id=\"order_total_input\"\n name=\"order_total_input\"\n className=\"!oui-rounded-r\"\n value={props.total}\n error={getErrorMsg(\"order_quantity\", `${errors?.total?.value} ${quote}`)}\n onChange={(val) => {\n setOrderValue(\"total\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.TOTAL)}\n onBlur={onBlur(InputType.TOTAL)}\n inputMode=\"decimal\"\n />\n );\n});\n","import { FC, useMemo } from \"react\";\nimport { Select, Text, cn } from \"@kodiak-finance/orderly-ui\";\n\nexport type QuantityUnitProps = {\n base: string;\n quote: string;\n value: string;\n onValueChange: (value: string) => void;\n};\n\nconst valueRenderer = (value: string) => {\n return (\n <Text size=\"2xs\" intensity={36}>\n {value}\n </Text>\n );\n};\n\nexport const ScaledQuantityUnit: FC<QuantityUnitProps> = (props) => {\n const { base, quote } = props;\n\n const options = useMemo(() => {\n return [{ name: quote }, { name: base }];\n }, [base, quote]);\n\n return (\n <Select.tokens\n variant=\"text\"\n size=\"xs\"\n iconSize=\"2xs\"\n tokens={options}\n classNames={{\n trigger: cn(\n \"oui-absolute oui-right-0 oui-top-1\",\n \"oui-w-full oui-justify-end\",\n ),\n }}\n value={props.value}\n onValueChange={props.onValueChange}\n valueFormatter={valueRenderer}\n contentProps={{\n align: \"end\",\n alignOffset: -1,\n sideOffset: -4,\n className: \"oui-border oui-border-line-6\",\n }}\n />\n );\n};\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype SkewInputProps = {\n skew?: string;\n};\n\nexport const SkewInput = memo((props: SkewInputProps) => {\n const { t } = useTranslation();\n\n const { onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n return (\n <CustomInput\n id=\"order_skew_input\"\n label={t(\"orderEntry.skew\")}\n value={props.skew}\n error={getErrorMsg(\"skew\")}\n onChange={(val) => {\n setOrderValue(\"skew\", val);\n }}\n onFocus={onFocus(InputType.SKEW)}\n onBlur={onBlur(InputType.SKEW)}\n inputMode=\"decimal\"\n overrideFormatters={[\n inputFormatter.rangeFormatter({ min: 0, max: 100, dp: 2 }),\n inputFormatter.dpFormatter(2),\n ]}\n classNames={{\n root: \"oui-rounded-b-xl\",\n }}\n />\n );\n});\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype TotalOrdersInputProps = {\n total_orders?: string;\n};\n\nexport const TotalOrdersInput = memo((props: TotalOrdersInputProps) => {\n const { t } = useTranslation();\n const { onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n return (\n <CustomInput\n label={t(\"orderEntry.totalOrders\")}\n placeholder=\"2-20\"\n id=\"order_total_orders_input\"\n className={\"!oui-rounded-l\"}\n value={props.total_orders}\n error={getErrorMsg(\"total_orders\")}\n onChange={(val) => {\n setOrderValue(\"total_orders\", val);\n }}\n overrideFormatters={[\n // inputFormatter.rangeFormatter({ min: 2, max: 20 }),\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(0),\n ]}\n onFocus={onFocus(InputType.TOTAL_ORDERS)}\n onBlur={onBlur(InputType.TOTAL_ORDERS)}\n inputMode=\"numeric\"\n />\n );\n});\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype TriggerPriceInputProps = {\n trigger_price?: string;\n};\n\nexport const TriggerPriceInput: FC<TriggerPriceInputProps> = memo((props) => {\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n triggerPriceInputRef,\n } = useOrderEntryContext();\n\n return (\n <div className=\"oui-group\">\n <div className=\"oui-group\">\n <CustomInput\n ref={triggerPriceInputRef}\n id=\"order_trigger_price_input\"\n name=\"order_trigger_price_input\"\n label={t(\"common.trigger\")}\n suffix={symbolInfo.quote}\n value={props.trigger_price}\n onChange={(e) => {\n setOrderValue(\"trigger_price\", e);\n }}\n error={getErrorMsg(\"trigger_price\")}\n formatters={[inputFormatter.dpFormatter(symbolInfo.quote_dp)]}\n onFocus={onFocus(InputType.TRIGGER_PRICE)}\n onBlur={onBlur(InputType.TRIGGER_PRICE)}\n inputMode=\"decimal\"\n />\n </div>\n </div>\n );\n});\n\nTriggerPriceInput.displayName = \"TriggerPriceInput\";\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype ActivePriceInputProps = {\n activated_price?: string;\n};\n\nexport const ActivePriceInput = memo<ActivePriceInputProps>((props) => {\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n activatedPriceInputRef,\n } = useOrderEntryContext();\n\n return (\n <div className=\"oui-group\">\n <CustomInput\n ref={activatedPriceInputRef}\n id=\"order_activated_price_input\"\n name=\"order_activated_price_input\"\n label={t(\"common.triggerPrice\")}\n placeholder={`0 (${t(\"common.optional\")})`}\n suffix={symbolInfo.quote}\n error={getErrorMsg(\"activated_price\")}\n value={props.activated_price}\n onChange={(val: string) => {\n setOrderValue(\"activated_price\", val);\n }}\n formatters={[inputFormatter.dpFormatter(symbolInfo.quote_dp)]}\n onFocus={onFocus(InputType.ACTIVATED_PRICE)}\n onBlur={onBlur(InputType.ACTIVATED_PRICE)}\n inputMode=\"decimal\"\n />\n </div>\n );\n});\n\nActivePriceInput.displayName = \"ActivePriceInput\";\n","import { FC, memo, useCallback, useRef } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { TrailingCallbackType } from \"@kodiak-finance/orderly-types\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { CallbackRatePercentages } from \"./callbackRatePercentages\";\nimport { TrailingCallbackSelect } from \"./trailingCallbackSelect\";\n\ntype TrailingCallbackInputProps = {\n callback_value?: string;\n callback_rate?: string;\n};\n\nexport const TrailingCallbackInput: FC<TrailingCallbackInputProps> = memo(\n (props) => {\n const { callback_value, callback_rate } = props;\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n } = useOrderEntryContext();\n const { quote, quote_dp } = symbolInfo;\n // const [open, setOpen] = useState(false);\n\n const lastCallbackValueRef = useRef<string>();\n const lastCallbackRateRef = useRef<string>();\n\n const [callbackType, setCallbackType] = useLocalStorage(\n \"orderly_order_trailing_callback_type\",\n TrailingCallbackType.VALUE,\n );\n\n const onCallbackTypeChange = useCallback(\n (type: TrailingCallbackType) => {\n setCallbackType(type);\n // when switch to callback rate, save the last callback value\n if (type === TrailingCallbackType.RATE) {\n lastCallbackValueRef.current = callback_value;\n setOrderValues({\n callback_value: \"\",\n callback_rate: lastCallbackRateRef.current,\n });\n // when switch to callback value, save the last callback rate\n } else {\n lastCallbackRateRef.current = callback_rate;\n setOrderValues({\n callback_value: lastCallbackValueRef.current,\n callback_rate: \"\",\n });\n }\n },\n [callback_value, callback_rate],\n );\n\n const suffix = (\n <TrailingCallbackSelect\n quote={quote}\n value={callbackType}\n onValueChange={onCallbackTypeChange}\n />\n );\n\n // don't need to convert trailing rate to estimated value\n // const estimatedValue = useMemo(() => {\n // if (callbackType === TrailingCallbackType.RATE) {\n // return callback_rate\n // }\n // }, [callback_rate, callbackType]);\n\n // const tooltipContent = estimatedValue\n // ? `≈ ${estimatedValue} ${quote}`\n // : undefined;\n\n // const openTooltip = useCallback(() => {\n // setOpen(true);\n // }, []);\n\n // const closeTooltip = useCallback(() => {\n // setOpen(false);\n // }, []);\n\n if (callbackType === TrailingCallbackType.RATE) {\n return (\n // <Tooltip\n // content={tooltipContent}\n // open={open && !!tooltipContent}\n // sideOffset={-25}\n // className=\"!oui-p-3\"\n // >\n <div className=\"oui-relative\">\n <CustomInput\n id=\"order_callback_rate_input\"\n name=\"order_callback_rate_input\"\n label={t(\"orderEntry.trailingRate\")}\n suffix={suffix}\n error={getErrorMsg(\"callback_rate\")}\n value={callback_rate}\n onChange={(val: string) => {\n setOrderValue(\"callback_rate\", val);\n }}\n formatters={[inputFormatter.dpFormatter(1)]}\n onFocus={(e) => {\n onFocus(InputType.CALLBACK_RATE)(e);\n // openTooltip();\n }}\n onBlur={(e) => {\n onBlur(InputType.CALLBACK_RATE)(e);\n // closeTooltip();\n }}\n inputMode=\"decimal\"\n classNames={{\n root: \"oui-h-[68px]\",\n input: \"oui-mb-5\",\n prefix: \"!oui-top-1\",\n }}\n />\n <CallbackRatePercentages\n className=\"oui-absolute oui-bottom-1 oui-left-2\"\n callback_rate={callback_rate}\n // onClick={openTooltip}\n />\n </div>\n // </Tooltip>\n );\n }\n\n return (\n <CustomInput\n id=\"order_callback_value_input\"\n name=\"order_callback_value_input\"\n label={t(\"orderEntry.trailingValue\")}\n suffix={suffix}\n error={getErrorMsg(\"callback_value\")}\n value={callback_value}\n onChange={(val: string) => {\n setOrderValue(\"callback_value\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.CALLBACK_VALUE)}\n onBlur={onBlur(InputType.CALLBACK_VALUE)}\n inputMode=\"decimal\"\n classNames={{\n input: \"!oui-mb-[6px]\",\n prefix: \"!oui-top-1\",\n }}\n />\n );\n },\n);\n\nTrailingCallbackInput.displayName = \"TrailingCallbackInput\";\n","import { FC, memo } from \"react\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\nconst percentages = [1, 2, 3, 5];\n\ntype CallbackRatePercentagesProps = {\n className?: string;\n callback_rate?: string;\n onClick?: (value: string) => void;\n};\n\nexport const CallbackRatePercentages: FC<CallbackRatePercentagesProps> = memo(\n (props) => {\n const { setOrderValue } = useOrderEntryContext();\n\n return (\n <Flex gapX={2} className={props.className}>\n {percentages.map((item) => {\n const value = item.toString();\n const isActive = props.callback_rate === value;\n\n return (\n <Flex\n key={item}\n justify=\"center\"\n itemAlign=\"center\"\n width={46}\n height={18}\n className={cn(\n \"oui-cursor-pointer oui-select-none\",\n \"oui-rounded oui-border\",\n isActive ? \"oui-border-base-contrast-36\" : \"oui-border-line-12\",\n )}\n onClick={() => {\n setOrderValue(\"callback_rate\", value);\n props.onClick?.(value);\n }}\n >\n <Text size=\"2xs\" intensity={isActive ? 80 : 36} weight=\"semibold\">\n {item}%\n </Text>\n </Flex>\n );\n })}\n </Flex>\n );\n },\n);\n\nCallbackRatePercentages.displayName = \"CallbackRatePercentages\";\n","import { FC, memo, useMemo } from \"react\";\nimport { TrailingCallbackType } from \"@kodiak-finance/orderly-types\";\nimport { Select, cn } from \"@kodiak-finance/orderly-ui\";\n\ntype TrailingCallbackSelectProps = {\n quote: string;\n value: string;\n onValueChange: (value: TrailingCallbackType) => void;\n};\n\nexport const TrailingCallbackSelect: FC<TrailingCallbackSelectProps> = memo(\n (props) => {\n const { quote } = props;\n\n const options = useMemo(() => {\n return [\n { label: quote, value: TrailingCallbackType.VALUE },\n { label: \"%\", value: TrailingCallbackType.RATE },\n ];\n }, [quote]);\n\n return (\n <Select.options\n variant=\"text\"\n size=\"xs\"\n options={options}\n classNames={{\n trigger: cn(\n \"oui-absolute oui-right-0 oui-top-1\",\n \"oui-w-[124px] oui-justify-end\",\n \"oui-text-base-contrast-36\",\n ),\n }}\n value={props.value}\n onValueChange={props.onValueChange}\n contentProps={{\n align: \"end\",\n alignOffset: -1,\n sideOffset: -4,\n className: \"oui-border oui-border-line-6\",\n }}\n />\n );\n },\n);\n\nTrailingCallbackSelect.displayName = \"trailingCallbackSelect\";\n","import { OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { QtyAndTotalInput } from \"../qtyAndTotal/qtyAndTotalInput\";\nimport { ActivePriceInput } from \"./activePriceInput\";\nimport { TrailingCallbackInput } from \"./trailingCallbackInput\";\n\ntype TrailingStopInputProps = {\n values: Partial<OrderlyOrder>;\n};\n\nexport const TrailingStopInput = (props: TrailingStopInputProps) => {\n const { values } = props;\n\n return (\n <div className=\"oui-space-y-1\">\n <ActivePriceInput activated_price={values.activated_price} />\n <TrailingCallbackInput\n callback_value={values.callback_value}\n callback_rate={values.callback_rate}\n />\n <QtyAndTotalInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n </div>\n );\n};\n","import { memo, useEffect, useMemo, useState } from \"react\";\nimport { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Slider, textVariants, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { InputType } from \"../../types\";\nimport { useOrderEntryContext } from \"../orderEntryContext\";\n\ntype QuantitySliderProps = {\n canTrade: boolean;\n side: OrderSide;\n order_quantity?: string;\n maxQty: number;\n};\nconst SLIDER_MIN = 0;\nconst SLIDER_MAX = 100;\n\nexport const QuantitySlider = memo((props: QuantitySliderProps) => {\n const { canTrade, side, order_quantity, maxQty } = props;\n\n const [sliderValue, setSliderValue] = useState<number>(0);\n\n const { setOrderValue, symbolInfo, lastQuantityInputType } =\n useOrderEntryContext();\n\n const { base_dp, base_tick } = symbolInfo;\n\n const { t } = useTranslation();\n\n const color = useMemo(\n () => (canTrade ? (side === OrderSide.BUY ? \"buy\" : \"sell\") : undefined),\n [side, canTrade],\n );\n\n const maxLabel = useMemo(() => {\n return side === OrderSide.BUY\n ? t(\"orderEntry.maxBuy\")\n : t(\"orderEntry.maxSell\");\n }, [side, t]);\n\n const onSliderValueChange = (value: number) => {\n lastQuantityInputType.current = InputType.QUANTITY_SLIDER;\n setSliderValue(value);\n };\n\n const sliderToQuantity = (value: number) => {\n const newQty = new Decimal(value)\n .div(SLIDER_MAX)\n .mul(maxQty)\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n setOrderValue(\"order_quantity\", utils.formatNumber(newQty, base_tick));\n };\n\n const onMax = () => {\n onSliderValueChange(SLIDER_MAX);\n // when previous slider value is max, quantity will not update by useEffect, so must set quantity manually to maxQty\n if (sliderValue === SLIDER_MAX) {\n sliderToQuantity(SLIDER_MAX);\n }\n };\n\n // update quantity when slider value and maxQty changes\n useEffect(() => {\n if (lastQuantityInputType.current === InputType.QUANTITY_SLIDER) {\n sliderToQuantity(sliderValue);\n }\n }, [sliderValue, maxQty]);\n\n useEffect(() => {\n const quantityToSlider = () => {\n if (order_quantity && Number(order_quantity) !== 0 && maxQty !== 0) {\n return new Decimal(Math.min(Number(order_quantity), maxQty))\n .div(maxQty)\n .mul(SLIDER_MAX)\n .todp(2, Decimal.ROUND_DOWN)\n .toNumber();\n }\n return 0;\n };\n\n // update slider value when last quantity input type is not quantity slider\n if (lastQuantityInputType.current !== InputType.QUANTITY_SLIDER) {\n setSliderValue(quantityToSlider());\n }\n }, [order_quantity, maxQty]);\n\n return (\n <div>\n <Slider\n disabled={maxQty === 0 || !canTrade}\n value={[sliderValue]}\n color={color}\n markCount={4}\n showTip\n onValueChange={(e) => {\n onSliderValueChange(e[0]);\n }}\n min={SLIDER_MIN}\n max={SLIDER_MAX}\n />\n <Flex justify={\"between\"} className=\"oui-pt-1 xl:oui-pt-2\">\n <Text.numeral\n size={\"2xs\"}\n color={color}\n dp={2}\n padding={false}\n suffix=\"%\"\n >\n {canTrade ? sliderValue : 0}\n </Text.numeral>\n <Flex>\n <button\n className={textVariants({\n size: \"2xs\",\n className: \"oui-mr-1\",\n })}\n onClick={onMax}\n data-testid=\"oui-testid-orderEntry-maxQty-value-button\"\n >\n {maxLabel}\n </button>\n <Text.numeral\n size={\"2xs\"}\n color={color}\n dp={base_dp}\n padding={false}\n data-testid=\"oui-testid-orderEntry-maxQty-value\"\n >\n {canTrade ? maxQty : 0}\n </Text.numeral>\n </Flex>\n </Flex>\n </div>\n );\n});\n\nQuantitySlider.displayName = \"QuantitySlider\";\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Switch } from \"@kodiak-finance/orderly-ui\";\n\nexport interface ReduceOnlySwitchProps {\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n className?: string;\n testId?: string;\n}\n\nexport const ReduceOnlySwitch: React.FC<ReduceOnlySwitchProps> = ({\n checked,\n onCheckedChange,\n className,\n testId = \"oui-testid-orderEntry-reduceOnly-switch\",\n}) => {\n const { t } = useTranslation();\n\n return (\n <Flex itemAlign={\"center\"} gapX={1} className={className}>\n <Switch\n data-testid={testId}\n className=\"oui-h-[14px]\"\n id={\"reduceOnly\"}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <label htmlFor={\"reduceOnly\"} className={\"oui-text-xs\"}>\n {t(\"orderEntry.reduceOnly\")}\n </label>\n </Flex>\n );\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationResult,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport {\n OrderlyOrder,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n cn,\n Flex,\n Text,\n Input,\n inputFormatter,\n Switch,\n SettingFillIcon,\n useScreen,\n DotStatus,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Grid } from \"@kodiak-finance/orderly-ui\";\nimport { TPSLPositionTypeWidget } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { useOrderEntryContext } from \"./orderEntryContext\";\nimport { PnlInputWidget } from \"./pnlInput/pnlInput.widget\";\nimport { usePnlInputContext } from \"./pnlInput/pnlInputContext\";\nimport { PnlInputProvider } from \"./pnlInput/pnlInputProvider\";\nimport { PNL_Values } from \"./pnlInput/useBuilder.script\";\nimport { ReduceOnlySwitch } from \"./reduceOnlySwitch\";\n\ntype OrderValueKeys = keyof OrderlyOrder;\n\ntype Est_Values = PNL_Values & {\n trigger_price?: string;\n};\n\ntype TPSL_Values = {\n tp: Est_Values;\n sl: Est_Values;\n position_type: PositionType;\n};\n\nexport const OrderTPSL = (props: {\n // onCancelTPSL: () => void;\n // onEnableTP_SL: () => void;\n switchState: boolean;\n onSwitchChanged: (state: boolean) => void;\n onChange: (key: OrderValueKeys, value: any) => void;\n values: TPSL_Values;\n orderType: OrderType;\n errors: OrderValidationResult | null;\n quote_dp: number | undefined;\n showTPSLAdvanced: () => void;\n setOrderValue: (key: string, value: any) => void;\n reduceOnlyChecked?: boolean;\n onReduceOnlyChange?: (checked: boolean) => void;\n}) => {\n const tpslFormRef = React.useRef<HTMLDivElement>(null);\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n useEffect(() => {\n if (\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n ) {\n props.onSwitchChanged(false);\n }\n }, [props.orderType]);\n\n if (\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n ) {\n return null;\n }\n\n const isSlPriceWarning =\n props.errors?.[\"sl_trigger_price\"]?.[\"type\"] ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n return (\n <div>\n <Flex itemAlign={\"center\"} justify={\"between\"}>\n <Flex itemAlign={\"center\"} gapX={1}>\n <Switch\n id={\"order_entry_tpsl\"}\n className=\"oui-h-[14px]\"\n checked={props.switchState}\n disabled={\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n }\n onCheckedChange={(checked) => {\n props.onSwitchChanged(checked);\n }}\n />\n <label htmlFor={\"order_entry_tpsl\"} className={\"oui-text-xs\"}>\n {t(\"common.tpsl\")}\n </label>\n {/* <ExclamationFillIcon\n color=\"white\"\n // opacity={0.36}\n size={14}\n opacity={1}\n className=\"oui-cursor-pointer oui-text-white/[.36] hover:oui-text-white/80\"\n onClick={() => {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"xs\",\n content: (\n <Text intensity={54}>{t(\"orderEntry.tpsl.tips\")}</Text>\n ),\n });\n }}\n /> */}\n </Flex>\n <Flex itemAlign={\"center\"} gapX={2}>\n {isMobile && props.onReduceOnlyChange && (\n <ReduceOnlySwitch\n checked={props.reduceOnlyChecked ?? false}\n onCheckedChange={props.onReduceOnlyChange}\n />\n )}\n {!isMobile && (\n <TPSLAdvancedButton\n className={cn(\n \"oui-group oui-invisible\",\n props.switchState && \"oui-visible\",\n )}\n showTPSLAdvanced={props.showTPSLAdvanced}\n />\n )}\n </Flex>\n </Flex>\n <div\n className={cn(\n \"oui-max-h-0 oui-overflow-hidden oui-transition-all\",\n props.switchState && \"oui-max-h-[120px]\",\n )}\n onTransitionEnd={() => {\n console.log(\"transition end\");\n tpslFormRef.current?.style.setProperty(\n \"opacity\",\n props.switchState ? \"1\" : \"0\",\n );\n }}\n >\n <TPSLInputForm\n ref={tpslFormRef}\n setOrderValue={props.setOrderValue}\n onChange={props.onChange}\n values={props.values}\n errors={isSlPriceWarning ? {} : props.errors}\n quote_dp={props.quote_dp}\n showTPSLAdvanced={props.showTPSLAdvanced}\n isMobile={isMobile}\n isSlPriceWarning={isSlPriceWarning}\n />\n </div>\n\n {isSlPriceWarning && <TPSLPriceWarning errors={props.errors} />}\n </div>\n );\n};\n\nconst TPSLPriceWarning = (props: { errors: OrderValidationResult | null }) => {\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n\n return (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={getErrorMsg(\"sl_trigger_price\")}\n />\n );\n};\n\nconst TPSLInputForm = React.forwardRef<\n HTMLDivElement,\n {\n setOrderValue: (key: string, value: any) => void;\n onChange: (key: OrderValueKeys, value: any) => void;\n values: TPSL_Values;\n errors: OrderValidationResult | null;\n quote_dp: number | undefined;\n showTPSLAdvanced: () => void;\n isMobile: boolean;\n isSlPriceWarning?: boolean;\n }\n>((props, ref) => {\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n const { t } = useTranslation();\n\n return (\n <div\n ref={ref}\n className={\"oui-space-y-1 oui-px-px oui-py-2 oui-transition-all\"}\n >\n <Flex itemAlign={\"center\"} justify={\"between\"} gapX={2}>\n <TPSLPositionTypeWidget\n value={props.values.position_type}\n onChange={props.onChange}\n />\n {props.isMobile && (\n <TPSLAdvancedButton\n showTPSLAdvanced={props.showTPSLAdvanced}\n isMobile={props.isMobile}\n />\n )}\n </Flex>\n <PnlInputProvider values={props.values.tp} type={\"TP\"}>\n <TPSLInputRow\n type={\"TP\"}\n error={getErrorMsg(\"tp_trigger_price\")}\n onChange={props.onChange}\n values={props.values.tp}\n quote_dp={props.quote_dp}\n testIds={{\n first: \"oui-testid-orderEntry-tpsl-tpPrice-input\",\n second: \"oui-testid-orderEntry-tpsl-tpPnl-input\",\n dropDown: \"oui-testid-orderEntry-tpsl-tp-dropDown-trigger-button\",\n }}\n />\n </PnlInputProvider>\n <PnlInputProvider values={props.values.sl} type={\"SL\"}>\n <TPSLInputRow\n type={\"SL\"}\n error={getErrorMsg(\"sl_trigger_price\")}\n onChange={props.onChange}\n values={props.values.sl}\n quote_dp={props.quote_dp}\n testIds={{\n first: \"oui-testid-orderEntry-tpsl-slPrice-input\",\n second: \"oui-testid-orderEntry-tpsl-slPnl-input\",\n dropDown: \"oui-testid-orderEntry-tpsl-sl-dropDown-trigger-button\",\n }}\n classNames={{\n root: props.isSlPriceWarning\n ? \"oui-outline-warning-darken focus-within:oui-outline-warning-darken\"\n : undefined,\n }}\n />\n </PnlInputProvider>\n </div>\n );\n});\n\nTPSLInputForm.displayName = \"TPSLInputForm\";\n\nconst TPSLAdvancedButton = (props: {\n showTPSLAdvanced: () => void;\n className?: string;\n isMobile?: boolean;\n}) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n itemAlign={\"center\"}\n gapX={1}\n onClick={props.showTPSLAdvanced}\n className={cn(\"oui-group oui-cursor-pointer\", props.className)}\n >\n <Text\n className={cn(\n \"oui-cursor-pointer group-hover:oui-text-base-contrast\",\n props.isMobile ? \"oui-text-2xs\" : \"oui-text-sm\",\n )}\n >\n {t(\"tpsl.advanced\")}\n </Text>\n <SettingFillIcon\n size={12}\n className=\"oui-text-base-contrast-54 group-hover:oui-text-base-contrast oui-cursor-pointer\"\n opacity={1}\n onClick={props.showTPSLAdvanced}\n />\n </Flex>\n );\n};\n\n//------- TPSLTriggerPriceInput start -------\nconst TPSLTriggerPriceInput = (props: {\n type: \"TP\" | \"SL\";\n error: string | undefined;\n values: Est_Values;\n onChange: (value: string) => void;\n quote_dp: number | undefined;\n testId?: string;\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}) => {\n const { t } = useTranslation();\n const { errorMsgVisible } = useOrderEntryContext();\n const { tipsEle } = usePnlInputContext();\n const [prefix, setPrefix] = useState<string>(`${props.type} Price`);\n const [placeholder, setPlaceholder] = useState<string>(\"USDC\");\n\n const [tipVisible, setTipVisible] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const [innerValue, setInnerValue] = useState<string>(\n props.values.trigger_price ?? \"\",\n );\n\n useEffect(() => {\n if (isFocused) {\n return;\n }\n setInnerValue(props.values.trigger_price ?? \"\");\n }, [props.values.trigger_price, isFocused]);\n\n const triggerPriceToolTipEle = useMemo(() => {\n if (props.error && errorMsgVisible) return props.error;\n if (tipVisible) return tipsEle;\n\n return null;\n }, [props.error, errorMsgVisible, tipVisible, tipsEle]);\n\n const getPrefixLabel = (trigger_price?: string) => {\n let _prefix = props.type === \"TP\" ? t(\"tpsl.tpPrice\") : t(\"tpsl.slPrice\");\n\n if (trigger_price) {\n _prefix = props.type === \"TP\" ? t(\"tpsl.tp\") : t(\"tpsl.sl\");\n }\n return _prefix;\n };\n\n const onValueChange = (value: string) => {\n setInnerValue(value);\n props.onChange(value);\n };\n\n // console.log(\"props.values.trigger_price\", props.values.trigger_price);\n\n useEffect(() => {\n setPrefix(getPrefixLabel(props.values.trigger_price));\n\n if (!isFocused) {\n setInnerValue(props.values.trigger_price ?? \"\");\n }\n }, [props.type, props.values.trigger_price]);\n\n const onFocus = () => {\n setPrefix(props.type === \"TP\" ? t(\"tpsl.tp\") : t(\"tpsl.sl\"));\n setPlaceholder(\"\");\n setTipVisible(true);\n setIsFocused(true);\n };\n\n const onBlur = () => {\n setPrefix(getPrefixLabel(props.values.trigger_price));\n setPlaceholder(\"USDC\");\n setTipVisible(false);\n setIsFocused(false);\n props.onChange(innerValue);\n };\n\n return (\n <Input.tooltip\n data-testid={props.testId}\n prefix={prefix}\n size={\"md\"}\n placeholder={placeholder}\n align=\"right\"\n onFocus={onFocus}\n onBlur={onBlur}\n tooltip={triggerPriceToolTipEle}\n tooltipProps={{\n content: {\n side: props.type === \"TP\" ? \"top\" : \"bottom\",\n },\n }}\n color={props.error ? \"danger\" : undefined}\n autoComplete={\"off\"}\n value={innerValue}\n classNames={{\n additional: \"oui-text-base-contrast-54\",\n root: cn(\"oui-pr-2 md:oui-pr-3\", props.classNames?.root),\n prefix: cn(\"oui-pr-1 md:oui-pr-2\", props.classNames?.prefix),\n input: cn(\n \"oui-text-2xs placeholder:oui-text-2xs\",\n props.classNames?.input,\n ),\n }}\n // onChange={props.onChange}\n onValueChange={onValueChange}\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(props.quote_dp ?? 2),\n inputFormatter.currencyFormatter,\n ]}\n />\n );\n};\n\n//------- TPSLTriggerPriceInput end -------\n\nconst TPSLInputRow: React.FC<{\n type: \"TP\" | \"SL\";\n values: Est_Values;\n error?: string;\n onChange: (key: OrderValueKeys, value: any) => void;\n quote_dp: number | undefined;\n testIds?: {\n first?: string;\n second?: string;\n dropDown?: string;\n };\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}> = (props) => {\n return (\n <Grid cols={2} gapX={1}>\n <TPSLTriggerPriceInput\n testId={props.testIds?.first}\n type={props.type}\n error={props.error}\n values={props.values ?? \"\"}\n classNames={props.classNames}\n onChange={(event) => {\n props.onChange(\n props.type === \"SL\" ? \"sl_trigger_price\" : \"tp_trigger_price\",\n event,\n );\n }}\n quote_dp={props.quote_dp}\n />\n\n <PnlInputWidget\n testIds={{\n input: props.testIds?.second,\n dropDown: props.testIds?.dropDown,\n }}\n onChange={props.onChange}\n quote={\"USDC\"}\n quote_dp={2}\n type={props.type}\n values={{\n PnL: props.values.PnL,\n Offset: props.values.Offset,\n \"Offset%\": props.values[\"Offset%\"],\n ROI: props.values.ROI,\n }}\n />\n </Grid>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n CaretDownIcon,\n Input,\n MenuItem,\n Text,\n SimpleDropdownMenu,\n} from \"@kodiak-finance/orderly-ui\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { PNLInputState, PnLMode } from \"./useBuilder.script\";\n\nexport type PNLInputProps = PNLInputState & {\n testIds?: {\n input?: string;\n dropDown?: string;\n };\n quote: string;\n type: \"TP\" | \"SL\";\n};\n\nexport const PNLInput = (props: PNLInputProps) => {\n const {\n mode,\n modes,\n modeLabelMap,\n onModeChange,\n onValueChange,\n quote,\n quote_dp,\n value,\n type,\n tips,\n onFocus,\n onBlur,\n setFocus,\n } = props;\n\n const [prefix, setPrefix] = useState<string>(mode);\n\n const [placeholder, setPlaceholder] = useState<string>(\n mode === PnLMode.PERCENTAGE ? \"%\" : quote,\n );\n\n useEffect(() => {\n setPrefix(mode);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n }, [mode]);\n\n useEffect(() => {\n setPrefix(!!value ? \"\" : mode);\n }, [value]);\n\n const id = useMemo(() => `${type.toLowerCase()}_${mode.toLowerCase()}`, []);\n\n return (\n <Input.tooltip\n prefix={modeLabelMap[prefix as keyof typeof modeLabelMap] || prefix}\n size={\"md\"}\n placeholder={placeholder}\n id={id}\n align={\"right\"}\n value={value}\n tooltip={tips}\n tooltipProps={{\n content: {\n side: props.type === \"TP\" ? \"top\" : \"bottom\",\n },\n }}\n data-testid={props.testIds?.input}\n autoComplete={\"off\"}\n inputMode=\"decimal\"\n onValueChange={onValueChange}\n formatters={[\n props.formatter({ dp: quote_dp, mode, type }),\n inputFormatter.currencyFormatter,\n // inputFormatter.identifierFormatter(),\n ]}\n classNames={{\n root: type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n additional: \"oui-text-base-contrast-54\",\n input: \"oui-text-inherit\",\n }}\n onFocus={() => {\n setPrefix(\"\");\n setPlaceholder(\"\");\n setFocus(true);\n onFocus();\n }}\n onBlur={() => {\n setPrefix(!!value ? \"\" : mode);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n onBlur();\n }}\n suffix={\n <>\n {mode === PnLMode.PERCENTAGE && !!value && (\n <Text size={\"2xs\"} color=\"inherit\" className=\"oui-ml-[2px]\">\n %\n </Text>\n )}\n <PNLMenus\n mode={mode}\n modes={modes}\n onModeChange={(item) => onModeChange(item.value as PnLMode)}\n testId={props.testIds?.dropDown}\n />\n </>\n }\n />\n );\n};\n\nconst PNLMenus = (props: {\n mode?: string;\n modes: MenuItem[];\n onModeChange: (value: MenuItem) => void;\n testId?: string;\n}) => {\n return (\n <SimpleDropdownMenu\n currentValue={props.mode}\n menu={props.modes}\n align={\"end\"}\n size={\"xs\"}\n className={\"oui-min-w-[80px]\"}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onSelect={(item) => props.onModeChange(item as MenuItem)}\n >\n <button className={\"oui-p-2\"} data-testid={props.testId}>\n <CaretDownIcon size={12} color={\"white\"} />\n </button>\n </SimpleDropdownMenu>\n );\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { MenuItem } from \"@kodiak-finance/orderly-ui\";\nimport type {\n InputFormatter,\n InputFormatterOptions,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal, todpIfNeed } from \"@kodiak-finance/orderly-utils\";\nimport { usePnlInputContext } from \"./pnlInputContext\";\n\nexport enum PnLMode {\n PnL = \"PnL\",\n OFFSET = \"Offset\",\n PERCENTAGE = \"Offset%\",\n}\n\nexport type PNL_Values = {\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n};\n\ntype PNL_Keys =\n | \"tp_offset\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"sl_offset\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\";\n\nexport type BuilderProps = {\n type: \"TP\" | \"SL\";\n\n quote_dp?: number;\n onChange: (key: PNL_Keys, value: number | string) => void;\n\n values: PNL_Values;\n};\n\nexport const usePNLInputBuilder = (props: BuilderProps) => {\n const { type, values, quote_dp } = props;\n const { t } = useTranslation();\n const [focus, setFocus] = useState(true);\n // const [mode, setMode] = useLocalStorage<PnLMode>(\n // \"TP/SL_Mode\",\n // PnLMode.PERCENTAGE\n // );\n const { mode, setMode, tipsEle } = usePnlInputContext();\n\n const [tipVisible, setTipVisible] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const key = useMemo<PNL_Keys>(() => {\n switch (mode) {\n case PnLMode.OFFSET:\n return `${type.toLowerCase()}_offset` as PNL_Keys;\n case PnLMode.PERCENTAGE:\n return `${type.toLowerCase()}_offset_percentage` as PNL_Keys;\n default:\n return `${type.toLowerCase()}_pnl` as PNL_Keys;\n }\n }, [mode]);\n\n const [innerValue, setInnerValue] = useState<string>(\n values[mode as keyof PNL_Values],\n );\n\n // const value = useMemo(() => {\n // // console.log(\"mode\", mode, values);\n // const value = values[mode as keyof PNL_Values];\n // // if (isFocused) {\n // // return value;\n // // }\n // return value;\n // }, [values, mode, isFocused]);\n\n useEffect(() => {\n if (isFocused) {\n return;\n }\n setInnerValue(values[mode as keyof PNL_Values]);\n }, [values, mode, isFocused]);\n\n const modes = useMemo<MenuItem[]>(() => {\n return [\n {\n label: t(\"tpsl.pnl\"),\n value: PnLMode.PnL,\n testId: `${PnLMode.PnL}_menu_item`,\n },\n {\n label: t(\"tpsl.offset\"),\n value: PnLMode.OFFSET,\n testId: `${PnLMode.OFFSET}_mneu_item`,\n },\n {\n label: `${t(\"tpsl.offset\")}%`,\n value: PnLMode.PERCENTAGE,\n testId: `${PnLMode.PERCENTAGE}_menu_item`,\n },\n ];\n }, [t]);\n\n const modeLabelMap = useMemo(() => {\n return {\n [PnLMode.PnL]: t(\"tpsl.pnl\"),\n [PnLMode.OFFSET]: t(\"tpsl.offset\"),\n [PnLMode.PERCENTAGE]: `${t(\"tpsl.offset\")}%`,\n };\n }, [t]);\n\n const percentageSuffix = useRef<string>(\"\");\n\n const onValueChange = (value: string) => {\n // console.log(\"onValueChange\", value);\n // if (!isFocused) {\n // props.onChange(key, value);\n // } else {\n // setInnerValue(value);\n // }\n setInnerValue(value);\n props.onChange(key, value);\n };\n\n const onFocus = () => {\n // updateTips();\n setTipVisible(true);\n setIsFocused(true);\n };\n\n /**\n * hide tips when input is blurred\n */\n const onBlur = () => {\n // setTips(undefined);\n setTipVisible(false);\n setIsFocused(false);\n props.onChange(key, innerValue);\n };\n\n const formatter = (options: {\n dp?: number;\n mode: PnLMode;\n type: \"TP\" | \"SL\";\n }): InputFormatter => {\n const { dp = 2 } = options;\n return {\n onRenderBefore: (\n value: string | number,\n options: InputFormatterOptions,\n ) => {\n value = `${value}`; // convert to string\n\n if (focus) {\n if (type === \"SL\" && mode === PnLMode.PnL) {\n value = value.startsWith(\"-\") ? value : \"-\" + value;\n }\n }\n\n if (value === \"\" || value === \"-\") return \"\";\n // if (mode === PnLMode.PnL || mode === PnLMode.OFFSET) {\n // return commify(value);\n // }\n\n if (mode === PnLMode.PERCENTAGE) {\n // value = new Decimal(\n // value.replace(\n // new RegExp(percentageSuffix.current.replace(\".\", \"\\\\.\") + \"$\"),\n // \"\"\n // )\n // )\n // .mul(100)\n // .toString();\n\n // return `${todpIfNeed(value, 2)}${percentageSuffix.current}`;\n return `${new Decimal(\n value.replace(\n new RegExp(percentageSuffix.current.replace(\".\", \"\\\\.\") + \"$\"),\n \"\",\n ),\n )\n .mul(100)\n .todp(2, 4)\n .toString()}${percentageSuffix.current}`;\n // return (Number(value) * 100).toFixed(2);\n } else if (mode === PnLMode.OFFSET) {\n value = todpIfNeed(value, dp);\n } else {\n // value = new Decimal(value).todp(2).toString();\n }\n\n return `${value}`;\n },\n onSendBefore: (value: string) => {\n if (/^\\-?0{2,}$/.test(value)) {\n return \"0\";\n }\n\n // console.log(\"onSendBefore\", value);\n\n if (mode === PnLMode.PERCENTAGE) {\n if (value !== \"\") {\n // percentageSuffix.current = value.endsWith(\".\") ? \".\" : \"\";\n value = todpIfNeed(value, 2);\n const endStr = value.match(/\\.0{0,2}$/);\n if (!!endStr) {\n percentageSuffix.current = endStr[0];\n } else {\n percentageSuffix.current = \"\";\n }\n value = new Decimal(value).div(100).toString();\n value = `${value}${percentageSuffix.current}`;\n }\n } else if (mode === PnLMode.PnL && type === \"SL\" && focus) {\n value = value.startsWith(\"-\") ? value : \"-\" + value;\n } else {\n value = todpIfNeed(value, dp);\n }\n\n if (value === \"\" || value === \"-\") return \"\";\n\n return value;\n },\n };\n };\n\n return {\n mode,\n modes,\n modeLabelMap,\n formatter,\n onModeChange: (mode: PnLMode) => {\n setMode(mode);\n },\n onFocus,\n onBlur,\n value: innerValue,\n onValueChange,\n quote_dp,\n tips: tipVisible ? tipsEle : undefined,\n setFocus,\n };\n};\n\nexport type PNLInputState = ReturnType<typeof usePNLInputBuilder>;\n","import { createContext, ReactNode, useContext } from \"react\";\nimport { PnLMode } from \"./useBuilder.script\";\n\nexport type PnlInputContextState = {\n mode: PnLMode;\n setMode: (mode: PnLMode) => void;\n tipsEle: ReactNode | null;\n};\n\nexport const PnlInputContext = createContext<PnlInputContextState>(\n {} as PnlInputContextState,\n);\n\nexport const usePnlInputContext = () => {\n return useContext(PnlInputContext);\n};\n","import { PNLInput } from \"./pnlInput.ui\";\nimport { BuilderProps, PnLMode, usePNLInputBuilder } from \"./useBuilder.script\";\n\nexport const PnlInputWidget = (\n props: BuilderProps & {\n testIds?: {\n input?: string;\n dropDown?: string;\n };\n quote: string;\n }\n) => {\n const { testIds, quote, ...rest } = props;\n const state = usePNLInputBuilder(rest);\n return (\n <PNLInput {...state} testIds={testIds} quote={quote} type={props.type} />\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { PnlInputContext, PnlInputContextState } from \"./pnlInputContext\";\nimport { PNL_Values, PnLMode } from \"./useBuilder.script\";\n\nexport const PnlInputProvider: React.FC<\n React.PropsWithChildren<{\n values: PNL_Values & { trigger_price?: string };\n type: \"TP\" | \"SL\";\n }>\n> = (props) => {\n const { type, values, children } = props;\n const [mode, setMode] = useLocalStorage<PnLMode>(\n \"TP/SL_Mode\",\n PnLMode.PERCENTAGE,\n );\n const { t } = useTranslation();\n\n const tipsEle = useMemo(() => {\n if (!values.PnL || !values.trigger_price) {\n return null;\n }\n return (\n <Flex>\n <span className={\"oui-text-xs oui-text-base-contrast-54\"}>\n {mode === PnLMode.PnL\n ? t(\"orderEntry.estRoi\")\n : t(\"orderEntry.estPnL\")}\n </span>\n {mode === PnLMode.PnL ? (\n <Text.numeral\n rule={\"percentages\"}\n className={cn(\n \"oui-ml-1 oui-text-xs\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n >\n {values.ROI}\n </Text.numeral>\n ) : (\n <Text.numeral\n rule={\"price\"}\n className={cn(\n \"oui-ml-1 oui-text-xs\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n >\n {values.PnL}\n </Text.numeral>\n )}\n </Flex>\n );\n }, [mode, values.ROI, values.PnL, values.trigger_price]);\n\n const memoizedValue = useMemo<PnlInputContextState>(() => {\n return { mode, setMode, tipsEle };\n }, [mode, setMode, tipsEle]);\n\n return (\n <PnlInputContext.Provider value={memoizedValue}>\n {children}\n </PnlInputContext.Provider>\n );\n};\n","import { useEffect, useRef } from \"react\";\nimport {\n useComputedLTV,\n useEventEmitter,\n useLocalStorage,\n useMarginRatio,\n useMemoizedFn,\n useOrderEntry,\n useOrderlyContext,\n useTpslPriceChecker,\n} from \"@kodiak-finance/orderly-hooks\";\nimport {\n DistributionType,\n OrderLevel,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport { Decimal, removeTrailingZeros } from \"@kodiak-finance/orderly-utils\";\nimport { useAskAndBid } from \"./hooks/useAskAndBid\";\nimport { useBBOState } from \"./hooks/useBBOState\";\nimport { useCanTrade } from \"./hooks/useCanTrade\";\nimport { useFocusAndBlur } from \"./hooks/useFocusAndBlur\";\nimport { usePriceInputContainer } from \"./hooks/usePriceInputContainer\";\nimport { InputType } from \"./types\";\nimport { BBOStatus, isBBOOrder, safeNumber } from \"./utils\";\n\nexport type OrderEntryScriptInputs = {\n symbol: string;\n};\n\nexport const ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\n\nexport type OrderEntryScriptReturn = ReturnType<typeof useOrderEntryScript>;\n\nexport const useOrderEntryScript = (inputs: OrderEntryScriptInputs) => {\n const { symbol } = inputs;\n const [localOrderType, setLocalOrderType] = useLocalStorage(\n \"orderly-order-entry-order-type\",\n OrderType.LIMIT,\n );\n const [localOrderSide, setLocalOrderSide] = useLocalStorage(\n \"orderly-order-entry-order-side\",\n OrderSide.BUY,\n );\n\n const { notification } = useOrderlyContext();\n\n const [soundAlert, setSoundAlert] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n notification?.orderFilled?.defaultOpen ?? false,\n );\n\n const canTrade = useCanTrade();\n\n const {\n formattedOrder,\n setValue,\n setValues: setOrderValues,\n symbolInfo,\n ...state\n } = useOrderEntry(symbol, {\n initialOrder: {\n symbol,\n order_type: localOrderType,\n position_type: PositionType.PARTIAL,\n side: localOrderSide,\n },\n });\n\n const [tpslSwitch, setTpslSwitch] = useLocalStorage(\n \"orderly-order-entry-tp_sl-switch\",\n false,\n );\n\n const { currentLeverage } = useMarginRatio();\n const ee = useEventEmitter();\n const triggerPriceInputRef = useRef<HTMLInputElement | null>(null);\n const priceInputRef = useRef<HTMLInputElement | null>(null);\n const activatedPriceInputRef = useRef<HTMLInputElement | null>(null);\n\n const { bboStatus, bboType, setBBOType, onBBOChange, toggleBBO } =\n useBBOState({\n tpslSwitch,\n order_type: formattedOrder.order_type,\n order_type_ext: formattedOrder.order_type_ext,\n side: formattedOrder.side,\n setOrderValues,\n });\n\n const {\n currentFocusInput,\n lastScaledOrderPriceInput,\n lastQuantityInputType,\n onFocus,\n onBlur,\n } = useFocusAndBlur({\n base_tick: symbolInfo?.base_tick,\n order_type: formattedOrder.order_type,\n order_quantity: formattedOrder.order_quantity,\n setValue,\n });\n\n // cancel TP/SL\n const cancelTP_SL = () => {\n // if(formattedOrder.)\n setOrderValues({\n tp_trigger_price: \"\",\n sl_trigger_price: \"\",\n position_type: PositionType.FULL,\n });\n };\n\n const enableTP_SL = () => {\n setOrderValues({\n order_type_ext: undefined,\n position_type: PositionType.FULL,\n });\n };\n\n const setOrderValue = useMemoizedFn(\n (\n key: any,\n value: any,\n options?: {\n shouldUpdateLastChangedField?: boolean;\n },\n ) => {\n if (key === \"order_type\") {\n setLocalOrderType(value);\n }\n if (key === \"side\") {\n setLocalOrderSide(value);\n }\n\n if (\n (key === \"reduce_only\" && value) ||\n (key === \"order_type\" &&\n (value === OrderType.STOP_LIMIT || value === OrderType.STOP_MARKET))\n ) {\n // cancelTP_SL();\n\n const data = {\n tp_trigger_price: \"\",\n sl_trigger_price: \"\",\n [key]: value,\n };\n\n if (key === \"order_type\") {\n data[\"order_type_ext\" as any] = \"\";\n }\n\n setOrderValues(data);\n\n return;\n }\n\n if (key === \"order_type\" && value !== OrderType.LIMIT) {\n const data = {\n level: undefined,\n order_type_ext: undefined,\n [key]: value,\n };\n\n setOrderValues(data);\n\n return;\n }\n\n if (key === \"order_type\" && value === OrderType.SCALED) {\n setOrderValues({\n distribution_type: DistributionType.FLAT,\n [key]: value,\n });\n return;\n }\n\n setValue(key, value, options);\n },\n );\n\n const onTPSLSwitchChanged = (state: boolean) => {\n setTpslSwitch(state);\n if (state) {\n enableTP_SL();\n } else {\n cancelTP_SL();\n }\n };\n\n useEffect(() => {\n const updateOrderPrice = (price: string) => {\n setValue(\"order_price\", price);\n };\n ee.on(\"update:orderPrice\", updateOrderPrice);\n\n return () => {\n ee.off(\"update:orderPrice\", updateOrderPrice);\n };\n }, []);\n\n useEffect(() => {\n const focusInputElement = (target: HTMLInputElement | null) => {\n requestAnimationFrame(() => {\n target?.focus();\n });\n };\n\n // handle orderbook item click event\n const orderBookItemClickHandler = (item: number[]) => {\n const price = removeTrailingZeros(item[0]);\n const { order_type, order_type_ext } = formattedOrder;\n\n // handle trigger price input, focus on trigger price input\n if (\n currentFocusInput.current === InputType.TRIGGER_PRICE &&\n (order_type === OrderType.STOP_LIMIT ||\n order_type === OrderType.STOP_MARKET)\n ) {\n setValue(\"trigger_price\", price);\n focusInputElement(triggerPriceInputRef.current);\n return;\n }\n\n // handle bbo order, unselect bbo and set order price, focus on order price input\n if (isBBOOrder({ order_type, order_type_ext })) {\n setBBOType(undefined);\n\n setOrderValues({\n order_type_ext: undefined,\n level: undefined,\n });\n\n requestAnimationFrame(() => {\n // Since BBO will update the price when unselected, we should set order price in requestAnimationFrame\n // We can't call setValue directly here because it's inside a requestAnimationFrame, and the formattedOrder accessed inside setValue would be the old value\n // setValue(\"order_price\", price);\n ee.emit(\"update:orderPrice\", price);\n });\n\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle limit order and stop limit order, set order price and focus on order price input\n if (\n order_type === OrderType.STOP_LIMIT ||\n order_type === OrderType.LIMIT\n ) {\n setValue(\"order_price\", price);\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle stop market order, set trigger price and focus on trigger price input\n if (order_type === OrderType.STOP_MARKET) {\n setValue(\"trigger_price\", price);\n focusInputElement(triggerPriceInputRef.current);\n return;\n }\n\n // handle market order, set order type to limit\n if (order_type === OrderType.MARKET) {\n // unselect bbo\n setBBOType(undefined);\n\n // You can't call setValue twice here , the second value will override the first, so you need to combine them into a single setValues call\n setOrderValues({\n order_type: OrderType.LIMIT,\n order_price: price,\n });\n\n focusInputElement(priceInputRef.current);\n return;\n }\n\n if (\n order_type === OrderType.SCALED &&\n lastScaledOrderPriceInput.current\n ) {\n const field =\n lastScaledOrderPriceInput.current === InputType.START_PRICE\n ? \"start_price\"\n : \"end_price\";\n setValue(field, price);\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle trailing stop order, set activated price and focus on activated price input\n if (order_type === OrderType.TRAILING_STOP) {\n setValue(\"activated_price\", price);\n focusInputElement(activatedPriceInputRef.current);\n return;\n }\n\n // default, set order price and focus on order price input\n setValue(\"order_price\", price);\n focusInputElement(priceInputRef.current);\n };\n\n ee.on(\"orderbook:item:click\", orderBookItemClickHandler);\n\n return () => {\n ee.off(\"orderbook:item:click\", orderBookItemClickHandler);\n };\n // Please do not modify this deps lightly, because `setValue` also relies on these state internally\n }, [formattedOrder, symbolInfo]);\n\n useEffect(() => {\n // after switching symbol, all the input number should be cleared (price, qty, TP/SL, etc)\n state.reset();\n state.resetMetaState();\n // reset last quantity input type\n lastQuantityInputType.current = InputType.NONE;\n }, [symbol]);\n\n // if scaled order, and distribution_type is not set, set it to flat\n useEffect(() => {\n if (\n formattedOrder.order_type === OrderType.SCALED &&\n !formattedOrder.distribution_type\n ) {\n setValue(\"distribution_type\", DistributionType.FLAT);\n }\n }, [formattedOrder.order_type, formattedOrder.distribution_type]);\n\n const currentLtv = useComputedLTV();\n const askAndBid = useAskAndBid();\n\n const fillMiddleValue = () => {\n if (bboStatus === BBOStatus.ON) {\n toggleBBO();\n }\n if (formattedOrder.order_type === OrderType.LIMIT) {\n const [bestAsk = 0, bestBid = 0] = askAndBid;\n const midPrice = new Decimal(safeNumber(bestAsk))\n .add(safeNumber(bestBid))\n .div(2)\n .toNumber();\n // 1. Since BBO will update the price when unselected, we should set order price in raf\n // 2. raf is mainly used to solve the timing problem caused by React state update, ensuring that the orderPrice is triggered after the state is fully updated to avoid accessing expired state values.\n requestAnimationFrame(() => {\n ee.emit(\"update:orderPrice\", midPrice);\n });\n }\n };\n\n const { priceInputContainerRef, priceInputContainerWidth } =\n usePriceInputContainer({\n order_type_ext: formattedOrder.order_type_ext,\n });\n\n const slPriceError = useTpslPriceChecker({\n slPrice: formattedOrder.sl_trigger_price,\n liqPrice: state.estLiqPrice,\n side: formattedOrder.side,\n });\n\n useEffect(() => {\n if (formattedOrder.reduce_only) {\n setTpslSwitch(false);\n }\n }, [formattedOrder.reduce_only]);\n\n useEffect(() => {\n if (tpslSwitch) {\n setOrderValue(\"reduce_only\", false);\n }\n }, [tpslSwitch]);\n\n return {\n ...state,\n slPriceError: slPriceError ?? undefined,\n side: formattedOrder.side as OrderSide,\n type: formattedOrder.order_type as OrderType,\n level: formattedOrder.level as OrderLevel,\n formattedOrder,\n setOrderValue,\n setOrderValues,\n currentLeverage,\n\n // cancelTP_SL,\n // enableTP_SL,\n tpslSwitch,\n setTpslSwitch: onTPSLSwitchChanged,\n symbolInfo,\n onFocus,\n onBlur,\n\n priceInputRef,\n priceInputContainerRef,\n priceInputContainerWidth,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n\n canTrade,\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n currentLtv,\n fillMiddleValue,\n symbol,\n soundAlert,\n setSoundAlert,\n currentFocusInput,\n };\n};\n","import { useEffect, useMemo, useRef } from \"react\";\nimport { useLocalStorage, useTrack } from \"@kodiak-finance/orderly-hooks\";\nimport {\n BBOOrderType,\n OrderlyOrder,\n OrderSide,\n OrderType,\n TrackerEventName,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n BBOStatus,\n getOrderLevelByBBO,\n getOrderTypeByBBO,\n isBBOOrder,\n} from \"../utils\";\n\nexport function useBBOState({\n tpslSwitch,\n order_type,\n order_type_ext,\n side,\n setOrderValues,\n}: {\n tpslSwitch: boolean;\n order_type?: OrderType;\n order_type_ext?: OrderType;\n side?: OrderSide;\n setOrderValues: (values: Partial<OrderlyOrder>) => void;\n}) {\n const [localBBOType, setLocalBBOType] = useLocalStorage<\n BBOOrderType | undefined\n >(\"orderly_order_bbo_type\", undefined);\n\n const lastBBOType = useRef<BBOOrderType>(localBBOType);\n\n const { track } = useTrack();\n\n const bboStatus = useMemo(() => {\n if (\n tpslSwitch ||\n [OrderType.POST_ONLY, OrderType.IOC, OrderType.FOK].includes(\n order_type_ext!,\n )\n ) {\n return BBOStatus.DISABLED;\n }\n\n return localBBOType && order_type === OrderType.LIMIT\n ? BBOStatus.ON\n : BBOStatus.OFF;\n }, [tpslSwitch, order_type_ext, order_type, localBBOType]);\n\n const toggleBBO = () => {\n track(TrackerEventName.clickBBOButton);\n if (localBBOType) {\n // unselect bbo\n setLocalBBOType(undefined);\n // update formattedOrder values immediately instead of via useEffect\n setOrderValues({\n order_type_ext: undefined,\n level: undefined,\n });\n } else {\n setLocalBBOType(lastBBOType.current || BBOOrderType.COUNTERPARTY1);\n }\n };\n\n const onBBOChange = (value: BBOOrderType) => {\n setLocalBBOType(value);\n lastBBOType.current = value;\n };\n\n useEffect(() => {\n if (bboStatus === BBOStatus.DISABLED) {\n setOrderValues({\n // if order_type_ext is not bbo(ask, bid), keep previous value\n order_type_ext: isBBOOrder({ order_type_ext })\n ? undefined\n : order_type_ext,\n level: undefined,\n });\n }\n }, [bboStatus, order_type_ext]);\n\n useEffect(() => {\n if (bboStatus === BBOStatus.ON) {\n const orderType = getOrderTypeByBBO(localBBOType, side!);\n const orderLevel = getOrderLevelByBBO(localBBOType)!;\n setOrderValues({\n order_type_ext: orderType,\n level: orderLevel,\n });\n }\n }, [localBBOType, bboStatus, side]);\n\n return {\n bboStatus,\n bboType: localBBOType,\n setBBOType: setLocalBBOType,\n onBBOChange,\n toggleBBO,\n };\n}\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport function useCanTrade() {\n const { state } = useAccount();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const canTrade = useMemo(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n return canTrade;\n}\n","import { useRef, FocusEvent } from \"react\";\nimport {\n OrderEntryReturn,\n useMemoizedFn,\n utils,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { InputType } from \"../types\";\n\ntype FocusAndBlurProps = {\n base_tick: number;\n order_type?: OrderType;\n order_quantity?: string;\n setValue: OrderEntryReturn[\"setValue\"];\n};\n\nexport function useFocusAndBlur(props: FocusAndBlurProps) {\n const { base_tick, order_type, order_quantity, setValue } = props;\n const currentFocusInput = useRef<InputType>(InputType.NONE);\n const lastScaledOrderPriceInput = useRef<InputType>(InputType.END_PRICE);\n const lastQuantityInputType = useRef<InputType>(InputType.NONE);\n\n const formatQty = () => {\n if (\n base_tick < 1 ||\n // scaled order should not format quantity, because it is total quantity\n order_type === OrderType.SCALED ||\n !order_quantity\n ) {\n return;\n }\n\n // TODO: use this to format quantity instead of utils.formatNumber, need time to test\n // const formatQty = new Decimal(formattedOrder.order_quantity)\n // .todp(0, Decimal.ROUND_DOWN)\n // .div(symbolInfo.base_tick)\n // .toString();\n\n const quantity = utils.formatNumber(\n order_quantity,\n new Decimal(base_tick || \"0\").toNumber(),\n );\n\n setValue(\"order_quantity\", quantity, {\n shouldUpdateLastChangedField: false,\n });\n };\n\n const onFocus = (type: InputType) => (_: FocusEvent) => {\n currentFocusInput.current = type;\n\n // set last scaled order price input\n if (\n [InputType.START_PRICE, InputType.END_PRICE].includes(\n currentFocusInput.current!,\n )\n ) {\n lastScaledOrderPriceInput.current = type;\n }\n\n if (\n [InputType.QUANTITY, InputType.TOTAL, InputType.MARGIN].includes(type)\n ) {\n lastQuantityInputType.current = type;\n }\n };\n\n const onBlur = (type: InputType) => (_: FocusEvent) => {\n setTimeout(() => {\n if (currentFocusInput.current !== type) {\n return;\n }\n currentFocusInput.current = InputType.NONE;\n }, 300);\n\n if (type === InputType.QUANTITY) {\n formatQty();\n }\n };\n\n return {\n currentFocusInput,\n lastScaledOrderPriceInput,\n lastQuantityInputType,\n onFocus: useMemoizedFn(onFocus),\n onBlur: useMemoizedFn(onBlur),\n };\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\n\nexport function usePriceInputContainer({\n order_type_ext,\n}: {\n order_type_ext?: OrderType;\n}) {\n const [priceInputContainerWidth, setPriceInputContainerWidth] = useState(0);\n const priceInputContainerRef = useRef<HTMLDivElement | null>(null);\n\n // useEffect(() => {\n // if (\n // priceInputContainerRef.current &&\n // // update BBO select width when is BBO order\n // isBBOOrder({ order_type_ext: formattedOrder.order_type_ext })\n // ) {\n // const width =\n // priceInputContainerRef.current.getBoundingClientRect()?.width;\n // if (width) {\n // setPriceInputContainerWidth(width);\n // }\n // }\n // }, [priceInputContainerRef, formattedOrder.order_type_ext]);\n\n useEffect(() => {\n const element = priceInputContainerRef.current;\n\n if (!element) {\n return;\n }\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n if (width) {\n // update BBO order select dropdown width when priceInputContainerRef width changed\n setPriceInputContainerWidth(width);\n }\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.unobserve(element);\n };\n }, [priceInputContainerRef, order_type_ext]);\n\n return { priceInputContainerRef, priceInputContainerWidth };\n}\n","import React from \"react\";\nimport {\n OrderEntryScriptInputs,\n useOrderEntryScript,\n} from \"./orderEntry.script\";\nimport { OrderEntry } from \"./orderEntry.ui\";\n\nexport const OrderEntryWidget: React.FC<\n OrderEntryScriptInputs & {\n containerRef?: React.RefObject<HTMLDivElement>;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n }\n> = (props) => {\n const state = useOrderEntryScript(props);\n return (\n <OrderEntry\n {...state}\n containerRef={props.containerRef}\n disableFeatures={props.disableFeatures}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/orderEntry.ui.tsx","../src/components/additional/additionalConfigButton.tsx","../src/components/additional/additionalInfo.tsx","../src/components/additional/pinButton.tsx","../src/components/advancedTPSLResult/index.tsx","../src/components/assetInfo/index.tsx","../src/components/fee/fees.widget.tsx","../src/components/fee/effectiveFee/effectiveFee.ui.tsx","../src/components/fee/effectiveFee/icons/effectiveFee.tsx","../src/components/fee/effectiveFee/effectiveFee.widget.tsx","../src/components/fee/regularFee/regularFees.ui.tsx","../src/components/fee/regularFee/regularFees.widget.tsx","../src/components/slippage/components/slippageCell.tsx","../src/components/slippage/components/slippageEditor.tsx","../src/components/slippage/slippage.ui.tsx","../src/components/available/index.tsx","../src/components/LTVRiskTooltip/LTVRiskTooltip.ui.tsx","../src/components/LTVRiskTooltip/LTVRiskTooltip.script.ts","../src/components/LTVRiskTooltip/LTVRiskTooltip.widget.tsx","../src/components/dialog/confirm.ui.tsx","../src/utils.ts","../src/components/dialog/maxQtyConfirm.tsx","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.ui.tsx","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.script.ts","../src/hooks/useAskAndBid.ts","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.widget.tsx","../src/components/header/index.tsx","../src/components/orderTypeSelect/index.tsx","../src/components/header/LeverageBadge.tsx","../src/components/orderEntryProvider.tsx","../src/components/orderEntryContext.tsx","../src/components/orderInput/index.tsx","../src/components/orderInput/limit/priceInput.tsx","../src/components/customInput/index.tsx","../src/components/orderInput/limit/bboOrderTypeSelect.tsx","../src/components/orderInput/limit/limitPriceSuffix.tsx","../src/components/orderInput/qtyAndTotal/qtyAndTotalInput.tsx","../src/components/orderInput/qtyAndTotal/quantityInput.tsx","../src/components/orderInput/qtyAndTotal/totalInput.tsx","../src/components/orderInput/qtyAndTotal/totalTypeSelect.tsx","../src/components/orderInput/scaledOrder/index.tsx","../src/components/orderInput/scaledOrder/quantityDistributionInput.tsx","../src/components/orderInput/scaledOrder/scaledPriceInput.tsx","../src/components/orderInput/scaledOrder/scaledQuantityInput.tsx","../src/components/orderInput/scaledOrder/scaledQuantityUnit.tsx","../src/components/orderInput/scaledOrder/skewInput.tsx","../src/components/orderInput/scaledOrder/totalOrdersInput.tsx","../src/components/orderInput/stop/triggerPriceInput.tsx","../src/components/orderInput/trailingStop/activePriceInput.tsx","../src/components/orderInput/trailingStop/trailingCallbackInput.tsx","../src/components/orderInput/trailingStop/callbackRatePercentages.tsx","../src/components/orderInput/trailingStop/trailingCallbackSelect.tsx","../src/components/orderInput/trailingStop/index.tsx","../src/components/quantitySlider/index.tsx","../src/components/reduceOnlySwitch/index.tsx","../src/components/tpsl.tsx","../src/components/pnlInput/pnlInput.ui.tsx","../src/components/pnlInput/useBuilder.script.ts","../src/components/pnlInput/pnlInputContext.tsx","../src/components/pnlInput/pnlInput.widget.tsx","../src/components/pnlInput/pnlInputProvider.tsx","../src/orderEntry.script.ts","../src/hooks/useBBOState.ts","../src/hooks/useCanTrade.ts","../src/hooks/useFocusAndBlur.ts","../src/hooks/usePriceInputContainer.ts","../src/orderEntry.widget.tsx"],"names":["useCallback","useEffect","useId","useMemo","useState","ERROR_MSG_CODES","useLocalStorage","useTranslation","useOrderEntryFormErrorMsg","OrderSide","OrderType","PositionType","Box","cn","Divider","Flex","modal","Switch","useScreen","Decimal","jsx","jsxs","open","Text","AuthGuard","EditIcon","Tooltip","Fragment","Button","i18n","BBOOrderType","Checkbox","textVariants","options","SimpleDialog","forwardRef","Grid","Badge","zero","national","order","totalQuantity","registerSimpleDialog","inputFormatter","Input","Select","item","memo","margin","total","DistributionType","value","useRef","TrailingCallbackType","React","createContext","useContext","mode","errors","useComputedLTV","useEventEmitter","useMemoizedFn","useOrderlyContext","removeTrailingZeros","utils","state"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationResult,\n useLocalStorage,\n useMemoizedFn,\n useOrderlyContext,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport {\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Box,\n cn,\n Divider,\n Flex,\n modal,\n SimpleSheet,\n Switch,\n ThrottledButton,\n toast,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { TPSLAdvancedWidget } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { AdditionalConfigButton } from \"./components/additional/additionalConfigButton\";\nimport {\n AdditionalInfo,\n AdditionalInfoProps,\n} from \"./components/additional/additionalInfo\";\nimport { PinButton } from \"./components/additional/pinButton\";\nimport { AdvancedTPSLResult } from \"./components/advancedTPSLResult\";\nimport { AssetInfo } from \"./components/assetInfo\";\nimport { Available } from \"./components/available\";\nimport { orderConfirmDialogId } from \"./components/dialog/confirm.ui\";\nimport { MaxQtyConfirm } from \"./components/dialog/maxQtyConfirm\";\nimport { scaledOrderConfirmDialogId } from \"./components/dialog/scaledOrderConfirm\";\nimport { OrderEntryHeader } from \"./components/header\";\nimport { OrderEntryProvider } from \"./components/orderEntryProvider\";\nimport { OrderInput } from \"./components/orderInput\";\nimport { QuantitySlider } from \"./components/quantitySlider\";\nimport { ReduceOnlySwitch } from \"./components/reduceOnlySwitch\";\nimport { OrderTPSL } from \"./components/tpsl\";\nimport { type OrderEntryScriptReturn } from \"./orderEntry.script\";\nimport { getScaledPlaceOrderMessage } from \"./utils\";\n\ntype OrderEntryProps = OrderEntryScriptReturn & {\n containerRef?: React.RefObject<HTMLDivElement>;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n};\n\nexport const OrderEntry: React.FC<OrderEntryProps> = (props) => {\n const {\n side,\n formattedOrder,\n setOrderValue,\n setOrderValues,\n symbolInfo,\n maxQty,\n freeCollateral,\n helper,\n submit,\n metaState,\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n disableFeatures,\n currentLtv,\n fillMiddleValue,\n soundAlert,\n setSoundAlert,\n currentFocusInput,\n } = props;\n const [maxQtyConfirmOpen, setMaxQtyConfirmOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const { isMobile } = useScreen();\n const [hasAdvancedTPSLResult, setHasAdvancedTPSLResult] =\n useState<boolean>(false);\n\n const { errors, validated } = metaState;\n\n const [errorMsgVisible, setErrorMsgVisible] = useState(false);\n\n const [needConfirm, setNeedConfirm] = useLocalStorage(\n \"orderly_order_confirm\",\n true,\n );\n const [pinned, setPinned] = useLocalStorage(\n \"orderly-order-additional-pinned\",\n true,\n );\n const [showTPSLAdvanced, setShowTPSLAdvanced] = useState(false);\n const [hidden, setHidden] = useLocalStorage(\"orderly-order-hidden\", false);\n\n const [slippage, setSlippage] = useLocalStorage(\"orderly-slippage\", \"1\", {\n parseJSON: ((value: string | null) => {\n return !value || value === '\"\"' ? \"1\" : JSON.parse(value);\n }) as any,\n });\n\n const { notification } = useOrderlyContext();\n\n const soundAlertId = useId();\n\n const isSlPriceWarning =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(validated ? errors : null);\n\n const buttonLabel = useMemo(() => {\n return side === OrderSide.BUY\n ? t(\"orderEntry.buyLong\")\n : t(\"orderEntry.sellShort\");\n }, [side, t]);\n\n useEffect(() => {\n if (validated) {\n setErrorMsgVisible(true);\n }\n }, [validated]);\n\n // set slippage\n useEffect(() => {\n if (disableFeatures?.includes(\"slippageSetting\")) {\n return;\n }\n if (slippage) {\n setOrderValue(\"slippage\", Number(slippage));\n } else {\n setOrderValue(\"slippage\", undefined);\n }\n }, [slippage, disableFeatures]);\n\n useEffect(() => {\n const clickHandler = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (\n target.closest(\"#order-entry-submit-button\")\n // || target.closest(\".orderly-order-entry\")\n ) {\n return;\n }\n setErrorMsgVisible((visible) => {\n if (visible) {\n return false;\n }\n return visible;\n });\n };\n\n if (errorMsgVisible) {\n document.addEventListener(\"click\", clickHandler);\n } else {\n document.removeEventListener(\"click\", clickHandler);\n }\n\n return () => {\n document.removeEventListener(\"click\", clickHandler);\n };\n }, [errorMsgVisible]);\n\n const onSubmit = useMemoizedFn(async () => {\n const isScaledOrder = formattedOrder.order_type === OrderType.SCALED;\n\n // TODO: in the future, we will be add `level` to `OrderValidationItem`, use `level` manager ui state\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n helper\n .validate(isSlPriceError ? props.slPriceError : undefined)\n .then(\n // validate success, it return the order\n // TODO: get order from other function\n (order: any) => {\n // scaled order is always need confirm\n if (isScaledOrder) {\n return modal.show(scaledOrderConfirmDialogId, {\n order,\n symbolInfo,\n size: isMobile ? \"sm\" : \"md\",\n });\n }\n\n if (needConfirm) {\n return modal.show(orderConfirmDialogId, {\n order: formattedOrder,\n symbolInfo,\n });\n }\n\n return true;\n },\n // should catch validate error first, then submit\n (errors: OrderValidationResult) => {\n // slippage error message is not show input tooltip, so we need to manually show it by toast\n if (errors.slippage) {\n toast.error(t(\"orderEntry.slippage.error.max\"));\n }\n\n // when switch order type, validated not changed, so we need to set it to true\n setErrorMsgVisible(true);\n\n return Promise.reject();\n },\n )\n .then(() => {\n // validate success, submit order\n return submit({ resetOnSuccess: false }).then((result: any) => {\n if (!result.success && result.message) {\n toast.error(result.message);\n } else if (result.success && isScaledOrder) {\n const message = getScaledPlaceOrderMessage(result);\n if (message) {\n toast.success(message);\n }\n }\n });\n })\n .catch((error) => {\n // submit order error\n if (error?.message) {\n toast.error(error.message);\n // toast.error(`Error:${error.message}`);\n\n // if (error instanceof ApiError) {\n // toast.error(error.message);\n }\n });\n });\n\n const formattedMaxQty = useMemo(() => {\n return new Decimal(maxQty)\n .todp(symbolInfo.base_dp, Decimal.ROUND_DOWN)\n .toString();\n }, [maxQty, symbolInfo.base_dp]);\n\n const onMaxQtyConfirm = useCallback(() => {\n setOrderValue(\"order_quantity\", formattedMaxQty);\n // submit order when order_quantity updated\n requestAnimationFrame(() => {\n onSubmit();\n });\n setMaxQtyConfirmOpen(false);\n }, [setOrderValue, formattedMaxQty]);\n\n const validateSubmit = async () => {\n // show a prompt reminding the user. If the user confirms, automatically disable Reduce Only and proceed with the action.\n if (formattedOrder.reduce_only && maxQty === 0) {\n return modal.confirm({\n title: t(\"orderEntry.reduceOnly.reminder\"),\n content: t(\"orderEntry.reduceOnly.reminder.content\"),\n okLabel: t(\"orderEntry.placeOrderNow\"),\n onOk: async () => {\n setOrderValue(\"reduce_only\", false);\n // submit order when reduce only updated\n requestAnimationFrame(() => {\n props.resetMetaState();\n onSubmit();\n });\n return Promise.resolve(true);\n },\n onCancel: async () => {\n return Promise.resolve(false);\n },\n });\n } else if (maxQty > 0 && Number(formattedOrder.order_quantity) > maxQty) {\n setMaxQtyConfirmOpen(true);\n } else {\n onSubmit();\n }\n };\n\n const onShowTPSLAdvanced = () => {\n helper.validate().then(\n () => {\n setShowTPSLAdvanced(true);\n },\n (errors) => {\n const tpslKey = new Set([\"tp_trigger_price\", \"sl_trigger_price\"]);\n if (Object.keys(errors).every((key: string) => tpslKey.has(key))) {\n setShowTPSLAdvanced(true);\n }\n },\n );\n // modal.show(TPSLAdvancedDialogId, {\n // order: formattedOrder,\n // setOrderValue: setOrderValue,\n // });\n // setShowTPSLAdvanced(true);\n };\n\n const onSubmitAdvancedTPSL = (order: OrderlyOrder) => {\n if (order.side !== formattedOrder.side) {\n setOrderValue(\"side\", order.side);\n }\n setOrderValues({\n position_type: order.position_type,\n tp_order_type: order.tp_order_type,\n tp_pnl: order.tp_pnl,\n tp_offset: order.tp_offset,\n tp_offset_percentage: order.tp_offset_percentage,\n tp_ROI: order.tp_ROI,\n tp_trigger_price: order.tp_trigger_price,\n tp_order_price: order.tp_order_price,\n sl_order_type: order.sl_order_type,\n sl_trigger_price: order.sl_trigger_price,\n sl_order_price: order.sl_order_price,\n sl_pnl: order.sl_pnl,\n sl_offset: order.sl_offset,\n sl_offset_percentage: order.sl_offset_percentage,\n sl_ROI: order.sl_ROI,\n });\n setShowTPSLAdvanced(false);\n setHasAdvancedTPSLResult(true);\n };\n\n const onDeleteAdvancedTPSL = () => {\n setHasAdvancedTPSLResult(false);\n setOrderValues({\n tp_trigger_price: undefined,\n tp_order_price: undefined,\n tp_order_type: OrderType.MARKET,\n sl_trigger_price: undefined,\n sl_order_price: undefined,\n sl_order_type: OrderType.MARKET,\n tp_pnl: undefined,\n sl_pnl: undefined,\n position_type: PositionType.FULL,\n });\n };\n\n useEffect(() => {\n setHasAdvancedTPSLResult(false);\n }, [props.symbol]);\n\n const showReduceOnlySection =\n (isMobile &&\n formattedOrder.order_type !== OrderType.LIMIT &&\n formattedOrder.order_type !== OrderType.MARKET) ||\n !isMobile;\n\n const showSoundSection =\n Boolean(notification?.orderFilled?.media) &&\n (notification?.orderFilled?.displayInOrderEntry ?? true);\n\n const additionalInfoProps: AdditionalInfoProps = {\n pinned,\n setPinned,\n needConfirm,\n setNeedConfirm,\n hidden,\n setHidden,\n onValueChange: setOrderValue,\n orderTypeExtra: formattedOrder[\"order_type_ext\"],\n showExtra:\n formattedOrder[\"order_type\"] === OrderType.LIMIT && !props.tpslSwitch,\n };\n // Additional info (fok,ioc、post only, order confirm hidden)\n const extraButton = !pinned && (\n <AdditionalConfigButton {...additionalInfoProps} />\n );\n\n return (\n <OrderEntryProvider\n errors={errors}\n errorMsgVisible={errorMsgVisible}\n symbolInfo={symbolInfo}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n getErrorMsg={getErrorMsg}\n setOrderValue={setOrderValue}\n setOrderValues={setOrderValues}\n currentFocusInput={currentFocusInput.current}\n priceInputRef={props.priceInputRef}\n priceInputContainerRef={props.priceInputContainerRef}\n triggerPriceInputRef={props.triggerPriceInputRef}\n activatedPriceInputRef={props.activatedPriceInputRef}\n lastQuantityInputType={props.lastQuantityInputType}\n leverage={props.symbolLeverage}\n >\n <MaxQtyConfirm\n open={maxQtyConfirmOpen}\n onOpenChange={setMaxQtyConfirmOpen}\n maxQty={formattedMaxQty}\n onConfirm={onMaxQtyConfirm}\n base={symbolInfo.base}\n />\n <div\n className={\"oui-space-y-2 oui-text-base-contrast-54 xl:oui-space-y-3\"}\n ref={props.containerRef}\n >\n <OrderEntryHeader\n symbol={props.symbol}\n canTrade={props.canTrade}\n side={side}\n order_type={formattedOrder.order_type!}\n setOrderValue={setOrderValue}\n symbolLeverage={props.symbolLeverage}\n />\n\n <Available\n currentLtv={currentLtv}\n canTrade={props.canTrade}\n quote={symbolInfo?.quote}\n freeCollateral={freeCollateral}\n />\n\n <OrderInput\n values={formattedOrder}\n priceInputContainerWidth={props.priceInputContainerWidth}\n fillMiddleValue={fillMiddleValue}\n bbo={{\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n }}\n />\n\n <QuantitySlider\n canTrade={props.canTrade}\n side={props.side}\n order_quantity={formattedOrder.order_quantity}\n maxQty={maxQty}\n />\n\n {/* Submit button */}\n <ThrottledButton\n fullWidth\n id={\"order-entry-submit-button\"}\n // color={side === OrderSide.BUY ? \"buy\" : \"sell\"}\n data-type={OrderSide.BUY}\n className={cn(\n side === OrderSide.BUY\n ? \"orderly-order-entry-submit-button-buy oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\"\n : \"orderly-order-entry-submit-button-sell oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\",\n )}\n onClick={validateSubmit}\n loading={props.isMutating}\n disabled={!props.canTrade}\n >\n {buttonLabel}\n </ThrottledButton>\n\n {/* Asset info */}\n <AssetInfo\n canTrade={props.canTrade}\n quote={symbolInfo.quote}\n estLiqPrice={props.estLiqPrice}\n estLeverage={props.estLeverage}\n currentLeverage={props.currentLeverage}\n slippage={slippage}\n dp={symbolInfo.quote_dp}\n setSlippage={setSlippage}\n estSlippage={props.estSlippage}\n orderType={formattedOrder.order_type!}\n disableFeatures={disableFeatures}\n symbol={props.symbol}\n />\n\n <Divider className=\"oui-w-full\" />\n\n {/* TP SL switch and content */}\n {hasAdvancedTPSLResult ? (\n <AdvancedTPSLResult\n order={formattedOrder}\n symbolInfo={props.symbolInfo}\n errors={validated ? errors : null}\n onEdit={() => {\n setShowTPSLAdvanced(true);\n }}\n onDelete={() => {\n onDeleteAdvancedTPSL();\n }}\n />\n ) : (\n <OrderTPSL\n // onCancelTPSL={props.cancelTP_SL}\n // onEnableTP_SL={props.enableTP_SL}\n quote_dp={props.symbolInfo.quote_dp}\n switchState={props.tpslSwitch}\n onSwitchChanged={props.setTpslSwitch}\n orderType={formattedOrder.order_type!}\n errors={\n validated || isSlPriceWarning\n ? { ...errors, ...props.slPriceError }\n : null\n }\n setOrderValue={setOrderValue}\n reduceOnlyChecked={formattedOrder.reduce_only ?? false}\n onReduceOnlyChange={(checked) => {\n setOrderValue(\"reduce_only\", checked);\n }}\n values={{\n position_type:\n formattedOrder.position_type ?? PositionType.PARTIAL,\n tp: {\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n },\n sl: {\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n },\n }}\n showTPSLAdvanced={onShowTPSLAdvanced}\n onChange={(key, value) => {\n setOrderValue(key, value);\n }}\n />\n )}\n\n {showReduceOnlySection && (\n <Flex justify={\"between\"} itemAlign={\"center\"} className=\"oui-mt-2\">\n <ReduceOnlySwitch\n checked={formattedOrder.reduce_only ?? false}\n onCheckedChange={(checked) => {\n setOrderValue(\"reduce_only\", checked);\n }}\n />\n {!showSoundSection && extraButton}\n </Flex>\n )}\n {showSoundSection && (\n <Flex justify={\"between\"} itemAlign={\"center\"}>\n <Flex itemAlign={\"center\"} gapX={1}>\n <Switch\n className=\"oui-h-[14px]\"\n id={soundAlertId}\n checked={soundAlert}\n onCheckedChange={(checked) => setSoundAlert(checked)}\n />\n <label htmlFor={soundAlertId} className={\"oui-text-xs\"}>\n {t(\"portfolio.setting.soundAlerts\")}\n </label>\n </Flex>\n {extraButton}\n </Flex>\n )}\n {!showSoundSection &&\n isMobile &&\n (formattedOrder.order_type == OrderType.LIMIT ||\n formattedOrder.order_type == OrderType.MARKET) &&\n !formattedOrder.reduce_only &&\n !pinned && (\n <Flex className=\"oui-w-full\" justify={\"end\"}>\n {extraButton}\n </Flex>\n )}\n {/* Additional info (fok,ioc、post only, order confirm hidden) */}\n {pinned && (\n <Box p={2} r={\"md\"} intensity={700} position={\"relative\"}>\n <AdditionalInfo {...additionalInfoProps} />\n <PinButton\n onClick={() => {\n setPinned(false);\n }}\n className={\"oui-group oui-absolute oui-right-2 oui-top-2\"}\n data-testid=\"oui-testid-orderEntry-pinned-button\"\n />\n </Box>\n )}\n </div>\n\n <SimpleSheet\n open={showTPSLAdvanced}\n onOpenChange={setShowTPSLAdvanced}\n classNames={{\n body: \"oui-h-full oui-pb-0 oui-border-none\",\n overlay: \"!oui-bg-base-10/60\",\n content: cn(\n \"oui-rounded-[16px] oui-border-none !oui-p-0\",\n isMobile\n ? \"oui-inset-y-0 oui-right-0 oui-w-[280px]\"\n : \"!oui-bottom-[40px] oui-right-3 oui-top-[44px] !oui-h-auto oui-w-[360px]\",\n ),\n }}\n contentProps={{ side: \"right\", closeable: false }}\n >\n <TPSLAdvancedWidget\n setOrderValue={setOrderValue}\n order={formattedOrder as OrderlyOrder}\n onSubmit={onSubmitAdvancedTPSL}\n onClose={() => {\n setShowTPSLAdvanced(false);\n }}\n symbolLeverage={props.symbolLeverage}\n />\n </SimpleSheet>\n </OrderEntryProvider>\n );\n};\n","import { useState } from \"react\";\nimport {\n PopoverContent,\n PopoverRoot,\n PopoverTrigger,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AdditionalInfo, AdditionalInfoProps } from \"./additionalInfo\";\n\nexport function AdditionalConfigButton(props: AdditionalInfoProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n data-testid=\"oui-testid-orderEntry-additional-button\"\n onClick={() => {\n setOpen(true);\n }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-white/[.36] hover:oui-fill-white/80\"\n >\n <path\n d=\"M3.332 2.665a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667z\"\n // fill=\"#fff\"\n // fillOpacity={open ? 0.8 : 0.36}\n />\n </svg>\n </button>\n </PopoverTrigger>\n <PopoverContent side={\"top\"} align={\"end\"} className={\"oui-w-[230px]\"}>\n <AdditionalInfo {...props} />\n </PopoverContent>\n </PopoverRoot>\n );\n}\n","import { FC, useEffect } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderlyOrder, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Checkbox, cn, Divider, Flex, Switch } from \"@kodiak-finance/orderly-ui\";\n\nexport type AdditionalInfoProps = {\n pinned: boolean;\n setPinned: (value: boolean) => void;\n needConfirm: boolean;\n setNeedConfirm: (value: boolean) => void;\n hidden: boolean;\n setHidden: (value: boolean) => void;\n onValueChange?: (key: keyof OrderlyOrder, value: any) => void;\n orderTypeExtra?: OrderType;\n showExtra?: boolean;\n};\n\nexport const AdditionalInfo: FC<AdditionalInfoProps> = (props) => {\n const { pinned, orderTypeExtra } = props;\n const { t } = useTranslation();\n\n const onTypeToggle = (type: OrderType) => (checked: boolean) => {\n if (props.onValueChange) {\n props.onValueChange(\n \"order_type_ext\" as keyof OrderlyOrder,\n checked ? type : \"\",\n // orderTypeExtra === type ? \"\" : type\n );\n }\n };\n\n useEffect(() => {\n props.onValueChange?.(\"visible_quantity\", props.hidden ? 0 : 1);\n }, [props.hidden]);\n\n return (\n <div className={\"oui-text-base-contrast-54\"}>\n <Flex\n justify={pinned ? \"start\" : \"between\"}\n mb={3}\n width={pinned ? \"unset\" : \"100%\"}\n className=\"oui-gap-x-2 md:oui-gap-x-3\"\n wrap=\"wrap\"\n gapY={1}\n >\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-postOnly-checkBox\"\n id={\"toggle_order_post_only\"}\n className=\"oui-peer\"\n color={\"white\"}\n variant={\"radio\"}\n disabled={!props.showExtra}\n checked={orderTypeExtra === OrderType.POST_ONLY}\n onCheckedChange={onTypeToggle(OrderType.POST_ONLY)}\n />\n <label\n htmlFor={\"toggle_order_post_only\"}\n className={cn(\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {t(\"orderEntry.orderType.postOnly\")}\n </label>\n </Flex>\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-ioc-checkBox\"\n id={\"toggle_order_iov\"}\n color={\"white\"}\n className=\"oui-peer\"\n variant={\"radio\"}\n checked={orderTypeExtra === OrderType.IOC}\n onCheckedChange={onTypeToggle(OrderType.IOC)}\n disabled={!props.showExtra}\n />\n <label\n htmlFor={\"toggle_order_iov\"}\n className={cn(\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {t(\"orderEntry.orderType.ioc\")}\n </label>\n </Flex>\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-fox-checkBox\"\n id={\"toggle_order_fok\"}\n color={\"white\"}\n variant={\"radio\"}\n className=\"oui-peer\"\n checked={orderTypeExtra === OrderType.FOK}\n onCheckedChange={onTypeToggle(OrderType.FOK)}\n disabled={!props.showExtra}\n />\n <label\n htmlFor={\"toggle_order_fok\"}\n className={cn(\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {t(\"orderEntry.orderType.fok\")}\n </label>\n </Flex>\n </Flex>\n\n <Flex gapX={6}>\n <Flex>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-orderConfirm-checkBox\"\n id={\"toggle_order_confirm\"}\n color={\"white\"}\n checked={props.needConfirm}\n onCheckedChange={(checked) => {\n props.setNeedConfirm(!!checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_confirm\"}\n className={\"oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.orderConfirm\")}\n </label>\n </Flex>\n <Flex>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-hidden-checkBox\"\n id={\"toggle_order_hidden\"}\n color={\"white\"}\n checked={props.hidden}\n onCheckedChange={(checked: boolean) => {\n props.setHidden(checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_hidden\"}\n className={\"oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.hidden\")}\n </label>\n </Flex>\n </Flex>\n {!pinned && (\n <>\n <Divider className={\"oui-my-3\"} />\n <Flex>\n <Switch\n data-testid=\"oui-testid-orderEntry-additional-keepVisible-switch\"\n id={\"toggle_order_keep_visible\"}\n onCheckedChange={(checked) => {\n props.setPinned(checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_keep_visible\"}\n className={\"oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.keepVisible\")}\n </label>\n </Flex>\n </>\n )}\n </div>\n );\n};\n","import { HTMLAttributes, useState } from \"react\";\n\nconst defaultPath =\n \"M10.007 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.852-2.523 1.233.361 1.95.015 2.961-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103 5.35 5.35 0 0 0-2.104-1.312c-.448-.15-.808-.208-1.042-.208\";\n\nexport const PinButton = (props: HTMLAttributes<HTMLButtonElement>) => {\n const [path, setPath] = useState(defaultPath);\n return (\n <button {...props}>\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n onMouseEnter={() => {\n setPath(\n 'M10.008 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.15-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.107.507.508.94 1.13 1.119 1.945-.636.61-1.026.658-1.662.323a.67.67 0 0 0-.779.117c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.292-.076 1.773-.48 2.206-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.515 2.226-.514 1.742.001 2.668-.448 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.686-.29-1.047.321-1.67\"',\n );\n }}\n onMouseLeave={() => {\n setPath(defaultPath);\n }}\n className=\"oui-text-primary-darken\"\n >\n <path d={path} />\n </svg>\n </button>\n );\n};\n","import { SVGProps } from \"react\";\nimport { OrderValidationResult } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport {\n API,\n OrderlyOrder,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport { Divider, Flex, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport function AdvancedTPSLResult(props: {\n order: Partial<OrderlyOrder>;\n symbolInfo: API.SymbolExt;\n errors: OrderValidationResult | null;\n onEdit: () => void;\n onDelete: () => void;\n}) {\n const { order: formattedOrder, symbolInfo, onEdit, onDelete, errors } = props;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n const { t } = useTranslation();\n\n const renderTp = () => {\n const error = getErrorMsg(\"tp_trigger_price\");\n if (formattedOrder.tp_trigger_price || formattedOrder.tp_order_price) {\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-w-full\"\n gap={4}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n gapY={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpTriggerPrice\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.tp_trigger_price ?? \"\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpOrderPrice\")}</Text>\n {formattedOrder.tp_order_type === OrderType.LIMIT ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.tp_order_price ?? \"\"}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast\">Market</Text>\n )}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.totalEstTpPnl\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n coloring\n dp={2}\n >\n {Number(formattedOrder.tp_pnl)}\n </Text.numeral>\n </Flex>\n </Flex>\n {error && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-danger\" />\n <Text className=\"oui-text-danger\">{error}</Text>\n </Flex>\n )}\n </Flex>\n );\n }\n return null;\n };\n\n const renderSl = () => {\n if (formattedOrder.sl_trigger_price || formattedOrder.sl_order_price) {\n const error = getErrorMsg(\"sl_trigger_price\");\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-w-full\"\n gap={4}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n gapY={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slTriggerPrice\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.sl_trigger_price ?? \"\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slOrderPrice\")}</Text>\n {formattedOrder.sl_order_type === OrderType.LIMIT ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.sl_order_price ?? \"\"}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast\">Market</Text>\n )}\n </Flex>\n\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.totalEstSlPnl\")}</Text>\n <Text.numeral\n coloring\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n dp={2}\n >\n {Number(formattedOrder.sl_pnl)}\n </Text.numeral>\n </Flex>\n {error && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-danger\" />\n <Text className=\"oui-text-danger\">{error}</Text>\n </Flex>\n )}\n </Flex>\n </Flex>\n );\n }\n return null;\n };\n\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-w-full oui-text-2xs\"\n gap={4}\n >\n <Flex justify={\"between\"} itemAlign={\"start\"} className=\"oui-w-full\">\n <Text>{t(\"common.tpsl\")}</Text>\n <Flex gap={2}>\n <DeleteIcon\n size={12}\n className=\"oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n opacity={1}\n onClick={onDelete}\n />\n <EditIcon\n size={12}\n className=\"oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n onClick={onEdit}\n />\n </Flex>\n </Flex>\n <Flex justify={\"between\"} itemAlign={\"start\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.mode\")}</Text>\n <Text className=\"oui-text-base-contrast\">\n {formattedOrder.position_type === PositionType.FULL\n ? t(\"tpsl.fullPosition\")\n : t(\"tpsl.partialPosition\")}\n </Text>\n </Flex>\n {renderTp()}\n {renderSl()}\n\n <Divider className=\"oui-mb-2 oui-w-full\" />\n </Flex>\n );\n}\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\nconst DeleteIcon: React.FC<IconProps> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={props.size}\n height={props.size}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M5.99903 0.976562C5.44653 0.976562 4.99903 1.42406 4.99903 1.97656H2.49902C2.22302 1.97656 1.99902 2.20056 1.99902 2.47656C1.99902 2.75256 2.22302 2.97656 2.49902 2.97656H9.49903C9.77503 2.97656 9.99903 2.75256 9.99903 2.47656C9.99903 2.20056 9.77503 1.97656 9.49903 1.97656H6.99903C6.99903 1.42406 6.55153 0.976562 5.99903 0.976562ZM2.49902 3.97655V8.97654C2.49902 10.0715 3.40152 10.961 4.49903 10.961L7.51453 10.9765C8.61203 10.9765 9.49903 10.074 9.49903 8.97654V3.97655H2.49902ZM4.99903 5.47655C5.27503 5.47655 5.49903 5.70055 5.49903 5.97655V8.97654C5.49903 9.25254 5.27503 9.47654 4.99903 9.47654C4.72303 9.47654 4.49903 9.25254 4.49903 8.97654V5.97655C4.49903 5.70055 4.72303 5.47655 4.99903 5.47655ZM6.99903 5.47655C7.27503 5.47655 7.49903 5.70055 7.49903 5.97655V8.97654C7.49903 9.25254 7.27503 9.47654 6.99903 9.47654C6.72303 9.47654 6.49903 9.25254 6.49903 8.97654V5.97655C6.49903 5.70055 6.72303 5.47655 6.99903 5.47655Z\" />\n </svg>\n );\n};\n\nconst EditIcon: React.FC<IconProps> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 12 12\"\n width={props.size}\n height={props.size}\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.49779 0.976562C8.36529 0.976562 8.23229 1.02357 8.13829 1.11707C7.86029 1.39507 6.85979 2.39558 6.63779 2.61808L2.13529 7.12059L1.63479 7.62059C1.56529 7.69059 1.52929 7.78958 1.50979 7.88658L1.00979 10.3881C0.939788 10.7381 1.23779 11.0361 1.58779 10.9666C1.90079 10.9036 3.77679 10.5286 4.08929 10.4661C4.18629 10.4466 4.28529 10.4106 4.35529 10.3411L4.85529 9.84059L9.35779 5.33808C9.58029 5.11608 10.5808 4.11506 10.8588 3.83756C10.9523 3.74356 10.9993 3.61056 10.9993 3.47806C10.9993 2.65956 10.7908 2.07456 10.3583 1.63306C9.92179 1.18756 9.33879 0.976562 8.49779 0.976562ZM8.69479 1.98606C9.14629 2.01256 9.43879 2.11608 9.63929 2.32108C9.84429 2.53008 9.97379 2.82008 10.0018 3.26258C9.72779 3.53608 9.32679 3.93106 8.99829 4.25956C8.60179 3.86306 8.11279 3.37407 7.71629 2.97757C8.04529 2.64907 8.42129 2.25956 8.69479 1.98606ZM6.99729 3.69657L8.27929 4.97858L4.49579 8.76207L3.21379 7.48009L6.99729 3.69657ZM2.49479 8.19908L3.77679 9.48107L3.72979 9.52809C3.39979 9.59409 2.73329 9.73359 2.11929 9.85659L2.44779 8.24608L2.49479 8.19908Z\" />\n </svg>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text, textVariants } from \"@kodiak-finance/orderly-ui\";\nimport { FeesWidget } from \"../fee\";\nimport { SlippageUI } from \"../slippage/slippage.ui\";\n\nexport function AssetInfo(props: {\n symbol: string;\n canTrade: boolean;\n quote: string;\n estLiqPrice: number | null;\n estLeverage: number | null;\n currentLeverage: number | null;\n slippage: string;\n dp: number;\n estSlippage: number | null;\n setSlippage: (slippage: string) => void;\n orderType: OrderType;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n}) {\n const { canTrade, disableFeatures, orderType, symbol } = props;\n const { t } = useTranslation();\n\n return (\n <div className={\"oui-space-y-[2px] xl:oui-space-y-1\"}>\n <Flex justify={\"between\"}>\n <Text size={\"2xs\"}>{t(\"orderEntry.estLiqPrice\")}</Text>\n <Text.numeral\n unit={props.quote}\n size={\"2xs\"}\n dp={props.dp}\n className={\"oui-text-base-contrast-80\"}\n unitClassName={\"oui-ml-1 oui-text-base-contrast-36\"}\n >\n {canTrade ? (props.estLiqPrice ?? \"--\") : \"--\"}\n </Text.numeral>\n </Flex>\n\n {orderType === OrderType.MARKET &&\n !disableFeatures?.includes(\"slippageSetting\") && (\n <SlippageUI\n slippage={props.slippage}\n setSlippage={props.setSlippage}\n estSlippage={props.estSlippage}\n />\n )}\n\n {!disableFeatures?.includes(\"feesInfo\") && (\n <FeesWidget symbol={props.symbol} />\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { pick } from \"ramda\";\nimport {\n useFeeState,\n useRwaSymbolsInfoStore,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { EffectiveFeesWidget } from \"./effectiveFee\";\nimport { RegularFeesWidget } from \"./regularFee\";\n\nconst isEffective = (val?: unknown) =>\n typeof val !== \"undefined\" && val !== null;\n\nexport const FeesWidget: React.FC<{ symbol: string }> = ({ symbol }) => {\n const { refereeRebate, ...others } = useFeeState();\n const info = useRwaSymbolsInfoStore();\n const isRwa = info?.[symbol] !== undefined;\n const isEffectiveFee = isEffective(refereeRebate);\n return isEffectiveFee ? (\n <EffectiveFeesWidget\n taker={isRwa ? others.rwaEffectiveTakerFee : others.effectiveTakerFee}\n maker={isRwa ? others.rwaEffectiveMakerFee : others.effectiveMakerFee}\n />\n ) : (\n <RegularFeesWidget\n taker={isRwa ? others.rwaTakerFee : others.takerFee}\n maker={isRwa ? others.rwaMakerFee : others.makerFee}\n />\n );\n};\n","import React from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Flex,\n modal,\n Text,\n Tooltip,\n useModal,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\nimport {\n RouterAdapter,\n useScaffoldContext,\n} from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { EffectiveFee } from \"./icons\";\n\nconst EffectiveFeeBody: React.FC<{\n routerAdapter: RouterAdapter | undefined;\n onClose?: () => void;\n}> = ({ routerAdapter, onClose }) => {\n const { t } = useTranslation();\n return (\n <Text size=\"2xs\" className=\"oui-whitespace-normal oui-break-words\">\n {t(\"portfolio.feeTier.effectiveFee.tooltip\")}{\" \"}\n <a\n href=\"/rewards/affiliate\"\n onClick={(e) => {\n e.preventDefault();\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate\",\n name: t(\"portfolio.feeTier.effectiveFee.tooltipLink\"),\n });\n onClose?.();\n }}\n className=\"oui-cursor-pointer oui-border-none oui-bg-transparent oui-p-0 oui-text-2xs oui-underline hover:oui-text-base-contrast-80\"\n >\n {t(\"portfolio.feeTier.effectiveFee.tooltipLink\")}\n </a>\n </Text>\n );\n};\n\nconst EffectiveFeeMobileContent: React.FC<{\n routerAdapter: RouterAdapter | undefined;\n}> = ({ routerAdapter }) => {\n const { hide } = useModal();\n return <EffectiveFeeBody routerAdapter={routerAdapter} onClose={hide} />;\n};\n\nconst EffectiveFeeSection: React.FC<{\n routerAdapter: RouterAdapter | undefined;\n}> = (props) => {\n const { routerAdapter } = props;\n const { isMobile } = useScreen();\n const { t } = useTranslation();\n if (isMobile) {\n return (\n <EffectiveFee\n onClick={() => {\n modal.dialog({\n size: \"sm\",\n title: t(\"common.tips\"),\n content: (\n <EffectiveFeeMobileContent routerAdapter={routerAdapter} />\n ),\n });\n }}\n />\n );\n }\n return (\n <Tooltip\n content={<EffectiveFeeBody routerAdapter={routerAdapter} />}\n className=\"oui-p-1.5 oui-text-base-contrast-54\"\n >\n <EffectiveFee className={\"oui-cursor-pointer\"} />\n </Tooltip>\n );\n};\n\nexport const EffectiveFeeUI: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n const { t } = useTranslation();\n const { routerAdapter } = useScaffoldContext();\n const { taker, maker } = props;\n\n const originalTrailingFees = (\n <Flex itemAlign=\"center\" justify=\"between\" width={\"100%\"} gap={1}>\n <Flex width={\"100%\"} itemAlign=\"center\" justify={\"between\"}>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"common.fees\")}\n </Text>\n <AuthGuard\n fallback={() => (\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}: --% / {t(\"dmm.maker\")}: --%\n </Text>\n )}\n >\n <Flex gap={1}>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {taker}\n </Text>\n <Text size=\"2xs\">/</Text>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.maker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {maker}\n </Text>\n </Flex>\n </AuthGuard>\n </Flex>\n <EffectiveFeeSection routerAdapter={routerAdapter} />\n </Flex>\n );\n\n return originalTrailingFees;\n};\n","import React, { useId } from \"react\";\n\nexport const EffectiveFee = React.forwardRef<\n SVGSVGElement,\n React.SVGAttributes<SVGSVGElement>\n>((props, ref) => {\n const linearId = useId();\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={14}\n height={14}\n viewBox=\"0 0 14 14\"\n fill=\"currentColor\"\n ref={ref}\n focusable={false}\n {...props}\n >\n <path\n d=\"M6.16411 1.53106C6.61974 1.07566 7.35888 1.07551 7.81442 1.53106L8.48833 2.20496C8.6797 2.39624 8.93064 2.51452 9.19755 2.54106L9.3132 2.54676H10.2662C10.9104 2.54691 11.4328 3.06926 11.4329 3.71343V4.66647C11.4329 4.97589 11.5559 5.27312 11.7747 5.49191L12.4492 6.16582C12.9047 6.62142 12.9047 7.36054 12.4492 7.81613L11.7753 8.49004L11.6972 8.57549C11.5272 8.78302 11.433 9.04426 11.4329 9.31491V10.2685L11.4272 10.3876C11.3715 10.9366 10.9348 11.373 10.3859 11.4289L10.2662 11.4352H9.3132L9.19755 11.4409C8.93066 11.4674 8.67969 11.5857 8.48833 11.777L7.81442 12.4509L7.72555 12.5306C7.29789 12.8795 6.68066 12.8794 6.25297 12.5306L6.16411 12.4509L5.4902 11.777C5.29887 11.5857 5.04786 11.4675 4.78097 11.4409L4.66533 11.4352H3.71171L3.59265 11.4289C3.04358 11.3731 2.60705 10.9367 2.55131 10.3876L2.54505 10.2685V9.31491C2.54499 9.04416 2.45089 8.78306 2.28072 8.57549L2.20325 8.49004L1.52934 7.81613C1.10213 7.38905 1.07534 6.71297 1.44902 6.25469L1.52934 6.16582L2.20382 5.49191C2.42248 5.27314 2.54505 4.97579 2.54505 4.66647V3.71343C2.54513 3.10945 3.00442 2.61221 3.59265 2.55246L3.71171 2.54676H4.66533L4.78097 2.54106C5.00968 2.51826 5.22694 2.4281 5.40475 2.28244L5.4902 2.20496L6.16411 1.53106ZM6.31507 3.02983C5.87756 3.46727 5.28401 3.71336 4.66533 3.71343H3.71171V4.66647C3.71171 5.28521 3.46614 5.87922 3.02869 6.31678L2.35421 6.99069L3.02812 7.6646C3.46577 8.10214 3.71164 8.69607 3.71171 9.31491V10.2685H4.66533C5.28396 10.2686 5.87757 10.5142 6.31507 10.9515L6.98898 11.6255L7.66289 10.9515C8.10045 10.5141 8.69446 10.2685 9.3132 10.2685H10.2662V9.31491C10.2663 8.69604 10.5127 8.10214 10.9504 7.6646L11.6243 6.99069L10.9498 6.31678C10.5122 5.8792 10.2662 5.28531 10.2662 4.66647V3.71343H9.3132C8.69438 3.71343 8.10047 3.46739 7.66289 3.02983L6.98898 2.35592L6.31507 3.02983ZM8.52934 4.64255C8.7571 4.41479 9.12639 4.41489 9.35421 4.64255C9.58202 4.87035 9.58202 5.23961 9.35421 5.46742L5.4657 9.35593C5.2379 9.58372 4.86863 9.58373 4.64083 9.35593C4.41318 9.12811 4.41308 8.75881 4.64083 8.53106L8.52934 4.64255ZM8.66435 7.83265C9.1245 7.83272 9.49777 8.2059 9.49777 8.66607C9.49769 9.12616 9.12445 9.49941 8.66435 9.49948C8.20419 9.49948 7.83101 9.12621 7.83094 8.66607C7.83094 8.20586 8.20415 7.83265 8.66435 7.83265ZM5.33126 4.49956C5.79141 4.49963 6.16468 4.87282 6.16468 5.33298C6.1646 5.79307 5.79136 6.16575 5.33126 6.16582C4.87111 6.16582 4.49793 5.79311 4.49785 5.33298C4.49785 4.87277 4.87106 4.49956 5.33126 4.49956Z\"\n fill={`url(#${linearId})`}\n />\n <defs>\n <linearGradient\n id={linearId}\n x1=\"12.7908\"\n y1=\"6.99084\"\n x2=\"1.1875\"\n y2=\"6.99084\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop stopColor=\"rgb(var(--oui-gradient-brand-start))\" offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n EffectiveFee.displayName = \"EffectiveFee\";\n}\n","import React from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { EffectiveFeeUI } from \"./effectiveFee.ui\";\n\nexport const EffectiveFeesWidget: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n return <EffectiveFeeUI {...props} />;\n};\n","import React from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\n\nexport const RegularFeesUI: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n const { t } = useTranslation();\n const { taker, maker } = props;\n\n const originalTrailingFees = (\n <Flex itemAlign=\"center\" justify=\"between\" width={\"100%\"} gap={1}>\n <Flex width={\"100%\"} itemAlign=\"center\" justify={\"between\"}>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"common.fees\")}\n </Text>\n <AuthGuard\n fallback={() => (\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}: --% / {t(\"dmm.maker\")}: --%\n </Text>\n )}\n >\n <Flex gap={1}>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {taker}\n </Text>\n <Text size=\"2xs\">/</Text>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.maker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {maker}\n </Text>\n </Flex>\n </AuthGuard>\n </Flex>\n </Flex>\n );\n\n return originalTrailingFees;\n};\n","import React from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { RegularFeesUI } from \"./regularFees.ui\";\n\nexport const RegularFeesWidget: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n return <RegularFeesUI {...props} />;\n};\n","import { useRef } from \"react\";\nimport { useBoolean } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n EditIcon,\n Flex,\n Text,\n SimpleDialog,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\nimport { SlippageEditor } from \"./slippageEditor\";\n\nexport const SlippageCell = (props: {\n slippage: string;\n setSlippage: (slippage: string) => void;\n estSlippage: number | null;\n}) => {\n const { t } = useTranslation();\n const [open, { setTrue: setOpen, setFalse: setClose, toggle }] =\n useBoolean(false);\n\n const { isMobile } = useScreen();\n const slippageRef = useRef<{ getValue: () => number | undefined }>(null);\n\n const onConfirm = () => {\n const val = slippageRef.current?.getValue();\n\n props.setSlippage(!val ? \"1\" : val.toString());\n setClose();\n return Promise.resolve(true);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={toggle}\n title={t(\"common.settings\")}\n contentProps={{ size: isMobile ? \"xs\" : \"sm\" }}\n actions={{\n primary: {\n disabled: false,\n label: t(\"common.save\"),\n onClick: onConfirm,\n },\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => setClose(),\n },\n }}\n >\n <SlippageEditor\n ref={slippageRef}\n isMobile={isMobile}\n initialValue={props.slippage ? Number(props.slippage) : undefined}\n />\n </SimpleDialog>\n <Flex justify={\"between\"}>\n <Text size=\"2xs\">{t(\"orderEntry.slippage\")}</Text>\n <AuthGuard\n fallback={() => (\n <Text size=\"2xs\">\n {t(\"orderEntry.slippage.est\")}: -% / {t(\"common.max\")}: --%\n </Text>\n )}\n >\n <Flex gap={1}>\n <Text.numeral\n size=\"2xs\"\n rule=\"percentages\"\n prefix={`${t(\"orderEntry.slippage.est\")}: `}\n suffix={` / ${t(\"common.max\")}: `}\n >\n {props.estSlippage ?? 0}\n </Text.numeral>\n <button className=\"oui-text-2xs\" onClick={() => setOpen()}>\n <Flex className=\"oui-gap-0.5\" as=\"span\">\n <Text size=\"2xs\" className=\"oui-text-primary\">\n {`${props.slippage || \"-\"}%`}\n </Text>\n <EditIcon\n className=\"oui-text-primary oui-hidden md:oui-block\"\n size={12}\n opacity={1}\n />\n </Flex>\n </button>\n </Flex>\n </AuthGuard>\n </Flex>\n </>\n );\n};\n","import {\n FC,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n cn,\n ExclamationFillIcon,\n Flex,\n Input,\n inputFormatter,\n modal,\n Text,\n Tooltip,\n TooltipTrigger,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\ninterface SlippageProps {\n initialValue?: number;\n isMobile?: boolean;\n}\n\nconst options = [0.01, 0.05, 0.1];\n\nexport const SlippageEditor = forwardRef<\n { getValue: () => number | undefined },\n SlippageProps\n>((props, ref) => {\n const { t } = useTranslation();\n const [value, setValue] = useState<number>();\n const [customValue, setCustomValue] = useState(\"\");\n const [error, setError] = useState<string | undefined>(undefined);\n\n useImperativeHandle(ref, () => ({\n getValue: () =>\n customValue ? new Decimal(customValue)?.toNumber() : value,\n }));\n\n useEffect(() => {\n if (props.initialValue && !options.includes(props.initialValue!)) {\n setCustomValue(props.initialValue!.toString());\n } else {\n setValue(props.initialValue);\n }\n }, [props.initialValue, open]);\n\n const onClick = (val: number) => {\n setValue(val);\n setCustomValue(\"\");\n setError(undefined);\n };\n\n const onValueChange = (val: string) => {\n if (!val) {\n setCustomValue(val);\n return;\n }\n\n const d = new Decimal(val);\n setValue(undefined);\n if (d.gt(3)) {\n setCustomValue(\"3\");\n setError(t(\"orderEntry.slippage.error.exceed\"));\n } else {\n setCustomValue(val);\n setError(undefined);\n }\n };\n\n const toolTipButton = props.isMobile ? (\n <button\n onClick={() => {\n // setOpen(true)\n modal.alert({\n title: t(\"common.tips\"),\n message: <Text size=\"2xs\">{t(\"orderEntry.slippage.tips\")}</Text>,\n });\n }}\n >\n <ExclamationFillIcon className=\"oui-text-base-contrast-54\" size={16} />\n </button>\n ) : (\n <Tooltip\n // @ts-ignore\n content={\n <Text intensity={80} size=\"2xs\">\n {t(\"orderEntry.slippage.tips\")}\n </Text>\n }\n className=\"oui-w-[260px] oui-bg-base-6\"\n arrow={{ className: \"oui-fill-base-6\" }}\n >\n <TooltipTrigger>\n <ExclamationFillIcon className=\"oui-text-base-contrast-54\" size={16} />\n </TooltipTrigger>\n </Tooltip>\n );\n\n return (\n <div className=\"oui-text-2xs\">\n <Flex mb={2} gapX={1}>\n <Text size=\"xs\">{t(\"orderEntry.slippage\")}</Text>\n {toolTipButton}\n </Flex>\n <Flex gapX={2}>\n {options.map((item) => {\n const isActive = value === item;\n return (\n <SlippageItem\n key={item}\n value={item}\n isActive={isActive}\n onClick={() => {\n onClick(item);\n }}\n />\n );\n })}\n\n <Input\n suffix=\"%\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(2),\n ]}\n value={customValue}\n onValueChange={onValueChange}\n classNames={{\n root: cn(\n \"oui-rounded-md oui-bg-base-6\",\n \"oui-h-[40px] oui-w-[74px]\",\n ),\n input: \"oui-text-base-contrast\",\n additional: \"oui-pl-1\",\n }}\n />\n </Flex>\n {!!error && (\n <Box mt={5} className=\"-oui-mb-5\">\n <Text size=\"2xs\" color=\"danger\">\n {error}\n </Text>\n </Box>\n )}\n </div>\n );\n});\n\ntype SlippageItemProps = {\n value: number;\n isActive: boolean;\n onClick: () => void;\n};\n\nconst SlippageItem: FC<SlippageItemProps> = ({ value, isActive, onClick }) => {\n return (\n <Flex\n intensity={600}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"md\"\n width={74}\n height={40}\n className={cn(\n \"oui-cursor-pointer oui-select-none\",\n isActive && \"oui-bg-primary-light\",\n )}\n onClick={onClick}\n >\n <Text size=\"sm\" intensity={80}>\n {value}%\n </Text>\n </Flex>\n );\n};\n","import { SlippageCell } from \"./components/slippageCell\";\n\nexport const SlippageUI = (props: {\n slippage: string;\n setSlippage: (slippage: string) => void;\n estSlippage: number | null;\n}) => {\n return <SlippageCell {...props} />;\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Flex,\n Tooltip,\n Text,\n InfoCircleIcon,\n AddCircleIcon,\n Button,\n modal,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { LTVRiskTooltipWidget } from \"../LTVRiskTooltip\";\n\ntype AvailableProps = {\n canTrade: boolean;\n currentLtv: number;\n freeCollateral: number;\n quote?: string;\n};\n\nexport const Available = (props: AvailableProps) => {\n const { canTrade, currentLtv, quote, freeCollateral } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const showLTV = useMemo(() => {\n return (\n typeof currentLtv === \"number\" &&\n !Number.isNaN(currentLtv) &&\n currentLtv > 0\n );\n }, [currentLtv]);\n\n return (\n <Flex itemAlign={\"center\"} justify={\"between\"}>\n <Text size={\"2xs\"}>{t(\"common.available\")}</Text>\n <Flex itemAlign={\"center\"} justify={\"center\"} gap={1}>\n {showLTV && (\n <Tooltip\n className={\"oui-bg-base-6 oui-p-2\"}\n content={<LTVRiskTooltipWidget />}\n >\n <InfoCircleIcon\n className={\"oui-cursor-pointer oui-text-warning oui-opacity-80\"}\n />\n </Tooltip>\n )}\n <Text.numeral\n unit={quote}\n size={\"2xs\"}\n className={\"oui-text-base-contrast-80\"}\n unitClassName={\"oui-ml-1 oui-text-base-contrast-54\"}\n dp={2}\n padding={false}\n >\n {canTrade ? freeCollateral : 0}\n </Text.numeral>\n <Button\n variant=\"text\"\n size=\"xs\"\n color=\"secondary\"\n className=\"oui-p-0 hover:oui-text-base-contrast-80\"\n onClick={() => {\n // TODO: when we plan to move modal IDs to a public package, we need to use the ID from the public package\n const handleDomId = isMobile\n ? \"DepositAndWithdrawWithSheetId\"\n : \"DepositAndWithdrawWithDialogId\";\n modal.show(handleDomId, {\n activeTab: \"deposit\",\n });\n }}\n >\n <AddCircleIcon opacity={1} />\n </Button>\n </Flex>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Button, cn, Divider, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { removeTrailingZeros } from \"@kodiak-finance/orderly-utils\";\nimport type { LTVTooltipScriptReturn } from \"./LTVRiskTooltip.script\";\n\nconst calculateLTVColor = (val: number): string => {\n if (val >= 0 && val < 50) {\n return \"oui-text-success\";\n } else if (val >= 50 && val < 80) {\n return \"oui-text-warning\";\n } else if (val >= 80) {\n return \"oui-text-danger\";\n } else {\n return \"\";\n }\n};\n\nexport const LTVRiskTooltipUI: React.FC<LTVTooltipScriptReturn> = (props) => {\n const { t } = useTranslation();\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isThresholdLoading,\n holdingData = [],\n currentLtv,\n onConvert,\n } = props;\n return (\n <Flex gap={1} className=\"oui-w-72 oui-max-w-72\" direction=\"column\">\n <Flex width={\"100%\"} justify=\"between\" itemAlign=\"center\">\n <Text intensity={36} size=\"xs\">\n {t(\"common.assets\")}\n </Text>\n <Text intensity={36} size=\"xs\">\n {t(\"transfer.deposit.collateralContribution\")}\n </Text>\n </Flex>\n {holdingData.map((asset, index) => {\n return (\n <Flex\n key={`item-${index}`}\n width={\"100%\"}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Text intensity={80} size=\"xs\">\n {asset.token}\n </Text>\n <Text\n size=\"xs\"\n intensity={80}\n className={cn(\n Number(asset.collateralContribution) < 0 && \"oui-text-warning\",\n )}\n >\n {removeTrailingZeros(asset.collateralContribution)}\n </Text>\n </Flex>\n );\n })}\n <Divider className=\"oui-w-full\" />\n <Flex width={\"100%\"} justify=\"between\" itemAlign=\"center\">\n <Text intensity={36} size=\"xs\">\n {t(\"transfer.LTV.currentLTV\")}\n </Text>\n <Text\n size=\"xs\"\n intensity={36}\n className={cn(\"oui-select-none\", calculateLTVColor(currentLtv))}\n >\n {currentLtv}%\n </Text>\n </Flex>\n <Text className=\"oui-py-2\" intensity={54} size=\"2xs\">\n {t(\"transfer.LTV.tooltip\", {\n threshold: isThresholdLoading ? \"-\" : ltv_threshold,\n usdcThreshold: isThresholdLoading ? \"-\" : negative_usdc_threshold,\n })}\n </Text>\n <Button\n fullWidth\n size={\"md\"}\n variant={\"outlined\"}\n color={\"secondary\"}\n onClick={onConvert}\n >\n {t(\"transfer.convert.convertAssets\")}\n </Button>\n </Flex>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useComputedLTV,\n useHoldingStream,\n useIndexPricesStream,\n useQuery,\n useAppStore,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { account } from \"@kodiak-finance/orderly-perp\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal, zero } from \"@kodiak-finance/orderly-utils\";\n\nconst useConvertThreshold = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n { errorRetryCount: 3 },\n );\n return {\n ltv_threshold: new Decimal(data?.ltv_threshold ?? 0).mul(100).toNumber(),\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n } as const;\n};\n\nexport const useLTVTooltipScript = () => {\n const { data: holdingList = [], isLoading: isHoldingLoading } =\n useHoldingStream();\n\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isLoading: isThresholdLoading,\n } = useConvertThreshold();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const { getIndexPrice } = useIndexPricesStream();\n\n const holdingData = holdingList.map((item) => {\n const tokenInfo = tokensInfo?.find(({ token }) => token === item.token);\n\n // Use extracted function for index price calculation\n const indexPrice = getIndexPrice(item.token);\n\n // Calculate collateral ratio for this token\n const collateralRatio = tokenInfo\n ? account.collateralRatio({\n baseWeight: tokenInfo.base_weight ?? 0,\n discountFactor: tokenInfo.discount_factor ?? 0,\n collateralQty: item.holding,\n collateralCap: tokenInfo?.user_max_qty ?? item.holding,\n indexPrice: indexPrice,\n })\n : zero;\n\n // Calculate collateral contribution for this token\n const collateralContribution = account.collateralContribution({\n collateralQty: item.holding,\n collateralCap: tokenInfo?.user_max_qty ?? item.holding,\n collateralRatio: collateralRatio.toNumber(),\n indexPrice: indexPrice,\n });\n\n return {\n ...item,\n collateralContribution: collateralContribution,\n };\n });\n\n const currentLtv = useComputedLTV();\n\n const onConvert = useCallback(async () => {\n return modal.show(\"ConvertDialogId\");\n }, []);\n\n return {\n holdingData,\n isHoldingLoading,\n ltv_threshold,\n negative_usdc_threshold,\n isThresholdLoading,\n currentLtv: currentLtv,\n onConvert: onConvert,\n };\n};\n\nexport type LTVTooltipScriptReturn = ReturnType<typeof useLTVTooltipScript>;\n","import React from \"react\";\nimport { useLTVTooltipScript } from \"./LTVRiskTooltip.script\";\nimport { LTVRiskTooltipUI } from \"./LTVRiskTooltip.ui\";\n\nexport const LTVRiskTooltipWidget: React.FC = () => {\n const state = useLTVTooltipScript();\n return <LTVRiskTooltipUI {...state} />;\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { usePositionStream } from \"@kodiak-finance/orderly-hooks\";\nimport { i18n, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n BBOOrderType,\n API,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport { OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport {\n Badge,\n Button,\n Checkbox,\n cn,\n Divider,\n Flex,\n Grid,\n registerSimpleDialog,\n Text,\n textVariants,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal, getBBOType } from \"@kodiak-finance/orderly-utils\";\nimport { isBBOOrder } from \"../../utils\";\n\ntype OrderConfirmDialogProps = {\n order: OrderlyOrder;\n symbolInfo: API.SymbolExt;\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nexport const OrderConfirmDialog = (props: OrderConfirmDialogProps) => {\n const { symbolInfo, order, onConfirm, onCancel } = props;\n const { quote, quote_dp, base_dp } = symbolInfo;\n const { side, order_type, order_type_ext, level, symbol } = order;\n const { t } = useTranslation();\n const [{ rows: positions }] = usePositionStream(symbol);\n const position = positions?.[0];\n const positionQty = position?.position_qty;\n\n const [_, setNeedConfirm] = useLocalStorage(\"orderly_order_confirm\", true);\n\n const renderPositionType = () => {\n if (order.position_type === PositionType.FULL) {\n return <Text>{t(\"tpsl.positionType.full\")}</Text>;\n }\n return <Text>{t(\"tpsl.positionType.partial\")}</Text>;\n };\n\n const renderPrice = () => {\n if (\n order_type === OrderType.MARKET ||\n order_type === OrderType.STOP_MARKET\n ) {\n return <Text intensity={80}>{t(\"common.marketPrice\")}</Text>;\n }\n\n if (isBBOOrder({ order_type, order_type_ext })) {\n const bboType = getBBOType({\n type: order_type_ext!,\n side,\n level,\n });\n const label = {\n [BBOOrderType.COUNTERPARTY1]: t(\"orderEntry.bbo.counterparty1\"),\n [BBOOrderType.COUNTERPARTY5]: t(\"orderEntry.bbo.counterparty5\"),\n [BBOOrderType.QUEUE1]: t(\"orderEntry.bbo.queue1\"),\n [BBOOrderType.QUEUE5]: t(\"orderEntry.bbo.queue5\"),\n }[bboType!];\n\n return <Text intensity={80}>{label}</Text>;\n }\n\n return (\n <Text.numeral\n unit={quote}\n rule=\"price\"\n className=\"oui-text-base-contrast\"\n unitClassName=\"oui-text-base-contrast-36 oui-ml-1\"\n dp={quote_dp}\n padding={false}\n >\n {order.order_price}\n </Text.numeral>\n );\n };\n\n const renderTPSLPrice = ({\n price,\n isOrderPrice,\n isEnable,\n colorType,\n }: {\n price: string;\n isOrderPrice?: boolean;\n isEnable?: boolean;\n colorType: \"TP\" | \"SL\";\n }) => {\n if (!isEnable) {\n return <Text className=\"oui-text-base-contrast-36\">-- USDC</Text>;\n }\n if (!price) {\n if (isOrderPrice) {\n return (\n <Text className=\"oui-text-base-contrast-36\">\n {t(\"common.marketPrice\")}\n </Text>\n );\n }\n }\n return (\n <Text.numeral\n unit={\"USDC\"}\n rule={\"price\"}\n className={cn(\n \"oui-text-base-contrast\",\n colorType === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n dp={quote_dp}\n padding={false}\n >\n {price}\n </Text.numeral>\n );\n };\n\n const renderTPSLQty = () => {\n if (!positionQty || !order.order_quantity) {\n return null;\n }\n let qty = new Decimal(order.order_quantity);\n if (order.position_type === PositionType.FULL) {\n qty = qty.plus(new Decimal(positionQty ?? 0));\n }\n return (\n <Flex justify={\"between\"}>\n <Text>\n {order.position_type === PositionType.FULL\n ? t(\"common.positionQty\")\n : t(\"common.orderQty\")}\n </Text>\n <Text.numeral\n rule={\"price\"}\n dp={base_dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {qty.toNumber()}\n </Text.numeral>\n </Flex>\n );\n };\n\n const renderPriceAndTotal = () => {\n if (order_type === OrderType.TRAILING_STOP) {\n const { activated_price, callback_value, callback_rate } = order;\n\n const callbackView = callback_rate ? (\n <Flex justify={\"between\"}>\n <Text>{t(\"orderEntry.trailingRate\")}</Text>\n <Text className=\"oui-text-base-contrast\">{callback_rate}%</Text>\n </Flex>\n ) : (\n <OrderItem\n title={t(\"orderEntry.trailingValue\")}\n value={callback_value!}\n unit={quote}\n dp={quote_dp}\n />\n );\n return (\n <>\n {activated_price && (\n <OrderItem\n title={t(\"common.triggerPrice\")}\n value={activated_price!}\n unit={quote}\n dp={quote_dp}\n />\n )}\n {callbackView}\n </>\n );\n }\n\n return (\n <>\n <Flex justify={\"between\"}>\n <Text>{t(\"common.price\")}</Text>\n {renderPrice()}\n </Flex>\n <OrderItem\n title={t(\"common.estTotal\")}\n value={order.total}\n unit={quote}\n dp={quote_dp}\n />\n </>\n );\n };\n\n const header = (\n <Flex justify={\"between\"}>\n <Text.formatted rule={\"symbol\"} showIcon>\n {order.symbol}\n </Text.formatted>\n <Flex justify={\"end\"} gapX={1}>\n <OrderTypeTag type={order_type} />\n {side === OrderSide.BUY ? (\n <Badge color={\"buy\"} size={\"sm\"}>\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge color={\"sell\"} size={\"sm\"}>\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n );\n\n const quantityItem = (\n <Flex justify={\"between\"}>\n <Text>{t(\"common.orderQty\")}</Text>\n <Text.numeral\n rule={\"price\"}\n dp={base_dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {order.order_quantity}\n </Text.numeral>\n </Flex>\n );\n\n const triggerPriceItem = (order_type === OrderType.STOP_LIMIT ||\n (order_type === OrderType.STOP_MARKET && order.trigger_price)) && (\n <OrderItem\n title={t(\"common.trigger\")}\n value={order.trigger_price}\n unit={quote}\n dp={quote_dp}\n />\n );\n\n const tpslTriggerPrice = (order.tp_trigger_price ||\n order.sl_trigger_price) && (\n <>\n <Divider className=\"oui-my-4\" />\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className: \"oui-space-y-1 oui-w-full oui-flex oui-flex-col oui-gap-3\",\n })}\n >\n <Text className=\"oui-text-base-contrast\">{renderPositionType()}</Text>\n {renderTPSLQty()}\n\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpTriggerPrice\")}</Text>\n {renderTPSLPrice({\n price: order.tp_trigger_price ?? \"\",\n isOrderPrice: false,\n isEnable: !!order.tp_trigger_price,\n colorType: \"TP\",\n })}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpOrderPrice\")}</Text>\n {renderTPSLPrice({\n price: order.tp_order_price ?? \"\",\n isOrderPrice: true,\n isEnable: !!order.tp_trigger_price,\n colorType: \"TP\",\n })}\n </Flex>\n </Flex>\n\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slTriggerPrice\")}</Text>\n {renderTPSLPrice({\n price: order.sl_trigger_price ?? \"\",\n isOrderPrice: false,\n isEnable: !!order.sl_trigger_price,\n colorType: \"SL\",\n })}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slOrderPrice\")}</Text>\n {renderTPSLPrice({\n price: order.sl_order_price ?? \"\",\n isOrderPrice: true,\n isEnable: !!order.sl_trigger_price,\n colorType: \"SL\",\n })}\n </Flex>\n </Flex>\n </div>\n </>\n );\n\n const orderConfirmCheckbox = (\n <Flex gapX={1} pt={4} pb={5}>\n <Checkbox\n id=\"orderConfirm\"\n color={\"white\"}\n onCheckedChange={(checked) => {\n setNeedConfirm(!!!checked);\n }}\n />\n <label\n htmlFor=\"orderConfirm\"\n className={textVariants({\n size: \"xs\",\n intensity: 54,\n })}\n >\n {t(\"orderEntry.disableOrderConfirm\")}\n </label>\n </Flex>\n );\n\n const buttons = (\n <Grid cols={2} gapX={3}>\n <Button color={\"secondary\"} size={\"md\"} onClick={() => onCancel()}>\n {t(\"common.cancel\")}\n </Button>\n <Button size={\"md\"} onClick={() => onConfirm()}>\n {t(\"common.confirm\")}\n </Button>\n </Grid>\n );\n\n return (\n <>\n {header}\n <Divider className=\"oui-my-4\" />\n\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className: \"oui-space-y-1\",\n })}\n >\n {quantityItem}\n {triggerPriceItem}\n\n {renderPriceAndTotal()}\n </div>\n\n {tpslTriggerPrice}\n\n {orderConfirmCheckbox}\n\n {buttons}\n </>\n );\n};\n\ntype OrderItemProps = {\n title: ReactNode;\n value: string;\n unit: string;\n dp: number;\n};\n\nconst OrderItem: FC<OrderItemProps> = (props) => {\n const { title, value, unit, dp } = props;\n return (\n <Flex justify=\"between\">\n <Text>{title}</Text>\n <Text.numeral\n unit={unit}\n rule=\"price\"\n dp={dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n unitClassName=\"oui-text-base-contrast-36 oui-ml-1\"\n >\n {value}\n </Text.numeral>\n </Flex>\n );\n};\n\nOrderConfirmDialog.displayName = \"OrderConfirmDialog\";\n\nconst OrderTypeTag = (props: { type: OrderType }) => {\n const { t } = useTranslation();\n const typeStr = useMemo(() => {\n switch (props.type) {\n case OrderType.LIMIT:\n return t(\"orderEntry.orderType.limit\");\n case OrderType.MARKET:\n return t(\"common.marketPrice\");\n case OrderType.STOP_LIMIT:\n return t(\"orderEntry.orderType.stopLimit\");\n case OrderType.STOP_MARKET:\n return t(\"orderEntry.orderType.stopMarket\");\n case OrderType.TRAILING_STOP:\n return t(\"orderEntry.orderType.trailingStop\");\n default:\n return \"\";\n }\n }, [props.type]);\n\n return (\n <Badge color={\"neutral\"} size={\"sm\"}>\n {typeStr}\n </Badge>\n );\n};\n\nconst Dialog = (\n props: Omit<OrderConfirmDialogProps, \"onCancel\" | \"onConfirm\"> & {\n close: () => void;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n },\n) => {\n const { close, resolve, reject, ...rest } = props;\n\n return (\n <OrderConfirmDialog\n {...rest}\n onCancel={() => {\n reject();\n close();\n }}\n onConfirm={() => {\n resolve();\n close();\n }}\n />\n );\n};\n\nexport const orderConfirmDialogId = \"orderConfirm\";\n\nregisterSimpleDialog(orderConfirmDialogId, Dialog, {\n size: \"sm\",\n title: () => i18n.t(\"orderEntry.orderConfirm\"),\n});\n","import { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport {\n BBOOrderType,\n OrderLevel,\n OrderSide,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\n\nexport enum BBOStatus {\n ON = \"on\",\n OFF = \"off\",\n DISABLED = \"disabled\",\n}\n\n/**\n * if provide order_type, check order_type and order_type_ext, otherswise only check order_type_ext\n */\nexport function isBBOOrder(options: {\n order_type?: OrderType;\n order_type_ext?: OrderType;\n}) {\n const { order_type, order_type_ext } = options;\n\n const isBBO = [OrderType.ASK, OrderType.BID].includes(order_type_ext!);\n\n if (order_type) {\n return order_type === OrderType.LIMIT && isBBO;\n }\n\n return isBBO;\n}\n\nexport function getOrderTypeByBBO(value: BBOOrderType, size: OrderSide) {\n if (\n [BBOOrderType.COUNTERPARTY1, BBOOrderType.COUNTERPARTY5].includes(value)\n ) {\n return size === OrderSide.BUY ? OrderType.ASK : OrderType.BID;\n }\n\n if ([BBOOrderType.QUEUE1, BBOOrderType.QUEUE5].includes(value)) {\n return size === OrderSide.BUY ? OrderType.BID : OrderType.ASK;\n }\n}\n\nexport function getOrderLevelByBBO(value: BBOOrderType) {\n if ([BBOOrderType.COUNTERPARTY1, BBOOrderType.QUEUE1].includes(value)) {\n return OrderLevel.ONE;\n }\n\n if ([BBOOrderType.COUNTERPARTY5, BBOOrderType.QUEUE5].includes(value)) {\n return OrderLevel.FIVE;\n }\n}\n\nexport function getScaledPlaceOrderMessage(result: any) {\n const rows = result?.data?.rows || [];\n\n if (rows.length > 0) {\n const totalCount = rows.length;\n const successCount = rows.filter((row: any) => row.success).length;\n\n // fully successful\n if (successCount === totalCount) {\n return i18n.t(\"orderEntry.scaledOrder.fullySuccessful\", {\n total: totalCount,\n });\n }\n\n // all failed\n if (successCount === 0) {\n return i18n.t(\"orderEntry.scaledOrder.allFailed\");\n }\n\n // partially successful\n return i18n.t(\"orderEntry.scaledOrder.partiallySuccessful\", {\n successCount,\n total: totalCount,\n });\n }\n}\n\nexport const safeNumber = (val: number | string) => {\n return Number.isNaN(Number(val)) ? 0 : Number(val);\n};\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { SimpleDialog } from \"@kodiak-finance/orderly-ui\";\n\ntype MaxQtyConfirmProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n maxQty: string;\n onConfirm: () => void;\n base: string;\n};\n\nexport const MaxQtyConfirm: FC<MaxQtyConfirmProps> = memo((props) => {\n const { t } = useTranslation();\n return (\n <SimpleDialog\n open={props.open}\n title={t(\"orderEntry.orderConfirm\")}\n closable\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n actions={{\n primary: {\n label: t(\"orderEntry.placeOrderNow\"),\n className: \"oui-text-sm oui-font-semibold oui-w-[100%] oui-h-8\",\n onClick: () => {\n props.onConfirm();\n return Promise.resolve();\n },\n },\n secondary: {\n label: t(\"common.cancel\"),\n className: \"oui-text-sm oui-font-semibold oui-w-[100%] oui-h-8\",\n onClick: () => {\n props.onOpenChange(false);\n return Promise.resolve();\n },\n },\n }}\n >\n <div className=\"oui-text-2xs lg:oui-text-sm\">\n {t(\"orderEntry.maxQty.reminder.content\", {\n maxQty: `${props.maxQty} ${props.base}`,\n })}\n </div>\n </SimpleDialog>\n );\n});\n","import { forwardRef, SVGProps, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Flex,\n Grid,\n DataTable,\n cn,\n Badge,\n TokenIcon,\n Tooltip,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n ScaledOrderConfirmScriptOptions,\n ScaledOrderConfirmScriptReturns,\n} from \"./scaledOrderConfirm.script\";\n\nexport type ScaledOrderConfirmProps = ScaledOrderConfirmScriptOptions &\n ScaledOrderConfirmScriptReturns & {\n close?: () => void;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n };\n\nexport const ScaledOrderConfirm = (props: ScaledOrderConfirmProps) => {\n const { order, symbolInfo, dataSource, national, askAndBid, totalQuantity } =\n props;\n const { base, quote, base_dp, quote_dp } = symbolInfo;\n const { t } = useTranslation();\n\n const onCancel = () => {\n props.reject();\n props.close?.();\n };\n\n const onConfirm = () => {\n props.resolve();\n props.close?.();\n };\n\n const columns = useMemo(() => {\n return [\n {\n title: t(\"common.symbol\"),\n dataIndex: \"symbol\",\n width: 125,\n render: (value: string, record: any) => {\n return (\n <Flex gap={2}>\n <div\n className={cn(\n \"oui-h-[38px] oui-w-1 oui-shrink-0 oui-rounded-[1px]\",\n record.side === OrderSide.BUY\n ? \"oui-bg-trade-profit\"\n : \"oui-bg-trade-loss\",\n )}\n />\n <Flex direction=\"column\" itemAlign=\"start\">\n <Flex gapX={1}>\n <TokenIcon symbol={value} className=\"oui-size-3\" />\n <Text.formatted\n rule=\"symbol\"\n size=\"xs\"\n formatString=\"base-type\"\n >\n {value}\n </Text.formatted>\n </Flex>\n\n <Badge color=\"neutral\" size=\"xs\">\n {t(\"orderEntry.orderType.limit\")}\n </Badge>\n </Flex>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.quantity\"),\n dataIndex: \"order_quantity\",\n width: 100,\n render: (value: string, record: any) => {\n return (\n <Text.numeral\n rule=\"price\"\n dp={base_dp}\n padding={false}\n color={record.side === OrderSide.BUY ? \"buy\" : \"sell\"}\n >\n {value}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.orderPrice\"),\n dataIndex: \"order_price\",\n width: 100,\n render: (value: string, record: any) => {\n // buy: limit_price_i >= ask0 , show warning.\n // sell: limit price <= bid0 , show warning.\n const showWarning = !!(record.side === OrderSide.BUY\n ? askAndBid?.[0] && Number(value) >= askAndBid?.[0]\n : askAndBid?.[1] && Number(value) <= askAndBid?.[1]);\n\n return (\n <Flex gapX={1}>\n <Text.numeral rule=\"price\" dp={quote_dp}>\n {value}\n </Text.numeral>\n\n {showWarning && (\n <Tooltip\n content={t(\n \"orderEntry.confirmScaledOrder.orderPrice.warning\",\n )}\n className=\"oui-w-[240px] oui-text-2xs oui-font-semibold oui-text-base-contrast-80\"\n >\n <TooltipIcon className=\"oui-text-warning-darken\" />\n </Tooltip>\n )}\n </Flex>\n );\n },\n },\n ];\n }, [t, symbolInfo, askAndBid, base_dp, quote_dp]);\n\n return (\n <div className=\"oui-font-semibold\">\n <DataTable\n classNames={{\n root: cn(\n \"oui-bg-base-7\",\n \"oui-rounded-lg\",\n // need to set overflow hidden because table header will avoid the border radius\n \"oui-overflow-hidden\",\n // \"oui-text-2xs lg:oui-text-xs\",\n // if orders is greater than 6, set the height to 320px to show scroll bar\n order.orders?.length >= 6 && \"oui-h-[320px]\",\n ),\n // set the min height of the table to show 2 rows\n scroll: \"!oui-min-h-[130px]\",\n }}\n dataSource={dataSource}\n columns={columns}\n bordered\n onRow={() => {\n return {\n className: cn(\"oui-h-[50px]\"),\n };\n }}\n />\n <div className=\"oui-mb-5 oui-mt-4 oui-text-2xs\">\n <Flex justify=\"between\">\n <Text>{t(\"orderEntry.totalOrders\")}</Text>\n <Text intensity={80}>{order.orders?.length}</Text>\n </Flex>\n\n <Flex justify=\"between\" mt={2}>\n <Text>{t(\"orderEntry.totalQuantity\")}</Text>\n <Text.numeral\n rule=\"price\"\n unit={base}\n dp={base_dp}\n padding={false}\n intensity={80}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalQuantity}\n </Text.numeral>\n </Flex>\n\n <Flex justify=\"between\" mt={2}>\n <Text>{t(\"common.notional\")}</Text>\n <Text.numeral\n rule=\"price\"\n unit={quote}\n dp={quote_dp}\n padding={false}\n intensity={80}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {national}\n </Text.numeral>\n </Flex>\n </div>\n\n <Grid cols={2} gapX={3}>\n <Button color={\"secondary\"} size={\"md\"} onClick={onCancel}>\n {t(\"common.cancel\")}\n </Button>\n <Button size={\"md\"} onClick={onConfirm}>\n {t(\"common.confirm\")}\n </Button>\n </Grid>\n </div>\n );\n};\n\nexport const TooltipIcon = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n width=\"12\"\n height=\"13\"\n viewBox=\"0 0 12 13\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...props}\n >\n <path d=\"M5.99951 1.50708C3.23811 1.50708 0.999512 3.74558 0.999512 6.50708C0.999512 9.26858 3.23811 11.5071 5.99951 11.5071C8.76091 11.5071 10.9995 9.26858 10.9995 6.50708C10.9995 3.74558 8.76091 1.50708 5.99951 1.50708ZM5.99951 4.00708C6.27566 4.00708 6.49951 4.23108 6.49951 4.50708C6.49951 4.78308 6.27566 5.00708 5.99951 5.00708C5.72336 5.00708 5.49951 4.78308 5.49951 4.50708C5.49951 4.23108 5.72336 4.00708 5.99951 4.00708ZM5.99951 5.50708C6.27566 5.50708 6.49951 5.73108 6.49951 6.00708V8.50708C6.49951 8.78308 6.27566 9.00708 5.99951 9.00708C5.72336 9.00708 5.49951 8.78308 5.49951 8.50708V6.00708C5.49951 5.73108 5.72336 5.50708 5.99951 5.50708Z\" />\n </svg>\n );\n },\n);\n","import { useMemo } from \"react\";\nimport { API, OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { Decimal, zero } from \"@kodiak-finance/orderly-utils\";\nimport { useAskAndBid } from \"../../../hooks/useAskAndBid\";\n\nexport type ScaledOrderConfirmScriptOptions = {\n order: OrderlyOrder & {\n orders: OrderlyOrder[];\n };\n symbolInfo: API.SymbolExt;\n};\n\nexport type ScaledOrderConfirmScriptReturns = ReturnType<\n typeof useScaledOrderConfirmScript\n>;\n\nexport function useScaledOrderConfirmScript(\n options: ScaledOrderConfirmScriptOptions,\n) {\n const { order, symbolInfo } = options;\n const orders = order.orders;\n\n const askAndBid = useAskAndBid();\n\n const national = useMemo(() => {\n const national = orders.reduce((acc, order) => {\n return acc.add(new Decimal(order.order_price).mul(order.order_quantity));\n }, zero);\n\n return national.toNumber();\n }, [orders]);\n\n const totalQuantity = useMemo(() => {\n const totalQuantity = orders.reduce((acc, order) => {\n return acc.add(new Decimal(order.order_quantity));\n }, zero);\n\n return totalQuantity.toString();\n }, [orders, symbolInfo.base_dp]);\n\n return { dataSource: orders, national, askAndBid, totalQuantity };\n}\n","import { useEffect, useState } from \"react\";\nimport { useDebouncedCallback, useEventEmitter } from \"@kodiak-finance/orderly-hooks\";\n\nexport function useAskAndBid() {\n const ee = useEventEmitter();\n\n const [askAndBid, setAskAndBid] = useState<[number, number]>([0, 0]);\n\n const onOrderBookUpdate = useDebouncedCallback((data: any) => {\n const ask0 = data.asks?.[data.asks.length - 1]?.[0];\n const bid0 = data.bids?.[0]?.[0];\n setAskAndBid([ask0, bid0]);\n }, 200);\n\n useEffect(() => {\n ee.on(\"orderbook:update\", onOrderBookUpdate);\n return () => {\n ee.off(\"orderbook:update\", onOrderBookUpdate);\n onOrderBookUpdate.cancel();\n };\n }, [onOrderBookUpdate]);\n\n return askAndBid;\n}\n","import { FC } from \"react\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { registerSimpleDialog } from \"@kodiak-finance/orderly-ui\";\nimport { useScaledOrderConfirmScript } from \"./scaledOrderConfirm.script\";\nimport {\n ScaledOrderConfirm,\n ScaledOrderConfirmProps,\n} from \"./scaledOrderConfirm.ui\";\n\nexport type ScaledOrderConfirmWidgetProps = ScaledOrderConfirmProps;\n\nexport const ScaledOrderConfirmWidget: FC<ScaledOrderConfirmWidgetProps> = (\n props,\n) => {\n const state = useScaledOrderConfirmScript(props);\n\n return <ScaledOrderConfirm {...props} {...state} />;\n};\n\nexport const scaledOrderConfirmDialogId = \"scaledOrderConfirm\";\n\nregisterSimpleDialog(scaledOrderConfirmDialogId, ScaledOrderConfirmWidget, {\n size: \"md\",\n title: () => i18n.t(\"orderEntry.confirmScaledOrder\"),\n contentProps: {\n // className: \"oui-p-0\",\n },\n});\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderlyOrder, OrderSide, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Button, cn } from \"@kodiak-finance/orderly-ui\";\nimport { OrderTypeSelect } from \"../orderTypeSelect\";\nimport { LeverageBadge } from \"./LeverageBadge\";\n\ntype OrderEntryHeaderProps = {\n symbol: string;\n side: OrderSide;\n canTrade: boolean;\n order_type: OrderType;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n symbolLeverage?: number;\n};\n\nexport function OrderEntryHeader(props: OrderEntryHeaderProps) {\n const { canTrade, side, order_type, setOrderValue } = props;\n const { t } = useTranslation();\n\n return (\n <>\n <div\n className={cn(\n \"oui-grid oui-w-full oui-flex-1 oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]\",\n \"oui-grid-cols-2\",\n )}\n >\n <Button\n onClick={() => {\n props.setOrderValue(\"side\", OrderSide.BUY);\n }}\n size={\"md\"}\n fullWidth\n data-type={OrderSide.BUY}\n className={cn(\n side === OrderSide.BUY && canTrade\n ? \"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\"\n : \"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6\",\n )}\n data-testid=\"oui-testid-orderEntry-side-buy-button\"\n >\n {t(\"common.buy\")}\n </Button>\n <Button\n onClick={() => {\n props.setOrderValue(\"side\", OrderSide.SELL);\n }}\n data-type={OrderSide.SELL}\n fullWidth\n size={\"md\"}\n className={cn(\n side === OrderSide.SELL && props.canTrade\n ? \"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\"\n : \"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6\",\n )}\n data-testid=\"oui-testid-orderEntry-side-sell-button\"\n >\n {t(\"common.sell\")}\n </Button>\n </div>\n <div\n className={cn(\n \"oui-grid oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]\",\n \"oui-grid-cols-2\",\n )}\n >\n <div className=\"oui-w-full\">\n <OrderTypeSelect\n type={order_type!}\n side={side}\n canTrade={canTrade}\n onChange={(type) => {\n setOrderValue(\"order_type\", type);\n }}\n />\n </div>\n <div className=\"oui-w-full\">\n <LeverageBadge\n symbol={props.symbol}\n side={props.side}\n symbolLeverage={props.symbolLeverage}\n />\n </div>\n </div>\n </>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Select, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport const OrderTypeSelect = (props: {\n type: OrderType;\n onChange: (type: OrderType) => void;\n side: OrderSide;\n canTrade: boolean;\n}) => {\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n { label: t(\"orderEntry.orderType.limitOrder\"), value: OrderType.LIMIT },\n { label: t(\"orderEntry.orderType.marketOrder\"), value: OrderType.MARKET },\n {\n label: t(\"orderEntry.orderType.stopLimit\"),\n value: OrderType.STOP_LIMIT,\n },\n {\n label: t(\"orderEntry.orderType.stopMarket\"),\n value: OrderType.STOP_MARKET,\n },\n {\n label: t(\"orderEntry.orderType.scaledOrder\"),\n value: OrderType.SCALED,\n },\n {\n label: t(\"orderEntry.orderType.trailingStop\"),\n value: OrderType.TRAILING_STOP,\n },\n ];\n }, [t]);\n\n const displayLabelMap = useMemo(() => {\n return {\n [OrderType.LIMIT]: t(\"orderEntry.orderType.limit\"),\n [OrderType.MARKET]: t(\"common.marketPrice\"),\n [OrderType.STOP_LIMIT]: t(\"orderEntry.orderType.stopLimit\"),\n [OrderType.STOP_MARKET]: t(\"orderEntry.orderType.stopMarket\"),\n [OrderType.SCALED]: t(\"orderEntry.orderType.scaledOrder\"),\n [OrderType.TRAILING_STOP]: t(\"orderEntry.orderType.trailingStop\"),\n };\n }, [t]);\n\n return (\n <Select.options\n testid=\"oui-testid-orderEntry-orderType-button\"\n currentValue={props.type}\n value={props.type}\n options={options}\n onValueChange={props.onChange}\n contentProps={{\n className: \"oui-bg-base-8\",\n }}\n classNames={{\n trigger: \"oui-bg-base-6 oui-border-line\",\n }}\n valueFormatter={(value, option) => {\n const item = options.find((o) => o.value === value);\n if (!item) {\n return <Text size={\"xs\"}>{option.placeholder}</Text>;\n }\n\n const label = displayLabelMap[value as keyof typeof displayLabelMap];\n\n return (\n <Text\n size={\"xs\"}\n color={\n props.canTrade\n ? props.side === OrderSide.BUY\n ? \"buy\"\n : \"sell\"\n : undefined\n }\n >\n {label}\n </Text>\n );\n }}\n size={\"md\"}\n />\n );\n};\n","import { useSymbolLeverage } from \"@kodiak-finance/orderly-hooks\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { cn, Flex, modal, Text, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport {\n SymbolLeverageDialogId,\n SymbolLeverageSheetId,\n} from \"@kodiak-finance/orderly-ui-leverage\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\ntype LeverageBadgeProps = {\n symbol: string;\n side: OrderSide;\n symbolLeverage?: number;\n};\n\nexport const LeverageBadge = (props: LeverageBadgeProps) => {\n const { symbol, side, symbolLeverage } = props;\n const { isMobile } = useScreen();\n const { maxLeverage } = useSymbolLeverage(symbol);\n\n const curLeverage = symbolLeverage || maxLeverage;\n\n const showModal = () => {\n const modalId = isMobile ? SymbolLeverageSheetId : SymbolLeverageDialogId;\n modal.show(modalId, {\n symbol,\n side,\n curLeverage,\n });\n };\n\n return (\n <Flex\n justify=\"center\"\n itemAlign=\"center\"\n gapX={1}\n className={cn(\n \"oui-h-8\",\n \"oui-rounded oui-border oui-border-line oui-bg-base-6\",\n \"oui-cursor-pointer oui-select-none oui-text-xs oui-font-semibold oui-text-base-contrast-54\",\n )}\n onClick={showModal}\n >\n <Text>Cross</Text>\n <Text.numeral dp={0} rm={Decimal.ROUND_DOWN} unit=\"X\">\n {curLeverage}\n </Text.numeral>\n </Flex>\n );\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { OrderEntryContext, OrderEntryContextState } from \"./orderEntryContext\";\n\nexport const OrderEntryProvider: FC<\n PropsWithChildren<OrderEntryContextState>\n> = (props) => {\n const {\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n } = props;\n\n const memoizedValue = useMemo<OrderEntryContextState>(() => {\n return {\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n // refs\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n };\n }, [\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n ]);\n\n return (\n <OrderEntryContext.Provider value={memoizedValue}>\n {props.children}\n </OrderEntryContext.Provider>\n );\n};\n","import {\n createContext,\n FocusEventHandler,\n useContext,\n RefObject,\n MutableRefObject,\n} from \"react\";\nimport { OrderValidationResult } from \"@kodiak-finance/orderly-hooks\";\nimport { API, OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { InputType } from \"../types\";\n\nexport type OrderEntryContextState = {\n errors: OrderValidationResult | null;\n errorMsgVisible: boolean;\n symbolInfo: API.SymbolExt;\n onFocus: (type: InputType) => FocusEventHandler;\n onBlur: (type: InputType) => FocusEventHandler;\n getErrorMsg: (\n key: keyof OrderValidationResult,\n customValue?: string,\n ) => string;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n setOrderValues: (values: Partial<OrderlyOrder>) => void;\n currentFocusInput: InputType;\n // refs\n priceInputRef: RefObject<HTMLInputElement>;\n priceInputContainerRef: RefObject<HTMLDivElement>;\n triggerPriceInputRef: RefObject<HTMLInputElement>;\n activatedPriceInputRef: RefObject<HTMLInputElement>;\n lastQuantityInputType: MutableRefObject<InputType>;\n leverage?: number;\n};\n\nexport const OrderEntryContext = createContext<OrderEntryContextState>(\n {} as OrderEntryContextState,\n);\n\nexport const useOrderEntryContext = () => {\n return useContext(OrderEntryContext);\n};\n","import { OrderlyOrder, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { PriceInput, PriceInputProps } from \"./limit/priceInput\";\nimport { QtyAndTotalInput } from \"./qtyAndTotal/qtyAndTotalInput\";\nimport { ScaledOrderInput } from \"./scaledOrder\";\nimport { TriggerPriceInput } from \"./stop/triggerPriceInput\";\nimport { TrailingStopInput } from \"./trailingStop\";\n\nexport type OrderInputProps = {\n values: Partial<OrderlyOrder>;\n} & Omit<PriceInputProps, \"order_price\" | \"order_type\">;\n\nexport function OrderInput(props: OrderInputProps) {\n const { values } = props;\n\n const type = values.order_type;\n\n if (type === OrderType.SCALED) {\n return <ScaledOrderInput values={values} />;\n }\n\n if (type === OrderType.TRAILING_STOP) {\n return <TrailingStopInput values={values} />;\n }\n\n const showTriggerPrice =\n type === OrderType.STOP_LIMIT || type === OrderType.STOP_MARKET;\n\n const showPrice = type === OrderType.LIMIT || type === OrderType.STOP_LIMIT;\n\n const triggerPriceInput = showTriggerPrice && (\n <TriggerPriceInput trigger_price={values.trigger_price} />\n );\n\n const priceInput = showPrice && (\n <PriceInput\n order_type={values.order_type!}\n order_price={values.order_price}\n bbo={props.bbo}\n fillMiddleValue={props.fillMiddleValue}\n priceInputContainerWidth={props.priceInputContainerWidth}\n />\n );\n\n return (\n <div className={\"oui-space-y-1\"}>\n {triggerPriceInput}\n {priceInput}\n <QtyAndTotalInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n </div>\n );\n}\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { cn, inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { OrderEntryScriptReturn } from \"../../../orderEntry.script\";\nimport { InputType } from \"../../../types\";\nimport { BBOStatus } from \"../../../utils\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { BBOOrderTypeSelect } from \"./bboOrderTypeSelect\";\nimport { LimitPriceSuffix } from \"./limitPriceSuffix\";\n\nexport type PriceInputProps = {\n order_type: OrderType;\n order_price?: string;\n bbo: Pick<\n OrderEntryScriptReturn,\n \"bboStatus\" | \"bboType\" | \"onBBOChange\" | \"toggleBBO\"\n >;\n priceInputContainerWidth?: number;\n fillMiddleValue: OrderEntryScriptReturn[\"fillMiddleValue\"];\n};\n\n// TODO: memo component\nexport const PriceInput: FC<PriceInputProps> = (props) => {\n const { bbo } = props;\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n priceInputRef,\n priceInputContainerRef,\n } = useOrderEntryContext();\n\n const { quote, quote_dp } = symbolInfo;\n\n const readOnly = bbo.bboStatus === BBOStatus.ON;\n\n const suffix =\n props.order_type === OrderType.LIMIT ? (\n <LimitPriceSuffix\n quote={quote}\n bbo={bbo}\n fillMiddleValue={props.fillMiddleValue}\n />\n ) : (\n quote\n );\n\n return (\n <div\n ref={priceInputContainerRef}\n className=\"oui-group oui-relative oui-w-full\"\n >\n <CustomInput\n id=\"order_price_input\"\n name=\"order_price_input\"\n label={t(\"common.price\")}\n suffix={suffix}\n value={props.order_price}\n onChange={(e) => {\n setOrderValue(\"order_price\", e);\n }}\n error={getErrorMsg(\"order_price\")}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.PRICE)}\n onBlur={onBlur(InputType.PRICE)}\n readonly={readOnly}\n inputMode=\"decimal\"\n ref={priceInputRef}\n classNames={{\n root: cn(readOnly && \"focus-within:oui-outline-transparent \"),\n input: cn(readOnly && \"oui-cursor-auto\"),\n }}\n />\n {bbo.bboStatus === BBOStatus.ON && (\n <div className={cn(\"oui-absolute oui-bottom-1 oui-left-0\")}>\n <BBOOrderTypeSelect\n value={bbo.bboType}\n onChange={bbo.onBBOChange}\n contentStyle={{\n width: props.priceInputContainerWidth,\n }}\n />\n </div>\n )}\n </div>\n );\n};\n","import { forwardRef, PropsWithChildren, ReactNode } from \"react\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport {\n cn,\n inputFormatter,\n Input,\n InputProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { useOrderEntryContext } from \"../orderEntryContext\";\n\nexport type CustomInputProps = {\n label: string;\n suffix?: ReactNode;\n placeholder?: string;\n id: string;\n className?: string;\n name?: string;\n onChange?: (value: string) => void;\n value?: InputProps[\"value\"];\n autoFocus?: InputProps[\"autoFocus\"];\n error?: string;\n onFocus?: InputProps[\"onFocus\"];\n onBlur?: InputProps[\"onBlur\"];\n formatters?: InputProps[\"formatters\"];\n overrideFormatters?: InputProps[\"formatters\"];\n classNames?: InputProps[\"classNames\"];\n readonly?: boolean;\n prefix?: ReactNode;\n inputMode?: InputProps[\"inputMode\"];\n};\n\nexport const CustomInput = forwardRef<HTMLInputElement, CustomInputProps>(\n (props, ref) => {\n const { placeholder = \"0\" } = props;\n const { errorMsgVisible } = useOrderEntryContext();\n\n return (\n <Input.tooltip\n ref={ref}\n tooltip={errorMsgVisible ? props.error : undefined}\n autoComplete={\"off\"}\n autoFocus={props.autoFocus}\n size={\"lg\"}\n placeholder={props.readonly ? \"\" : placeholder}\n id={props.id}\n name={props.name}\n color={props.error ? \"danger\" : undefined}\n inputMode={props.inputMode || \"decimal\"}\n prefix={\n props.prefix || (\n <InputLabel id={props.id} className={props.classNames?.prefix}>\n {props.label}\n </InputLabel>\n )\n }\n suffix={props.suffix}\n value={props.readonly ? \"\" : props.value || \"\"}\n // onChange={props.onChange}\n onValueChange={props.onChange}\n onFocus={(event) => {\n props.onFocus?.(event);\n }}\n onBlur={(event) => {\n props.onBlur?.(event);\n }}\n formatters={\n props.overrideFormatters || [\n ...(props.formatters ?? EMPTY_LIST),\n inputFormatter.numberFormatter,\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]\n }\n classNames={{\n root: cn(\n \"orderly-order-entry oui-relative oui-h-[54px] oui-rounded oui-border oui-border-solid oui-border-line oui-px-2 oui-py-1 group-first:oui-rounded-t-xl group-last:oui-rounded-b-xl\",\n props.className,\n props.classNames?.root,\n ),\n input: cn(\"oui-mb-1 oui-mt-5 oui-h-5\", props?.classNames?.input),\n // prefix: cn(props.classNames?.prefix),\n suffix: cn(\n \"oui-absolute oui-right-0 oui-top-0 oui-justify-start oui-py-2 oui-text-2xs oui-text-base-contrast-36\",\n props.classNames?.suffix,\n ),\n }}\n readOnly={props.readonly}\n />\n );\n },\n);\n\nCustomInput.displayName = \"CustomInput\";\n\nconst InputLabel = (\n props: PropsWithChildren<{ id: string; className?: string }>,\n) => {\n return (\n <label\n htmlFor={props.id}\n className={cn(\n \"oui-absolute oui-left-2 oui-top-[7px] oui-text-2xs oui-text-base-contrast-36\",\n props.className,\n )}\n >\n {props.children}\n </label>\n );\n};\n","import { CSSProperties, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { BBOOrderType } from \"@kodiak-finance/orderly-types\";\nimport { Box, Select, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport const BBOOrderTypeSelect = (props: {\n value?: BBOOrderType;\n onChange: (value: BBOOrderType) => void;\n contentStyle?: CSSProperties;\n}) => {\n const { t } = useTranslation();\n\n const options = useMemo(\n () => [\n {\n label: t(\"orderEntry.bbo.counterparty1\"),\n value: BBOOrderType.COUNTERPARTY1,\n },\n {\n label: t(\"orderEntry.bbo.counterparty5\"),\n value: BBOOrderType.COUNTERPARTY5,\n },\n {\n label: t(\"orderEntry.bbo.queue1\"),\n value: BBOOrderType.QUEUE1,\n },\n {\n label: t(\"orderEntry.bbo.queue5\"),\n value: BBOOrderType.QUEUE5,\n },\n ],\n [],\n );\n\n return (\n <Select.options\n testid=\"oui-testid-orderEntry-bbo-orderType-button\"\n currentValue={props.value}\n value={props.value}\n options={options}\n onValueChange={props.onChange}\n contentProps={{\n className: \"oui-bg-base-8 oui-w-full\",\n style: props.contentStyle,\n }}\n size={\"sm\"}\n classNames={{\n trigger: \"oui-border-none oui-bg-transparent\",\n }}\n valueFormatter={(value, option) => {\n const item = options.find((item) => item.value === value);\n\n return (\n <Box>\n <Text size=\"sm\">{item?.label}</Text>\n </Box>\n );\n }}\n />\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, cn, modal, Text } from \"@kodiak-finance/orderly-ui\";\nimport { OrderEntryScriptReturn } from \"../../../orderEntry.script\";\nimport { BBOStatus } from \"../../../utils\";\n\ntype LimitPriceSuffixProps = {\n quote: string;\n bbo: Pick<\n OrderEntryScriptReturn,\n \"bboStatus\" | \"bboType\" | \"onBBOChange\" | \"toggleBBO\"\n >;\n fillMiddleValue: OrderEntryScriptReturn[\"fillMiddleValue\"];\n};\n\nexport const LimitPriceSuffix = (props: LimitPriceSuffixProps) => {\n const { quote, bbo, fillMiddleValue } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"end\"\n className={cn(\"oui-order-entry-limit-price-input-suffix\", \"oui-text-2xs\")}\n >\n {quote}\n <Flex justify={\"end\"} itemAlign=\"center\" gap={2}>\n <Flex\n px={3}\n height={20}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"base\"\n className={cn(\n \"oui-mt-[2px] oui-cursor-pointer oui-select-none oui-border\",\n bbo.bboStatus === BBOStatus.ON\n ? \"oui-border-primary\"\n : \"oui-border-line-12\",\n bbo.bboStatus === BBOStatus.DISABLED && \"oui-cursor-not-allowed\",\n )}\n onClick={() => {\n if (bbo.bboStatus === BBOStatus.DISABLED) {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"xs\",\n content: (\n <Text intensity={54}>\n {t(\"orderEntry.bbo.disabled.tips\")}\n </Text>\n ),\n });\n } else {\n bbo.toggleBBO();\n }\n }}\n >\n <Text\n className={cn(\n bbo.bboStatus === BBOStatus.ON && \"oui-text-primary\",\n bbo.bboStatus === BBOStatus.OFF && \"oui-text-base-contrast-54\",\n bbo.bboStatus === BBOStatus.DISABLED &&\n \"oui-text-base-contrast-20\",\n )}\n >\n {t(\"orderEntry.bbo\")}\n </Text>\n </Flex>\n <Text\n className={cn(\n \"oui-select-none\",\n \"oui-cursor-pointer oui-text-primary\",\n )}\n onClick={fillMiddleValue}\n >\n Mid\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, memo } from \"react\";\nimport { Grid } from \"@kodiak-finance/orderly-ui\";\nimport { QuantityInput } from \"./quantityInput\";\nimport { TotalInput } from \"./totalInput\";\n\ntype QtyAndTotalInputProps = {\n order_quantity?: string;\n total?: string;\n};\n\nexport const QtyAndTotalInput: FC<QtyAndTotalInputProps> = memo((props) => {\n return (\n <Grid cols={2} className=\"oui-group oui-space-x-1\">\n <QuantityInput order_quantity={props.order_quantity} />\n <TotalInput total={props.total} />\n </Grid>\n );\n});\n\nQtyAndTotalInput.displayName = \"QtyAndTotalInput\";\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype QuantityInputProps = {\n order_quantity?: string;\n};\n\nexport const QuantityInput: FC<QuantityInputProps> = memo((props) => {\n const { t } = useTranslation();\n\n const { symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const { base, base_dp } = symbolInfo;\n\n return (\n <CustomInput\n id=\"order_quantity_input\"\n name=\"order_quantity_input\"\n label={t(\"common.qty\")}\n suffix={base}\n error={getErrorMsg(\"order_quantity\")}\n value={props.order_quantity}\n onChange={(e) => {\n setOrderValue(\"order_quantity\", e);\n }}\n formatters={[inputFormatter.dpFormatter(base_dp)]}\n onFocus={onFocus(InputType.QUANTITY)}\n onBlur={onBlur(InputType.QUANTITY)}\n className=\"!oui-rounded-r\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n />\n );\n});\n\nQuantityInput.displayName = \"QuantityInput\";\n","import { FC, memo, useEffect, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { OrderTotalType, TotalTypeSelect } from \"./totalTypeSelect\";\n\ntype TotalInputProps = {\n total?: string;\n};\n\n/**\n * order size = order size (notional) = quantity * price\n * Initial margin = order size / leverage = quantity * price / leverage\n * Order size = Initial margin * leverage = quantity * price\n */\nexport const TotalInput: FC<TotalInputProps> = memo((props) => {\n const { t } = useTranslation();\n const { total } = props;\n\n const [margin, setMargin] = useState(\"\");\n\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n leverage = 1,\n currentFocusInput,\n } = useOrderEntryContext();\n\n const { quote } = symbolInfo;\n\n const [totalType, setTotalType] = useLocalStorage<OrderTotalType>(\n \"orderly_order_total_type\",\n OrderTotalType.OrderSize,\n );\n\n useEffect(() => {\n if (total) {\n if (currentFocusInput !== InputType.MARGIN) {\n const margin = new Decimal(total).div(leverage).todp(2).toString();\n setMargin(margin);\n }\n } else {\n setMargin(\"\");\n }\n }, [total, leverage, currentFocusInput]);\n\n const onMarginChange = (val: string) => {\n const total = val ? new Decimal(val).mul(leverage).toString() : \"\";\n setOrderValue(\"total\", total);\n setMargin(val);\n };\n\n const prefix = <TotalTypeSelect value={totalType} onChange={setTotalType} />;\n\n if (totalType === OrderTotalType.InitialMargin) {\n return (\n <CustomInput\n id=\"order_margin_input\"\n name=\"order_margin_input\"\n label={`${t(\"orderEntry.initialMargin\")}≈`}\n prefix={prefix}\n suffix={quote}\n error={getErrorMsg(\"total\") ? \"initial margin error\" : \"\"}\n value={margin}\n onChange={onMarginChange}\n // national precision is 2\n formatters={[inputFormatter.dpFormatter(2)]}\n onFocus={onFocus(InputType.MARGIN)}\n onBlur={onBlur(InputType.MARGIN)}\n className=\"!oui-rounded-l\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n />\n );\n }\n\n return (\n <CustomInput\n id=\"order_total_input\"\n name=\"order_total_input\"\n label={`${t(\"orderEntry.orderSize\")}≈`}\n prefix={prefix}\n suffix={quote}\n error={getErrorMsg(\"total\")}\n value={props.total}\n onChange={(val) => {\n setOrderValue(\"total\", val);\n }}\n className=\"!oui-rounded-l\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n // national precision is 2\n formatters={[inputFormatter.dpFormatter(2)]}\n onFocus={onFocus(InputType.TOTAL)}\n onBlur={onBlur(InputType.TOTAL)}\n />\n );\n});\n\nTotalInput.displayName = \"TotalInput\";\n","import { FC, memo, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Select } from \"@kodiak-finance/orderly-ui\";\n\nexport enum OrderTotalType {\n OrderSize = \"orderSize\",\n InitialMargin = \"initialMargin\",\n}\n\ntype TotalTypeSelectProps = {\n value: OrderTotalType;\n onChange: (value: OrderTotalType) => void;\n};\n\nexport const TotalTypeSelect: FC<TotalTypeSelectProps> = memo((props) => {\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n {\n label: t(\"orderEntry.orderSize\"),\n value: OrderTotalType.OrderSize,\n },\n {\n label: t(\"orderEntry.initialMargin\"),\n value: OrderTotalType.InitialMargin,\n },\n ];\n }, [t]);\n\n return (\n <Select.options\n size={\"xs\"}\n value={props.value}\n valueFormatter={(value, option) => {\n const item = options.find((o) => o.value === value);\n return item?.label + \"≈\";\n }}\n classNames={{\n trigger: cn(\n \"oui-w-auto oui-border-none oui-bg-transparent\",\n \"oui-absolute oui-left-0 oui-top-[5px] oui-text-2xs oui-text-base-contrast-36\",\n ),\n }}\n onValueChange={props.onChange}\n options={options}\n />\n );\n});\n\nTotalTypeSelect.displayName = \"TotalTypeSelect\";\n","import { DistributionType, OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { cn, Grid } from \"@kodiak-finance/orderly-ui\";\nimport { QuantityDistributionInput } from \"./quantityDistributionInput\";\nimport { ScaledPriceInput } from \"./scaledPriceInput\";\nimport { ScaledQuantityInput } from \"./scaledQuantityInput\";\nimport { SkewInput } from \"./skewInput\";\nimport { TotalOrdersInput } from \"./totalOrdersInput\";\n\ntype ScaledOrderInputProps = {\n values: Partial<OrderlyOrder>;\n};\n\nexport const ScaledOrderInput = (props: ScaledOrderInputProps) => {\n const { values } = props;\n\n const showSkewInput = values.distribution_type === DistributionType.CUSTOM;\n\n return (\n <div className=\"oui-space-y-1\">\n <ScaledPriceInput\n start_price={values.start_price}\n end_price={values.end_price}\n />\n\n <Grid cols={2} className=\"oui-group oui-space-x-1\">\n <ScaledQuantityInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n <TotalOrdersInput total_orders={values.total_orders} />\n </Grid>\n\n <QuantityDistributionInput\n distribution_type={values.distribution_type}\n className={cn(!showSkewInput && \"oui-rounded-b-xl\")}\n />\n\n {showSkewInput && <SkewInput skew={values.skew} />}\n </div>\n );\n};\n","import { FC, memo, useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DistributionType } from \"@kodiak-finance/orderly-types\";\nimport { Box, Checkbox, cn, Flex, modal, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\nexport type QuantityDistributionInputProps = {\n distribution_type?: DistributionType;\n className?: string;\n};\n\nexport const QuantityDistributionInput: FC<QuantityDistributionInputProps> =\n memo((props) => {\n const { t } = useTranslation();\n const { setOrderValue } = useOrderEntryContext();\n\n const showHint = () => {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"sm\",\n content: <QuantityDistributionHint value={props.distribution_type} />,\n // classNames: {\n // content: \"oui-bg-base-6\",\n // },\n });\n };\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"center\"\n p={2}\n r=\"base\"\n // gapY={1}\n width=\"100%\"\n intensity={600}\n className={cn(\n \"oui-t-rounded oui-text-base-contrast-36\",\n \"oui-border oui-border-solid oui-border-line\",\n props.className,\n )}\n >\n <Text\n size=\"2xs\"\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n onClick={showHint}\n >\n {t(\"orderEntry.quantityDistribution\")}\n </Text>\n <QuantityDistribution\n value={props.distribution_type}\n onValueChange={(value) => {\n setOrderValue(\"distribution_type\", value);\n }}\n />\n </Flex>\n );\n });\n\ntype QuantityDistributionHintProps = {\n value?: DistributionType;\n};\n\nconst QuantityDistributionHint: FC<QuantityDistributionHintProps> = (props) => {\n const { t } = useTranslation();\n const [type, setType] = useState(DistributionType.FLAT);\n\n useEffect(() => {\n setType(\n [\n DistributionType.FLAT,\n DistributionType.ASCENDING,\n DistributionType.DESCENDING,\n ].includes(props.value!)\n ? props.value!\n : DistributionType.FLAT,\n );\n }, [props.value]);\n\n const content = useMemo(() => {\n return [\n {\n type: DistributionType.FLAT,\n title: t(\"orderEntry.distributionType.flat\"),\n description: t(\"orderEntry.distributionType.flat.description\"),\n formula: `${t(\"orderEntry.skew\")} = 1`,\n quantity: <FlatQuantity />,\n },\n {\n type: DistributionType.ASCENDING,\n title: t(\"orderEntry.distributionType.ascending\"),\n description: t(\"orderEntry.distributionType.ascending.description\"),\n formula: `${t(\"orderEntry.skew\")} > 1`,\n quantity: <AscendingQuantity />,\n },\n {\n type: DistributionType.DESCENDING,\n title: t(\"orderEntry.distributionType.descending\"),\n description: t(\"orderEntry.distributionType.descending.description\"),\n formula: `0 < ${t(\"orderEntry.skew\")} < 1`,\n quantity: <DescendingQuantity />,\n },\n ];\n }, []);\n\n const currentContent = useMemo(() => {\n return content.find((item) => item.type === type);\n }, [content, type]);\n\n return (\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-54\">\n <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n <Text intensity={80}>\n {t(\"orderEntry.quantityDistribution.description\")}\n </Text>\n <Text>{t(\"orderEntry.quantityDistribution.formula\")}</Text>\n </Flex>\n <Flex intensity={600} p={1} r=\"base\" mt={3} itemAlign=\"start\">\n <Flex direction=\"column\" itemAlign=\"start\">\n {content.map((item) => (\n <Box\n key={item.title}\n intensity={type === item.type ? 500 : 600}\n width={78}\n p={2}\n className=\"oui-cursor-pointer oui-rounded-l\"\n onClick={() => {\n setType(item.type);\n }}\n >\n <Text>{item.title}</Text>\n </Box>\n ))}\n </Flex>\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n gapY={1}\n p={2}\n intensity={500}\n width=\"100%\"\n className={cn(\n \"oui-rounded-r\",\n type === DistributionType.FLAT && \"oui-rounded-bl\",\n type === DistributionType.ASCENDING && \"oui-rounded-l\",\n type === DistributionType.DESCENDING && \"oui-rounded-tl\",\n )}\n >\n <div>{currentContent?.formula}</div>\n <Text>{currentContent?.description}</Text>\n <Flex width=\"100%\" justify=\"center\">\n {currentContent?.quantity}\n </Flex>\n <Flex width=\"100%\" gapX={1} justify=\"center\">\n <Text className=\"oui-text-base-1\">{t(\"common.price\")}</Text>\n <PriceChart />\n </Flex>\n </Flex>\n </Flex>\n </div>\n );\n};\n\ntype QuantityDistributionProps = {\n value?: DistributionType;\n onValueChange: (value: DistributionType) => void;\n};\n\nconst QuantityDistribution: FC<QuantityDistributionProps> = (props) => {\n const { value, onValueChange } = props;\n const { t } = useTranslation();\n\n const onChange = (value: DistributionType) => (checked: boolean) => {\n onValueChange(value);\n };\n\n const distributionTypeMap = useMemo(() => {\n return {\n [DistributionType.FLAT]: t(\"orderEntry.distributionType.flat\"),\n [DistributionType.ASCENDING]: t(\n \"orderEntry.distributionType.ascending.abbr\",\n ),\n [DistributionType.DESCENDING]: t(\n \"orderEntry.distributionType.descending.abbr\",\n ),\n [DistributionType.CUSTOM]: t(\"orderEntry.distributionType.custom\"),\n };\n }, [t]);\n\n return (\n <Flex className={cn(\"oui-gap-x-[6px] lg:oui-gap-x-2\")} wrap=\"wrap\">\n {Object.values(DistributionType).map((type) => {\n return (\n <Flex itemAlign={\"center\"} key={type}>\n <Checkbox\n id={`distribution-type-${type}`}\n color={\"white\"}\n variant={\"radio\"}\n checked={value === type}\n onCheckedChange={onChange(type)}\n />\n <label\n htmlFor={`distribution-type-${type}`}\n className={cn(\n \"oui-text-2xs\",\n \"oui-ml-1\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {distributionTypeMap[type]}\n </label>\n </Flex>\n );\n })}\n </Flex>\n );\n};\n\nconst FlatQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"18\"\n y=\"18\"\n width=\"181\"\n height=\"4\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"15\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"62\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"109\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"156\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"203\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n </svg>\n );\n};\n\nconst AscendingQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"18\"\n y=\"18\"\n width=\"181\"\n height=\"4\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"15\"\n cy=\"20\"\n r=\"4.28571\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.42857\"\n />\n <circle\n cx=\"62\"\n cy=\"20\"\n r=\"5.14286\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.71429\"\n />\n <circle\n cx=\"109\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"156\"\n cy=\"20\"\n r=\"6.85714\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.28571\"\n />\n <circle\n cx=\"203\"\n cy=\"20\"\n r=\"7.71429\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.57143\"\n />\n </svg>\n );\n};\n\nconst DescendingQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"181\"\n height=\"4\"\n transform=\"matrix(-1 0 0 1 200 18)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"5\"\n cy=\"5\"\n r=\"4.28571\"\n transform=\"matrix(-1 0 0 1 208 15)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.42857\"\n />\n <circle\n cx=\"6\"\n cy=\"6\"\n r=\"5.14286\"\n transform=\"matrix(-1 0 0 1 162 14)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.71429\"\n />\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n transform=\"matrix(-1 0 0 1 116 13)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.85714\"\n transform=\"matrix(-1 0 0 1 70 12)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.28571\"\n />\n <circle\n cx=\"9\"\n cy=\"9\"\n r=\"7.71429\"\n transform=\"matrix(-1 0 0 1 24 11)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.57143\"\n />\n </svg>\n );\n};\n\nconst PriceChart = () => {\n return (\n <svg\n width=\"176\"\n height=\"8\"\n viewBox=\"0 0 176 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M175.354 4.35355C175.549 4.15829 175.549 3.84171 175.354 3.64645L172.172 0.464466C171.976 0.269204 171.66 0.269204 171.464 0.464466C171.269 0.659728 171.269 0.976311 171.464 1.17157L174.293 4L171.464 6.82843C171.269 7.02369 171.269 7.34027 171.464 7.53553C171.66 7.7308 171.976 7.7308 172.172 7.53553L175.354 4.35355ZM0 4V4.5H175V4V3.5H0V4Z\"\n fill=\"rgb(var(--oui-color-base-1))\"\n />\n </svg>\n );\n};\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype ScaledPriceInputProps = {\n start_price?: string;\n end_price?: string;\n};\n\nexport const ScaledPriceInput = memo((props: ScaledPriceInputProps) => {\n const { t } = useTranslation();\n\n const { symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const { quote, quote_dp } = symbolInfo;\n\n return (\n <>\n <CustomInput\n label={t(\"orderEntry.startPrice\")}\n suffix={quote}\n id=\"order_start_price_input\"\n value={props.start_price}\n error={getErrorMsg(\"start_price\")}\n onChange={(e) => {\n setOrderValue(\"start_price\", e);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.START_PRICE)}\n onBlur={onBlur(InputType.START_PRICE)}\n inputMode=\"decimal\"\n classNames={{\n root: \"oui-rounded-t-xl\",\n }}\n />\n <CustomInput\n label={t(\"orderEntry.endPrice\")}\n suffix={quote}\n id=\"order_end_price_input\"\n value={props.end_price}\n error={getErrorMsg(\"end_price\")}\n onChange={(val) => {\n setOrderValue(\"end_price\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.END_PRICE)}\n onBlur={onBlur(InputType.END_PRICE)}\n inputMode=\"decimal\"\n />\n </>\n );\n});\n\nScaledPriceInput.displayName = \"ScaledPriceInput\";\n","import { memo } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { ScaledQuantityUnit } from \"./scaledQuantityUnit\";\n\ntype ScaledQuantityInputProps = {\n order_quantity?: string;\n total?: string;\n};\n\nexport const ScaledQuantityInput = memo((props: ScaledQuantityInputProps) => {\n const { t } = useTranslation();\n const { errors, symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const [quantityUnit, setQuantityUnit] = useLocalStorage<\"quote\" | \"base\">(\n \"orderly_order_quantity_unit\",\n \"quote\",\n );\n\n const { base, quote, base_dp, quote_dp } = symbolInfo;\n\n const isBase = quantityUnit === \"base\";\n const unit = isBase ? base : quote;\n\n const suffix = (\n <ScaledQuantityUnit\n base={base}\n quote={quote}\n value={unit}\n onValueChange={(value) => {\n setQuantityUnit(value === base ? \"base\" : \"quote\");\n }}\n />\n );\n\n if (isBase) {\n return (\n <CustomInput\n label={t(\"common.qty\")}\n suffix={suffix}\n id=\"order_quantity_input\"\n name=\"order_quantity_input\"\n className=\"!oui-rounded-r\"\n value={props.order_quantity}\n error={getErrorMsg(\n \"order_quantity\",\n `${errors?.order_quantity?.value} ${base}`,\n )}\n onChange={(val) => {\n setOrderValue(\"order_quantity\", val);\n }}\n formatters={[inputFormatter.dpFormatter(base_dp)]}\n onFocus={onFocus(InputType.QUANTITY)}\n onBlur={onBlur(InputType.QUANTITY)}\n inputMode=\"decimal\"\n />\n );\n }\n\n return (\n <CustomInput\n label={t(\"common.qty\")}\n suffix={suffix}\n id=\"order_total_input\"\n name=\"order_total_input\"\n className=\"!oui-rounded-r\"\n value={props.total}\n error={getErrorMsg(\"order_quantity\", `${errors?.total?.value} ${quote}`)}\n onChange={(val) => {\n setOrderValue(\"total\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.TOTAL)}\n onBlur={onBlur(InputType.TOTAL)}\n inputMode=\"decimal\"\n />\n );\n});\n","import { FC, useMemo } from \"react\";\nimport { Select, Text, cn } from \"@kodiak-finance/orderly-ui\";\n\nexport type QuantityUnitProps = {\n base: string;\n quote: string;\n value: string;\n onValueChange: (value: string) => void;\n};\n\nconst valueRenderer = (value: string) => {\n return (\n <Text size=\"2xs\" intensity={36}>\n {value}\n </Text>\n );\n};\n\nexport const ScaledQuantityUnit: FC<QuantityUnitProps> = (props) => {\n const { base, quote } = props;\n\n const options = useMemo(() => {\n return [{ name: quote }, { name: base }];\n }, [base, quote]);\n\n return (\n <Select.tokens\n variant=\"text\"\n size=\"xs\"\n iconSize=\"2xs\"\n tokens={options}\n classNames={{\n trigger: cn(\n \"oui-absolute oui-right-0 oui-top-1\",\n \"oui-w-full oui-justify-end\",\n ),\n }}\n value={props.value}\n onValueChange={props.onValueChange}\n valueFormatter={valueRenderer}\n contentProps={{\n align: \"end\",\n alignOffset: -1,\n sideOffset: -4,\n className: \"oui-border oui-border-line-6\",\n }}\n />\n );\n};\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype SkewInputProps = {\n skew?: string;\n};\n\nexport const SkewInput = memo((props: SkewInputProps) => {\n const { t } = useTranslation();\n\n const { onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n return (\n <CustomInput\n id=\"order_skew_input\"\n label={t(\"orderEntry.skew\")}\n value={props.skew}\n error={getErrorMsg(\"skew\")}\n onChange={(val) => {\n setOrderValue(\"skew\", val);\n }}\n onFocus={onFocus(InputType.SKEW)}\n onBlur={onBlur(InputType.SKEW)}\n inputMode=\"decimal\"\n overrideFormatters={[\n inputFormatter.rangeFormatter({ min: 0, max: 100, dp: 2 }),\n inputFormatter.dpFormatter(2),\n ]}\n classNames={{\n root: \"oui-rounded-b-xl\",\n }}\n />\n );\n});\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype TotalOrdersInputProps = {\n total_orders?: string;\n};\n\nexport const TotalOrdersInput = memo((props: TotalOrdersInputProps) => {\n const { t } = useTranslation();\n const { onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n return (\n <CustomInput\n label={t(\"orderEntry.totalOrders\")}\n placeholder=\"2-20\"\n id=\"order_total_orders_input\"\n className={\"!oui-rounded-l\"}\n value={props.total_orders}\n error={getErrorMsg(\"total_orders\")}\n onChange={(val) => {\n setOrderValue(\"total_orders\", val);\n }}\n overrideFormatters={[\n // inputFormatter.rangeFormatter({ min: 2, max: 20 }),\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(0),\n ]}\n onFocus={onFocus(InputType.TOTAL_ORDERS)}\n onBlur={onBlur(InputType.TOTAL_ORDERS)}\n inputMode=\"numeric\"\n />\n );\n});\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype TriggerPriceInputProps = {\n trigger_price?: string;\n};\n\nexport const TriggerPriceInput: FC<TriggerPriceInputProps> = memo((props) => {\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n triggerPriceInputRef,\n } = useOrderEntryContext();\n\n return (\n <div className=\"oui-group\">\n <div className=\"oui-group\">\n <CustomInput\n ref={triggerPriceInputRef}\n id=\"order_trigger_price_input\"\n name=\"order_trigger_price_input\"\n label={t(\"common.trigger\")}\n suffix={symbolInfo.quote}\n value={props.trigger_price}\n onChange={(e) => {\n setOrderValue(\"trigger_price\", e);\n }}\n error={getErrorMsg(\"trigger_price\")}\n formatters={[inputFormatter.dpFormatter(symbolInfo.quote_dp)]}\n onFocus={onFocus(InputType.TRIGGER_PRICE)}\n onBlur={onBlur(InputType.TRIGGER_PRICE)}\n inputMode=\"decimal\"\n />\n </div>\n </div>\n );\n});\n\nTriggerPriceInput.displayName = \"TriggerPriceInput\";\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype ActivePriceInputProps = {\n activated_price?: string;\n};\n\nexport const ActivePriceInput = memo<ActivePriceInputProps>((props) => {\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n activatedPriceInputRef,\n } = useOrderEntryContext();\n\n return (\n <div className=\"oui-group\">\n <CustomInput\n ref={activatedPriceInputRef}\n id=\"order_activated_price_input\"\n name=\"order_activated_price_input\"\n label={t(\"common.triggerPrice\")}\n placeholder={`0 (${t(\"common.optional\")})`}\n suffix={symbolInfo.quote}\n error={getErrorMsg(\"activated_price\")}\n value={props.activated_price}\n onChange={(val: string) => {\n setOrderValue(\"activated_price\", val);\n }}\n formatters={[inputFormatter.dpFormatter(symbolInfo.quote_dp)]}\n onFocus={onFocus(InputType.ACTIVATED_PRICE)}\n onBlur={onBlur(InputType.ACTIVATED_PRICE)}\n inputMode=\"decimal\"\n />\n </div>\n );\n});\n\nActivePriceInput.displayName = \"ActivePriceInput\";\n","import { FC, memo, useCallback, useRef } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { TrailingCallbackType } from \"@kodiak-finance/orderly-types\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { CallbackRatePercentages } from \"./callbackRatePercentages\";\nimport { TrailingCallbackSelect } from \"./trailingCallbackSelect\";\n\ntype TrailingCallbackInputProps = {\n callback_value?: string;\n callback_rate?: string;\n};\n\nexport const TrailingCallbackInput: FC<TrailingCallbackInputProps> = memo(\n (props) => {\n const { callback_value, callback_rate } = props;\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n } = useOrderEntryContext();\n const { quote, quote_dp } = symbolInfo;\n // const [open, setOpen] = useState(false);\n\n const lastCallbackValueRef = useRef<string>();\n const lastCallbackRateRef = useRef<string>();\n\n const [callbackType, setCallbackType] = useLocalStorage(\n \"orderly_order_trailing_callback_type\",\n TrailingCallbackType.VALUE,\n );\n\n const onCallbackTypeChange = useCallback(\n (type: TrailingCallbackType) => {\n setCallbackType(type);\n // when switch to callback rate, save the last callback value\n if (type === TrailingCallbackType.RATE) {\n lastCallbackValueRef.current = callback_value;\n setOrderValues({\n callback_value: \"\",\n callback_rate: lastCallbackRateRef.current,\n });\n // when switch to callback value, save the last callback rate\n } else {\n lastCallbackRateRef.current = callback_rate;\n setOrderValues({\n callback_value: lastCallbackValueRef.current,\n callback_rate: \"\",\n });\n }\n },\n [callback_value, callback_rate],\n );\n\n const suffix = (\n <TrailingCallbackSelect\n quote={quote}\n value={callbackType}\n onValueChange={onCallbackTypeChange}\n />\n );\n\n // don't need to convert trailing rate to estimated value\n // const estimatedValue = useMemo(() => {\n // if (callbackType === TrailingCallbackType.RATE) {\n // return callback_rate\n // }\n // }, [callback_rate, callbackType]);\n\n // const tooltipContent = estimatedValue\n // ? `≈ ${estimatedValue} ${quote}`\n // : undefined;\n\n // const openTooltip = useCallback(() => {\n // setOpen(true);\n // }, []);\n\n // const closeTooltip = useCallback(() => {\n // setOpen(false);\n // }, []);\n\n if (callbackType === TrailingCallbackType.RATE) {\n return (\n // <Tooltip\n // content={tooltipContent}\n // open={open && !!tooltipContent}\n // sideOffset={-25}\n // className=\"!oui-p-3\"\n // >\n <div className=\"oui-relative\">\n <CustomInput\n id=\"order_callback_rate_input\"\n name=\"order_callback_rate_input\"\n label={t(\"orderEntry.trailingRate\")}\n suffix={suffix}\n error={getErrorMsg(\"callback_rate\")}\n value={callback_rate}\n onChange={(val: string) => {\n setOrderValue(\"callback_rate\", val);\n }}\n formatters={[inputFormatter.dpFormatter(1)]}\n onFocus={(e) => {\n onFocus(InputType.CALLBACK_RATE)(e);\n // openTooltip();\n }}\n onBlur={(e) => {\n onBlur(InputType.CALLBACK_RATE)(e);\n // closeTooltip();\n }}\n inputMode=\"decimal\"\n classNames={{\n root: \"oui-h-[68px]\",\n input: \"oui-mb-5\",\n prefix: \"!oui-top-1\",\n }}\n />\n <CallbackRatePercentages\n className=\"oui-absolute oui-bottom-1 oui-left-2\"\n callback_rate={callback_rate}\n // onClick={openTooltip}\n />\n </div>\n // </Tooltip>\n );\n }\n\n return (\n <CustomInput\n id=\"order_callback_value_input\"\n name=\"order_callback_value_input\"\n label={t(\"orderEntry.trailingValue\")}\n suffix={suffix}\n error={getErrorMsg(\"callback_value\")}\n value={callback_value}\n onChange={(val: string) => {\n setOrderValue(\"callback_value\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.CALLBACK_VALUE)}\n onBlur={onBlur(InputType.CALLBACK_VALUE)}\n inputMode=\"decimal\"\n classNames={{\n input: \"!oui-mb-[6px]\",\n prefix: \"!oui-top-1\",\n }}\n />\n );\n },\n);\n\nTrailingCallbackInput.displayName = \"TrailingCallbackInput\";\n","import { FC, memo } from \"react\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\nconst percentages = [1, 2, 3, 5];\n\ntype CallbackRatePercentagesProps = {\n className?: string;\n callback_rate?: string;\n onClick?: (value: string) => void;\n};\n\nexport const CallbackRatePercentages: FC<CallbackRatePercentagesProps> = memo(\n (props) => {\n const { setOrderValue } = useOrderEntryContext();\n\n return (\n <Flex gapX={2} className={props.className}>\n {percentages.map((item) => {\n const value = item.toString();\n const isActive = props.callback_rate === value;\n\n return (\n <Flex\n key={item}\n justify=\"center\"\n itemAlign=\"center\"\n width={46}\n height={18}\n className={cn(\n \"oui-cursor-pointer oui-select-none\",\n \"oui-rounded oui-border\",\n isActive ? \"oui-border-base-contrast-36\" : \"oui-border-line-12\",\n )}\n onClick={() => {\n setOrderValue(\"callback_rate\", value);\n props.onClick?.(value);\n }}\n >\n <Text size=\"2xs\" intensity={isActive ? 80 : 36} weight=\"semibold\">\n {item}%\n </Text>\n </Flex>\n );\n })}\n </Flex>\n );\n },\n);\n\nCallbackRatePercentages.displayName = \"CallbackRatePercentages\";\n","import { FC, memo, useMemo } from \"react\";\nimport { TrailingCallbackType } from \"@kodiak-finance/orderly-types\";\nimport { Select, cn } from \"@kodiak-finance/orderly-ui\";\n\ntype TrailingCallbackSelectProps = {\n quote: string;\n value: string;\n onValueChange: (value: TrailingCallbackType) => void;\n};\n\nexport const TrailingCallbackSelect: FC<TrailingCallbackSelectProps> = memo(\n (props) => {\n const { quote } = props;\n\n const options = useMemo(() => {\n return [\n { label: quote, value: TrailingCallbackType.VALUE },\n { label: \"%\", value: TrailingCallbackType.RATE },\n ];\n }, [quote]);\n\n return (\n <Select.options\n variant=\"text\"\n size=\"xs\"\n options={options}\n classNames={{\n trigger: cn(\n \"oui-absolute oui-right-0 oui-top-1\",\n \"oui-w-[124px] oui-justify-end\",\n \"oui-text-base-contrast-36\",\n ),\n }}\n value={props.value}\n onValueChange={props.onValueChange}\n contentProps={{\n align: \"end\",\n alignOffset: -1,\n sideOffset: -4,\n className: \"oui-border oui-border-line-6\",\n }}\n />\n );\n },\n);\n\nTrailingCallbackSelect.displayName = \"trailingCallbackSelect\";\n","import { OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { QtyAndTotalInput } from \"../qtyAndTotal/qtyAndTotalInput\";\nimport { ActivePriceInput } from \"./activePriceInput\";\nimport { TrailingCallbackInput } from \"./trailingCallbackInput\";\n\ntype TrailingStopInputProps = {\n values: Partial<OrderlyOrder>;\n};\n\nexport const TrailingStopInput = (props: TrailingStopInputProps) => {\n const { values } = props;\n\n return (\n <div className=\"oui-space-y-1\">\n <ActivePriceInput activated_price={values.activated_price} />\n <TrailingCallbackInput\n callback_value={values.callback_value}\n callback_rate={values.callback_rate}\n />\n <QtyAndTotalInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n </div>\n );\n};\n","import { memo, useEffect, useMemo, useState } from \"react\";\nimport { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Slider, textVariants, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { InputType } from \"../../types\";\nimport { useOrderEntryContext } from \"../orderEntryContext\";\n\ntype QuantitySliderProps = {\n canTrade: boolean;\n side: OrderSide;\n order_quantity?: string;\n maxQty: number;\n};\nconst SLIDER_MIN = 0;\nconst SLIDER_MAX = 100;\n\nexport const QuantitySlider = memo((props: QuantitySliderProps) => {\n const { canTrade, side, order_quantity, maxQty } = props;\n\n const [sliderValue, setSliderValue] = useState<number>(0);\n\n const { setOrderValue, symbolInfo, lastQuantityInputType } =\n useOrderEntryContext();\n\n const { base_dp, base_tick } = symbolInfo;\n\n const { t } = useTranslation();\n\n const color = useMemo(\n () => (canTrade ? (side === OrderSide.BUY ? \"buy\" : \"sell\") : undefined),\n [side, canTrade],\n );\n\n const maxLabel = useMemo(() => {\n return side === OrderSide.BUY\n ? t(\"orderEntry.maxBuy\")\n : t(\"orderEntry.maxSell\");\n }, [side, t]);\n\n const onSliderValueChange = (value: number) => {\n lastQuantityInputType.current = InputType.QUANTITY_SLIDER;\n setSliderValue(value);\n };\n\n const sliderToQuantity = (value: number) => {\n const newQty = new Decimal(value)\n .div(SLIDER_MAX)\n .mul(maxQty)\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n setOrderValue(\"order_quantity\", utils.formatNumber(newQty, base_tick));\n };\n\n const onMax = () => {\n onSliderValueChange(SLIDER_MAX);\n // when previous slider value is max, quantity will not update by useEffect, so must set quantity manually to maxQty\n if (sliderValue === SLIDER_MAX) {\n sliderToQuantity(SLIDER_MAX);\n }\n };\n\n // update quantity when slider value and maxQty changes\n useEffect(() => {\n if (lastQuantityInputType.current === InputType.QUANTITY_SLIDER) {\n sliderToQuantity(sliderValue);\n }\n }, [sliderValue, maxQty]);\n\n useEffect(() => {\n const quantityToSlider = () => {\n if (order_quantity && Number(order_quantity) !== 0 && maxQty !== 0) {\n return new Decimal(Math.min(Number(order_quantity), maxQty))\n .div(maxQty)\n .mul(SLIDER_MAX)\n .todp(2, Decimal.ROUND_DOWN)\n .toNumber();\n }\n return 0;\n };\n\n // update slider value when last quantity input type is not quantity slider\n if (lastQuantityInputType.current !== InputType.QUANTITY_SLIDER) {\n setSliderValue(quantityToSlider());\n }\n }, [order_quantity, maxQty]);\n\n return (\n <div>\n <Slider\n disabled={maxQty === 0 || !canTrade}\n value={[sliderValue]}\n color={color}\n markCount={4}\n showTip\n onValueChange={(e) => {\n onSliderValueChange(e[0]);\n }}\n min={SLIDER_MIN}\n max={SLIDER_MAX}\n />\n <Flex justify={\"between\"} className=\"oui-pt-1 xl:oui-pt-2\">\n <Text.numeral\n size={\"2xs\"}\n color={color}\n dp={2}\n padding={false}\n suffix=\"%\"\n >\n {canTrade ? sliderValue : 0}\n </Text.numeral>\n <Flex>\n <button\n className={textVariants({\n size: \"2xs\",\n className: \"oui-mr-1\",\n })}\n onClick={onMax}\n data-testid=\"oui-testid-orderEntry-maxQty-value-button\"\n >\n {maxLabel}\n </button>\n <Text.numeral\n size={\"2xs\"}\n color={color}\n dp={base_dp}\n padding={false}\n data-testid=\"oui-testid-orderEntry-maxQty-value\"\n >\n {canTrade ? maxQty : 0}\n </Text.numeral>\n </Flex>\n </Flex>\n </div>\n );\n});\n\nQuantitySlider.displayName = \"QuantitySlider\";\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Switch } from \"@kodiak-finance/orderly-ui\";\n\nexport interface ReduceOnlySwitchProps {\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n className?: string;\n testId?: string;\n}\n\nexport const ReduceOnlySwitch: React.FC<ReduceOnlySwitchProps> = ({\n checked,\n onCheckedChange,\n className,\n testId = \"oui-testid-orderEntry-reduceOnly-switch\",\n}) => {\n const { t } = useTranslation();\n\n return (\n <Flex itemAlign={\"center\"} gapX={1} className={className}>\n <Switch\n data-testid={testId}\n className=\"oui-h-[14px]\"\n id={\"reduceOnly\"}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <label htmlFor={\"reduceOnly\"} className={\"oui-text-xs\"}>\n {t(\"orderEntry.reduceOnly\")}\n </label>\n </Flex>\n );\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationResult,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport {\n OrderlyOrder,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n cn,\n Flex,\n Text,\n Input,\n inputFormatter,\n Switch,\n SettingFillIcon,\n useScreen,\n DotStatus,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Grid } from \"@kodiak-finance/orderly-ui\";\nimport { TPSLPositionTypeWidget } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { useOrderEntryContext } from \"./orderEntryContext\";\nimport { PnlInputWidget } from \"./pnlInput/pnlInput.widget\";\nimport { usePnlInputContext } from \"./pnlInput/pnlInputContext\";\nimport { PnlInputProvider } from \"./pnlInput/pnlInputProvider\";\nimport { PNL_Values } from \"./pnlInput/useBuilder.script\";\nimport { ReduceOnlySwitch } from \"./reduceOnlySwitch\";\n\ntype OrderValueKeys = keyof OrderlyOrder;\n\ntype Est_Values = PNL_Values & {\n trigger_price?: string;\n};\n\ntype TPSL_Values = {\n tp: Est_Values;\n sl: Est_Values;\n position_type: PositionType;\n};\n\nexport const OrderTPSL = (props: {\n // onCancelTPSL: () => void;\n // onEnableTP_SL: () => void;\n switchState: boolean;\n onSwitchChanged: (state: boolean) => void;\n onChange: (key: OrderValueKeys, value: any) => void;\n values: TPSL_Values;\n orderType: OrderType;\n errors: OrderValidationResult | null;\n quote_dp: number | undefined;\n showTPSLAdvanced: () => void;\n setOrderValue: (key: string, value: any) => void;\n reduceOnlyChecked?: boolean;\n onReduceOnlyChange?: (checked: boolean) => void;\n}) => {\n const tpslFormRef = React.useRef<HTMLDivElement>(null);\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n useEffect(() => {\n if (\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n ) {\n props.onSwitchChanged(false);\n }\n }, [props.orderType]);\n\n if (\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n ) {\n return null;\n }\n\n const isSlPriceWarning =\n props.errors?.[\"sl_trigger_price\"]?.[\"type\"] ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n return (\n <div>\n <Flex itemAlign={\"center\"} justify={\"between\"}>\n <Flex itemAlign={\"center\"} gapX={1}>\n <Switch\n id={\"order_entry_tpsl\"}\n className=\"oui-h-[14px]\"\n checked={props.switchState}\n disabled={\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n }\n onCheckedChange={(checked) => {\n props.onSwitchChanged(checked);\n }}\n />\n <label htmlFor={\"order_entry_tpsl\"} className={\"oui-text-xs\"}>\n {t(\"common.tpsl\")}\n </label>\n {/* <ExclamationFillIcon\n color=\"white\"\n // opacity={0.36}\n size={14}\n opacity={1}\n className=\"oui-cursor-pointer oui-text-white/[.36] hover:oui-text-white/80\"\n onClick={() => {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"xs\",\n content: (\n <Text intensity={54}>{t(\"orderEntry.tpsl.tips\")}</Text>\n ),\n });\n }}\n /> */}\n </Flex>\n <Flex itemAlign={\"center\"} gapX={2}>\n {isMobile && props.onReduceOnlyChange && (\n <ReduceOnlySwitch\n checked={props.reduceOnlyChecked ?? false}\n onCheckedChange={props.onReduceOnlyChange}\n />\n )}\n {!isMobile && (\n <TPSLAdvancedButton\n className={cn(\n \"oui-group oui-invisible\",\n props.switchState && \"oui-visible\",\n )}\n showTPSLAdvanced={props.showTPSLAdvanced}\n />\n )}\n </Flex>\n </Flex>\n <div\n className={cn(\n \"oui-max-h-0 oui-overflow-hidden oui-transition-all\",\n props.switchState && \"oui-max-h-[120px]\",\n )}\n onTransitionEnd={() => {\n console.log(\"transition end\");\n tpslFormRef.current?.style.setProperty(\n \"opacity\",\n props.switchState ? \"1\" : \"0\",\n );\n }}\n >\n <TPSLInputForm\n ref={tpslFormRef}\n setOrderValue={props.setOrderValue}\n onChange={props.onChange}\n values={props.values}\n errors={isSlPriceWarning ? {} : props.errors}\n quote_dp={props.quote_dp}\n showTPSLAdvanced={props.showTPSLAdvanced}\n isMobile={isMobile}\n isSlPriceWarning={isSlPriceWarning}\n />\n </div>\n\n {isSlPriceWarning && <TPSLPriceWarning errors={props.errors} />}\n </div>\n );\n};\n\nconst TPSLPriceWarning = (props: { errors: OrderValidationResult | null }) => {\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n\n return (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={getErrorMsg(\"sl_trigger_price\")}\n />\n );\n};\n\nconst TPSLInputForm = React.forwardRef<\n HTMLDivElement,\n {\n setOrderValue: (key: string, value: any) => void;\n onChange: (key: OrderValueKeys, value: any) => void;\n values: TPSL_Values;\n errors: OrderValidationResult | null;\n quote_dp: number | undefined;\n showTPSLAdvanced: () => void;\n isMobile: boolean;\n isSlPriceWarning?: boolean;\n }\n>((props, ref) => {\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n const { t } = useTranslation();\n\n return (\n <div\n ref={ref}\n className={\"oui-space-y-1 oui-px-px oui-py-2 oui-transition-all\"}\n >\n <Flex itemAlign={\"center\"} justify={\"between\"} gapX={2}>\n <TPSLPositionTypeWidget\n value={props.values.position_type}\n onChange={props.onChange}\n />\n {props.isMobile && (\n <TPSLAdvancedButton\n showTPSLAdvanced={props.showTPSLAdvanced}\n isMobile={props.isMobile}\n />\n )}\n </Flex>\n <PnlInputProvider values={props.values.tp} type={\"TP\"}>\n <TPSLInputRow\n type={\"TP\"}\n error={getErrorMsg(\"tp_trigger_price\")}\n onChange={props.onChange}\n values={props.values.tp}\n quote_dp={props.quote_dp}\n testIds={{\n first: \"oui-testid-orderEntry-tpsl-tpPrice-input\",\n second: \"oui-testid-orderEntry-tpsl-tpPnl-input\",\n dropDown: \"oui-testid-orderEntry-tpsl-tp-dropDown-trigger-button\",\n }}\n />\n </PnlInputProvider>\n <PnlInputProvider values={props.values.sl} type={\"SL\"}>\n <TPSLInputRow\n type={\"SL\"}\n error={getErrorMsg(\"sl_trigger_price\")}\n onChange={props.onChange}\n values={props.values.sl}\n quote_dp={props.quote_dp}\n testIds={{\n first: \"oui-testid-orderEntry-tpsl-slPrice-input\",\n second: \"oui-testid-orderEntry-tpsl-slPnl-input\",\n dropDown: \"oui-testid-orderEntry-tpsl-sl-dropDown-trigger-button\",\n }}\n classNames={{\n root: props.isSlPriceWarning\n ? \"oui-outline-warning-darken focus-within:oui-outline-warning-darken\"\n : undefined,\n }}\n />\n </PnlInputProvider>\n </div>\n );\n});\n\nTPSLInputForm.displayName = \"TPSLInputForm\";\n\nconst TPSLAdvancedButton = (props: {\n showTPSLAdvanced: () => void;\n className?: string;\n isMobile?: boolean;\n}) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n itemAlign={\"center\"}\n gapX={1}\n onClick={props.showTPSLAdvanced}\n className={cn(\"oui-group oui-cursor-pointer\", props.className)}\n >\n <Text\n className={cn(\n \"oui-cursor-pointer group-hover:oui-text-base-contrast\",\n props.isMobile ? \"oui-text-2xs\" : \"oui-text-sm\",\n )}\n >\n {t(\"tpsl.advanced\")}\n </Text>\n <SettingFillIcon\n size={12}\n className=\"oui-text-base-contrast-54 group-hover:oui-text-base-contrast oui-cursor-pointer\"\n opacity={1}\n onClick={props.showTPSLAdvanced}\n />\n </Flex>\n );\n};\n\n//------- TPSLTriggerPriceInput start -------\nconst TPSLTriggerPriceInput = (props: {\n type: \"TP\" | \"SL\";\n error: string | undefined;\n values: Est_Values;\n onChange: (value: string) => void;\n quote_dp: number | undefined;\n testId?: string;\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}) => {\n const { t } = useTranslation();\n const { errorMsgVisible } = useOrderEntryContext();\n const { tipsEle } = usePnlInputContext();\n const [prefix, setPrefix] = useState<string>(`${props.type} Price`);\n const [placeholder, setPlaceholder] = useState<string>(\"USDC\");\n\n const [tipVisible, setTipVisible] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const [innerValue, setInnerValue] = useState<string>(\n props.values.trigger_price ?? \"\",\n );\n\n useEffect(() => {\n if (isFocused) {\n return;\n }\n setInnerValue(props.values.trigger_price ?? \"\");\n }, [props.values.trigger_price, isFocused]);\n\n const triggerPriceToolTipEle = useMemo(() => {\n if (props.error && errorMsgVisible) return props.error;\n if (tipVisible) return tipsEle;\n\n return null;\n }, [props.error, errorMsgVisible, tipVisible, tipsEle]);\n\n const getPrefixLabel = (trigger_price?: string) => {\n let _prefix = props.type === \"TP\" ? t(\"tpsl.tpPrice\") : t(\"tpsl.slPrice\");\n\n if (trigger_price) {\n _prefix = props.type === \"TP\" ? t(\"tpsl.tp\") : t(\"tpsl.sl\");\n }\n return _prefix;\n };\n\n const onValueChange = (value: string) => {\n setInnerValue(value);\n props.onChange(value);\n };\n\n // console.log(\"props.values.trigger_price\", props.values.trigger_price);\n\n useEffect(() => {\n setPrefix(getPrefixLabel(props.values.trigger_price));\n\n if (!isFocused) {\n setInnerValue(props.values.trigger_price ?? \"\");\n }\n }, [props.type, props.values.trigger_price]);\n\n const onFocus = () => {\n setPrefix(props.type === \"TP\" ? t(\"tpsl.tp\") : t(\"tpsl.sl\"));\n setPlaceholder(\"\");\n setTipVisible(true);\n setIsFocused(true);\n };\n\n const onBlur = () => {\n setPrefix(getPrefixLabel(props.values.trigger_price));\n setPlaceholder(\"USDC\");\n setTipVisible(false);\n setIsFocused(false);\n props.onChange(innerValue);\n };\n\n return (\n <Input.tooltip\n data-testid={props.testId}\n prefix={prefix}\n size={\"md\"}\n placeholder={placeholder}\n align=\"right\"\n onFocus={onFocus}\n onBlur={onBlur}\n tooltip={triggerPriceToolTipEle}\n tooltipProps={{\n content: {\n side: props.type === \"TP\" ? \"top\" : \"bottom\",\n },\n }}\n color={props.error ? \"danger\" : undefined}\n autoComplete={\"off\"}\n value={innerValue}\n classNames={{\n additional: \"oui-text-base-contrast-54\",\n root: cn(\"oui-pr-2 md:oui-pr-3\", props.classNames?.root),\n prefix: cn(\"oui-pr-1 md:oui-pr-2\", props.classNames?.prefix),\n input: cn(\n \"oui-text-2xs placeholder:oui-text-2xs\",\n props.classNames?.input,\n ),\n }}\n // onChange={props.onChange}\n onValueChange={onValueChange}\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(props.quote_dp ?? 2),\n inputFormatter.currencyFormatter,\n ]}\n />\n );\n};\n\n//------- TPSLTriggerPriceInput end -------\n\nconst TPSLInputRow: React.FC<{\n type: \"TP\" | \"SL\";\n values: Est_Values;\n error?: string;\n onChange: (key: OrderValueKeys, value: any) => void;\n quote_dp: number | undefined;\n testIds?: {\n first?: string;\n second?: string;\n dropDown?: string;\n };\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}> = (props) => {\n return (\n <Grid cols={2} gapX={1}>\n <TPSLTriggerPriceInput\n testId={props.testIds?.first}\n type={props.type}\n error={props.error}\n values={props.values ?? \"\"}\n classNames={props.classNames}\n onChange={(event) => {\n props.onChange(\n props.type === \"SL\" ? \"sl_trigger_price\" : \"tp_trigger_price\",\n event,\n );\n }}\n quote_dp={props.quote_dp}\n />\n\n <PnlInputWidget\n testIds={{\n input: props.testIds?.second,\n dropDown: props.testIds?.dropDown,\n }}\n onChange={props.onChange}\n quote={\"USDC\"}\n quote_dp={2}\n type={props.type}\n values={{\n PnL: props.values.PnL,\n Offset: props.values.Offset,\n \"Offset%\": props.values[\"Offset%\"],\n ROI: props.values.ROI,\n }}\n />\n </Grid>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n CaretDownIcon,\n Input,\n MenuItem,\n Text,\n SimpleDropdownMenu,\n} from \"@kodiak-finance/orderly-ui\";\nimport { inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { PNLInputState, PnLMode } from \"./useBuilder.script\";\n\nexport type PNLInputProps = PNLInputState & {\n testIds?: {\n input?: string;\n dropDown?: string;\n };\n quote: string;\n type: \"TP\" | \"SL\";\n};\n\nexport const PNLInput = (props: PNLInputProps) => {\n const {\n mode,\n modes,\n modeLabelMap,\n onModeChange,\n onValueChange,\n quote,\n quote_dp,\n value,\n type,\n tips,\n onFocus,\n onBlur,\n setFocus,\n } = props;\n\n const [prefix, setPrefix] = useState<string>(mode);\n\n const [placeholder, setPlaceholder] = useState<string>(\n mode === PnLMode.PERCENTAGE ? \"%\" : quote,\n );\n\n useEffect(() => {\n setPrefix(mode);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n }, [mode]);\n\n useEffect(() => {\n setPrefix(!!value ? \"\" : mode);\n }, [value]);\n\n const id = useMemo(() => `${type.toLowerCase()}_${mode.toLowerCase()}`, []);\n\n return (\n <Input.tooltip\n prefix={modeLabelMap[prefix as keyof typeof modeLabelMap] || prefix}\n size={\"md\"}\n placeholder={placeholder}\n id={id}\n align={\"right\"}\n value={value}\n tooltip={tips}\n tooltipProps={{\n content: {\n side: props.type === \"TP\" ? \"top\" : \"bottom\",\n },\n }}\n data-testid={props.testIds?.input}\n autoComplete={\"off\"}\n inputMode=\"decimal\"\n onValueChange={onValueChange}\n formatters={[\n props.formatter({ dp: quote_dp, mode, type }),\n inputFormatter.currencyFormatter,\n // inputFormatter.identifierFormatter(),\n ]}\n classNames={{\n root: type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n additional: \"oui-text-base-contrast-54\",\n input: \"oui-text-inherit\",\n }}\n onFocus={() => {\n setPrefix(\"\");\n setPlaceholder(\"\");\n setFocus(true);\n onFocus();\n }}\n onBlur={() => {\n setPrefix(!!value ? \"\" : mode);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n onBlur();\n }}\n suffix={\n <>\n {mode === PnLMode.PERCENTAGE && !!value && (\n <Text size={\"2xs\"} color=\"inherit\" className=\"oui-ml-[2px]\">\n %\n </Text>\n )}\n <PNLMenus\n mode={mode}\n modes={modes}\n onModeChange={(item) => onModeChange(item.value as PnLMode)}\n testId={props.testIds?.dropDown}\n />\n </>\n }\n />\n );\n};\n\nconst PNLMenus = (props: {\n mode?: string;\n modes: MenuItem[];\n onModeChange: (value: MenuItem) => void;\n testId?: string;\n}) => {\n return (\n <SimpleDropdownMenu\n currentValue={props.mode}\n menu={props.modes}\n align={\"end\"}\n size={\"xs\"}\n className={\"oui-min-w-[80px]\"}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onSelect={(item) => props.onModeChange(item as MenuItem)}\n >\n <button className={\"oui-p-2\"} data-testid={props.testId}>\n <CaretDownIcon size={12} color={\"white\"} />\n </button>\n </SimpleDropdownMenu>\n );\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { MenuItem } from \"@kodiak-finance/orderly-ui\";\nimport type {\n InputFormatter,\n InputFormatterOptions,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal, todpIfNeed } from \"@kodiak-finance/orderly-utils\";\nimport { usePnlInputContext } from \"./pnlInputContext\";\n\nexport enum PnLMode {\n PnL = \"PnL\",\n OFFSET = \"Offset\",\n PERCENTAGE = \"Offset%\",\n}\n\nexport type PNL_Values = {\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n};\n\ntype PNL_Keys =\n | \"tp_offset\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"sl_offset\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\";\n\nexport type BuilderProps = {\n type: \"TP\" | \"SL\";\n\n quote_dp?: number;\n onChange: (key: PNL_Keys, value: number | string) => void;\n\n values: PNL_Values;\n};\n\nexport const usePNLInputBuilder = (props: BuilderProps) => {\n const { type, values, quote_dp } = props;\n const { t } = useTranslation();\n const [focus, setFocus] = useState(true);\n // const [mode, setMode] = useLocalStorage<PnLMode>(\n // \"TP/SL_Mode\",\n // PnLMode.PERCENTAGE\n // );\n const { mode, setMode, tipsEle } = usePnlInputContext();\n\n const [tipVisible, setTipVisible] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const key = useMemo<PNL_Keys>(() => {\n switch (mode) {\n case PnLMode.OFFSET:\n return `${type.toLowerCase()}_offset` as PNL_Keys;\n case PnLMode.PERCENTAGE:\n return `${type.toLowerCase()}_offset_percentage` as PNL_Keys;\n default:\n return `${type.toLowerCase()}_pnl` as PNL_Keys;\n }\n }, [mode]);\n\n const [innerValue, setInnerValue] = useState<string>(\n values[mode as keyof PNL_Values],\n );\n\n // const value = useMemo(() => {\n // // console.log(\"mode\", mode, values);\n // const value = values[mode as keyof PNL_Values];\n // // if (isFocused) {\n // // return value;\n // // }\n // return value;\n // }, [values, mode, isFocused]);\n\n useEffect(() => {\n if (isFocused) {\n return;\n }\n setInnerValue(values[mode as keyof PNL_Values]);\n }, [values, mode, isFocused]);\n\n const modes = useMemo<MenuItem[]>(() => {\n return [\n {\n label: t(\"tpsl.pnl\"),\n value: PnLMode.PnL,\n testId: `${PnLMode.PnL}_menu_item`,\n },\n {\n label: t(\"tpsl.offset\"),\n value: PnLMode.OFFSET,\n testId: `${PnLMode.OFFSET}_mneu_item`,\n },\n {\n label: `${t(\"tpsl.offset\")}%`,\n value: PnLMode.PERCENTAGE,\n testId: `${PnLMode.PERCENTAGE}_menu_item`,\n },\n ];\n }, [t]);\n\n const modeLabelMap = useMemo(() => {\n return {\n [PnLMode.PnL]: t(\"tpsl.pnl\"),\n [PnLMode.OFFSET]: t(\"tpsl.offset\"),\n [PnLMode.PERCENTAGE]: `${t(\"tpsl.offset\")}%`,\n };\n }, [t]);\n\n const percentageSuffix = useRef<string>(\"\");\n\n const onValueChange = (value: string) => {\n // console.log(\"onValueChange\", value);\n // if (!isFocused) {\n // props.onChange(key, value);\n // } else {\n // setInnerValue(value);\n // }\n setInnerValue(value);\n props.onChange(key, value);\n };\n\n const onFocus = () => {\n // updateTips();\n setTipVisible(true);\n setIsFocused(true);\n };\n\n /**\n * hide tips when input is blurred\n */\n const onBlur = () => {\n // setTips(undefined);\n setTipVisible(false);\n setIsFocused(false);\n props.onChange(key, innerValue);\n };\n\n const formatter = (options: {\n dp?: number;\n mode: PnLMode;\n type: \"TP\" | \"SL\";\n }): InputFormatter => {\n const { dp = 2 } = options;\n return {\n onRenderBefore: (\n value: string | number,\n options: InputFormatterOptions,\n ) => {\n value = `${value}`; // convert to string\n\n if (focus) {\n if (type === \"SL\" && mode === PnLMode.PnL) {\n value = value.startsWith(\"-\") ? value : \"-\" + value;\n }\n }\n\n if (value === \"\" || value === \"-\") return \"\";\n // if (mode === PnLMode.PnL || mode === PnLMode.OFFSET) {\n // return commify(value);\n // }\n\n if (mode === PnLMode.PERCENTAGE) {\n // value = new Decimal(\n // value.replace(\n // new RegExp(percentageSuffix.current.replace(\".\", \"\\\\.\") + \"$\"),\n // \"\"\n // )\n // )\n // .mul(100)\n // .toString();\n\n // return `${todpIfNeed(value, 2)}${percentageSuffix.current}`;\n return `${new Decimal(\n value.replace(\n new RegExp(percentageSuffix.current.replace(\".\", \"\\\\.\") + \"$\"),\n \"\",\n ),\n )\n .mul(100)\n .todp(2, 4)\n .toString()}${percentageSuffix.current}`;\n // return (Number(value) * 100).toFixed(2);\n } else if (mode === PnLMode.OFFSET) {\n value = todpIfNeed(value, dp);\n } else {\n // value = new Decimal(value).todp(2).toString();\n }\n\n return `${value}`;\n },\n onSendBefore: (value: string) => {\n if (/^\\-?0{2,}$/.test(value)) {\n return \"0\";\n }\n\n // console.log(\"onSendBefore\", value);\n\n if (mode === PnLMode.PERCENTAGE) {\n if (value !== \"\") {\n // percentageSuffix.current = value.endsWith(\".\") ? \".\" : \"\";\n value = todpIfNeed(value, 2);\n const endStr = value.match(/\\.0{0,2}$/);\n if (!!endStr) {\n percentageSuffix.current = endStr[0];\n } else {\n percentageSuffix.current = \"\";\n }\n value = new Decimal(value).div(100).toString();\n value = `${value}${percentageSuffix.current}`;\n }\n } else if (mode === PnLMode.PnL && type === \"SL\" && focus) {\n value = value.startsWith(\"-\") ? value : \"-\" + value;\n } else {\n value = todpIfNeed(value, dp);\n }\n\n if (value === \"\" || value === \"-\") return \"\";\n\n return value;\n },\n };\n };\n\n return {\n mode,\n modes,\n modeLabelMap,\n formatter,\n onModeChange: (mode: PnLMode) => {\n setMode(mode);\n },\n onFocus,\n onBlur,\n value: innerValue,\n onValueChange,\n quote_dp,\n tips: tipVisible ? tipsEle : undefined,\n setFocus,\n };\n};\n\nexport type PNLInputState = ReturnType<typeof usePNLInputBuilder>;\n","import { createContext, ReactNode, useContext } from \"react\";\nimport { PnLMode } from \"./useBuilder.script\";\n\nexport type PnlInputContextState = {\n mode: PnLMode;\n setMode: (mode: PnLMode) => void;\n tipsEle: ReactNode | null;\n};\n\nexport const PnlInputContext = createContext<PnlInputContextState>(\n {} as PnlInputContextState,\n);\n\nexport const usePnlInputContext = () => {\n return useContext(PnlInputContext);\n};\n","import { PNLInput } from \"./pnlInput.ui\";\nimport { BuilderProps, PnLMode, usePNLInputBuilder } from \"./useBuilder.script\";\n\nexport const PnlInputWidget = (\n props: BuilderProps & {\n testIds?: {\n input?: string;\n dropDown?: string;\n };\n quote: string;\n }\n) => {\n const { testIds, quote, ...rest } = props;\n const state = usePNLInputBuilder(rest);\n return (\n <PNLInput {...state} testIds={testIds} quote={quote} type={props.type} />\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { PnlInputContext, PnlInputContextState } from \"./pnlInputContext\";\nimport { PNL_Values, PnLMode } from \"./useBuilder.script\";\n\nexport const PnlInputProvider: React.FC<\n React.PropsWithChildren<{\n values: PNL_Values & { trigger_price?: string };\n type: \"TP\" | \"SL\";\n }>\n> = (props) => {\n const { type, values, children } = props;\n const [mode, setMode] = useLocalStorage<PnLMode>(\n \"TP/SL_Mode\",\n PnLMode.PERCENTAGE,\n );\n const { t } = useTranslation();\n\n const tipsEle = useMemo(() => {\n if (!values.PnL || !values.trigger_price) {\n return null;\n }\n return (\n <Flex>\n <span className={\"oui-text-xs oui-text-base-contrast-54\"}>\n {mode === PnLMode.PnL\n ? t(\"orderEntry.estRoi\")\n : t(\"orderEntry.estPnL\")}\n </span>\n {mode === PnLMode.PnL ? (\n <Text.numeral\n rule={\"percentages\"}\n className={cn(\n \"oui-ml-1 oui-text-xs\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n >\n {values.ROI}\n </Text.numeral>\n ) : (\n <Text.numeral\n rule={\"price\"}\n className={cn(\n \"oui-ml-1 oui-text-xs\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n >\n {values.PnL}\n </Text.numeral>\n )}\n </Flex>\n );\n }, [mode, values.ROI, values.PnL, values.trigger_price]);\n\n const memoizedValue = useMemo<PnlInputContextState>(() => {\n return { mode, setMode, tipsEle };\n }, [mode, setMode, tipsEle]);\n\n return (\n <PnlInputContext.Provider value={memoizedValue}>\n {children}\n </PnlInputContext.Provider>\n );\n};\n","import { useEffect, useRef } from \"react\";\nimport {\n useComputedLTV,\n useEventEmitter,\n useLocalStorage,\n useMarginRatio,\n useMemoizedFn,\n useOrderEntry,\n useOrderlyContext,\n useTpslPriceChecker,\n} from \"@kodiak-finance/orderly-hooks\";\nimport {\n DistributionType,\n OrderLevel,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@kodiak-finance/orderly-types\";\nimport { Decimal, removeTrailingZeros } from \"@kodiak-finance/orderly-utils\";\nimport { useAskAndBid } from \"./hooks/useAskAndBid\";\nimport { useBBOState } from \"./hooks/useBBOState\";\nimport { useCanTrade } from \"./hooks/useCanTrade\";\nimport { useFocusAndBlur } from \"./hooks/useFocusAndBlur\";\nimport { usePriceInputContainer } from \"./hooks/usePriceInputContainer\";\nimport { InputType } from \"./types\";\nimport { BBOStatus, isBBOOrder, safeNumber } from \"./utils\";\n\nexport type OrderEntryScriptInputs = {\n symbol: string;\n};\n\nexport const ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\n\nexport type OrderEntryScriptReturn = ReturnType<typeof useOrderEntryScript>;\n\nexport const useOrderEntryScript = (inputs: OrderEntryScriptInputs) => {\n const { symbol } = inputs;\n const [localOrderType, setLocalOrderType] = useLocalStorage(\n \"orderly-order-entry-order-type\",\n OrderType.LIMIT,\n );\n const [localOrderSide, setLocalOrderSide] = useLocalStorage(\n \"orderly-order-entry-order-side\",\n OrderSide.BUY,\n );\n\n const { notification } = useOrderlyContext();\n\n const [soundAlert, setSoundAlert] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n notification?.orderFilled?.defaultOpen ?? false,\n );\n\n const canTrade = useCanTrade();\n\n const {\n formattedOrder,\n setValue,\n setValues: setOrderValues,\n symbolInfo,\n ...state\n } = useOrderEntry(symbol, {\n initialOrder: {\n symbol,\n order_type: localOrderType,\n position_type: PositionType.PARTIAL,\n side: localOrderSide,\n },\n });\n\n const [tpslSwitch, setTpslSwitch] = useLocalStorage(\n \"orderly-order-entry-tp_sl-switch\",\n false,\n );\n\n const { currentLeverage } = useMarginRatio();\n const ee = useEventEmitter();\n const triggerPriceInputRef = useRef<HTMLInputElement | null>(null);\n const priceInputRef = useRef<HTMLInputElement | null>(null);\n const activatedPriceInputRef = useRef<HTMLInputElement | null>(null);\n\n const { bboStatus, bboType, setBBOType, onBBOChange, toggleBBO } =\n useBBOState({\n tpslSwitch,\n order_type: formattedOrder.order_type,\n order_type_ext: formattedOrder.order_type_ext,\n side: formattedOrder.side,\n setOrderValues,\n });\n\n const {\n currentFocusInput,\n lastScaledOrderPriceInput,\n lastQuantityInputType,\n onFocus,\n onBlur,\n } = useFocusAndBlur({\n base_tick: symbolInfo?.base_tick,\n order_type: formattedOrder.order_type,\n order_quantity: formattedOrder.order_quantity,\n setValue,\n });\n\n // cancel TP/SL\n const cancelTP_SL = () => {\n // if(formattedOrder.)\n setOrderValues({\n tp_trigger_price: \"\",\n sl_trigger_price: \"\",\n position_type: PositionType.FULL,\n });\n };\n\n const enableTP_SL = () => {\n setOrderValues({\n order_type_ext: undefined,\n position_type: PositionType.FULL,\n });\n };\n\n const setOrderValue = useMemoizedFn(\n (\n key: any,\n value: any,\n options?: {\n shouldUpdateLastChangedField?: boolean;\n },\n ) => {\n if (key === \"order_type\") {\n setLocalOrderType(value);\n }\n if (key === \"side\") {\n setLocalOrderSide(value);\n }\n\n if (\n (key === \"reduce_only\" && value) ||\n (key === \"order_type\" &&\n (value === OrderType.STOP_LIMIT || value === OrderType.STOP_MARKET))\n ) {\n // cancelTP_SL();\n\n const data = {\n tp_trigger_price: \"\",\n sl_trigger_price: \"\",\n [key]: value,\n };\n\n if (key === \"order_type\") {\n data[\"order_type_ext\" as any] = \"\";\n }\n\n setOrderValues(data);\n\n return;\n }\n\n if (key === \"order_type\" && value !== OrderType.LIMIT) {\n const data = {\n level: undefined,\n order_type_ext: undefined,\n [key]: value,\n };\n\n setOrderValues(data);\n\n return;\n }\n\n if (key === \"order_type\" && value === OrderType.SCALED) {\n setOrderValues({\n distribution_type: DistributionType.FLAT,\n [key]: value,\n });\n return;\n }\n\n setValue(key, value, options);\n },\n );\n\n const onTPSLSwitchChanged = (state: boolean) => {\n setTpslSwitch(state);\n if (state) {\n enableTP_SL();\n } else {\n cancelTP_SL();\n }\n };\n\n useEffect(() => {\n const updateOrderPrice = (price: string) => {\n setValue(\"order_price\", price);\n };\n ee.on(\"update:orderPrice\", updateOrderPrice);\n\n return () => {\n ee.off(\"update:orderPrice\", updateOrderPrice);\n };\n }, []);\n\n useEffect(() => {\n const focusInputElement = (target: HTMLInputElement | null) => {\n requestAnimationFrame(() => {\n target?.focus();\n });\n };\n\n // handle orderbook item click event\n const orderBookItemClickHandler = (item: number[]) => {\n const price = removeTrailingZeros(item[0]);\n const { order_type, order_type_ext } = formattedOrder;\n\n // handle trigger price input, focus on trigger price input\n if (\n currentFocusInput.current === InputType.TRIGGER_PRICE &&\n (order_type === OrderType.STOP_LIMIT ||\n order_type === OrderType.STOP_MARKET)\n ) {\n setValue(\"trigger_price\", price);\n focusInputElement(triggerPriceInputRef.current);\n return;\n }\n\n // handle bbo order, unselect bbo and set order price, focus on order price input\n if (isBBOOrder({ order_type, order_type_ext })) {\n setBBOType(undefined);\n\n setOrderValues({\n order_type_ext: undefined,\n level: undefined,\n });\n\n requestAnimationFrame(() => {\n // Since BBO will update the price when unselected, we should set order price in requestAnimationFrame\n // We can't call setValue directly here because it's inside a requestAnimationFrame, and the formattedOrder accessed inside setValue would be the old value\n // setValue(\"order_price\", price);\n ee.emit(\"update:orderPrice\", price);\n });\n\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle limit order and stop limit order, set order price and focus on order price input\n if (\n order_type === OrderType.STOP_LIMIT ||\n order_type === OrderType.LIMIT\n ) {\n setValue(\"order_price\", price);\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle stop market order, set trigger price and focus on trigger price input\n if (order_type === OrderType.STOP_MARKET) {\n setValue(\"trigger_price\", price);\n focusInputElement(triggerPriceInputRef.current);\n return;\n }\n\n // handle market order, set order type to limit\n if (order_type === OrderType.MARKET) {\n // unselect bbo\n setBBOType(undefined);\n\n // You can't call setValue twice here , the second value will override the first, so you need to combine them into a single setValues call\n setOrderValues({\n order_type: OrderType.LIMIT,\n order_price: price,\n });\n\n focusInputElement(priceInputRef.current);\n return;\n }\n\n if (\n order_type === OrderType.SCALED &&\n lastScaledOrderPriceInput.current\n ) {\n const field =\n lastScaledOrderPriceInput.current === InputType.START_PRICE\n ? \"start_price\"\n : \"end_price\";\n setValue(field, price);\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle trailing stop order, set activated price and focus on activated price input\n if (order_type === OrderType.TRAILING_STOP) {\n setValue(\"activated_price\", price);\n focusInputElement(activatedPriceInputRef.current);\n return;\n }\n\n // default, set order price and focus on order price input\n setValue(\"order_price\", price);\n focusInputElement(priceInputRef.current);\n };\n\n ee.on(\"orderbook:item:click\", orderBookItemClickHandler);\n\n return () => {\n ee.off(\"orderbook:item:click\", orderBookItemClickHandler);\n };\n // Please do not modify this deps lightly, because `setValue` also relies on these state internally\n }, [formattedOrder, symbolInfo]);\n\n useEffect(() => {\n // after switching symbol, all the input number should be cleared (price, qty, TP/SL, etc)\n state.reset();\n state.resetMetaState();\n // reset last quantity input type\n lastQuantityInputType.current = InputType.NONE;\n }, [symbol]);\n\n // if scaled order, and distribution_type is not set, set it to flat\n useEffect(() => {\n if (\n formattedOrder.order_type === OrderType.SCALED &&\n !formattedOrder.distribution_type\n ) {\n setValue(\"distribution_type\", DistributionType.FLAT);\n }\n }, [formattedOrder.order_type, formattedOrder.distribution_type]);\n\n const currentLtv = useComputedLTV();\n const askAndBid = useAskAndBid();\n\n const fillMiddleValue = () => {\n if (bboStatus === BBOStatus.ON) {\n toggleBBO();\n }\n if (formattedOrder.order_type === OrderType.LIMIT) {\n const [bestAsk = 0, bestBid = 0] = askAndBid;\n const midPrice = new Decimal(safeNumber(bestAsk))\n .add(safeNumber(bestBid))\n .div(2)\n .toNumber();\n // 1. Since BBO will update the price when unselected, we should set order price in raf\n // 2. raf is mainly used to solve the timing problem caused by React state update, ensuring that the orderPrice is triggered after the state is fully updated to avoid accessing expired state values.\n requestAnimationFrame(() => {\n ee.emit(\"update:orderPrice\", midPrice);\n });\n }\n };\n\n const { priceInputContainerRef, priceInputContainerWidth } =\n usePriceInputContainer({\n order_type_ext: formattedOrder.order_type_ext,\n });\n\n const slPriceError = useTpslPriceChecker({\n slPrice: formattedOrder.sl_trigger_price,\n liqPrice: state.estLiqPrice,\n side: formattedOrder.side,\n });\n\n useEffect(() => {\n if (formattedOrder.reduce_only) {\n setTpslSwitch(false);\n }\n }, [formattedOrder.reduce_only]);\n\n useEffect(() => {\n if (tpslSwitch) {\n setOrderValue(\"reduce_only\", false);\n }\n }, [tpslSwitch]);\n\n return {\n ...state,\n slPriceError: slPriceError ?? undefined,\n side: formattedOrder.side as OrderSide,\n type: formattedOrder.order_type as OrderType,\n level: formattedOrder.level as OrderLevel,\n formattedOrder,\n setOrderValue,\n setOrderValues,\n currentLeverage,\n\n // cancelTP_SL,\n // enableTP_SL,\n tpslSwitch,\n setTpslSwitch: onTPSLSwitchChanged,\n symbolInfo,\n onFocus,\n onBlur,\n\n priceInputRef,\n priceInputContainerRef,\n priceInputContainerWidth,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n\n canTrade,\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n currentLtv,\n fillMiddleValue,\n symbol,\n soundAlert,\n setSoundAlert,\n currentFocusInput,\n };\n};\n","import { useEffect, useMemo, useRef } from \"react\";\nimport { useLocalStorage, useTrack } from \"@kodiak-finance/orderly-hooks\";\nimport {\n BBOOrderType,\n OrderlyOrder,\n OrderSide,\n OrderType,\n TrackerEventName,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n BBOStatus,\n getOrderLevelByBBO,\n getOrderTypeByBBO,\n isBBOOrder,\n} from \"../utils\";\n\nexport function useBBOState({\n tpslSwitch,\n order_type,\n order_type_ext,\n side,\n setOrderValues,\n}: {\n tpslSwitch: boolean;\n order_type?: OrderType;\n order_type_ext?: OrderType;\n side?: OrderSide;\n setOrderValues: (values: Partial<OrderlyOrder>) => void;\n}) {\n const [localBBOType, setLocalBBOType] = useLocalStorage<\n BBOOrderType | undefined\n >(\"orderly_order_bbo_type\", undefined);\n\n const lastBBOType = useRef<BBOOrderType>(localBBOType);\n\n const { track } = useTrack();\n\n const bboStatus = useMemo(() => {\n if (\n tpslSwitch ||\n [OrderType.POST_ONLY, OrderType.IOC, OrderType.FOK].includes(\n order_type_ext!,\n )\n ) {\n return BBOStatus.DISABLED;\n }\n\n return localBBOType && order_type === OrderType.LIMIT\n ? BBOStatus.ON\n : BBOStatus.OFF;\n }, [tpslSwitch, order_type_ext, order_type, localBBOType]);\n\n const toggleBBO = () => {\n track(TrackerEventName.clickBBOButton);\n if (localBBOType) {\n // unselect bbo\n setLocalBBOType(undefined);\n // update formattedOrder values immediately instead of via useEffect\n setOrderValues({\n order_type_ext: undefined,\n level: undefined,\n });\n } else {\n setLocalBBOType(lastBBOType.current || BBOOrderType.COUNTERPARTY1);\n }\n };\n\n const onBBOChange = (value: BBOOrderType) => {\n setLocalBBOType(value);\n lastBBOType.current = value;\n };\n\n useEffect(() => {\n if (bboStatus === BBOStatus.DISABLED) {\n setOrderValues({\n // if order_type_ext is not bbo(ask, bid), keep previous value\n order_type_ext: isBBOOrder({ order_type_ext })\n ? undefined\n : order_type_ext,\n level: undefined,\n });\n }\n }, [bboStatus, order_type_ext]);\n\n useEffect(() => {\n if (bboStatus === BBOStatus.ON) {\n const orderType = getOrderTypeByBBO(localBBOType, side!);\n const orderLevel = getOrderLevelByBBO(localBBOType)!;\n setOrderValues({\n order_type_ext: orderType,\n level: orderLevel,\n });\n }\n }, [localBBOType, bboStatus, side]);\n\n return {\n bboStatus,\n bboType: localBBOType,\n setBBOType: setLocalBBOType,\n onBBOChange,\n toggleBBO,\n };\n}\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport function useCanTrade() {\n const { state } = useAccount();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const canTrade = useMemo(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n return canTrade;\n}\n","import { useRef, FocusEvent } from \"react\";\nimport {\n OrderEntryReturn,\n useMemoizedFn,\n utils,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { InputType } from \"../types\";\n\ntype FocusAndBlurProps = {\n base_tick: number;\n order_type?: OrderType;\n order_quantity?: string;\n setValue: OrderEntryReturn[\"setValue\"];\n};\n\nexport function useFocusAndBlur(props: FocusAndBlurProps) {\n const { base_tick, order_type, order_quantity, setValue } = props;\n const currentFocusInput = useRef<InputType>(InputType.NONE);\n const lastScaledOrderPriceInput = useRef<InputType>(InputType.END_PRICE);\n const lastQuantityInputType = useRef<InputType>(InputType.NONE);\n\n const formatQty = () => {\n if (\n base_tick < 1 ||\n // scaled order should not format quantity, because it is total quantity\n order_type === OrderType.SCALED ||\n !order_quantity\n ) {\n return;\n }\n\n // TODO: use this to format quantity instead of utils.formatNumber, need time to test\n // const formatQty = new Decimal(formattedOrder.order_quantity)\n // .todp(0, Decimal.ROUND_DOWN)\n // .div(symbolInfo.base_tick)\n // .toString();\n\n const quantity = utils.formatNumber(\n order_quantity,\n new Decimal(base_tick || \"0\").toNumber(),\n );\n\n setValue(\"order_quantity\", quantity, {\n shouldUpdateLastChangedField: false,\n });\n };\n\n const onFocus = (type: InputType) => (_: FocusEvent) => {\n currentFocusInput.current = type;\n\n // set last scaled order price input\n if (\n [InputType.START_PRICE, InputType.END_PRICE].includes(\n currentFocusInput.current!,\n )\n ) {\n lastScaledOrderPriceInput.current = type;\n }\n\n if (\n [InputType.QUANTITY, InputType.TOTAL, InputType.MARGIN].includes(type)\n ) {\n lastQuantityInputType.current = type;\n }\n };\n\n const onBlur = (type: InputType) => (_: FocusEvent) => {\n setTimeout(() => {\n if (currentFocusInput.current !== type) {\n return;\n }\n currentFocusInput.current = InputType.NONE;\n }, 300);\n\n if (type === InputType.QUANTITY) {\n formatQty();\n }\n };\n\n return {\n currentFocusInput,\n lastScaledOrderPriceInput,\n lastQuantityInputType,\n onFocus: useMemoizedFn(onFocus),\n onBlur: useMemoizedFn(onBlur),\n };\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\n\nexport function usePriceInputContainer({\n order_type_ext,\n}: {\n order_type_ext?: OrderType;\n}) {\n const [priceInputContainerWidth, setPriceInputContainerWidth] = useState(0);\n const priceInputContainerRef = useRef<HTMLDivElement | null>(null);\n\n // useEffect(() => {\n // if (\n // priceInputContainerRef.current &&\n // // update BBO select width when is BBO order\n // isBBOOrder({ order_type_ext: formattedOrder.order_type_ext })\n // ) {\n // const width =\n // priceInputContainerRef.current.getBoundingClientRect()?.width;\n // if (width) {\n // setPriceInputContainerWidth(width);\n // }\n // }\n // }, [priceInputContainerRef, formattedOrder.order_type_ext]);\n\n useEffect(() => {\n const element = priceInputContainerRef.current;\n\n if (!element) {\n return;\n }\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n if (width) {\n // update BBO order select dropdown width when priceInputContainerRef width changed\n setPriceInputContainerWidth(width);\n }\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.unobserve(element);\n };\n }, [priceInputContainerRef, order_type_ext]);\n\n return { priceInputContainerRef, priceInputContainerWidth };\n}\n","import React from \"react\";\nimport {\n OrderEntryScriptInputs,\n useOrderEntryScript,\n} from \"./orderEntry.script\";\nimport { OrderEntry } from \"./orderEntry.ui\";\n\nexport const OrderEntryWidget: React.FC<\n OrderEntryScriptInputs & {\n containerRef?: React.RefObject<HTMLDivElement>;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n }\n> = (props) => {\n const state = useOrderEntryScript(props);\n return (\n <OrderEntry\n {...state}\n containerRef={props.containerRef}\n disableFeatures={props.disableFeatures}\n />\n );\n};\n"]}
|