@excalidraw/excalidraw 0.17.1 → 0.17.3

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.
Files changed (1249) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/excalidraw-assets-dev/{vendor-d4c6c37cb71cd8cde431.js → vendor-1e45dd9aba63a718dcee.js} +2 -2
  3. package/dist/excalidraw-with-preact.development.js +6 -6
  4. package/dist/excalidraw-with-preact.production.min.js +1 -1
  5. package/dist/excalidraw.development.js +6 -6
  6. package/dist/excalidraw.production.min.js +1 -1
  7. package/package.json +1 -1
  8. package/types/element/newElement.d.ts +1 -1
  9. package/types/actions/actionToggleLock.d.ts +0 -119
  10. package/types/bug-issue-template.d.ts +0 -2
  11. package/types/components/ActiveFile.d.ts +0 -7
  12. package/types/components/ClearCanvas.d.ts +0 -4
  13. package/types/components/CollabButton.d.ts +0 -7
  14. package/types/components/ColorPicker.d.ts +0 -14
  15. package/types/components/LibraryButton.d.ts +0 -8
  16. package/types/components/MenuItem.d.ts +0 -11
  17. package/types/components/MenuUtils.d.ts +0 -2
  18. package/types/components/SingleLibraryItem.d.ts +0 -10
  19. package/types/components/TopErrorBoundary.d.ts +0 -15
  20. package/types/components/WelcomeScreen.d.ts +0 -8
  21. package/types/components/WelcomeScreenDecor.d.ts +0 -6
  22. package/types/components/context/tunnels.d.ts +0 -16
  23. package/types/components/dropdownMenu/DropdownMenuSub.d.ts +0 -33
  24. package/types/components/dropdownMenu/DropdownMenuSubContent.d.ts +0 -8
  25. package/types/components/dropdownMenu/DropdownMenuSubItem.d.ts +0 -12
  26. package/types/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +0 -10
  27. package/types/components/hoc/withUpstreamOverride.d.ts +0 -10
  28. package/types/components/mainMenu/DefaultItems.d.ts +0 -44
  29. package/types/components/mainMenu/MainMenu.d.ts +0 -44
  30. package/types/excalidraw-app/CustomStats.d.ts +0 -9
  31. package/types/excalidraw-app/app_constants.d.ts +0 -32
  32. package/types/excalidraw-app/collab/Collab.d.ts +0 -163
  33. package/types/excalidraw-app/collab/Portal.d.ts +0 -28
  34. package/types/excalidraw-app/collab/RoomDialog.d.ts +0 -13
  35. package/types/excalidraw-app/collab/reconciliation.d.ts +0 -10
  36. package/types/excalidraw-app/components/EncryptedIcon.d.ts +0 -1
  37. package/types/excalidraw-app/components/ExcalidrawPlusAppLink.d.ts +0 -1
  38. package/types/excalidraw-app/components/ExportToExcalidrawPlus.d.ts +0 -9
  39. package/types/excalidraw-app/components/LanguageList.d.ts +0 -4
  40. package/types/excalidraw-app/components/icons.d.ts +0 -1
  41. package/types/excalidraw-app/data/FileManager.d.ts +0 -66
  42. package/types/excalidraw-app/data/LocalData.d.ts +0 -32
  43. package/types/excalidraw-app/data/Locker.d.ts +0 -8
  44. package/types/excalidraw-app/data/firebase.d.ts +0 -25
  45. package/types/excalidraw-app/data/index.d.ts +0 -183
  46. package/types/excalidraw-app/data/localStorage.d.ts +0 -109
  47. package/types/excalidraw-app/data/tabSync.d.ts +0 -9
  48. package/types/excalidraw-app/index.d.ts +0 -26
  49. package/types/packages/excalidraw/dist/3145.d.ts +0 -0
  50. package/types/packages/excalidraw/dist/8515.d.ts +0 -0
  51. package/types/packages/excalidraw/dist/excalidraw-assets/0-ad5a1bcaae1f904451f6.d.ts +0 -0
  52. package/types/packages/excalidraw/dist/excalidraw-assets/100-ee956408a6ae91443fe4.d.ts +0 -0
  53. package/types/packages/excalidraw/dist/excalidraw-assets/113-1177b57ebb1ae4a5ab42.d.ts +0 -0
  54. package/types/packages/excalidraw/dist/excalidraw-assets/113-3f540c6affa81c85fafb.d.ts +0 -0
  55. package/types/packages/excalidraw/dist/excalidraw-assets/123-51e78947de710c7c11bb.d.ts +0 -0
  56. package/types/packages/excalidraw/dist/excalidraw-assets/1389-777728fa996db57a2ce0.d.ts +0 -0
  57. package/types/packages/excalidraw/dist/excalidraw-assets/1413-8a64f55a922cdcbd52e9.d.ts +0 -0
  58. package/types/packages/excalidraw/dist/excalidraw-assets/1486-c03ed79ce5ed488070dc.d.ts +0 -0
  59. package/types/packages/excalidraw/dist/excalidraw-assets/1524-08538a05b850a3036ce5.d.ts +0 -0
  60. package/types/packages/excalidraw/dist/excalidraw-assets/1768-ad1714c7528580d8d26e.d.ts +0 -0
  61. package/types/packages/excalidraw/dist/excalidraw-assets/185-f9b3b879e1f40c301cd4.d.ts +0 -0
  62. package/types/packages/excalidraw/dist/excalidraw-assets/1998-1282b4798a01139dc8b9.d.ts +0 -0
  63. package/types/packages/excalidraw/dist/excalidraw-assets/2418-439a0957759ac636a25c.d.ts +0 -0
  64. package/types/packages/excalidraw/dist/excalidraw-assets/2418-9c681e5907e1a7f093f9.d.ts +0 -0
  65. package/types/packages/excalidraw/dist/excalidraw-assets/248-275bedf6a41de91e2b75.d.ts +0 -0
  66. package/types/packages/excalidraw/dist/excalidraw-assets/2699-04b5ecb5a54dcbea702f.d.ts +0 -0
  67. package/types/packages/excalidraw/dist/excalidraw-assets/2809-0b8c02cfee8b6d9dc3a0.d.ts +0 -0
  68. package/types/packages/excalidraw/dist/excalidraw-assets/2809-27fc025a92a9e4ce6393.d.ts +0 -0
  69. package/types/packages/excalidraw/dist/excalidraw-assets/2809-8da3a3f40d253d28c3f1.d.ts +0 -0
  70. package/types/packages/excalidraw/dist/excalidraw-assets/3148-33eaabd5fbcbd2f5daf7.d.ts +0 -0
  71. package/types/packages/excalidraw/dist/excalidraw-assets/315-94423c0ffdc4ca02b374.d.ts +0 -0
  72. package/types/packages/excalidraw/dist/excalidraw-assets/315-a3acdb9fc1208a6c5471.d.ts +0 -0
  73. package/types/packages/excalidraw/dist/excalidraw-assets/328-0b9c67a538fd9973b3bd.d.ts +0 -0
  74. package/types/packages/excalidraw/dist/excalidraw-assets/328-73642058fc8101af5ebb.d.ts +0 -0
  75. package/types/packages/excalidraw/dist/excalidraw-assets/3430-d0339c71fee031d90e8d.d.ts +0 -0
  76. package/types/packages/excalidraw/dist/excalidraw-assets/3430-fe45a4aebf1a8513a431.d.ts +0 -0
  77. package/types/packages/excalidraw/dist/excalidraw-assets/349-5a80055b384634838a8f.d.ts +0 -0
  78. package/types/packages/excalidraw/dist/excalidraw-assets/3539-e87b055826a0b8faa98f.d.ts +0 -0
  79. package/types/packages/excalidraw/dist/excalidraw-assets/357-489a6fb9e2f9942873a9.d.ts +0 -0
  80. package/types/packages/excalidraw/dist/excalidraw-assets/357-5f634810fe92d71bd89c.d.ts +0 -0
  81. package/types/packages/excalidraw/dist/excalidraw-assets/3724-0b4d6ac8677b287d8eda.d.ts +0 -0
  82. package/types/packages/excalidraw/dist/excalidraw-assets/3948-2e4bb81ff6180a4d14e7.d.ts +0 -0
  83. package/types/packages/excalidraw/dist/excalidraw-assets/3948-64cabedbf167de960c6c.d.ts +0 -0
  84. package/types/packages/excalidraw/dist/excalidraw-assets/4024-9a3842539a2e52e17907.d.ts +0 -0
  85. package/types/packages/excalidraw/dist/excalidraw-assets/4036-9b0fef5eba7479644904.d.ts +0 -0
  86. package/types/packages/excalidraw/dist/excalidraw-assets/4036-a6ded6a16c3d8401fddc.d.ts +0 -0
  87. package/types/packages/excalidraw/dist/excalidraw-assets/418-855bc792a206853599e9.d.ts +0 -0
  88. package/types/packages/excalidraw/dist/excalidraw-assets/4194-86b0180b6c8dd41b51e9.d.ts +0 -0
  89. package/types/packages/excalidraw/dist/excalidraw-assets/430-d18f78f4c54d44e2f183.d.ts +0 -0
  90. package/types/packages/excalidraw/dist/excalidraw-assets/431-b46d06bb6224e64c467a.d.ts +0 -0
  91. package/types/packages/excalidraw/dist/excalidraw-assets/431-d69c03e10942d04db7f1.d.ts +0 -0
  92. package/types/packages/excalidraw/dist/excalidraw-assets/445-3dca5550de6c6a3c6b2e.d.ts +0 -0
  93. package/types/packages/excalidraw/dist/excalidraw-assets/453-4eba68e311bf89951319.d.ts +0 -0
  94. package/types/packages/excalidraw/dist/excalidraw-assets/453-821ac85757ac165cadb1.d.ts +0 -0
  95. package/types/packages/excalidraw/dist/excalidraw-assets/455-781bceffd24276fc1f4a.d.ts +0 -0
  96. package/types/packages/excalidraw/dist/excalidraw-assets/4881-4ccd6db636fab9e44519.d.ts +0 -0
  97. package/types/packages/excalidraw/dist/excalidraw-assets/4946-0b98a36ce9bc404b25f3.d.ts +0 -0
  98. package/types/packages/excalidraw/dist/excalidraw-assets/4946-34a258033fc93182d93c.d.ts +0 -0
  99. package/types/packages/excalidraw/dist/excalidraw-assets/5123-4e35c29ac5437254d305.d.ts +0 -0
  100. package/types/packages/excalidraw/dist/excalidraw-assets/5123-daebd9b6b87e1bbe78f4.d.ts +0 -0
  101. package/types/packages/excalidraw/dist/excalidraw-assets/5248-d356fa1109e1dbcc3dcc.d.ts +0 -0
  102. package/types/packages/excalidraw/dist/excalidraw-assets/5248-f8f0ebb2164542e9022c.d.ts +0 -0
  103. package/types/packages/excalidraw/dist/excalidraw-assets/5349-3a48a0033517d8decee0.d.ts +0 -0
  104. package/types/packages/excalidraw/dist/excalidraw-assets/5349-ebf41289e749ef013603.d.ts +0 -0
  105. package/types/packages/excalidraw/dist/excalidraw-assets/5526-fd1695851005cc52a2e9.d.ts +0 -0
  106. package/types/packages/excalidraw/dist/excalidraw-assets/5763-592131398eb218ec94ae.d.ts +0 -0
  107. package/types/packages/excalidraw/dist/excalidraw-assets/582-27eb83dbb30ec4ce8690.d.ts +0 -0
  108. package/types/packages/excalidraw/dist/excalidraw-assets/5891-0e64b1825f1881d915fe.d.ts +0 -0
  109. package/types/packages/excalidraw/dist/excalidraw-assets/5891-7451b2baef69037183a4.d.ts +0 -0
  110. package/types/packages/excalidraw/dist/excalidraw-assets/5891-d9f1805bab3295e4fa0f.d.ts +0 -0
  111. package/types/packages/excalidraw/dist/excalidraw-assets/5914-9cf1811001d6ecb7560d.d.ts +0 -0
  112. package/types/packages/excalidraw/dist/excalidraw-assets/6185-202fa6b37d1f5eb9bb86.d.ts +0 -0
  113. package/types/packages/excalidraw/dist/excalidraw-assets/6185-425cfc549fa5a585c209.d.ts +0 -0
  114. package/types/packages/excalidraw/dist/excalidraw-assets/6689-7252dec1c1497ff4b08d.d.ts +0 -0
  115. package/types/packages/excalidraw/dist/excalidraw-assets/6708-16821f489c8851acc5af.d.ts +0 -0
  116. package/types/packages/excalidraw/dist/excalidraw-assets/6787-fdae1cf01637e3590c46.d.ts +0 -0
  117. package/types/packages/excalidraw/dist/excalidraw-assets/6956-1e3ae1b5da724446de5b.d.ts +0 -0
  118. package/types/packages/excalidraw/dist/excalidraw-assets/6956-402dbe89c709049b8db9.d.ts +0 -0
  119. package/types/packages/excalidraw/dist/excalidraw-assets/6956-cbc6925f843f966d36ce.d.ts +0 -0
  120. package/types/packages/excalidraw/dist/excalidraw-assets/7000-51ba5b1dafa77754e79d.d.ts +0 -0
  121. package/types/packages/excalidraw/dist/excalidraw-assets/7000-87e6892703f1bb896675.d.ts +0 -0
  122. package/types/packages/excalidraw/dist/excalidraw-assets/7000-efb2d6821af4b5095e6c.d.ts +0 -0
  123. package/types/packages/excalidraw/dist/excalidraw-assets/722-42a3ef6a85c94be1583b.d.ts +0 -0
  124. package/types/packages/excalidraw/dist/excalidraw-assets/722-8aaaa7eaf9fa51947f24.d.ts +0 -0
  125. package/types/packages/excalidraw/dist/excalidraw-assets/724-8ceb13efcbe37ed57670.d.ts +0 -0
  126. package/types/packages/excalidraw/dist/excalidraw-assets/7464-0aed66befef89a37da85.d.ts +0 -0
  127. package/types/packages/excalidraw/dist/excalidraw-assets/7464-379c4ae241963795b61b.d.ts +0 -0
  128. package/types/packages/excalidraw/dist/excalidraw-assets/7581-208a591609e15b99a63a.d.ts +0 -0
  129. package/types/packages/excalidraw/dist/excalidraw-assets/7693-513241204c51311b320c.d.ts +0 -0
  130. package/types/packages/excalidraw/dist/excalidraw-assets/7693-97b7759f80ce5d113298.d.ts +0 -0
  131. package/types/packages/excalidraw/dist/excalidraw-assets/787-be9c869e7d7271841498.d.ts +0 -0
  132. package/types/packages/excalidraw/dist/excalidraw-assets/797-ab7845cca84cb7bff6f5.d.ts +0 -0
  133. package/types/packages/excalidraw/dist/excalidraw-assets/809-92fa1800a841eadac4b9.d.ts +0 -0
  134. package/types/packages/excalidraw/dist/excalidraw-assets/8164-a74eaee76495e40c7a07.d.ts +0 -0
  135. package/types/packages/excalidraw/dist/excalidraw-assets/832-02dea61ec29eaf266a2f.d.ts +0 -0
  136. package/types/packages/excalidraw/dist/excalidraw-assets/8455-081e09145375ef09ed0b.d.ts +0 -0
  137. package/types/packages/excalidraw/dist/excalidraw-assets/8455-12b0b57f9a9eedb8e2d1.d.ts +0 -0
  138. package/types/packages/excalidraw/dist/excalidraw-assets/8494-388800034d846ba48e92.d.ts +0 -0
  139. package/types/packages/excalidraw/dist/excalidraw-assets/8787-5393f3338cbe90c7b46c.d.ts +0 -0
  140. package/types/packages/excalidraw/dist/excalidraw-assets/8787-647baa009bc2d705d45e.d.ts +0 -0
  141. package/types/packages/excalidraw/dist/excalidraw-assets/8832-893ebf883cfc11063d32.d.ts +0 -0
  142. package/types/packages/excalidraw/dist/excalidraw-assets/8832-f6f14a3bda1806f7bd6e.d.ts +0 -0
  143. package/types/packages/excalidraw/dist/excalidraw-assets/8832-f7525b08a6e288020b0d.d.ts +0 -0
  144. package/types/packages/excalidraw/dist/excalidraw-assets/891-9f297e64494feaebfc3f.d.ts +0 -0
  145. package/types/packages/excalidraw/dist/excalidraw-assets/895-5d086be2f88a610bac3b.d.ts +0 -0
  146. package/types/packages/excalidraw/dist/excalidraw-assets/895-ba0eff504ebb071cc11a.d.ts +0 -0
  147. package/types/packages/excalidraw/dist/excalidraw-assets/927-5310cd2df4ad33af183e.d.ts +0 -0
  148. package/types/packages/excalidraw/dist/excalidraw-assets/927-f5a50f091a6379ad54f2.d.ts +0 -0
  149. package/types/packages/excalidraw/dist/excalidraw-assets/9445-278b87ff5a1590d3da09.d.ts +0 -0
  150. package/types/packages/excalidraw/dist/excalidraw-assets/946-0c23ccd05f4aa7242283.d.ts +0 -0
  151. package/types/packages/excalidraw/dist/excalidraw-assets/956-48e31d2d4c8fc184b88a.d.ts +0 -0
  152. package/types/packages/excalidraw/dist/excalidraw-assets/9577-09dbe7a2f393366867e4.d.ts +0 -0
  153. package/types/packages/excalidraw/dist/excalidraw-assets/9582-619140c5d47bcd586310.d.ts +0 -0
  154. package/types/packages/excalidraw/dist/excalidraw-assets/9582-71a10d7a16e75a0a18f3.d.ts +0 -0
  155. package/types/packages/excalidraw/dist/excalidraw-assets/bug-issue-template-7628a1d844446e5ca713.d.ts +0 -0
  156. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ar-SA-json-06d4bd2f3a164162f2b8.d.ts +0 -0
  157. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ar-SA-json-1bb6302a93fa38d23d93.d.ts +0 -0
  158. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ar-SA-json-20b8359339093c0d55e4.d.ts +0 -0
  159. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ar-SA-json-6c06adbd0d9d02eac2b2.d.ts +0 -0
  160. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ar-SA-json-7880ce61551376011ec8.d.ts +0 -0
  161. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ar-SA-json-7917b25a9d62d616fcc5.d.ts +0 -0
  162. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ar-SA-json-b9c75e6743e089f51f9b.d.ts +0 -0
  163. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ar-SA-json-ebd2fb41664a101f0c07.d.ts +0 -0
  164. package/types/packages/excalidraw/dist/excalidraw-assets/locales/az-AZ-json-189f5418fd6ecc4b80e7.d.ts +0 -0
  165. package/types/packages/excalidraw/dist/excalidraw-assets/locales/az-AZ-json-32268e2c7ad89fce5d2c.d.ts +0 -0
  166. package/types/packages/excalidraw/dist/excalidraw-assets/locales/az-AZ-json-95ab85135314fce51ccc.d.ts +0 -0
  167. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bg-BG-json-04c32894a53ff1b841f2.d.ts +0 -0
  168. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bg-BG-json-0d8dbcb99870971021ee.d.ts +0 -0
  169. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bg-BG-json-143258eabf8ef7ec5e77.d.ts +0 -0
  170. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bg-BG-json-44988db4fe7f7bee07bc.d.ts +0 -0
  171. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bg-BG-json-53f3c1f9f00040cafd2c.d.ts +0 -0
  172. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bg-BG-json-72ac7b7548d7fefdcd2a.d.ts +0 -0
  173. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bg-BG-json-a1facb11dbb377c90536.d.ts +0 -0
  174. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bg-BG-json-ff5ef83d3c2706367417.d.ts +0 -0
  175. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bn-BD-json-634967cdb3ba0649af4d.d.ts +0 -0
  176. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bn-BD-json-759924ef13bd9e602cb3.d.ts +0 -0
  177. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bn-BD-json-7ff651d150881fbbfb13.d.ts +0 -0
  178. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bn-BD-json-87b3aebd833413ec69fb.d.ts +0 -0
  179. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bn-BD-json-c8a37406c9152cd7acf4.d.ts +0 -0
  180. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bn-BD-json-e2b7f233baf2dcd84360.d.ts +0 -0
  181. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bn-BD-json-f7ee4adf1477b5385c0b.d.ts +0 -0
  182. package/types/packages/excalidraw/dist/excalidraw-assets/locales/bn-BD-json-f9b1344b2f5c0ab53ce8.d.ts +0 -0
  183. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ca-ES-json-2526e4d277313d9fa2ba.d.ts +0 -0
  184. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ca-ES-json-319bfc63af7c5cf7ec18.d.ts +0 -0
  185. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ca-ES-json-4d5527dd80e208ef2522.d.ts +0 -0
  186. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ca-ES-json-55c9b183f935a5d11aca.d.ts +0 -0
  187. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ca-ES-json-6108f4ae0be3d1e369a6.d.ts +0 -0
  188. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ca-ES-json-7cd4f86fb6ea67ac9b66.d.ts +0 -0
  189. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ca-ES-json-d4a1f01f8c174c315974.d.ts +0 -0
  190. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ca-ES-json-d5ae178e89b6c667f9a0.d.ts +0 -0
  191. package/types/packages/excalidraw/dist/excalidraw-assets/locales/cs-CZ-json-03e03422bf616825e4de.d.ts +0 -0
  192. package/types/packages/excalidraw/dist/excalidraw-assets/locales/cs-CZ-json-1ae99f296c9febb99f72.d.ts +0 -0
  193. package/types/packages/excalidraw/dist/excalidraw-assets/locales/cs-CZ-json-3ff3ea69ff9ae725c469.d.ts +0 -0
  194. package/types/packages/excalidraw/dist/excalidraw-assets/locales/cs-CZ-json-63e64aea4eee696f6560.d.ts +0 -0
  195. package/types/packages/excalidraw/dist/excalidraw-assets/locales/cs-CZ-json-6d90332bcb443eb42802.d.ts +0 -0
  196. package/types/packages/excalidraw/dist/excalidraw-assets/locales/cs-CZ-json-806bf1bb13213e333674.d.ts +0 -0
  197. package/types/packages/excalidraw/dist/excalidraw-assets/locales/cs-CZ-json-9eb9864732272e7dd3e5.d.ts +0 -0
  198. package/types/packages/excalidraw/dist/excalidraw-assets/locales/cs-CZ-json-ff1b9bbfe92356698245.d.ts +0 -0
  199. package/types/packages/excalidraw/dist/excalidraw-assets/locales/da-DK-json-3537795fe77f731fa73b.d.ts +0 -0
  200. package/types/packages/excalidraw/dist/excalidraw-assets/locales/da-DK-json-4f8e7ffffcfe77676372.d.ts +0 -0
  201. package/types/packages/excalidraw/dist/excalidraw-assets/locales/da-DK-json-52be03e18f1bc98be9c8.d.ts +0 -0
  202. package/types/packages/excalidraw/dist/excalidraw-assets/locales/da-DK-json-aa428b72489c68d3eafe.d.ts +0 -0
  203. package/types/packages/excalidraw/dist/excalidraw-assets/locales/da-DK-json-ac982a0c1e02b45f9500.d.ts +0 -0
  204. package/types/packages/excalidraw/dist/excalidraw-assets/locales/da-DK-json-d3633cf24300764ec674.d.ts +0 -0
  205. package/types/packages/excalidraw/dist/excalidraw-assets/locales/da-DK-json-d6ab0523c9f9ac4d4c9e.d.ts +0 -0
  206. package/types/packages/excalidraw/dist/excalidraw-assets/locales/da-DK-json-ed85a6f48e1df51b1b46.d.ts +0 -0
  207. package/types/packages/excalidraw/dist/excalidraw-assets/locales/de-DE-json-1335b7dc7abe28365271.d.ts +0 -0
  208. package/types/packages/excalidraw/dist/excalidraw-assets/locales/de-DE-json-1e0ab10e858bdd7cd5c7.d.ts +0 -0
  209. package/types/packages/excalidraw/dist/excalidraw-assets/locales/de-DE-json-9ee7f888aa463032fc1c.d.ts +0 -0
  210. package/types/packages/excalidraw/dist/excalidraw-assets/locales/de-DE-json-a3222d8a9ed4864ccedf.d.ts +0 -0
  211. package/types/packages/excalidraw/dist/excalidraw-assets/locales/de-DE-json-d3be08a6c1c77da3217b.d.ts +0 -0
  212. package/types/packages/excalidraw/dist/excalidraw-assets/locales/de-DE-json-f02ac029c64432725793.d.ts +0 -0
  213. package/types/packages/excalidraw/dist/excalidraw-assets/locales/de-DE-json-f70dfb7201a16dc3f9fc.d.ts +0 -0
  214. package/types/packages/excalidraw/dist/excalidraw-assets/locales/el-GR-json-041566c45d784db853b3.d.ts +0 -0
  215. package/types/packages/excalidraw/dist/excalidraw-assets/locales/el-GR-json-1e030118d23307b7ca92.d.ts +0 -0
  216. package/types/packages/excalidraw/dist/excalidraw-assets/locales/el-GR-json-72b6ce23553a9c8e270b.d.ts +0 -0
  217. package/types/packages/excalidraw/dist/excalidraw-assets/locales/el-GR-json-79f7d66730b39df84f8e.d.ts +0 -0
  218. package/types/packages/excalidraw/dist/excalidraw-assets/locales/el-GR-json-7c44f217b4928b0b59c4.d.ts +0 -0
  219. package/types/packages/excalidraw/dist/excalidraw-assets/locales/el-GR-json-8cc1609bd088ec4f197a.d.ts +0 -0
  220. package/types/packages/excalidraw/dist/excalidraw-assets/locales/el-GR-json-908e098345bfe344ced8.d.ts +0 -0
  221. package/types/packages/excalidraw/dist/excalidraw-assets/locales/el-GR-json-dbefbe1435eb60114eb6.d.ts +0 -0
  222. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-124029c5c7386ccbce1c.d.ts +0 -0
  223. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-47d0ae898ef2c67ce309.d.ts +0 -0
  224. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-48638f55b72a2e52aabe.d.ts +0 -0
  225. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-4f3da97feff33cb00e6d.d.ts +0 -0
  226. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-682b92427b8b27bb0aa8.d.ts +0 -0
  227. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-8791f8a3ec6253466a9b.d.ts +0 -0
  228. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-bce3ffccc2d4f618c802.d.ts +0 -0
  229. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-c1f2257ac1f4cf4ae735.d.ts +0 -0
  230. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-eee803809b86a9619a29.d.ts +0 -0
  231. package/types/packages/excalidraw/dist/excalidraw-assets/locales/es-ES-json-f2467c6a875a9e288756.d.ts +0 -0
  232. package/types/packages/excalidraw/dist/excalidraw-assets/locales/eu-ES-json-1cc77079b354b962615f.d.ts +0 -0
  233. package/types/packages/excalidraw/dist/excalidraw-assets/locales/eu-ES-json-2debb0a180f671e8c417.d.ts +0 -0
  234. package/types/packages/excalidraw/dist/excalidraw-assets/locales/eu-ES-json-31f3b78ca505730777ed.d.ts +0 -0
  235. package/types/packages/excalidraw/dist/excalidraw-assets/locales/eu-ES-json-5533c5bc25f2a8c5f167.d.ts +0 -0
  236. package/types/packages/excalidraw/dist/excalidraw-assets/locales/eu-ES-json-5720590cf9a63067baf3.d.ts +0 -0
  237. package/types/packages/excalidraw/dist/excalidraw-assets/locales/eu-ES-json-94f1d5fdfee449a29705.d.ts +0 -0
  238. package/types/packages/excalidraw/dist/excalidraw-assets/locales/eu-ES-json-f959c593c0f00edff67b.d.ts +0 -0
  239. package/types/packages/excalidraw/dist/excalidraw-assets/locales/eu-ES-json-f9efd2bf2555bceb526a.d.ts +0 -0
  240. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fa-IR-json-10a870520551a183f2d7.d.ts +0 -0
  241. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fa-IR-json-1a48b1b4d36c56bc98b2.d.ts +0 -0
  242. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fa-IR-json-586a1324f942d89620b6.d.ts +0 -0
  243. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fa-IR-json-5a4de9617f16bd36abf9.d.ts +0 -0
  244. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fa-IR-json-6377cea468f09539260f.d.ts +0 -0
  245. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fa-IR-json-901375a61be9b3ebce1d.d.ts +0 -0
  246. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fa-IR-json-97bb57d1147c72892c68.d.ts +0 -0
  247. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fa-IR-json-abcad5d329ac9558750e.d.ts +0 -0
  248. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fi-FI-json-192a5cc851541797f756.d.ts +0 -0
  249. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fi-FI-json-5f4fce8f7a54b9660c99.d.ts +0 -0
  250. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fi-FI-json-6353e444c17d44bae461.d.ts +0 -0
  251. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fi-FI-json-7250174bb3682c3ee602.d.ts +0 -0
  252. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fi-FI-json-8941c5209ec2fe54175f.d.ts +0 -0
  253. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fi-FI-json-a3f9ff6f42d18d749cea.d.ts +0 -0
  254. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fi-FI-json-b5f1567c3ca0a897e452.d.ts +0 -0
  255. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fi-FI-json-d43636fb51002f55e2a4.d.ts +0 -0
  256. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fr-FR-json-68052da0ebafb9f1909f.d.ts +0 -0
  257. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fr-FR-json-9a524eca06b781609d92.d.ts +0 -0
  258. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fr-FR-json-a7f8d76d690714b6eb78.d.ts +0 -0
  259. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fr-FR-json-b5ea877625968f748b7f.d.ts +0 -0
  260. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fr-FR-json-cb24197bbfb2a4788fde.d.ts +0 -0
  261. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fr-FR-json-f350482e7da034549dbf.d.ts +0 -0
  262. package/types/packages/excalidraw/dist/excalidraw-assets/locales/fr-FR-json-f82759a1bc767e0889bd.d.ts +0 -0
  263. package/types/packages/excalidraw/dist/excalidraw-assets/locales/gl-ES-json-152d0b099ec8f3e92986.d.ts +0 -0
  264. package/types/packages/excalidraw/dist/excalidraw-assets/locales/gl-ES-json-2117445509ba7c479ee0.d.ts +0 -0
  265. package/types/packages/excalidraw/dist/excalidraw-assets/locales/gl-ES-json-24ddd1aea2914489d66b.d.ts +0 -0
  266. package/types/packages/excalidraw/dist/excalidraw-assets/locales/gl-ES-json-8408403b5df17158e269.d.ts +0 -0
  267. package/types/packages/excalidraw/dist/excalidraw-assets/locales/gl-ES-json-bff1413c13a0b907cd6d.d.ts +0 -0
  268. package/types/packages/excalidraw/dist/excalidraw-assets/locales/gl-ES-json-c54966edc31ab5d6917e.d.ts +0 -0
  269. package/types/packages/excalidraw/dist/excalidraw-assets/locales/gl-ES-json-efa2a7afe9e96f9e3f3e.d.ts +0 -0
  270. package/types/packages/excalidraw/dist/excalidraw-assets/locales/gl-ES-json-f2cfc131a1585df53888.d.ts +0 -0
  271. package/types/packages/excalidraw/dist/excalidraw-assets/locales/he-IL-json-0a140148a521e80ef951.d.ts +0 -0
  272. package/types/packages/excalidraw/dist/excalidraw-assets/locales/he-IL-json-2686abc8b155be579d06.d.ts +0 -0
  273. package/types/packages/excalidraw/dist/excalidraw-assets/locales/he-IL-json-2e5cea590dd00f76b42f.d.ts +0 -0
  274. package/types/packages/excalidraw/dist/excalidraw-assets/locales/he-IL-json-3280be0edae615c7685f.d.ts +0 -0
  275. package/types/packages/excalidraw/dist/excalidraw-assets/locales/he-IL-json-3c35f4b2962e3609017e.d.ts +0 -0
  276. package/types/packages/excalidraw/dist/excalidraw-assets/locales/he-IL-json-990bb8880202c20c3785.d.ts +0 -0
  277. package/types/packages/excalidraw/dist/excalidraw-assets/locales/he-IL-json-b892c5cb5828ae59d407.d.ts +0 -0
  278. package/types/packages/excalidraw/dist/excalidraw-assets/locales/he-IL-json-bcfe172e6fc193bbf5f1.d.ts +0 -0
  279. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-33a69bbfe9268d9133d4.d.ts +0 -0
  280. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-3898c9c1216b44476529.d.ts +0 -0
  281. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-39b76db3f7abc53a54d2.d.ts +0 -0
  282. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-532e91c58a2a4d1f1d79.d.ts +0 -0
  283. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-a86588d386d42bea67ad.d.ts +0 -0
  284. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-dad8ce15f9b7a435a926.d.ts +0 -0
  285. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-e22f4ad73126c2971850.d.ts +0 -0
  286. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-efc9f7ef04774f58cbad.d.ts +0 -0
  287. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hi-IN-json-fa6d3964054b114046c0.d.ts +0 -0
  288. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hu-HU-json-1b5028b3a2676b3e7bde.d.ts +0 -0
  289. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hu-HU-json-3b647d54caa9cd086abc.d.ts +0 -0
  290. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hu-HU-json-3e1fd56fcc0d67127a79.d.ts +0 -0
  291. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hu-HU-json-545e1923f5ad1c94c6ab.d.ts +0 -0
  292. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hu-HU-json-636059732ee89c1c92d7.d.ts +0 -0
  293. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hu-HU-json-6ccf0d8a164ecec52187.d.ts +0 -0
  294. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hu-HU-json-9eced03fca421da9dc33.d.ts +0 -0
  295. package/types/packages/excalidraw/dist/excalidraw-assets/locales/hu-HU-json-ec488d80d0a50ac94743.d.ts +0 -0
  296. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-0e69caf5d919807ed234.d.ts +0 -0
  297. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-41353abc8704e1038943.d.ts +0 -0
  298. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-43d505d7071a0e359681.d.ts +0 -0
  299. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-6031eb8be253b20c28e9.d.ts +0 -0
  300. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-7aae0423987e3f6e37c9.d.ts +0 -0
  301. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-7b86bce77d4d5a362f05.d.ts +0 -0
  302. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-7d938493c5aa6afef186.d.ts +0 -0
  303. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-b2365a8dfc32c19a9827.d.ts +0 -0
  304. package/types/packages/excalidraw/dist/excalidraw-assets/locales/id-ID-json-b724e9ec875dd8ffee62.d.ts +0 -0
  305. package/types/packages/excalidraw/dist/excalidraw-assets/locales/it-IT-json-446b14f993000d0f572f.d.ts +0 -0
  306. package/types/packages/excalidraw/dist/excalidraw-assets/locales/it-IT-json-4e385faed32727fe36ce.d.ts +0 -0
  307. package/types/packages/excalidraw/dist/excalidraw-assets/locales/it-IT-json-781eb695d0817b01d76f.d.ts +0 -0
  308. package/types/packages/excalidraw/dist/excalidraw-assets/locales/it-IT-json-9423dbb2f3510f7a9e78.d.ts +0 -0
  309. package/types/packages/excalidraw/dist/excalidraw-assets/locales/it-IT-json-9ecc203d696bd8ab1e5c.d.ts +0 -0
  310. package/types/packages/excalidraw/dist/excalidraw-assets/locales/it-IT-json-a1526e95ebe4c2156ffb.d.ts +0 -0
  311. package/types/packages/excalidraw/dist/excalidraw-assets/locales/it-IT-json-a909a4d4bb19af207fff.d.ts +0 -0
  312. package/types/packages/excalidraw/dist/excalidraw-assets/locales/it-IT-json-b14da0116f6f5e0712e9.d.ts +0 -0
  313. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ja-JP-json-323f591c38869b307b87.d.ts +0 -0
  314. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ja-JP-json-3ca539ebaf199164dd7f.d.ts +0 -0
  315. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ja-JP-json-5ad34302e890d7e34a47.d.ts +0 -0
  316. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ja-JP-json-9e961616beed862eac56.d.ts +0 -0
  317. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ja-JP-json-b7b0079dca8ece2551c7.d.ts +0 -0
  318. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ja-JP-json-ed349748677b7b9c99eb.d.ts +0 -0
  319. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ja-JP-json-ef6ec5abb0c3c53c7a51.d.ts +0 -0
  320. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ja-JP-json-fe7beb29f046cf979c5a.d.ts +0 -0
  321. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kaa-json-9f53b94f867da184baea.d.ts +0 -0
  322. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kaa-json-ac1f4f50b9d889b7b8c6.d.ts +0 -0
  323. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kaa-json-b2f03ae2f239b9fae304.d.ts +0 -0
  324. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kab-KAB-json-17519996c12e47f5fded.d.ts +0 -0
  325. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kab-KAB-json-2d1204c965bc93f5754b.d.ts +0 -0
  326. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kab-KAB-json-4cd28c882b4db23990d8.d.ts +0 -0
  327. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kab-KAB-json-69853849c71eff277ba0.d.ts +0 -0
  328. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kab-KAB-json-7941c7649f7cf319f9fa.d.ts +0 -0
  329. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kab-KAB-json-8a859cf6ef556b4cb21a.d.ts +0 -0
  330. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kab-KAB-json-cfa9b0d85d8026ba7d23.d.ts +0 -0
  331. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kab-KAB-json-e8618205ea49417e5fb4.d.ts +0 -0
  332. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-0d11cd6204ccf3fe525f.d.ts +0 -0
  333. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-106d2a41c68f69765668.d.ts +0 -0
  334. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-1f9df2b51e34996bad30.d.ts +0 -0
  335. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-31eb6ba41a19136eff88.d.ts +0 -0
  336. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-34a913b2b552691de36c.d.ts +0 -0
  337. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-54b696e36d8ecb99f663.d.ts +0 -0
  338. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-99a76a48916e784a3941.d.ts +0 -0
  339. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-f648362328b839e9313f.d.ts +0 -0
  340. package/types/packages/excalidraw/dist/excalidraw-assets/locales/kk-KZ-json-f89d72504164df84c087.d.ts +0 -0
  341. package/types/packages/excalidraw/dist/excalidraw-assets/locales/km-KH-json-2ad4c79b6584160ff2b2.d.ts +0 -0
  342. package/types/packages/excalidraw/dist/excalidraw-assets/locales/km-KH-json-7f445f80e19ca90e9998.d.ts +0 -0
  343. package/types/packages/excalidraw/dist/excalidraw-assets/locales/km-KH-json-920cbd8cb9ea3c2ce631.d.ts +0 -0
  344. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ko-KR-json-04089ce24a73ee1c83f0.d.ts +0 -0
  345. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ko-KR-json-15bb3deafeb6d9994aa2.d.ts +0 -0
  346. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ko-KR-json-34efab5d47b95406706a.d.ts +0 -0
  347. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ko-KR-json-3d69fbb43c407fca47d3.d.ts +0 -0
  348. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ko-KR-json-6ee79cc1ac4f34e85f50.d.ts +0 -0
  349. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ko-KR-json-9a0b6ecc5be0f4e98fee.d.ts +0 -0
  350. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ko-KR-json-cf33ecf52ab95055544b.d.ts +0 -0
  351. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ko-KR-json-e5f26d9854a5d68ada0a.d.ts +0 -0
  352. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ku-TR-json-04cd173683d79bb264e7.d.ts +0 -0
  353. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ku-TR-json-05e1c3849ef5154e3157.d.ts +0 -0
  354. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ku-TR-json-186e282f3181862b9e7a.d.ts +0 -0
  355. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ku-TR-json-2608a20f805341b51a6e.d.ts +0 -0
  356. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ku-TR-json-374bbbb0b003a490681d.d.ts +0 -0
  357. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ku-TR-json-6077b8b65644d4b19461.d.ts +0 -0
  358. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ku-TR-json-7f8c5abdd3f7ea7fc945.d.ts +0 -0
  359. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ku-TR-json-d10a4bb9ede3c08a08e1.d.ts +0 -0
  360. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lt-LT-json-07a117096cba0d54446a.d.ts +0 -0
  361. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lt-LT-json-08c7fc343ef2f533ec5f.d.ts +0 -0
  362. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lt-LT-json-0d6150d8b3d418652fe9.d.ts +0 -0
  363. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lt-LT-json-3b6f507ea5233727b386.d.ts +0 -0
  364. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lt-LT-json-9caac0d3530651221c75.d.ts +0 -0
  365. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lt-LT-json-a258da44916407cf694a.d.ts +0 -0
  366. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lt-LT-json-b7e9188e36f165b5bb4a.d.ts +0 -0
  367. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lt-LT-json-f0baeb52b74ec4e2b65e.d.ts +0 -0
  368. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lv-LV-json-1e3a5e87e39d2d90274c.d.ts +0 -0
  369. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lv-LV-json-24ab5a572ca1e9899a88.d.ts +0 -0
  370. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lv-LV-json-5ff95e7961229ff568fb.d.ts +0 -0
  371. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lv-LV-json-6ff0f96956a0ab6a1af7.d.ts +0 -0
  372. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lv-LV-json-7dbbb288da81c4987475.d.ts +0 -0
  373. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lv-LV-json-c31a44bb3a66bf7e2106.d.ts +0 -0
  374. package/types/packages/excalidraw/dist/excalidraw-assets/locales/lv-LV-json-c811870330575e53285c.d.ts +0 -0
  375. package/types/packages/excalidraw/dist/excalidraw-assets/locales/mr-IN-json-018610e3231f3e9bd068.d.ts +0 -0
  376. package/types/packages/excalidraw/dist/excalidraw-assets/locales/mr-IN-json-05294735c64b63223d8e.d.ts +0 -0
  377. package/types/packages/excalidraw/dist/excalidraw-assets/locales/mr-IN-json-069b53ee4b91eda493ce.d.ts +0 -0
  378. package/types/packages/excalidraw/dist/excalidraw-assets/locales/mr-IN-json-25f7150363e7c782986e.d.ts +0 -0
  379. package/types/packages/excalidraw/dist/excalidraw-assets/locales/mr-IN-json-a7a04f967d1b0df28700.d.ts +0 -0
  380. package/types/packages/excalidraw/dist/excalidraw-assets/locales/mr-IN-json-c4ed686e0b29f45551ae.d.ts +0 -0
  381. package/types/packages/excalidraw/dist/excalidraw-assets/locales/mr-IN-json-c922a007bb00d3e4f3b1.d.ts +0 -0
  382. package/types/packages/excalidraw/dist/excalidraw-assets/locales/mr-IN-json-d72d88dfcb51c3668e5b.d.ts +0 -0
  383. package/types/packages/excalidraw/dist/excalidraw-assets/locales/my-MM-json-1a05d5c242c822079dca.d.ts +0 -0
  384. package/types/packages/excalidraw/dist/excalidraw-assets/locales/my-MM-json-354b418b74398f6efb2b.d.ts +0 -0
  385. package/types/packages/excalidraw/dist/excalidraw-assets/locales/my-MM-json-42e19993d78f0511571b.d.ts +0 -0
  386. package/types/packages/excalidraw/dist/excalidraw-assets/locales/my-MM-json-694823d3bc2b0943a916.d.ts +0 -0
  387. package/types/packages/excalidraw/dist/excalidraw-assets/locales/my-MM-json-7a5e168f3c205e6dc827.d.ts +0 -0
  388. package/types/packages/excalidraw/dist/excalidraw-assets/locales/my-MM-json-ae5520774cf5063c0d6c.d.ts +0 -0
  389. package/types/packages/excalidraw/dist/excalidraw-assets/locales/my-MM-json-c3cff6d30b1e629f546f.d.ts +0 -0
  390. package/types/packages/excalidraw/dist/excalidraw-assets/locales/my-MM-json-e35accf714a96ecbf476.d.ts +0 -0
  391. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-4424f16783be9dc1b68c.d.ts +0 -0
  392. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-4f1808f3507956e1afe9.d.ts +0 -0
  393. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-4f22057d9bc9df25cb6a.d.ts +0 -0
  394. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-75cfab63ad7c2ff45f19.d.ts +0 -0
  395. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-769cc81d00c75b0f6585.d.ts +0 -0
  396. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-7ea7ab2356e76889af8d.d.ts +0 -0
  397. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-8d8c782ca1364beebbb7.d.ts +0 -0
  398. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-bf819e799f3bcbcd0f6b.d.ts +0 -0
  399. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nb-NO-json-df3df0be06e3f1bf4b06.d.ts +0 -0
  400. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nl-NL-json-01fa3b9dd189861e48db.d.ts +0 -0
  401. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nl-NL-json-4b701336a4c5c331d25a.d.ts +0 -0
  402. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nl-NL-json-4f8122fee38767f89bd3.d.ts +0 -0
  403. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nl-NL-json-57a2b32c58feb9bae878.d.ts +0 -0
  404. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nl-NL-json-5805f36f33a3f8e53adc.d.ts +0 -0
  405. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nl-NL-json-85d5f44469db5c5e6124.d.ts +0 -0
  406. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nl-NL-json-90ef39ed303967aeb9c2.d.ts +0 -0
  407. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nl-NL-json-e2408c0b590b8987e423.d.ts +0 -0
  408. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nn-NO-json-1a8db0d8c3717d895cc5.d.ts +0 -0
  409. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nn-NO-json-5e0a10f6fe31c9155bd4.d.ts +0 -0
  410. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nn-NO-json-67ff40e2c3eb08ee2368.d.ts +0 -0
  411. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nn-NO-json-72c1151e278eaa3007da.d.ts +0 -0
  412. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nn-NO-json-8209f0f674435b52293d.d.ts +0 -0
  413. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nn-NO-json-c8fc60cb596ea118bcee.d.ts +0 -0
  414. package/types/packages/excalidraw/dist/excalidraw-assets/locales/nn-NO-json-d566f1edbd6be33a70b3.d.ts +0 -0
  415. package/types/packages/excalidraw/dist/excalidraw-assets/locales/oc-FR-json-1d888554c45e5174ede4.d.ts +0 -0
  416. package/types/packages/excalidraw/dist/excalidraw-assets/locales/oc-FR-json-24548a7feecb4c99eaa3.d.ts +0 -0
  417. package/types/packages/excalidraw/dist/excalidraw-assets/locales/oc-FR-json-5774a39c1b0c4c676b1d.d.ts +0 -0
  418. package/types/packages/excalidraw/dist/excalidraw-assets/locales/oc-FR-json-78fba0f25867078ee02f.d.ts +0 -0
  419. package/types/packages/excalidraw/dist/excalidraw-assets/locales/oc-FR-json-925326d13bc187dcd377.d.ts +0 -0
  420. package/types/packages/excalidraw/dist/excalidraw-assets/locales/oc-FR-json-9f77cc0039994979994c.d.ts +0 -0
  421. package/types/packages/excalidraw/dist/excalidraw-assets/locales/oc-FR-json-e90ca79174b6e1eccb72.d.ts +0 -0
  422. package/types/packages/excalidraw/dist/excalidraw-assets/locales/oc-FR-json-ff98e2029afacd5a71e7.d.ts +0 -0
  423. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-08abbf2590eb9e585c48.d.ts +0 -0
  424. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-0ef170e4e8fc90c8b8c0.d.ts +0 -0
  425. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-0fd029451b07248c5194.d.ts +0 -0
  426. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-1854ecccf3c6f8ea9c46.d.ts +0 -0
  427. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-448f5d174c6ac1f9eae2.d.ts +0 -0
  428. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-4727608e172fc670161c.d.ts +0 -0
  429. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-9ec2bd766af522488b44.d.ts +0 -0
  430. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-9ffe63db0e1a6b0274f7.d.ts +0 -0
  431. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-cb5408e8f1874709aa5c.d.ts +0 -0
  432. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-d4f592694e6f6af11450.d.ts +0 -0
  433. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pa-IN-json-d9ee09801ed220840b2b.d.ts +0 -0
  434. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pl-PL-json-474c6d4804d20d89d2dc.d.ts +0 -0
  435. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pl-PL-json-5180dc575281ed9d5e15.d.ts +0 -0
  436. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pl-PL-json-67fbdbdf0ab730d0d9eb.d.ts +0 -0
  437. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pl-PL-json-8d41ca8cad23ad48c767.d.ts +0 -0
  438. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pl-PL-json-9a1b0b7262cd86ab734f.d.ts +0 -0
  439. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pl-PL-json-a8ddc96c59a92fca9d77.d.ts +0 -0
  440. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pl-PL-json-b4be83b26070e4cf70ca.d.ts +0 -0
  441. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pl-PL-json-eec56b7a089b7cb68635.d.ts +0 -0
  442. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-BR-json-1317f88b4d299ad9a2ce.d.ts +0 -0
  443. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-BR-json-1e850bd4508a5abf6aec.d.ts +0 -0
  444. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-BR-json-2b79e2f8dfc749f13152.d.ts +0 -0
  445. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-BR-json-2e7a1690edc8d46e8842.d.ts +0 -0
  446. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-BR-json-62a1095dd13343b61194.d.ts +0 -0
  447. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-BR-json-702df09b285f0ea66503.d.ts +0 -0
  448. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-BR-json-80997877c2c88f481632.d.ts +0 -0
  449. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-BR-json-94fa57d1ac7d244fde4e.d.ts +0 -0
  450. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-PT-json-0d63b7c4b4188b9378b8.d.ts +0 -0
  451. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-PT-json-2ab96d5143b947c7245c.d.ts +0 -0
  452. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-PT-json-37c5101916c53869cd8c.d.ts +0 -0
  453. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-PT-json-5235c5f4796f2fab31ae.d.ts +0 -0
  454. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-PT-json-54e547cc2cd8b0700305.d.ts +0 -0
  455. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-PT-json-6d8fb5092f873fdd74be.d.ts +0 -0
  456. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-PT-json-aba1622a80e32e465a3d.d.ts +0 -0
  457. package/types/packages/excalidraw/dist/excalidraw-assets/locales/pt-PT-json-cc517eed349ce432b054.d.ts +0 -0
  458. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ro-RO-json-162b57c475da796d5a5b.d.ts +0 -0
  459. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ro-RO-json-3397acad1a98b5093c8b.d.ts +0 -0
  460. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ro-RO-json-4740dfa2ef1d58f191dc.d.ts +0 -0
  461. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ro-RO-json-6f6fbe0dacd28213189e.d.ts +0 -0
  462. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ro-RO-json-7e65c3ca40525a2b7f5e.d.ts +0 -0
  463. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ro-RO-json-97f37a829dc90dfcc450.d.ts +0 -0
  464. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ro-RO-json-bdd13022520b63c2e758.d.ts +0 -0
  465. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ro-RO-json-d7e41ef2638d95584d14.d.ts +0 -0
  466. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ru-RU-json-1ac97d5e23a89ebff869.d.ts +0 -0
  467. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ru-RU-json-8ab49e8d0473e92a8ab9.d.ts +0 -0
  468. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ru-RU-json-96975eab7a07d2d6b772.d.ts +0 -0
  469. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ru-RU-json-c7b2021bbfe94a4c3b92.d.ts +0 -0
  470. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ru-RU-json-cf20180d869889c9e654.d.ts +0 -0
  471. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ru-RU-json-cfc347872e181d1335a7.d.ts +0 -0
  472. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ru-RU-json-d465d5f2e2ab8e7d3e1d.d.ts +0 -0
  473. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ru-RU-json-f3368da59c45bb4ea83d.d.ts +0 -0
  474. package/types/packages/excalidraw/dist/excalidraw-assets/locales/si-LK-json-0e496395bea7aa09c12e.d.ts +0 -0
  475. package/types/packages/excalidraw/dist/excalidraw-assets/locales/si-LK-json-1444e979b8c965d31530.d.ts +0 -0
  476. package/types/packages/excalidraw/dist/excalidraw-assets/locales/si-LK-json-5b0bbe1d22e2d6e37d35.d.ts +0 -0
  477. package/types/packages/excalidraw/dist/excalidraw-assets/locales/si-LK-json-674ece30d49390e45733.d.ts +0 -0
  478. package/types/packages/excalidraw/dist/excalidraw-assets/locales/si-LK-json-8fd0cfbf2c34c1a666d7.d.ts +0 -0
  479. package/types/packages/excalidraw/dist/excalidraw-assets/locales/si-LK-json-99d0a5a652dbc68ed47d.d.ts +0 -0
  480. package/types/packages/excalidraw/dist/excalidraw-assets/locales/si-LK-json-db1222db995d9425e281.d.ts +0 -0
  481. package/types/packages/excalidraw/dist/excalidraw-assets/locales/si-LK-json-e13dc6084f655194af4f.d.ts +0 -0
  482. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sk-SK-json-02cfad34246f8cfedd42.d.ts +0 -0
  483. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sk-SK-json-05a75d43e4bffa53061d.d.ts +0 -0
  484. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sk-SK-json-39a1277ee816fa9d9661.d.ts +0 -0
  485. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sk-SK-json-50dcb09552f93c2de3a4.d.ts +0 -0
  486. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sk-SK-json-8edebc008b63305c87e1.d.ts +0 -0
  487. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sk-SK-json-cd3468557b0bce2c8793.d.ts +0 -0
  488. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sk-SK-json-f6694f00a14601aafbc9.d.ts +0 -0
  489. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sl-SI-json-239877b5b4b9450f4ff8.d.ts +0 -0
  490. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sl-SI-json-68eba9ac00ae57bae3f4.d.ts +0 -0
  491. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sl-SI-json-7fff7355941d29976813.d.ts +0 -0
  492. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sl-SI-json-826580e1006547dbbd3b.d.ts +0 -0
  493. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sl-SI-json-956739803bca409172cb.d.ts +0 -0
  494. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sl-SI-json-96a6aef1538281cc4243.d.ts +0 -0
  495. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sl-SI-json-a0dbeb91d8ddbfac8ac1.d.ts +0 -0
  496. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sl-SI-json-c8c152fc0e647c41b0b9.d.ts +0 -0
  497. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-036a58ce76df0ef486f1.d.ts +0 -0
  498. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-0f63ca33e643f47b01fc.d.ts +0 -0
  499. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-209bf1d6aa674d6550df.d.ts +0 -0
  500. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-36b97455521e61312a47.d.ts +0 -0
  501. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-84a855efd030e37f51ab.d.ts +0 -0
  502. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-8930dabe22b7aabb2293.d.ts +0 -0
  503. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-bdf45471677387a015b6.d.ts +0 -0
  504. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-dbe06cf14132b3898415.d.ts +0 -0
  505. package/types/packages/excalidraw/dist/excalidraw-assets/locales/sv-SE-json-efd822b4ee2770a3b369.d.ts +0 -0
  506. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ta-IN-json-4063d11b19f24794564a.d.ts +0 -0
  507. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ta-IN-json-42f4d7224c772d6e2bfd.d.ts +0 -0
  508. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ta-IN-json-489ab902f9b0c9beda2e.d.ts +0 -0
  509. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ta-IN-json-65ab5662735db73d72d6.d.ts +0 -0
  510. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ta-IN-json-860e88f005450b4f47b0.d.ts +0 -0
  511. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ta-IN-json-e215bca042782bf1aafb.d.ts +0 -0
  512. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ta-IN-json-f59f50c4b8f2b2fee8ca.d.ts +0 -0
  513. package/types/packages/excalidraw/dist/excalidraw-assets/locales/ta-IN-json-fb0ad99371cc9d395a4a.d.ts +0 -0
  514. package/types/packages/excalidraw/dist/excalidraw-assets/locales/th-TH-json-3a152569bbebfec7c6c0.d.ts +0 -0
  515. package/types/packages/excalidraw/dist/excalidraw-assets/locales/th-TH-json-4cbe42d56e0a6f261769.d.ts +0 -0
  516. package/types/packages/excalidraw/dist/excalidraw-assets/locales/th-TH-json-779ad701c23e676f3907.d.ts +0 -0
  517. package/types/packages/excalidraw/dist/excalidraw-assets/locales/tr-TR-json-1f83ec99916cff31ea83.d.ts +0 -0
  518. package/types/packages/excalidraw/dist/excalidraw-assets/locales/tr-TR-json-2e9abe9bb4deaf4dd351.d.ts +0 -0
  519. package/types/packages/excalidraw/dist/excalidraw-assets/locales/tr-TR-json-787da8dfc2342305e3a6.d.ts +0 -0
  520. package/types/packages/excalidraw/dist/excalidraw-assets/locales/tr-TR-json-7cb48008ab8645becf37.d.ts +0 -0
  521. package/types/packages/excalidraw/dist/excalidraw-assets/locales/tr-TR-json-9002b1505b0931924d42.d.ts +0 -0
  522. package/types/packages/excalidraw/dist/excalidraw-assets/locales/tr-TR-json-9573840dee2a1381073f.d.ts +0 -0
  523. package/types/packages/excalidraw/dist/excalidraw-assets/locales/tr-TR-json-a0b61deedb90f078aa01.d.ts +0 -0
  524. package/types/packages/excalidraw/dist/excalidraw-assets/locales/tr-TR-json-eb07e9699c26fef02345.d.ts +0 -0
  525. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-170d7a0da69417b02ba9.d.ts +0 -0
  526. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-2360947dd1e1db4ee5ad.d.ts +0 -0
  527. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-31b987b925c003b67518.d.ts +0 -0
  528. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-4e345c790342b7672248.d.ts +0 -0
  529. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-a48bb2e866a11d396a35.d.ts +0 -0
  530. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-b402aaa379cc70152220.d.ts +0 -0
  531. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-bbfc556c0ea7b939c13a.d.ts +0 -0
  532. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-e1832968cea3ac1b1f14.d.ts +0 -0
  533. package/types/packages/excalidraw/dist/excalidraw-assets/locales/uk-UA-json-fd59eb3c7073d54a61ff.d.ts +0 -0
  534. package/types/packages/excalidraw/dist/excalidraw-assets/locales/vi-VN-json-111b8f1260701cbdeb96.d.ts +0 -0
  535. package/types/packages/excalidraw/dist/excalidraw-assets/locales/vi-VN-json-238d97c20e7382d8d408.d.ts +0 -0
  536. package/types/packages/excalidraw/dist/excalidraw-assets/locales/vi-VN-json-2d39986eb03760539582.d.ts +0 -0
  537. package/types/packages/excalidraw/dist/excalidraw-assets/locales/vi-VN-json-2f5b95c0011820e16f4b.d.ts +0 -0
  538. package/types/packages/excalidraw/dist/excalidraw-assets/locales/vi-VN-json-74c28cd0708c8a4843e2.d.ts +0 -0
  539. package/types/packages/excalidraw/dist/excalidraw-assets/locales/vi-VN-json-8e07b04b68ca2190a3ba.d.ts +0 -0
  540. package/types/packages/excalidraw/dist/excalidraw-assets/locales/vi-VN-json-bcc95c0e05c13d6f59f3.d.ts +0 -0
  541. package/types/packages/excalidraw/dist/excalidraw-assets/locales/vi-VN-json-cbbaff972778abc0e34b.d.ts +0 -0
  542. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-CN-json-00370833a30f1f2920fc.d.ts +0 -0
  543. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-CN-json-0ae042d21bb1d8c961da.d.ts +0 -0
  544. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-CN-json-0c84694ac9a1000f2eda.d.ts +0 -0
  545. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-CN-json-2cb13b38b6615ada3097.d.ts +0 -0
  546. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-CN-json-62d636303447fe79db54.d.ts +0 -0
  547. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-CN-json-75e3e6cf7a1cb55917ed.d.ts +0 -0
  548. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-CN-json-cba518876516337cde09.d.ts +0 -0
  549. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-CN-json-ee9966d1cd4ff9e87533.d.ts +0 -0
  550. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-HK-json-19e6814bddb06e0dd6e3.d.ts +0 -0
  551. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-HK-json-24ae5342eb038f3b0f4a.d.ts +0 -0
  552. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-HK-json-3a8d1819016d2ff6a8a5.d.ts +0 -0
  553. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-HK-json-3e6c24c64212546390be.d.ts +0 -0
  554. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-HK-json-4bcbf71743fda1544a84.d.ts +0 -0
  555. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-HK-json-696f940b619ce66fe8d2.d.ts +0 -0
  556. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-HK-json-9af6e5a3292b417d9698.d.ts +0 -0
  557. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-HK-json-a90c2e97d0115af3affe.d.ts +0 -0
  558. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-TW-json-0a3f9065ffa97f4146ce.d.ts +0 -0
  559. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-TW-json-1f855b7f18a6b359ad85.d.ts +0 -0
  560. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-TW-json-34674e3698d74ccdf98b.d.ts +0 -0
  561. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-TW-json-3fcc3dcef74999ea3757.d.ts +0 -0
  562. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-TW-json-a4a2e5b4cc51ab083773.d.ts +0 -0
  563. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-TW-json-c39caba2da3f001066a8.d.ts +0 -0
  564. package/types/packages/excalidraw/dist/excalidraw-assets/locales/zh-TW-json-c578828a49f1eb06685e.d.ts +0 -0
  565. package/types/packages/excalidraw/dist/excalidraw-assets/mermaid-to-excalidraw-0f090ea67ee25ae13e70.d.ts +0 -0
  566. package/types/packages/excalidraw/dist/excalidraw-assets/mermaid-to-excalidraw-4be5ea7a51077d9ec088.d.ts +0 -0
  567. package/types/packages/excalidraw/dist/excalidraw-assets/mermaid-to-excalidraw-95400fcdf6b7abd1d00f.d.ts +0 -0
  568. package/types/packages/excalidraw/dist/excalidraw-assets/mermaid-to-excalidraw-b3199268ffa9cf39d994.d.ts +0 -0
  569. package/types/packages/excalidraw/dist/excalidraw-assets/mermaid-to-excalidraw-fa6d7ac161ecd73a4ee8.d.ts +0 -0
  570. package/types/packages/excalidraw/dist/excalidraw-assets/socketIoClient-9dfbabed609bb6017f9b.d.ts +0 -0
  571. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-04a7955edccf0af9a10f.d.ts +0 -0
  572. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-1e6c2df4e69cc1956ad5.d.ts +0 -0
  573. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-53d1c69ef585b6dd219b.d.ts +0 -0
  574. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-618c1c3c7155e775e091.d.ts +0 -0
  575. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-7765355a6ad45000a1e6.d.ts +0 -0
  576. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-88ed95c19ded77583148.d.ts +0 -0
  577. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-9d753ee472bb5273f6e2.d.ts +0 -0
  578. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-a026459b6e88c51893c3.d.ts +0 -0
  579. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-ef3c5d81a00ef582b871.d.ts +0 -0
  580. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--c4Diagram-9cddb37f.js-0f692c7467a13ee5da63.d.ts +0 -0
  581. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--cose-base.js-cb166517c85afbecc8bd.d.ts +0 -0
  582. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--cytoscape.umd.js-9eaa7571a3800ca459d6.d.ts +0 -0
  583. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--elk.bundled.js-85ba03a3ac2b98d15a52.d.ts +0 -0
  584. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--erDiagram-f6946109.js-1fd66bdcbae53207831c.d.ts +0 -0
  585. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--flowDiagram-93327f21.js-5fc7845c3ae2e75f9e0d.d.ts +0 -0
  586. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--flowchart-elk-definition-5082a990.js-afb1d44bc87134411202.d.ts +0 -0
  587. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--ganttDiagram-7ce12d6b.js-be11c3f2576eb9d6543f.d.ts +0 -0
  588. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--gitGraphDiagram-1e960c50.js-8671b3bd3aec7ceecf1a.d.ts +0 -0
  589. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--image-blob-reduce.esm.mjs-7824d92868d73a1ba8ff.d.ts +0 -0
  590. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--image-blob-reduce.esm.mjs-e293987e0a17a90159db.d.ts +0 -0
  591. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--index.js-0e16ac7492fe50d30542.d.ts +0 -0
  592. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--layout-base.js-6ad47537ba823827c9ac.d.ts +0 -0
  593. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--mindmap-definition-4fc2557c.js-199740119192f9543ff0.d.ts +0 -0
  594. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--pica.js-1a62b58b78f32d8898b8.d.ts +0 -0
  595. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--pica.js-762a74c125df5c4d735d.d.ts +0 -0
  596. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--pieDiagram-157505fe.js-1894309d42fb4567d6a2.d.ts +0 -0
  597. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--quadrantDiagram-fd70f2d0.js-0ed3cbfdea36fbf245e3.d.ts +0 -0
  598. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--requirementDiagram-19c99588.js-51100eb211fceb65d5cc.d.ts +0 -0
  599. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--sequenceDiagram-5dfd0049.js-cd0a99428974f3efadd4.d.ts +0 -0
  600. package/types/packages/excalidraw/dist/excalidraw-assets/vendors--timeline-definition-5ed366f4.js-0dec0c8d9e6344e84d39.d.ts +0 -0
  601. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-mermaid-to-excalidraw-index.js-3532b766d8809a4e71ad.d.ts +0 -0
  602. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-mermaid-to-excalidraw-locale.js-9150ea0c5e3ddf197bd7.d.ts +0 -0
  603. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-mermaid-to-excalidraw-mermaid-b0ad2de1.js-a59e3b5ee6f4174765e5.d.ts +0 -0
  604. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-mermaid-to-excalidraw-purify.js-2a52b964a69ac2b71ddc.d.ts +0 -0
  605. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-~-styles-aefe6593.js-e2e2b2ccfdca4c668e27.d.ts +0 -0
  606. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-~-styles-fa41df25.js-5026a5a22c331218b047.d.ts +0 -0
  607. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-~~-flowDb-6a57c1b4.js-c05522418ee5acb22267.d.ts +0 -0
  608. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-~~~-index-a92ac404.js-0cfea43f6030cfdcb335.d.ts +0 -0
  609. package/types/packages/excalidraw/dist/excalidraw-assets/vendors-~~~~-edges-49ac43a2.js-fa4d096c4cf2e17c883a.d.ts +0 -0
  610. package/types/packages/excalidraw/dist/excalidraw-assets-dev/bug-issue-template-28bde25b78f0c2ca82bd.d.ts +0 -0
  611. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ar-SA-json-808d2efbf452212f669d.d.ts +0 -2
  612. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ar-SA-json-8df64942a3f6232064a4.d.ts +0 -2
  613. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ar-SA-json-96e4fe4f95a1be3983be.d.ts +0 -2
  614. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ar-SA-json-a69e95810fd104088c5c.d.ts +0 -2
  615. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ar-SA-json-ab6a9216e129bbba9b1a.d.ts +0 -2
  616. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ar-SA-json-b6404a304896578c57e7.d.ts +0 -2
  617. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ar-SA-json-f0a936944c7690d6ca20.d.ts +0 -2
  618. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/az-AZ-json-589b1b62c7020f14c833.d.ts +0 -2
  619. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/az-AZ-json-aa2106a195005649f288.d.ts +0 -2
  620. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bg-BG-json-0da12a1e2151c9abeddd.d.ts +0 -2
  621. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bg-BG-json-244a526ffd7fb0401bf4.d.ts +0 -2
  622. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bg-BG-json-27fa33071eaa81394d61.d.ts +0 -2
  623. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bg-BG-json-3d8cfccdb2df6bf180ac.d.ts +0 -2
  624. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bg-BG-json-79742eced03e74339dfa.d.ts +0 -2
  625. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bg-BG-json-e9f8c439c703b9c46f8f.d.ts +0 -2
  626. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bg-BG-json-f0939048738ceeacefae.d.ts +0 -2
  627. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bn-BD-json-4b92eb02a90d83c47173.d.ts +0 -2
  628. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bn-BD-json-6b8f0d28591eb6926c5a.d.ts +0 -2
  629. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bn-BD-json-737c1b739f303a032d89.d.ts +0 -2
  630. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bn-BD-json-84daac1a6f87d54ab482.d.ts +0 -2
  631. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bn-BD-json-b181d32e04f431472a00.d.ts +0 -2
  632. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bn-BD-json-c6894a7a9379197f0339.d.ts +0 -2
  633. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/bn-BD-json-fcc8b944b3acc1c55753.d.ts +0 -2
  634. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ca-ES-json-0f0e2e2efe8081b84670.d.ts +0 -2
  635. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ca-ES-json-31e2a61e80cf3fc5e692.d.ts +0 -2
  636. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ca-ES-json-5f515dea6151baaa2eaa.d.ts +0 -2
  637. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ca-ES-json-76499e62393c03007178.d.ts +0 -2
  638. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ca-ES-json-b8795d2c06e02f8459d2.d.ts +0 -2
  639. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ca-ES-json-e85ce0d6447d42432c66.d.ts +0 -2
  640. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ca-ES-json-f19488481689426f35e7.d.ts +0 -2
  641. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/cs-CZ-json-101521a09a7715f909be.d.ts +0 -2
  642. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/cs-CZ-json-124bc5ab8060f0c7e965.d.ts +0 -2
  643. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/cs-CZ-json-2a885b79b3be836df283.d.ts +0 -2
  644. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/cs-CZ-json-343789a27d8b5e259601.d.ts +0 -2
  645. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/cs-CZ-json-3c34245696c3fa41b731.d.ts +0 -2
  646. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/cs-CZ-json-4131c5c6a650ff359d88.d.ts +0 -2
  647. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/cs-CZ-json-96005b5d91bada4af762.d.ts +0 -2
  648. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/da-DK-json-291963ff7bdf063a3414.d.ts +0 -2
  649. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/da-DK-json-43c89c591886c0bf87c5.d.ts +0 -2
  650. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/da-DK-json-4d9054b3dd4ff8de7bfa.d.ts +0 -2
  651. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/da-DK-json-68847d6e62bc249abbec.d.ts +0 -2
  652. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/da-DK-json-d099915b14b07f999456.d.ts +0 -2
  653. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/da-DK-json-dfdaec93be64dc2704d9.d.ts +0 -2
  654. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/da-DK-json-fa77dc522933d084c6c6.d.ts +0 -2
  655. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/de-DE-json-0dfed44e094e5e7647ea.d.ts +0 -2
  656. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/de-DE-json-2600a783fee15a69cacc.d.ts +0 -2
  657. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/de-DE-json-53038367422db181d67c.d.ts +0 -2
  658. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/de-DE-json-72757b9d842748bf832e.d.ts +0 -2
  659. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/de-DE-json-c1c6f1ccba0c81e36ff3.d.ts +0 -2
  660. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/de-DE-json-c4d1b52feda557945ecf.d.ts +0 -2
  661. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/de-DE-json-d8d9ee97794526088903.d.ts +0 -2
  662. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/el-GR-json-4a570378e97ad31b9d10.d.ts +0 -2
  663. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/el-GR-json-6b618647cd5dc299d56b.d.ts +0 -2
  664. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/el-GR-json-8562deea2ef40d73cf8a.d.ts +0 -2
  665. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/el-GR-json-a0d2db555d8eabf2314d.d.ts +0 -2
  666. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/el-GR-json-c18382659d1c0307b73b.d.ts +0 -2
  667. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/el-GR-json-c5595d65d7aa1fde7a41.d.ts +0 -2
  668. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/el-GR-json-cc428d6d24413e24785d.d.ts +0 -2
  669. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/es-ES-json-007f93b37e43a42fcf84.d.ts +0 -2
  670. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/es-ES-json-93b74ae63ccd847c1735.d.ts +0 -2
  671. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/es-ES-json-aacc6f2fd98f0f967c32.d.ts +0 -2
  672. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/es-ES-json-ad62d132bdf680947bb1.d.ts +0 -2
  673. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/es-ES-json-d28c0a34dd65557c36d1.d.ts +0 -2
  674. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/es-ES-json-da3d630806693d7dac08.d.ts +0 -2
  675. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/es-ES-json-f300883866a6249a4943.d.ts +0 -2
  676. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/eu-ES-json-2ce16fff0331672e3630.d.ts +0 -2
  677. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/eu-ES-json-5321ea491e8c1e8e265c.d.ts +0 -2
  678. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/eu-ES-json-63e15be6c04e80959411.d.ts +0 -2
  679. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/eu-ES-json-a9c30edbcd64040f6d81.d.ts +0 -2
  680. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/eu-ES-json-b1d18c7b4bd1d54d5dfd.d.ts +0 -2
  681. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/eu-ES-json-e480895dba843bf8cde0.d.ts +0 -2
  682. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/eu-ES-json-ea32646b47bf29438fb9.d.ts +0 -2
  683. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fa-IR-json-23a53581031622df43cb.d.ts +0 -2
  684. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fa-IR-json-607ddee328d9a13e688d.d.ts +0 -2
  685. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fa-IR-json-7b9d274d5accc82982e9.d.ts +0 -2
  686. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fa-IR-json-94f0178e594bf4339882.d.ts +0 -2
  687. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fa-IR-json-c94925ee07701ef438a2.d.ts +0 -2
  688. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fa-IR-json-d8736c460ba5f77209bf.d.ts +0 -2
  689. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fa-IR-json-e8d73ea1c5bdccca7b27.d.ts +0 -2
  690. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fi-FI-json-1d2a667fad3ea0ced0ef.d.ts +0 -2
  691. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fi-FI-json-29f534e1e3daf160eb2c.d.ts +0 -2
  692. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fi-FI-json-37fb26a58706b3949bb1.d.ts +0 -2
  693. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fi-FI-json-534ff9afaddfa5e98712.d.ts +0 -2
  694. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fi-FI-json-7de4002b4d7f24054a84.d.ts +0 -2
  695. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fi-FI-json-92708cde694d0f77df88.d.ts +0 -2
  696. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fi-FI-json-b466031cdd8ef6f8c32b.d.ts +0 -2
  697. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fr-FR-json-0d4f6fdfa9be76a941d7.d.ts +0 -2
  698. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fr-FR-json-148222fdde4309b9ffdd.d.ts +0 -2
  699. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fr-FR-json-337cdd5043bb5c6a174c.d.ts +0 -2
  700. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fr-FR-json-4a98afe80b0f71441e85.d.ts +0 -2
  701. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fr-FR-json-c966daa00fcfc0689b74.d.ts +0 -2
  702. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fr-FR-json-ef3b02eac347cee42eac.d.ts +0 -2
  703. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/fr-FR-json-fc60b276b98e6bc57ae8.d.ts +0 -2
  704. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/gl-ES-json-210eff58e4414a5490e8.d.ts +0 -2
  705. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/gl-ES-json-3c8bbe9429fc52e410b2.d.ts +0 -2
  706. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/gl-ES-json-4652301a81ddc5cf642e.d.ts +0 -2
  707. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/gl-ES-json-46863175bb629a5bb37e.d.ts +0 -2
  708. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/gl-ES-json-4e4f84a35e936b9ca6f6.d.ts +0 -2
  709. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/gl-ES-json-4e726abf2864318b51f9.d.ts +0 -2
  710. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/gl-ES-json-b6d43d24dfabd06e45d5.d.ts +0 -2
  711. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/he-IL-json-4a05a09da3b8c37144d5.d.ts +0 -2
  712. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/he-IL-json-5f74dda2737436b4482a.d.ts +0 -2
  713. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/he-IL-json-86ff7589978ed9654753.d.ts +0 -2
  714. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/he-IL-json-8eb84a20c4dca6812a50.d.ts +0 -2
  715. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/he-IL-json-9bb31b0b25e5a4e8ebec.d.ts +0 -2
  716. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/he-IL-json-a54ad386ceb9b48ccc84.d.ts +0 -2
  717. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/he-IL-json-e0bd304682986695208c.d.ts +0 -2
  718. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hi-IN-json-0300ce94e80ea89134af.d.ts +0 -2
  719. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hi-IN-json-0e1dae2ff14e81ba2dd4.d.ts +0 -2
  720. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hi-IN-json-568c16b512f4c2c8dc80.d.ts +0 -2
  721. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hi-IN-json-5ce4fc9ec6678cfd2f6b.d.ts +0 -2
  722. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hi-IN-json-87d2ac812dc34ff143a2.d.ts +0 -2
  723. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hi-IN-json-a46793165036aac854c6.d.ts +0 -2
  724. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hi-IN-json-f836b4aefaa6ea897222.d.ts +0 -2
  725. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hu-HU-json-06c7fd881b6f211775f3.d.ts +0 -2
  726. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hu-HU-json-230434a2a2eb764d410c.d.ts +0 -2
  727. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hu-HU-json-331ac1b31c82505ea6cc.d.ts +0 -2
  728. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hu-HU-json-6127772c863962f7a7c9.d.ts +0 -2
  729. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hu-HU-json-a96298a55c135b42996d.d.ts +0 -2
  730. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hu-HU-json-c84969170aeddccc8e84.d.ts +0 -2
  731. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/hu-HU-json-e6a409606cf22a639a75.d.ts +0 -2
  732. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/id-ID-json-0850671b76921f20c9b6.d.ts +0 -2
  733. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/id-ID-json-699249ec43c0d419134b.d.ts +0 -2
  734. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/id-ID-json-81ef59d57194b5eaf5cc.d.ts +0 -2
  735. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/id-ID-json-864c1049b7c1d9c4afa6.d.ts +0 -2
  736. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/id-ID-json-c163c21859b707d96c6d.d.ts +0 -2
  737. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/id-ID-json-cec1d9b72fad17e79219.d.ts +0 -2
  738. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/id-ID-json-f8ba56a28586e4e77070.d.ts +0 -2
  739. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/it-IT-json-0d8f11dec1a87e9359c8.d.ts +0 -2
  740. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/it-IT-json-0e799ccdafb272e65046.d.ts +0 -2
  741. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/it-IT-json-2cef8370cf78d9233c2b.d.ts +0 -2
  742. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/it-IT-json-3ae9ff054a8832e055d3.d.ts +0 -2
  743. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/it-IT-json-5436ec678e0205d56856.d.ts +0 -2
  744. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/it-IT-json-d843759aca6069b269dc.d.ts +0 -2
  745. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/it-IT-json-f3776c336b416375460b.d.ts +0 -2
  746. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ja-JP-json-044db93261d04ea64e6f.d.ts +0 -2
  747. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ja-JP-json-32f639470c104e80bfa4.d.ts +0 -2
  748. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ja-JP-json-452835b81621e5ae6cb6.d.ts +0 -2
  749. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ja-JP-json-4f64b1c6188e0451fd4b.d.ts +0 -2
  750. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ja-JP-json-56cc5f3aa96171a64a22.d.ts +0 -2
  751. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ja-JP-json-ceaa3287f265ae241112.d.ts +0 -2
  752. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ja-JP-json-ea55175bf36ae67d1486.d.ts +0 -2
  753. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kaa-json-4017d8481aa0b479424a.d.ts +0 -2
  754. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kaa-json-4efd2d14964af8a534cb.d.ts +0 -2
  755. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kab-KAB-json-0571060fae93fb1f4655.d.ts +0 -2
  756. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kab-KAB-json-3e7e196cc06505d82d71.d.ts +0 -2
  757. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kab-KAB-json-3eb03ea3bf8e5247387a.d.ts +0 -2
  758. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kab-KAB-json-61a7d382c88b96fe1f38.d.ts +0 -2
  759. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kab-KAB-json-df2b76743a2c3409b1f5.d.ts +0 -2
  760. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kab-KAB-json-e40e6e3caaf73fb06f29.d.ts +0 -2
  761. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kab-KAB-json-ffe286fa0d0bb4f0c8b0.d.ts +0 -2
  762. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kk-KZ-json-0a85d681d9deb9c440c9.d.ts +0 -2
  763. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kk-KZ-json-0f99b0b0e9aeb250f10d.d.ts +0 -2
  764. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kk-KZ-json-25ada9f88f38cfb84b18.d.ts +0 -2
  765. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kk-KZ-json-2c2022e9751e266daf48.d.ts +0 -2
  766. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kk-KZ-json-4f7020bbbed7cb7c32e5.d.ts +0 -2
  767. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kk-KZ-json-96ab3e149666871ce872.d.ts +0 -2
  768. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/kk-KZ-json-b788f0957735d7e6cf09.d.ts +0 -2
  769. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/km-KH-json-38d489a3cd78fb378b39.d.ts +0 -2
  770. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/km-KH-json-5e3f43be16a6ec0eb24f.d.ts +0 -2
  771. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ko-KR-json-1f078c7aad070d3bd0e9.d.ts +0 -2
  772. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ko-KR-json-3de3dc5cb1dac5b79f94.d.ts +0 -2
  773. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ko-KR-json-8a4074591f36df4d0c58.d.ts +0 -2
  774. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ko-KR-json-c7c136cb71decba363c7.d.ts +0 -2
  775. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ko-KR-json-dab1c947d6d2ca3ddac0.d.ts +0 -2
  776. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ko-KR-json-f99bca5d636386cef1d9.d.ts +0 -2
  777. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ko-KR-json-ff6664051cb7d2f50fb0.d.ts +0 -2
  778. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ku-TR-json-22a3fdac3947f747cd75.d.ts +0 -2
  779. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ku-TR-json-2729f5ab5a5ff6559d01.d.ts +0 -2
  780. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ku-TR-json-36f8d2a4b09be400f869.d.ts +0 -2
  781. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ku-TR-json-7f671260a35125754327.d.ts +0 -2
  782. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ku-TR-json-c342bf0a9985d2953f39.d.ts +0 -2
  783. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ku-TR-json-d9a93bd27cba79b19aee.d.ts +0 -2
  784. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ku-TR-json-fcef5d1f6a04981f2a5e.d.ts +0 -2
  785. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lt-LT-json-0907f29dc7c40b6e344f.d.ts +0 -2
  786. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lt-LT-json-09bf8afbe684fc98c92a.d.ts +0 -2
  787. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lt-LT-json-3a8687d15506be04a010.d.ts +0 -2
  788. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lt-LT-json-535e00475a2d73aa8927.d.ts +0 -2
  789. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lt-LT-json-5b6406e76cf0d826cc16.d.ts +0 -2
  790. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lt-LT-json-6c2e9629a9ba65c0dca7.d.ts +0 -2
  791. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lt-LT-json-7f27a7b2adcd586b55e8.d.ts +0 -2
  792. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lv-LV-json-216a1fe6e16d46a93b33.d.ts +0 -2
  793. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lv-LV-json-57a16241f5e7412fbaa8.d.ts +0 -2
  794. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lv-LV-json-602964f8d302ae46b08b.d.ts +0 -2
  795. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lv-LV-json-6e981883d91c29060dd4.d.ts +0 -2
  796. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lv-LV-json-95d0faca7a20097e219f.d.ts +0 -2
  797. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lv-LV-json-a811474717b56be40608.d.ts +0 -2
  798. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/lv-LV-json-ccbb9781322782d02fae.d.ts +0 -2
  799. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/mr-IN-json-1bac19e335b1be4d57b1.d.ts +0 -2
  800. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/mr-IN-json-3ffe983e37fedc73cd65.d.ts +0 -2
  801. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/mr-IN-json-6ad409707531c84de376.d.ts +0 -2
  802. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/mr-IN-json-6ba2b497881dcd6a3874.d.ts +0 -2
  803. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/mr-IN-json-78bc3cb48615cd48e74a.d.ts +0 -2
  804. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/mr-IN-json-d2359502fdbadc31b122.d.ts +0 -2
  805. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/mr-IN-json-d8ec700e1e33441c238b.d.ts +0 -2
  806. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/my-MM-json-0ee160095e1784b8d62b.d.ts +0 -2
  807. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/my-MM-json-574ead3f733f6b07b31e.d.ts +0 -2
  808. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/my-MM-json-5c3b77241cc063b2c5b0.d.ts +0 -2
  809. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/my-MM-json-64e7f48498773cc79d25.d.ts +0 -2
  810. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/my-MM-json-bf5438b8b540213e7b7d.d.ts +0 -2
  811. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/my-MM-json-c88241ade5d8f9bafe5d.d.ts +0 -2
  812. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/my-MM-json-cb25da0149000113fd3f.d.ts +0 -2
  813. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nb-NO-json-2cf7b76c223968714b89.d.ts +0 -2
  814. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nb-NO-json-354ad83d68de9511218b.d.ts +0 -2
  815. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nb-NO-json-44f164754214bc9c1baa.d.ts +0 -2
  816. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nb-NO-json-6acf941b2b6d5a982730.d.ts +0 -2
  817. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nb-NO-json-b80dd1befb2641b9364c.d.ts +0 -2
  818. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nb-NO-json-bd11ba266e4e2c0fa619.d.ts +0 -2
  819. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nb-NO-json-d7ca016e9141141cf6d2.d.ts +0 -2
  820. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nl-NL-json-04f6aacdcbd509af44a0.d.ts +0 -2
  821. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nl-NL-json-1690236e0232b67cd430.d.ts +0 -2
  822. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nl-NL-json-3ba3e0f154412bbcf188.d.ts +0 -2
  823. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nl-NL-json-4f65f25ec5e87503413e.d.ts +0 -2
  824. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nl-NL-json-7315dae866197d6cc89a.d.ts +0 -2
  825. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nl-NL-json-8e66a88c43a7eeed44f8.d.ts +0 -2
  826. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nl-NL-json-afccd2db9c47f6a66cf5.d.ts +0 -2
  827. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nn-NO-json-0842a8c2527c65806122.d.ts +0 -2
  828. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nn-NO-json-2134d8b06b7e30965748.d.ts +0 -2
  829. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nn-NO-json-608fd6a88621d6d18035.d.ts +0 -2
  830. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nn-NO-json-75b6725e1dfad76dd3d6.d.ts +0 -2
  831. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nn-NO-json-aeb6613de563968f6d62.d.ts +0 -2
  832. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nn-NO-json-cd35c740e50d116d56a0.d.ts +0 -2
  833. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/nn-NO-json-cd3bec2e4911f6ca612d.d.ts +0 -2
  834. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/oc-FR-json-3e134022a025ff54b6f2.d.ts +0 -2
  835. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/oc-FR-json-54e22feb16f23f963b44.d.ts +0 -2
  836. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/oc-FR-json-dc16297d69033e71846a.d.ts +0 -2
  837. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/oc-FR-json-de0b9a7212e599f039d6.d.ts +0 -2
  838. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/oc-FR-json-e0e1a7000404bafe6fd7.d.ts +0 -2
  839. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/oc-FR-json-e352ed207a2bc6ff2f9a.d.ts +0 -2
  840. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/oc-FR-json-ec9566e0768dfe4b1496.d.ts +0 -2
  841. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pa-IN-json-03bbe592bfa55fe214a9.d.ts +0 -2
  842. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pa-IN-json-29d4806d6fa46f846df7.d.ts +0 -2
  843. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pa-IN-json-2ad0a6609c7ab52d467d.d.ts +0 -2
  844. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pa-IN-json-64ff3aef4c4f2285e7d4.d.ts +0 -2
  845. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pa-IN-json-66af94286f884f29d157.d.ts +0 -2
  846. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pa-IN-json-97ad2e2064b71f244820.d.ts +0 -2
  847. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pa-IN-json-dac3ca0c7dc3107d180d.d.ts +0 -2
  848. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pl-PL-json-1ed88814e0018339868e.d.ts +0 -2
  849. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pl-PL-json-3e483c75de431520dfa3.d.ts +0 -2
  850. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pl-PL-json-4b55b15e99350eeae02f.d.ts +0 -2
  851. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pl-PL-json-54a4380c2eb120f8391a.d.ts +0 -2
  852. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pl-PL-json-5e2c724996753a370f00.d.ts +0 -2
  853. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pl-PL-json-6ce16ec772ca39cb8744.d.ts +0 -2
  854. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pl-PL-json-e9d55427ccc0a3ee2287.d.ts +0 -2
  855. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-BR-json-32d105b423af2efd99bc.d.ts +0 -2
  856. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-BR-json-3756b9371bfb0744a247.d.ts +0 -2
  857. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-BR-json-49f03e588be4c6bbe08c.d.ts +0 -2
  858. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-BR-json-7571b67e63f5e151e90a.d.ts +0 -2
  859. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-BR-json-7d9b0fb67c76161b2785.d.ts +0 -2
  860. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-BR-json-a9f4548703a436582ea1.d.ts +0 -2
  861. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-BR-json-b51075fd4a34edc98c62.d.ts +0 -2
  862. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-PT-json-2929d15eba5953ef7715.d.ts +0 -2
  863. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-PT-json-2df486888ab37d6c0765.d.ts +0 -2
  864. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-PT-json-54efec7908df52d47dd5.d.ts +0 -2
  865. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-PT-json-722910761860dbd3fb87.d.ts +0 -2
  866. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-PT-json-77d5ca078872e12eb25b.d.ts +0 -2
  867. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-PT-json-a0efd06ca81979f0a547.d.ts +0 -2
  868. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/pt-PT-json-f580e6aa27acd18cf7eb.d.ts +0 -2
  869. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ro-RO-json-259991b384060c398825.d.ts +0 -2
  870. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ro-RO-json-785455320326c2640311.d.ts +0 -2
  871. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ro-RO-json-7d91654ae261bb9d572c.d.ts +0 -2
  872. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ro-RO-json-afba8739d17043e44853.d.ts +0 -2
  873. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ro-RO-json-bddb9c5835477b2cf255.d.ts +0 -2
  874. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ro-RO-json-f62b471f8125751df395.d.ts +0 -2
  875. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ro-RO-json-fe65a70419c866a6ce94.d.ts +0 -2
  876. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ru-RU-json-0b36410a81160861bfbe.d.ts +0 -2
  877. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ru-RU-json-1666880345e0ee1d9198.d.ts +0 -2
  878. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ru-RU-json-2c39ffbb623db8024be0.d.ts +0 -2
  879. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ru-RU-json-51faee1b80ed8a59b81c.d.ts +0 -2
  880. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ru-RU-json-807c094575141684a23c.d.ts +0 -2
  881. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ru-RU-json-8836a70e1fe715aa70c7.d.ts +0 -2
  882. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ru-RU-json-8f00196487b21d4c1ce8.d.ts +0 -2
  883. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/si-LK-json-13432a6405a3e78d9a36.d.ts +0 -2
  884. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/si-LK-json-244722aa29ba7ca8bd7a.d.ts +0 -2
  885. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/si-LK-json-338de2463f06f3a76069.d.ts +0 -2
  886. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/si-LK-json-a867646cf3fa3a22cafb.d.ts +0 -2
  887. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/si-LK-json-d6a06f63464d79fd36eb.d.ts +0 -2
  888. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/si-LK-json-e6e6b1caa13f7abcfacc.d.ts +0 -2
  889. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/si-LK-json-ea88723100210c4a4f50.d.ts +0 -2
  890. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sk-SK-json-1335b58f9707aa5275fa.d.ts +0 -2
  891. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sk-SK-json-97afb0ec22d1503e2af4.d.ts +0 -2
  892. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sk-SK-json-b8a13e82d3ccc25365ff.d.ts +0 -2
  893. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sk-SK-json-bb5ffb40cd779a63565f.d.ts +0 -2
  894. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sk-SK-json-dc42543f0ffa26f7e2de.d.ts +0 -2
  895. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sk-SK-json-ead9c71815507529bd9f.d.ts +0 -2
  896. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sk-SK-json-f0dcb9f158c1416791e9.d.ts +0 -2
  897. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sl-SI-json-10c5ba653479b04d3ba8.d.ts +0 -2
  898. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sl-SI-json-3f5b456d22c9a71932f3.d.ts +0 -2
  899. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sl-SI-json-79d34e23c08ceec64254.d.ts +0 -2
  900. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sl-SI-json-7f2b05323ad2e88110b3.d.ts +0 -2
  901. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sl-SI-json-cd56d7fa0376488e5343.d.ts +0 -2
  902. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sl-SI-json-d1036f8f3d1f6b1a70f4.d.ts +0 -2
  903. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sl-SI-json-e59c2bd944228503e705.d.ts +0 -2
  904. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sv-SE-json-053d2c3abda7dcc70df7.d.ts +0 -2
  905. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sv-SE-json-0aec1cdc076c868b1384.d.ts +0 -2
  906. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sv-SE-json-53791d0a923a4de6a2e2.d.ts +0 -2
  907. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sv-SE-json-8a96e0b5538383ba0644.d.ts +0 -2
  908. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sv-SE-json-8ee6702d94e84e48faa8.d.ts +0 -2
  909. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sv-SE-json-99fffeccfd850fe9c2e1.d.ts +0 -2
  910. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/sv-SE-json-b16a829e634fedfb3471.d.ts +0 -2
  911. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ta-IN-json-0f92406d511259672140.d.ts +0 -2
  912. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ta-IN-json-30fffc9f1cedf1d559d8.d.ts +0 -2
  913. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ta-IN-json-3c99dc4ff8af7e2523f3.d.ts +0 -2
  914. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ta-IN-json-41c81e1f857b5e0da8e5.d.ts +0 -2
  915. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ta-IN-json-4228f65ccc341129ef91.d.ts +0 -2
  916. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ta-IN-json-80c52510c4c5fad8cbee.d.ts +0 -2
  917. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/ta-IN-json-82adc75c8ce42916819b.d.ts +0 -2
  918. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/th-TH-json-523e92f9f3b6924c3f66.d.ts +0 -2
  919. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/th-TH-json-53f4f07ed0af4f4164f1.d.ts +0 -2
  920. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/th-TH-json-a4b323409d22013c30e2.d.ts +0 -2
  921. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/tr-TR-json-399c6f39c50e30399d18.d.ts +0 -2
  922. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/tr-TR-json-4ce84a228518e4c17dda.d.ts +0 -2
  923. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/tr-TR-json-5297403ca60a39d7f7a2.d.ts +0 -2
  924. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/tr-TR-json-662131ef5ef936bed6fc.d.ts +0 -2
  925. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/tr-TR-json-745c327779771326407a.d.ts +0 -2
  926. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/tr-TR-json-e43e35aa81edeb9058ee.d.ts +0 -2
  927. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/tr-TR-json-efa928fe68850c03bfed.d.ts +0 -2
  928. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/uk-UA-json-0e7734abfada3d4d8c23.d.ts +0 -2
  929. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/uk-UA-json-2cd06c30d512defd8a0b.d.ts +0 -2
  930. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/uk-UA-json-402769714cfefd83da2c.d.ts +0 -2
  931. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/uk-UA-json-4e9f0d94b39ba92e56f2.d.ts +0 -2
  932. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/uk-UA-json-8657d9ac1c78af847957.d.ts +0 -2
  933. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/uk-UA-json-a91561233fde5c47199c.d.ts +0 -2
  934. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/uk-UA-json-e2259f0f2a3d9e40527c.d.ts +0 -2
  935. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/vi-VN-json-059de236624a1a5c0074.d.ts +0 -2
  936. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/vi-VN-json-24e0a602b51ae02a9396.d.ts +0 -2
  937. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/vi-VN-json-87f5a22fd45850d1ddf7.d.ts +0 -2
  938. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/vi-VN-json-91051a67195b4c7f2dc2.d.ts +0 -2
  939. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/vi-VN-json-da80feb32fd43849da41.d.ts +0 -2
  940. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/vi-VN-json-e81217b667a314e4b841.d.ts +0 -2
  941. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/vi-VN-json-fe2d25d75865c608e798.d.ts +0 -2
  942. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-CN-json-09003f959f8d8d9ee650.d.ts +0 -2
  943. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-CN-json-4762509f4cfefbc0e504.d.ts +0 -2
  944. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-CN-json-6c5e2f363709b51a4fca.d.ts +0 -2
  945. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-CN-json-8a2394a4129f40872d71.d.ts +0 -2
  946. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-CN-json-9a4f14a3964c94a3b1d0.d.ts +0 -2
  947. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-CN-json-cfa7b0a95405aae3bd85.d.ts +0 -2
  948. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-CN-json-e5e59a1cd383192a1792.d.ts +0 -2
  949. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-HK-json-2e545ed460deb9818584.d.ts +0 -2
  950. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-HK-json-2f278ce98daca1c37501.d.ts +0 -2
  951. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-HK-json-79ea857f9fc00efa982e.d.ts +0 -2
  952. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-HK-json-9e65481cf4e01edf7ee9.d.ts +0 -2
  953. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-HK-json-aee1350572c354c80356.d.ts +0 -2
  954. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-HK-json-d549d0545edbb2c9b957.d.ts +0 -2
  955. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-HK-json-d621701ec05102b37e3b.d.ts +0 -2
  956. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-TW-json-077dac2df525c01b947c.d.ts +0 -2
  957. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-TW-json-5c0415fa2e3076904544.d.ts +0 -2
  958. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-TW-json-67cab9706c94be113c72.d.ts +0 -2
  959. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-TW-json-8e24a4e83f3a0e4ae157.d.ts +0 -2
  960. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-TW-json-e4eb1416e4564d3a1fd9.d.ts +0 -2
  961. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-TW-json-eb23779805948ed5342c.d.ts +0 -2
  962. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/zh-TW-json-fa855c8136cdf8c637e0.d.ts +0 -2
  963. package/types/packages/excalidraw/dist/excalidraw-assets-dev/socketIoClient-fa4b6d469c39d45f2e09.d.ts +0 -0
  964. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-09807cea73c630ed21df.d.ts +0 -0
  965. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-24fff00bcf5a7372c15c.d.ts +0 -0
  966. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-25e3a58caf3eb579acec.d.ts +0 -0
  967. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-314a9d35303abe8e0fa9.d.ts +0 -0
  968. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-a14cd58fa2db417e42b2.d.ts +0 -0
  969. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-c00e8786eb9fe4ac838a.d.ts +0 -0
  970. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-cdf32fffa1d8406fcad7.d.ts +0 -0
  971. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-d4c6c37cb71cd8cde431.d.ts +0 -0
  972. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-e6df8519da951026ff69.d.ts +0 -0
  973. package/types/packages/excalidraw/dist/vendors-excalidraw.production.min-deflate.js.d.ts +0 -0
  974. package/types/packages/excalidraw/dist/vendors-excalidraw.production.min-index.js.d.ts +0 -0
  975. package/types/packages/excalidraw/dist/vendors-excalidraw.production.min-index.mjs.d.ts +0 -0
  976. package/types/packages/excalidraw/dist/vendors-excalidraw.production.min-index.module.js.d.ts +0 -0
  977. package/types/packages/excalidraw/dist/vendors-excalidraw.production.min-inflate.js.d.ts +0 -0
  978. package/types/packages/excalidraw/dist/vendors-excalidraw.production.min-trees.js.d.ts +0 -0
  979. package/types/packages/excalidraw/example/public/bundle.d.ts +0 -4
  980. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/ar-SA-json-422720aeae76b43f4e34.d.ts +0 -2
  981. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/bg-BG-json-ae0d3ff13ac91abf996f.d.ts +0 -2
  982. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/bn-BD-json-32cdc6ced24b13f36bbc.d.ts +0 -2
  983. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/ca-ES-json-a49f03ca494b1ca8ed9b.d.ts +0 -2
  984. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/cs-CZ-json-2f07dbffe26aa12a024c.d.ts +0 -2
  985. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/da-DK-json-6ae97a313d4264946e31.d.ts +0 -2
  986. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/de-DE-json-c80daaed2a67b2f15223.d.ts +0 -2
  987. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/el-GR-json-51bfd33c7f83bbd7f6db.d.ts +0 -2
  988. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/es-ES-json-8b67d656368fbf73428a.d.ts +0 -2
  989. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/eu-ES-json-5e56699d66f76750fe41.d.ts +0 -2
  990. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/fa-IR-json-d0c9c049db458a8ca59b.d.ts +0 -2
  991. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/fi-FI-json-1ae181bce5d26c50d814.d.ts +0 -2
  992. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/fr-FR-json-0956ba0a6dca32f13c7c.d.ts +0 -2
  993. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/gl-ES-json-1d1f4fc2134412b9c96a.d.ts +0 -2
  994. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/he-IL-json-1f78737fd8e123db1288.d.ts +0 -2
  995. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/hi-IN-json-5be1ea05cc7ee8432cb8.d.ts +0 -2
  996. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/hu-HU-json-107000c3f76466f229a2.d.ts +0 -2
  997. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/id-ID-json-f782bb0be319848f497f.d.ts +0 -2
  998. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/it-IT-json-c10398560de544c3d260.d.ts +0 -2
  999. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/ja-JP-json-e6171aca80f24923fe78.d.ts +0 -2
  1000. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/kab-KAB-json-24afe8bf173c1ff2b0fb.d.ts +0 -2
  1001. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/kk-KZ-json-ebcf4e820011c8b8947f.d.ts +0 -2
  1002. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/ko-KR-json-8ea51a4ccc4dcc5ad697.d.ts +0 -2
  1003. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/lt-LT-json-5bbbf30868522c7bc767.d.ts +0 -2
  1004. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/lv-LV-json-b098759876ad0f66ffeb.d.ts +0 -2
  1005. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/mr-IN-json-095d9331dce2f1e28fe2.d.ts +0 -2
  1006. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/my-MM-json-6d5eac0f31d26c9151d0.d.ts +0 -2
  1007. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/nb-NO-json-3212c5604c8178216a20.d.ts +0 -2
  1008. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/nl-NL-json-a0917464058630804509.d.ts +0 -2
  1009. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/nn-NO-json-acadf455071816b2e1ed.d.ts +0 -2
  1010. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/oc-FR-json-09009791e68cc185268f.d.ts +0 -2
  1011. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/pa-IN-json-0b4a87b2f3a174822e14.d.ts +0 -2
  1012. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/pl-PL-json-e9f93bc2be954bd5cd6f.d.ts +0 -2
  1013. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/pt-BR-json-1d39c9c817cafb4df7bc.d.ts +0 -2
  1014. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/pt-PT-json-bf4365a3b12692290c60.d.ts +0 -2
  1015. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/ro-RO-json-b5a994918893bdb7f12a.d.ts +0 -2
  1016. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/ru-RU-json-4ca260298f98f8b9d64b.d.ts +0 -2
  1017. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/si-LK-json-036efbecc1473ea2654c.d.ts +0 -2
  1018. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/sk-SK-json-01a56bd743bfafa0ea7f.d.ts +0 -2
  1019. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/sl-SI-json-7c07dba5b6bcb7072b72.d.ts +0 -2
  1020. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/sv-SE-json-344d32171a6dcaa49e4b.d.ts +0 -2
  1021. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/ta-IN-json-972a32d06dc37eae0265.d.ts +0 -2
  1022. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/tr-TR-json-fe7706a48e8c387f0efa.d.ts +0 -2
  1023. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/uk-UA-json-3530ec9aa3e0e74258f2.d.ts +0 -2
  1024. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/vi-VN-json-8787bf8cf6bfb42f8db7.d.ts +0 -2
  1025. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/zh-CN-json-973f54c2e185ded6c3aa.d.ts +0 -2
  1026. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/zh-HK-json-327e43ba85bde53f4508.d.ts +0 -2
  1027. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/locales/zh-TW-json-76cff34960ab6a8ef9ae.d.ts +0 -2
  1028. package/types/packages/excalidraw/example/public/excalidraw-assets-dev/vendor-045ba36ab51d57ee5669.d.ts +0 -0
  1029. package/types/packages/excalidraw/example/public/excalidraw.development.d.ts +0 -4
  1030. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ar-SA-json-db7c644ccbeb85d54a47.d.ts +0 -0
  1031. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ar-SA-json-f35c4f87e6e2dcf7c20a.d.ts +0 -2
  1032. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/az-AZ-json-08a6de50238dbb21926c.d.ts +0 -0
  1033. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/az-AZ-json-5d70eb8bf3f20abc3bac.d.ts +0 -2
  1034. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/bg-BG-json-42fb0378311f3ade2627.d.ts +0 -0
  1035. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/bg-BG-json-88cced5fd8a6d8298501.d.ts +0 -2
  1036. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/bn-BD-json-9ad9e5ae95c4c66297b1.d.ts +0 -0
  1037. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/bn-BD-json-a06588c61947851c8579.d.ts +0 -2
  1038. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ca-ES-json-9b25933a25836cc0be23.d.ts +0 -2
  1039. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ca-ES-json-a6b2c18f7e85cfd11599.d.ts +0 -0
  1040. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/cs-CZ-json-1d6c97ea271d017058c9.d.ts +0 -2
  1041. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/cs-CZ-json-ea03835d73f9b921f7c4.d.ts +0 -0
  1042. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/da-DK-json-34a60c9843cecd71376f.d.ts +0 -2
  1043. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/da-DK-json-a94944ac6fa9756d2fac.d.ts +0 -0
  1044. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/de-DE-json-d13450595b795867412b.d.ts +0 -2
  1045. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/de-DE-json-d82053ab52357510811b.d.ts +0 -0
  1046. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/el-GR-json-4cbc2dbda5a5df636ee1.d.ts +0 -0
  1047. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/el-GR-json-c854b199f3ac07d40294.d.ts +0 -2
  1048. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/es-ES-json-6a667bfbf4ff3d0181a7.d.ts +0 -2
  1049. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/es-ES-json-7afb66536ee40d852fa2.d.ts +0 -0
  1050. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/eu-ES-json-3ec11367a80491b09056.d.ts +0 -2
  1051. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/eu-ES-json-671a4afcfce7b0a7660b.d.ts +0 -0
  1052. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/fa-IR-json-76b039039b043cc4280c.d.ts +0 -0
  1053. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/fa-IR-json-e459964936177074abe7.d.ts +0 -2
  1054. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/fi-FI-json-64c8902f10425e1b2e81.d.ts +0 -0
  1055. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/fi-FI-json-f7839bb6f5ad0a3c7e0d.d.ts +0 -2
  1056. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/fr-FR-json-20e8535e2675a6736c81.d.ts +0 -2
  1057. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/fr-FR-json-d16a471290ba26a6c66a.d.ts +0 -0
  1058. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/gl-ES-json-861f534b46c0db1fa8db.d.ts +0 -2
  1059. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/gl-ES-json-d11c7966c3c2f95756e0.d.ts +0 -0
  1060. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/he-IL-json-504d78736487793ffccd.d.ts +0 -2
  1061. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/he-IL-json-a7bc2a673875b2e655e1.d.ts +0 -0
  1062. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/hi-IN-json-4947c9dace32cc3c6eef.d.ts +0 -0
  1063. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/hi-IN-json-82d988431011c330242a.d.ts +0 -2
  1064. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/hu-HU-json-0419027d32efac73d518.d.ts +0 -0
  1065. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/hu-HU-json-d4150250980011726fd9.d.ts +0 -2
  1066. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/id-ID-json-6542dd92ab54a2c1c48e.d.ts +0 -0
  1067. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/id-ID-json-82e300d4fe1e87adba9b.d.ts +0 -2
  1068. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/it-IT-json-6ecc9aec005faab90f41.d.ts +0 -2
  1069. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/it-IT-json-ab410570df07304cb0ca.d.ts +0 -0
  1070. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ja-JP-json-2cb067da0fb518e73564.d.ts +0 -0
  1071. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ja-JP-json-3c6a065f0f1303b297fa.d.ts +0 -2
  1072. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/kaa-json-4d0a4868835d0334a549.d.ts +0 -0
  1073. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/kaa-json-983a9ccc652aa01980f3.d.ts +0 -2
  1074. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/kab-KAB-json-0d400ba2836cc0752cd6.d.ts +0 -0
  1075. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/kab-KAB-json-cac3cf66f1db5c1a6e19.d.ts +0 -2
  1076. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/kk-KZ-json-2224f237cc93465f126f.d.ts +0 -0
  1077. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/kk-KZ-json-e9dd81c22419efd44478.d.ts +0 -2
  1078. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/km-KH-json-be77acee611d96d88dda.d.ts +0 -2
  1079. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/km-KH-json-cbe8e2e8d26d30a3175c.d.ts +0 -0
  1080. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ko-KR-json-ad8e9d31d52b26f3fbc2.d.ts +0 -2
  1081. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ko-KR-json-c2387972637d47f15765.d.ts +0 -0
  1082. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ku-TR-json-bafa8865ed7002bb249e.d.ts +0 -0
  1083. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ku-TR-json-ed67af91ae1920f114a8.d.ts +0 -2
  1084. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/lt-LT-json-2c3d35d6fb5dbf95a27e.d.ts +0 -2
  1085. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/lt-LT-json-9b7e91a51b90ee551cad.d.ts +0 -0
  1086. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/lv-LV-json-f7f9363e42ee2e3a7c67.d.ts +0 -0
  1087. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/lv-LV-json-fa8973c231afb2ddafe9.d.ts +0 -2
  1088. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/mr-IN-json-2949146743072eb11b40.d.ts +0 -2
  1089. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/mr-IN-json-ad1359c30c334d05eee0.d.ts +0 -0
  1090. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/my-MM-json-3ba296b6fcf2a2197a7c.d.ts +0 -0
  1091. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/my-MM-json-4c04ffe415641f69ed75.d.ts +0 -2
  1092. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/nb-NO-json-798d785698d467e76fcf.d.ts +0 -0
  1093. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/nb-NO-json-b8d7a5b70562dacdad45.d.ts +0 -2
  1094. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/nl-NL-json-2cf913fe2f491c5d7075.d.ts +0 -0
  1095. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/nl-NL-json-a65f82a25fe038c45d35.d.ts +0 -2
  1096. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/nn-NO-json-858fbccbc5be386977db.d.ts +0 -2
  1097. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/nn-NO-json-aa607835ad9408789c5f.d.ts +0 -0
  1098. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/oc-FR-json-644a5eaa1311f70cb697.d.ts +0 -0
  1099. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/oc-FR-json-a68ea08272c8da3c0e3f.d.ts +0 -2
  1100. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/pa-IN-json-165c5c2760688033b2cc.d.ts +0 -0
  1101. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/pa-IN-json-90a2b3775bd7d8983def.d.ts +0 -2
  1102. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/pl-PL-json-35c1f168f53af24b657a.d.ts +0 -0
  1103. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/pl-PL-json-9bb55330d5aaf336646e.d.ts +0 -2
  1104. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/pt-BR-json-3635e753c1b6e5b681fa.d.ts +0 -2
  1105. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/pt-BR-json-370215dc506c58ee3217.d.ts +0 -0
  1106. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/pt-PT-json-0d3694a92e0134549086.d.ts +0 -2
  1107. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/pt-PT-json-6f3d80656622a222b4e2.d.ts +0 -0
  1108. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ro-RO-json-3c32b962880e225d3416.d.ts +0 -0
  1109. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ro-RO-json-e83fda16c860c6d0b383.d.ts +0 -2
  1110. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ru-RU-json-ddc13261ce5d864d36a9.d.ts +0 -2
  1111. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ru-RU-json-e1f4ed9d2d074f778304.d.ts +0 -0
  1112. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/si-LK-json-16eb66dbfc6c55fc85b1.d.ts +0 -2
  1113. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/si-LK-json-4921d4298abfa256fe6f.d.ts +0 -0
  1114. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/sk-SK-json-27b59d7e026675f929c4.d.ts +0 -0
  1115. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/sk-SK-json-782ead8707f2ad0e8e4e.d.ts +0 -2
  1116. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/sl-SI-json-82e55cf7cdbdc7d7f959.d.ts +0 -2
  1117. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/sl-SI-json-efb839ef0456f5c72e6e.d.ts +0 -0
  1118. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/sv-SE-json-2f362899d3ac4089534f.d.ts +0 -2
  1119. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/sv-SE-json-cfab3adbd37dd273c61e.d.ts +0 -0
  1120. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ta-IN-json-07623a485202da63a84b.d.ts +0 -2
  1121. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/ta-IN-json-2fa1854af68381c61913.d.ts +0 -0
  1122. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/th-TH-json-4e4b97f5f6e905191383.d.ts +0 -2
  1123. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/th-TH-json-9a390d3cc7a7a6226b63.d.ts +0 -0
  1124. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/tr-TR-json-003be1cf6ebf0b787dec.d.ts +0 -2
  1125. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/tr-TR-json-fc9b16e9dc2be2660439.d.ts +0 -0
  1126. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/uk-UA-json-82753e98dced302ac187.d.ts +0 -0
  1127. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/uk-UA-json-ca6ea1156db2649d3e27.d.ts +0 -2
  1128. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/vi-VN-json-9a5e5fab41a1a120a916.d.ts +0 -2
  1129. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/vi-VN-json-9c1c2a9fa9d6b5a58223.d.ts +0 -0
  1130. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/zh-CN-json-069c304b5011429be615.d.ts +0 -0
  1131. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/zh-CN-json-670c28a6ae1e3ddecaa4.d.ts +0 -2
  1132. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/zh-HK-json-93b9b676d4f4b5702797.d.ts +0 -2
  1133. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/zh-HK-json-d9bf1e4e2d1f8650c680.d.ts +0 -0
  1134. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/zh-TW-json-5a3fa7cacfa83c411d89.d.ts +0 -0
  1135. package/types/packages/excalidraw/preact/dist/excalidraw-assets/locales/zh-TW-json-805d10b0eed9ca51b318.d.ts +0 -2
  1136. package/types/packages/excalidraw/preact/dist/excalidraw-assets/vendor-25e3a58caf3eb579acec.d.ts +0 -0
  1137. package/types/packages/excalidraw/preact/dist/excalidraw-assets/vendor-677e88ca78c86bddf13d.d.ts +0 -0
  1138. package/types/packages/excalidraw/preact/excalidraw-assets/locales/ar-SA-json-db7c644ccbeb85d54a47.d.ts +0 -0
  1139. package/types/packages/excalidraw/preact/excalidraw-assets/locales/az-AZ-json-08a6de50238dbb21926c.d.ts +0 -0
  1140. package/types/packages/excalidraw/preact/excalidraw-assets/locales/bg-BG-json-42fb0378311f3ade2627.d.ts +0 -0
  1141. package/types/packages/excalidraw/preact/excalidraw-assets/locales/bn-BD-json-9ad9e5ae95c4c66297b1.d.ts +0 -0
  1142. package/types/packages/excalidraw/preact/excalidraw-assets/locales/ca-ES-json-a6b2c18f7e85cfd11599.d.ts +0 -0
  1143. package/types/packages/excalidraw/preact/excalidraw-assets/locales/cs-CZ-json-ea03835d73f9b921f7c4.d.ts +0 -0
  1144. package/types/packages/excalidraw/preact/excalidraw-assets/locales/da-DK-json-a94944ac6fa9756d2fac.d.ts +0 -0
  1145. package/types/packages/excalidraw/preact/excalidraw-assets/locales/de-DE-json-d82053ab52357510811b.d.ts +0 -0
  1146. package/types/packages/excalidraw/preact/excalidraw-assets/locales/el-GR-json-4cbc2dbda5a5df636ee1.d.ts +0 -0
  1147. package/types/packages/excalidraw/preact/excalidraw-assets/locales/es-ES-json-7afb66536ee40d852fa2.d.ts +0 -0
  1148. package/types/packages/excalidraw/preact/excalidraw-assets/locales/eu-ES-json-671a4afcfce7b0a7660b.d.ts +0 -0
  1149. package/types/packages/excalidraw/preact/excalidraw-assets/locales/fa-IR-json-76b039039b043cc4280c.d.ts +0 -0
  1150. package/types/packages/excalidraw/preact/excalidraw-assets/locales/fi-FI-json-64c8902f10425e1b2e81.d.ts +0 -0
  1151. package/types/packages/excalidraw/preact/excalidraw-assets/locales/fr-FR-json-d16a471290ba26a6c66a.d.ts +0 -0
  1152. package/types/packages/excalidraw/preact/excalidraw-assets/locales/gl-ES-json-d11c7966c3c2f95756e0.d.ts +0 -0
  1153. package/types/packages/excalidraw/preact/excalidraw-assets/locales/he-IL-json-a7bc2a673875b2e655e1.d.ts +0 -0
  1154. package/types/packages/excalidraw/preact/excalidraw-assets/locales/hi-IN-json-4947c9dace32cc3c6eef.d.ts +0 -0
  1155. package/types/packages/excalidraw/preact/excalidraw-assets/locales/hu-HU-json-0419027d32efac73d518.d.ts +0 -0
  1156. package/types/packages/excalidraw/preact/excalidraw-assets/locales/id-ID-json-6542dd92ab54a2c1c48e.d.ts +0 -0
  1157. package/types/packages/excalidraw/preact/excalidraw-assets/locales/it-IT-json-ab410570df07304cb0ca.d.ts +0 -0
  1158. package/types/packages/excalidraw/preact/excalidraw-assets/locales/ja-JP-json-2cb067da0fb518e73564.d.ts +0 -0
  1159. package/types/packages/excalidraw/preact/excalidraw-assets/locales/kaa-json-4d0a4868835d0334a549.d.ts +0 -0
  1160. package/types/packages/excalidraw/preact/excalidraw-assets/locales/kab-KAB-json-0d400ba2836cc0752cd6.d.ts +0 -0
  1161. package/types/packages/excalidraw/preact/excalidraw-assets/locales/kk-KZ-json-2224f237cc93465f126f.d.ts +0 -0
  1162. package/types/packages/excalidraw/preact/excalidraw-assets/locales/km-KH-json-cbe8e2e8d26d30a3175c.d.ts +0 -0
  1163. package/types/packages/excalidraw/preact/excalidraw-assets/locales/ko-KR-json-c2387972637d47f15765.d.ts +0 -0
  1164. package/types/packages/excalidraw/preact/excalidraw-assets/locales/ku-TR-json-bafa8865ed7002bb249e.d.ts +0 -0
  1165. package/types/packages/excalidraw/preact/excalidraw-assets/locales/lt-LT-json-9b7e91a51b90ee551cad.d.ts +0 -0
  1166. package/types/packages/excalidraw/preact/excalidraw-assets/locales/lv-LV-json-f7f9363e42ee2e3a7c67.d.ts +0 -0
  1167. package/types/packages/excalidraw/preact/excalidraw-assets/locales/mr-IN-json-ad1359c30c334d05eee0.d.ts +0 -0
  1168. package/types/packages/excalidraw/preact/excalidraw-assets/locales/my-MM-json-3ba296b6fcf2a2197a7c.d.ts +0 -0
  1169. package/types/packages/excalidraw/preact/excalidraw-assets/locales/nb-NO-json-798d785698d467e76fcf.d.ts +0 -0
  1170. package/types/packages/excalidraw/preact/excalidraw-assets/locales/nl-NL-json-2cf913fe2f491c5d7075.d.ts +0 -0
  1171. package/types/packages/excalidraw/preact/excalidraw-assets/locales/nn-NO-json-aa607835ad9408789c5f.d.ts +0 -0
  1172. package/types/packages/excalidraw/preact/excalidraw-assets/locales/oc-FR-json-644a5eaa1311f70cb697.d.ts +0 -0
  1173. package/types/packages/excalidraw/preact/excalidraw-assets/locales/pa-IN-json-165c5c2760688033b2cc.d.ts +0 -0
  1174. package/types/packages/excalidraw/preact/excalidraw-assets/locales/pl-PL-json-35c1f168f53af24b657a.d.ts +0 -0
  1175. package/types/packages/excalidraw/preact/excalidraw-assets/locales/pt-BR-json-370215dc506c58ee3217.d.ts +0 -0
  1176. package/types/packages/excalidraw/preact/excalidraw-assets/locales/pt-PT-json-6f3d80656622a222b4e2.d.ts +0 -0
  1177. package/types/packages/excalidraw/preact/excalidraw-assets/locales/ro-RO-json-3c32b962880e225d3416.d.ts +0 -0
  1178. package/types/packages/excalidraw/preact/excalidraw-assets/locales/ru-RU-json-e1f4ed9d2d074f778304.d.ts +0 -0
  1179. package/types/packages/excalidraw/preact/excalidraw-assets/locales/si-LK-json-4921d4298abfa256fe6f.d.ts +0 -0
  1180. package/types/packages/excalidraw/preact/excalidraw-assets/locales/sk-SK-json-27b59d7e026675f929c4.d.ts +0 -0
  1181. package/types/packages/excalidraw/preact/excalidraw-assets/locales/sl-SI-json-efb839ef0456f5c72e6e.d.ts +0 -0
  1182. package/types/packages/excalidraw/preact/excalidraw-assets/locales/sv-SE-json-cfab3adbd37dd273c61e.d.ts +0 -0
  1183. package/types/packages/excalidraw/preact/excalidraw-assets/locales/ta-IN-json-2fa1854af68381c61913.d.ts +0 -0
  1184. package/types/packages/excalidraw/preact/excalidraw-assets/locales/th-TH-json-9a390d3cc7a7a6226b63.d.ts +0 -0
  1185. package/types/packages/excalidraw/preact/excalidraw-assets/locales/tr-TR-json-fc9b16e9dc2be2660439.d.ts +0 -0
  1186. package/types/packages/excalidraw/preact/excalidraw-assets/locales/uk-UA-json-82753e98dced302ac187.d.ts +0 -0
  1187. package/types/packages/excalidraw/preact/excalidraw-assets/locales/vi-VN-json-9c1c2a9fa9d6b5a58223.d.ts +0 -0
  1188. package/types/packages/excalidraw/preact/excalidraw-assets/locales/zh-CN-json-069c304b5011429be615.d.ts +0 -0
  1189. package/types/packages/excalidraw/preact/excalidraw-assets/locales/zh-HK-json-d9bf1e4e2d1f8650c680.d.ts +0 -0
  1190. package/types/packages/excalidraw/preact/excalidraw-assets/locales/zh-TW-json-5a3fa7cacfa83c411d89.d.ts +0 -0
  1191. package/types/packages/excalidraw/preact/excalidraw-assets/vendor-677e88ca78c86bddf13d.d.ts +0 -0
  1192. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/ar-SA-json-f35c4f87e6e2dcf7c20a.d.ts +0 -2
  1193. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/az-AZ-json-5d70eb8bf3f20abc3bac.d.ts +0 -2
  1194. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/bg-BG-json-88cced5fd8a6d8298501.d.ts +0 -2
  1195. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/bn-BD-json-a06588c61947851c8579.d.ts +0 -2
  1196. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/ca-ES-json-9b25933a25836cc0be23.d.ts +0 -2
  1197. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/cs-CZ-json-1d6c97ea271d017058c9.d.ts +0 -2
  1198. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/da-DK-json-34a60c9843cecd71376f.d.ts +0 -2
  1199. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/de-DE-json-d13450595b795867412b.d.ts +0 -2
  1200. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/el-GR-json-c854b199f3ac07d40294.d.ts +0 -2
  1201. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/es-ES-json-6a667bfbf4ff3d0181a7.d.ts +0 -2
  1202. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/eu-ES-json-3ec11367a80491b09056.d.ts +0 -2
  1203. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/fa-IR-json-e459964936177074abe7.d.ts +0 -2
  1204. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/fi-FI-json-f7839bb6f5ad0a3c7e0d.d.ts +0 -2
  1205. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/fr-FR-json-20e8535e2675a6736c81.d.ts +0 -2
  1206. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/gl-ES-json-861f534b46c0db1fa8db.d.ts +0 -2
  1207. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/he-IL-json-504d78736487793ffccd.d.ts +0 -2
  1208. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/hi-IN-json-82d988431011c330242a.d.ts +0 -2
  1209. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/hu-HU-json-d4150250980011726fd9.d.ts +0 -2
  1210. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/id-ID-json-82e300d4fe1e87adba9b.d.ts +0 -2
  1211. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/it-IT-json-6ecc9aec005faab90f41.d.ts +0 -2
  1212. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/ja-JP-json-3c6a065f0f1303b297fa.d.ts +0 -2
  1213. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/kaa-json-983a9ccc652aa01980f3.d.ts +0 -2
  1214. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/kab-KAB-json-cac3cf66f1db5c1a6e19.d.ts +0 -2
  1215. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/kk-KZ-json-e9dd81c22419efd44478.d.ts +0 -2
  1216. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/km-KH-json-be77acee611d96d88dda.d.ts +0 -2
  1217. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/ko-KR-json-ad8e9d31d52b26f3fbc2.d.ts +0 -2
  1218. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/ku-TR-json-ed67af91ae1920f114a8.d.ts +0 -2
  1219. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/lt-LT-json-2c3d35d6fb5dbf95a27e.d.ts +0 -2
  1220. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/lv-LV-json-fa8973c231afb2ddafe9.d.ts +0 -2
  1221. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/mr-IN-json-2949146743072eb11b40.d.ts +0 -2
  1222. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/my-MM-json-4c04ffe415641f69ed75.d.ts +0 -2
  1223. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/nb-NO-json-b8d7a5b70562dacdad45.d.ts +0 -2
  1224. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/nl-NL-json-a65f82a25fe038c45d35.d.ts +0 -2
  1225. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/nn-NO-json-858fbccbc5be386977db.d.ts +0 -2
  1226. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/oc-FR-json-a68ea08272c8da3c0e3f.d.ts +0 -2
  1227. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/pa-IN-json-90a2b3775bd7d8983def.d.ts +0 -2
  1228. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/pl-PL-json-9bb55330d5aaf336646e.d.ts +0 -2
  1229. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/pt-BR-json-3635e753c1b6e5b681fa.d.ts +0 -2
  1230. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/pt-PT-json-0d3694a92e0134549086.d.ts +0 -2
  1231. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/ro-RO-json-e83fda16c860c6d0b383.d.ts +0 -2
  1232. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/ru-RU-json-ddc13261ce5d864d36a9.d.ts +0 -2
  1233. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/si-LK-json-16eb66dbfc6c55fc85b1.d.ts +0 -2
  1234. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/sk-SK-json-782ead8707f2ad0e8e4e.d.ts +0 -2
  1235. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/sl-SI-json-82e55cf7cdbdc7d7f959.d.ts +0 -2
  1236. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/sv-SE-json-2f362899d3ac4089534f.d.ts +0 -2
  1237. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/ta-IN-json-07623a485202da63a84b.d.ts +0 -2
  1238. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/th-TH-json-4e4b97f5f6e905191383.d.ts +0 -2
  1239. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/tr-TR-json-003be1cf6ebf0b787dec.d.ts +0 -2
  1240. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/uk-UA-json-ca6ea1156db2649d3e27.d.ts +0 -2
  1241. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/vi-VN-json-9a5e5fab41a1a120a916.d.ts +0 -2
  1242. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/zh-CN-json-670c28a6ae1e3ddecaa4.d.ts +0 -2
  1243. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/zh-HK-json-93b9b676d4f4b5702797.d.ts +0 -2
  1244. package/types/packages/excalidraw/preact/excalidraw-assets-dev/locales/zh-TW-json-805d10b0eed9ca51b318.d.ts +0 -2
  1245. package/types/packages/excalidraw/preact/excalidraw-assets-dev/vendor-25e3a58caf3eb579acec.d.ts +0 -0
  1246. package/types/packages/excalidraw/preact/excalidraw-with-preact.development.d.ts +0 -2
  1247. package/types/packages/excalidraw/preact/excalidraw.development.d.ts +0 -2
  1248. package/types/packages/excalidraw/webpack.preact.prod.config.d.ts +0 -118
  1249. /package/types/packages/excalidraw/dist/{1482.d.ts → excalidraw-assets-dev/vendor-1e45dd9aba63a718dcee.d.ts} +0 -0
@@ -2419,7 +2419,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2419
2419
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2420
2420
 
2421
2421
  "use strict";
2422
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackEvent\": () => (/* binding */ trackEvent)\n/* harmony export */ });\nconst trackEvent = (category, action, label, value) => {\n try {\n // place here categories that you want to track as events\n // KEEP IN MIND THE PRICING\n const ALLOWED_CATEGORIES_TO_TRACK = []; // Uncomment the next line to track locally\n // console.log(\"Track Event\", { category, action, label, value });\n\n if (typeof window === \"undefined\" || ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.1\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).VITE_WORKER_ID) {\n return;\n }\n\n if (!ALLOWED_CATEGORIES_TO_TRACK.includes(category)) {\n return;\n }\n\n if (window.sa_event) {\n window.sa_event(action, {\n category,\n label,\n value\n });\n }\n } catch (error) {\n console.error(\"error during analytics\", error);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxvQ0FBb0MsZ0NBQWdDOztBQUVwRSx5Q0FBeUMsc3FDQUFXO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FuYWx5dGljcy50cz81NDIxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB0cmFja0V2ZW50ID0gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkgPT4ge1xuICB0cnkge1xuICAgIC8vIHBsYWNlIGhlcmUgY2F0ZWdvcmllcyB0aGF0IHlvdSB3YW50IHRvIHRyYWNrIGFzIGV2ZW50c1xuICAgIC8vIEtFRVAgSU4gTUlORCBUSEUgUFJJQ0lOR1xuICAgIGNvbnN0IEFMTE9XRURfQ0FURUdPUklFU19UT19UUkFDSyA9IFtdOyAvLyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byB0cmFjayBsb2NhbGx5XG4gICAgLy8gY29uc29sZS5sb2coXCJUcmFjayBFdmVudFwiLCB7IGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSB9KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiIHx8IHByb2Nlc3MuZW52LlZJVEVfV09SS0VSX0lEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFBTExPV0VEX0NBVEVHT1JJRVNfVE9fVFJBQ0suaW5jbHVkZXMoY2F0ZWdvcnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5zYV9ldmVudCkge1xuICAgICAgd2luZG93LnNhX2V2ZW50KGFjdGlvbiwge1xuICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcImVycm9yIGR1cmluZyBhbmFseXRpY3NcIiwgZXJyb3IpO1xuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n");
2422
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackEvent\": () => (/* binding */ trackEvent)\n/* harmony export */ });\nconst trackEvent = (category, action, label, value) => {\n try {\n // place here categories that you want to track as events\n // KEEP IN MIND THE PRICING\n const ALLOWED_CATEGORIES_TO_TRACK = []; // Uncomment the next line to track locally\n // console.log(\"Track Event\", { category, action, label, value });\n\n if (typeof window === \"undefined\" || ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.3\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).VITE_WORKER_ID) {\n return;\n }\n\n if (!ALLOWED_CATEGORIES_TO_TRACK.includes(category)) {\n return;\n }\n\n if (window.sa_event) {\n window.sa_event(action, {\n category,\n label,\n value\n });\n }\n } catch (error) {\n console.error(\"error during analytics\", error);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxvQ0FBb0MsZ0NBQWdDOztBQUVwRSx5Q0FBeUMsc3FDQUFXO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FuYWx5dGljcy50cz81NDIxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB0cmFja0V2ZW50ID0gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkgPT4ge1xuICB0cnkge1xuICAgIC8vIHBsYWNlIGhlcmUgY2F0ZWdvcmllcyB0aGF0IHlvdSB3YW50IHRvIHRyYWNrIGFzIGV2ZW50c1xuICAgIC8vIEtFRVAgSU4gTUlORCBUSEUgUFJJQ0lOR1xuICAgIGNvbnN0IEFMTE9XRURfQ0FURUdPUklFU19UT19UUkFDSyA9IFtdOyAvLyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byB0cmFjayBsb2NhbGx5XG4gICAgLy8gY29uc29sZS5sb2coXCJUcmFjayBFdmVudFwiLCB7IGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSB9KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiIHx8IHByb2Nlc3MuZW52LlZJVEVfV09SS0VSX0lEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFBTExPV0VEX0NBVEVHT1JJRVNfVE9fVFJBQ0suaW5jbHVkZXMoY2F0ZWdvcnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5zYV9ldmVudCkge1xuICAgICAgd2luZG93LnNhX2V2ZW50KGFjdGlvbiwge1xuICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcImVycm9yIGR1cmluZyBhbmFseXRpY3NcIiwgZXJyb3IpO1xuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n");
2423
2423
 
2424
2424
  /***/ }),
2425
2425
 
@@ -3871,7 +3871,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3871
3871
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3872
3872
 
3873
3873
  "use strict";
3874
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ElementBounds\": () => (/* binding */ ElementBounds),\n/* harmony export */ \"getArrowheadPoints\": () => (/* binding */ getArrowheadPoints),\n/* harmony export */ \"getBoundsFromPoints\": () => (/* binding */ getBoundsFromPoints),\n/* harmony export */ \"getClosestElementBounds\": () => (/* binding */ getClosestElementBounds),\n/* harmony export */ \"getCommonBoundingBox\": () => (/* binding */ getCommonBoundingBox),\n/* harmony export */ \"getCommonBounds\": () => (/* binding */ getCommonBounds),\n/* harmony export */ \"getCurvePathOps\": () => (/* binding */ getCurvePathOps),\n/* harmony export */ \"getDiamondPoints\": () => (/* binding */ getDiamondPoints),\n/* harmony export */ \"getDraggedElementsBounds\": () => (/* binding */ getDraggedElementsBounds),\n/* harmony export */ \"getElementAbsoluteCoords\": () => (/* binding */ getElementAbsoluteCoords),\n/* harmony export */ \"getElementBounds\": () => (/* binding */ getElementBounds),\n/* harmony export */ \"getElementLineSegments\": () => (/* binding */ getElementLineSegments),\n/* harmony export */ \"getElementPointsCoords\": () => (/* binding */ getElementPointsCoords),\n/* harmony export */ \"getMinMaxXYFromCurvePathOps\": () => (/* binding */ getMinMaxXYFromCurvePathOps),\n/* harmony export */ \"getRectangleBoxAbsoluteCoords\": () => (/* binding */ getRectangleBoxAbsoluteCoords),\n/* harmony export */ \"getResizedElementAbsoluteCoords\": () => (/* binding */ getResizedElementAbsoluteCoords),\n/* harmony export */ \"pointRelativeTo\": () => (/* binding */ pointRelativeTo)\n/* harmony export */ });\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math */ \"../../math.ts\");\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _scene_Shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/Shape */ \"../../scene/Shape.ts\");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ \"../../element/typeChecks.ts\");\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../points */ \"../../points.ts\");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./textElement */ \"../../element/textElement.ts\");\n/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./linearElementEditor */ \"../../element/linearElementEditor.ts\");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene/ShapeCache */ \"../../scene/ShapeCache.ts\");\n\n\n\n\n\n\n\n\nclass ElementBounds {\n static getBounds(element) {\n const cachedBounds = ElementBounds.boundsCache.get(element);\n\n if ((cachedBounds === null || cachedBounds === void 0 ? void 0 : cachedBounds.version) && cachedBounds.version === element.version && // we don't invalidate cache when we update containers and not labels,\n // which is causing problems down the line. Fix TBA.\n !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isBoundToContainer)(element)) {\n return cachedBounds.bounds;\n }\n\n const bounds = ElementBounds.calculateBounds(element);\n ElementBounds.boundsCache.set(element, {\n version: element.version,\n bounds\n });\n return bounds;\n }\n\n static calculateBounds(element) {\n let bounds;\n const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element);\n\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points.map(([x, y]) => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x, y, cx - element.x, cy - element.y, element.angle)));\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\n bounds = getLinearElementRotatedBounds(element, cx, cy);\n } else if (element.type === \"diamond\") {\n const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y1, cx, cy, element.angle);\n const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y2, cx, cy, element.angle);\n const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, cy, cx, cy, element.angle);\n const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, cy, cx, cy, element.angle);\n const minX = Math.min(x11, x12, x22, x21);\n const minY = Math.min(y11, y12, y22, y21);\n const maxX = Math.max(x11, x12, x22, x21);\n const maxY = Math.max(y11, y12, y22, y21);\n bounds = [minX, minY, maxX, maxY];\n } else if (element.type === \"ellipse\") {\n const w = (x2 - x1) / 2;\n const h = (y2 - y1) / 2;\n const cos = Math.cos(element.angle);\n const sin = Math.sin(element.angle);\n const ww = Math.hypot(w * cos, h * sin);\n const hh = Math.hypot(h * cos, w * sin);\n bounds = [cx - ww, cy - hh, cx + ww, cy + hh];\n } else {\n const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y1, cx, cy, element.angle);\n const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y2, cx, cy, element.angle);\n const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y2, cx, cy, element.angle);\n const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y1, cx, cy, element.angle);\n const minX = Math.min(x11, x12, x22, x21);\n const minY = Math.min(y11, y12, y22, y21);\n const maxX = Math.max(x11, x12, x22, x21);\n const maxY = Math.max(y11, y12, y22, y21);\n bounds = [minX, minY, maxX, maxY];\n }\n\n return bounds;\n }\n\n}\nElementBounds.boundsCache = new WeakMap(); // Scene -> Scene coords, but in x1,x2,y1,y2 format.\n//\n// If the element is created from right to left, the width is going to be negative\n// This set of functions retrieves the absolute position of the 4 points.\n\nconst getElementAbsoluteCoords = (element, includeBoundText = false) => {\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n return getFreeDrawElementAbsoluteCoords(element);\n } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\n return _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getElementAbsoluteCoords(element, includeBoundText);\n } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(element)) {\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getContainerElement)(element);\n\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container)) {\n const coords = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getBoundTextElementPosition(container, element);\n return [coords.x, coords.y, coords.x + element.width, coords.y + element.height, coords.x + element.width / 2, coords.y + element.height / 2];\n }\n }\n\n return [element.x, element.y, element.x + element.width, element.y + element.height, element.x + element.width / 2, element.y + element.height / 2];\n};\n/*\n * for a given element, `getElementLineSegments` returns line segments\n * that can be used for visual collision detection (useful for frames)\n * as opposed to bounding box collision detection\n */\n\nconst getElementLineSegments = element => {\n const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element);\n const center = [cx, cy];\n\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n const segments = [];\n let i = 0;\n\n while (i < element.points.length - 1) {\n segments.push([(0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([element.points[i][0] + element.x, element.points[i][1] + element.y], center, element.angle), (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([element.points[i + 1][0] + element.x, element.points[i + 1][1] + element.y], center, element.angle)]);\n i++;\n }\n\n return segments;\n }\n\n const [nw, ne, sw, se, n, s, w, e] = [[x1, y1], [x2, y1], [x1, y2], [x2, y2], [cx, y1], [cx, y2], [x1, cy], [x2, cy]].map(point => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)(point, center, element.angle));\n\n if (element.type === \"diamond\") {\n return [[n, w], [n, e], [s, w], [s, e]];\n }\n\n if (element.type === \"ellipse\") {\n return [[n, w], [n, e], [s, w], [s, e], [n, w], [n, e], [s, w], [s, e]];\n }\n\n return [[nw, ne], [sw, se], [nw, sw], [ne, se], [nw, e], [sw, e], [ne, w], [se, w]];\n};\n/**\n * Scene -> Scene coords, but in x1,x2,y1,y2 format.\n *\n * Rectangle here means any rectangular frame, not an excalidraw element.\n */\n\nconst getRectangleBoxAbsoluteCoords = boxSceneCoords => {\n return [boxSceneCoords.x, boxSceneCoords.y, boxSceneCoords.x + boxSceneCoords.width, boxSceneCoords.y + boxSceneCoords.height, boxSceneCoords.x + boxSceneCoords.width / 2, boxSceneCoords.y + boxSceneCoords.height / 2];\n};\nconst pointRelativeTo = (element, absoluteCoords) => {\n return [absoluteCoords[0] - element.x, absoluteCoords[1] - element.y];\n};\nconst getDiamondPoints = element => {\n // Here we add +1 to avoid these numbers to be 0\n // otherwise rough.js will throw an error complaining about it\n const topX = Math.floor(element.width / 2) + 1;\n const topY = 0;\n const rightX = element.width;\n const rightY = Math.floor(element.height / 2) + 1;\n const bottomX = topX;\n const bottomY = element.height;\n const leftX = 0;\n const leftY = rightY;\n return [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY];\n};\nconst getCurvePathOps = shape => {\n for (const set of shape.sets) {\n if (set.type === \"path\") {\n return set.ops;\n }\n }\n\n return shape.sets[0].ops;\n}; // reference: https://eliot-jones.com/2019/12/cubic-bezier-curve-bounding-boxes\n\nconst getBezierValueForT = (t, p0, p1, p2, p3) => {\n const oneMinusT = 1 - t;\n return Math.pow(oneMinusT, 3) * p0 + 3 * Math.pow(oneMinusT, 2) * t * p1 + 3 * oneMinusT * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n};\n\nconst solveQuadratic = (p0, p1, p2, p3) => {\n const i = p1 - p0;\n const j = p2 - p1;\n const k = p3 - p2;\n const a = 3 * i - 6 * j + 3 * k;\n const b = 6 * j - 6 * i;\n const c = 3 * i;\n const sqrtPart = b * b - 4 * a * c;\n const hasSolution = sqrtPart >= 0;\n\n if (!hasSolution) {\n return false;\n }\n\n let s1 = null;\n let s2 = null;\n let t1 = Infinity;\n let t2 = Infinity;\n\n if (a === 0) {\n t1 = t2 = -c / b;\n } else {\n t1 = (-b + Math.sqrt(sqrtPart)) / (2 * a);\n t2 = (-b - Math.sqrt(sqrtPart)) / (2 * a);\n }\n\n if (t1 >= 0 && t1 <= 1) {\n s1 = getBezierValueForT(t1, p0, p1, p2, p3);\n }\n\n if (t2 >= 0 && t2 <= 1) {\n s2 = getBezierValueForT(t2, p0, p1, p2, p3);\n }\n\n return [s1, s2];\n};\n\nconst getCubicBezierCurveBound = (p0, p1, p2, p3) => {\n const solX = solveQuadratic(p0[0], p1[0], p2[0], p3[0]);\n const solY = solveQuadratic(p0[1], p1[1], p2[1], p3[1]);\n let minX = Math.min(p0[0], p3[0]);\n let maxX = Math.max(p0[0], p3[0]);\n\n if (solX) {\n const xs = solX.filter(x => x !== null);\n minX = Math.min(minX, ...xs);\n maxX = Math.max(maxX, ...xs);\n }\n\n let minY = Math.min(p0[1], p3[1]);\n let maxY = Math.max(p0[1], p3[1]);\n\n if (solY) {\n const ys = solY.filter(y => y !== null);\n minY = Math.min(minY, ...ys);\n maxY = Math.max(maxY, ...ys);\n }\n\n return [minX, minY, maxX, maxY];\n};\n\nconst getMinMaxXYFromCurvePathOps = (ops, transformXY) => {\n let currentP = [0, 0];\n const {\n minX,\n minY,\n maxX,\n maxY\n } = ops.reduce((limits, {\n op,\n data\n }) => {\n // There are only four operation types:\n // move, bcurveTo, lineTo, and curveTo\n if (op === \"move\") {\n // change starting point\n currentP = data; // move operation does not draw anything; so, it always\n // returns false\n } else if (op === \"bcurveTo\") {\n const _p1 = [data[0], data[1]];\n const _p2 = [data[2], data[3]];\n const _p3 = [data[4], data[5]];\n const p1 = transformXY ? transformXY(..._p1) : _p1;\n const p2 = transformXY ? transformXY(..._p2) : _p2;\n const p3 = transformXY ? transformXY(..._p3) : _p3;\n const p0 = transformXY ? transformXY(...currentP) : currentP;\n currentP = _p3;\n const [minX, minY, maxX, maxY] = getCubicBezierCurveBound(p0, p1, p2, p3);\n limits.minX = Math.min(limits.minX, minX);\n limits.minY = Math.min(limits.minY, minY);\n limits.maxX = Math.max(limits.maxX, maxX);\n limits.maxY = Math.max(limits.maxY, maxY);\n } else if (op === \"lineTo\") {// TODO: Implement this\n } else if (op === \"qcurveTo\") {// TODO: Implement this\n }\n\n return limits;\n }, {\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n });\n return [minX, minY, maxX, maxY];\n};\nconst getBoundsFromPoints = points => {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const [x, y] of points) {\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n\n return [minX, minY, maxX, maxY];\n};\n\nconst getFreeDrawElementAbsoluteCoords = element => {\n const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points);\n const x1 = minX + element.x;\n const y1 = minY + element.y;\n const x2 = maxX + element.x;\n const y2 = maxY + element.y;\n return [x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2];\n};\n\nconst getArrowheadPoints = (element, shape, position, arrowhead) => {\n const ops = getCurvePathOps(shape[0]);\n\n if (ops.length < 1) {\n return null;\n } // The index of the bCurve operation to examine.\n\n\n const index = position === \"start\" ? 1 : ops.length - 1;\n const data = ops[index].data;\n const p3 = [data[4], data[5]];\n const p2 = [data[2], data[3]];\n const p1 = [data[0], data[1]]; // We need to find p0 of the bezier curve.\n // It is typically the last point of the previous\n // curve; it can also be the position of moveTo operation.\n\n const prevOp = ops[index - 1];\n let p0 = [0, 0];\n\n if (prevOp.op === \"move\") {\n p0 = prevOp.data;\n } else if (prevOp.op === \"bcurveTo\") {\n p0 = [prevOp.data[4], prevOp.data[5]];\n } // B(t) = p0 * (1-t)^3 + 3p1 * t * (1-t)^2 + 3p2 * t^2 * (1-t) + p3 * t^3\n\n\n const equation = (t, idx) => Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3); // Ee know the last point of the arrow (or the first, if start arrowhead).\n\n\n const [x2, y2] = position === \"start\" ? p0 : p3; // By using cubic bezier equation (B(t)) and the given parameters,\n // we calculate a point that is closer to the last point.\n // The value 0.3 is chosen arbitrarily and it works best for all\n // the tested cases.\n\n const [x1, y1] = [equation(0.3, 0), equation(0.3, 1)]; // Find the normalized direction vector based on the\n // previously calculated points.\n\n const distance = Math.hypot(x2 - x1, y2 - y1);\n const nx = (x2 - x1) / distance;\n const ny = (y2 - y1) / distance;\n const size = {\n arrow: 30,\n bar: 15,\n dot: 15,\n triangle: 15\n }[arrowhead]; // pixels (will differ for each arrowhead)\n\n let length = 0;\n\n if (arrowhead === \"arrow\") {\n // Length for -> arrows is based on the length of the last section\n const [cx, cy] = element.points[element.points.length - 1];\n const [px, py] = element.points.length > 1 ? element.points[element.points.length - 2] : [0, 0];\n length = Math.hypot(cx - px, cy - py);\n } else {\n // Length for other arrowhead types is based on the total length of the line\n for (let i = 0; i < element.points.length; i++) {\n const [px, py] = element.points[i - 1] || [0, 0];\n const [cx, cy] = element.points[i];\n length += Math.hypot(cx - px, cy - py);\n }\n } // Scale down the arrowhead until we hit a certain size so that it doesn't look weird.\n // This value is selected by minimizing a minimum size with the last segment of the arrowhead\n\n\n const minSize = Math.min(size, length / 2);\n const xs = x2 - nx * minSize;\n const ys = y2 - ny * minSize;\n\n if (arrowhead === \"dot\") {\n const r = Math.hypot(ys - y2, xs - x2) + element.strokeWidth;\n return [x2, y2, r];\n }\n\n const angle = {\n arrow: 20,\n bar: 90,\n triangle: 25\n }[arrowhead]; // degrees\n // Return points\n\n const [x3, y3] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, -angle * Math.PI / 180);\n const [x4, y4] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, angle * Math.PI / 180);\n return [x2, y2, x3, y3, x4, y4];\n};\n\nconst generateLinearElementShape = element => {\n const generator = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generator();\n const options = (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element);\n\n const method = (() => {\n if (element.roundness) {\n return \"curve\";\n }\n\n if (options.fill) {\n return \"polygon\";\n }\n\n return \"linearPath\";\n })();\n\n return generator[method](element.points, options);\n};\n\nconst getLinearElementRotatedBounds = (element, cx, cy) => {\n var _a;\n\n if (element.points.length < 2) {\n const [pointX, pointY] = element.points[0];\n const [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + pointX, element.y + pointY, cx, cy, element.angle);\n let coords = [x, y, x, y];\n const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getBoundTextElement)(element);\n\n if (boundTextElement) {\n const coordsWithBoundText = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getMinMaxXYWithBoundText(element, [x, y, x, y], boundTextElement);\n coords = [coordsWithBoundText[0], coordsWithBoundText[1], coordsWithBoundText[2], coordsWithBoundText[3]];\n }\n\n return coords;\n } // first element is always the curve\n\n\n const cachedShape = (_a = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_7__.ShapeCache.get(element)) === null || _a === void 0 ? void 0 : _a[0];\n const shape = cachedShape !== null && cachedShape !== void 0 ? cachedShape : generateLinearElementShape(element);\n const ops = getCurvePathOps(shape);\n\n const transformXY = (x, y) => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + x, element.y + y, cx, cy, element.angle);\n\n const res = getMinMaxXYFromCurvePathOps(ops, transformXY);\n let coords = [res[0], res[1], res[2], res[3]];\n const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getBoundTextElement)(element);\n\n if (boundTextElement) {\n const coordsWithBoundText = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getMinMaxXYWithBoundText(element, coords, boundTextElement);\n coords = [coordsWithBoundText[0], coordsWithBoundText[1], coordsWithBoundText[2], coordsWithBoundText[3]];\n }\n\n return coords;\n};\n\nconst getElementBounds = element => {\n return ElementBounds.getBounds(element);\n};\nconst getCommonBounds = elements => {\n if (!elements.length) {\n return [0, 0, 0, 0];\n }\n\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n elements.forEach(element => {\n const [x1, y1, x2, y2] = getElementBounds(element);\n minX = Math.min(minX, x1);\n minY = Math.min(minY, y1);\n maxX = Math.max(maxX, x2);\n maxY = Math.max(maxY, y2);\n });\n return [minX, minY, maxX, maxY];\n};\nconst getDraggedElementsBounds = (elements, dragOffset) => {\n const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n return [minX + dragOffset.x, minY + dragOffset.y, maxX + dragOffset.x, maxY + dragOffset.y];\n};\nconst getResizedElementAbsoluteCoords = (element, nextWidth, nextHeight, normalizePoints) => {\n if (!((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element))) {\n return [element.x, element.y, element.x + nextWidth, element.y + nextHeight];\n }\n\n const points = (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(0, nextWidth, (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(1, nextHeight, element.points, normalizePoints), normalizePoints);\n let bounds;\n\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n // Free Draw\n bounds = getBoundsFromPoints(points);\n } else {\n // Line\n const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generator();\n const curve = !element.roundness ? gen.linearPath(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\n const ops = getCurvePathOps(curve);\n bounds = getMinMaxXYFromCurvePathOps(ops);\n }\n\n const [minX, minY, maxX, maxY] = bounds;\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n};\nconst getElementPointsCoords = (element, points) => {\n // This might be computationally heavey\n const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generator();\n const curve = element.roundness == null ? gen.linearPath(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\n const ops = getCurvePathOps(curve);\n const [minX, minY, maxX, maxY] = getMinMaxXYFromCurvePathOps(ops);\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n};\nconst getClosestElementBounds = (elements, from) => {\n if (!elements.length) {\n return [0, 0, 0, 0];\n }\n\n let minDistance = Infinity;\n let closestElement = elements[0];\n elements.forEach(element => {\n const [x1, y1, x2, y2] = getElementBounds(element);\n const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)((x1 + x2) / 2, (y1 + y2) / 2, from.x, from.y);\n\n if (distance < minDistance) {\n minDistance = distance;\n closestElement = element;\n }\n });\n return getElementBounds(closestElement);\n};\nconst getCommonBoundingBox = elements => {\n const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n return {\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n midX: (minX + maxX) / 2,\n midY: (minY + maxY) / 2\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZWxlbWVudC9ib3VuZHMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUEwRDtBQUNwQjtBQUNnQjtBQUMrRDtBQUMzRTtBQUMrQjtBQUNiO0FBQ1g7QUFDMUM7QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLLCtEQUFrQjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsOERBQWlCO0FBQ3pCLDBGQUEwRiw2Q0FBTTtBQUNoRztBQUNBLE1BQU0sU0FBUyw0REFBZTtBQUM5QjtBQUNBLE1BQU07QUFDTix5QkFBeUIsNkNBQU07QUFDL0IseUJBQXlCLDZDQUFNO0FBQy9CLHlCQUF5Qiw2Q0FBTTtBQUMvQix5QkFBeUIsNkNBQU07QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTix5QkFBeUIsNkNBQU07QUFDL0IseUJBQXlCLDZDQUFNO0FBQy9CLHlCQUF5Qiw2Q0FBTTtBQUMvQix5QkFBeUIsNkNBQU07QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBOztBQUVPO0FBQ1AsTUFBTSw4REFBaUI7QUFDdkI7QUFDQSxJQUFJLFNBQVMsNERBQWU7QUFDNUIsV0FBVyw4RkFBNEM7QUFDdkQsSUFBSSxTQUFTLDBEQUFhO0FBQzFCLHNCQUFzQixpRUFBbUI7O0FBRXpDLFFBQVEsMkRBQWM7QUFDdEIscUJBQXFCLGlHQUErQztBQUNwRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBLE1BQU0sNERBQWUsYUFBYSw4REFBaUI7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixrREFBVywrRkFBK0Ysa0RBQVc7QUFDMUk7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHFJQUFxSSxrREFBVzs7QUFFaEo7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMENBQTBDO0FBQ2pFO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSwyQkFBMkI7QUFDakMsTUFBTSw2QkFBNkI7QUFDbkM7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBLFlBQVk7O0FBRVo7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTs7O0FBR0osd0tBQXdLOzs7QUFHeEssbURBQW1EO0FBQ25EO0FBQ0E7QUFDQTs7QUFFQSx5REFBeUQ7QUFDekQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsYUFBYTs7QUFFaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLG9CQUFvQiwyQkFBMkI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsYUFBYTtBQUNoQjs7QUFFQSxtQkFBbUIsNkNBQU07QUFDekIsbUJBQW1CLDZDQUFNO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsbUVBQWU7QUFDbkMsa0JBQWtCLGtFQUFvQjs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQiw2Q0FBTTtBQUN6QjtBQUNBLDZCQUE2QixpRUFBbUI7O0FBRWhEO0FBQ0Esa0NBQWtDLDhGQUE0QztBQUM5RTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0osNEJBQTRCLDZEQUFjO0FBQzFDO0FBQ0E7O0FBRUEsZ0NBQWdDLDZDQUFNOztBQUV0QztBQUNBO0FBQ0EsMkJBQTJCLGlFQUFtQjs7QUFFOUM7QUFDQSxnQ0FBZ0MsOEZBQTRDO0FBQzVFO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDTztBQUNQLFFBQVEsNERBQWUsYUFBYSw4REFBaUI7QUFDckQ7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQWEsZUFBZSxzREFBYTtBQUMxRDs7QUFFQSxNQUFNLDhEQUFpQjtBQUN2QjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsZ0JBQWdCLG1FQUFlO0FBQy9CLDhEQUE4RCxrRUFBb0IsK0JBQStCLGtFQUFvQjtBQUNySTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLGNBQWMsbUVBQWU7QUFDN0IsbUVBQW1FLGtFQUFvQiwrQkFBK0Isa0VBQW9CO0FBQzFJO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbGVtZW50L2JvdW5kcy50cz9mY2EwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RhbmNlMmQsIHJvdGF0ZSwgcm90YXRlUG9pbnQgfSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHJvdWdoIGZyb20gXCJyb3VnaGpzL2Jpbi9yb3VnaFwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVSb3VnaE9wdGlvbnMgfSBmcm9tIFwiLi4vc2NlbmUvU2hhcGVcIjtcbmltcG9ydCB7IGlzQXJyb3dFbGVtZW50LCBpc0JvdW5kVG9Db250YWluZXIsIGlzRnJlZURyYXdFbGVtZW50LCBpc0xpbmVhckVsZW1lbnQsIGlzVGV4dEVsZW1lbnQgfSBmcm9tIFwiLi90eXBlQ2hlY2tzXCI7XG5pbXBvcnQgeyByZXNjYWxlUG9pbnRzIH0gZnJvbSBcIi4uL3BvaW50c1wiO1xuaW1wb3J0IHsgZ2V0Qm91bmRUZXh0RWxlbWVudCwgZ2V0Q29udGFpbmVyRWxlbWVudCB9IGZyb20gXCIuL3RleHRFbGVtZW50XCI7XG5pbXBvcnQgeyBMaW5lYXJFbGVtZW50RWRpdG9yIH0gZnJvbSBcIi4vbGluZWFyRWxlbWVudEVkaXRvclwiO1xuaW1wb3J0IHsgU2hhcGVDYWNoZSB9IGZyb20gXCIuLi9zY2VuZS9TaGFwZUNhY2hlXCI7XG5leHBvcnQgY2xhc3MgRWxlbWVudEJvdW5kcyB7XG4gIHN0YXRpYyBnZXRCb3VuZHMoZWxlbWVudCkge1xuICAgIGNvbnN0IGNhY2hlZEJvdW5kcyA9IEVsZW1lbnRCb3VuZHMuYm91bmRzQ2FjaGUuZ2V0KGVsZW1lbnQpO1xuXG4gICAgaWYgKChjYWNoZWRCb3VuZHMgPT09IG51bGwgfHwgY2FjaGVkQm91bmRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYWNoZWRCb3VuZHMudmVyc2lvbikgJiYgY2FjaGVkQm91bmRzLnZlcnNpb24gPT09IGVsZW1lbnQudmVyc2lvbiAmJiAvLyB3ZSBkb24ndCBpbnZhbGlkYXRlIGNhY2hlIHdoZW4gd2UgdXBkYXRlIGNvbnRhaW5lcnMgYW5kIG5vdCBsYWJlbHMsXG4gICAgLy8gd2hpY2ggaXMgY2F1c2luZyBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBGaXggVEJBLlxuICAgICFpc0JvdW5kVG9Db250YWluZXIoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBjYWNoZWRCb3VuZHMuYm91bmRzO1xuICAgIH1cblxuICAgIGNvbnN0IGJvdW5kcyA9IEVsZW1lbnRCb3VuZHMuY2FsY3VsYXRlQm91bmRzKGVsZW1lbnQpO1xuICAgIEVsZW1lbnRCb3VuZHMuYm91bmRzQ2FjaGUuc2V0KGVsZW1lbnQsIHtcbiAgICAgIHZlcnNpb246IGVsZW1lbnQudmVyc2lvbixcbiAgICAgIGJvdW5kc1xuICAgIH0pO1xuICAgIHJldHVybiBib3VuZHM7XG4gIH1cblxuICBzdGF0aWMgY2FsY3VsYXRlQm91bmRzKGVsZW1lbnQpIHtcbiAgICBsZXQgYm91bmRzO1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5MiwgY3gsIGN5XSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcblxuICAgIGlmIChpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgICAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0Qm91bmRzRnJvbVBvaW50cyhlbGVtZW50LnBvaW50cy5tYXAoKFt4LCB5XSkgPT4gcm90YXRlKHgsIHksIGN4IC0gZWxlbWVudC54LCBjeSAtIGVsZW1lbnQueSwgZWxlbWVudC5hbmdsZSkpKTtcbiAgICAgIHJldHVybiBbbWluWCArIGVsZW1lbnQueCwgbWluWSArIGVsZW1lbnQueSwgbWF4WCArIGVsZW1lbnQueCwgbWF4WSArIGVsZW1lbnQueV07XG4gICAgfSBlbHNlIGlmIChpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgIGJvdW5kcyA9IGdldExpbmVhckVsZW1lbnRSb3RhdGVkQm91bmRzKGVsZW1lbnQsIGN4LCBjeSk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09IFwiZGlhbW9uZFwiKSB7XG4gICAgICBjb25zdCBbeDExLCB5MTFdID0gcm90YXRlKGN4LCB5MSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICAgIGNvbnN0IFt4MTIsIHkxMl0gPSByb3RhdGUoY3gsIHkyLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgICAgY29uc3QgW3gyMiwgeTIyXSA9IHJvdGF0ZSh4MSwgY3ksIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG4gICAgICBjb25zdCBbeDIxLCB5MjFdID0gcm90YXRlKHgyLCBjeSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICAgIGNvbnN0IG1pblggPSBNYXRoLm1pbih4MTEsIHgxMiwgeDIyLCB4MjEpO1xuICAgICAgY29uc3QgbWluWSA9IE1hdGgubWluKHkxMSwgeTEyLCB5MjIsIHkyMSk7XG4gICAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoeDExLCB4MTIsIHgyMiwgeDIxKTtcbiAgICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heCh5MTEsIHkxMiwgeTIyLCB5MjEpO1xuICAgICAgYm91bmRzID0gW21pblgsIG1pblksIG1heFgsIG1heFldO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSBcImVsbGlwc2VcIikge1xuICAgICAgY29uc3QgdyA9ICh4MiAtIHgxKSAvIDI7XG4gICAgICBjb25zdCBoID0gKHkyIC0geTEpIC8gMjtcbiAgICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKGVsZW1lbnQuYW5nbGUpO1xuICAgICAgY29uc3Qgc2luID0gTWF0aC5zaW4oZWxlbWVudC5hbmdsZSk7XG4gICAgICBjb25zdCB3dyA9IE1hdGguaHlwb3QodyAqIGNvcywgaCAqIHNpbik7XG4gICAgICBjb25zdCBoaCA9IE1hdGguaHlwb3QoaCAqIGNvcywgdyAqIHNpbik7XG4gICAgICBib3VuZHMgPSBbY3ggLSB3dywgY3kgLSBoaCwgY3ggKyB3dywgY3kgKyBoaF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFt4MTEsIHkxMV0gPSByb3RhdGUoeDEsIHkxLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgICAgY29uc3QgW3gxMiwgeTEyXSA9IHJvdGF0ZSh4MSwgeTIsIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG4gICAgICBjb25zdCBbeDIyLCB5MjJdID0gcm90YXRlKHgyLCB5MiwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICAgIGNvbnN0IFt4MjEsIHkyMV0gPSByb3RhdGUoeDIsIHkxLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgICAgY29uc3QgbWluWCA9IE1hdGgubWluKHgxMSwgeDEyLCB4MjIsIHgyMSk7XG4gICAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oeTExLCB5MTIsIHkyMiwgeTIxKTtcbiAgICAgIGNvbnN0IG1heFggPSBNYXRoLm1heCh4MTEsIHgxMiwgeDIyLCB4MjEpO1xuICAgICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KHkxMSwgeTEyLCB5MjIsIHkyMSk7XG4gICAgICBib3VuZHMgPSBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvdW5kcztcbiAgfVxuXG59XG5FbGVtZW50Qm91bmRzLmJvdW5kc0NhY2hlID0gbmV3IFdlYWtNYXAoKTsgLy8gU2NlbmUgLT4gU2NlbmUgY29vcmRzLCBidXQgaW4geDEseDIseTEseTIgZm9ybWF0LlxuLy9cbi8vIElmIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0LCB0aGUgd2lkdGggaXMgZ29pbmcgdG8gYmUgbmVnYXRpdmVcbi8vIFRoaXMgc2V0IG9mIGZ1bmN0aW9ucyByZXRyaWV2ZXMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSA0IHBvaW50cy5cblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyA9IChlbGVtZW50LCBpbmNsdWRlQm91bmRUZXh0ID0gZmFsc2UpID0+IHtcbiAgaWYgKGlzRnJlZURyYXdFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGdldEZyZWVEcmF3RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICB9IGVsc2UgaWYgKGlzTGluZWFyRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiBMaW5lYXJFbGVtZW50RWRpdG9yLmdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50LCBpbmNsdWRlQm91bmRUZXh0KTtcbiAgfSBlbHNlIGlmIChpc1RleHRFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyRWxlbWVudChlbGVtZW50KTtcblxuICAgIGlmIChpc0Fycm93RWxlbWVudChjb250YWluZXIpKSB7XG4gICAgICBjb25zdCBjb29yZHMgPSBMaW5lYXJFbGVtZW50RWRpdG9yLmdldEJvdW5kVGV4dEVsZW1lbnRQb3NpdGlvbihjb250YWluZXIsIGVsZW1lbnQpO1xuICAgICAgcmV0dXJuIFtjb29yZHMueCwgY29vcmRzLnksIGNvb3Jkcy54ICsgZWxlbWVudC53aWR0aCwgY29vcmRzLnkgKyBlbGVtZW50LmhlaWdodCwgY29vcmRzLnggKyBlbGVtZW50LndpZHRoIC8gMiwgY29vcmRzLnkgKyBlbGVtZW50LmhlaWdodCAvIDJdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbZWxlbWVudC54LCBlbGVtZW50LnksIGVsZW1lbnQueCArIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQueSArIGVsZW1lbnQuaGVpZ2h0LCBlbGVtZW50LnggKyBlbGVtZW50LndpZHRoIC8gMiwgZWxlbWVudC55ICsgZWxlbWVudC5oZWlnaHQgLyAyXTtcbn07XG4vKlxuICogZm9yIGEgZ2l2ZW4gZWxlbWVudCwgYGdldEVsZW1lbnRMaW5lU2VnbWVudHNgIHJldHVybnMgbGluZSBzZWdtZW50c1xuICogdGhhdCBjYW4gYmUgdXNlZCBmb3IgdmlzdWFsIGNvbGxpc2lvbiBkZXRlY3Rpb24gKHVzZWZ1bCBmb3IgZnJhbWVzKVxuICogYXMgb3Bwb3NlZCB0byBib3VuZGluZyBib3ggY29sbGlzaW9uIGRldGVjdGlvblxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50TGluZVNlZ21lbnRzID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IFt4MSwgeTEsIHgyLCB5MiwgY3gsIGN5XSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgY29uc3QgY2VudGVyID0gW2N4LCBjeV07XG5cbiAgaWYgKGlzTGluZWFyRWxlbWVudChlbGVtZW50KSB8fCBpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gW107XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgd2hpbGUgKGkgPCBlbGVtZW50LnBvaW50cy5sZW5ndGggLSAxKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKFtyb3RhdGVQb2ludChbZWxlbWVudC5wb2ludHNbaV1bMF0gKyBlbGVtZW50LngsIGVsZW1lbnQucG9pbnRzW2ldWzFdICsgZWxlbWVudC55XSwgY2VudGVyLCBlbGVtZW50LmFuZ2xlKSwgcm90YXRlUG9pbnQoW2VsZW1lbnQucG9pbnRzW2kgKyAxXVswXSArIGVsZW1lbnQueCwgZWxlbWVudC5wb2ludHNbaSArIDFdWzFdICsgZWxlbWVudC55XSwgY2VudGVyLCBlbGVtZW50LmFuZ2xlKV0pO1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiBzZWdtZW50cztcbiAgfVxuXG4gIGNvbnN0IFtudywgbmUsIHN3LCBzZSwgbiwgcywgdywgZV0gPSBbW3gxLCB5MV0sIFt4MiwgeTFdLCBbeDEsIHkyXSwgW3gyLCB5Ml0sIFtjeCwgeTFdLCBbY3gsIHkyXSwgW3gxLCBjeV0sIFt4MiwgY3ldXS5tYXAocG9pbnQgPT4gcm90YXRlUG9pbnQocG9pbnQsIGNlbnRlciwgZWxlbWVudC5hbmdsZSkpO1xuXG4gIGlmIChlbGVtZW50LnR5cGUgPT09IFwiZGlhbW9uZFwiKSB7XG4gICAgcmV0dXJuIFtbbiwgd10sIFtuLCBlXSwgW3MsIHddLCBbcywgZV1dO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJlbGxpcHNlXCIpIHtcbiAgICByZXR1cm4gW1tuLCB3XSwgW24sIGVdLCBbcywgd10sIFtzLCBlXSwgW24sIHddLCBbbiwgZV0sIFtzLCB3XSwgW3MsIGVdXTtcbiAgfVxuXG4gIHJldHVybiBbW253LCBuZV0sIFtzdywgc2VdLCBbbncsIHN3XSwgW25lLCBzZV0sIFtudywgZV0sIFtzdywgZV0sIFtuZSwgd10sIFtzZSwgd11dO1xufTtcbi8qKlxuICogU2NlbmUgLT4gU2NlbmUgY29vcmRzLCBidXQgaW4geDEseDIseTEseTIgZm9ybWF0LlxuICpcbiAqIFJlY3RhbmdsZSBoZXJlIG1lYW5zIGFueSByZWN0YW5ndWxhciBmcmFtZSwgbm90IGFuIGV4Y2FsaWRyYXcgZWxlbWVudC5cbiAqL1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjdGFuZ2xlQm94QWJzb2x1dGVDb29yZHMgPSBib3hTY2VuZUNvb3JkcyA9PiB7XG4gIHJldHVybiBbYm94U2NlbmVDb29yZHMueCwgYm94U2NlbmVDb29yZHMueSwgYm94U2NlbmVDb29yZHMueCArIGJveFNjZW5lQ29vcmRzLndpZHRoLCBib3hTY2VuZUNvb3Jkcy55ICsgYm94U2NlbmVDb29yZHMuaGVpZ2h0LCBib3hTY2VuZUNvb3Jkcy54ICsgYm94U2NlbmVDb29yZHMud2lkdGggLyAyLCBib3hTY2VuZUNvb3Jkcy55ICsgYm94U2NlbmVDb29yZHMuaGVpZ2h0IC8gMl07XG59O1xuZXhwb3J0IGNvbnN0IHBvaW50UmVsYXRpdmVUbyA9IChlbGVtZW50LCBhYnNvbHV0ZUNvb3JkcykgPT4ge1xuICByZXR1cm4gW2Fic29sdXRlQ29vcmRzWzBdIC0gZWxlbWVudC54LCBhYnNvbHV0ZUNvb3Jkc1sxXSAtIGVsZW1lbnQueV07XG59O1xuZXhwb3J0IGNvbnN0IGdldERpYW1vbmRQb2ludHMgPSBlbGVtZW50ID0+IHtcbiAgLy8gSGVyZSB3ZSBhZGQgKzEgdG8gYXZvaWQgdGhlc2UgbnVtYmVycyB0byBiZSAwXG4gIC8vIG90aGVyd2lzZSByb3VnaC5qcyB3aWxsIHRocm93IGFuIGVycm9yIGNvbXBsYWluaW5nIGFib3V0IGl0XG4gIGNvbnN0IHRvcFggPSBNYXRoLmZsb29yKGVsZW1lbnQud2lkdGggLyAyKSArIDE7XG4gIGNvbnN0IHRvcFkgPSAwO1xuICBjb25zdCByaWdodFggPSBlbGVtZW50LndpZHRoO1xuICBjb25zdCByaWdodFkgPSBNYXRoLmZsb29yKGVsZW1lbnQuaGVpZ2h0IC8gMikgKyAxO1xuICBjb25zdCBib3R0b21YID0gdG9wWDtcbiAgY29uc3QgYm90dG9tWSA9IGVsZW1lbnQuaGVpZ2h0O1xuICBjb25zdCBsZWZ0WCA9IDA7XG4gIGNvbnN0IGxlZnRZID0gcmlnaHRZO1xuICByZXR1cm4gW3RvcFgsIHRvcFksIHJpZ2h0WCwgcmlnaHRZLCBib3R0b21YLCBib3R0b21ZLCBsZWZ0WCwgbGVmdFldO1xufTtcbmV4cG9ydCBjb25zdCBnZXRDdXJ2ZVBhdGhPcHMgPSBzaGFwZSA9PiB7XG4gIGZvciAoY29uc3Qgc2V0IG9mIHNoYXBlLnNldHMpIHtcbiAgICBpZiAoc2V0LnR5cGUgPT09IFwicGF0aFwiKSB7XG4gICAgICByZXR1cm4gc2V0Lm9wcztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2hhcGUuc2V0c1swXS5vcHM7XG59OyAvLyByZWZlcmVuY2U6IGh0dHBzOi8vZWxpb3Qtam9uZXMuY29tLzIwMTkvMTIvY3ViaWMtYmV6aWVyLWN1cnZlLWJvdW5kaW5nLWJveGVzXG5cbmNvbnN0IGdldEJlemllclZhbHVlRm9yVCA9ICh0LCBwMCwgcDEsIHAyLCBwMykgPT4ge1xuICBjb25zdCBvbmVNaW51c1QgPSAxIC0gdDtcbiAgcmV0dXJuIE1hdGgucG93KG9uZU1pbnVzVCwgMykgKiBwMCArIDMgKiBNYXRoLnBvdyhvbmVNaW51c1QsIDIpICogdCAqIHAxICsgMyAqIG9uZU1pbnVzVCAqIE1hdGgucG93KHQsIDIpICogcDIgKyBNYXRoLnBvdyh0LCAzKSAqIHAzO1xufTtcblxuY29uc3Qgc29sdmVRdWFkcmF0aWMgPSAocDAsIHAxLCBwMiwgcDMpID0+IHtcbiAgY29uc3QgaSA9IHAxIC0gcDA7XG4gIGNvbnN0IGogPSBwMiAtIHAxO1xuICBjb25zdCBrID0gcDMgLSBwMjtcbiAgY29uc3QgYSA9IDMgKiBpIC0gNiAqIGogKyAzICogaztcbiAgY29uc3QgYiA9IDYgKiBqIC0gNiAqIGk7XG4gIGNvbnN0IGMgPSAzICogaTtcbiAgY29uc3Qgc3FydFBhcnQgPSBiICogYiAtIDQgKiBhICogYztcbiAgY29uc3QgaGFzU29sdXRpb24gPSBzcXJ0UGFydCA+PSAwO1xuXG4gIGlmICghaGFzU29sdXRpb24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsZXQgczEgPSBudWxsO1xuICBsZXQgczIgPSBudWxsO1xuICBsZXQgdDEgPSBJbmZpbml0eTtcbiAgbGV0IHQyID0gSW5maW5pdHk7XG5cbiAgaWYgKGEgPT09IDApIHtcbiAgICB0MSA9IHQyID0gLWMgLyBiO1xuICB9IGVsc2Uge1xuICAgIHQxID0gKC1iICsgTWF0aC5zcXJ0KHNxcnRQYXJ0KSkgLyAoMiAqIGEpO1xuICAgIHQyID0gKC1iIC0gTWF0aC5zcXJ0KHNxcnRQYXJ0KSkgLyAoMiAqIGEpO1xuICB9XG5cbiAgaWYgKHQxID49IDAgJiYgdDEgPD0gMSkge1xuICAgIHMxID0gZ2V0QmV6aWVyVmFsdWVGb3JUKHQxLCBwMCwgcDEsIHAyLCBwMyk7XG4gIH1cblxuICBpZiAodDIgPj0gMCAmJiB0MiA8PSAxKSB7XG4gICAgczIgPSBnZXRCZXppZXJWYWx1ZUZvclQodDIsIHAwLCBwMSwgcDIsIHAzKTtcbiAgfVxuXG4gIHJldHVybiBbczEsIHMyXTtcbn07XG5cbmNvbnN0IGdldEN1YmljQmV6aWVyQ3VydmVCb3VuZCA9IChwMCwgcDEsIHAyLCBwMykgPT4ge1xuICBjb25zdCBzb2xYID0gc29sdmVRdWFkcmF0aWMocDBbMF0sIHAxWzBdLCBwMlswXSwgcDNbMF0pO1xuICBjb25zdCBzb2xZID0gc29sdmVRdWFkcmF0aWMocDBbMV0sIHAxWzFdLCBwMlsxXSwgcDNbMV0pO1xuICBsZXQgbWluWCA9IE1hdGgubWluKHAwWzBdLCBwM1swXSk7XG4gIGxldCBtYXhYID0gTWF0aC5tYXgocDBbMF0sIHAzWzBdKTtcblxuICBpZiAoc29sWCkge1xuICAgIGNvbnN0IHhzID0gc29sWC5maWx0ZXIoeCA9PiB4ICE9PSBudWxsKTtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgLi4ueHMpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCAuLi54cyk7XG4gIH1cblxuICBsZXQgbWluWSA9IE1hdGgubWluKHAwWzFdLCBwM1sxXSk7XG4gIGxldCBtYXhZID0gTWF0aC5tYXgocDBbMV0sIHAzWzFdKTtcblxuICBpZiAoc29sWSkge1xuICAgIGNvbnN0IHlzID0gc29sWS5maWx0ZXIoeSA9PiB5ICE9PSBudWxsKTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgLi4ueXMpO1xuICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCAuLi55cyk7XG4gIH1cblxuICByZXR1cm4gW21pblgsIG1pblksIG1heFgsIG1heFldO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pbk1heFhZRnJvbUN1cnZlUGF0aE9wcyA9IChvcHMsIHRyYW5zZm9ybVhZKSA9PiB7XG4gIGxldCBjdXJyZW50UCA9IFswLCAwXTtcbiAgY29uc3Qge1xuICAgIG1pblgsXG4gICAgbWluWSxcbiAgICBtYXhYLFxuICAgIG1heFlcbiAgfSA9IG9wcy5yZWR1Y2UoKGxpbWl0cywge1xuICAgIG9wLFxuICAgIGRhdGFcbiAgfSkgPT4ge1xuICAgIC8vIFRoZXJlIGFyZSBvbmx5IGZvdXIgb3BlcmF0aW9uIHR5cGVzOlxuICAgIC8vIG1vdmUsIGJjdXJ2ZVRvLCBsaW5lVG8sIGFuZCBjdXJ2ZVRvXG4gICAgaWYgKG9wID09PSBcIm1vdmVcIikge1xuICAgICAgLy8gY2hhbmdlIHN0YXJ0aW5nIHBvaW50XG4gICAgICBjdXJyZW50UCA9IGRhdGE7IC8vIG1vdmUgb3BlcmF0aW9uIGRvZXMgbm90IGRyYXcgYW55dGhpbmc7IHNvLCBpdCBhbHdheXNcbiAgICAgIC8vIHJldHVybnMgZmFsc2VcbiAgICB9IGVsc2UgaWYgKG9wID09PSBcImJjdXJ2ZVRvXCIpIHtcbiAgICAgIGNvbnN0IF9wMSA9IFtkYXRhWzBdLCBkYXRhWzFdXTtcbiAgICAgIGNvbnN0IF9wMiA9IFtkYXRhWzJdLCBkYXRhWzNdXTtcbiAgICAgIGNvbnN0IF9wMyA9IFtkYXRhWzRdLCBkYXRhWzVdXTtcbiAgICAgIGNvbnN0IHAxID0gdHJhbnNmb3JtWFkgPyB0cmFuc2Zvcm1YWSguLi5fcDEpIDogX3AxO1xuICAgICAgY29uc3QgcDIgPSB0cmFuc2Zvcm1YWSA/IHRyYW5zZm9ybVhZKC4uLl9wMikgOiBfcDI7XG4gICAgICBjb25zdCBwMyA9IHRyYW5zZm9ybVhZID8gdHJhbnNmb3JtWFkoLi4uX3AzKSA6IF9wMztcbiAgICAgIGNvbnN0IHAwID0gdHJhbnNmb3JtWFkgPyB0cmFuc2Zvcm1YWSguLi5jdXJyZW50UCkgOiBjdXJyZW50UDtcbiAgICAgIGN1cnJlbnRQID0gX3AzO1xuICAgICAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0Q3ViaWNCZXppZXJDdXJ2ZUJvdW5kKHAwLCBwMSwgcDIsIHAzKTtcbiAgICAgIGxpbWl0cy5taW5YID0gTWF0aC5taW4obGltaXRzLm1pblgsIG1pblgpO1xuICAgICAgbGltaXRzLm1pblkgPSBNYXRoLm1pbihsaW1pdHMubWluWSwgbWluWSk7XG4gICAgICBsaW1pdHMubWF4WCA9IE1hdGgubWF4KGxpbWl0cy5tYXhYLCBtYXhYKTtcbiAgICAgIGxpbWl0cy5tYXhZID0gTWF0aC5tYXgobGltaXRzLm1heFksIG1heFkpO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IFwibGluZVRvXCIpIHsvLyBUT0RPOiBJbXBsZW1lbnQgdGhpc1xuICAgIH0gZWxzZSBpZiAob3AgPT09IFwicWN1cnZlVG9cIikgey8vIFRPRE86IEltcGxlbWVudCB0aGlzXG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbWl0cztcbiAgfSwge1xuICAgIG1pblg6IEluZmluaXR5LFxuICAgIG1pblk6IEluZmluaXR5LFxuICAgIG1heFg6IC1JbmZpbml0eSxcbiAgICBtYXhZOiAtSW5maW5pdHlcbiAgfSk7XG4gIHJldHVybiBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG59O1xuZXhwb3J0IGNvbnN0IGdldEJvdW5kc0Zyb21Qb2ludHMgPSBwb2ludHMgPT4ge1xuICBsZXQgbWluWCA9IEluZmluaXR5O1xuICBsZXQgbWluWSA9IEluZmluaXR5O1xuICBsZXQgbWF4WCA9IC1JbmZpbml0eTtcbiAgbGV0IG1heFkgPSAtSW5maW5pdHk7XG5cbiAgZm9yIChjb25zdCBbeCwgeV0gb2YgcG9pbnRzKSB7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHgpO1xuICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCB5KTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeCk7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkpO1xuICB9XG5cbiAgcmV0dXJuIFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbn07XG5cbmNvbnN0IGdldEZyZWVEcmF3RWxlbWVudEFic29sdXRlQ29vcmRzID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldEJvdW5kc0Zyb21Qb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICBjb25zdCB4MSA9IG1pblggKyBlbGVtZW50Lng7XG4gIGNvbnN0IHkxID0gbWluWSArIGVsZW1lbnQueTtcbiAgY29uc3QgeDIgPSBtYXhYICsgZWxlbWVudC54O1xuICBjb25zdCB5MiA9IG1heFkgKyBlbGVtZW50Lnk7XG4gIHJldHVybiBbeDEsIHkxLCB4MiwgeTIsICh4MSArIHgyKSAvIDIsICh5MSArIHkyKSAvIDJdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFycm93aGVhZFBvaW50cyA9IChlbGVtZW50LCBzaGFwZSwgcG9zaXRpb24sIGFycm93aGVhZCkgPT4ge1xuICBjb25zdCBvcHMgPSBnZXRDdXJ2ZVBhdGhPcHMoc2hhcGVbMF0pO1xuXG4gIGlmIChvcHMubGVuZ3RoIDwgMSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIFRoZSBpbmRleCBvZiB0aGUgYkN1cnZlIG9wZXJhdGlvbiB0byBleGFtaW5lLlxuXG5cbiAgY29uc3QgaW5kZXggPSBwb3NpdGlvbiA9PT0gXCJzdGFydFwiID8gMSA6IG9wcy5sZW5ndGggLSAxO1xuICBjb25zdCBkYXRhID0gb3BzW2luZGV4XS5kYXRhO1xuICBjb25zdCBwMyA9IFtkYXRhWzRdLCBkYXRhWzVdXTtcbiAgY29uc3QgcDIgPSBbZGF0YVsyXSwgZGF0YVszXV07XG4gIGNvbnN0IHAxID0gW2RhdGFbMF0sIGRhdGFbMV1dOyAvLyBXZSBuZWVkIHRvIGZpbmQgcDAgb2YgdGhlIGJlemllciBjdXJ2ZS5cbiAgLy8gSXQgaXMgdHlwaWNhbGx5IHRoZSBsYXN0IHBvaW50IG9mIHRoZSBwcmV2aW91c1xuICAvLyBjdXJ2ZTsgaXQgY2FuIGFsc28gYmUgdGhlIHBvc2l0aW9uIG9mIG1vdmVUbyBvcGVyYXRpb24uXG5cbiAgY29uc3QgcHJldk9wID0gb3BzW2luZGV4IC0gMV07XG4gIGxldCBwMCA9IFswLCAwXTtcblxuICBpZiAocHJldk9wLm9wID09PSBcIm1vdmVcIikge1xuICAgIHAwID0gcHJldk9wLmRhdGE7XG4gIH0gZWxzZSBpZiAocHJldk9wLm9wID09PSBcImJjdXJ2ZVRvXCIpIHtcbiAgICBwMCA9IFtwcmV2T3AuZGF0YVs0XSwgcHJldk9wLmRhdGFbNV1dO1xuICB9IC8vIEIodCkgPSBwMCAqICgxLXQpXjMgKyAzcDEgKiB0ICogKDEtdCleMiArIDNwMiAqIHReMiAqICgxLXQpICsgcDMgKiB0XjNcblxuXG4gIGNvbnN0IGVxdWF0aW9uID0gKHQsIGlkeCkgPT4gTWF0aC5wb3coMSAtIHQsIDMpICogcDNbaWR4XSArIDMgKiB0ICogTWF0aC5wb3coMSAtIHQsIDIpICogcDJbaWR4XSArIDMgKiBNYXRoLnBvdyh0LCAyKSAqICgxIC0gdCkgKiBwMVtpZHhdICsgcDBbaWR4XSAqIE1hdGgucG93KHQsIDMpOyAvLyBFZSBrbm93IHRoZSBsYXN0IHBvaW50IG9mIHRoZSBhcnJvdyAob3IgdGhlIGZpcnN0LCBpZiBzdGFydCBhcnJvd2hlYWQpLlxuXG5cbiAgY29uc3QgW3gyLCB5Ml0gPSBwb3NpdGlvbiA9PT0gXCJzdGFydFwiID8gcDAgOiBwMzsgLy8gQnkgdXNpbmcgY3ViaWMgYmV6aWVyIGVxdWF0aW9uIChCKHQpKSBhbmQgdGhlIGdpdmVuIHBhcmFtZXRlcnMsXG4gIC8vIHdlIGNhbGN1bGF0ZSBhIHBvaW50IHRoYXQgaXMgY2xvc2VyIHRvIHRoZSBsYXN0IHBvaW50LlxuICAvLyBUaGUgdmFsdWUgMC4zIGlzIGNob3NlbiBhcmJpdHJhcmlseSBhbmQgaXQgd29ya3MgYmVzdCBmb3IgYWxsXG4gIC8vIHRoZSB0ZXN0ZWQgY2FzZXMuXG5cbiAgY29uc3QgW3gxLCB5MV0gPSBbZXF1YXRpb24oMC4zLCAwKSwgZXF1YXRpb24oMC4zLCAxKV07IC8vIEZpbmQgdGhlIG5vcm1hbGl6ZWQgZGlyZWN0aW9uIHZlY3RvciBiYXNlZCBvbiB0aGVcbiAgLy8gcHJldmlvdXNseSBjYWxjdWxhdGVkIHBvaW50cy5cblxuICBjb25zdCBkaXN0YW5jZSA9IE1hdGguaHlwb3QoeDIgLSB4MSwgeTIgLSB5MSk7XG4gIGNvbnN0IG54ID0gKHgyIC0geDEpIC8gZGlzdGFuY2U7XG4gIGNvbnN0IG55ID0gKHkyIC0geTEpIC8gZGlzdGFuY2U7XG4gIGNvbnN0IHNpemUgPSB7XG4gICAgYXJyb3c6IDMwLFxuICAgIGJhcjogMTUsXG4gICAgZG90OiAxNSxcbiAgICB0cmlhbmdsZTogMTVcbiAgfVthcnJvd2hlYWRdOyAvLyBwaXhlbHMgKHdpbGwgZGlmZmVyIGZvciBlYWNoIGFycm93aGVhZClcblxuICBsZXQgbGVuZ3RoID0gMDtcblxuICBpZiAoYXJyb3doZWFkID09PSBcImFycm93XCIpIHtcbiAgICAvLyBMZW5ndGggZm9yIC0+IGFycm93cyBpcyBiYXNlZCBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBsYXN0IHNlY3Rpb25cbiAgICBjb25zdCBbY3gsIGN5XSA9IGVsZW1lbnQucG9pbnRzW2VsZW1lbnQucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IFtweCwgcHldID0gZWxlbWVudC5wb2ludHMubGVuZ3RoID4gMSA/IGVsZW1lbnQucG9pbnRzW2VsZW1lbnQucG9pbnRzLmxlbmd0aCAtIDJdIDogWzAsIDBdO1xuICAgIGxlbmd0aCA9IE1hdGguaHlwb3QoY3ggLSBweCwgY3kgLSBweSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gTGVuZ3RoIGZvciBvdGhlciBhcnJvd2hlYWQgdHlwZXMgaXMgYmFzZWQgb24gdGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgbGluZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudC5wb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IFtweCwgcHldID0gZWxlbWVudC5wb2ludHNbaSAtIDFdIHx8IFswLCAwXTtcbiAgICAgIGNvbnN0IFtjeCwgY3ldID0gZWxlbWVudC5wb2ludHNbaV07XG4gICAgICBsZW5ndGggKz0gTWF0aC5oeXBvdChjeCAtIHB4LCBjeSAtIHB5KTtcbiAgICB9XG4gIH0gLy8gU2NhbGUgZG93biB0aGUgYXJyb3doZWFkIHVudGlsIHdlIGhpdCBhIGNlcnRhaW4gc2l6ZSBzbyB0aGF0IGl0IGRvZXNuJ3QgbG9vayB3ZWlyZC5cbiAgLy8gVGhpcyB2YWx1ZSBpcyBzZWxlY3RlZCBieSBtaW5pbWl6aW5nIGEgbWluaW11bSBzaXplIHdpdGggdGhlIGxhc3Qgc2VnbWVudCBvZiB0aGUgYXJyb3doZWFkXG5cblxuICBjb25zdCBtaW5TaXplID0gTWF0aC5taW4oc2l6ZSwgbGVuZ3RoIC8gMik7XG4gIGNvbnN0IHhzID0geDIgLSBueCAqIG1pblNpemU7XG4gIGNvbnN0IHlzID0geTIgLSBueSAqIG1pblNpemU7XG5cbiAgaWYgKGFycm93aGVhZCA9PT0gXCJkb3RcIikge1xuICAgIGNvbnN0IHIgPSBNYXRoLmh5cG90KHlzIC0geTIsIHhzIC0geDIpICsgZWxlbWVudC5zdHJva2VXaWR0aDtcbiAgICByZXR1cm4gW3gyLCB5Miwgcl07XG4gIH1cblxuICBjb25zdCBhbmdsZSA9IHtcbiAgICBhcnJvdzogMjAsXG4gICAgYmFyOiA5MCxcbiAgICB0cmlhbmdsZTogMjVcbiAgfVthcnJvd2hlYWRdOyAvLyBkZWdyZWVzXG4gIC8vIFJldHVybiBwb2ludHNcblxuICBjb25zdCBbeDMsIHkzXSA9IHJvdGF0ZSh4cywgeXMsIHgyLCB5MiwgLWFuZ2xlICogTWF0aC5QSSAvIDE4MCk7XG4gIGNvbnN0IFt4NCwgeTRdID0gcm90YXRlKHhzLCB5cywgeDIsIHkyLCBhbmdsZSAqIE1hdGguUEkgLyAxODApO1xuICByZXR1cm4gW3gyLCB5MiwgeDMsIHkzLCB4NCwgeTRdO1xufTtcblxuY29uc3QgZ2VuZXJhdGVMaW5lYXJFbGVtZW50U2hhcGUgPSBlbGVtZW50ID0+IHtcbiAgY29uc3QgZ2VuZXJhdG9yID0gcm91Z2guZ2VuZXJhdG9yKCk7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KTtcblxuICBjb25zdCBtZXRob2QgPSAoKCkgPT4ge1xuICAgIGlmIChlbGVtZW50LnJvdW5kbmVzcykge1xuICAgICAgcmV0dXJuIFwiY3VydmVcIjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5maWxsKSB7XG4gICAgICByZXR1cm4gXCJwb2x5Z29uXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwibGluZWFyUGF0aFwiO1xuICB9KSgpO1xuXG4gIHJldHVybiBnZW5lcmF0b3JbbWV0aG9kXShlbGVtZW50LnBvaW50cywgb3B0aW9ucyk7XG59O1xuXG5jb25zdCBnZXRMaW5lYXJFbGVtZW50Um90YXRlZEJvdW5kcyA9IChlbGVtZW50LCBjeCwgY3kpID0+IHtcbiAgdmFyIF9hO1xuXG4gIGlmIChlbGVtZW50LnBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgY29uc3QgW3BvaW50WCwgcG9pbnRZXSA9IGVsZW1lbnQucG9pbnRzWzBdO1xuICAgIGNvbnN0IFt4LCB5XSA9IHJvdGF0ZShlbGVtZW50LnggKyBwb2ludFgsIGVsZW1lbnQueSArIHBvaW50WSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBsZXQgY29vcmRzID0gW3gsIHksIHgsIHldO1xuICAgIGNvbnN0IGJvdW5kVGV4dEVsZW1lbnQgPSBnZXRCb3VuZFRleHRFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgaWYgKGJvdW5kVGV4dEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGNvb3Jkc1dpdGhCb3VuZFRleHQgPSBMaW5lYXJFbGVtZW50RWRpdG9yLmdldE1pbk1heFhZV2l0aEJvdW5kVGV4dChlbGVtZW50LCBbeCwgeSwgeCwgeV0sIGJvdW5kVGV4dEVsZW1lbnQpO1xuICAgICAgY29vcmRzID0gW2Nvb3Jkc1dpdGhCb3VuZFRleHRbMF0sIGNvb3Jkc1dpdGhCb3VuZFRleHRbMV0sIGNvb3Jkc1dpdGhCb3VuZFRleHRbMl0sIGNvb3Jkc1dpdGhCb3VuZFRleHRbM11dO1xuICAgIH1cblxuICAgIHJldHVybiBjb29yZHM7XG4gIH0gLy8gZmlyc3QgZWxlbWVudCBpcyBhbHdheXMgdGhlIGN1cnZlXG5cblxuICBjb25zdCBjYWNoZWRTaGFwZSA9IChfYSA9IFNoYXBlQ2FjaGUuZ2V0KGVsZW1lbnQpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07XG4gIGNvbnN0IHNoYXBlID0gY2FjaGVkU2hhcGUgIT09IG51bGwgJiYgY2FjaGVkU2hhcGUgIT09IHZvaWQgMCA/IGNhY2hlZFNoYXBlIDogZ2VuZXJhdGVMaW5lYXJFbGVtZW50U2hhcGUoZWxlbWVudCk7XG4gIGNvbnN0IG9wcyA9IGdldEN1cnZlUGF0aE9wcyhzaGFwZSk7XG5cbiAgY29uc3QgdHJhbnNmb3JtWFkgPSAoeCwgeSkgPT4gcm90YXRlKGVsZW1lbnQueCArIHgsIGVsZW1lbnQueSArIHksIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG5cbiAgY29uc3QgcmVzID0gZ2V0TWluTWF4WFlGcm9tQ3VydmVQYXRoT3BzKG9wcywgdHJhbnNmb3JtWFkpO1xuICBsZXQgY29vcmRzID0gW3Jlc1swXSwgcmVzWzFdLCByZXNbMl0sIHJlc1szXV07XG4gIGNvbnN0IGJvdW5kVGV4dEVsZW1lbnQgPSBnZXRCb3VuZFRleHRFbGVtZW50KGVsZW1lbnQpO1xuXG4gIGlmIChib3VuZFRleHRFbGVtZW50KSB7XG4gICAgY29uc3QgY29vcmRzV2l0aEJvdW5kVGV4dCA9IExpbmVhckVsZW1lbnRFZGl0b3IuZ2V0TWluTWF4WFlXaXRoQm91bmRUZXh0KGVsZW1lbnQsIGNvb3JkcywgYm91bmRUZXh0RWxlbWVudCk7XG4gICAgY29vcmRzID0gW2Nvb3Jkc1dpdGhCb3VuZFRleHRbMF0sIGNvb3Jkc1dpdGhCb3VuZFRleHRbMV0sIGNvb3Jkc1dpdGhCb3VuZFRleHRbMl0sIGNvb3Jkc1dpdGhCb3VuZFRleHRbM11dO1xuICB9XG5cbiAgcmV0dXJuIGNvb3Jkcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50Qm91bmRzID0gZWxlbWVudCA9PiB7XG4gIHJldHVybiBFbGVtZW50Qm91bmRzLmdldEJvdW5kcyhlbGVtZW50KTtcbn07XG5leHBvcnQgY29uc3QgZ2V0Q29tbW9uQm91bmRzID0gZWxlbWVudHMgPT4ge1xuICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBbMCwgMCwgMCwgMF07XG4gIH1cblxuICBsZXQgbWluWCA9IEluZmluaXR5O1xuICBsZXQgbWF4WCA9IC1JbmZpbml0eTtcbiAgbGV0IG1pblkgPSBJbmZpbml0eTtcbiAgbGV0IG1heFkgPSAtSW5maW5pdHk7XG4gIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRCb3VuZHMoZWxlbWVudCk7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHgxKTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeTEpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB4Mik7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkyKTtcbiAgfSk7XG4gIHJldHVybiBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG59O1xuZXhwb3J0IGNvbnN0IGdldERyYWdnZWRFbGVtZW50c0JvdW5kcyA9IChlbGVtZW50cywgZHJhZ09mZnNldCkgPT4ge1xuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRDb21tb25Cb3VuZHMoZWxlbWVudHMpO1xuICByZXR1cm4gW21pblggKyBkcmFnT2Zmc2V0LngsIG1pblkgKyBkcmFnT2Zmc2V0LnksIG1heFggKyBkcmFnT2Zmc2V0LngsIG1heFkgKyBkcmFnT2Zmc2V0LnldO1xufTtcbmV4cG9ydCBjb25zdCBnZXRSZXNpemVkRWxlbWVudEFic29sdXRlQ29vcmRzID0gKGVsZW1lbnQsIG5leHRXaWR0aCwgbmV4dEhlaWdodCwgbm9ybWFsaXplUG9pbnRzKSA9PiB7XG4gIGlmICghKGlzTGluZWFyRWxlbWVudChlbGVtZW50KSB8fCBpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkpIHtcbiAgICByZXR1cm4gW2VsZW1lbnQueCwgZWxlbWVudC55LCBlbGVtZW50LnggKyBuZXh0V2lkdGgsIGVsZW1lbnQueSArIG5leHRIZWlnaHRdO1xuICB9XG5cbiAgY29uc3QgcG9pbnRzID0gcmVzY2FsZVBvaW50cygwLCBuZXh0V2lkdGgsIHJlc2NhbGVQb2ludHMoMSwgbmV4dEhlaWdodCwgZWxlbWVudC5wb2ludHMsIG5vcm1hbGl6ZVBvaW50cyksIG5vcm1hbGl6ZVBvaW50cyk7XG4gIGxldCBib3VuZHM7XG5cbiAgaWYgKGlzRnJlZURyYXdFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgLy8gRnJlZSBEcmF3XG4gICAgYm91bmRzID0gZ2V0Qm91bmRzRnJvbVBvaW50cyhwb2ludHMpO1xuICB9IGVsc2Uge1xuICAgIC8vIExpbmVcbiAgICBjb25zdCBnZW4gPSByb3VnaC5nZW5lcmF0b3IoKTtcbiAgICBjb25zdCBjdXJ2ZSA9ICFlbGVtZW50LnJvdW5kbmVzcyA/IGdlbi5saW5lYXJQYXRoKHBvaW50cywgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCkpIDogZ2VuLmN1cnZlKHBvaW50cywgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCkpO1xuICAgIGNvbnN0IG9wcyA9IGdldEN1cnZlUGF0aE9wcyhjdXJ2ZSk7XG4gICAgYm91bmRzID0gZ2V0TWluTWF4WFlGcm9tQ3VydmVQYXRoT3BzKG9wcyk7XG4gIH1cblxuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBib3VuZHM7XG4gIHJldHVybiBbbWluWCArIGVsZW1lbnQueCwgbWluWSArIGVsZW1lbnQueSwgbWF4WCArIGVsZW1lbnQueCwgbWF4WSArIGVsZW1lbnQueV07XG59O1xuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRQb2ludHNDb29yZHMgPSAoZWxlbWVudCwgcG9pbnRzKSA9PiB7XG4gIC8vIFRoaXMgbWlnaHQgYmUgY29tcHV0YXRpb25hbGx5IGhlYXZleVxuICBjb25zdCBnZW4gPSByb3VnaC5nZW5lcmF0b3IoKTtcbiAgY29uc3QgY3VydmUgPSBlbGVtZW50LnJvdW5kbmVzcyA9PSBudWxsID8gZ2VuLmxpbmVhclBhdGgocG9pbnRzLCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSkgOiBnZW4uY3VydmUocG9pbnRzLCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSk7XG4gIGNvbnN0IG9wcyA9IGdldEN1cnZlUGF0aE9wcyhjdXJ2ZSk7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldE1pbk1heFhZRnJvbUN1cnZlUGF0aE9wcyhvcHMpO1xuICByZXR1cm4gW21pblggKyBlbGVtZW50LngsIG1pblkgKyBlbGVtZW50LnksIG1heFggKyBlbGVtZW50LngsIG1heFkgKyBlbGVtZW50LnldO1xufTtcbmV4cG9ydCBjb25zdCBnZXRDbG9zZXN0RWxlbWVudEJvdW5kcyA9IChlbGVtZW50cywgZnJvbSkgPT4ge1xuICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBbMCwgMCwgMCwgMF07XG4gIH1cblxuICBsZXQgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgbGV0IGNsb3Nlc3RFbGVtZW50ID0gZWxlbWVudHNbMF07XG4gIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRCb3VuZHMoZWxlbWVudCk7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZTJkKCh4MSArIHgyKSAvIDIsICh5MSArIHkyKSAvIDIsIGZyb20ueCwgZnJvbS55KTtcblxuICAgIGlmIChkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKSB7XG4gICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgY2xvc2VzdEVsZW1lbnQgPSBlbGVtZW50O1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBnZXRFbGVtZW50Qm91bmRzKGNsb3Nlc3RFbGVtZW50KTtcbn07XG5leHBvcnQgY29uc3QgZ2V0Q29tbW9uQm91bmRpbmdCb3ggPSBlbGVtZW50cyA9PiB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldENvbW1vbkJvdW5kcyhlbGVtZW50cyk7XG4gIHJldHVybiB7XG4gICAgbWluWCxcbiAgICBtaW5ZLFxuICAgIG1heFgsXG4gICAgbWF4WSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICBtaWRYOiAobWluWCArIG1heFgpIC8gMixcbiAgICBtaWRZOiAobWluWSArIG1heFkpIC8gMlxuICB9O1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../element/bounds.ts\n");
3874
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ElementBounds\": () => (/* binding */ ElementBounds),\n/* harmony export */ \"getArrowheadPoints\": () => (/* binding */ getArrowheadPoints),\n/* harmony export */ \"getBoundsFromPoints\": () => (/* binding */ getBoundsFromPoints),\n/* harmony export */ \"getClosestElementBounds\": () => (/* binding */ getClosestElementBounds),\n/* harmony export */ \"getCommonBoundingBox\": () => (/* binding */ getCommonBoundingBox),\n/* harmony export */ \"getCommonBounds\": () => (/* binding */ getCommonBounds),\n/* harmony export */ \"getCurvePathOps\": () => (/* binding */ getCurvePathOps),\n/* harmony export */ \"getDiamondPoints\": () => (/* binding */ getDiamondPoints),\n/* harmony export */ \"getDraggedElementsBounds\": () => (/* binding */ getDraggedElementsBounds),\n/* harmony export */ \"getElementAbsoluteCoords\": () => (/* binding */ getElementAbsoluteCoords),\n/* harmony export */ \"getElementBounds\": () => (/* binding */ getElementBounds),\n/* harmony export */ \"getElementLineSegments\": () => (/* binding */ getElementLineSegments),\n/* harmony export */ \"getElementPointsCoords\": () => (/* binding */ getElementPointsCoords),\n/* harmony export */ \"getMinMaxXYFromCurvePathOps\": () => (/* binding */ getMinMaxXYFromCurvePathOps),\n/* harmony export */ \"getRectangleBoxAbsoluteCoords\": () => (/* binding */ getRectangleBoxAbsoluteCoords),\n/* harmony export */ \"getResizedElementAbsoluteCoords\": () => (/* binding */ getResizedElementAbsoluteCoords),\n/* harmony export */ \"pointRelativeTo\": () => (/* binding */ pointRelativeTo)\n/* harmony export */ });\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math */ \"../../math.ts\");\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _scene_Shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/Shape */ \"../../scene/Shape.ts\");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ \"../../element/typeChecks.ts\");\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../points */ \"../../points.ts\");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./textElement */ \"../../element/textElement.ts\");\n/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./linearElementEditor */ \"../../element/linearElementEditor.ts\");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene/ShapeCache */ \"../../scene/ShapeCache.ts\");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene/Scene */ \"../../scene/Scene.ts\");\n\n\n\n\n\n\n\n\n\nclass ElementBounds {\n static getBounds(element) {\n const cachedBounds = ElementBounds.boundsCache.get(element);\n\n if ((cachedBounds === null || cachedBounds === void 0 ? void 0 : cachedBounds.version) && cachedBounds.version === element.version && // we don't invalidate cache when we update containers and not labels,\n // which is causing problems down the line. Fix TBA.\n !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isBoundToContainer)(element)) {\n return cachedBounds.bounds;\n }\n\n const bounds = ElementBounds.calculateBounds(element); // hack to ensure that downstream checks could retrieve element Scene\n // so as to have correctly calculated bounds\n // FIXME remove when we get rid of all the id:Scene / element:Scene mapping\n\n const shouldCache = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getScene(element);\n\n if (shouldCache) {\n ElementBounds.boundsCache.set(element, {\n version: element.version,\n bounds\n });\n }\n\n return bounds;\n }\n\n static calculateBounds(element) {\n let bounds;\n const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element);\n\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points.map(([x, y]) => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x, y, cx - element.x, cy - element.y, element.angle)));\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\n bounds = getLinearElementRotatedBounds(element, cx, cy);\n } else if (element.type === \"diamond\") {\n const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y1, cx, cy, element.angle);\n const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y2, cx, cy, element.angle);\n const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, cy, cx, cy, element.angle);\n const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, cy, cx, cy, element.angle);\n const minX = Math.min(x11, x12, x22, x21);\n const minY = Math.min(y11, y12, y22, y21);\n const maxX = Math.max(x11, x12, x22, x21);\n const maxY = Math.max(y11, y12, y22, y21);\n bounds = [minX, minY, maxX, maxY];\n } else if (element.type === \"ellipse\") {\n const w = (x2 - x1) / 2;\n const h = (y2 - y1) / 2;\n const cos = Math.cos(element.angle);\n const sin = Math.sin(element.angle);\n const ww = Math.hypot(w * cos, h * sin);\n const hh = Math.hypot(h * cos, w * sin);\n bounds = [cx - ww, cy - hh, cx + ww, cy + hh];\n } else {\n const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y1, cx, cy, element.angle);\n const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y2, cx, cy, element.angle);\n const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y2, cx, cy, element.angle);\n const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y1, cx, cy, element.angle);\n const minX = Math.min(x11, x12, x22, x21);\n const minY = Math.min(y11, y12, y22, y21);\n const maxX = Math.max(x11, x12, x22, x21);\n const maxY = Math.max(y11, y12, y22, y21);\n bounds = [minX, minY, maxX, maxY];\n }\n\n return bounds;\n }\n\n}\nElementBounds.boundsCache = new WeakMap(); // Scene -> Scene coords, but in x1,x2,y1,y2 format.\n//\n// If the element is created from right to left, the width is going to be negative\n// This set of functions retrieves the absolute position of the 4 points.\n\nconst getElementAbsoluteCoords = (element, includeBoundText = false) => {\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n return getFreeDrawElementAbsoluteCoords(element);\n } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\n return _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getElementAbsoluteCoords(element, includeBoundText);\n } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(element)) {\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getContainerElement)(element);\n\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container)) {\n const coords = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getBoundTextElementPosition(container, element);\n return [coords.x, coords.y, coords.x + element.width, coords.y + element.height, coords.x + element.width / 2, coords.y + element.height / 2];\n }\n }\n\n return [element.x, element.y, element.x + element.width, element.y + element.height, element.x + element.width / 2, element.y + element.height / 2];\n};\n/*\n * for a given element, `getElementLineSegments` returns line segments\n * that can be used for visual collision detection (useful for frames)\n * as opposed to bounding box collision detection\n */\n\nconst getElementLineSegments = element => {\n const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element);\n const center = [cx, cy];\n\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n const segments = [];\n let i = 0;\n\n while (i < element.points.length - 1) {\n segments.push([(0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([element.points[i][0] + element.x, element.points[i][1] + element.y], center, element.angle), (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([element.points[i + 1][0] + element.x, element.points[i + 1][1] + element.y], center, element.angle)]);\n i++;\n }\n\n return segments;\n }\n\n const [nw, ne, sw, se, n, s, w, e] = [[x1, y1], [x2, y1], [x1, y2], [x2, y2], [cx, y1], [cx, y2], [x1, cy], [x2, cy]].map(point => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)(point, center, element.angle));\n\n if (element.type === \"diamond\") {\n return [[n, w], [n, e], [s, w], [s, e]];\n }\n\n if (element.type === \"ellipse\") {\n return [[n, w], [n, e], [s, w], [s, e], [n, w], [n, e], [s, w], [s, e]];\n }\n\n return [[nw, ne], [sw, se], [nw, sw], [ne, se], [nw, e], [sw, e], [ne, w], [se, w]];\n};\n/**\n * Scene -> Scene coords, but in x1,x2,y1,y2 format.\n *\n * Rectangle here means any rectangular frame, not an excalidraw element.\n */\n\nconst getRectangleBoxAbsoluteCoords = boxSceneCoords => {\n return [boxSceneCoords.x, boxSceneCoords.y, boxSceneCoords.x + boxSceneCoords.width, boxSceneCoords.y + boxSceneCoords.height, boxSceneCoords.x + boxSceneCoords.width / 2, boxSceneCoords.y + boxSceneCoords.height / 2];\n};\nconst pointRelativeTo = (element, absoluteCoords) => {\n return [absoluteCoords[0] - element.x, absoluteCoords[1] - element.y];\n};\nconst getDiamondPoints = element => {\n // Here we add +1 to avoid these numbers to be 0\n // otherwise rough.js will throw an error complaining about it\n const topX = Math.floor(element.width / 2) + 1;\n const topY = 0;\n const rightX = element.width;\n const rightY = Math.floor(element.height / 2) + 1;\n const bottomX = topX;\n const bottomY = element.height;\n const leftX = 0;\n const leftY = rightY;\n return [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY];\n};\nconst getCurvePathOps = shape => {\n for (const set of shape.sets) {\n if (set.type === \"path\") {\n return set.ops;\n }\n }\n\n return shape.sets[0].ops;\n}; // reference: https://eliot-jones.com/2019/12/cubic-bezier-curve-bounding-boxes\n\nconst getBezierValueForT = (t, p0, p1, p2, p3) => {\n const oneMinusT = 1 - t;\n return Math.pow(oneMinusT, 3) * p0 + 3 * Math.pow(oneMinusT, 2) * t * p1 + 3 * oneMinusT * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n};\n\nconst solveQuadratic = (p0, p1, p2, p3) => {\n const i = p1 - p0;\n const j = p2 - p1;\n const k = p3 - p2;\n const a = 3 * i - 6 * j + 3 * k;\n const b = 6 * j - 6 * i;\n const c = 3 * i;\n const sqrtPart = b * b - 4 * a * c;\n const hasSolution = sqrtPart >= 0;\n\n if (!hasSolution) {\n return false;\n }\n\n let s1 = null;\n let s2 = null;\n let t1 = Infinity;\n let t2 = Infinity;\n\n if (a === 0) {\n t1 = t2 = -c / b;\n } else {\n t1 = (-b + Math.sqrt(sqrtPart)) / (2 * a);\n t2 = (-b - Math.sqrt(sqrtPart)) / (2 * a);\n }\n\n if (t1 >= 0 && t1 <= 1) {\n s1 = getBezierValueForT(t1, p0, p1, p2, p3);\n }\n\n if (t2 >= 0 && t2 <= 1) {\n s2 = getBezierValueForT(t2, p0, p1, p2, p3);\n }\n\n return [s1, s2];\n};\n\nconst getCubicBezierCurveBound = (p0, p1, p2, p3) => {\n const solX = solveQuadratic(p0[0], p1[0], p2[0], p3[0]);\n const solY = solveQuadratic(p0[1], p1[1], p2[1], p3[1]);\n let minX = Math.min(p0[0], p3[0]);\n let maxX = Math.max(p0[0], p3[0]);\n\n if (solX) {\n const xs = solX.filter(x => x !== null);\n minX = Math.min(minX, ...xs);\n maxX = Math.max(maxX, ...xs);\n }\n\n let minY = Math.min(p0[1], p3[1]);\n let maxY = Math.max(p0[1], p3[1]);\n\n if (solY) {\n const ys = solY.filter(y => y !== null);\n minY = Math.min(minY, ...ys);\n maxY = Math.max(maxY, ...ys);\n }\n\n return [minX, minY, maxX, maxY];\n};\n\nconst getMinMaxXYFromCurvePathOps = (ops, transformXY) => {\n let currentP = [0, 0];\n const {\n minX,\n minY,\n maxX,\n maxY\n } = ops.reduce((limits, {\n op,\n data\n }) => {\n // There are only four operation types:\n // move, bcurveTo, lineTo, and curveTo\n if (op === \"move\") {\n // change starting point\n currentP = data; // move operation does not draw anything; so, it always\n // returns false\n } else if (op === \"bcurveTo\") {\n const _p1 = [data[0], data[1]];\n const _p2 = [data[2], data[3]];\n const _p3 = [data[4], data[5]];\n const p1 = transformXY ? transformXY(..._p1) : _p1;\n const p2 = transformXY ? transformXY(..._p2) : _p2;\n const p3 = transformXY ? transformXY(..._p3) : _p3;\n const p0 = transformXY ? transformXY(...currentP) : currentP;\n currentP = _p3;\n const [minX, minY, maxX, maxY] = getCubicBezierCurveBound(p0, p1, p2, p3);\n limits.minX = Math.min(limits.minX, minX);\n limits.minY = Math.min(limits.minY, minY);\n limits.maxX = Math.max(limits.maxX, maxX);\n limits.maxY = Math.max(limits.maxY, maxY);\n } else if (op === \"lineTo\") {// TODO: Implement this\n } else if (op === \"qcurveTo\") {// TODO: Implement this\n }\n\n return limits;\n }, {\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n });\n return [minX, minY, maxX, maxY];\n};\nconst getBoundsFromPoints = points => {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const [x, y] of points) {\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n\n return [minX, minY, maxX, maxY];\n};\n\nconst getFreeDrawElementAbsoluteCoords = element => {\n const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points);\n const x1 = minX + element.x;\n const y1 = minY + element.y;\n const x2 = maxX + element.x;\n const y2 = maxY + element.y;\n return [x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2];\n};\n\nconst getArrowheadPoints = (element, shape, position, arrowhead) => {\n const ops = getCurvePathOps(shape[0]);\n\n if (ops.length < 1) {\n return null;\n } // The index of the bCurve operation to examine.\n\n\n const index = position === \"start\" ? 1 : ops.length - 1;\n const data = ops[index].data;\n const p3 = [data[4], data[5]];\n const p2 = [data[2], data[3]];\n const p1 = [data[0], data[1]]; // We need to find p0 of the bezier curve.\n // It is typically the last point of the previous\n // curve; it can also be the position of moveTo operation.\n\n const prevOp = ops[index - 1];\n let p0 = [0, 0];\n\n if (prevOp.op === \"move\") {\n p0 = prevOp.data;\n } else if (prevOp.op === \"bcurveTo\") {\n p0 = [prevOp.data[4], prevOp.data[5]];\n } // B(t) = p0 * (1-t)^3 + 3p1 * t * (1-t)^2 + 3p2 * t^2 * (1-t) + p3 * t^3\n\n\n const equation = (t, idx) => Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3); // Ee know the last point of the arrow (or the first, if start arrowhead).\n\n\n const [x2, y2] = position === \"start\" ? p0 : p3; // By using cubic bezier equation (B(t)) and the given parameters,\n // we calculate a point that is closer to the last point.\n // The value 0.3 is chosen arbitrarily and it works best for all\n // the tested cases.\n\n const [x1, y1] = [equation(0.3, 0), equation(0.3, 1)]; // Find the normalized direction vector based on the\n // previously calculated points.\n\n const distance = Math.hypot(x2 - x1, y2 - y1);\n const nx = (x2 - x1) / distance;\n const ny = (y2 - y1) / distance;\n const size = {\n arrow: 30,\n bar: 15,\n dot: 15,\n triangle: 15\n }[arrowhead]; // pixels (will differ for each arrowhead)\n\n let length = 0;\n\n if (arrowhead === \"arrow\") {\n // Length for -> arrows is based on the length of the last section\n const [cx, cy] = element.points[element.points.length - 1];\n const [px, py] = element.points.length > 1 ? element.points[element.points.length - 2] : [0, 0];\n length = Math.hypot(cx - px, cy - py);\n } else {\n // Length for other arrowhead types is based on the total length of the line\n for (let i = 0; i < element.points.length; i++) {\n const [px, py] = element.points[i - 1] || [0, 0];\n const [cx, cy] = element.points[i];\n length += Math.hypot(cx - px, cy - py);\n }\n } // Scale down the arrowhead until we hit a certain size so that it doesn't look weird.\n // This value is selected by minimizing a minimum size with the last segment of the arrowhead\n\n\n const minSize = Math.min(size, length / 2);\n const xs = x2 - nx * minSize;\n const ys = y2 - ny * minSize;\n\n if (arrowhead === \"dot\") {\n const r = Math.hypot(ys - y2, xs - x2) + element.strokeWidth;\n return [x2, y2, r];\n }\n\n const angle = {\n arrow: 20,\n bar: 90,\n triangle: 25\n }[arrowhead]; // degrees\n // Return points\n\n const [x3, y3] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, -angle * Math.PI / 180);\n const [x4, y4] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, angle * Math.PI / 180);\n return [x2, y2, x3, y3, x4, y4];\n};\n\nconst generateLinearElementShape = element => {\n const generator = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generator();\n const options = (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element);\n\n const method = (() => {\n if (element.roundness) {\n return \"curve\";\n }\n\n if (options.fill) {\n return \"polygon\";\n }\n\n return \"linearPath\";\n })();\n\n return generator[method](element.points, options);\n};\n\nconst getLinearElementRotatedBounds = (element, cx, cy) => {\n var _a;\n\n if (element.points.length < 2) {\n const [pointX, pointY] = element.points[0];\n const [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + pointX, element.y + pointY, cx, cy, element.angle);\n let coords = [x, y, x, y];\n const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getBoundTextElement)(element);\n\n if (boundTextElement) {\n const coordsWithBoundText = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getMinMaxXYWithBoundText(element, [x, y, x, y], boundTextElement);\n coords = [coordsWithBoundText[0], coordsWithBoundText[1], coordsWithBoundText[2], coordsWithBoundText[3]];\n }\n\n return coords;\n } // first element is always the curve\n\n\n const cachedShape = (_a = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_7__.ShapeCache.get(element)) === null || _a === void 0 ? void 0 : _a[0];\n const shape = cachedShape !== null && cachedShape !== void 0 ? cachedShape : generateLinearElementShape(element);\n const ops = getCurvePathOps(shape);\n\n const transformXY = (x, y) => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + x, element.y + y, cx, cy, element.angle);\n\n const res = getMinMaxXYFromCurvePathOps(ops, transformXY);\n let coords = [res[0], res[1], res[2], res[3]];\n const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getBoundTextElement)(element);\n\n if (boundTextElement) {\n const coordsWithBoundText = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getMinMaxXYWithBoundText(element, coords, boundTextElement);\n coords = [coordsWithBoundText[0], coordsWithBoundText[1], coordsWithBoundText[2], coordsWithBoundText[3]];\n }\n\n return coords;\n};\n\nconst getElementBounds = element => {\n return ElementBounds.getBounds(element);\n};\nconst getCommonBounds = elements => {\n if (!elements.length) {\n return [0, 0, 0, 0];\n }\n\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n elements.forEach(element => {\n const [x1, y1, x2, y2] = getElementBounds(element);\n minX = Math.min(minX, x1);\n minY = Math.min(minY, y1);\n maxX = Math.max(maxX, x2);\n maxY = Math.max(maxY, y2);\n });\n return [minX, minY, maxX, maxY];\n};\nconst getDraggedElementsBounds = (elements, dragOffset) => {\n const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n return [minX + dragOffset.x, minY + dragOffset.y, maxX + dragOffset.x, maxY + dragOffset.y];\n};\nconst getResizedElementAbsoluteCoords = (element, nextWidth, nextHeight, normalizePoints) => {\n if (!((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element))) {\n return [element.x, element.y, element.x + nextWidth, element.y + nextHeight];\n }\n\n const points = (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(0, nextWidth, (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(1, nextHeight, element.points, normalizePoints), normalizePoints);\n let bounds;\n\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n // Free Draw\n bounds = getBoundsFromPoints(points);\n } else {\n // Line\n const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generator();\n const curve = !element.roundness ? gen.linearPath(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\n const ops = getCurvePathOps(curve);\n bounds = getMinMaxXYFromCurvePathOps(ops);\n }\n\n const [minX, minY, maxX, maxY] = bounds;\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n};\nconst getElementPointsCoords = (element, points) => {\n // This might be computationally heavey\n const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generator();\n const curve = element.roundness == null ? gen.linearPath(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\n const ops = getCurvePathOps(curve);\n const [minX, minY, maxX, maxY] = getMinMaxXYFromCurvePathOps(ops);\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n};\nconst getClosestElementBounds = (elements, from) => {\n if (!elements.length) {\n return [0, 0, 0, 0];\n }\n\n let minDistance = Infinity;\n let closestElement = elements[0];\n elements.forEach(element => {\n const [x1, y1, x2, y2] = getElementBounds(element);\n const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)((x1 + x2) / 2, (y1 + y2) / 2, from.x, from.y);\n\n if (distance < minDistance) {\n minDistance = distance;\n closestElement = element;\n }\n });\n return getElementBounds(closestElement);\n};\nconst getCommonBoundingBox = elements => {\n const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n return {\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n midX: (minX + maxX) / 2,\n midY: (minY + maxY) / 2\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUU5QztBQUNBLGdDQUFnQyw4RkFBNEM7QUFDNUU7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsUUFBUSw0REFBZSxhQUFhLDhEQUFpQjtBQUNyRDtBQUNBOztBQUVBLGlCQUFpQixzREFBYSxlQUFlLHNEQUFhO0FBQzFEOztBQUVBLE1BQU0sOERBQWlCO0FBQ3ZCO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxnQkFBZ0IsbUVBQWU7QUFDL0IsOERBQThELGtFQUFvQiwrQkFBK0Isa0VBQW9CO0FBQ3JJO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsY0FBYyxtRUFBZTtBQUM3QixtRUFBbUUsa0VBQW9CLCtCQUErQixrRUFBb0I7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpREFBVTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2VsZW1lbnQvYm91bmRzLnRzP2ZjYTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UyZCwgcm90YXRlLCByb3RhdGVQb2ludCB9IGZyb20gXCIuLi9tYXRoXCI7XG5pbXBvcnQgcm91Z2ggZnJvbSBcInJvdWdoanMvYmluL3JvdWdoXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVJvdWdoT3B0aW9ucyB9IGZyb20gXCIuLi9zY2VuZS9TaGFwZVwiO1xuaW1wb3J0IHsgaXNBcnJvd0VsZW1lbnQsIGlzQm91bmRUb0NvbnRhaW5lciwgaXNGcmVlRHJhd0VsZW1lbnQsIGlzTGluZWFyRWxlbWVudCwgaXNUZXh0RWxlbWVudCB9IGZyb20gXCIuL3R5cGVDaGVja3NcIjtcbmltcG9ydCB7IHJlc2NhbGVQb2ludHMgfSBmcm9tIFwiLi4vcG9pbnRzXCI7XG5pbXBvcnQgeyBnZXRCb3VuZFRleHRFbGVtZW50LCBnZXRDb250YWluZXJFbGVtZW50IH0gZnJvbSBcIi4vdGV4dEVsZW1lbnRcIjtcbmltcG9ydCB7IExpbmVhckVsZW1lbnRFZGl0b3IgfSBmcm9tIFwiLi9saW5lYXJFbGVtZW50RWRpdG9yXCI7XG5pbXBvcnQgeyBTaGFwZUNhY2hlIH0gZnJvbSBcIi4uL3NjZW5lL1NoYXBlQ2FjaGVcIjtcbmltcG9ydCBTY2VuZSBmcm9tIFwiLi4vc2NlbmUvU2NlbmVcIjtcbmV4cG9ydCBjbGFzcyBFbGVtZW50Qm91bmRzIHtcbiAgc3RhdGljIGdldEJvdW5kcyhlbGVtZW50KSB7XG4gICAgY29uc3QgY2FjaGVkQm91bmRzID0gRWxlbWVudEJvdW5kcy5ib3VuZHNDYWNoZS5nZXQoZWxlbWVudCk7XG5cbiAgICBpZiAoKGNhY2hlZEJvdW5kcyA9PT0gbnVsbCB8fCBjYWNoZWRCb3VuZHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNhY2hlZEJvdW5kcy52ZXJzaW9uKSAmJiBjYWNoZWRCb3VuZHMudmVyc2lvbiA9PT0gZWxlbWVudC52ZXJzaW9uICYmIC8vIHdlIGRvbid0IGludmFsaWRhdGUgY2FjaGUgd2hlbiB3ZSB1cGRhdGUgY29udGFpbmVycyBhbmQgbm90IGxhYmVscyxcbiAgICAvLyB3aGljaCBpcyBjYXVzaW5nIHByb2JsZW1zIGRvd24gdGhlIGxpbmUuIEZpeCBUQkEuXG4gICAgIWlzQm91bmRUb0NvbnRhaW5lcihlbGVtZW50KSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEJvdW5kcy5ib3VuZHM7XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRzID0gRWxlbWVudEJvdW5kcy5jYWxjdWxhdGVCb3VuZHMoZWxlbWVudCk7IC8vIGhhY2sgdG8gZW5zdXJlIHRoYXQgZG93bnN0cmVhbSBjaGVja3MgY291bGQgcmV0cmlldmUgZWxlbWVudCBTY2VuZVxuICAgIC8vIHNvIGFzIHRvIGhhdmUgY29ycmVjdGx5IGNhbGN1bGF0ZWQgYm91bmRzXG4gICAgLy8gRklYTUUgcmVtb3ZlIHdoZW4gd2UgZ2V0IHJpZCBvZiBhbGwgdGhlIGlkOlNjZW5lIC8gZWxlbWVudDpTY2VuZSBtYXBwaW5nXG5cbiAgICBjb25zdCBzaG91bGRDYWNoZSA9IFNjZW5lLmdldFNjZW5lKGVsZW1lbnQpO1xuXG4gICAgaWYgKHNob3VsZENhY2hlKSB7XG4gICAgICBFbGVtZW50Qm91bmRzLmJvdW5kc0NhY2hlLnNldChlbGVtZW50LCB7XG4gICAgICAgIHZlcnNpb246IGVsZW1lbnQudmVyc2lvbixcbiAgICAgICAgYm91bmRzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm91bmRzO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZUJvdW5kcyhlbGVtZW50KSB7XG4gICAgbGV0IGJvdW5kcztcbiAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTIsIGN4LCBjeV0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG5cbiAgICBpZiAoaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldEJvdW5kc0Zyb21Qb2ludHMoZWxlbWVudC5wb2ludHMubWFwKChbeCwgeV0pID0+IHJvdGF0ZSh4LCB5LCBjeCAtIGVsZW1lbnQueCwgY3kgLSBlbGVtZW50LnksIGVsZW1lbnQuYW5nbGUpKSk7XG4gICAgICByZXR1cm4gW21pblggKyBlbGVtZW50LngsIG1pblkgKyBlbGVtZW50LnksIG1heFggKyBlbGVtZW50LngsIG1heFkgKyBlbGVtZW50LnldO1xuICAgIH0gZWxzZSBpZiAoaXNMaW5lYXJFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICBib3VuZHMgPSBnZXRMaW5lYXJFbGVtZW50Um90YXRlZEJvdW5kcyhlbGVtZW50LCBjeCwgY3kpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSBcImRpYW1vbmRcIikge1xuICAgICAgY29uc3QgW3gxMSwgeTExXSA9IHJvdGF0ZShjeCwgeTEsIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG4gICAgICBjb25zdCBbeDEyLCB5MTJdID0gcm90YXRlKGN4LCB5MiwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICAgIGNvbnN0IFt4MjIsIHkyMl0gPSByb3RhdGUoeDEsIGN5LCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgICAgY29uc3QgW3gyMSwgeTIxXSA9IHJvdGF0ZSh4MiwgY3ksIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG4gICAgICBjb25zdCBtaW5YID0gTWF0aC5taW4oeDExLCB4MTIsIHgyMiwgeDIxKTtcbiAgICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbih5MTEsIHkxMiwgeTIyLCB5MjEpO1xuICAgICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KHgxMSwgeDEyLCB4MjIsIHgyMSk7XG4gICAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgoeTExLCB5MTIsIHkyMiwgeTIxKTtcbiAgICAgIGJvdW5kcyA9IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJlbGxpcHNlXCIpIHtcbiAgICAgIGNvbnN0IHcgPSAoeDIgLSB4MSkgLyAyO1xuICAgICAgY29uc3QgaCA9ICh5MiAtIHkxKSAvIDI7XG4gICAgICBjb25zdCBjb3MgPSBNYXRoLmNvcyhlbGVtZW50LmFuZ2xlKTtcbiAgICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKGVsZW1lbnQuYW5nbGUpO1xuICAgICAgY29uc3Qgd3cgPSBNYXRoLmh5cG90KHcgKiBjb3MsIGggKiBzaW4pO1xuICAgICAgY29uc3QgaGggPSBNYXRoLmh5cG90KGggKiBjb3MsIHcgKiBzaW4pO1xuICAgICAgYm91bmRzID0gW2N4IC0gd3csIGN5IC0gaGgsIGN4ICsgd3csIGN5ICsgaGhdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBbeDExLCB5MTFdID0gcm90YXRlKHgxLCB5MSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICAgIGNvbnN0IFt4MTIsIHkxMl0gPSByb3RhdGUoeDEsIHkyLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgICAgY29uc3QgW3gyMiwgeTIyXSA9IHJvdGF0ZSh4MiwgeTIsIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG4gICAgICBjb25zdCBbeDIxLCB5MjFdID0gcm90YXRlKHgyLCB5MSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICAgIGNvbnN0IG1pblggPSBNYXRoLm1pbih4MTEsIHgxMiwgeDIyLCB4MjEpO1xuICAgICAgY29uc3QgbWluWSA9IE1hdGgubWluKHkxMSwgeTEyLCB5MjIsIHkyMSk7XG4gICAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoeDExLCB4MTIsIHgyMiwgeDIxKTtcbiAgICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heCh5MTEsIHkxMiwgeTIyLCB5MjEpO1xuICAgICAgYm91bmRzID0gW21pblgsIG1pblksIG1heFgsIG1heFldO1xuICAgIH1cblxuICAgIHJldHVybiBib3VuZHM7XG4gIH1cblxufVxuRWxlbWVudEJvdW5kcy5ib3VuZHNDYWNoZSA9IG5ldyBXZWFrTWFwKCk7IC8vIFNjZW5lIC0+IFNjZW5lIGNvb3JkcywgYnV0IGluIHgxLHgyLHkxLHkyIGZvcm1hdC5cbi8vXG4vLyBJZiB0aGUgZWxlbWVudCBpcyBjcmVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCwgdGhlIHdpZHRoIGlzIGdvaW5nIHRvIGJlIG5lZ2F0aXZlXG4vLyBUaGlzIHNldCBvZiBmdW5jdGlvbnMgcmV0cmlldmVzIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgNCBwb2ludHMuXG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMgPSAoZWxlbWVudCwgaW5jbHVkZUJvdW5kVGV4dCA9IGZhbHNlKSA9PiB7XG4gIGlmIChpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiBnZXRGcmVlRHJhd0VsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgfSBlbHNlIGlmIChpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gTGluZWFyRWxlbWVudEVkaXRvci5nZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCwgaW5jbHVkZUJvdW5kVGV4dCk7XG4gIH0gZWxzZSBpZiAoaXNUZXh0RWxlbWVudChlbGVtZW50KSkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGdldENvbnRhaW5lckVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBpZiAoaXNBcnJvd0VsZW1lbnQoY29udGFpbmVyKSkge1xuICAgICAgY29uc3QgY29vcmRzID0gTGluZWFyRWxlbWVudEVkaXRvci5nZXRCb3VuZFRleHRFbGVtZW50UG9zaXRpb24oY29udGFpbmVyLCBlbGVtZW50KTtcbiAgICAgIHJldHVybiBbY29vcmRzLngsIGNvb3Jkcy55LCBjb29yZHMueCArIGVsZW1lbnQud2lkdGgsIGNvb3Jkcy55ICsgZWxlbWVudC5oZWlnaHQsIGNvb3Jkcy54ICsgZWxlbWVudC53aWR0aCAvIDIsIGNvb3Jkcy55ICsgZWxlbWVudC5oZWlnaHQgLyAyXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2VsZW1lbnQueCwgZWxlbWVudC55LCBlbGVtZW50LnggKyBlbGVtZW50LndpZHRoLCBlbGVtZW50LnkgKyBlbGVtZW50LmhlaWdodCwgZWxlbWVudC54ICsgZWxlbWVudC53aWR0aCAvIDIsIGVsZW1lbnQueSArIGVsZW1lbnQuaGVpZ2h0IC8gMl07XG59O1xuLypcbiAqIGZvciBhIGdpdmVuIGVsZW1lbnQsIGBnZXRFbGVtZW50TGluZVNlZ21lbnRzYCByZXR1cm5zIGxpbmUgc2VnbWVudHNcbiAqIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHZpc3VhbCBjb2xsaXNpb24gZGV0ZWN0aW9uICh1c2VmdWwgZm9yIGZyYW1lcylcbiAqIGFzIG9wcG9zZWQgdG8gYm91bmRpbmcgYm94IGNvbGxpc2lvbiBkZXRlY3Rpb25cbiAqL1xuXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudExpbmVTZWdtZW50cyA9IGVsZW1lbnQgPT4ge1xuICBjb25zdCBbeDEsIHkxLCB4MiwgeTIsIGN4LCBjeV0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG4gIGNvbnN0IGNlbnRlciA9IFtjeCwgY3ldO1xuXG4gIGlmIChpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkgfHwgaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IFtdO1xuICAgIGxldCBpID0gMDtcblxuICAgIHdoaWxlIChpIDwgZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMSkge1xuICAgICAgc2VnbWVudHMucHVzaChbcm90YXRlUG9pbnQoW2VsZW1lbnQucG9pbnRzW2ldWzBdICsgZWxlbWVudC54LCBlbGVtZW50LnBvaW50c1tpXVsxXSArIGVsZW1lbnQueV0sIGNlbnRlciwgZWxlbWVudC5hbmdsZSksIHJvdGF0ZVBvaW50KFtlbGVtZW50LnBvaW50c1tpICsgMV1bMF0gKyBlbGVtZW50LngsIGVsZW1lbnQucG9pbnRzW2kgKyAxXVsxXSArIGVsZW1lbnQueV0sIGNlbnRlciwgZWxlbWVudC5hbmdsZSldKTtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gc2VnbWVudHM7XG4gIH1cblxuICBjb25zdCBbbncsIG5lLCBzdywgc2UsIG4sIHMsIHcsIGVdID0gW1t4MSwgeTFdLCBbeDIsIHkxXSwgW3gxLCB5Ml0sIFt4MiwgeTJdLCBbY3gsIHkxXSwgW2N4LCB5Ml0sIFt4MSwgY3ldLCBbeDIsIGN5XV0ubWFwKHBvaW50ID0+IHJvdGF0ZVBvaW50KHBvaW50LCBjZW50ZXIsIGVsZW1lbnQuYW5nbGUpKTtcblxuICBpZiAoZWxlbWVudC50eXBlID09PSBcImRpYW1vbmRcIikge1xuICAgIHJldHVybiBbW24sIHddLCBbbiwgZV0sIFtzLCB3XSwgW3MsIGVdXTtcbiAgfVxuXG4gIGlmIChlbGVtZW50LnR5cGUgPT09IFwiZWxsaXBzZVwiKSB7XG4gICAgcmV0dXJuIFtbbiwgd10sIFtuLCBlXSwgW3MsIHddLCBbcywgZV0sIFtuLCB3XSwgW24sIGVdLCBbcywgd10sIFtzLCBlXV07XG4gIH1cblxuICByZXR1cm4gW1tudywgbmVdLCBbc3csIHNlXSwgW253LCBzd10sIFtuZSwgc2VdLCBbbncsIGVdLCBbc3csIGVdLCBbbmUsIHddLCBbc2UsIHddXTtcbn07XG4vKipcbiAqIFNjZW5lIC0+IFNjZW5lIGNvb3JkcywgYnV0IGluIHgxLHgyLHkxLHkyIGZvcm1hdC5cbiAqXG4gKiBSZWN0YW5nbGUgaGVyZSBtZWFucyBhbnkgcmVjdGFuZ3VsYXIgZnJhbWUsIG5vdCBhbiBleGNhbGlkcmF3IGVsZW1lbnQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFJlY3RhbmdsZUJveEFic29sdXRlQ29vcmRzID0gYm94U2NlbmVDb29yZHMgPT4ge1xuICByZXR1cm4gW2JveFNjZW5lQ29vcmRzLngsIGJveFNjZW5lQ29vcmRzLnksIGJveFNjZW5lQ29vcmRzLnggKyBib3hTY2VuZUNvb3Jkcy53aWR0aCwgYm94U2NlbmVDb29yZHMueSArIGJveFNjZW5lQ29vcmRzLmhlaWdodCwgYm94U2NlbmVDb29yZHMueCArIGJveFNjZW5lQ29vcmRzLndpZHRoIC8gMiwgYm94U2NlbmVDb29yZHMueSArIGJveFNjZW5lQ29vcmRzLmhlaWdodCAvIDJdO1xufTtcbmV4cG9ydCBjb25zdCBwb2ludFJlbGF0aXZlVG8gPSAoZWxlbWVudCwgYWJzb2x1dGVDb29yZHMpID0+IHtcbiAgcmV0dXJuIFthYnNvbHV0ZUNvb3Jkc1swXSAtIGVsZW1lbnQueCwgYWJzb2x1dGVDb29yZHNbMV0gLSBlbGVtZW50LnldO1xufTtcbmV4cG9ydCBjb25zdCBnZXREaWFtb25kUG9pbnRzID0gZWxlbWVudCA9PiB7XG4gIC8vIEhlcmUgd2UgYWRkICsxIHRvIGF2b2lkIHRoZXNlIG51bWJlcnMgdG8gYmUgMFxuICAvLyBvdGhlcndpc2Ugcm91Z2guanMgd2lsbCB0aHJvdyBhbiBlcnJvciBjb21wbGFpbmluZyBhYm91dCBpdFxuICBjb25zdCB0b3BYID0gTWF0aC5mbG9vcihlbGVtZW50LndpZHRoIC8gMikgKyAxO1xuICBjb25zdCB0b3BZID0gMDtcbiAgY29uc3QgcmlnaHRYID0gZWxlbWVudC53aWR0aDtcbiAgY29uc3QgcmlnaHRZID0gTWF0aC5mbG9vcihlbGVtZW50LmhlaWdodCAvIDIpICsgMTtcbiAgY29uc3QgYm90dG9tWCA9IHRvcFg7XG4gIGNvbnN0IGJvdHRvbVkgPSBlbGVtZW50LmhlaWdodDtcbiAgY29uc3QgbGVmdFggPSAwO1xuICBjb25zdCBsZWZ0WSA9IHJpZ2h0WTtcbiAgcmV0dXJuIFt0b3BYLCB0b3BZLCByaWdodFgsIHJpZ2h0WSwgYm90dG9tWCwgYm90dG9tWSwgbGVmdFgsIGxlZnRZXTtcbn07XG5leHBvcnQgY29uc3QgZ2V0Q3VydmVQYXRoT3BzID0gc2hhcGUgPT4ge1xuICBmb3IgKGNvbnN0IHNldCBvZiBzaGFwZS5zZXRzKSB7XG4gICAgaWYgKHNldC50eXBlID09PSBcInBhdGhcIikge1xuICAgICAgcmV0dXJuIHNldC5vcHM7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNoYXBlLnNldHNbMF0ub3BzO1xufTsgLy8gcmVmZXJlbmNlOiBodHRwczovL2VsaW90LWpvbmVzLmNvbS8yMDE5LzEyL2N1YmljLWJlemllci1jdXJ2ZS1ib3VuZGluZy1ib3hlc1xuXG5jb25zdCBnZXRCZXppZXJWYWx1ZUZvclQgPSAodCwgcDAsIHAxLCBwMiwgcDMpID0+IHtcbiAgY29uc3Qgb25lTWludXNUID0gMSAtIHQ7XG4gIHJldHVybiBNYXRoLnBvdyhvbmVNaW51c1QsIDMpICogcDAgKyAzICogTWF0aC5wb3cob25lTWludXNULCAyKSAqIHQgKiBwMSArIDMgKiBvbmVNaW51c1QgKiBNYXRoLnBvdyh0LCAyKSAqIHAyICsgTWF0aC5wb3codCwgMykgKiBwMztcbn07XG5cbmNvbnN0IHNvbHZlUXVhZHJhdGljID0gKHAwLCBwMSwgcDIsIHAzKSA9PiB7XG4gIGNvbnN0IGkgPSBwMSAtIHAwO1xuICBjb25zdCBqID0gcDIgLSBwMTtcbiAgY29uc3QgayA9IHAzIC0gcDI7XG4gIGNvbnN0IGEgPSAzICogaSAtIDYgKiBqICsgMyAqIGs7XG4gIGNvbnN0IGIgPSA2ICogaiAtIDYgKiBpO1xuICBjb25zdCBjID0gMyAqIGk7XG4gIGNvbnN0IHNxcnRQYXJ0ID0gYiAqIGIgLSA0ICogYSAqIGM7XG4gIGNvbnN0IGhhc1NvbHV0aW9uID0gc3FydFBhcnQgPj0gMDtcblxuICBpZiAoIWhhc1NvbHV0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IHMxID0gbnVsbDtcbiAgbGV0IHMyID0gbnVsbDtcbiAgbGV0IHQxID0gSW5maW5pdHk7XG4gIGxldCB0MiA9IEluZmluaXR5O1xuXG4gIGlmIChhID09PSAwKSB7XG4gICAgdDEgPSB0MiA9IC1jIC8gYjtcbiAgfSBlbHNlIHtcbiAgICB0MSA9ICgtYiArIE1hdGguc3FydChzcXJ0UGFydCkpIC8gKDIgKiBhKTtcbiAgICB0MiA9ICgtYiAtIE1hdGguc3FydChzcXJ0UGFydCkpIC8gKDIgKiBhKTtcbiAgfVxuXG4gIGlmICh0MSA+PSAwICYmIHQxIDw9IDEpIHtcbiAgICBzMSA9IGdldEJlemllclZhbHVlRm9yVCh0MSwgcDAsIHAxLCBwMiwgcDMpO1xuICB9XG5cbiAgaWYgKHQyID49IDAgJiYgdDIgPD0gMSkge1xuICAgIHMyID0gZ2V0QmV6aWVyVmFsdWVGb3JUKHQyLCBwMCwgcDEsIHAyLCBwMyk7XG4gIH1cblxuICByZXR1cm4gW3MxLCBzMl07XG59O1xuXG5jb25zdCBnZXRDdWJpY0JlemllckN1cnZlQm91bmQgPSAocDAsIHAxLCBwMiwgcDMpID0+IHtcbiAgY29uc3Qgc29sWCA9IHNvbHZlUXVhZHJhdGljKHAwWzBdLCBwMVswXSwgcDJbMF0sIHAzWzBdKTtcbiAgY29uc3Qgc29sWSA9IHNvbHZlUXVhZHJhdGljKHAwWzFdLCBwMVsxXSwgcDJbMV0sIHAzWzFdKTtcbiAgbGV0IG1pblggPSBNYXRoLm1pbihwMFswXSwgcDNbMF0pO1xuICBsZXQgbWF4WCA9IE1hdGgubWF4KHAwWzBdLCBwM1swXSk7XG5cbiAgaWYgKHNvbFgpIHtcbiAgICBjb25zdCB4cyA9IHNvbFguZmlsdGVyKHggPT4geCAhPT0gbnVsbCk7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIC4uLnhzKTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgLi4ueHMpO1xuICB9XG5cbiAgbGV0IG1pblkgPSBNYXRoLm1pbihwMFsxXSwgcDNbMV0pO1xuICBsZXQgbWF4WSA9IE1hdGgubWF4KHAwWzFdLCBwM1sxXSk7XG5cbiAgaWYgKHNvbFkpIHtcbiAgICBjb25zdCB5cyA9IHNvbFkuZmlsdGVyKHkgPT4geSAhPT0gbnVsbCk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIC4uLnlzKTtcbiAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgLi4ueXMpO1xuICB9XG5cbiAgcmV0dXJuIFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMgPSAob3BzLCB0cmFuc2Zvcm1YWSkgPT4ge1xuICBsZXQgY3VycmVudFAgPSBbMCwgMF07XG4gIGNvbnN0IHtcbiAgICBtaW5YLFxuICAgIG1pblksXG4gICAgbWF4WCxcbiAgICBtYXhZXG4gIH0gPSBvcHMucmVkdWNlKChsaW1pdHMsIHtcbiAgICBvcCxcbiAgICBkYXRhXG4gIH0pID0+IHtcbiAgICAvLyBUaGVyZSBhcmUgb25seSBmb3VyIG9wZXJhdGlvbiB0eXBlczpcbiAgICAvLyBtb3ZlLCBiY3VydmVUbywgbGluZVRvLCBhbmQgY3VydmVUb1xuICAgIGlmIChvcCA9PT0gXCJtb3ZlXCIpIHtcbiAgICAgIC8vIGNoYW5nZSBzdGFydGluZyBwb2ludFxuICAgICAgY3VycmVudFAgPSBkYXRhOyAvLyBtb3ZlIG9wZXJhdGlvbiBkb2VzIG5vdCBkcmF3IGFueXRoaW5nOyBzbywgaXQgYWx3YXlzXG4gICAgICAvLyByZXR1cm5zIGZhbHNlXG4gICAgfSBlbHNlIGlmIChvcCA9PT0gXCJiY3VydmVUb1wiKSB7XG4gICAgICBjb25zdCBfcDEgPSBbZGF0YVswXSwgZGF0YVsxXV07XG4gICAgICBjb25zdCBfcDIgPSBbZGF0YVsyXSwgZGF0YVszXV07XG4gICAgICBjb25zdCBfcDMgPSBbZGF0YVs0XSwgZGF0YVs1XV07XG4gICAgICBjb25zdCBwMSA9IHRyYW5zZm9ybVhZID8gdHJhbnNmb3JtWFkoLi4uX3AxKSA6IF9wMTtcbiAgICAgIGNvbnN0IHAyID0gdHJhbnNmb3JtWFkgPyB0cmFuc2Zvcm1YWSguLi5fcDIpIDogX3AyO1xuICAgICAgY29uc3QgcDMgPSB0cmFuc2Zvcm1YWSA/IHRyYW5zZm9ybVhZKC4uLl9wMykgOiBfcDM7XG4gICAgICBjb25zdCBwMCA9IHRyYW5zZm9ybVhZID8gdHJhbnNmb3JtWFkoLi4uY3VycmVudFApIDogY3VycmVudFA7XG4gICAgICBjdXJyZW50UCA9IF9wMztcbiAgICAgIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldEN1YmljQmV6aWVyQ3VydmVCb3VuZChwMCwgcDEsIHAyLCBwMyk7XG4gICAgICBsaW1pdHMubWluWCA9IE1hdGgubWluKGxpbWl0cy5taW5YLCBtaW5YKTtcbiAgICAgIGxpbWl0cy5taW5ZID0gTWF0aC5taW4obGltaXRzLm1pblksIG1pblkpO1xuICAgICAgbGltaXRzLm1heFggPSBNYXRoLm1heChsaW1pdHMubWF4WCwgbWF4WCk7XG4gICAgICBsaW1pdHMubWF4WSA9IE1hdGgubWF4KGxpbWl0cy5tYXhZLCBtYXhZKTtcbiAgICB9IGVsc2UgaWYgKG9wID09PSBcImxpbmVUb1wiKSB7Ly8gVE9ETzogSW1wbGVtZW50IHRoaXNcbiAgICB9IGVsc2UgaWYgKG9wID09PSBcInFjdXJ2ZVRvXCIpIHsvLyBUT0RPOiBJbXBsZW1lbnQgdGhpc1xuICAgIH1cblxuICAgIHJldHVybiBsaW1pdHM7XG4gIH0sIHtcbiAgICBtaW5YOiBJbmZpbml0eSxcbiAgICBtaW5ZOiBJbmZpbml0eSxcbiAgICBtYXhYOiAtSW5maW5pdHksXG4gICAgbWF4WTogLUluZmluaXR5XG4gIH0pO1xuICByZXR1cm4gW21pblgsIG1pblksIG1heFgsIG1heFldO1xufTtcbmV4cG9ydCBjb25zdCBnZXRCb3VuZHNGcm9tUG9pbnRzID0gcG9pbnRzID0+IHtcbiAgbGV0IG1pblggPSBJbmZpbml0eTtcbiAgbGV0IG1pblkgPSBJbmZpbml0eTtcbiAgbGV0IG1heFggPSAtSW5maW5pdHk7XG4gIGxldCBtYXhZID0gLUluZmluaXR5O1xuXG4gIGZvciAoY29uc3QgW3gsIHldIG9mIHBvaW50cykge1xuICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCB4KTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7XG4gICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHgpO1xuICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCB5KTtcbiAgfVxuXG4gIHJldHVybiBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG59O1xuXG5jb25zdCBnZXRGcmVlRHJhd0VsZW1lbnRBYnNvbHV0ZUNvb3JkcyA9IGVsZW1lbnQgPT4ge1xuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRCb3VuZHNGcm9tUG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgY29uc3QgeDEgPSBtaW5YICsgZWxlbWVudC54O1xuICBjb25zdCB5MSA9IG1pblkgKyBlbGVtZW50Lnk7XG4gIGNvbnN0IHgyID0gbWF4WCArIGVsZW1lbnQueDtcbiAgY29uc3QgeTIgPSBtYXhZICsgZWxlbWVudC55O1xuICByZXR1cm4gW3gxLCB5MSwgeDIsIHkyLCAoeDEgKyB4MikgLyAyLCAoeTEgKyB5MikgLyAyXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcnJvd2hlYWRQb2ludHMgPSAoZWxlbWVudCwgc2hhcGUsIHBvc2l0aW9uLCBhcnJvd2hlYWQpID0+IHtcbiAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKHNoYXBlWzBdKTtcblxuICBpZiAob3BzLmxlbmd0aCA8IDEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyBUaGUgaW5kZXggb2YgdGhlIGJDdXJ2ZSBvcGVyYXRpb24gdG8gZXhhbWluZS5cblxuXG4gIGNvbnN0IGluZGV4ID0gcG9zaXRpb24gPT09IFwic3RhcnRcIiA/IDEgOiBvcHMubGVuZ3RoIC0gMTtcbiAgY29uc3QgZGF0YSA9IG9wc1tpbmRleF0uZGF0YTtcbiAgY29uc3QgcDMgPSBbZGF0YVs0XSwgZGF0YVs1XV07XG4gIGNvbnN0IHAyID0gW2RhdGFbMl0sIGRhdGFbM11dO1xuICBjb25zdCBwMSA9IFtkYXRhWzBdLCBkYXRhWzFdXTsgLy8gV2UgbmVlZCB0byBmaW5kIHAwIG9mIHRoZSBiZXppZXIgY3VydmUuXG4gIC8vIEl0IGlzIHR5cGljYWxseSB0aGUgbGFzdCBwb2ludCBvZiB0aGUgcHJldmlvdXNcbiAgLy8gY3VydmU7IGl0IGNhbiBhbHNvIGJlIHRoZSBwb3NpdGlvbiBvZiBtb3ZlVG8gb3BlcmF0aW9uLlxuXG4gIGNvbnN0IHByZXZPcCA9IG9wc1tpbmRleCAtIDFdO1xuICBsZXQgcDAgPSBbMCwgMF07XG5cbiAgaWYgKHByZXZPcC5vcCA9PT0gXCJtb3ZlXCIpIHtcbiAgICBwMCA9IHByZXZPcC5kYXRhO1xuICB9IGVsc2UgaWYgKHByZXZPcC5vcCA9PT0gXCJiY3VydmVUb1wiKSB7XG4gICAgcDAgPSBbcHJldk9wLmRhdGFbNF0sIHByZXZPcC5kYXRhWzVdXTtcbiAgfSAvLyBCKHQpID0gcDAgKiAoMS10KV4zICsgM3AxICogdCAqICgxLXQpXjIgKyAzcDIgKiB0XjIgKiAoMS10KSArIHAzICogdF4zXG5cblxuICBjb25zdCBlcXVhdGlvbiA9ICh0LCBpZHgpID0+IE1hdGgucG93KDEgLSB0LCAzKSAqIHAzW2lkeF0gKyAzICogdCAqIE1hdGgucG93KDEgLSB0LCAyKSAqIHAyW2lkeF0gKyAzICogTWF0aC5wb3codCwgMikgKiAoMSAtIHQpICogcDFbaWR4XSArIHAwW2lkeF0gKiBNYXRoLnBvdyh0LCAzKTsgLy8gRWUga25vdyB0aGUgbGFzdCBwb2ludCBvZiB0aGUgYXJyb3cgKG9yIHRoZSBmaXJzdCwgaWYgc3RhcnQgYXJyb3doZWFkKS5cblxuXG4gIGNvbnN0IFt4MiwgeTJdID0gcG9zaXRpb24gPT09IFwic3RhcnRcIiA/IHAwIDogcDM7IC8vIEJ5IHVzaW5nIGN1YmljIGJlemllciBlcXVhdGlvbiAoQih0KSkgYW5kIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLFxuICAvLyB3ZSBjYWxjdWxhdGUgYSBwb2ludCB0aGF0IGlzIGNsb3NlciB0byB0aGUgbGFzdCBwb2ludC5cbiAgLy8gVGhlIHZhbHVlIDAuMyBpcyBjaG9zZW4gYXJiaXRyYXJpbHkgYW5kIGl0IHdvcmtzIGJlc3QgZm9yIGFsbFxuICAvLyB0aGUgdGVzdGVkIGNhc2VzLlxuXG4gIGNvbnN0IFt4MSwgeTFdID0gW2VxdWF0aW9uKDAuMywgMCksIGVxdWF0aW9uKDAuMywgMSldOyAvLyBGaW5kIHRoZSBub3JtYWxpemVkIGRpcmVjdGlvbiB2ZWN0b3IgYmFzZWQgb24gdGhlXG4gIC8vIHByZXZpb3VzbHkgY2FsY3VsYXRlZCBwb2ludHMuXG5cbiAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLmh5cG90KHgyIC0geDEsIHkyIC0geTEpO1xuICBjb25zdCBueCA9ICh4MiAtIHgxKSAvIGRpc3RhbmNlO1xuICBjb25zdCBueSA9ICh5MiAtIHkxKSAvIGRpc3RhbmNlO1xuICBjb25zdCBzaXplID0ge1xuICAgIGFycm93OiAzMCxcbiAgICBiYXI6IDE1LFxuICAgIGRvdDogMTUsXG4gICAgdHJpYW5nbGU6IDE1XG4gIH1bYXJyb3doZWFkXTsgLy8gcGl4ZWxzICh3aWxsIGRpZmZlciBmb3IgZWFjaCBhcnJvd2hlYWQpXG5cbiAgbGV0IGxlbmd0aCA9IDA7XG5cbiAgaWYgKGFycm93aGVhZCA9PT0gXCJhcnJvd1wiKSB7XG4gICAgLy8gTGVuZ3RoIGZvciAtPiBhcnJvd3MgaXMgYmFzZWQgb24gdGhlIGxlbmd0aCBvZiB0aGUgbGFzdCBzZWN0aW9uXG4gICAgY29uc3QgW2N4LCBjeV0gPSBlbGVtZW50LnBvaW50c1tlbGVtZW50LnBvaW50cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBbcHgsIHB5XSA9IGVsZW1lbnQucG9pbnRzLmxlbmd0aCA+IDEgPyBlbGVtZW50LnBvaW50c1tlbGVtZW50LnBvaW50cy5sZW5ndGggLSAyXSA6IFswLCAwXTtcbiAgICBsZW5ndGggPSBNYXRoLmh5cG90KGN4IC0gcHgsIGN5IC0gcHkpO1xuICB9IGVsc2Uge1xuICAgIC8vIExlbmd0aCBmb3Igb3RoZXIgYXJyb3doZWFkIHR5cGVzIGlzIGJhc2VkIG9uIHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIGxpbmVcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQucG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBbcHgsIHB5XSA9IGVsZW1lbnQucG9pbnRzW2kgLSAxXSB8fCBbMCwgMF07XG4gICAgICBjb25zdCBbY3gsIGN5XSA9IGVsZW1lbnQucG9pbnRzW2ldO1xuICAgICAgbGVuZ3RoICs9IE1hdGguaHlwb3QoY3ggLSBweCwgY3kgLSBweSk7XG4gICAgfVxuICB9IC8vIFNjYWxlIGRvd24gdGhlIGFycm93aGVhZCB1bnRpbCB3ZSBoaXQgYSBjZXJ0YWluIHNpemUgc28gdGhhdCBpdCBkb2Vzbid0IGxvb2sgd2VpcmQuXG4gIC8vIFRoaXMgdmFsdWUgaXMgc2VsZWN0ZWQgYnkgbWluaW1pemluZyBhIG1pbmltdW0gc2l6ZSB3aXRoIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGFycm93aGVhZFxuXG5cbiAgY29uc3QgbWluU2l6ZSA9IE1hdGgubWluKHNpemUsIGxlbmd0aCAvIDIpO1xuICBjb25zdCB4cyA9IHgyIC0gbnggKiBtaW5TaXplO1xuICBjb25zdCB5cyA9IHkyIC0gbnkgKiBtaW5TaXplO1xuXG4gIGlmIChhcnJvd2hlYWQgPT09IFwiZG90XCIpIHtcbiAgICBjb25zdCByID0gTWF0aC5oeXBvdCh5cyAtIHkyLCB4cyAtIHgyKSArIGVsZW1lbnQuc3Ryb2tlV2lkdGg7XG4gICAgcmV0dXJuIFt4MiwgeTIsIHJdO1xuICB9XG5cbiAgY29uc3QgYW5nbGUgPSB7XG4gICAgYXJyb3c6IDIwLFxuICAgIGJhcjogOTAsXG4gICAgdHJpYW5nbGU6IDI1XG4gIH1bYXJyb3doZWFkXTsgLy8gZGVncmVlc1xuICAvLyBSZXR1cm4gcG9pbnRzXG5cbiAgY29uc3QgW3gzLCB5M10gPSByb3RhdGUoeHMsIHlzLCB4MiwgeTIsIC1hbmdsZSAqIE1hdGguUEkgLyAxODApO1xuICBjb25zdCBbeDQsIHk0XSA9IHJvdGF0ZSh4cywgeXMsIHgyLCB5MiwgYW5nbGUgKiBNYXRoLlBJIC8gMTgwKTtcbiAgcmV0dXJuIFt4MiwgeTIsIHgzLCB5MywgeDQsIHk0XTtcbn07XG5cbmNvbnN0IGdlbmVyYXRlTGluZWFyRWxlbWVudFNoYXBlID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IGdlbmVyYXRvciA9IHJvdWdoLmdlbmVyYXRvcigpO1xuICBjb25zdCBvcHRpb25zID0gZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCk7XG5cbiAgY29uc3QgbWV0aG9kID0gKCgpID0+IHtcbiAgICBpZiAoZWxlbWVudC5yb3VuZG5lc3MpIHtcbiAgICAgIHJldHVybiBcImN1cnZlXCI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZmlsbCkge1xuICAgICAgcmV0dXJuIFwicG9seWdvblwiO1xuICAgIH1cblxuICAgIHJldHVybiBcImxpbmVhclBhdGhcIjtcbiAgfSkoKTtcblxuICByZXR1cm4gZ2VuZXJhdG9yW21ldGhvZF0oZWxlbWVudC5wb2ludHMsIG9wdGlvbnMpO1xufTtcblxuY29uc3QgZ2V0TGluZWFyRWxlbWVudFJvdGF0ZWRCb3VuZHMgPSAoZWxlbWVudCwgY3gsIGN5KSA9PiB7XG4gIHZhciBfYTtcblxuICBpZiAoZWxlbWVudC5wb2ludHMubGVuZ3RoIDwgMikge1xuICAgIGNvbnN0IFtwb2ludFgsIHBvaW50WV0gPSBlbGVtZW50LnBvaW50c1swXTtcbiAgICBjb25zdCBbeCwgeV0gPSByb3RhdGUoZWxlbWVudC54ICsgcG9pbnRYLCBlbGVtZW50LnkgKyBwb2ludFksIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG4gICAgbGV0IGNvb3JkcyA9IFt4LCB5LCB4LCB5XTtcbiAgICBjb25zdCBib3VuZFRleHRFbGVtZW50ID0gZ2V0Qm91bmRUZXh0RWxlbWVudChlbGVtZW50KTtcblxuICAgIGlmIChib3VuZFRleHRFbGVtZW50KSB7XG4gICAgICBjb25zdCBjb29yZHNXaXRoQm91bmRUZXh0ID0gTGluZWFyRWxlbWVudEVkaXRvci5nZXRNaW5NYXhYWVdpdGhCb3VuZFRleHQoZWxlbWVudCwgW3gsIHksIHgsIHldLCBib3VuZFRleHRFbGVtZW50KTtcbiAgICAgIGNvb3JkcyA9IFtjb29yZHNXaXRoQm91bmRUZXh0WzBdLCBjb29yZHNXaXRoQm91bmRUZXh0WzFdLCBjb29yZHNXaXRoQm91bmRUZXh0WzJdLCBjb29yZHNXaXRoQm91bmRUZXh0WzNdXTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29vcmRzO1xuICB9IC8vIGZpcnN0IGVsZW1lbnQgaXMgYWx3YXlzIHRoZSBjdXJ2ZVxuXG5cbiAgY29uc3QgY2FjaGVkU2hhcGUgPSAoX2EgPSBTaGFwZUNhY2hlLmdldChlbGVtZW50KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzBdO1xuICBjb25zdCBzaGFwZSA9IGNhY2hlZFNoYXBlICE9PSBudWxsICYmIGNhY2hlZFNoYXBlICE9PSB2b2lkIDAgPyBjYWNoZWRTaGFwZSA6IGdlbmVyYXRlTGluZWFyRWxlbWVudFNoYXBlKGVsZW1lbnQpO1xuICBjb25zdCBvcHMgPSBnZXRDdXJ2ZVBhdGhPcHMoc2hhcGUpO1xuXG4gIGNvbnN0IHRyYW5zZm9ybVhZID0gKHgsIHkpID0+IHJvdGF0ZShlbGVtZW50LnggKyB4LCBlbGVtZW50LnkgKyB5LCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuXG4gIGNvbnN0IHJlcyA9IGdldE1pbk1heFhZRnJvbUN1cnZlUGF0aE9wcyhvcHMsIHRyYW5zZm9ybVhZKTtcbiAgbGV0IGNvb3JkcyA9IFtyZXNbMF0sIHJlc1sxXSwgcmVzWzJdLCByZXNbM11dO1xuICBjb25zdCBib3VuZFRleHRFbGVtZW50ID0gZ2V0Qm91bmRUZXh0RWxlbWVudChlbGVtZW50KTtcblxuICBpZiAoYm91bmRUZXh0RWxlbWVudCkge1xuICAgIGNvbnN0IGNvb3Jkc1dpdGhCb3VuZFRleHQgPSBMaW5lYXJFbGVtZW50RWRpdG9yLmdldE1pbk1heFhZV2l0aEJvdW5kVGV4dChlbGVtZW50LCBjb29yZHMsIGJvdW5kVGV4dEVsZW1lbnQpO1xuICAgIGNvb3JkcyA9IFtjb29yZHNXaXRoQm91bmRUZXh0WzBdLCBjb29yZHNXaXRoQm91bmRUZXh0WzFdLCBjb29yZHNXaXRoQm91bmRUZXh0WzJdLCBjb29yZHNXaXRoQm91bmRUZXh0WzNdXTtcbiAgfVxuXG4gIHJldHVybiBjb29yZHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudEJvdW5kcyA9IGVsZW1lbnQgPT4ge1xuICByZXR1cm4gRWxlbWVudEJvdW5kcy5nZXRCb3VuZHMoZWxlbWVudCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldENvbW1vbkJvdW5kcyA9IGVsZW1lbnRzID0+IHtcbiAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gWzAsIDAsIDAsIDBdO1xuICB9XG5cbiAgbGV0IG1pblggPSBJbmZpbml0eTtcbiAgbGV0IG1heFggPSAtSW5maW5pdHk7XG4gIGxldCBtaW5ZID0gSW5maW5pdHk7XG4gIGxldCBtYXhZID0gLUluZmluaXR5O1xuICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50Qm91bmRzKGVsZW1lbnQpO1xuICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCB4MSk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkxKTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeDIpO1xuICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCB5Mik7XG4gIH0pO1xuICByZXR1cm4gW21pblgsIG1pblksIG1heFgsIG1heFldO1xufTtcbmV4cG9ydCBjb25zdCBnZXREcmFnZ2VkRWxlbWVudHNCb3VuZHMgPSAoZWxlbWVudHMsIGRyYWdPZmZzZXQpID0+IHtcbiAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0Q29tbW9uQm91bmRzKGVsZW1lbnRzKTtcbiAgcmV0dXJuIFttaW5YICsgZHJhZ09mZnNldC54LCBtaW5ZICsgZHJhZ09mZnNldC55LCBtYXhYICsgZHJhZ09mZnNldC54LCBtYXhZICsgZHJhZ09mZnNldC55XTtcbn07XG5leHBvcnQgY29uc3QgZ2V0UmVzaXplZEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyA9IChlbGVtZW50LCBuZXh0V2lkdGgsIG5leHRIZWlnaHQsIG5vcm1hbGl6ZVBvaW50cykgPT4ge1xuICBpZiAoIShpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkgfHwgaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpKSB7XG4gICAgcmV0dXJuIFtlbGVtZW50LngsIGVsZW1lbnQueSwgZWxlbWVudC54ICsgbmV4dFdpZHRoLCBlbGVtZW50LnkgKyBuZXh0SGVpZ2h0XTtcbiAgfVxuXG4gIGNvbnN0IHBvaW50cyA9IHJlc2NhbGVQb2ludHMoMCwgbmV4dFdpZHRoLCByZXNjYWxlUG9pbnRzKDEsIG5leHRIZWlnaHQsIGVsZW1lbnQucG9pbnRzLCBub3JtYWxpemVQb2ludHMpLCBub3JtYWxpemVQb2ludHMpO1xuICBsZXQgYm91bmRzO1xuXG4gIGlmIChpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEZyZWUgRHJhd1xuICAgIGJvdW5kcyA9IGdldEJvdW5kc0Zyb21Qb2ludHMocG9pbnRzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMaW5lXG4gICAgY29uc3QgZ2VuID0gcm91Z2guZ2VuZXJhdG9yKCk7XG4gICAgY29uc3QgY3VydmUgPSAhZWxlbWVudC5yb3VuZG5lc3MgPyBnZW4ubGluZWFyUGF0aChwb2ludHMsIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpKSA6IGdlbi5jdXJ2ZShwb2ludHMsIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpKTtcbiAgICBjb25zdCBvcHMgPSBnZXRDdXJ2ZVBhdGhPcHMoY3VydmUpO1xuICAgIGJvdW5kcyA9IGdldE1pbk1heFhZRnJvbUN1cnZlUGF0aE9wcyhvcHMpO1xuICB9XG5cbiAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gYm91bmRzO1xuICByZXR1cm4gW21pblggKyBlbGVtZW50LngsIG1pblkgKyBlbGVtZW50LnksIG1heFggKyBlbGVtZW50LngsIG1heFkgKyBlbGVtZW50LnldO1xufTtcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50UG9pbnRzQ29vcmRzID0gKGVsZW1lbnQsIHBvaW50cykgPT4ge1xuICAvLyBUaGlzIG1pZ2h0IGJlIGNvbXB1dGF0aW9uYWxseSBoZWF2ZXlcbiAgY29uc3QgZ2VuID0gcm91Z2guZ2VuZXJhdG9yKCk7XG4gIGNvbnN0IGN1cnZlID0gZWxlbWVudC5yb3VuZG5lc3MgPT0gbnVsbCA/IGdlbi5saW5lYXJQYXRoKHBvaW50cywgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCkpIDogZ2VuLmN1cnZlKHBvaW50cywgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCkpO1xuICBjb25zdCBvcHMgPSBnZXRDdXJ2ZVBhdGhPcHMoY3VydmUpO1xuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMob3BzKTtcbiAgcmV0dXJuIFttaW5YICsgZWxlbWVudC54LCBtaW5ZICsgZWxlbWVudC55LCBtYXhYICsgZWxlbWVudC54LCBtYXhZICsgZWxlbWVudC55XTtcbn07XG5leHBvcnQgY29uc3QgZ2V0Q2xvc2VzdEVsZW1lbnRCb3VuZHMgPSAoZWxlbWVudHMsIGZyb20pID0+IHtcbiAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gWzAsIDAsIDAsIDBdO1xuICB9XG5cbiAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG4gIGxldCBjbG9zZXN0RWxlbWVudCA9IGVsZW1lbnRzWzBdO1xuICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50Qm91bmRzKGVsZW1lbnQpO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2UyZCgoeDEgKyB4MikgLyAyLCAoeTEgKyB5MikgLyAyLCBmcm9tLngsIGZyb20ueSk7XG5cbiAgICBpZiAoZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIGNsb3Nlc3RFbGVtZW50ID0gZWxlbWVudDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZ2V0RWxlbWVudEJvdW5kcyhjbG9zZXN0RWxlbWVudCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldENvbW1vbkJvdW5kaW5nQm94ID0gZWxlbWVudHMgPT4ge1xuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRDb21tb25Cb3VuZHMoZWxlbWVudHMpO1xuICByZXR1cm4ge1xuICAgIG1pblgsXG4gICAgbWluWSxcbiAgICBtYXhYLFxuICAgIG1heFksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgbWlkWDogKG1pblggKyBtYXhYKSAvIDIsXG4gICAgbWlkWTogKG1pblkgKyBtYXhZKSAvIDJcbiAgfTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../element/bounds.ts\n");
3875
3875
 
3876
3876
  /***/ }),
3877
3877
 
@@ -3959,7 +3959,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3959
3959
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3960
3960
 
3961
3961
  "use strict";
3962
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"deepCopyElement\": () => (/* binding */ deepCopyElement),\n/* harmony export */ \"duplicateElement\": () => (/* binding */ duplicateElement),\n/* harmony export */ \"duplicateElements\": () => (/* binding */ duplicateElements),\n/* harmony export */ \"newElement\": () => (/* binding */ newElement),\n/* harmony export */ \"newEmbeddableElement\": () => (/* binding */ newEmbeddableElement),\n/* harmony export */ \"newFrameElement\": () => (/* binding */ newFrameElement),\n/* harmony export */ \"newFreeDrawElement\": () => (/* binding */ newFreeDrawElement),\n/* harmony export */ \"newImageElement\": () => (/* binding */ newImageElement),\n/* harmony export */ \"newLinearElement\": () => (/* binding */ newLinearElement),\n/* harmony export */ \"newTextElement\": () => (/* binding */ newTextElement),\n/* harmony export */ \"refreshTextDimensions\": () => (/* binding */ refreshTextDimensions),\n/* harmony export */ \"regenerateId\": () => (/* binding */ regenerateId),\n/* harmony export */ \"updateTextElement\": () => (/* binding */ updateTextElement)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../random */ \"../../random.ts\");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutateElement */ \"../../element/mutateElement.ts\");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../groups */ \"../../groups.ts\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! . */ \"../../element/index.ts\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math */ \"../../math.ts\");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./textElement */ \"../../element/textElement.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nconst _newElementBase = (type, _a) => {\n var _b, _c;\n\n var {\n x,\n y,\n strokeColor = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeColor,\n backgroundColor = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.backgroundColor,\n fillStyle = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.fillStyle,\n strokeWidth = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeWidth,\n strokeStyle = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeStyle,\n roughness = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.roughness,\n opacity = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.opacity,\n width = 0,\n height = 0,\n angle = 0,\n groupIds = [],\n frameId = null,\n roundness = null,\n boundElements = null,\n link = null,\n locked = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.locked\n } = _a,\n rest = __rest(_a, [\"x\", \"y\", \"strokeColor\", \"backgroundColor\", \"fillStyle\", \"strokeWidth\", \"strokeStyle\", \"roughness\", \"opacity\", \"width\", \"height\", \"angle\", \"groupIds\", \"frameId\", \"roundness\", \"boundElements\", \"link\", \"locked\"]); // assign type to guard against excess properties\n\n\n const element = {\n id: rest.id || (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomId)(),\n type,\n x,\n y,\n width,\n height,\n angle,\n strokeColor,\n backgroundColor,\n fillStyle,\n strokeWidth,\n strokeStyle,\n roughness,\n opacity,\n groupIds,\n frameId,\n roundness,\n seed: (_b = rest.seed) !== null && _b !== void 0 ? _b : (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)(),\n version: rest.version || 1,\n versionNonce: (_c = rest.versionNonce) !== null && _c !== void 0 ? _c : 0,\n isDeleted: false,\n boundElements,\n updated: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUpdatedTimestamp)(),\n link,\n locked\n };\n return element;\n};\n\nconst newElement = opts => _newElementBase(opts.type, opts);\nconst newEmbeddableElement = opts => {\n return Object.assign(Object.assign({}, _newElementBase(\"embeddable\", opts)), {\n validated: opts.validated\n });\n};\nconst newFrameElement = opts => {\n const frameElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(Object.assign(Object.assign({}, _newElementBase(\"frame\", opts)), {\n type: \"frame\",\n name: (opts === null || opts === void 0 ? void 0 : opts.name) || null\n }), {});\n return frameElement;\n};\n/** computes element x/y offset based on textAlign/verticalAlign */\n\nconst getTextElementPositionOffsets = (opts, metrics) => {\n return {\n x: opts.textAlign === \"center\" ? metrics.width / 2 : opts.textAlign === \"right\" ? metrics.width : 0,\n y: opts.verticalAlign === \"middle\" ? metrics.height / 2 : 0\n };\n};\n\nconst newTextElement = opts => {\n const fontFamily = opts.fontFamily || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_FONT_FAMILY;\n const fontSize = opts.fontSize || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_FONT_SIZE;\n const lineHeight = opts.lineHeight || (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getDefaultLineHeight)(fontFamily);\n const text = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.normalizeText)(opts.text);\n const metrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)({\n fontFamily,\n fontSize\n }), lineHeight);\n const textAlign = opts.textAlign || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_TEXT_ALIGN;\n const verticalAlign = opts.verticalAlign || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_VERTICAL_ALIGN;\n const offsets = getTextElementPositionOffsets({\n textAlign,\n verticalAlign\n }, metrics);\n const textElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(Object.assign(Object.assign({}, _newElementBase(\"text\", opts)), {\n text,\n fontSize,\n fontFamily,\n textAlign,\n verticalAlign,\n x: opts.x - offsets.x,\n y: opts.y - offsets.y,\n width: metrics.width,\n height: metrics.height,\n baseline: metrics.baseline,\n containerId: opts.containerId || null,\n originalText: text,\n lineHeight\n }), {});\n return textElement;\n};\n\nconst getAdjustedDimensions = (element, nextText) => {\n const {\n width: nextWidth,\n height: nextHeight,\n baseline: nextBaseline\n } = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(nextText, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(element), element.lineHeight);\n const {\n textAlign,\n verticalAlign\n } = element;\n let x;\n let y;\n\n if (textAlign === \"center\" && verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_8__.VERTICAL_ALIGN.MIDDLE && !element.containerId) {\n const prevMetrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(element), element.lineHeight);\n const offsets = getTextElementPositionOffsets(element, {\n width: nextWidth - prevMetrics.width,\n height: nextHeight - prevMetrics.height\n });\n x = element.x - offsets.x;\n y = element.y - offsets.y;\n } else {\n const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_4__.getElementAbsoluteCoords)(element);\n const [nextX1, nextY1, nextX2, nextY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_6__.getResizedElementAbsoluteCoords)(element, nextWidth, nextHeight, false);\n const deltaX1 = (x1 - nextX1) / 2;\n const deltaY1 = (y1 - nextY1) / 2;\n const deltaX2 = (x2 - nextX2) / 2;\n const deltaY2 = (y2 - nextY2) / 2;\n [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_5__.adjustXYWithRotation)({\n s: true,\n e: textAlign === \"center\" || textAlign === \"left\",\n w: textAlign === \"center\" || textAlign === \"right\"\n }, element.x, element.y, element.angle, deltaX1, deltaY1, deltaX2, deltaY2);\n }\n\n return {\n width: nextWidth,\n height: nextHeight,\n baseline: nextBaseline,\n x: Number.isFinite(x) ? x : element.x,\n y: Number.isFinite(y) ? y : element.y\n };\n};\n\nconst refreshTextDimensions = (textElement, text = textElement.text) => {\n if (textElement.isDeleted) {\n return;\n }\n\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getContainerElement)(textElement);\n\n if (container) {\n text = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.wrapText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getBoundTextMaxWidth)(container));\n }\n\n const dimensions = getAdjustedDimensions(textElement, text);\n return Object.assign({\n text\n }, dimensions);\n};\nconst updateTextElement = (textElement, {\n text,\n isDeleted,\n originalText\n}) => {\n return (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(textElement, Object.assign({\n originalText,\n isDeleted: isDeleted !== null && isDeleted !== void 0 ? isDeleted : textElement.isDeleted\n }, refreshTextDimensions(textElement, originalText)));\n};\nconst newFreeDrawElement = opts => {\n return Object.assign(Object.assign({}, _newElementBase(opts.type, opts)), {\n points: opts.points || [],\n pressures: [],\n simulatePressure: opts.simulatePressure,\n lastCommittedPoint: null\n });\n};\nconst newLinearElement = opts => {\n return Object.assign(Object.assign({}, _newElementBase(opts.type, opts)), {\n points: opts.points || [],\n lastCommittedPoint: null,\n startBinding: null,\n endBinding: null,\n startArrowhead: opts.startArrowhead || null,\n endArrowhead: opts.endArrowhead || null\n });\n};\nconst newImageElement = opts => {\n var _a, _b, _c;\n\n return Object.assign(Object.assign({}, _newElementBase(\"image\", opts)), {\n // in the future we'll support changing stroke color for some SVG elements,\n // and `transparent` will likely mean \"use original colors of the image\"\n strokeColor: \"transparent\",\n status: (_a = opts.status) !== null && _a !== void 0 ? _a : \"pending\",\n fileId: (_b = opts.fileId) !== null && _b !== void 0 ? _b : null,\n scale: (_c = opts.scale) !== null && _c !== void 0 ? _c : [1, 1]\n });\n}; // Simplified deep clone for the purpose of cloning ExcalidrawElement.\n//\n// Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,\n// Typed arrays and other non-null objects.\n//\n// Adapted from https://github.com/lukeed/klona\n//\n// The reason for `deepCopyElement()` wrapper is type safety (only allow\n// passing ExcalidrawElement as the top-level argument).\n\nconst _deepCopyElement = (val, depth = 0) => {\n // only clone non-primitives\n if (val == null || typeof val !== \"object\") {\n return val;\n }\n\n const objectType = Object.prototype.toString.call(val);\n\n if (objectType === \"[object Object]\") {\n const tmp = typeof val.constructor === \"function\" ? Object.create(Object.getPrototypeOf(val)) : {};\n\n for (const key in val) {\n if (val.hasOwnProperty(key)) {\n // don't copy non-serializable objects like these caches. They'll be\n // populated when the element is rendered.\n if (depth === 0 && (key === \"shape\" || key === \"canvas\")) {\n continue;\n }\n\n tmp[key] = _deepCopyElement(val[key], depth + 1);\n }\n }\n\n return tmp;\n }\n\n if (Array.isArray(val)) {\n let k = val.length;\n const arr = new Array(k);\n\n while (k--) {\n arr[k] = _deepCopyElement(val[k], depth + 1);\n }\n\n return arr;\n } // we're not cloning non-array & non-plain-object objects because we\n // don't support them on excalidraw elements yet. If we do, we need to make\n // sure we start cloning them, so let's warn about it.\n\n\n if (true) {\n if (objectType !== \"[object Object]\" && objectType !== \"[object Array]\" && objectType.startsWith(\"[object \")) {\n console.warn(`_deepCloneElement: unexpected object type ${objectType}. This value will not be cloned!`);\n }\n }\n\n return val;\n};\n/**\n * Clones ExcalidrawElement data structure. Does not regenerate id, nonce, or\n * any value. The purpose is to to break object references for immutability\n * reasons, whenever we want to keep the original element, but ensure it's not\n * mutated.\n *\n * Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,\n * Typed arrays and other non-null objects.\n */\n\n\nconst deepCopyElement = val => {\n return _deepCopyElement(val);\n};\n/**\n * utility wrapper to generate new id. In test env it reuses the old + postfix\n * for test assertions.\n */\n\nconst regenerateId = (\n/** supply null if no previous id exists */\npreviousId) => {\n var _a, _b;\n\n if ((0,_utils__WEBPACK_IMPORTED_MODULE_0__.isTestEnv)() && previousId) {\n let nextId = `${previousId}_copy`; // `window.h` may not be defined in some unit tests\n\n if ((_b = (_a = window.h) === null || _a === void 0 ? void 0 : _a.app) === null || _b === void 0 ? void 0 : _b.getSceneElementsIncludingDeleted().find(el => el.id === nextId)) {\n nextId += \"_copy\";\n }\n\n return nextId;\n }\n\n return (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomId)();\n};\n/**\n * Duplicate an element, often used in the alt-drag operation.\n * Note that this method has gotten a bit complicated since the\n * introduction of gruoping/ungrouping elements.\n * @param editingGroupId The current group being edited. The new\n * element will inherit this group and its\n * parents.\n * @param groupIdMapForOperation A Map that maps old group IDs to\n * duplicated ones. If you are duplicating\n * multiple elements at once, share this map\n * amongst all of them\n * @param element Element to duplicate\n * @param overrides Any element properties to override\n */\n\nconst duplicateElement = (editingGroupId, groupIdMapForOperation, element, overrides) => {\n let copy = deepCopyElement(element);\n copy.id = regenerateId(copy.id);\n copy.boundElements = null;\n copy.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUpdatedTimestamp)();\n copy.seed = (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)();\n copy.groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_3__.getNewGroupIdsForDuplication)(copy.groupIds, editingGroupId, groupId => {\n if (!groupIdMapForOperation.has(groupId)) {\n groupIdMapForOperation.set(groupId, regenerateId(groupId));\n }\n\n return groupIdMapForOperation.get(groupId);\n });\n\n if (overrides) {\n copy = Object.assign(copy, overrides);\n }\n\n return copy;\n};\n/**\n * Clones elements, regenerating their ids (including bindings) and group ids.\n *\n * If bindings don't exist in the elements array, they are removed. Therefore,\n * it's advised to supply the whole elements array, or sets of elements that\n * are encapsulated (such as library items), if the purpose is to retain\n * bindings to the cloned elements intact.\n *\n * NOTE by default does not randomize or regenerate anything except the id.\n */\n\nconst duplicateElements = (elements, opts) => {\n const clonedElements = [];\n const origElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.arrayToMap)(elements); // used for for migrating old ids to new ids\n\n const elementNewIdsMap = new Map();\n\n const maybeGetNewId = id => {\n // if we've already migrated the element id, return the new one directly\n if (elementNewIdsMap.has(id)) {\n return elementNewIdsMap.get(id);\n } // if we haven't migrated the element id, but an old element with the same\n // id exists, generate a new id for it and return it\n\n\n if (origElementsMap.has(id)) {\n const newId = regenerateId(id);\n elementNewIdsMap.set(id, newId);\n return newId;\n } // if old element doesn't exist, return null to mark it for removal\n\n\n return null;\n };\n\n const groupNewIdsMap = new Map();\n\n for (const element of elements) {\n const clonedElement = _deepCopyElement(element);\n\n clonedElement.id = maybeGetNewId(element.id);\n\n if (opts === null || opts === void 0 ? void 0 : opts.randomizeSeed) {\n clonedElement.seed = (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)();\n (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.bumpVersion)(clonedElement);\n }\n\n if (clonedElement.groupIds) {\n clonedElement.groupIds = clonedElement.groupIds.map(groupId => {\n if (!groupNewIdsMap.has(groupId)) {\n groupNewIdsMap.set(groupId, regenerateId(groupId));\n }\n\n return groupNewIdsMap.get(groupId);\n });\n }\n\n if (\"containerId\" in clonedElement && clonedElement.containerId) {\n const newContainerId = maybeGetNewId(clonedElement.containerId);\n clonedElement.containerId = newContainerId;\n }\n\n if (\"boundElements\" in clonedElement && clonedElement.boundElements) {\n clonedElement.boundElements = clonedElement.boundElements.reduce((acc, binding) => {\n const newBindingId = maybeGetNewId(binding.id);\n\n if (newBindingId) {\n acc.push(Object.assign(Object.assign({}, binding), {\n id: newBindingId\n }));\n }\n\n return acc;\n }, []);\n }\n\n if (\"endBinding\" in clonedElement && clonedElement.endBinding) {\n const newEndBindingId = maybeGetNewId(clonedElement.endBinding.elementId);\n clonedElement.endBinding = newEndBindingId ? Object.assign(Object.assign({}, clonedElement.endBinding), {\n elementId: newEndBindingId\n }) : null;\n }\n\n if (\"startBinding\" in clonedElement && clonedElement.startBinding) {\n const newEndBindingId = maybeGetNewId(clonedElement.startBinding.elementId);\n clonedElement.startBinding = newEndBindingId ? Object.assign(Object.assign({}, clonedElement.startBinding), {\n elementId: newEndBindingId\n }) : null;\n }\n\n if (clonedElement.frameId) {\n clonedElement.frameId = maybeGetNewId(clonedElement.frameId);\n }\n\n clonedElements.push(clonedElement);\n }\n\n return clonedElements;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNBLDJCQUEyQixzREFBYTtBQUN4QyxNQUFNLDJEQUFXO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaURBQWlEO0FBQ2pEO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxpRkFBaUY7QUFDakY7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2VsZW1lbnQvbmV3RWxlbWVudC50cz80ZDdiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSB0aGlzICYmIHRoaXMuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG5pbXBvcnQgeyBhcnJheVRvTWFwLCBnZXRGb250U3RyaW5nLCBnZXRVcGRhdGVkVGltZXN0YW1wLCBpc1Rlc3RFbnYgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IHJhbmRvbUludGVnZXIsIHJhbmRvbUlkIH0gZnJvbSBcIi4uL3JhbmRvbVwiO1xuaW1wb3J0IHsgYnVtcFZlcnNpb24sIG5ld0VsZW1lbnRXaXRoIH0gZnJvbSBcIi4vbXV0YXRlRWxlbWVudFwiO1xuaW1wb3J0IHsgZ2V0TmV3R3JvdXBJZHNGb3JEdXBsaWNhdGlvbiB9IGZyb20gXCIuLi9ncm91cHNcIjtcbmltcG9ydCB7IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBhZGp1c3RYWVdpdGhSb3RhdGlvbiB9IGZyb20gXCIuLi9tYXRoXCI7XG5pbXBvcnQgeyBnZXRSZXNpemVkRWxlbWVudEFic29sdXRlQ29vcmRzIH0gZnJvbSBcIi4vYm91bmRzXCI7XG5pbXBvcnQgeyBnZXRDb250YWluZXJFbGVtZW50LCBtZWFzdXJlVGV4dCwgbm9ybWFsaXplVGV4dCwgd3JhcFRleHQsIGdldEJvdW5kVGV4dE1heFdpZHRoLCBnZXREZWZhdWx0TGluZUhlaWdodCB9IGZyb20gXCIuL3RleHRFbGVtZW50XCI7XG5pbXBvcnQgeyBERUZBVUxUX0VMRU1FTlRfUFJPUFMsIERFRkFVTFRfRk9OVF9GQU1JTFksIERFRkFVTFRfRk9OVF9TSVpFLCBERUZBVUxUX1RFWFRfQUxJR04sIERFRkFVTFRfVkVSVElDQUxfQUxJR04sIFZFUlRJQ0FMX0FMSUdOIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBfbmV3RWxlbWVudEJhc2UgPSAodHlwZSwgX2EpID0+IHtcbiAgdmFyIF9iLCBfYztcblxuICB2YXIge1xuICAgIHgsXG4gICAgeSxcbiAgICBzdHJva2VDb2xvciA9IERFRkFVTFRfRUxFTUVOVF9QUk9QUy5zdHJva2VDb2xvcixcbiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBERUZBVUxUX0VMRU1FTlRfUFJPUFMuYmFja2dyb3VuZENvbG9yLFxuICAgIGZpbGxTdHlsZSA9IERFRkFVTFRfRUxFTUVOVF9QUk9QUy5maWxsU3R5bGUsXG4gICAgc3Ryb2tlV2lkdGggPSBERUZBVUxUX0VMRU1FTlRfUFJPUFMuc3Ryb2tlV2lkdGgsXG4gICAgc3Ryb2tlU3R5bGUgPSBERUZBVUxUX0VMRU1FTlRfUFJPUFMuc3Ryb2tlU3R5bGUsXG4gICAgcm91Z2huZXNzID0gREVGQVVMVF9FTEVNRU5UX1BST1BTLnJvdWdobmVzcyxcbiAgICBvcGFjaXR5ID0gREVGQVVMVF9FTEVNRU5UX1BST1BTLm9wYWNpdHksXG4gICAgd2lkdGggPSAwLFxuICAgIGhlaWdodCA9IDAsXG4gICAgYW5nbGUgPSAwLFxuICAgIGdyb3VwSWRzID0gW10sXG4gICAgZnJhbWVJZCA9IG51bGwsXG4gICAgcm91bmRuZXNzID0gbnVsbCxcbiAgICBib3VuZEVsZW1lbnRzID0gbnVsbCxcbiAgICBsaW5rID0gbnVsbCxcbiAgICBsb2NrZWQgPSBERUZBVUxUX0VMRU1FTlRfUFJPUFMubG9ja2VkXG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInhcIiwgXCJ5XCIsIFwic3Ryb2tlQ29sb3JcIiwgXCJiYWNrZ3JvdW5kQ29sb3JcIiwgXCJmaWxsU3R5bGVcIiwgXCJzdHJva2VXaWR0aFwiLCBcInN0cm9rZVN0eWxlXCIsIFwicm91Z2huZXNzXCIsIFwib3BhY2l0eVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwiYW5nbGVcIiwgXCJncm91cElkc1wiLCBcImZyYW1lSWRcIiwgXCJyb3VuZG5lc3NcIiwgXCJib3VuZEVsZW1lbnRzXCIsIFwibGlua1wiLCBcImxvY2tlZFwiXSk7IC8vIGFzc2lnbiB0eXBlIHRvIGd1YXJkIGFnYWluc3QgZXhjZXNzIHByb3BlcnRpZXNcblxuXG4gIGNvbnN0IGVsZW1lbnQgPSB7XG4gICAgaWQ6IHJlc3QuaWQgfHwgcmFuZG9tSWQoKSxcbiAgICB0eXBlLFxuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgYW5nbGUsXG4gICAgc3Ryb2tlQ29sb3IsXG4gICAgYmFja2dyb3VuZENvbG9yLFxuICAgIGZpbGxTdHlsZSxcbiAgICBzdHJva2VXaWR0aCxcbiAgICBzdHJva2VTdHlsZSxcbiAgICByb3VnaG5lc3MsXG4gICAgb3BhY2l0eSxcbiAgICBncm91cElkcyxcbiAgICBmcmFtZUlkLFxuICAgIHJvdW5kbmVzcyxcbiAgICBzZWVkOiAoX2IgPSByZXN0LnNlZWQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHJhbmRvbUludGVnZXIoKSxcbiAgICB2ZXJzaW9uOiByZXN0LnZlcnNpb24gfHwgMSxcbiAgICB2ZXJzaW9uTm9uY2U6IChfYyA9IHJlc3QudmVyc2lvbk5vbmNlKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLFxuICAgIGlzRGVsZXRlZDogZmFsc2UsXG4gICAgYm91bmRFbGVtZW50cyxcbiAgICB1cGRhdGVkOiBnZXRVcGRhdGVkVGltZXN0YW1wKCksXG4gICAgbGluayxcbiAgICBsb2NrZWRcbiAgfTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgbmV3RWxlbWVudCA9IG9wdHMgPT4gX25ld0VsZW1lbnRCYXNlKG9wdHMudHlwZSwgb3B0cyk7XG5leHBvcnQgY29uc3QgbmV3RW1iZWRkYWJsZUVsZW1lbnQgPSBvcHRzID0+IHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgX25ld0VsZW1lbnRCYXNlKFwiZW1iZWRkYWJsZVwiLCBvcHRzKSksIHtcbiAgICB2YWxpZGF0ZWQ6IG9wdHMudmFsaWRhdGVkXG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBuZXdGcmFtZUVsZW1lbnQgPSBvcHRzID0+IHtcbiAgY29uc3QgZnJhbWVFbGVtZW50ID0gbmV3RWxlbWVudFdpdGgoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBfbmV3RWxlbWVudEJhc2UoXCJmcmFtZVwiLCBvcHRzKSksIHtcbiAgICB0eXBlOiBcImZyYW1lXCIsXG4gICAgbmFtZTogKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5uYW1lKSB8fCBudWxsXG4gIH0pLCB7fSk7XG4gIHJldHVybiBmcmFtZUVsZW1lbnQ7XG59O1xuLyoqIGNvbXB1dGVzIGVsZW1lbnQgeC95IG9mZnNldCBiYXNlZCBvbiB0ZXh0QWxpZ24vdmVydGljYWxBbGlnbiAqL1xuXG5jb25zdCBnZXRUZXh0RWxlbWVudFBvc2l0aW9uT2Zmc2V0cyA9IChvcHRzLCBtZXRyaWNzKSA9PiB7XG4gIHJldHVybiB7XG4gICAgeDogb3B0cy50ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgPyBtZXRyaWNzLndpZHRoIC8gMiA6IG9wdHMudGV4dEFsaWduID09PSBcInJpZ2h0XCIgPyBtZXRyaWNzLndpZHRoIDogMCxcbiAgICB5OiBvcHRzLnZlcnRpY2FsQWxpZ24gPT09IFwibWlkZGxlXCIgPyBtZXRyaWNzLmhlaWdodCAvIDIgOiAwXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbmV3VGV4dEVsZW1lbnQgPSBvcHRzID0+IHtcbiAgY29uc3QgZm9udEZhbWlseSA9IG9wdHMuZm9udEZhbWlseSB8fCBERUZBVUxUX0ZPTlRfRkFNSUxZO1xuICBjb25zdCBmb250U2l6ZSA9IG9wdHMuZm9udFNpemUgfHwgREVGQVVMVF9GT05UX1NJWkU7XG4gIGNvbnN0IGxpbmVIZWlnaHQgPSBvcHRzLmxpbmVIZWlnaHQgfHwgZ2V0RGVmYXVsdExpbmVIZWlnaHQoZm9udEZhbWlseSk7XG4gIGNvbnN0IHRleHQgPSBub3JtYWxpemVUZXh0KG9wdHMudGV4dCk7XG4gIGNvbnN0IG1ldHJpY3MgPSBtZWFzdXJlVGV4dCh0ZXh0LCBnZXRGb250U3RyaW5nKHtcbiAgICBmb250RmFtaWx5LFxuICAgIGZvbnRTaXplXG4gIH0pLCBsaW5lSGVpZ2h0KTtcbiAgY29uc3QgdGV4dEFsaWduID0gb3B0cy50ZXh0QWxpZ24gfHwgREVGQVVMVF9URVhUX0FMSUdOO1xuICBjb25zdCB2ZXJ0aWNhbEFsaWduID0gb3B0cy52ZXJ0aWNhbEFsaWduIHx8IERFRkFVTFRfVkVSVElDQUxfQUxJR047XG4gIGNvbnN0IG9mZnNldHMgPSBnZXRUZXh0RWxlbWVudFBvc2l0aW9uT2Zmc2V0cyh7XG4gICAgdGV4dEFsaWduLFxuICAgIHZlcnRpY2FsQWxpZ25cbiAgfSwgbWV0cmljcyk7XG4gIGNvbnN0IHRleHRFbGVtZW50ID0gbmV3RWxlbWVudFdpdGgoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBfbmV3RWxlbWVudEJhc2UoXCJ0ZXh0XCIsIG9wdHMpKSwge1xuICAgIHRleHQsXG4gICAgZm9udFNpemUsXG4gICAgZm9udEZhbWlseSxcbiAgICB0ZXh0QWxpZ24sXG4gICAgdmVydGljYWxBbGlnbixcbiAgICB4OiBvcHRzLnggLSBvZmZzZXRzLngsXG4gICAgeTogb3B0cy55IC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiBtZXRyaWNzLndpZHRoLFxuICAgIGhlaWdodDogbWV0cmljcy5oZWlnaHQsXG4gICAgYmFzZWxpbmU6IG1ldHJpY3MuYmFzZWxpbmUsXG4gICAgY29udGFpbmVySWQ6IG9wdHMuY29udGFpbmVySWQgfHwgbnVsbCxcbiAgICBvcmlnaW5hbFRleHQ6IHRleHQsXG4gICAgbGluZUhlaWdodFxuICB9KSwge30pO1xuICByZXR1cm4gdGV4dEVsZW1lbnQ7XG59O1xuXG5jb25zdCBnZXRBZGp1c3RlZERpbWVuc2lvbnMgPSAoZWxlbWVudCwgbmV4dFRleHQpID0+IHtcbiAgY29uc3Qge1xuICAgIHdpZHRoOiBuZXh0V2lkdGgsXG4gICAgaGVpZ2h0OiBuZXh0SGVpZ2h0LFxuICAgIGJhc2VsaW5lOiBuZXh0QmFzZWxpbmVcbiAgfSA9IG1lYXN1cmVUZXh0KG5leHRUZXh0LCBnZXRGb250U3RyaW5nKGVsZW1lbnQpLCBlbGVtZW50LmxpbmVIZWlnaHQpO1xuICBjb25zdCB7XG4gICAgdGV4dEFsaWduLFxuICAgIHZlcnRpY2FsQWxpZ25cbiAgfSA9IGVsZW1lbnQ7XG4gIGxldCB4O1xuICBsZXQgeTtcblxuICBpZiAodGV4dEFsaWduID09PSBcImNlbnRlclwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFZFUlRJQ0FMX0FMSUdOLk1JRERMRSAmJiAhZWxlbWVudC5jb250YWluZXJJZCkge1xuICAgIGNvbnN0IHByZXZNZXRyaWNzID0gbWVhc3VyZVRleHQoZWxlbWVudC50ZXh0LCBnZXRGb250U3RyaW5nKGVsZW1lbnQpLCBlbGVtZW50LmxpbmVIZWlnaHQpO1xuICAgIGNvbnN0IG9mZnNldHMgPSBnZXRUZXh0RWxlbWVudFBvc2l0aW9uT2Zmc2V0cyhlbGVtZW50LCB7XG4gICAgICB3aWR0aDogbmV4dFdpZHRoIC0gcHJldk1ldHJpY3Mud2lkdGgsXG4gICAgICBoZWlnaHQ6IG5leHRIZWlnaHQgLSBwcmV2TWV0cmljcy5oZWlnaHRcbiAgICB9KTtcbiAgICB4ID0gZWxlbWVudC54IC0gb2Zmc2V0cy54O1xuICAgIHkgPSBlbGVtZW50LnkgLSBvZmZzZXRzLnk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgICBjb25zdCBbbmV4dFgxLCBuZXh0WTEsIG5leHRYMiwgbmV4dFkyXSA9IGdldFJlc2l6ZWRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCwgbmV4dFdpZHRoLCBuZXh0SGVpZ2h0LCBmYWxzZSk7XG4gICAgY29uc3QgZGVsdGFYMSA9ICh4MSAtIG5leHRYMSkgLyAyO1xuICAgIGNvbnN0IGRlbHRhWTEgPSAoeTEgLSBuZXh0WTEpIC8gMjtcbiAgICBjb25zdCBkZWx0YVgyID0gKHgyIC0gbmV4dFgyKSAvIDI7XG4gICAgY29uc3QgZGVsdGFZMiA9ICh5MiAtIG5leHRZMikgLyAyO1xuICAgIFt4LCB5XSA9IGFkanVzdFhZV2l0aFJvdGF0aW9uKHtcbiAgICAgIHM6IHRydWUsXG4gICAgICBlOiB0ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgfHwgdGV4dEFsaWduID09PSBcImxlZnRcIixcbiAgICAgIHc6IHRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIiB8fCB0ZXh0QWxpZ24gPT09IFwicmlnaHRcIlxuICAgIH0sIGVsZW1lbnQueCwgZWxlbWVudC55LCBlbGVtZW50LmFuZ2xlLCBkZWx0YVgxLCBkZWx0YVkxLCBkZWx0YVgyLCBkZWx0YVkyKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IG5leHRXaWR0aCxcbiAgICBoZWlnaHQ6IG5leHRIZWlnaHQsXG4gICAgYmFzZWxpbmU6IG5leHRCYXNlbGluZSxcbiAgICB4OiBOdW1iZXIuaXNGaW5pdGUoeCkgPyB4IDogZWxlbWVudC54LFxuICAgIHk6IE51bWJlci5pc0Zpbml0ZSh5KSA/IHkgOiBlbGVtZW50LnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoVGV4dERpbWVuc2lvbnMgPSAodGV4dEVsZW1lbnQsIHRleHQgPSB0ZXh0RWxlbWVudC50ZXh0KSA9PiB7XG4gIGlmICh0ZXh0RWxlbWVudC5pc0RlbGV0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb250YWluZXIgPSBnZXRDb250YWluZXJFbGVtZW50KHRleHRFbGVtZW50KTtcblxuICBpZiAoY29udGFpbmVyKSB7XG4gICAgdGV4dCA9IHdyYXBUZXh0KHRleHQsIGdldEZvbnRTdHJpbmcodGV4dEVsZW1lbnQpLCBnZXRCb3VuZFRleHRNYXhXaWR0aChjb250YWluZXIpKTtcbiAgfVxuXG4gIGNvbnN0IGRpbWVuc2lvbnMgPSBnZXRBZGp1c3RlZERpbWVuc2lvbnModGV4dEVsZW1lbnQsIHRleHQpO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7XG4gICAgdGV4dFxuICB9LCBkaW1lbnNpb25zKTtcbn07XG5leHBvcnQgY29uc3QgdXBkYXRlVGV4dEVsZW1lbnQgPSAodGV4dEVsZW1lbnQsIHtcbiAgdGV4dCxcbiAgaXNEZWxldGVkLFxuICBvcmlnaW5hbFRleHRcbn0pID0+IHtcbiAgcmV0dXJuIG5ld0VsZW1lbnRXaXRoKHRleHRFbGVtZW50LCBPYmplY3QuYXNzaWduKHtcbiAgICBvcmlnaW5hbFRleHQsXG4gICAgaXNEZWxldGVkOiBpc0RlbGV0ZWQgIT09IG51bGwgJiYgaXNEZWxldGVkICE9PSB2b2lkIDAgPyBpc0RlbGV0ZWQgOiB0ZXh0RWxlbWVudC5pc0RlbGV0ZWRcbiAgfSwgcmVmcmVzaFRleHREaW1lbnNpb25zKHRleHRFbGVtZW50LCBvcmlnaW5hbFRleHQpKSk7XG59O1xuZXhwb3J0IGNvbnN0IG5ld0ZyZWVEcmF3RWxlbWVudCA9IG9wdHMgPT4ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBfbmV3RWxlbWVudEJhc2Uob3B0cy50eXBlLCBvcHRzKSksIHtcbiAgICBwb2ludHM6IG9wdHMucG9pbnRzIHx8IFtdLFxuICAgIHByZXNzdXJlczogW10sXG4gICAgc2ltdWxhdGVQcmVzc3VyZTogb3B0cy5zaW11bGF0ZVByZXNzdXJlLFxuICAgIGxhc3RDb21taXR0ZWRQb2ludDogbnVsbFxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgbmV3TGluZWFyRWxlbWVudCA9IG9wdHMgPT4ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBfbmV3RWxlbWVudEJhc2Uob3B0cy50eXBlLCBvcHRzKSksIHtcbiAgICBwb2ludHM6IG9wdHMucG9pbnRzIHx8IFtdLFxuICAgIGxhc3RDb21taXR0ZWRQb2ludDogbnVsbCxcbiAgICBzdGFydEJpbmRpbmc6IG51bGwsXG4gICAgZW5kQmluZGluZzogbnVsbCxcbiAgICBzdGFydEFycm93aGVhZDogb3B0cy5zdGFydEFycm93aGVhZCB8fCBudWxsLFxuICAgIGVuZEFycm93aGVhZDogb3B0cy5lbmRBcnJvd2hlYWQgfHwgbnVsbFxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgbmV3SW1hZ2VFbGVtZW50ID0gb3B0cyA9PiB7XG4gIHZhciBfYSwgX2IsIF9jO1xuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIF9uZXdFbGVtZW50QmFzZShcImltYWdlXCIsIG9wdHMpKSwge1xuICAgIC8vIGluIHRoZSBmdXR1cmUgd2UnbGwgc3VwcG9ydCBjaGFuZ2luZyBzdHJva2UgY29sb3IgZm9yIHNvbWUgU1ZHIGVsZW1lbnRzLFxuICAgIC8vIGFuZCBgdHJhbnNwYXJlbnRgIHdpbGwgbGlrZWx5IG1lYW4gXCJ1c2Ugb3JpZ2luYWwgY29sb3JzIG9mIHRoZSBpbWFnZVwiXG4gICAgc3Ryb2tlQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICBzdGF0dXM6IChfYSA9IG9wdHMuc3RhdHVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBcInBlbmRpbmdcIixcbiAgICBmaWxlSWQ6IChfYiA9IG9wdHMuZmlsZUlkKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBudWxsLFxuICAgIHNjYWxlOiAoX2MgPSBvcHRzLnNjYWxlKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBbMSwgMV1cbiAgfSk7XG59OyAvLyBTaW1wbGlmaWVkIGRlZXAgY2xvbmUgZm9yIHRoZSBwdXJwb3NlIG9mIGNsb25pbmcgRXhjYWxpZHJhd0VsZW1lbnQuXG4vL1xuLy8gT25seSBjbG9uZXMgcGxhaW4gb2JqZWN0cyBhbmQgYXJyYXlzLiBEb2Vzbid0IGNsb25lIERhdGUsIFJlZ0V4cCwgTWFwLCBTZXQsXG4vLyBUeXBlZCBhcnJheXMgYW5kIG90aGVyIG5vbi1udWxsIG9iamVjdHMuXG4vL1xuLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQva2xvbmFcbi8vXG4vLyBUaGUgcmVhc29uIGZvciBgZGVlcENvcHlFbGVtZW50KClgIHdyYXBwZXIgaXMgdHlwZSBzYWZldHkgKG9ubHkgYWxsb3dcbi8vIHBhc3NpbmcgRXhjYWxpZHJhd0VsZW1lbnQgYXMgdGhlIHRvcC1sZXZlbCBhcmd1bWVudCkuXG5cbmNvbnN0IF9kZWVwQ29weUVsZW1lbnQgPSAodmFsLCBkZXB0aCA9IDApID0+IHtcbiAgLy8gb25seSBjbG9uZSBub24tcHJpbWl0aXZlc1xuICBpZiAodmFsID09IG51bGwgfHwgdHlwZW9mIHZhbCAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBjb25zdCBvYmplY3RUeXBlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbCk7XG5cbiAgaWYgKG9iamVjdFR5cGUgPT09IFwiW29iamVjdCBPYmplY3RdXCIpIHtcbiAgICBjb25zdCB0bXAgPSB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yID09PSBcImZ1bmN0aW9uXCIgPyBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpKSA6IHt9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdmFsKSB7XG4gICAgICBpZiAodmFsLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgLy8gZG9uJ3QgY29weSBub24tc2VyaWFsaXphYmxlIG9iamVjdHMgbGlrZSB0aGVzZSBjYWNoZXMuIFRoZXknbGwgYmVcbiAgICAgICAgLy8gcG9wdWxhdGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVuZGVyZWQuXG4gICAgICAgIGlmIChkZXB0aCA9PT0gMCAmJiAoa2V5ID09PSBcInNoYXBlXCIgfHwga2V5ID09PSBcImNhbnZhc1wiKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdG1wW2tleV0gPSBfZGVlcENvcHlFbGVtZW50KHZhbFtrZXldLCBkZXB0aCArIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0bXA7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgbGV0IGsgPSB2YWwubGVuZ3RoO1xuICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShrKTtcblxuICAgIHdoaWxlIChrLS0pIHtcbiAgICAgIGFycltrXSA9IF9kZWVwQ29weUVsZW1lbnQodmFsW2tdLCBkZXB0aCArIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBhcnI7XG4gIH0gLy8gd2UncmUgbm90IGNsb25pbmcgbm9uLWFycmF5ICYgbm9uLXBsYWluLW9iamVjdCBvYmplY3RzIGJlY2F1c2Ugd2VcbiAgLy8gZG9uJ3Qgc3VwcG9ydCB0aGVtIG9uIGV4Y2FsaWRyYXcgZWxlbWVudHMgeWV0LiBJZiB3ZSBkbywgd2UgbmVlZCB0byBtYWtlXG4gIC8vIHN1cmUgd2Ugc3RhcnQgY2xvbmluZyB0aGVtLCBzbyBsZXQncyB3YXJuIGFib3V0IGl0LlxuXG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmIChvYmplY3RUeXBlICE9PSBcIltvYmplY3QgT2JqZWN0XVwiICYmIG9iamVjdFR5cGUgIT09IFwiW29iamVjdCBBcnJheV1cIiAmJiBvYmplY3RUeXBlLnN0YXJ0c1dpdGgoXCJbb2JqZWN0IFwiKSkge1xuICAgICAgY29uc29sZS53YXJuKGBfZGVlcENsb25lRWxlbWVudDogdW5leHBlY3RlZCBvYmplY3QgdHlwZSAke29iamVjdFR5cGV9LiBUaGlzIHZhbHVlIHdpbGwgbm90IGJlIGNsb25lZCFgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsO1xufTtcbi8qKlxuICogQ2xvbmVzIEV4Y2FsaWRyYXdFbGVtZW50IGRhdGEgc3RydWN0dXJlLiBEb2VzIG5vdCByZWdlbmVyYXRlIGlkLCBub25jZSwgb3JcbiAqIGFueSB2YWx1ZS4gVGhlIHB1cnBvc2UgaXMgdG8gdG8gYnJlYWsgb2JqZWN0IHJlZmVyZW5jZXMgZm9yIGltbXV0YWJpbGl0eVxuICogcmVhc29ucywgd2hlbmV2ZXIgd2Ugd2FudCB0byBrZWVwIHRoZSBvcmlnaW5hbCBlbGVtZW50LCBidXQgZW5zdXJlIGl0J3Mgbm90XG4gKiBtdXRhdGVkLlxuICpcbiAqIE9ubHkgY2xvbmVzIHBsYWluIG9iamVjdHMgYW5kIGFycmF5cy4gRG9lc24ndCBjbG9uZSBEYXRlLCBSZWdFeHAsIE1hcCwgU2V0LFxuICogVHlwZWQgYXJyYXlzIGFuZCBvdGhlciBub24tbnVsbCBvYmplY3RzLlxuICovXG5cblxuZXhwb3J0IGNvbnN0IGRlZXBDb3B5RWxlbWVudCA9IHZhbCA9PiB7XG4gIHJldHVybiBfZGVlcENvcHlFbGVtZW50KHZhbCk7XG59O1xuLyoqXG4gKiB1dGlsaXR5IHdyYXBwZXIgdG8gZ2VuZXJhdGUgbmV3IGlkLiBJbiB0ZXN0IGVudiBpdCByZXVzZXMgdGhlIG9sZCArIHBvc3RmaXhcbiAqIGZvciB0ZXN0IGFzc2VydGlvbnMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IHJlZ2VuZXJhdGVJZCA9IChcbi8qKiBzdXBwbHkgbnVsbCBpZiBubyBwcmV2aW91cyBpZCBleGlzdHMgKi9cbnByZXZpb3VzSWQpID0+IHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaXNUZXN0RW52KCkgJiYgcHJldmlvdXNJZCkge1xuICAgIGxldCBuZXh0SWQgPSBgJHtwcmV2aW91c0lkfV9jb3B5YDsgLy8gYHdpbmRvdy5oYCBtYXkgbm90IGJlIGRlZmluZWQgaW4gc29tZSB1bml0IHRlc3RzXG5cbiAgICBpZiAoKF9iID0gKF9hID0gd2luZG93LmgpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hcHApID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5nZXRTY2VuZUVsZW1lbnRzSW5jbHVkaW5nRGVsZXRlZCgpLmZpbmQoZWwgPT4gZWwuaWQgPT09IG5leHRJZCkpIHtcbiAgICAgIG5leHRJZCArPSBcIl9jb3B5XCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRJZDtcbiAgfVxuXG4gIHJldHVybiByYW5kb21JZCgpO1xufTtcbi8qKlxuICogRHVwbGljYXRlIGFuIGVsZW1lbnQsIG9mdGVuIHVzZWQgaW4gdGhlIGFsdC1kcmFnIG9wZXJhdGlvbi5cbiAqIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBoYXMgZ290dGVuIGEgYml0IGNvbXBsaWNhdGVkIHNpbmNlIHRoZVxuICogaW50cm9kdWN0aW9uIG9mIGdydW9waW5nL3VuZ3JvdXBpbmcgZWxlbWVudHMuXG4gKiBAcGFyYW0gZWRpdGluZ0dyb3VwSWQgVGhlIGN1cnJlbnQgZ3JvdXAgYmVpbmcgZWRpdGVkLiBUaGUgbmV3XG4gKiAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCB3aWxsIGluaGVyaXQgdGhpcyBncm91cCBhbmQgaXRzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50cy5cbiAqIEBwYXJhbSBncm91cElkTWFwRm9yT3BlcmF0aW9uIEEgTWFwIHRoYXQgbWFwcyBvbGQgZ3JvdXAgSURzIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVkIG9uZXMuIElmIHlvdSBhcmUgZHVwbGljYXRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGVsZW1lbnRzIGF0IG9uY2UsIHNoYXJlIHRoaXMgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW9uZ3N0IGFsbCBvZiB0aGVtXG4gKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIGR1cGxpY2F0ZVxuICogQHBhcmFtIG92ZXJyaWRlcyBBbnkgZWxlbWVudCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlXG4gKi9cblxuZXhwb3J0IGNvbnN0IGR1cGxpY2F0ZUVsZW1lbnQgPSAoZWRpdGluZ0dyb3VwSWQsIGdyb3VwSWRNYXBGb3JPcGVyYXRpb24sIGVsZW1lbnQsIG92ZXJyaWRlcykgPT4ge1xuICBsZXQgY29weSA9IGRlZXBDb3B5RWxlbWVudChlbGVtZW50KTtcbiAgY29weS5pZCA9IHJlZ2VuZXJhdGVJZChjb3B5LmlkKTtcbiAgY29weS5ib3VuZEVsZW1lbnRzID0gbnVsbDtcbiAgY29weS51cGRhdGVkID0gZ2V0VXBkYXRlZFRpbWVzdGFtcCgpO1xuICBjb3B5LnNlZWQgPSByYW5kb21JbnRlZ2VyKCk7XG4gIGNvcHkuZ3JvdXBJZHMgPSBnZXROZXdHcm91cElkc0ZvckR1cGxpY2F0aW9uKGNvcHkuZ3JvdXBJZHMsIGVkaXRpbmdHcm91cElkLCBncm91cElkID0+IHtcbiAgICBpZiAoIWdyb3VwSWRNYXBGb3JPcGVyYXRpb24uaGFzKGdyb3VwSWQpKSB7XG4gICAgICBncm91cElkTWFwRm9yT3BlcmF0aW9uLnNldChncm91cElkLCByZWdlbmVyYXRlSWQoZ3JvdXBJZCkpO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cElkTWFwRm9yT3BlcmF0aW9uLmdldChncm91cElkKTtcbiAgfSk7XG5cbiAgaWYgKG92ZXJyaWRlcykge1xuICAgIGNvcHkgPSBPYmplY3QuYXNzaWduKGNvcHksIG92ZXJyaWRlcyk7XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG4vKipcbiAqIENsb25lcyBlbGVtZW50cywgcmVnZW5lcmF0aW5nIHRoZWlyIGlkcyAoaW5jbHVkaW5nIGJpbmRpbmdzKSBhbmQgZ3JvdXAgaWRzLlxuICpcbiAqIElmIGJpbmRpbmdzIGRvbid0IGV4aXN0IGluIHRoZSBlbGVtZW50cyBhcnJheSwgdGhleSBhcmUgcmVtb3ZlZC4gVGhlcmVmb3JlLFxuICogaXQncyBhZHZpc2VkIHRvIHN1cHBseSB0aGUgd2hvbGUgZWxlbWVudHMgYXJyYXksIG9yIHNldHMgb2YgZWxlbWVudHMgdGhhdFxuICogYXJlIGVuY2Fwc3VsYXRlZCAoc3VjaCBhcyBsaWJyYXJ5IGl0ZW1zKSwgaWYgdGhlIHB1cnBvc2UgaXMgdG8gcmV0YWluXG4gKiBiaW5kaW5ncyB0byB0aGUgY2xvbmVkIGVsZW1lbnRzIGludGFjdC5cbiAqXG4gKiBOT1RFIGJ5IGRlZmF1bHQgZG9lcyBub3QgcmFuZG9taXplIG9yIHJlZ2VuZXJhdGUgYW55dGhpbmcgZXhjZXB0IHRoZSBpZC5cbiAqL1xuXG5leHBvcnQgY29uc3QgZHVwbGljYXRlRWxlbWVudHMgPSAoZWxlbWVudHMsIG9wdHMpID0+IHtcbiAgY29uc3QgY2xvbmVkRWxlbWVudHMgPSBbXTtcbiAgY29uc3Qgb3JpZ0VsZW1lbnRzTWFwID0gYXJyYXlUb01hcChlbGVtZW50cyk7IC8vIHVzZWQgZm9yIGZvciBtaWdyYXRpbmcgb2xkIGlkcyB0byBuZXcgaWRzXG5cbiAgY29uc3QgZWxlbWVudE5ld0lkc01hcCA9IG5ldyBNYXAoKTtcblxuICBjb25zdCBtYXliZUdldE5ld0lkID0gaWQgPT4ge1xuICAgIC8vIGlmIHdlJ3ZlIGFscmVhZHkgbWlncmF0ZWQgdGhlIGVsZW1lbnQgaWQsIHJldHVybiB0aGUgbmV3IG9uZSBkaXJlY3RseVxuICAgIGlmIChlbGVtZW50TmV3SWRzTWFwLmhhcyhpZCkpIHtcbiAgICAgIHJldHVybiBlbGVtZW50TmV3SWRzTWFwLmdldChpZCk7XG4gICAgfSAvLyBpZiB3ZSBoYXZlbid0IG1pZ3JhdGVkIHRoZSBlbGVtZW50IGlkLCBidXQgYW4gb2xkIGVsZW1lbnQgd2l0aCB0aGUgc2FtZVxuICAgIC8vIGlkIGV4aXN0cywgZ2VuZXJhdGUgYSBuZXcgaWQgZm9yIGl0IGFuZCByZXR1cm4gaXRcblxuXG4gICAgaWYgKG9yaWdFbGVtZW50c01hcC5oYXMoaWQpKSB7XG4gICAgICBjb25zdCBuZXdJZCA9IHJlZ2VuZXJhdGVJZChpZCk7XG4gICAgICBlbGVtZW50TmV3SWRzTWFwLnNldChpZCwgbmV3SWQpO1xuICAgICAgcmV0dXJuIG5ld0lkO1xuICAgIH0gLy8gaWYgb2xkIGVsZW1lbnQgZG9lc24ndCBleGlzdCwgcmV0dXJuIG51bGwgdG8gbWFyayBpdCBmb3IgcmVtb3ZhbFxuXG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb25zdCBncm91cE5ld0lkc01hcCA9IG5ldyBNYXAoKTtcblxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICBjb25zdCBjbG9uZWRFbGVtZW50ID0gX2RlZXBDb3B5RWxlbWVudChlbGVtZW50KTtcblxuICAgIGNsb25lZEVsZW1lbnQuaWQgPSBtYXliZUdldE5ld0lkKGVsZW1lbnQuaWQpO1xuXG4gICAgaWYgKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5yYW5kb21pemVTZWVkKSB7XG4gICAgICBjbG9uZWRFbGVtZW50LnNlZWQgPSByYW5kb21JbnRlZ2VyKCk7XG4gICAgICBidW1wVmVyc2lvbihjbG9uZWRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAoY2xvbmVkRWxlbWVudC5ncm91cElkcykge1xuICAgICAgY2xvbmVkRWxlbWVudC5ncm91cElkcyA9IGNsb25lZEVsZW1lbnQuZ3JvdXBJZHMubWFwKGdyb3VwSWQgPT4ge1xuICAgICAgICBpZiAoIWdyb3VwTmV3SWRzTWFwLmhhcyhncm91cElkKSkge1xuICAgICAgICAgIGdyb3VwTmV3SWRzTWFwLnNldChncm91cElkLCByZWdlbmVyYXRlSWQoZ3JvdXBJZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwTmV3SWRzTWFwLmdldChncm91cElkKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChcImNvbnRhaW5lcklkXCIgaW4gY2xvbmVkRWxlbWVudCAmJiBjbG9uZWRFbGVtZW50LmNvbnRhaW5lcklkKSB7XG4gICAgICBjb25zdCBuZXdDb250YWluZXJJZCA9IG1heWJlR2V0TmV3SWQoY2xvbmVkRWxlbWVudC5jb250YWluZXJJZCk7XG4gICAgICBjbG9uZWRFbGVtZW50LmNvbnRhaW5lcklkID0gbmV3Q29udGFpbmVySWQ7XG4gICAgfVxuXG4gICAgaWYgKFwiYm91bmRFbGVtZW50c1wiIGluIGNsb25lZEVsZW1lbnQgJiYgY2xvbmVkRWxlbWVudC5ib3VuZEVsZW1lbnRzKSB7XG4gICAgICBjbG9uZWRFbGVtZW50LmJvdW5kRWxlbWVudHMgPSBjbG9uZWRFbGVtZW50LmJvdW5kRWxlbWVudHMucmVkdWNlKChhY2MsIGJpbmRpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbmV3QmluZGluZ0lkID0gbWF5YmVHZXROZXdJZChiaW5kaW5nLmlkKTtcblxuICAgICAgICBpZiAobmV3QmluZGluZ0lkKSB7XG4gICAgICAgICAgYWNjLnB1c2goT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBiaW5kaW5nKSwge1xuICAgICAgICAgICAgaWQ6IG5ld0JpbmRpbmdJZFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgaWYgKFwiZW5kQmluZGluZ1wiIGluIGNsb25lZEVsZW1lbnQgJiYgY2xvbmVkRWxlbWVudC5lbmRCaW5kaW5nKSB7XG4gICAgICBjb25zdCBuZXdFbmRCaW5kaW5nSWQgPSBtYXliZUdldE5ld0lkKGNsb25lZEVsZW1lbnQuZW5kQmluZGluZy5lbGVtZW50SWQpO1xuICAgICAgY2xvbmVkRWxlbWVudC5lbmRCaW5kaW5nID0gbmV3RW5kQmluZGluZ0lkID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjbG9uZWRFbGVtZW50LmVuZEJpbmRpbmcpLCB7XG4gICAgICAgIGVsZW1lbnRJZDogbmV3RW5kQmluZGluZ0lkXG4gICAgICB9KSA6IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKFwic3RhcnRCaW5kaW5nXCIgaW4gY2xvbmVkRWxlbWVudCAmJiBjbG9uZWRFbGVtZW50LnN0YXJ0QmluZGluZykge1xuICAgICAgY29uc3QgbmV3RW5kQmluZGluZ0lkID0gbWF5YmVHZXROZXdJZChjbG9uZWRFbGVtZW50LnN0YXJ0QmluZGluZy5lbGVtZW50SWQpO1xuICAgICAgY2xvbmVkRWxlbWVudC5zdGFydEJpbmRpbmcgPSBuZXdFbmRCaW5kaW5nSWQgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNsb25lZEVsZW1lbnQuc3RhcnRCaW5kaW5nKSwge1xuICAgICAgICBlbGVtZW50SWQ6IG5ld0VuZEJpbmRpbmdJZFxuICAgICAgfSkgOiBudWxsO1xuICAgIH1cblxuICAgIGlmIChjbG9uZWRFbGVtZW50LmZyYW1lSWQpIHtcbiAgICAgIGNsb25lZEVsZW1lbnQuZnJhbWVJZCA9IG1heWJlR2V0TmV3SWQoY2xvbmVkRWxlbWVudC5mcmFtZUlkKTtcbiAgICB9XG5cbiAgICBjbG9uZWRFbGVtZW50cy5wdXNoKGNsb25lZEVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGNsb25lZEVsZW1lbnRzO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../element/newElement.ts\n");
3962
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"deepCopyElement\": () => (/* binding */ deepCopyElement),\n/* harmony export */ \"duplicateElement\": () => (/* binding */ duplicateElement),\n/* harmony export */ \"duplicateElements\": () => (/* binding */ duplicateElements),\n/* harmony export */ \"newElement\": () => (/* binding */ newElement),\n/* harmony export */ \"newEmbeddableElement\": () => (/* binding */ newEmbeddableElement),\n/* harmony export */ \"newFrameElement\": () => (/* binding */ newFrameElement),\n/* harmony export */ \"newFreeDrawElement\": () => (/* binding */ newFreeDrawElement),\n/* harmony export */ \"newImageElement\": () => (/* binding */ newImageElement),\n/* harmony export */ \"newLinearElement\": () => (/* binding */ newLinearElement),\n/* harmony export */ \"newTextElement\": () => (/* binding */ newTextElement),\n/* harmony export */ \"refreshTextDimensions\": () => (/* binding */ refreshTextDimensions),\n/* harmony export */ \"regenerateId\": () => (/* binding */ regenerateId),\n/* harmony export */ \"updateTextElement\": () => (/* binding */ updateTextElement)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../random */ \"../../random.ts\");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutateElement */ \"../../element/mutateElement.ts\");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../groups */ \"../../groups.ts\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! . */ \"../../element/index.ts\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math */ \"../../math.ts\");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./textElement */ \"../../element/textElement.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nconst _newElementBase = (type, _a) => {\n var _b, _c;\n\n var {\n x,\n y,\n strokeColor = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeColor,\n backgroundColor = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.backgroundColor,\n fillStyle = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.fillStyle,\n strokeWidth = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeWidth,\n strokeStyle = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeStyle,\n roughness = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.roughness,\n opacity = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.opacity,\n width = 0,\n height = 0,\n angle = 0,\n groupIds = [],\n frameId = null,\n roundness = null,\n boundElements = null,\n link = null,\n locked = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.locked\n } = _a,\n rest = __rest(_a, [\"x\", \"y\", \"strokeColor\", \"backgroundColor\", \"fillStyle\", \"strokeWidth\", \"strokeStyle\", \"roughness\", \"opacity\", \"width\", \"height\", \"angle\", \"groupIds\", \"frameId\", \"roundness\", \"boundElements\", \"link\", \"locked\"]); // assign type to guard against excess properties\n\n\n const element = {\n id: rest.id || (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomId)(),\n type,\n x,\n y,\n width,\n height,\n angle,\n strokeColor,\n backgroundColor,\n fillStyle,\n strokeWidth,\n strokeStyle,\n roughness,\n opacity,\n groupIds,\n frameId,\n roundness,\n seed: (_b = rest.seed) !== null && _b !== void 0 ? _b : (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)(),\n version: rest.version || 1,\n versionNonce: (_c = rest.versionNonce) !== null && _c !== void 0 ? _c : 0,\n isDeleted: false,\n boundElements,\n updated: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUpdatedTimestamp)(),\n link,\n locked,\n customData: rest.customData\n };\n return element;\n};\n\nconst newElement = opts => _newElementBase(opts.type, opts);\nconst newEmbeddableElement = opts => {\n return Object.assign(Object.assign({}, _newElementBase(\"embeddable\", opts)), {\n validated: opts.validated\n });\n};\nconst newFrameElement = opts => {\n const frameElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(Object.assign(Object.assign({}, _newElementBase(\"frame\", opts)), {\n type: \"frame\",\n name: (opts === null || opts === void 0 ? void 0 : opts.name) || null\n }), {});\n return frameElement;\n};\n/** computes element x/y offset based on textAlign/verticalAlign */\n\nconst getTextElementPositionOffsets = (opts, metrics) => {\n return {\n x: opts.textAlign === \"center\" ? metrics.width / 2 : opts.textAlign === \"right\" ? metrics.width : 0,\n y: opts.verticalAlign === \"middle\" ? metrics.height / 2 : 0\n };\n};\n\nconst newTextElement = opts => {\n const fontFamily = opts.fontFamily || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_FONT_FAMILY;\n const fontSize = opts.fontSize || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_FONT_SIZE;\n const lineHeight = opts.lineHeight || (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getDefaultLineHeight)(fontFamily);\n const text = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.normalizeText)(opts.text);\n const metrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)({\n fontFamily,\n fontSize\n }), lineHeight);\n const textAlign = opts.textAlign || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_TEXT_ALIGN;\n const verticalAlign = opts.verticalAlign || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_VERTICAL_ALIGN;\n const offsets = getTextElementPositionOffsets({\n textAlign,\n verticalAlign\n }, metrics);\n const textElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(Object.assign(Object.assign({}, _newElementBase(\"text\", opts)), {\n text,\n fontSize,\n fontFamily,\n textAlign,\n verticalAlign,\n x: opts.x - offsets.x,\n y: opts.y - offsets.y,\n width: metrics.width,\n height: metrics.height,\n baseline: metrics.baseline,\n containerId: opts.containerId || null,\n originalText: text,\n lineHeight\n }), {});\n return textElement;\n};\n\nconst getAdjustedDimensions = (element, nextText) => {\n const {\n width: nextWidth,\n height: nextHeight,\n baseline: nextBaseline\n } = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(nextText, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(element), element.lineHeight);\n const {\n textAlign,\n verticalAlign\n } = element;\n let x;\n let y;\n\n if (textAlign === \"center\" && verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_8__.VERTICAL_ALIGN.MIDDLE && !element.containerId) {\n const prevMetrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(element), element.lineHeight);\n const offsets = getTextElementPositionOffsets(element, {\n width: nextWidth - prevMetrics.width,\n height: nextHeight - prevMetrics.height\n });\n x = element.x - offsets.x;\n y = element.y - offsets.y;\n } else {\n const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_4__.getElementAbsoluteCoords)(element);\n const [nextX1, nextY1, nextX2, nextY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_6__.getResizedElementAbsoluteCoords)(element, nextWidth, nextHeight, false);\n const deltaX1 = (x1 - nextX1) / 2;\n const deltaY1 = (y1 - nextY1) / 2;\n const deltaX2 = (x2 - nextX2) / 2;\n const deltaY2 = (y2 - nextY2) / 2;\n [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_5__.adjustXYWithRotation)({\n s: true,\n e: textAlign === \"center\" || textAlign === \"left\",\n w: textAlign === \"center\" || textAlign === \"right\"\n }, element.x, element.y, element.angle, deltaX1, deltaY1, deltaX2, deltaY2);\n }\n\n return {\n width: nextWidth,\n height: nextHeight,\n baseline: nextBaseline,\n x: Number.isFinite(x) ? x : element.x,\n y: Number.isFinite(y) ? y : element.y\n };\n};\n\nconst refreshTextDimensions = (textElement, text = textElement.text) => {\n if (textElement.isDeleted) {\n return;\n }\n\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getContainerElement)(textElement);\n\n if (container) {\n text = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.wrapText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getBoundTextMaxWidth)(container));\n }\n\n const dimensions = getAdjustedDimensions(textElement, text);\n return Object.assign({\n text\n }, dimensions);\n};\nconst updateTextElement = (textElement, {\n text,\n isDeleted,\n originalText\n}) => {\n return (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(textElement, Object.assign({\n originalText,\n isDeleted: isDeleted !== null && isDeleted !== void 0 ? isDeleted : textElement.isDeleted\n }, refreshTextDimensions(textElement, originalText)));\n};\nconst newFreeDrawElement = opts => {\n return Object.assign(Object.assign({}, _newElementBase(opts.type, opts)), {\n points: opts.points || [],\n pressures: [],\n simulatePressure: opts.simulatePressure,\n lastCommittedPoint: null\n });\n};\nconst newLinearElement = opts => {\n return Object.assign(Object.assign({}, _newElementBase(opts.type, opts)), {\n points: opts.points || [],\n lastCommittedPoint: null,\n startBinding: null,\n endBinding: null,\n startArrowhead: opts.startArrowhead || null,\n endArrowhead: opts.endArrowhead || null\n });\n};\nconst newImageElement = opts => {\n var _a, _b, _c;\n\n return Object.assign(Object.assign({}, _newElementBase(\"image\", opts)), {\n // in the future we'll support changing stroke color for some SVG elements,\n // and `transparent` will likely mean \"use original colors of the image\"\n strokeColor: \"transparent\",\n status: (_a = opts.status) !== null && _a !== void 0 ? _a : \"pending\",\n fileId: (_b = opts.fileId) !== null && _b !== void 0 ? _b : null,\n scale: (_c = opts.scale) !== null && _c !== void 0 ? _c : [1, 1]\n });\n}; // Simplified deep clone for the purpose of cloning ExcalidrawElement.\n//\n// Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,\n// Typed arrays and other non-null objects.\n//\n// Adapted from https://github.com/lukeed/klona\n//\n// The reason for `deepCopyElement()` wrapper is type safety (only allow\n// passing ExcalidrawElement as the top-level argument).\n\nconst _deepCopyElement = (val, depth = 0) => {\n // only clone non-primitives\n if (val == null || typeof val !== \"object\") {\n return val;\n }\n\n const objectType = Object.prototype.toString.call(val);\n\n if (objectType === \"[object Object]\") {\n const tmp = typeof val.constructor === \"function\" ? Object.create(Object.getPrototypeOf(val)) : {};\n\n for (const key in val) {\n if (val.hasOwnProperty(key)) {\n // don't copy non-serializable objects like these caches. They'll be\n // populated when the element is rendered.\n if (depth === 0 && (key === \"shape\" || key === \"canvas\")) {\n continue;\n }\n\n tmp[key] = _deepCopyElement(val[key], depth + 1);\n }\n }\n\n return tmp;\n }\n\n if (Array.isArray(val)) {\n let k = val.length;\n const arr = new Array(k);\n\n while (k--) {\n arr[k] = _deepCopyElement(val[k], depth + 1);\n }\n\n return arr;\n } // we're not cloning non-array & non-plain-object objects because we\n // don't support them on excalidraw elements yet. If we do, we need to make\n // sure we start cloning them, so let's warn about it.\n\n\n if (true) {\n if (objectType !== \"[object Object]\" && objectType !== \"[object Array]\" && objectType.startsWith(\"[object \")) {\n console.warn(`_deepCloneElement: unexpected object type ${objectType}. This value will not be cloned!`);\n }\n }\n\n return val;\n};\n/**\n * Clones ExcalidrawElement data structure. Does not regenerate id, nonce, or\n * any value. The purpose is to to break object references for immutability\n * reasons, whenever we want to keep the original element, but ensure it's not\n * mutated.\n *\n * Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,\n * Typed arrays and other non-null objects.\n */\n\n\nconst deepCopyElement = val => {\n return _deepCopyElement(val);\n};\n/**\n * utility wrapper to generate new id. In test env it reuses the old + postfix\n * for test assertions.\n */\n\nconst regenerateId = (\n/** supply null if no previous id exists */\npreviousId) => {\n var _a, _b;\n\n if ((0,_utils__WEBPACK_IMPORTED_MODULE_0__.isTestEnv)() && previousId) {\n let nextId = `${previousId}_copy`; // `window.h` may not be defined in some unit tests\n\n if ((_b = (_a = window.h) === null || _a === void 0 ? void 0 : _a.app) === null || _b === void 0 ? void 0 : _b.getSceneElementsIncludingDeleted().find(el => el.id === nextId)) {\n nextId += \"_copy\";\n }\n\n return nextId;\n }\n\n return (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomId)();\n};\n/**\n * Duplicate an element, often used in the alt-drag operation.\n * Note that this method has gotten a bit complicated since the\n * introduction of gruoping/ungrouping elements.\n * @param editingGroupId The current group being edited. The new\n * element will inherit this group and its\n * parents.\n * @param groupIdMapForOperation A Map that maps old group IDs to\n * duplicated ones. If you are duplicating\n * multiple elements at once, share this map\n * amongst all of them\n * @param element Element to duplicate\n * @param overrides Any element properties to override\n */\n\nconst duplicateElement = (editingGroupId, groupIdMapForOperation, element, overrides) => {\n let copy = deepCopyElement(element);\n copy.id = regenerateId(copy.id);\n copy.boundElements = null;\n copy.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUpdatedTimestamp)();\n copy.seed = (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)();\n copy.groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_3__.getNewGroupIdsForDuplication)(copy.groupIds, editingGroupId, groupId => {\n if (!groupIdMapForOperation.has(groupId)) {\n groupIdMapForOperation.set(groupId, regenerateId(groupId));\n }\n\n return groupIdMapForOperation.get(groupId);\n });\n\n if (overrides) {\n copy = Object.assign(copy, overrides);\n }\n\n return copy;\n};\n/**\n * Clones elements, regenerating their ids (including bindings) and group ids.\n *\n * If bindings don't exist in the elements array, they are removed. Therefore,\n * it's advised to supply the whole elements array, or sets of elements that\n * are encapsulated (such as library items), if the purpose is to retain\n * bindings to the cloned elements intact.\n *\n * NOTE by default does not randomize or regenerate anything except the id.\n */\n\nconst duplicateElements = (elements, opts) => {\n const clonedElements = [];\n const origElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.arrayToMap)(elements); // used for for migrating old ids to new ids\n\n const elementNewIdsMap = new Map();\n\n const maybeGetNewId = id => {\n // if we've already migrated the element id, return the new one directly\n if (elementNewIdsMap.has(id)) {\n return elementNewIdsMap.get(id);\n } // if we haven't migrated the element id, but an old element with the same\n // id exists, generate a new id for it and return it\n\n\n if (origElementsMap.has(id)) {\n const newId = regenerateId(id);\n elementNewIdsMap.set(id, newId);\n return newId;\n } // if old element doesn't exist, return null to mark it for removal\n\n\n return null;\n };\n\n const groupNewIdsMap = new Map();\n\n for (const element of elements) {\n const clonedElement = _deepCopyElement(element);\n\n clonedElement.id = maybeGetNewId(element.id);\n\n if (opts === null || opts === void 0 ? void 0 : opts.randomizeSeed) {\n clonedElement.seed = (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)();\n (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.bumpVersion)(clonedElement);\n }\n\n if (clonedElement.groupIds) {\n clonedElement.groupIds = clonedElement.groupIds.map(groupId => {\n if (!groupNewIdsMap.has(groupId)) {\n groupNewIdsMap.set(groupId, regenerateId(groupId));\n }\n\n return groupNewIdsMap.get(groupId);\n });\n }\n\n if (\"containerId\" in clonedElement && clonedElement.containerId) {\n const newContainerId = maybeGetNewId(clonedElement.containerId);\n clonedElement.containerId = newContainerId;\n }\n\n if (\"boundElements\" in clonedElement && clonedElement.boundElements) {\n clonedElement.boundElements = clonedElement.boundElements.reduce((acc, binding) => {\n const newBindingId = maybeGetNewId(binding.id);\n\n if (newBindingId) {\n acc.push(Object.assign(Object.assign({}, binding), {\n id: newBindingId\n }));\n }\n\n return acc;\n }, []);\n }\n\n if (\"endBinding\" in clonedElement && clonedElement.endBinding) {\n const newEndBindingId = maybeGetNewId(clonedElement.endBinding.elementId);\n clonedElement.endBinding = newEndBindingId ? Object.assign(Object.assign({}, clonedElement.endBinding), {\n elementId: newEndBindingId\n }) : null;\n }\n\n if (\"startBinding\" in clonedElement && clonedElement.startBinding) {\n const newEndBindingId = maybeGetNewId(clonedElement.startBinding.elementId);\n clonedElement.startBinding = newEndBindingId ? Object.assign(Object.assign({}, clonedElement.startBinding), {\n elementId: newEndBindingId\n }) : null;\n }\n\n if (clonedElement.frameId) {\n clonedElement.frameId = maybeGetNewId(clonedElement.frameId);\n }\n\n clonedElements.push(clonedElement);\n }\n\n return clonedElements;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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OztBQUVBO0FBQ0EsMkJBQTJCLHNEQUFhO0FBQ3hDLE1BQU0sMkRBQVc7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLGlGQUFpRjtBQUNqRjtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsbUZBQW1GO0FBQ25GO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZWxlbWVudC9uZXdFbGVtZW50LnRzPzRkN2IiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGFycmF5VG9NYXAsIGdldEZvbnRTdHJpbmcsIGdldFVwZGF0ZWRUaW1lc3RhbXAsIGlzVGVzdEVudiB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgcmFuZG9tSW50ZWdlciwgcmFuZG9tSWQgfSBmcm9tIFwiLi4vcmFuZG9tXCI7XG5pbXBvcnQgeyBidW1wVmVyc2lvbiwgbmV3RWxlbWVudFdpdGggfSBmcm9tIFwiLi9tdXRhdGVFbGVtZW50XCI7XG5pbXBvcnQgeyBnZXROZXdHcm91cElkc0ZvckR1cGxpY2F0aW9uIH0gZnJvbSBcIi4uL2dyb3Vwc1wiO1xuaW1wb3J0IHsgZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzIH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IGFkanVzdFhZV2l0aFJvdGF0aW9uIH0gZnJvbSBcIi4uL21hdGhcIjtcbmltcG9ydCB7IGdldFJlc2l6ZWRFbGVtZW50QWJzb2x1dGVDb29yZHMgfSBmcm9tIFwiLi9ib3VuZHNcIjtcbmltcG9ydCB7IGdldENvbnRhaW5lckVsZW1lbnQsIG1lYXN1cmVUZXh0LCBub3JtYWxpemVUZXh0LCB3cmFwVGV4dCwgZ2V0Qm91bmRUZXh0TWF4V2lkdGgsIGdldERlZmF1bHRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vdGV4dEVsZW1lbnRcIjtcbmltcG9ydCB7IERFRkFVTFRfRUxFTUVOVF9QUk9QUywgREVGQVVMVF9GT05UX0ZBTUlMWSwgREVGQVVMVF9GT05UX1NJWkUsIERFRkFVTFRfVEVYVF9BTElHTiwgREVGQVVMVF9WRVJUSUNBTF9BTElHTiwgVkVSVElDQUxfQUxJR04gfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IF9uZXdFbGVtZW50QmFzZSA9ICh0eXBlLCBfYSkgPT4ge1xuICB2YXIgX2IsIF9jO1xuXG4gIHZhciB7XG4gICAgeCxcbiAgICB5LFxuICAgIHN0cm9rZUNvbG9yID0gREVGQVVMVF9FTEVNRU5UX1BST1BTLnN0cm9rZUNvbG9yLFxuICAgIGJhY2tncm91bmRDb2xvciA9IERFRkFVTFRfRUxFTUVOVF9QUk9QUy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgZmlsbFN0eWxlID0gREVGQVVMVF9FTEVNRU5UX1BST1BTLmZpbGxTdHlsZSxcbiAgICBzdHJva2VXaWR0aCA9IERFRkFVTFRfRUxFTUVOVF9QUk9QUy5zdHJva2VXaWR0aCxcbiAgICBzdHJva2VTdHlsZSA9IERFRkFVTFRfRUxFTUVOVF9QUk9QUy5zdHJva2VTdHlsZSxcbiAgICByb3VnaG5lc3MgPSBERUZBVUxUX0VMRU1FTlRfUFJPUFMucm91Z2huZXNzLFxuICAgIG9wYWNpdHkgPSBERUZBVUxUX0VMRU1FTlRfUFJPUFMub3BhY2l0eSxcbiAgICB3aWR0aCA9IDAsXG4gICAgaGVpZ2h0ID0gMCxcbiAgICBhbmdsZSA9IDAsXG4gICAgZ3JvdXBJZHMgPSBbXSxcbiAgICBmcmFtZUlkID0gbnVsbCxcbiAgICByb3VuZG5lc3MgPSBudWxsLFxuICAgIGJvdW5kRWxlbWVudHMgPSBudWxsLFxuICAgIGxpbmsgPSBudWxsLFxuICAgIGxvY2tlZCA9IERFRkFVTFRfRUxFTUVOVF9QUk9QUy5sb2NrZWRcbiAgfSA9IF9hLFxuICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1wieFwiLCBcInlcIiwgXCJzdHJva2VDb2xvclwiLCBcImJhY2tncm91bmRDb2xvclwiLCBcImZpbGxTdHlsZVwiLCBcInN0cm9rZVdpZHRoXCIsIFwic3Ryb2tlU3R5bGVcIiwgXCJyb3VnaG5lc3NcIiwgXCJvcGFjaXR5XCIsIFwid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJhbmdsZVwiLCBcImdyb3VwSWRzXCIsIFwiZnJhbWVJZFwiLCBcInJvdW5kbmVzc1wiLCBcImJvdW5kRWxlbWVudHNcIiwgXCJsaW5rXCIsIFwibG9ja2VkXCJdKTsgLy8gYXNzaWduIHR5cGUgdG8gZ3VhcmQgYWdhaW5zdCBleGNlc3MgcHJvcGVydGllc1xuXG5cbiAgY29uc3QgZWxlbWVudCA9IHtcbiAgICBpZDogcmVzdC5pZCB8fCByYW5kb21JZCgpLFxuICAgIHR5cGUsXG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBhbmdsZSxcbiAgICBzdHJva2VDb2xvcixcbiAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgZmlsbFN0eWxlLFxuICAgIHN0cm9rZVdpZHRoLFxuICAgIHN0cm9rZVN0eWxlLFxuICAgIHJvdWdobmVzcyxcbiAgICBvcGFjaXR5LFxuICAgIGdyb3VwSWRzLFxuICAgIGZyYW1lSWQsXG4gICAgcm91bmRuZXNzLFxuICAgIHNlZWQ6IChfYiA9IHJlc3Quc2VlZCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogcmFuZG9tSW50ZWdlcigpLFxuICAgIHZlcnNpb246IHJlc3QudmVyc2lvbiB8fCAxLFxuICAgIHZlcnNpb25Ob25jZTogKF9jID0gcmVzdC52ZXJzaW9uTm9uY2UpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDAsXG4gICAgaXNEZWxldGVkOiBmYWxzZSxcbiAgICBib3VuZEVsZW1lbnRzLFxuICAgIHVwZGF0ZWQ6IGdldFVwZGF0ZWRUaW1lc3RhbXAoKSxcbiAgICBsaW5rLFxuICAgIGxvY2tlZCxcbiAgICBjdXN0b21EYXRhOiByZXN0LmN1c3RvbURhdGFcbiAgfTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgbmV3RWxlbWVudCA9IG9wdHMgPT4gX25ld0VsZW1lbnRCYXNlKG9wdHMudHlwZSwgb3B0cyk7XG5leHBvcnQgY29uc3QgbmV3RW1iZWRkYWJsZUVsZW1lbnQgPSBvcHRzID0+IHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgX25ld0VsZW1lbnRCYXNlKFwiZW1iZWRkYWJsZVwiLCBvcHRzKSksIHtcbiAgICB2YWxpZGF0ZWQ6IG9wdHMudmFsaWRhdGVkXG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBuZXdGcmFtZUVsZW1lbnQgPSBvcHRzID0+IHtcbiAgY29uc3QgZnJhbWVFbGVtZW50ID0gbmV3RWxlbWVudFdpdGgoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBfbmV3RWxlbWVudEJhc2UoXCJmcmFtZVwiLCBvcHRzKSksIHtcbiAgICB0eXBlOiBcImZyYW1lXCIsXG4gICAgbmFtZTogKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5uYW1lKSB8fCBudWxsXG4gIH0pLCB7fSk7XG4gIHJldHVybiBmcmFtZUVsZW1lbnQ7XG59O1xuLyoqIGNvbXB1dGVzIGVsZW1lbnQgeC95IG9mZnNldCBiYXNlZCBvbiB0ZXh0QWxpZ24vdmVydGljYWxBbGlnbiAqL1xuXG5jb25zdCBnZXRUZXh0RWxlbWVudFBvc2l0aW9uT2Zmc2V0cyA9IChvcHRzLCBtZXRyaWNzKSA9PiB7XG4gIHJldHVybiB7XG4gICAgeDogb3B0cy50ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgPyBtZXRyaWNzLndpZHRoIC8gMiA6IG9wdHMudGV4dEFsaWduID09PSBcInJpZ2h0XCIgPyBtZXRyaWNzLndpZHRoIDogMCxcbiAgICB5OiBvcHRzLnZlcnRpY2FsQWxpZ24gPT09IFwibWlkZGxlXCIgPyBtZXRyaWNzLmhlaWdodCAvIDIgOiAwXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbmV3VGV4dEVsZW1lbnQgPSBvcHRzID0+IHtcbiAgY29uc3QgZm9udEZhbWlseSA9IG9wdHMuZm9udEZhbWlseSB8fCBERUZBVUxUX0ZPTlRfRkFNSUxZO1xuICBjb25zdCBmb250U2l6ZSA9IG9wdHMuZm9udFNpemUgfHwgREVGQVVMVF9GT05UX1NJWkU7XG4gIGNvbnN0IGxpbmVIZWlnaHQgPSBvcHRzLmxpbmVIZWlnaHQgfHwgZ2V0RGVmYXVsdExpbmVIZWlnaHQoZm9udEZhbWlseSk7XG4gIGNvbnN0IHRleHQgPSBub3JtYWxpemVUZXh0KG9wdHMudGV4dCk7XG4gIGNvbnN0IG1ldHJpY3MgPSBtZWFzdXJlVGV4dCh0ZXh0LCBnZXRGb250U3RyaW5nKHtcbiAgICBmb250RmFtaWx5LFxuICAgIGZvbnRTaXplXG4gIH0pLCBsaW5lSGVpZ2h0KTtcbiAgY29uc3QgdGV4dEFsaWduID0gb3B0cy50ZXh0QWxpZ24gfHwgREVGQVVMVF9URVhUX0FMSUdOO1xuICBjb25zdCB2ZXJ0aWNhbEFsaWduID0gb3B0cy52ZXJ0aWNhbEFsaWduIHx8IERFRkFVTFRfVkVSVElDQUxfQUxJR047XG4gIGNvbnN0IG9mZnNldHMgPSBnZXRUZXh0RWxlbWVudFBvc2l0aW9uT2Zmc2V0cyh7XG4gICAgdGV4dEFsaWduLFxuICAgIHZlcnRpY2FsQWxpZ25cbiAgfSwgbWV0cmljcyk7XG4gIGNvbnN0IHRleHRFbGVtZW50ID0gbmV3RWxlbWVudFdpdGgoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBfbmV3RWxlbWVudEJhc2UoXCJ0ZXh0XCIsIG9wdHMpKSwge1xuICAgIHRleHQsXG4gICAgZm9udFNpemUsXG4gICAgZm9udEZhbWlseSxcbiAgICB0ZXh0QWxpZ24sXG4gICAgdmVydGljYWxBbGlnbixcbiAgICB4OiBvcHRzLnggLSBvZmZzZXRzLngsXG4gICAgeTogb3B0cy55IC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiBtZXRyaWNzLndpZHRoLFxuICAgIGhlaWdodDogbWV0cmljcy5oZWlnaHQsXG4gICAgYmFzZWxpbmU6IG1ldHJpY3MuYmFzZWxpbmUsXG4gICAgY29udGFpbmVySWQ6IG9wdHMuY29udGFpbmVySWQgfHwgbnVsbCxcbiAgICBvcmlnaW5hbFRleHQ6IHRleHQsXG4gICAgbGluZUhlaWdodFxuICB9KSwge30pO1xuICByZXR1cm4gdGV4dEVsZW1lbnQ7XG59O1xuXG5jb25zdCBnZXRBZGp1c3RlZERpbWVuc2lvbnMgPSAoZWxlbWVudCwgbmV4dFRleHQpID0+IHtcbiAgY29uc3Qge1xuICAgIHdpZHRoOiBuZXh0V2lkdGgsXG4gICAgaGVpZ2h0OiBuZXh0SGVpZ2h0LFxuICAgIGJhc2VsaW5lOiBuZXh0QmFzZWxpbmVcbiAgfSA9IG1lYXN1cmVUZXh0KG5leHRUZXh0LCBnZXRGb250U3RyaW5nKGVsZW1lbnQpLCBlbGVtZW50LmxpbmVIZWlnaHQpO1xuICBjb25zdCB7XG4gICAgdGV4dEFsaWduLFxuICAgIHZlcnRpY2FsQWxpZ25cbiAgfSA9IGVsZW1lbnQ7XG4gIGxldCB4O1xuICBsZXQgeTtcblxuICBpZiAodGV4dEFsaWduID09PSBcImNlbnRlclwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFZFUlRJQ0FMX0FMSUdOLk1JRERMRSAmJiAhZWxlbWVudC5jb250YWluZXJJZCkge1xuICAgIGNvbnN0IHByZXZNZXRyaWNzID0gbWVhc3VyZVRleHQoZWxlbWVudC50ZXh0LCBnZXRGb250U3RyaW5nKGVsZW1lbnQpLCBlbGVtZW50LmxpbmVIZWlnaHQpO1xuICAgIGNvbnN0IG9mZnNldHMgPSBnZXRUZXh0RWxlbWVudFBvc2l0aW9uT2Zmc2V0cyhlbGVtZW50LCB7XG4gICAgICB3aWR0aDogbmV4dFdpZHRoIC0gcHJldk1ldHJpY3Mud2lkdGgsXG4gICAgICBoZWlnaHQ6IG5leHRIZWlnaHQgLSBwcmV2TWV0cmljcy5oZWlnaHRcbiAgICB9KTtcbiAgICB4ID0gZWxlbWVudC54IC0gb2Zmc2V0cy54O1xuICAgIHkgPSBlbGVtZW50LnkgLSBvZmZzZXRzLnk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgICBjb25zdCBbbmV4dFgxLCBuZXh0WTEsIG5leHRYMiwgbmV4dFkyXSA9IGdldFJlc2l6ZWRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCwgbmV4dFdpZHRoLCBuZXh0SGVpZ2h0LCBmYWxzZSk7XG4gICAgY29uc3QgZGVsdGFYMSA9ICh4MSAtIG5leHRYMSkgLyAyO1xuICAgIGNvbnN0IGRlbHRhWTEgPSAoeTEgLSBuZXh0WTEpIC8gMjtcbiAgICBjb25zdCBkZWx0YVgyID0gKHgyIC0gbmV4dFgyKSAvIDI7XG4gICAgY29uc3QgZGVsdGFZMiA9ICh5MiAtIG5leHRZMikgLyAyO1xuICAgIFt4LCB5XSA9IGFkanVzdFhZV2l0aFJvdGF0aW9uKHtcbiAgICAgIHM6IHRydWUsXG4gICAgICBlOiB0ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgfHwgdGV4dEFsaWduID09PSBcImxlZnRcIixcbiAgICAgIHc6IHRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIiB8fCB0ZXh0QWxpZ24gPT09IFwicmlnaHRcIlxuICAgIH0sIGVsZW1lbnQueCwgZWxlbWVudC55LCBlbGVtZW50LmFuZ2xlLCBkZWx0YVgxLCBkZWx0YVkxLCBkZWx0YVgyLCBkZWx0YVkyKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IG5leHRXaWR0aCxcbiAgICBoZWlnaHQ6IG5leHRIZWlnaHQsXG4gICAgYmFzZWxpbmU6IG5leHRCYXNlbGluZSxcbiAgICB4OiBOdW1iZXIuaXNGaW5pdGUoeCkgPyB4IDogZWxlbWVudC54LFxuICAgIHk6IE51bWJlci5pc0Zpbml0ZSh5KSA/IHkgOiBlbGVtZW50LnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoVGV4dERpbWVuc2lvbnMgPSAodGV4dEVsZW1lbnQsIHRleHQgPSB0ZXh0RWxlbWVudC50ZXh0KSA9PiB7XG4gIGlmICh0ZXh0RWxlbWVudC5pc0RlbGV0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb250YWluZXIgPSBnZXRDb250YWluZXJFbGVtZW50KHRleHRFbGVtZW50KTtcblxuICBpZiAoY29udGFpbmVyKSB7XG4gICAgdGV4dCA9IHdyYXBUZXh0KHRleHQsIGdldEZvbnRTdHJpbmcodGV4dEVsZW1lbnQpLCBnZXRCb3VuZFRleHRNYXhXaWR0aChjb250YWluZXIpKTtcbiAgfVxuXG4gIGNvbnN0IGRpbWVuc2lvbnMgPSBnZXRBZGp1c3RlZERpbWVuc2lvbnModGV4dEVsZW1lbnQsIHRleHQpO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7XG4gICAgdGV4dFxuICB9LCBkaW1lbnNpb25zKTtcbn07XG5leHBvcnQgY29uc3QgdXBkYXRlVGV4dEVsZW1lbnQgPSAodGV4dEVsZW1lbnQsIHtcbiAgdGV4dCxcbiAgaXNEZWxldGVkLFxuICBvcmlnaW5hbFRleHRcbn0pID0+IHtcbiAgcmV0dXJuIG5ld0VsZW1lbnRXaXRoKHRleHRFbGVtZW50LCBPYmplY3QuYXNzaWduKHtcbiAgICBvcmlnaW5hbFRleHQsXG4gICAgaXNEZWxldGVkOiBpc0RlbGV0ZWQgIT09IG51bGwgJiYgaXNEZWxldGVkICE9PSB2b2lkIDAgPyBpc0RlbGV0ZWQgOiB0ZXh0RWxlbWVudC5pc0RlbGV0ZWRcbiAgfSwgcmVmcmVzaFRleHREaW1lbnNpb25zKHRleHRFbGVtZW50LCBvcmlnaW5hbFRleHQpKSk7XG59O1xuZXhwb3J0IGNvbnN0IG5ld0ZyZWVEcmF3RWxlbWVudCA9IG9wdHMgPT4ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBfbmV3RWxlbWVudEJhc2Uob3B0cy50eXBlLCBvcHRzKSksIHtcbiAgICBwb2ludHM6IG9wdHMucG9pbnRzIHx8IFtdLFxuICAgIHByZXNzdXJlczogW10sXG4gICAgc2ltdWxhdGVQcmVzc3VyZTogb3B0cy5zaW11bGF0ZVByZXNzdXJlLFxuICAgIGxhc3RDb21taXR0ZWRQb2ludDogbnVsbFxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgbmV3TGluZWFyRWxlbWVudCA9IG9wdHMgPT4ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBfbmV3RWxlbWVudEJhc2Uob3B0cy50eXBlLCBvcHRzKSksIHtcbiAgICBwb2ludHM6IG9wdHMucG9pbnRzIHx8IFtdLFxuICAgIGxhc3RDb21taXR0ZWRQb2ludDogbnVsbCxcbiAgICBzdGFydEJpbmRpbmc6IG51bGwsXG4gICAgZW5kQmluZGluZzogbnVsbCxcbiAgICBzdGFydEFycm93aGVhZDogb3B0cy5zdGFydEFycm93aGVhZCB8fCBudWxsLFxuICAgIGVuZEFycm93aGVhZDogb3B0cy5lbmRBcnJvd2hlYWQgfHwgbnVsbFxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgbmV3SW1hZ2VFbGVtZW50ID0gb3B0cyA9PiB7XG4gIHZhciBfYSwgX2IsIF9jO1xuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIF9uZXdFbGVtZW50QmFzZShcImltYWdlXCIsIG9wdHMpKSwge1xuICAgIC8vIGluIHRoZSBmdXR1cmUgd2UnbGwgc3VwcG9ydCBjaGFuZ2luZyBzdHJva2UgY29sb3IgZm9yIHNvbWUgU1ZHIGVsZW1lbnRzLFxuICAgIC8vIGFuZCBgdHJhbnNwYXJlbnRgIHdpbGwgbGlrZWx5IG1lYW4gXCJ1c2Ugb3JpZ2luYWwgY29sb3JzIG9mIHRoZSBpbWFnZVwiXG4gICAgc3Ryb2tlQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICBzdGF0dXM6IChfYSA9IG9wdHMuc3RhdHVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBcInBlbmRpbmdcIixcbiAgICBmaWxlSWQ6IChfYiA9IG9wdHMuZmlsZUlkKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBudWxsLFxuICAgIHNjYWxlOiAoX2MgPSBvcHRzLnNjYWxlKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBbMSwgMV1cbiAgfSk7XG59OyAvLyBTaW1wbGlmaWVkIGRlZXAgY2xvbmUgZm9yIHRoZSBwdXJwb3NlIG9mIGNsb25pbmcgRXhjYWxpZHJhd0VsZW1lbnQuXG4vL1xuLy8gT25seSBjbG9uZXMgcGxhaW4gb2JqZWN0cyBhbmQgYXJyYXlzLiBEb2Vzbid0IGNsb25lIERhdGUsIFJlZ0V4cCwgTWFwLCBTZXQsXG4vLyBUeXBlZCBhcnJheXMgYW5kIG90aGVyIG5vbi1udWxsIG9iamVjdHMuXG4vL1xuLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQva2xvbmFcbi8vXG4vLyBUaGUgcmVhc29uIGZvciBgZGVlcENvcHlFbGVtZW50KClgIHdyYXBwZXIgaXMgdHlwZSBzYWZldHkgKG9ubHkgYWxsb3dcbi8vIHBhc3NpbmcgRXhjYWxpZHJhd0VsZW1lbnQgYXMgdGhlIHRvcC1sZXZlbCBhcmd1bWVudCkuXG5cbmNvbnN0IF9kZWVwQ29weUVsZW1lbnQgPSAodmFsLCBkZXB0aCA9IDApID0+IHtcbiAgLy8gb25seSBjbG9uZSBub24tcHJpbWl0aXZlc1xuICBpZiAodmFsID09IG51bGwgfHwgdHlwZW9mIHZhbCAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBjb25zdCBvYmplY3RUeXBlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbCk7XG5cbiAgaWYgKG9iamVjdFR5cGUgPT09IFwiW29iamVjdCBPYmplY3RdXCIpIHtcbiAgICBjb25zdCB0bXAgPSB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yID09PSBcImZ1bmN0aW9uXCIgPyBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpKSA6IHt9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdmFsKSB7XG4gICAgICBpZiAodmFsLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgLy8gZG9uJ3QgY29weSBub24tc2VyaWFsaXphYmxlIG9iamVjdHMgbGlrZSB0aGVzZSBjYWNoZXMuIFRoZXknbGwgYmVcbiAgICAgICAgLy8gcG9wdWxhdGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVuZGVyZWQuXG4gICAgICAgIGlmIChkZXB0aCA9PT0gMCAmJiAoa2V5ID09PSBcInNoYXBlXCIgfHwga2V5ID09PSBcImNhbnZhc1wiKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdG1wW2tleV0gPSBfZGVlcENvcHlFbGVtZW50KHZhbFtrZXldLCBkZXB0aCArIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0bXA7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgbGV0IGsgPSB2YWwubGVuZ3RoO1xuICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShrKTtcblxuICAgIHdoaWxlIChrLS0pIHtcbiAgICAgIGFycltrXSA9IF9kZWVwQ29weUVsZW1lbnQodmFsW2tdLCBkZXB0aCArIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBhcnI7XG4gIH0gLy8gd2UncmUgbm90IGNsb25pbmcgbm9uLWFycmF5ICYgbm9uLXBsYWluLW9iamVjdCBvYmplY3RzIGJlY2F1c2Ugd2VcbiAgLy8gZG9uJ3Qgc3VwcG9ydCB0aGVtIG9uIGV4Y2FsaWRyYXcgZWxlbWVudHMgeWV0LiBJZiB3ZSBkbywgd2UgbmVlZCB0byBtYWtlXG4gIC8vIHN1cmUgd2Ugc3RhcnQgY2xvbmluZyB0aGVtLCBzbyBsZXQncyB3YXJuIGFib3V0IGl0LlxuXG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmIChvYmplY3RUeXBlICE9PSBcIltvYmplY3QgT2JqZWN0XVwiICYmIG9iamVjdFR5cGUgIT09IFwiW29iamVjdCBBcnJheV1cIiAmJiBvYmplY3RUeXBlLnN0YXJ0c1dpdGgoXCJbb2JqZWN0IFwiKSkge1xuICAgICAgY29uc29sZS53YXJuKGBfZGVlcENsb25lRWxlbWVudDogdW5leHBlY3RlZCBvYmplY3QgdHlwZSAke29iamVjdFR5cGV9LiBUaGlzIHZhbHVlIHdpbGwgbm90IGJlIGNsb25lZCFgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsO1xufTtcbi8qKlxuICogQ2xvbmVzIEV4Y2FsaWRyYXdFbGVtZW50IGRhdGEgc3RydWN0dXJlLiBEb2VzIG5vdCByZWdlbmVyYXRlIGlkLCBub25jZSwgb3JcbiAqIGFueSB2YWx1ZS4gVGhlIHB1cnBvc2UgaXMgdG8gdG8gYnJlYWsgb2JqZWN0IHJlZmVyZW5jZXMgZm9yIGltbXV0YWJpbGl0eVxuICogcmVhc29ucywgd2hlbmV2ZXIgd2Ugd2FudCB0byBrZWVwIHRoZSBvcmlnaW5hbCBlbGVtZW50LCBidXQgZW5zdXJlIGl0J3Mgbm90XG4gKiBtdXRhdGVkLlxuICpcbiAqIE9ubHkgY2xvbmVzIHBsYWluIG9iamVjdHMgYW5kIGFycmF5cy4gRG9lc24ndCBjbG9uZSBEYXRlLCBSZWdFeHAsIE1hcCwgU2V0LFxuICogVHlwZWQgYXJyYXlzIGFuZCBvdGhlciBub24tbnVsbCBvYmplY3RzLlxuICovXG5cblxuZXhwb3J0IGNvbnN0IGRlZXBDb3B5RWxlbWVudCA9IHZhbCA9PiB7XG4gIHJldHVybiBfZGVlcENvcHlFbGVtZW50KHZhbCk7XG59O1xuLyoqXG4gKiB1dGlsaXR5IHdyYXBwZXIgdG8gZ2VuZXJhdGUgbmV3IGlkLiBJbiB0ZXN0IGVudiBpdCByZXVzZXMgdGhlIG9sZCArIHBvc3RmaXhcbiAqIGZvciB0ZXN0IGFzc2VydGlvbnMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IHJlZ2VuZXJhdGVJZCA9IChcbi8qKiBzdXBwbHkgbnVsbCBpZiBubyBwcmV2aW91cyBpZCBleGlzdHMgKi9cbnByZXZpb3VzSWQpID0+IHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaXNUZXN0RW52KCkgJiYgcHJldmlvdXNJZCkge1xuICAgIGxldCBuZXh0SWQgPSBgJHtwcmV2aW91c0lkfV9jb3B5YDsgLy8gYHdpbmRvdy5oYCBtYXkgbm90IGJlIGRlZmluZWQgaW4gc29tZSB1bml0IHRlc3RzXG5cbiAgICBpZiAoKF9iID0gKF9hID0gd2luZG93LmgpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hcHApID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5nZXRTY2VuZUVsZW1lbnRzSW5jbHVkaW5nRGVsZXRlZCgpLmZpbmQoZWwgPT4gZWwuaWQgPT09IG5leHRJZCkpIHtcbiAgICAgIG5leHRJZCArPSBcIl9jb3B5XCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRJZDtcbiAgfVxuXG4gIHJldHVybiByYW5kb21JZCgpO1xufTtcbi8qKlxuICogRHVwbGljYXRlIGFuIGVsZW1lbnQsIG9mdGVuIHVzZWQgaW4gdGhlIGFsdC1kcmFnIG9wZXJhdGlvbi5cbiAqIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBoYXMgZ290dGVuIGEgYml0IGNvbXBsaWNhdGVkIHNpbmNlIHRoZVxuICogaW50cm9kdWN0aW9uIG9mIGdydW9waW5nL3VuZ3JvdXBpbmcgZWxlbWVudHMuXG4gKiBAcGFyYW0gZWRpdGluZ0dyb3VwSWQgVGhlIGN1cnJlbnQgZ3JvdXAgYmVpbmcgZWRpdGVkLiBUaGUgbmV3XG4gKiAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCB3aWxsIGluaGVyaXQgdGhpcyBncm91cCBhbmQgaXRzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50cy5cbiAqIEBwYXJhbSBncm91cElkTWFwRm9yT3BlcmF0aW9uIEEgTWFwIHRoYXQgbWFwcyBvbGQgZ3JvdXAgSURzIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVkIG9uZXMuIElmIHlvdSBhcmUgZHVwbGljYXRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGVsZW1lbnRzIGF0IG9uY2UsIHNoYXJlIHRoaXMgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW9uZ3N0IGFsbCBvZiB0aGVtXG4gKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIGR1cGxpY2F0ZVxuICogQHBhcmFtIG92ZXJyaWRlcyBBbnkgZWxlbWVudCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlXG4gKi9cblxuZXhwb3J0IGNvbnN0IGR1cGxpY2F0ZUVsZW1lbnQgPSAoZWRpdGluZ0dyb3VwSWQsIGdyb3VwSWRNYXBGb3JPcGVyYXRpb24sIGVsZW1lbnQsIG92ZXJyaWRlcykgPT4ge1xuICBsZXQgY29weSA9IGRlZXBDb3B5RWxlbWVudChlbGVtZW50KTtcbiAgY29weS5pZCA9IHJlZ2VuZXJhdGVJZChjb3B5LmlkKTtcbiAgY29weS5ib3VuZEVsZW1lbnRzID0gbnVsbDtcbiAgY29weS51cGRhdGVkID0gZ2V0VXBkYXRlZFRpbWVzdGFtcCgpO1xuICBjb3B5LnNlZWQgPSByYW5kb21JbnRlZ2VyKCk7XG4gIGNvcHkuZ3JvdXBJZHMgPSBnZXROZXdHcm91cElkc0ZvckR1cGxpY2F0aW9uKGNvcHkuZ3JvdXBJZHMsIGVkaXRpbmdHcm91cElkLCBncm91cElkID0+IHtcbiAgICBpZiAoIWdyb3VwSWRNYXBGb3JPcGVyYXRpb24uaGFzKGdyb3VwSWQpKSB7XG4gICAgICBncm91cElkTWFwRm9yT3BlcmF0aW9uLnNldChncm91cElkLCByZWdlbmVyYXRlSWQoZ3JvdXBJZCkpO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cElkTWFwRm9yT3BlcmF0aW9uLmdldChncm91cElkKTtcbiAgfSk7XG5cbiAgaWYgKG92ZXJyaWRlcykge1xuICAgIGNvcHkgPSBPYmplY3QuYXNzaWduKGNvcHksIG92ZXJyaWRlcyk7XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG4vKipcbiAqIENsb25lcyBlbGVtZW50cywgcmVnZW5lcmF0aW5nIHRoZWlyIGlkcyAoaW5jbHVkaW5nIGJpbmRpbmdzKSBhbmQgZ3JvdXAgaWRzLlxuICpcbiAqIElmIGJpbmRpbmdzIGRvbid0IGV4aXN0IGluIHRoZSBlbGVtZW50cyBhcnJheSwgdGhleSBhcmUgcmVtb3ZlZC4gVGhlcmVmb3JlLFxuICogaXQncyBhZHZpc2VkIHRvIHN1cHBseSB0aGUgd2hvbGUgZWxlbWVudHMgYXJyYXksIG9yIHNldHMgb2YgZWxlbWVudHMgdGhhdFxuICogYXJlIGVuY2Fwc3VsYXRlZCAoc3VjaCBhcyBsaWJyYXJ5IGl0ZW1zKSwgaWYgdGhlIHB1cnBvc2UgaXMgdG8gcmV0YWluXG4gKiBiaW5kaW5ncyB0byB0aGUgY2xvbmVkIGVsZW1lbnRzIGludGFjdC5cbiAqXG4gKiBOT1RFIGJ5IGRlZmF1bHQgZG9lcyBub3QgcmFuZG9taXplIG9yIHJlZ2VuZXJhdGUgYW55dGhpbmcgZXhjZXB0IHRoZSBpZC5cbiAqL1xuXG5leHBvcnQgY29uc3QgZHVwbGljYXRlRWxlbWVudHMgPSAoZWxlbWVudHMsIG9wdHMpID0+IHtcbiAgY29uc3QgY2xvbmVkRWxlbWVudHMgPSBbXTtcbiAgY29uc3Qgb3JpZ0VsZW1lbnRzTWFwID0gYXJyYXlUb01hcChlbGVtZW50cyk7IC8vIHVzZWQgZm9yIGZvciBtaWdyYXRpbmcgb2xkIGlkcyB0byBuZXcgaWRzXG5cbiAgY29uc3QgZWxlbWVudE5ld0lkc01hcCA9IG5ldyBNYXAoKTtcblxuICBjb25zdCBtYXliZUdldE5ld0lkID0gaWQgPT4ge1xuICAgIC8vIGlmIHdlJ3ZlIGFscmVhZHkgbWlncmF0ZWQgdGhlIGVsZW1lbnQgaWQsIHJldHVybiB0aGUgbmV3IG9uZSBkaXJlY3RseVxuICAgIGlmIChlbGVtZW50TmV3SWRzTWFwLmhhcyhpZCkpIHtcbiAgICAgIHJldHVybiBlbGVtZW50TmV3SWRzTWFwLmdldChpZCk7XG4gICAgfSAvLyBpZiB3ZSBoYXZlbid0IG1pZ3JhdGVkIHRoZSBlbGVtZW50IGlkLCBidXQgYW4gb2xkIGVsZW1lbnQgd2l0aCB0aGUgc2FtZVxuICAgIC8vIGlkIGV4aXN0cywgZ2VuZXJhdGUgYSBuZXcgaWQgZm9yIGl0IGFuZCByZXR1cm4gaXRcblxuXG4gICAgaWYgKG9yaWdFbGVtZW50c01hcC5oYXMoaWQpKSB7XG4gICAgICBjb25zdCBuZXdJZCA9IHJlZ2VuZXJhdGVJZChpZCk7XG4gICAgICBlbGVtZW50TmV3SWRzTWFwLnNldChpZCwgbmV3SWQpO1xuICAgICAgcmV0dXJuIG5ld0lkO1xuICAgIH0gLy8gaWYgb2xkIGVsZW1lbnQgZG9lc24ndCBleGlzdCwgcmV0dXJuIG51bGwgdG8gbWFyayBpdCBmb3IgcmVtb3ZhbFxuXG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb25zdCBncm91cE5ld0lkc01hcCA9IG5ldyBNYXAoKTtcblxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICBjb25zdCBjbG9uZWRFbGVtZW50ID0gX2RlZXBDb3B5RWxlbWVudChlbGVtZW50KTtcblxuICAgIGNsb25lZEVsZW1lbnQuaWQgPSBtYXliZUdldE5ld0lkKGVsZW1lbnQuaWQpO1xuXG4gICAgaWYgKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5yYW5kb21pemVTZWVkKSB7XG4gICAgICBjbG9uZWRFbGVtZW50LnNlZWQgPSByYW5kb21JbnRlZ2VyKCk7XG4gICAgICBidW1wVmVyc2lvbihjbG9uZWRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAoY2xvbmVkRWxlbWVudC5ncm91cElkcykge1xuICAgICAgY2xvbmVkRWxlbWVudC5ncm91cElkcyA9IGNsb25lZEVsZW1lbnQuZ3JvdXBJZHMubWFwKGdyb3VwSWQgPT4ge1xuICAgICAgICBpZiAoIWdyb3VwTmV3SWRzTWFwLmhhcyhncm91cElkKSkge1xuICAgICAgICAgIGdyb3VwTmV3SWRzTWFwLnNldChncm91cElkLCByZWdlbmVyYXRlSWQoZ3JvdXBJZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwTmV3SWRzTWFwLmdldChncm91cElkKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChcImNvbnRhaW5lcklkXCIgaW4gY2xvbmVkRWxlbWVudCAmJiBjbG9uZWRFbGVtZW50LmNvbnRhaW5lcklkKSB7XG4gICAgICBjb25zdCBuZXdDb250YWluZXJJZCA9IG1heWJlR2V0TmV3SWQoY2xvbmVkRWxlbWVudC5jb250YWluZXJJZCk7XG4gICAgICBjbG9uZWRFbGVtZW50LmNvbnRhaW5lcklkID0gbmV3Q29udGFpbmVySWQ7XG4gICAgfVxuXG4gICAgaWYgKFwiYm91bmRFbGVtZW50c1wiIGluIGNsb25lZEVsZW1lbnQgJiYgY2xvbmVkRWxlbWVudC5ib3VuZEVsZW1lbnRzKSB7XG4gICAgICBjbG9uZWRFbGVtZW50LmJvdW5kRWxlbWVudHMgPSBjbG9uZWRFbGVtZW50LmJvdW5kRWxlbWVudHMucmVkdWNlKChhY2MsIGJpbmRpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbmV3QmluZGluZ0lkID0gbWF5YmVHZXROZXdJZChiaW5kaW5nLmlkKTtcblxuICAgICAgICBpZiAobmV3QmluZGluZ0lkKSB7XG4gICAgICAgICAgYWNjLnB1c2goT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBiaW5kaW5nKSwge1xuICAgICAgICAgICAgaWQ6IG5ld0JpbmRpbmdJZFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgaWYgKFwiZW5kQmluZGluZ1wiIGluIGNsb25lZEVsZW1lbnQgJiYgY2xvbmVkRWxlbWVudC5lbmRCaW5kaW5nKSB7XG4gICAgICBjb25zdCBuZXdFbmRCaW5kaW5nSWQgPSBtYXliZUdldE5ld0lkKGNsb25lZEVsZW1lbnQuZW5kQmluZGluZy5lbGVtZW50SWQpO1xuICAgICAgY2xvbmVkRWxlbWVudC5lbmRCaW5kaW5nID0gbmV3RW5kQmluZGluZ0lkID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjbG9uZWRFbGVtZW50LmVuZEJpbmRpbmcpLCB7XG4gICAgICAgIGVsZW1lbnRJZDogbmV3RW5kQmluZGluZ0lkXG4gICAgICB9KSA6IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKFwic3RhcnRCaW5kaW5nXCIgaW4gY2xvbmVkRWxlbWVudCAmJiBjbG9uZWRFbGVtZW50LnN0YXJ0QmluZGluZykge1xuICAgICAgY29uc3QgbmV3RW5kQmluZGluZ0lkID0gbWF5YmVHZXROZXdJZChjbG9uZWRFbGVtZW50LnN0YXJ0QmluZGluZy5lbGVtZW50SWQpO1xuICAgICAgY2xvbmVkRWxlbWVudC5zdGFydEJpbmRpbmcgPSBuZXdFbmRCaW5kaW5nSWQgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNsb25lZEVsZW1lbnQuc3RhcnRCaW5kaW5nKSwge1xuICAgICAgICBlbGVtZW50SWQ6IG5ld0VuZEJpbmRpbmdJZFxuICAgICAgfSkgOiBudWxsO1xuICAgIH1cblxuICAgIGlmIChjbG9uZWRFbGVtZW50LmZyYW1lSWQpIHtcbiAgICAgIGNsb25lZEVsZW1lbnQuZnJhbWVJZCA9IG1heWJlR2V0TmV3SWQoY2xvbmVkRWxlbWVudC5mcmFtZUlkKTtcbiAgICB9XG5cbiAgICBjbG9uZWRFbGVtZW50cy5wdXNoKGNsb25lZEVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGNsb25lZEVsZW1lbnRzO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../element/newElement.ts\n");
3963
3963
 
3964
3964
  /***/ }),
3965
3965
 
@@ -4344,7 +4344,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
4344
4344
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4345
4345
 
4346
4346
  "use strict";
4347
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \"../../constants.ts\");\n\n\nif (\"development\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n /* eslint-disable */\n\n /* global __webpack_public_path__:writable */\n __webpack_require__.p = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.17.1\"}/dist/`;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDOztBQUV0QyxJQUFJLGFBQW9CLEtBQUssZ0RBQVE7QUFDckM7O0FBRUE7QUFDQSxFQUFFLHFCQUF1Qix3REFBd0Qsd0JBQXlCLENBQUMsR0FBRyxRQUE0QixDQUFDO0FBQzNJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcHVibGljUGF0aC5qcz82N2Y5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOViB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4gIC8qIGdsb2JhbCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXzp3cml0YWJsZSAqL1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuVklURV9QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5WSVRFX1BLR19WRVJTSU9OfS9kaXN0L2A7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n");
4347
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \"../../constants.ts\");\n\n\nif (\"development\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n /* eslint-disable */\n\n /* global __webpack_public_path__:writable */\n __webpack_require__.p = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.17.3\"}/dist/`;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDOztBQUV0QyxJQUFJLGFBQW9CLEtBQUssZ0RBQVE7QUFDckM7O0FBRUE7QUFDQSxFQUFFLHFCQUF1Qix3REFBd0Qsd0JBQXlCLENBQUMsR0FBRyxRQUE0QixDQUFDO0FBQzNJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcHVibGljUGF0aC5qcz82N2Y5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOViB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4gIC8qIGdsb2JhbCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXzp3cml0YWJsZSAqL1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuVklURV9QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5WSVRFX1BLR19WRVJTSU9OfS9kaXN0L2A7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n");
4348
4348
 
4349
4349
  /***/ }),
4350
4350
 
@@ -4520,7 +4520,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
4520
4520
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4521
4521
 
4522
4522
  "use strict";
4523
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"exportToCanvas\": () => (/* binding */ exportToCanvas),\n/* harmony export */ \"exportToSvg\": () => (/* binding */ exportToSvg),\n/* harmony export */ \"getExportSize\": () => (/* binding */ getExportSize)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ \"../../renderer/renderScene.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ \"../../data/json.ts\");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/image */ \"../../element/image.ts\");\n/* harmony import */ var _packages_withinBounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../packages/withinBounds */ \"../withinBounds.ts\");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../frame */ \"../../frame.ts\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/mutateElement */ \"../../element/mutateElement.ts\");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Scene */ \"../../scene/Scene.ts\");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`; // getContainerElement and getBoundTextElement and potentially other helpers\n// depend on `Scene` which will not be available when these pure utils are\n// called outside initialized Excalidraw editor instance or even if called\n// from inside Excalidraw if the elements were never cached by Scene (e.g.\n// for library elements).\n//\n// As such, before passing the elements down, we need to initialize a custom\n// Scene instance and assign them to it.\n//\n// FIXME This is a super hacky workaround and we'll need to rewrite this soon.\n\nconst __createSceneForElementsHack__ = elements => {\n const scene = new _Scene__WEBPACK_IMPORTED_MODULE_12__[\"default\"](); // we can't duplicate elements to regenerate ids because we need the\n // orig ids when embedding. So we do another hack of not mapping element\n // ids to Scene instances so that we don't override the editor elements\n // mapping.\n // We still need to clone the objects themselves to regen references.\n\n scene.replaceAllElements((0,_utils__WEBPACK_IMPORTED_MODULE_3__.cloneJSON)(elements), false);\n return scene;\n};\n\nconst truncateText = (element, maxWidth) => {\n if (element.width <= maxWidth) {\n return element;\n }\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n ctx.font = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n fontFamily: element.fontFamily,\n fontSize: element.fontSize\n });\n let text = element.text;\n const metrics = ctx.measureText(text);\n\n if (metrics.width > maxWidth) {\n // we iterate from the right, removing characters one by one instead\n // of bulding the string up. This assumes that it's more likely\n // your frame names will overflow by not that many characters\n // (if ever), so it sohuld be faster this way.\n for (let i = text.length; i > 0; i--) {\n const newText = `${text.slice(0, i)}...`;\n\n if (ctx.measureText(newText).width <= maxWidth) {\n text = newText;\n break;\n }\n }\n }\n\n return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_11__.newElementWith)(element, {\n text,\n width: maxWidth\n });\n};\n/**\n * When exporting frames, we need to render frame labels which are currently\n * being rendered in DOM when editing. Adding the labels as regular text\n * elements seems like a simple hack. In the future we'll want to move to\n * proper canvas rendering, even within editor (instead of DOM).\n */\n\n\nconst addFrameLabelsAsTextElements = (elements, opts) => {\n const nextElements = [];\n let frameIdx = 0;\n\n for (const element of elements) {\n if ((0,_element__WEBPACK_IMPORTED_MODULE_10__.isFrameElement)(element)) {\n frameIdx++;\n let textElement = (0,_element__WEBPACK_IMPORTED_MODULE_10__.newTextElement)({\n x: element.x,\n y: element.y - _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameOffsetY,\n fontFamily: _constants__WEBPACK_IMPORTED_MODULE_4__.FONT_FAMILY.Assistant,\n fontSize: _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameFontSize,\n lineHeight: _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameLineHeight,\n strokeColor: opts.exportWithDarkMode ? _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameColorDarkTheme : _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameColorLightTheme,\n text: element.name || `Frame ${frameIdx}`\n });\n textElement.y -= textElement.height;\n textElement = truncateText(textElement, element.width);\n nextElements.push(textElement);\n }\n\n nextElements.push(element);\n }\n\n return nextElements;\n};\n\nconst getFrameRenderingConfig = (exportingFrame, frameRendering) => {\n frameRendering = frameRendering || (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)().frameRendering;\n return {\n enabled: exportingFrame ? true : frameRendering.enabled,\n outline: exportingFrame ? false : frameRendering.outline,\n name: exportingFrame ? false : frameRendering.name,\n clip: exportingFrame ? true : frameRendering.clip\n };\n};\n\nconst prepareElementsForRender = ({\n elements,\n exportingFrame,\n frameRendering,\n exportWithDarkMode\n}) => {\n let nextElements;\n\n if (exportingFrame) {\n nextElements = (0,_packages_withinBounds__WEBPACK_IMPORTED_MODULE_8__.elementsOverlappingBBox)({\n elements,\n bounds: exportingFrame,\n type: \"overlap\"\n });\n } else if (frameRendering.enabled && frameRendering.name) {\n nextElements = addFrameLabelsAsTextElements(elements, {\n exportWithDarkMode\n });\n } else {\n nextElements = elements;\n }\n\n return nextElements;\n};\n\nconst exportToCanvas = (elements, appState, files, {\n exportBackground,\n exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n viewBackgroundColor,\n exportingFrame\n}, createCanvas = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return {\n canvas,\n scale: appState.exportScale\n };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n var _a;\n\n const tempScene = __createSceneForElementsHack__(elements);\n\n elements = tempScene.getNonDeletedElements();\n const frameRendering = getFrameRenderingConfig(exportingFrame !== null && exportingFrame !== void 0 ? exportingFrame : null, (_a = appState.frameRendering) !== null && _a !== void 0 ? _a : null);\n const elementsForRender = prepareElementsForRender({\n elements,\n exportingFrame,\n exportWithDarkMode: appState.exportWithDarkMode,\n frameRendering\n });\n\n if (exportingFrame) {\n exportPadding = 0;\n }\n\n const [minX, minY, width, height] = getCanvasSize(exportingFrame ? [exportingFrame] : (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getRootElements)(elementsForRender), exportPadding);\n const {\n canvas,\n scale = 1\n } = createCanvas(width, height);\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n const {\n imageCache\n } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.updateImageCache)({\n imageCache: new Map(),\n fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.getInitializedImageElements)(elementsForRender).map(element => element.fileId),\n files\n });\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderStaticScene)({\n canvas,\n rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].canvas(canvas),\n elements: elementsForRender,\n visibleElements: elementsForRender,\n scale,\n appState: Object.assign(Object.assign({}, appState), {\n frameRendering,\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + exportPadding,\n scrollY: -minY + exportPadding,\n zoom: defaultAppState.zoom,\n shouldCacheIgnoreZoom: false,\n theme: appState.exportWithDarkMode ? \"dark\" : \"light\"\n }),\n renderConfig: {\n imageCache,\n renderGrid: false,\n isExporting: true\n }\n });\n tempScene.destroy();\n return canvas;\n});\nconst exportToSvg = (elements, appState, files, opts) => __awaiter(void 0, void 0, void 0, function* () {\n var _b, _c, _d;\n\n const tempScene = __createSceneForElementsHack__(elements);\n\n elements = tempScene.getNonDeletedElements();\n const frameRendering = getFrameRenderingConfig((_b = opts === null || opts === void 0 ? void 0 : opts.exportingFrame) !== null && _b !== void 0 ? _b : null, (_c = appState.frameRendering) !== null && _c !== void 0 ? _c : null);\n let {\n exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n exportWithDarkMode = false,\n viewBackgroundColor,\n exportScale = 1,\n exportEmbedScene\n } = appState;\n const {\n exportingFrame = null\n } = opts || {};\n const elementsForRender = prepareElementsForRender({\n elements,\n exportingFrame,\n exportWithDarkMode,\n frameRendering\n });\n\n if (exportingFrame) {\n exportPadding = 0;\n }\n\n let metadata = \"\"; // we need to serialize the \"original\" elements before we put them through\n // the tempScene hack which duplicates and regenerates ids\n\n if (exportEmbedScene) {\n try {\n metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ \"../../data/image.ts\"))).encodeSvgMetadata({\n // when embedding scene, we want to embed the origionally supplied\n // elements which don't contain the temp frame labels.\n // But it also requires that the exportToSvg is being supplied with\n // only the elements that we're exporting, and no extra.\n text: (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, \"local\")\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n const [minX, minY, width, height] = getCanvasSize(exportingFrame ? [exportingFrame] : (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getRootElements)(elementsForRender), exportPadding); // initialize SVG root\n\n const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"svg\");\n svgRoot.setAttribute(\"version\", \"1.1\");\n svgRoot.setAttribute(\"xmlns\", _constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS);\n svgRoot.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n svgRoot.setAttribute(\"width\", `${width * exportScale}`);\n svgRoot.setAttribute(\"height\", `${height * exportScale}`);\n\n if (exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n }\n\n let assetPath = \"https://excalidraw.com/\"; // Asset path needs to be determined only when using package\n\n if (true) {\n assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.1\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).PKG_VERSION}`;\n\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\"/\")) {\n assetPath = assetPath.replace(\"/\", `${window.location.origin}/`);\n }\n\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\n }\n\n const offsetX = -minX + exportPadding;\n const offsetY = -minY + exportPadding;\n const frameElements = (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getFrameElements)(elements);\n let exportingFrameClipPath = \"\";\n\n for (const frame of frameElements) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(frame);\n const cx = (x2 - x1) / 2 - (frame.x - x1);\n const cy = (y2 - y1) / 2 - (frame.y - y1);\n exportingFrameClipPath += `<clipPath id=${frame.id}>\n <rect transform=\"translate(${frame.x + offsetX} ${frame.y + offsetY}) rotate(${frame.angle} ${cx} ${cy})\"\n width=\"${frame.width}\"\n height=\"${frame.height}\"\n >\n </rect>\n </clipPath>`;\n }\n\n svgRoot.innerHTML = `\n ${SVG_EXPORT_TAG}\n ${metadata}\n <defs>\n <style class=\"style-fonts\">\n @font-face {\n font-family: \"Virgil\";\n src: url(\"${assetPath}Virgil.woff2\");\n }\n @font-face {\n font-family: \"Cascadia\";\n src: url(\"${assetPath}Cascadia.woff2\");\n }\n @font-face {\n font-family: \"Assistant\";\n src: url(\"${assetPath}Assistant-Regular.woff2\");\n }\n </style>\n ${exportingFrameClipPath}\n </defs>\n `; // render background rect\n\n if (appState.exportBackground && viewBackgroundColor) {\n const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"rect\");\n rect.setAttribute(\"x\", \"0\");\n rect.setAttribute(\"y\", \"0\");\n rect.setAttribute(\"width\", `${width}`);\n rect.setAttribute(\"height\", `${height}`);\n rect.setAttribute(\"fill\", viewBackgroundColor);\n svgRoot.appendChild(rect);\n }\n\n const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].svg(svgRoot);\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderSceneToSvg)(elementsForRender, rsvg, svgRoot, files || {}, {\n offsetX,\n offsetY,\n exportWithDarkMode,\n renderEmbeddables: (_d = opts === null || opts === void 0 ? void 0 : opts.renderEmbeddables) !== null && _d !== void 0 ? _d : false,\n frameRendering\n });\n tempScene.destroy();\n return svgRoot;\n}); // calculate smallest area to fit the contents in\n\nconst getCanvasSize = (elements, exportPadding) => {\n const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);\n const width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minX, maxX) + exportPadding * 2;\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + exportPadding * 2;\n return [minX, minY, width, height];\n};\n\nconst getExportSize = (elements, exportPadding, scale) => {\n const [,, width, height] = getCanvasSize(elements, exportPadding).map(dimension => Math.trunc(dimension * scale));\n return [width, height];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LGVBQWUsNkRBQVM7QUFDeEIsRUFBRSx1RUFBZ0IsOENBQThDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLENBQUMsR0FBRzs7QUFFSjtBQUNBLG1DQUFtQyxnRUFBZTtBQUNsRCxnQkFBZ0IsZ0RBQVE7QUFDeEIsaUJBQWlCLGdEQUFRO0FBQ3pCO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvZXhwb3J0LnRzP2MzNzMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxuaW1wb3J0IHJvdWdoIGZyb20gXCJyb3VnaGpzL2Jpbi9yb3VnaFwiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQm91bmRzLCBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMgfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCB7IHJlbmRlclNjZW5lVG9TdmcsIHJlbmRlclN0YXRpY1NjZW5lIH0gZnJvbSBcIi4uL3JlbmRlcmVyL3JlbmRlclNjZW5lXCI7XG5pbXBvcnQgeyBjbG9uZUpTT04sIGRpc3RhbmNlLCBnZXRGb250U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VYUE9SVF9QQURESU5HLCBGT05UX0ZBTUlMWSwgRlJBTUVfU1RZTEUsIFNWR19OUywgVEhFTUVfRklMVEVSIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEFwcFN0YXRlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgeyBzZXJpYWxpemVBc0pTT04gfSBmcm9tIFwiLi4vZGF0YS9qc29uXCI7XG5pbXBvcnQgeyBnZXRJbml0aWFsaXplZEltYWdlRWxlbWVudHMsIHVwZGF0ZUltYWdlQ2FjaGUgfSBmcm9tIFwiLi4vZWxlbWVudC9pbWFnZVwiO1xuaW1wb3J0IHsgZWxlbWVudHNPdmVybGFwcGluZ0JCb3ggfSBmcm9tIFwiLi4vcGFja2FnZXMvd2l0aGluQm91bmRzXCI7XG5pbXBvcnQgeyBnZXRGcmFtZUVsZW1lbnRzLCBnZXRSb290RWxlbWVudHMgfSBmcm9tIFwiLi4vZnJhbWVcIjtcbmltcG9ydCB7IGlzRnJhbWVFbGVtZW50LCBuZXdUZXh0RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyBuZXdFbGVtZW50V2l0aCB9IGZyb20gXCIuLi9lbGVtZW50L211dGF0ZUVsZW1lbnRcIjtcbmltcG9ydCBTY2VuZSBmcm9tIFwiLi9TY2VuZVwiO1xuY29uc3QgU1ZHX0VYUE9SVF9UQUcgPSBgPCEtLSBzdmctc291cmNlOmV4Y2FsaWRyYXcgLS0+YDsgLy8gZ2V0Q29udGFpbmVyRWxlbWVudCBhbmQgZ2V0Qm91bmRUZXh0RWxlbWVudCBhbmQgcG90ZW50aWFsbHkgb3RoZXIgaGVscGVyc1xuLy8gZGVwZW5kIG9uIGBTY2VuZWAgd2hpY2ggd2lsbCBub3QgYmUgYXZhaWxhYmxlIHdoZW4gdGhlc2UgcHVyZSB1dGlscyBhcmVcbi8vIGNhbGxlZCBvdXRzaWRlIGluaXRpYWxpemVkIEV4Y2FsaWRyYXcgZWRpdG9yIGluc3RhbmNlIG9yIGV2ZW4gaWYgY2FsbGVkXG4vLyBmcm9tIGluc2lkZSBFeGNhbGlkcmF3IGlmIHRoZSBlbGVtZW50cyB3ZXJlIG5ldmVyIGNhY2hlZCBieSBTY2VuZSAoZS5nLlxuLy8gZm9yIGxpYnJhcnkgZWxlbWVudHMpLlxuLy9cbi8vIEFzIHN1Y2gsIGJlZm9yZSBwYXNzaW5nIHRoZSBlbGVtZW50cyBkb3duLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgYSBjdXN0b21cbi8vIFNjZW5lIGluc3RhbmNlIGFuZCBhc3NpZ24gdGhlbSB0byBpdC5cbi8vXG4vLyBGSVhNRSBUaGlzIGlzIGEgc3VwZXIgaGFja3kgd29ya2Fyb3VuZCBhbmQgd2UnbGwgbmVlZCB0byByZXdyaXRlIHRoaXMgc29vbi5cblxuY29uc3QgX19jcmVhdGVTY2VuZUZvckVsZW1lbnRzSGFja19fID0gZWxlbWVudHMgPT4ge1xuICBjb25zdCBzY2VuZSA9IG5ldyBTY2VuZSgpOyAvLyB3ZSBjYW4ndCBkdXBsaWNhdGUgZWxlbWVudHMgdG8gcmVnZW5lcmF0ZSBpZHMgYmVjYXVzZSB3ZSBuZWVkIHRoZVxuICAvLyBvcmlnIGlkcyB3aGVuIGVtYmVkZGluZy4gU28gd2UgZG8gYW5vdGhlciBoYWNrIG9mIG5vdCBtYXBwaW5nIGVsZW1lbnRcbiAgLy8gaWRzIHRvIFNjZW5lIGluc3RhbmNlcyBzbyB0aGF0IHdlIGRvbid0IG92ZXJyaWRlIHRoZSBlZGl0b3IgZWxlbWVudHNcbiAgLy8gbWFwcGluZy5cbiAgLy8gV2Ugc3RpbGwgbmVlZCB0byBjbG9uZSB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzIHRvIHJlZ2VuIHJlZmVyZW5jZXMuXG5cbiAgc2NlbmUucmVwbGFjZUFsbEVsZW1lbnRzKGNsb25lSlNPTihlbGVtZW50cyksIGZhbHNlKTtcbiAgcmV0dXJuIHNjZW5lO1xufTtcblxuY29uc3QgdHJ1bmNhdGVUZXh0ID0gKGVsZW1lbnQsIG1heFdpZHRoKSA9PiB7XG4gIGlmIChlbGVtZW50LndpZHRoIDw9IG1heFdpZHRoKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICBjdHguZm9udCA9IGdldEZvbnRTdHJpbmcoe1xuICAgIGZvbnRGYW1pbHk6IGVsZW1lbnQuZm9udEZhbWlseSxcbiAgICBmb250U2l6ZTogZWxlbWVudC5mb250U2l6ZVxuICB9KTtcbiAgbGV0IHRleHQgPSBlbGVtZW50LnRleHQ7XG4gIGNvbnN0IG1ldHJpY3MgPSBjdHgubWVhc3VyZVRleHQodGV4dCk7XG5cbiAgaWYgKG1ldHJpY3Mud2lkdGggPiBtYXhXaWR0aCkge1xuICAgIC8vIHdlIGl0ZXJhdGUgZnJvbSB0aGUgcmlnaHQsIHJlbW92aW5nIGNoYXJhY3RlcnMgb25lIGJ5IG9uZSBpbnN0ZWFkXG4gICAgLy8gb2YgYnVsZGluZyB0aGUgc3RyaW5nIHVwLiBUaGlzIGFzc3VtZXMgdGhhdCBpdCdzIG1vcmUgbGlrZWx5XG4gICAgLy8geW91ciBmcmFtZSBuYW1lcyB3aWxsIG92ZXJmbG93IGJ5IG5vdCB0aGF0IG1hbnkgY2hhcmFjdGVyc1xuICAgIC8vIChpZiBldmVyKSwgc28gaXQgc29odWxkIGJlIGZhc3RlciB0aGlzIHdheS5cbiAgICBmb3IgKGxldCBpID0gdGV4dC5sZW5ndGg7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IG5ld1RleHQgPSBgJHt0ZXh0LnNsaWNlKDAsIGkpfS4uLmA7XG5cbiAgICAgIGlmIChjdHgubWVhc3VyZVRleHQobmV3VGV4dCkud2lkdGggPD0gbWF4V2lkdGgpIHtcbiAgICAgICAgdGV4dCA9IG5ld1RleHQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdFbGVtZW50V2l0aChlbGVtZW50LCB7XG4gICAgdGV4dCxcbiAgICB3aWR0aDogbWF4V2lkdGhcbiAgfSk7XG59O1xuLyoqXG4gKiBXaGVuIGV4cG9ydGluZyBmcmFtZXMsIHdlIG5lZWQgdG8gcmVuZGVyIGZyYW1lIGxhYmVscyB3aGljaCBhcmUgY3VycmVudGx5XG4gKiBiZWluZyByZW5kZXJlZCBpbiBET00gd2hlbiBlZGl0aW5nLiBBZGRpbmcgdGhlIGxhYmVscyBhcyByZWd1bGFyIHRleHRcbiAqIGVsZW1lbnRzIHNlZW1zIGxpa2UgYSBzaW1wbGUgaGFjay4gSW4gdGhlIGZ1dHVyZSB3ZSdsbCB3YW50IHRvIG1vdmUgdG9cbiAqIHByb3BlciBjYW52YXMgcmVuZGVyaW5nLCBldmVuIHdpdGhpbiBlZGl0b3IgKGluc3RlYWQgb2YgRE9NKS5cbiAqL1xuXG5cbmNvbnN0IGFkZEZyYW1lTGFiZWxzQXNUZXh0RWxlbWVudHMgPSAoZWxlbWVudHMsIG9wdHMpID0+IHtcbiAgY29uc3QgbmV4dEVsZW1lbnRzID0gW107XG4gIGxldCBmcmFtZUlkeCA9IDA7XG5cbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgaWYgKGlzRnJhbWVFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICBmcmFtZUlkeCsrO1xuICAgICAgbGV0IHRleHRFbGVtZW50ID0gbmV3VGV4dEVsZW1lbnQoe1xuICAgICAgICB4OiBlbGVtZW50LngsXG4gICAgICAgIHk6IGVsZW1lbnQueSAtIEZSQU1FX1NUWUxFLm5hbWVPZmZzZXRZLFxuICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWS5Bc3Npc3RhbnQsXG4gICAgICAgIGZvbnRTaXplOiBGUkFNRV9TVFlMRS5uYW1lRm9udFNpemUsXG4gICAgICAgIGxpbmVIZWlnaHQ6IEZSQU1FX1NUWUxFLm5hbWVMaW5lSGVpZ2h0LFxuICAgICAgICBzdHJva2VDb2xvcjogb3B0cy5leHBvcnRXaXRoRGFya01vZGUgPyBGUkFNRV9TVFlMRS5uYW1lQ29sb3JEYXJrVGhlbWUgOiBGUkFNRV9TVFlMRS5uYW1lQ29sb3JMaWdodFRoZW1lLFxuICAgICAgICB0ZXh0OiBlbGVtZW50Lm5hbWUgfHwgYEZyYW1lICR7ZnJhbWVJZHh9YFxuICAgICAgfSk7XG4gICAgICB0ZXh0RWxlbWVudC55IC09IHRleHRFbGVtZW50LmhlaWdodDtcbiAgICAgIHRleHRFbGVtZW50ID0gdHJ1bmNhdGVUZXh0KHRleHRFbGVtZW50LCBlbGVtZW50LndpZHRoKTtcbiAgICAgIG5leHRFbGVtZW50cy5wdXNoKHRleHRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBuZXh0RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBuZXh0RWxlbWVudHM7XG59O1xuXG5jb25zdCBnZXRGcmFtZVJlbmRlcmluZ0NvbmZpZyA9IChleHBvcnRpbmdGcmFtZSwgZnJhbWVSZW5kZXJpbmcpID0+IHtcbiAgZnJhbWVSZW5kZXJpbmcgPSBmcmFtZVJlbmRlcmluZyB8fCBnZXREZWZhdWx0QXBwU3RhdGUoKS5mcmFtZVJlbmRlcmluZztcbiAgcmV0dXJuIHtcbiAgICBlbmFibGVkOiBleHBvcnRpbmdGcmFtZSA/IHRydWUgOiBmcmFtZVJlbmRlcmluZy5lbmFibGVkLFxuICAgIG91dGxpbmU6IGV4cG9ydGluZ0ZyYW1lID8gZmFsc2UgOiBmcmFtZVJlbmRlcmluZy5vdXRsaW5lLFxuICAgIG5hbWU6IGV4cG9ydGluZ0ZyYW1lID8gZmFsc2UgOiBmcmFtZVJlbmRlcmluZy5uYW1lLFxuICAgIGNsaXA6IGV4cG9ydGluZ0ZyYW1lID8gdHJ1ZSA6IGZyYW1lUmVuZGVyaW5nLmNsaXBcbiAgfTtcbn07XG5cbmNvbnN0IHByZXBhcmVFbGVtZW50c0ZvclJlbmRlciA9ICh7XG4gIGVsZW1lbnRzLFxuICBleHBvcnRpbmdGcmFtZSxcbiAgZnJhbWVSZW5kZXJpbmcsXG4gIGV4cG9ydFdpdGhEYXJrTW9kZVxufSkgPT4ge1xuICBsZXQgbmV4dEVsZW1lbnRzO1xuXG4gIGlmIChleHBvcnRpbmdGcmFtZSkge1xuICAgIG5leHRFbGVtZW50cyA9IGVsZW1lbnRzT3ZlcmxhcHBpbmdCQm94KHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYm91bmRzOiBleHBvcnRpbmdGcmFtZSxcbiAgICAgIHR5cGU6IFwib3ZlcmxhcFwiXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoZnJhbWVSZW5kZXJpbmcuZW5hYmxlZCAmJiBmcmFtZVJlbmRlcmluZy5uYW1lKSB7XG4gICAgbmV4dEVsZW1lbnRzID0gYWRkRnJhbWVMYWJlbHNBc1RleHRFbGVtZW50cyhlbGVtZW50cywge1xuICAgICAgZXhwb3J0V2l0aERhcmtNb2RlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgbmV4dEVsZW1lbnRzID0gZWxlbWVudHM7XG4gIH1cblxuICByZXR1cm4gbmV4dEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gKGVsZW1lbnRzLCBhcHBTdGF0ZSwgZmlsZXMsIHtcbiAgZXhwb3J0QmFja2dyb3VuZCxcbiAgZXhwb3J0UGFkZGluZyA9IERFRkFVTFRfRVhQT1JUX1BBRERJTkcsXG4gIHZpZXdCYWNrZ3JvdW5kQ29sb3IsXG4gIGV4cG9ydGluZ0ZyYW1lXG59LCBjcmVhdGVDYW52YXMgPSAod2lkdGgsIGhlaWdodCkgPT4ge1xuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3aWR0aCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogYXBwU3RhdGUuZXhwb3J0U2NhbGU7XG4gIHJldHVybiB7XG4gICAgY2FudmFzLFxuICAgIHNjYWxlOiBhcHBTdGF0ZS5leHBvcnRTY2FsZVxuICB9O1xufSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gIHZhciBfYTtcblxuICBjb25zdCB0ZW1wU2NlbmUgPSBfX2NyZWF0ZVNjZW5lRm9yRWxlbWVudHNIYWNrX18oZWxlbWVudHMpO1xuXG4gIGVsZW1lbnRzID0gdGVtcFNjZW5lLmdldE5vbkRlbGV0ZWRFbGVtZW50cygpO1xuICBjb25zdCBmcmFtZVJlbmRlcmluZyA9IGdldEZyYW1lUmVuZGVyaW5nQ29uZmlnKGV4cG9ydGluZ0ZyYW1lICE9PSBudWxsICYmIGV4cG9ydGluZ0ZyYW1lICE9PSB2b2lkIDAgPyBleHBvcnRpbmdGcmFtZSA6IG51bGwsIChfYSA9IGFwcFN0YXRlLmZyYW1lUmVuZGVyaW5nKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsKTtcbiAgY29uc3QgZWxlbWVudHNGb3JSZW5kZXIgPSBwcmVwYXJlRWxlbWVudHNGb3JSZW5kZXIoe1xuICAgIGVsZW1lbnRzLFxuICAgIGV4cG9ydGluZ0ZyYW1lLFxuICAgIGV4cG9ydFdpdGhEYXJrTW9kZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlLFxuICAgIGZyYW1lUmVuZGVyaW5nXG4gIH0pO1xuXG4gIGlmIChleHBvcnRpbmdGcmFtZSkge1xuICAgIGV4cG9ydFBhZGRpbmcgPSAwO1xuICB9XG5cbiAgY29uc3QgW21pblgsIG1pblksIHdpZHRoLCBoZWlnaHRdID0gZ2V0Q2FudmFzU2l6ZShleHBvcnRpbmdGcmFtZSA/IFtleHBvcnRpbmdGcmFtZV0gOiBnZXRSb290RWxlbWVudHMoZWxlbWVudHNGb3JSZW5kZXIpLCBleHBvcnRQYWRkaW5nKTtcbiAgY29uc3Qge1xuICAgIGNhbnZhcyxcbiAgICBzY2FsZSA9IDFcbiAgfSA9IGNyZWF0ZUNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcbiAgY29uc3QgZGVmYXVsdEFwcFN0YXRlID0gZ2V0RGVmYXVsdEFwcFN0YXRlKCk7XG4gIGNvbnN0IHtcbiAgICBpbWFnZUNhY2hlXG4gIH0gPSB5aWVsZCB1cGRhdGVJbWFnZUNhY2hlKHtcbiAgICBpbWFnZUNhY2hlOiBuZXcgTWFwKCksXG4gICAgZmlsZUlkczogZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzKGVsZW1lbnRzRm9yUmVuZGVyKS5tYXAoZWxlbWVudCA9PiBlbGVtZW50LmZpbGVJZCksXG4gICAgZmlsZXNcbiAgfSk7XG4gIHJlbmRlclN0YXRpY1NjZW5lKHtcbiAgICBjYW52YXMsXG4gICAgcmM6IHJvdWdoLmNhbnZhcyhjYW52YXMpLFxuICAgIGVsZW1lbnRzOiBlbGVtZW50c0ZvclJlbmRlcixcbiAgICB2aXNpYmxlRWxlbWVudHM6IGVsZW1lbnRzRm9yUmVuZGVyLFxuICAgIHNjYWxlLFxuICAgIGFwcFN0YXRlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwge1xuICAgICAgZnJhbWVSZW5kZXJpbmcsXG4gICAgICB2aWV3QmFja2dyb3VuZENvbG9yOiBleHBvcnRCYWNrZ3JvdW5kID8gdmlld0JhY2tncm91bmRDb2xvciA6IG51bGwsXG4gICAgICBzY3JvbGxYOiAtbWluWCArIGV4cG9ydFBhZGRpbmcsXG4gICAgICBzY3JvbGxZOiAtbWluWSArIGV4cG9ydFBhZGRpbmcsXG4gICAgICB6b29tOiBkZWZhdWx0QXBwU3RhdGUuem9vbSxcbiAgICAgIHNob3VsZENhY2hlSWdub3JlWm9vbTogZmFsc2UsXG4gICAgICB0aGVtZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCJcbiAgICB9KSxcbiAgICByZW5kZXJDb25maWc6IHtcbiAgICAgIGltYWdlQ2FjaGUsXG4gICAgICByZW5kZXJHcmlkOiBmYWxzZSxcbiAgICAgIGlzRXhwb3J0aW5nOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgdGVtcFNjZW5lLmRlc3Ryb3koKTtcbiAgcmV0dXJuIGNhbnZhcztcbn0pO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gKGVsZW1lbnRzLCBhcHBTdGF0ZSwgZmlsZXMsIG9wdHMpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICB2YXIgX2IsIF9jLCBfZDtcblxuICBjb25zdCB0ZW1wU2NlbmUgPSBfX2NyZWF0ZVNjZW5lRm9yRWxlbWVudHNIYWNrX18oZWxlbWVudHMpO1xuXG4gIGVsZW1lbnRzID0gdGVtcFNjZW5lLmdldE5vbkRlbGV0ZWRFbGVtZW50cygpO1xuICBjb25zdCBmcmFtZVJlbmRlcmluZyA9IGdldEZyYW1lUmVuZGVyaW5nQ29uZmlnKChfYiA9IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5leHBvcnRpbmdGcmFtZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbnVsbCwgKF9jID0gYXBwU3RhdGUuZnJhbWVSZW5kZXJpbmcpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IG51bGwpO1xuICBsZXQge1xuICAgIGV4cG9ydFBhZGRpbmcgPSBERUZBVUxUX0VYUE9SVF9QQURESU5HLFxuICAgIGV4cG9ydFdpdGhEYXJrTW9kZSA9IGZhbHNlLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3IsXG4gICAgZXhwb3J0U2NhbGUgPSAxLFxuICAgIGV4cG9ydEVtYmVkU2NlbmVcbiAgfSA9IGFwcFN0YXRlO1xuICBjb25zdCB7XG4gICAgZXhwb3J0aW5nRnJhbWUgPSBudWxsXG4gIH0gPSBvcHRzIHx8IHt9O1xuICBjb25zdCBlbGVtZW50c0ZvclJlbmRlciA9IHByZXBhcmVFbGVtZW50c0ZvclJlbmRlcih7XG4gICAgZWxlbWVudHMsXG4gICAgZXhwb3J0aW5nRnJhbWUsXG4gICAgZXhwb3J0V2l0aERhcmtNb2RlLFxuICAgIGZyYW1lUmVuZGVyaW5nXG4gIH0pO1xuXG4gIGlmIChleHBvcnRpbmdGcmFtZSkge1xuICAgIGV4cG9ydFBhZGRpbmcgPSAwO1xuICB9XG5cbiAgbGV0IG1ldGFkYXRhID0gXCJcIjsgLy8gd2UgbmVlZCB0byBzZXJpYWxpemUgdGhlIFwib3JpZ2luYWxcIiBlbGVtZW50cyBiZWZvcmUgd2UgcHV0IHRoZW0gdGhyb3VnaFxuICAvLyB0aGUgdGVtcFNjZW5lIGhhY2sgd2hpY2ggZHVwbGljYXRlcyBhbmQgcmVnZW5lcmF0ZXMgaWRzXG5cbiAgaWYgKGV4cG9ydEVtYmVkU2NlbmUpIHtcbiAgICB0cnkge1xuICAgICAgbWV0YWRhdGEgPSB5aWVsZCAoeWllbGQgaW1wb3J0KFxuICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJpbWFnZVwiICovXG4gICAgICBcIi4uLy4uL3NyYy9kYXRhL2ltYWdlXCIpKS5lbmNvZGVTdmdNZXRhZGF0YSh7XG4gICAgICAgIC8vIHdoZW4gZW1iZWRkaW5nIHNjZW5lLCB3ZSB3YW50IHRvIGVtYmVkIHRoZSBvcmlnaW9uYWxseSBzdXBwbGllZFxuICAgICAgICAvLyBlbGVtZW50cyB3aGljaCBkb24ndCBjb250YWluIHRoZSB0ZW1wIGZyYW1lIGxhYmVscy5cbiAgICAgICAgLy8gQnV0IGl0IGFsc28gcmVxdWlyZXMgdGhhdCB0aGUgZXhwb3J0VG9TdmcgaXMgYmVpbmcgc3VwcGxpZWQgd2l0aFxuICAgICAgICAvLyBvbmx5IHRoZSBlbGVtZW50cyB0aGF0IHdlJ3JlIGV4cG9ydGluZywgYW5kIG5vIGV4dHJhLlxuICAgICAgICB0ZXh0OiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZXhwb3J0aW5nRnJhbWUgPyBbZXhwb3J0aW5nRnJhbWVdIDogZ2V0Um9vdEVsZW1lbnRzKGVsZW1lbnRzRm9yUmVuZGVyKSwgZXhwb3J0UGFkZGluZyk7IC8vIGluaXRpYWxpemUgU1ZHIHJvb3RcblxuICBjb25zdCBzdmdSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJzdmdcIik7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwidmVyc2lvblwiLCBcIjEuMVwiKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLCBTVkdfTlMpO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIiwgYDAgMCAke3dpZHRofSAke2hlaWdodH1gKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBgJHt3aWR0aCAqIGV4cG9ydFNjYWxlfWApO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBgJHtoZWlnaHQgKiBleHBvcnRTY2FsZX1gKTtcblxuICBpZiAoZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJcIiwgVEhFTUVfRklMVEVSKTtcbiAgfVxuXG4gIGxldCBhc3NldFBhdGggPSBcImh0dHBzOi8vZXhjYWxpZHJhdy5jb20vXCI7IC8vIEFzc2V0IHBhdGggbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZCBvbmx5IHdoZW4gdXNpbmcgcGFja2FnZVxuXG4gIGlmIChwcm9jZXNzLmVudi5WSVRFX0lTX0VYQ0FMSURSQVdfTlBNX1BBQ0tBR0UpIHtcbiAgICBhc3NldFBhdGggPSB3aW5kb3cuRVhDQUxJRFJBV19BU1NFVF9QQVRIIHx8IGBodHRwczovL3VucGtnLmNvbS8ke3Byb2Nlc3MuZW52LlZJVEVfUEtHX05BTUV9QCR7cHJvY2Vzcy5lbnYuUEtHX1ZFUlNJT059YDtcblxuICAgIGlmIChhc3NldFBhdGggPT09IG51bGwgfHwgYXNzZXRQYXRoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhc3NldFBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgIGFzc2V0UGF0aCA9IGFzc2V0UGF0aC5yZXBsYWNlKFwiL1wiLCBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS9gKTtcbiAgICB9XG5cbiAgICBhc3NldFBhdGggPSBgJHthc3NldFBhdGh9L2Rpc3QvZXhjYWxpZHJhdy1hc3NldHMvYDtcbiAgfVxuXG4gIGNvbnN0IG9mZnNldFggPSAtbWluWCArIGV4cG9ydFBhZGRpbmc7XG4gIGNvbnN0IG9mZnNldFkgPSAtbWluWSArIGV4cG9ydFBhZGRpbmc7XG4gIGNvbnN0IGZyYW1lRWxlbWVudHMgPSBnZXRGcmFtZUVsZW1lbnRzKGVsZW1lbnRzKTtcbiAgbGV0IGV4cG9ydGluZ0ZyYW1lQ2xpcFBhdGggPSBcIlwiO1xuXG4gIGZvciAoY29uc3QgZnJhbWUgb2YgZnJhbWVFbGVtZW50cykge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZnJhbWUpO1xuICAgIGNvbnN0IGN4ID0gKHgyIC0geDEpIC8gMiAtIChmcmFtZS54IC0geDEpO1xuICAgIGNvbnN0IGN5ID0gKHkyIC0geTEpIC8gMiAtIChmcmFtZS55IC0geTEpO1xuICAgIGV4cG9ydGluZ0ZyYW1lQ2xpcFBhdGggKz0gYDxjbGlwUGF0aCBpZD0ke2ZyYW1lLmlkfT5cbiAgICAgICAgICAgIDxyZWN0IHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgke2ZyYW1lLnggKyBvZmZzZXRYfSAke2ZyYW1lLnkgKyBvZmZzZXRZfSkgcm90YXRlKCR7ZnJhbWUuYW5nbGV9ICR7Y3h9ICR7Y3l9KVwiXG4gICAgICAgICAgd2lkdGg9XCIke2ZyYW1lLndpZHRofVwiXG4gICAgICAgICAgaGVpZ2h0PVwiJHtmcmFtZS5oZWlnaHR9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9yZWN0PlxuICAgICAgICA8L2NsaXBQYXRoPmA7XG4gIH1cblxuICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlIGNsYXNzPVwic3R5bGUtZm9udHNcIj5cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJWaXJnaWxcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1WaXJnaWwud29mZjJcIik7XG4gICAgICB9XG4gICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiQ2FzY2FkaWFcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1DYXNjYWRpYS53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJBc3Npc3RhbnRcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1Bc3Npc3RhbnQtUmVndWxhci53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICAgICR7ZXhwb3J0aW5nRnJhbWVDbGlwUGF0aH1cbiAgPC9kZWZzPlxuICBgOyAvLyByZW5kZXIgYmFja2dyb3VuZCByZWN0XG5cbiAgaWYgKGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQgJiYgdmlld0JhY2tncm91bmRDb2xvcikge1xuICAgIGNvbnN0IHJlY3QgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJyZWN0XCIpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwieFwiLCBcIjBcIik7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ5XCIsIFwiMFwiKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgdmlld0JhY2tncm91bmRDb2xvcik7XG4gICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChyZWN0KTtcbiAgfVxuXG4gIGNvbnN0IHJzdmcgPSByb3VnaC5zdmcoc3ZnUm9vdCk7XG4gIHJlbmRlclNjZW5lVG9TdmcoZWxlbWVudHNGb3JSZW5kZXIsIHJzdmcsIHN2Z1Jvb3QsIGZpbGVzIHx8IHt9LCB7XG4gICAgb2Zmc2V0WCxcbiAgICBvZmZzZXRZLFxuICAgIGV4cG9ydFdpdGhEYXJrTW9kZSxcbiAgICByZW5kZXJFbWJlZGRhYmxlczogKF9kID0gb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLnJlbmRlckVtYmVkZGFibGVzKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiBmYWxzZSxcbiAgICBmcmFtZVJlbmRlcmluZ1xuICB9KTtcbiAgdGVtcFNjZW5lLmRlc3Ryb3koKTtcbiAgcmV0dXJuIHN2Z1Jvb3Q7XG59KTsgLy8gY2FsY3VsYXRlIHNtYWxsZXN0IGFyZWEgdG8gZml0IHRoZSBjb250ZW50cyBpblxuXG5jb25zdCBnZXRDYW52YXNTaXplID0gKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKSA9PiB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldENvbW1vbkJvdW5kcyhlbGVtZW50cyk7XG4gIGNvbnN0IHdpZHRoID0gZGlzdGFuY2UobWluWCwgbWF4WCkgKyBleHBvcnRQYWRkaW5nICogMjtcbiAgY29uc3QgaGVpZ2h0ID0gZGlzdGFuY2UobWluWSwgbWF4WSkgKyBleHBvcnRQYWRkaW5nICogMjtcbiAgcmV0dXJuIFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFeHBvcnRTaXplID0gKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nLCBzY2FsZSkgPT4ge1xuICBjb25zdCBbLCwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKS5tYXAoZGltZW5zaW9uID0+IE1hdGgudHJ1bmMoZGltZW5zaW9uICogc2NhbGUpKTtcbiAgcmV0dXJuIFt3aWR0aCwgaGVpZ2h0XTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../scene/export.ts\n");
4523
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"exportToCanvas\": () => (/* binding */ exportToCanvas),\n/* harmony export */ \"exportToSvg\": () => (/* binding */ exportToSvg),\n/* harmony export */ \"getExportSize\": () => (/* binding */ getExportSize)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ \"../../renderer/renderScene.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ \"../../data/json.ts\");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/image */ \"../../element/image.ts\");\n/* harmony import */ var _packages_withinBounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../packages/withinBounds */ \"../withinBounds.ts\");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../frame */ \"../../frame.ts\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/mutateElement */ \"../../element/mutateElement.ts\");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Scene */ \"../../scene/Scene.ts\");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`; // getContainerElement and getBoundTextElement and potentially other helpers\n// depend on `Scene` which will not be available when these pure utils are\n// called outside initialized Excalidraw editor instance or even if called\n// from inside Excalidraw if the elements were never cached by Scene (e.g.\n// for library elements).\n//\n// As such, before passing the elements down, we need to initialize a custom\n// Scene instance and assign them to it.\n//\n// FIXME This is a super hacky workaround and we'll need to rewrite this soon.\n\nconst __createSceneForElementsHack__ = elements => {\n const scene = new _Scene__WEBPACK_IMPORTED_MODULE_12__[\"default\"](); // we can't duplicate elements to regenerate ids because we need the\n // orig ids when embedding. So we do another hack of not mapping element\n // ids to Scene instances so that we don't override the editor elements\n // mapping.\n // We still need to clone the objects themselves to regen references.\n\n scene.replaceAllElements((0,_utils__WEBPACK_IMPORTED_MODULE_3__.cloneJSON)(elements), false);\n return scene;\n};\n\nconst truncateText = (element, maxWidth) => {\n if (element.width <= maxWidth) {\n return element;\n }\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n ctx.font = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n fontFamily: element.fontFamily,\n fontSize: element.fontSize\n });\n let text = element.text;\n const metrics = ctx.measureText(text);\n\n if (metrics.width > maxWidth) {\n // we iterate from the right, removing characters one by one instead\n // of bulding the string up. This assumes that it's more likely\n // your frame names will overflow by not that many characters\n // (if ever), so it sohuld be faster this way.\n for (let i = text.length; i > 0; i--) {\n const newText = `${text.slice(0, i)}...`;\n\n if (ctx.measureText(newText).width <= maxWidth) {\n text = newText;\n break;\n }\n }\n }\n\n return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_11__.newElementWith)(element, {\n text,\n width: maxWidth\n });\n};\n/**\n * When exporting frames, we need to render frame labels which are currently\n * being rendered in DOM when editing. Adding the labels as regular text\n * elements seems like a simple hack. In the future we'll want to move to\n * proper canvas rendering, even within editor (instead of DOM).\n */\n\n\nconst addFrameLabelsAsTextElements = (elements, opts) => {\n const nextElements = [];\n let frameIdx = 0;\n\n for (const element of elements) {\n if ((0,_element__WEBPACK_IMPORTED_MODULE_10__.isFrameElement)(element)) {\n frameIdx++;\n let textElement = (0,_element__WEBPACK_IMPORTED_MODULE_10__.newTextElement)({\n x: element.x,\n y: element.y - _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameOffsetY,\n fontFamily: _constants__WEBPACK_IMPORTED_MODULE_4__.FONT_FAMILY.Assistant,\n fontSize: _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameFontSize,\n lineHeight: _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameLineHeight,\n strokeColor: opts.exportWithDarkMode ? _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameColorDarkTheme : _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameColorLightTheme,\n text: element.name || `Frame ${frameIdx}`\n });\n textElement.y -= textElement.height;\n textElement = truncateText(textElement, element.width);\n nextElements.push(textElement);\n }\n\n nextElements.push(element);\n }\n\n return nextElements;\n};\n\nconst getFrameRenderingConfig = (exportingFrame, frameRendering) => {\n frameRendering = frameRendering || (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)().frameRendering;\n return {\n enabled: exportingFrame ? true : frameRendering.enabled,\n outline: exportingFrame ? false : frameRendering.outline,\n name: exportingFrame ? false : frameRendering.name,\n clip: exportingFrame ? true : frameRendering.clip\n };\n};\n\nconst prepareElementsForRender = ({\n elements,\n exportingFrame,\n frameRendering,\n exportWithDarkMode\n}) => {\n let nextElements;\n\n if (exportingFrame) {\n nextElements = (0,_packages_withinBounds__WEBPACK_IMPORTED_MODULE_8__.elementsOverlappingBBox)({\n elements,\n bounds: exportingFrame,\n type: \"overlap\"\n });\n } else if (frameRendering.enabled && frameRendering.name) {\n nextElements = addFrameLabelsAsTextElements(elements, {\n exportWithDarkMode\n });\n } else {\n nextElements = elements;\n }\n\n return nextElements;\n};\n\nconst exportToCanvas = (elements, appState, files, {\n exportBackground,\n exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n viewBackgroundColor,\n exportingFrame\n}, createCanvas = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return {\n canvas,\n scale: appState.exportScale\n };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n var _a;\n\n const tempScene = __createSceneForElementsHack__(elements);\n\n elements = tempScene.getNonDeletedElements();\n const frameRendering = getFrameRenderingConfig(exportingFrame !== null && exportingFrame !== void 0 ? exportingFrame : null, (_a = appState.frameRendering) !== null && _a !== void 0 ? _a : null);\n const elementsForRender = prepareElementsForRender({\n elements,\n exportingFrame,\n exportWithDarkMode: appState.exportWithDarkMode,\n frameRendering\n });\n\n if (exportingFrame) {\n exportPadding = 0;\n }\n\n const [minX, minY, width, height] = getCanvasSize(exportingFrame ? [exportingFrame] : (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getRootElements)(elementsForRender), exportPadding);\n const {\n canvas,\n scale = 1\n } = createCanvas(width, height);\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n const {\n imageCache\n } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.updateImageCache)({\n imageCache: new Map(),\n fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.getInitializedImageElements)(elementsForRender).map(element => element.fileId),\n files\n });\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderStaticScene)({\n canvas,\n rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].canvas(canvas),\n elements: elementsForRender,\n visibleElements: elementsForRender,\n scale,\n appState: Object.assign(Object.assign({}, appState), {\n frameRendering,\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + exportPadding,\n scrollY: -minY + exportPadding,\n zoom: defaultAppState.zoom,\n shouldCacheIgnoreZoom: false,\n theme: appState.exportWithDarkMode ? \"dark\" : \"light\"\n }),\n renderConfig: {\n imageCache,\n renderGrid: false,\n isExporting: true\n }\n });\n tempScene.destroy();\n return canvas;\n});\nconst exportToSvg = (elements, appState, files, opts) => __awaiter(void 0, void 0, void 0, function* () {\n var _b, _c, _d;\n\n const tempScene = __createSceneForElementsHack__(elements);\n\n elements = tempScene.getNonDeletedElements();\n const frameRendering = getFrameRenderingConfig((_b = opts === null || opts === void 0 ? void 0 : opts.exportingFrame) !== null && _b !== void 0 ? _b : null, (_c = appState.frameRendering) !== null && _c !== void 0 ? _c : null);\n let {\n exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n exportWithDarkMode = false,\n viewBackgroundColor,\n exportScale = 1,\n exportEmbedScene\n } = appState;\n const {\n exportingFrame = null\n } = opts || {};\n const elementsForRender = prepareElementsForRender({\n elements,\n exportingFrame,\n exportWithDarkMode,\n frameRendering\n });\n\n if (exportingFrame) {\n exportPadding = 0;\n }\n\n let metadata = \"\"; // we need to serialize the \"original\" elements before we put them through\n // the tempScene hack which duplicates and regenerates ids\n\n if (exportEmbedScene) {\n try {\n metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ \"../../data/image.ts\"))).encodeSvgMetadata({\n // when embedding scene, we want to embed the origionally supplied\n // elements which don't contain the temp frame labels.\n // But it also requires that the exportToSvg is being supplied with\n // only the elements that we're exporting, and no extra.\n text: (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, \"local\")\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n const [minX, minY, width, height] = getCanvasSize(exportingFrame ? [exportingFrame] : (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getRootElements)(elementsForRender), exportPadding); // initialize SVG root\n\n const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"svg\");\n svgRoot.setAttribute(\"version\", \"1.1\");\n svgRoot.setAttribute(\"xmlns\", _constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS);\n svgRoot.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n svgRoot.setAttribute(\"width\", `${width * exportScale}`);\n svgRoot.setAttribute(\"height\", `${height * exportScale}`);\n\n if (exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n }\n\n let assetPath = \"https://excalidraw.com/\"; // Asset path needs to be determined only when using package\n\n if (true) {\n assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.3\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).PKG_VERSION}`;\n\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\"/\")) {\n assetPath = assetPath.replace(\"/\", `${window.location.origin}/`);\n }\n\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\n }\n\n const offsetX = -minX + exportPadding;\n const offsetY = -minY + exportPadding;\n const frameElements = (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getFrameElements)(elements);\n let exportingFrameClipPath = \"\";\n\n for (const frame of frameElements) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(frame);\n const cx = (x2 - x1) / 2 - (frame.x - x1);\n const cy = (y2 - y1) / 2 - (frame.y - y1);\n exportingFrameClipPath += `<clipPath id=${frame.id}>\n <rect transform=\"translate(${frame.x + offsetX} ${frame.y + offsetY}) rotate(${frame.angle} ${cx} ${cy})\"\n width=\"${frame.width}\"\n height=\"${frame.height}\"\n >\n </rect>\n </clipPath>`;\n }\n\n svgRoot.innerHTML = `\n ${SVG_EXPORT_TAG}\n ${metadata}\n <defs>\n <style class=\"style-fonts\">\n @font-face {\n font-family: \"Virgil\";\n src: url(\"${assetPath}Virgil.woff2\");\n }\n @font-face {\n font-family: \"Cascadia\";\n src: url(\"${assetPath}Cascadia.woff2\");\n }\n @font-face {\n font-family: \"Assistant\";\n src: url(\"${assetPath}Assistant-Regular.woff2\");\n }\n </style>\n ${exportingFrameClipPath}\n </defs>\n `; // render background rect\n\n if (appState.exportBackground && viewBackgroundColor) {\n const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"rect\");\n rect.setAttribute(\"x\", \"0\");\n rect.setAttribute(\"y\", \"0\");\n rect.setAttribute(\"width\", `${width}`);\n rect.setAttribute(\"height\", `${height}`);\n rect.setAttribute(\"fill\", viewBackgroundColor);\n svgRoot.appendChild(rect);\n }\n\n const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].svg(svgRoot);\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderSceneToSvg)(elementsForRender, rsvg, svgRoot, files || {}, {\n offsetX,\n offsetY,\n exportWithDarkMode,\n renderEmbeddables: (_d = opts === null || opts === void 0 ? void 0 : opts.renderEmbeddables) !== null && _d !== void 0 ? _d : false,\n frameRendering\n });\n tempScene.destroy();\n return svgRoot;\n}); // calculate smallest area to fit the contents in\n\nconst getCanvasSize = (elements, exportPadding) => {\n const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);\n const width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minX, maxX) + exportPadding * 2;\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + exportPadding * 2;\n return [minX, minY, width, height];\n};\n\nconst getExportSize = (elements, exportPadding, scale) => {\n const [,, width, height] = getCanvasSize(elements, exportPadding).map(dimension => Math.trunc(dimension * scale));\n return [width, height];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LGVBQWUsNkRBQVM7QUFDeEIsRUFBRSx1RUFBZ0IsOENBQThDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLENBQUMsR0FBRzs7QUFFSjtBQUNBLG1DQUFtQyxnRUFBZTtBQUNsRCxnQkFBZ0IsZ0RBQVE7QUFDeEIsaUJBQWlCLGdEQUFRO0FBQ3pCO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvZXhwb3J0LnRzP2MzNzMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxuaW1wb3J0IHJvdWdoIGZyb20gXCJyb3VnaGpzL2Jpbi9yb3VnaFwiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQm91bmRzLCBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMgfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCB7IHJlbmRlclNjZW5lVG9TdmcsIHJlbmRlclN0YXRpY1NjZW5lIH0gZnJvbSBcIi4uL3JlbmRlcmVyL3JlbmRlclNjZW5lXCI7XG5pbXBvcnQgeyBjbG9uZUpTT04sIGRpc3RhbmNlLCBnZXRGb250U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VYUE9SVF9QQURESU5HLCBGT05UX0ZBTUlMWSwgRlJBTUVfU1RZTEUsIFNWR19OUywgVEhFTUVfRklMVEVSIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEFwcFN0YXRlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgeyBzZXJpYWxpemVBc0pTT04gfSBmcm9tIFwiLi4vZGF0YS9qc29uXCI7XG5pbXBvcnQgeyBnZXRJbml0aWFsaXplZEltYWdlRWxlbWVudHMsIHVwZGF0ZUltYWdlQ2FjaGUgfSBmcm9tIFwiLi4vZWxlbWVudC9pbWFnZVwiO1xuaW1wb3J0IHsgZWxlbWVudHNPdmVybGFwcGluZ0JCb3ggfSBmcm9tIFwiLi4vcGFja2FnZXMvd2l0aGluQm91bmRzXCI7XG5pbXBvcnQgeyBnZXRGcmFtZUVsZW1lbnRzLCBnZXRSb290RWxlbWVudHMgfSBmcm9tIFwiLi4vZnJhbWVcIjtcbmltcG9ydCB7IGlzRnJhbWVFbGVtZW50LCBuZXdUZXh0RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyBuZXdFbGVtZW50V2l0aCB9IGZyb20gXCIuLi9lbGVtZW50L211dGF0ZUVsZW1lbnRcIjtcbmltcG9ydCBTY2VuZSBmcm9tIFwiLi9TY2VuZVwiO1xuY29uc3QgU1ZHX0VYUE9SVF9UQUcgPSBgPCEtLSBzdmctc291cmNlOmV4Y2FsaWRyYXcgLS0+YDsgLy8gZ2V0Q29udGFpbmVyRWxlbWVudCBhbmQgZ2V0Qm91bmRUZXh0RWxlbWVudCBhbmQgcG90ZW50aWFsbHkgb3RoZXIgaGVscGVyc1xuLy8gZGVwZW5kIG9uIGBTY2VuZWAgd2hpY2ggd2lsbCBub3QgYmUgYXZhaWxhYmxlIHdoZW4gdGhlc2UgcHVyZSB1dGlscyBhcmVcbi8vIGNhbGxlZCBvdXRzaWRlIGluaXRpYWxpemVkIEV4Y2FsaWRyYXcgZWRpdG9yIGluc3RhbmNlIG9yIGV2ZW4gaWYgY2FsbGVkXG4vLyBmcm9tIGluc2lkZSBFeGNhbGlkcmF3IGlmIHRoZSBlbGVtZW50cyB3ZXJlIG5ldmVyIGNhY2hlZCBieSBTY2VuZSAoZS5nLlxuLy8gZm9yIGxpYnJhcnkgZWxlbWVudHMpLlxuLy9cbi8vIEFzIHN1Y2gsIGJlZm9yZSBwYXNzaW5nIHRoZSBlbGVtZW50cyBkb3duLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgYSBjdXN0b21cbi8vIFNjZW5lIGluc3RhbmNlIGFuZCBhc3NpZ24gdGhlbSB0byBpdC5cbi8vXG4vLyBGSVhNRSBUaGlzIGlzIGEgc3VwZXIgaGFja3kgd29ya2Fyb3VuZCBhbmQgd2UnbGwgbmVlZCB0byByZXdyaXRlIHRoaXMgc29vbi5cblxuY29uc3QgX19jcmVhdGVTY2VuZUZvckVsZW1lbnRzSGFja19fID0gZWxlbWVudHMgPT4ge1xuICBjb25zdCBzY2VuZSA9IG5ldyBTY2VuZSgpOyAvLyB3ZSBjYW4ndCBkdXBsaWNhdGUgZWxlbWVudHMgdG8gcmVnZW5lcmF0ZSBpZHMgYmVjYXVzZSB3ZSBuZWVkIHRoZVxuICAvLyBvcmlnIGlkcyB3aGVuIGVtYmVkZGluZy4gU28gd2UgZG8gYW5vdGhlciBoYWNrIG9mIG5vdCBtYXBwaW5nIGVsZW1lbnRcbiAgLy8gaWRzIHRvIFNjZW5lIGluc3RhbmNlcyBzbyB0aGF0IHdlIGRvbid0IG92ZXJyaWRlIHRoZSBlZGl0b3IgZWxlbWVudHNcbiAgLy8gbWFwcGluZy5cbiAgLy8gV2Ugc3RpbGwgbmVlZCB0byBjbG9uZSB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzIHRvIHJlZ2VuIHJlZmVyZW5jZXMuXG5cbiAgc2NlbmUucmVwbGFjZUFsbEVsZW1lbnRzKGNsb25lSlNPTihlbGVtZW50cyksIGZhbHNlKTtcbiAgcmV0dXJuIHNjZW5lO1xufTtcblxuY29uc3QgdHJ1bmNhdGVUZXh0ID0gKGVsZW1lbnQsIG1heFdpZHRoKSA9PiB7XG4gIGlmIChlbGVtZW50LndpZHRoIDw9IG1heFdpZHRoKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICBjdHguZm9udCA9IGdldEZvbnRTdHJpbmcoe1xuICAgIGZvbnRGYW1pbHk6IGVsZW1lbnQuZm9udEZhbWlseSxcbiAgICBmb250U2l6ZTogZWxlbWVudC5mb250U2l6ZVxuICB9KTtcbiAgbGV0IHRleHQgPSBlbGVtZW50LnRleHQ7XG4gIGNvbnN0IG1ldHJpY3MgPSBjdHgubWVhc3VyZVRleHQodGV4dCk7XG5cbiAgaWYgKG1ldHJpY3Mud2lkdGggPiBtYXhXaWR0aCkge1xuICAgIC8vIHdlIGl0ZXJhdGUgZnJvbSB0aGUgcmlnaHQsIHJlbW92aW5nIGNoYXJhY3RlcnMgb25lIGJ5IG9uZSBpbnN0ZWFkXG4gICAgLy8gb2YgYnVsZGluZyB0aGUgc3RyaW5nIHVwLiBUaGlzIGFzc3VtZXMgdGhhdCBpdCdzIG1vcmUgbGlrZWx5XG4gICAgLy8geW91ciBmcmFtZSBuYW1lcyB3aWxsIG92ZXJmbG93IGJ5IG5vdCB0aGF0IG1hbnkgY2hhcmFjdGVyc1xuICAgIC8vIChpZiBldmVyKSwgc28gaXQgc29odWxkIGJlIGZhc3RlciB0aGlzIHdheS5cbiAgICBmb3IgKGxldCBpID0gdGV4dC5sZW5ndGg7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IG5ld1RleHQgPSBgJHt0ZXh0LnNsaWNlKDAsIGkpfS4uLmA7XG5cbiAgICAgIGlmIChjdHgubWVhc3VyZVRleHQobmV3VGV4dCkud2lkdGggPD0gbWF4V2lkdGgpIHtcbiAgICAgICAgdGV4dCA9IG5ld1RleHQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdFbGVtZW50V2l0aChlbGVtZW50LCB7XG4gICAgdGV4dCxcbiAgICB3aWR0aDogbWF4V2lkdGhcbiAgfSk7XG59O1xuLyoqXG4gKiBXaGVuIGV4cG9ydGluZyBmcmFtZXMsIHdlIG5lZWQgdG8gcmVuZGVyIGZyYW1lIGxhYmVscyB3aGljaCBhcmUgY3VycmVudGx5XG4gKiBiZWluZyByZW5kZXJlZCBpbiBET00gd2hlbiBlZGl0aW5nLiBBZGRpbmcgdGhlIGxhYmVscyBhcyByZWd1bGFyIHRleHRcbiAqIGVsZW1lbnRzIHNlZW1zIGxpa2UgYSBzaW1wbGUgaGFjay4gSW4gdGhlIGZ1dHVyZSB3ZSdsbCB3YW50IHRvIG1vdmUgdG9cbiAqIHByb3BlciBjYW52YXMgcmVuZGVyaW5nLCBldmVuIHdpdGhpbiBlZGl0b3IgKGluc3RlYWQgb2YgRE9NKS5cbiAqL1xuXG5cbmNvbnN0IGFkZEZyYW1lTGFiZWxzQXNUZXh0RWxlbWVudHMgPSAoZWxlbWVudHMsIG9wdHMpID0+IHtcbiAgY29uc3QgbmV4dEVsZW1lbnRzID0gW107XG4gIGxldCBmcmFtZUlkeCA9IDA7XG5cbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgaWYgKGlzRnJhbWVFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICBmcmFtZUlkeCsrO1xuICAgICAgbGV0IHRleHRFbGVtZW50ID0gbmV3VGV4dEVsZW1lbnQoe1xuICAgICAgICB4OiBlbGVtZW50LngsXG4gICAgICAgIHk6IGVsZW1lbnQueSAtIEZSQU1FX1NUWUxFLm5hbWVPZmZzZXRZLFxuICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWS5Bc3Npc3RhbnQsXG4gICAgICAgIGZvbnRTaXplOiBGUkFNRV9TVFlMRS5uYW1lRm9udFNpemUsXG4gICAgICAgIGxpbmVIZWlnaHQ6IEZSQU1FX1NUWUxFLm5hbWVMaW5lSGVpZ2h0LFxuICAgICAgICBzdHJva2VDb2xvcjogb3B0cy5leHBvcnRXaXRoRGFya01vZGUgPyBGUkFNRV9TVFlMRS5uYW1lQ29sb3JEYXJrVGhlbWUgOiBGUkFNRV9TVFlMRS5uYW1lQ29sb3JMaWdodFRoZW1lLFxuICAgICAgICB0ZXh0OiBlbGVtZW50Lm5hbWUgfHwgYEZyYW1lICR7ZnJhbWVJZHh9YFxuICAgICAgfSk7XG4gICAgICB0ZXh0RWxlbWVudC55IC09IHRleHRFbGVtZW50LmhlaWdodDtcbiAgICAgIHRleHRFbGVtZW50ID0gdHJ1bmNhdGVUZXh0KHRleHRFbGVtZW50LCBlbGVtZW50LndpZHRoKTtcbiAgICAgIG5leHRFbGVtZW50cy5wdXNoKHRleHRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBuZXh0RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBuZXh0RWxlbWVudHM7XG59O1xuXG5jb25zdCBnZXRGcmFtZVJlbmRlcmluZ0NvbmZpZyA9IChleHBvcnRpbmdGcmFtZSwgZnJhbWVSZW5kZXJpbmcpID0+IHtcbiAgZnJhbWVSZW5kZXJpbmcgPSBmcmFtZVJlbmRlcmluZyB8fCBnZXREZWZhdWx0QXBwU3RhdGUoKS5mcmFtZVJlbmRlcmluZztcbiAgcmV0dXJuIHtcbiAgICBlbmFibGVkOiBleHBvcnRpbmdGcmFtZSA/IHRydWUgOiBmcmFtZVJlbmRlcmluZy5lbmFibGVkLFxuICAgIG91dGxpbmU6IGV4cG9ydGluZ0ZyYW1lID8gZmFsc2UgOiBmcmFtZVJlbmRlcmluZy5vdXRsaW5lLFxuICAgIG5hbWU6IGV4cG9ydGluZ0ZyYW1lID8gZmFsc2UgOiBmcmFtZVJlbmRlcmluZy5uYW1lLFxuICAgIGNsaXA6IGV4cG9ydGluZ0ZyYW1lID8gdHJ1ZSA6IGZyYW1lUmVuZGVyaW5nLmNsaXBcbiAgfTtcbn07XG5cbmNvbnN0IHByZXBhcmVFbGVtZW50c0ZvclJlbmRlciA9ICh7XG4gIGVsZW1lbnRzLFxuICBleHBvcnRpbmdGcmFtZSxcbiAgZnJhbWVSZW5kZXJpbmcsXG4gIGV4cG9ydFdpdGhEYXJrTW9kZVxufSkgPT4ge1xuICBsZXQgbmV4dEVsZW1lbnRzO1xuXG4gIGlmIChleHBvcnRpbmdGcmFtZSkge1xuICAgIG5leHRFbGVtZW50cyA9IGVsZW1lbnRzT3ZlcmxhcHBpbmdCQm94KHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYm91bmRzOiBleHBvcnRpbmdGcmFtZSxcbiAgICAgIHR5cGU6IFwib3ZlcmxhcFwiXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoZnJhbWVSZW5kZXJpbmcuZW5hYmxlZCAmJiBmcmFtZVJlbmRlcmluZy5uYW1lKSB7XG4gICAgbmV4dEVsZW1lbnRzID0gYWRkRnJhbWVMYWJlbHNBc1RleHRFbGVtZW50cyhlbGVtZW50cywge1xuICAgICAgZXhwb3J0V2l0aERhcmtNb2RlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgbmV4dEVsZW1lbnRzID0gZWxlbWVudHM7XG4gIH1cblxuICByZXR1cm4gbmV4dEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gKGVsZW1lbnRzLCBhcHBTdGF0ZSwgZmlsZXMsIHtcbiAgZXhwb3J0QmFja2dyb3VuZCxcbiAgZXhwb3J0UGFkZGluZyA9IERFRkFVTFRfRVhQT1JUX1BBRERJTkcsXG4gIHZpZXdCYWNrZ3JvdW5kQ29sb3IsXG4gIGV4cG9ydGluZ0ZyYW1lXG59LCBjcmVhdGVDYW52YXMgPSAod2lkdGgsIGhlaWdodCkgPT4ge1xuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3aWR0aCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogYXBwU3RhdGUuZXhwb3J0U2NhbGU7XG4gIHJldHVybiB7XG4gICAgY2FudmFzLFxuICAgIHNjYWxlOiBhcHBTdGF0ZS5leHBvcnRTY2FsZVxuICB9O1xufSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gIHZhciBfYTtcblxuICBjb25zdCB0ZW1wU2NlbmUgPSBfX2NyZWF0ZVNjZW5lRm9yRWxlbWVudHNIYWNrX18oZWxlbWVudHMpO1xuXG4gIGVsZW1lbnRzID0gdGVtcFNjZW5lLmdldE5vbkRlbGV0ZWRFbGVtZW50cygpO1xuICBjb25zdCBmcmFtZVJlbmRlcmluZyA9IGdldEZyYW1lUmVuZGVyaW5nQ29uZmlnKGV4cG9ydGluZ0ZyYW1lICE9PSBudWxsICYmIGV4cG9ydGluZ0ZyYW1lICE9PSB2b2lkIDAgPyBleHBvcnRpbmdGcmFtZSA6IG51bGwsIChfYSA9IGFwcFN0YXRlLmZyYW1lUmVuZGVyaW5nKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsKTtcbiAgY29uc3QgZWxlbWVudHNGb3JSZW5kZXIgPSBwcmVwYXJlRWxlbWVudHNGb3JSZW5kZXIoe1xuICAgIGVsZW1lbnRzLFxuICAgIGV4cG9ydGluZ0ZyYW1lLFxuICAgIGV4cG9ydFdpdGhEYXJrTW9kZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlLFxuICAgIGZyYW1lUmVuZGVyaW5nXG4gIH0pO1xuXG4gIGlmIChleHBvcnRpbmdGcmFtZSkge1xuICAgIGV4cG9ydFBhZGRpbmcgPSAwO1xuICB9XG5cbiAgY29uc3QgW21pblgsIG1pblksIHdpZHRoLCBoZWlnaHRdID0gZ2V0Q2FudmFzU2l6ZShleHBvcnRpbmdGcmFtZSA/IFtleHBvcnRpbmdGcmFtZV0gOiBnZXRSb290RWxlbWVudHMoZWxlbWVudHNGb3JSZW5kZXIpLCBleHBvcnRQYWRkaW5nKTtcbiAgY29uc3Qge1xuICAgIGNhbnZhcyxcbiAgICBzY2FsZSA9IDFcbiAgfSA9IGNyZWF0ZUNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcbiAgY29uc3QgZGVmYXVsdEFwcFN0YXRlID0gZ2V0RGVmYXVsdEFwcFN0YXRlKCk7XG4gIGNvbnN0IHtcbiAgICBpbWFnZUNhY2hlXG4gIH0gPSB5aWVsZCB1cGRhdGVJbWFnZUNhY2hlKHtcbiAgICBpbWFnZUNhY2hlOiBuZXcgTWFwKCksXG4gICAgZmlsZUlkczogZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzKGVsZW1lbnRzRm9yUmVuZGVyKS5tYXAoZWxlbWVudCA9PiBlbGVtZW50LmZpbGVJZCksXG4gICAgZmlsZXNcbiAgfSk7XG4gIHJlbmRlclN0YXRpY1NjZW5lKHtcbiAgICBjYW52YXMsXG4gICAgcmM6IHJvdWdoLmNhbnZhcyhjYW52YXMpLFxuICAgIGVsZW1lbnRzOiBlbGVtZW50c0ZvclJlbmRlcixcbiAgICB2aXNpYmxlRWxlbWVudHM6IGVsZW1lbnRzRm9yUmVuZGVyLFxuICAgIHNjYWxlLFxuICAgIGFwcFN0YXRlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwge1xuICAgICAgZnJhbWVSZW5kZXJpbmcsXG4gICAgICB2aWV3QmFja2dyb3VuZENvbG9yOiBleHBvcnRCYWNrZ3JvdW5kID8gdmlld0JhY2tncm91bmRDb2xvciA6IG51bGwsXG4gICAgICBzY3JvbGxYOiAtbWluWCArIGV4cG9ydFBhZGRpbmcsXG4gICAgICBzY3JvbGxZOiAtbWluWSArIGV4cG9ydFBhZGRpbmcsXG4gICAgICB6b29tOiBkZWZhdWx0QXBwU3RhdGUuem9vbSxcbiAgICAgIHNob3VsZENhY2hlSWdub3JlWm9vbTogZmFsc2UsXG4gICAgICB0aGVtZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCJcbiAgICB9KSxcbiAgICByZW5kZXJDb25maWc6IHtcbiAgICAgIGltYWdlQ2FjaGUsXG4gICAgICByZW5kZXJHcmlkOiBmYWxzZSxcbiAgICAgIGlzRXhwb3J0aW5nOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgdGVtcFNjZW5lLmRlc3Ryb3koKTtcbiAgcmV0dXJuIGNhbnZhcztcbn0pO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gKGVsZW1lbnRzLCBhcHBTdGF0ZSwgZmlsZXMsIG9wdHMpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICB2YXIgX2IsIF9jLCBfZDtcblxuICBjb25zdCB0ZW1wU2NlbmUgPSBfX2NyZWF0ZVNjZW5lRm9yRWxlbWVudHNIYWNrX18oZWxlbWVudHMpO1xuXG4gIGVsZW1lbnRzID0gdGVtcFNjZW5lLmdldE5vbkRlbGV0ZWRFbGVtZW50cygpO1xuICBjb25zdCBmcmFtZVJlbmRlcmluZyA9IGdldEZyYW1lUmVuZGVyaW5nQ29uZmlnKChfYiA9IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5leHBvcnRpbmdGcmFtZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbnVsbCwgKF9jID0gYXBwU3RhdGUuZnJhbWVSZW5kZXJpbmcpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IG51bGwpO1xuICBsZXQge1xuICAgIGV4cG9ydFBhZGRpbmcgPSBERUZBVUxUX0VYUE9SVF9QQURESU5HLFxuICAgIGV4cG9ydFdpdGhEYXJrTW9kZSA9IGZhbHNlLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3IsXG4gICAgZXhwb3J0U2NhbGUgPSAxLFxuICAgIGV4cG9ydEVtYmVkU2NlbmVcbiAgfSA9IGFwcFN0YXRlO1xuICBjb25zdCB7XG4gICAgZXhwb3J0aW5nRnJhbWUgPSBudWxsXG4gIH0gPSBvcHRzIHx8IHt9O1xuICBjb25zdCBlbGVtZW50c0ZvclJlbmRlciA9IHByZXBhcmVFbGVtZW50c0ZvclJlbmRlcih7XG4gICAgZWxlbWVudHMsXG4gICAgZXhwb3J0aW5nRnJhbWUsXG4gICAgZXhwb3J0V2l0aERhcmtNb2RlLFxuICAgIGZyYW1lUmVuZGVyaW5nXG4gIH0pO1xuXG4gIGlmIChleHBvcnRpbmdGcmFtZSkge1xuICAgIGV4cG9ydFBhZGRpbmcgPSAwO1xuICB9XG5cbiAgbGV0IG1ldGFkYXRhID0gXCJcIjsgLy8gd2UgbmVlZCB0byBzZXJpYWxpemUgdGhlIFwib3JpZ2luYWxcIiBlbGVtZW50cyBiZWZvcmUgd2UgcHV0IHRoZW0gdGhyb3VnaFxuICAvLyB0aGUgdGVtcFNjZW5lIGhhY2sgd2hpY2ggZHVwbGljYXRlcyBhbmQgcmVnZW5lcmF0ZXMgaWRzXG5cbiAgaWYgKGV4cG9ydEVtYmVkU2NlbmUpIHtcbiAgICB0cnkge1xuICAgICAgbWV0YWRhdGEgPSB5aWVsZCAoeWllbGQgaW1wb3J0KFxuICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJpbWFnZVwiICovXG4gICAgICBcIi4uLy4uL3NyYy9kYXRhL2ltYWdlXCIpKS5lbmNvZGVTdmdNZXRhZGF0YSh7XG4gICAgICAgIC8vIHdoZW4gZW1iZWRkaW5nIHNjZW5lLCB3ZSB3YW50IHRvIGVtYmVkIHRoZSBvcmlnaW9uYWxseSBzdXBwbGllZFxuICAgICAgICAvLyBlbGVtZW50cyB3aGljaCBkb24ndCBjb250YWluIHRoZSB0ZW1wIGZyYW1lIGxhYmVscy5cbiAgICAgICAgLy8gQnV0IGl0IGFsc28gcmVxdWlyZXMgdGhhdCB0aGUgZXhwb3J0VG9TdmcgaXMgYmVpbmcgc3VwcGxpZWQgd2l0aFxuICAgICAgICAvLyBvbmx5IHRoZSBlbGVtZW50cyB0aGF0IHdlJ3JlIGV4cG9ydGluZywgYW5kIG5vIGV4dHJhLlxuICAgICAgICB0ZXh0OiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZXhwb3J0aW5nRnJhbWUgPyBbZXhwb3J0aW5nRnJhbWVdIDogZ2V0Um9vdEVsZW1lbnRzKGVsZW1lbnRzRm9yUmVuZGVyKSwgZXhwb3J0UGFkZGluZyk7IC8vIGluaXRpYWxpemUgU1ZHIHJvb3RcblxuICBjb25zdCBzdmdSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJzdmdcIik7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwidmVyc2lvblwiLCBcIjEuMVwiKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLCBTVkdfTlMpO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIiwgYDAgMCAke3dpZHRofSAke2hlaWdodH1gKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBgJHt3aWR0aCAqIGV4cG9ydFNjYWxlfWApO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBgJHtoZWlnaHQgKiBleHBvcnRTY2FsZX1gKTtcblxuICBpZiAoZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJcIiwgVEhFTUVfRklMVEVSKTtcbiAgfVxuXG4gIGxldCBhc3NldFBhdGggPSBcImh0dHBzOi8vZXhjYWxpZHJhdy5jb20vXCI7IC8vIEFzc2V0IHBhdGggbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZCBvbmx5IHdoZW4gdXNpbmcgcGFja2FnZVxuXG4gIGlmIChwcm9jZXNzLmVudi5WSVRFX0lTX0VYQ0FMSURSQVdfTlBNX1BBQ0tBR0UpIHtcbiAgICBhc3NldFBhdGggPSB3aW5kb3cuRVhDQUxJRFJBV19BU1NFVF9QQVRIIHx8IGBodHRwczovL3VucGtnLmNvbS8ke3Byb2Nlc3MuZW52LlZJVEVfUEtHX05BTUV9QCR7cHJvY2Vzcy5lbnYuUEtHX1ZFUlNJT059YDtcblxuICAgIGlmIChhc3NldFBhdGggPT09IG51bGwgfHwgYXNzZXRQYXRoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhc3NldFBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgIGFzc2V0UGF0aCA9IGFzc2V0UGF0aC5yZXBsYWNlKFwiL1wiLCBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS9gKTtcbiAgICB9XG5cbiAgICBhc3NldFBhdGggPSBgJHthc3NldFBhdGh9L2Rpc3QvZXhjYWxpZHJhdy1hc3NldHMvYDtcbiAgfVxuXG4gIGNvbnN0IG9mZnNldFggPSAtbWluWCArIGV4cG9ydFBhZGRpbmc7XG4gIGNvbnN0IG9mZnNldFkgPSAtbWluWSArIGV4cG9ydFBhZGRpbmc7XG4gIGNvbnN0IGZyYW1lRWxlbWVudHMgPSBnZXRGcmFtZUVsZW1lbnRzKGVsZW1lbnRzKTtcbiAgbGV0IGV4cG9ydGluZ0ZyYW1lQ2xpcFBhdGggPSBcIlwiO1xuXG4gIGZvciAoY29uc3QgZnJhbWUgb2YgZnJhbWVFbGVtZW50cykge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZnJhbWUpO1xuICAgIGNvbnN0IGN4ID0gKHgyIC0geDEpIC8gMiAtIChmcmFtZS54IC0geDEpO1xuICAgIGNvbnN0IGN5ID0gKHkyIC0geTEpIC8gMiAtIChmcmFtZS55IC0geTEpO1xuICAgIGV4cG9ydGluZ0ZyYW1lQ2xpcFBhdGggKz0gYDxjbGlwUGF0aCBpZD0ke2ZyYW1lLmlkfT5cbiAgICAgICAgICAgIDxyZWN0IHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgke2ZyYW1lLnggKyBvZmZzZXRYfSAke2ZyYW1lLnkgKyBvZmZzZXRZfSkgcm90YXRlKCR7ZnJhbWUuYW5nbGV9ICR7Y3h9ICR7Y3l9KVwiXG4gICAgICAgICAgd2lkdGg9XCIke2ZyYW1lLndpZHRofVwiXG4gICAgICAgICAgaGVpZ2h0PVwiJHtmcmFtZS5oZWlnaHR9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9yZWN0PlxuICAgICAgICA8L2NsaXBQYXRoPmA7XG4gIH1cblxuICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlIGNsYXNzPVwic3R5bGUtZm9udHNcIj5cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJWaXJnaWxcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1WaXJnaWwud29mZjJcIik7XG4gICAgICB9XG4gICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiQ2FzY2FkaWFcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1DYXNjYWRpYS53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJBc3Npc3RhbnRcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1Bc3Npc3RhbnQtUmVndWxhci53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICAgICR7ZXhwb3J0aW5nRnJhbWVDbGlwUGF0aH1cbiAgPC9kZWZzPlxuICBgOyAvLyByZW5kZXIgYmFja2dyb3VuZCByZWN0XG5cbiAgaWYgKGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQgJiYgdmlld0JhY2tncm91bmRDb2xvcikge1xuICAgIGNvbnN0IHJlY3QgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJyZWN0XCIpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwieFwiLCBcIjBcIik7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ5XCIsIFwiMFwiKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgdmlld0JhY2tncm91bmRDb2xvcik7XG4gICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChyZWN0KTtcbiAgfVxuXG4gIGNvbnN0IHJzdmcgPSByb3VnaC5zdmcoc3ZnUm9vdCk7XG4gIHJlbmRlclNjZW5lVG9TdmcoZWxlbWVudHNGb3JSZW5kZXIsIHJzdmcsIHN2Z1Jvb3QsIGZpbGVzIHx8IHt9LCB7XG4gICAgb2Zmc2V0WCxcbiAgICBvZmZzZXRZLFxuICAgIGV4cG9ydFdpdGhEYXJrTW9kZSxcbiAgICByZW5kZXJFbWJlZGRhYmxlczogKF9kID0gb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLnJlbmRlckVtYmVkZGFibGVzKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiBmYWxzZSxcbiAgICBmcmFtZVJlbmRlcmluZ1xuICB9KTtcbiAgdGVtcFNjZW5lLmRlc3Ryb3koKTtcbiAgcmV0dXJuIHN2Z1Jvb3Q7XG59KTsgLy8gY2FsY3VsYXRlIHNtYWxsZXN0IGFyZWEgdG8gZml0IHRoZSBjb250ZW50cyBpblxuXG5jb25zdCBnZXRDYW52YXNTaXplID0gKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKSA9PiB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldENvbW1vbkJvdW5kcyhlbGVtZW50cyk7XG4gIGNvbnN0IHdpZHRoID0gZGlzdGFuY2UobWluWCwgbWF4WCkgKyBleHBvcnRQYWRkaW5nICogMjtcbiAgY29uc3QgaGVpZ2h0ID0gZGlzdGFuY2UobWluWSwgbWF4WSkgKyBleHBvcnRQYWRkaW5nICogMjtcbiAgcmV0dXJuIFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFeHBvcnRTaXplID0gKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nLCBzY2FsZSkgPT4ge1xuICBjb25zdCBbLCwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKS5tYXAoZGltZW5zaW9uID0+IE1hdGgudHJ1bmMoZGltZW5zaW9uICogc2NhbGUpKTtcbiAgcmV0dXJuIFt3aWR0aCwgaGVpZ2h0XTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../scene/export.ts\n");
4524
4524
 
4525
4525
  /***/ }),
4526
4526
 
@@ -5693,7 +5693,7 @@ module.exports = JSON.parse('{"ar-SA":99,"az-AZ":18,"bg-BG":75,"bn-BD":55,"ca-ES
5693
5693
  /******/ // This function allow to reference async chunks
5694
5694
  /******/ __webpack_require__.u = (chunkId) => {
5695
5695
  /******/ // return url for filenames based on template
5696
- /******/ return "excalidraw-assets-dev/" + chunkId + "-" + {"locales/ar-SA-json":"f35c4f87e6e2dcf7c20a","locales/az-AZ-json":"5d70eb8bf3f20abc3bac","locales/bg-BG-json":"88cced5fd8a6d8298501","locales/bn-BD-json":"a06588c61947851c8579","locales/ca-ES-json":"9b25933a25836cc0be23","locales/cs-CZ-json":"1d6c97ea271d017058c9","locales/da-DK-json":"34a60c9843cecd71376f","locales/de-DE-json":"d13450595b795867412b","locales/el-GR-json":"c854b199f3ac07d40294","locales/es-ES-json":"6a667bfbf4ff3d0181a7","locales/eu-ES-json":"3ec11367a80491b09056","locales/fa-IR-json":"e459964936177074abe7","locales/fi-FI-json":"f7839bb6f5ad0a3c7e0d","locales/fr-FR-json":"20e8535e2675a6736c81","locales/gl-ES-json":"861f534b46c0db1fa8db","locales/he-IL-json":"504d78736487793ffccd","locales/hi-IN-json":"82d988431011c330242a","locales/hu-HU-json":"d4150250980011726fd9","locales/id-ID-json":"82e300d4fe1e87adba9b","locales/it-IT-json":"6ecc9aec005faab90f41","locales/ja-JP-json":"3c6a065f0f1303b297fa","locales/kaa-json":"983a9ccc652aa01980f3","locales/kab-KAB-json":"cac3cf66f1db5c1a6e19","locales/kk-KZ-json":"e9dd81c22419efd44478","locales/km-KH-json":"be77acee611d96d88dda","locales/ko-KR-json":"ad8e9d31d52b26f3fbc2","locales/ku-TR-json":"ed67af91ae1920f114a8","locales/lt-LT-json":"2c3d35d6fb5dbf95a27e","locales/lv-LV-json":"fa8973c231afb2ddafe9","locales/mr-IN-json":"2949146743072eb11b40","locales/my-MM-json":"4c04ffe415641f69ed75","locales/nb-NO-json":"b8d7a5b70562dacdad45","locales/nl-NL-json":"a65f82a25fe038c45d35","locales/nn-NO-json":"858fbccbc5be386977db","locales/oc-FR-json":"a68ea08272c8da3c0e3f","locales/pa-IN-json":"90a2b3775bd7d8983def","locales/pl-PL-json":"9bb55330d5aaf336646e","locales/pt-BR-json":"3635e753c1b6e5b681fa","locales/pt-PT-json":"0d3694a92e0134549086","locales/ro-RO-json":"e83fda16c860c6d0b383","locales/ru-RU-json":"ddc13261ce5d864d36a9","locales/si-LK-json":"16eb66dbfc6c55fc85b1","locales/sk-SK-json":"782ead8707f2ad0e8e4e","locales/sl-SI-json":"82e55cf7cdbdc7d7f959","locales/sv-SE-json":"2f362899d3ac4089534f","locales/ta-IN-json":"07623a485202da63a84b","locales/th-TH-json":"4e4b97f5f6e905191383","locales/tr-TR-json":"003be1cf6ebf0b787dec","locales/uk-UA-json":"ca6ea1156db2649d3e27","locales/vi-VN-json":"9a5e5fab41a1a120a916","locales/zh-CN-json":"670c28a6ae1e3ddecaa4","locales/zh-HK-json":"93b9b676d4f4b5702797","locales/zh-TW-json":"805d10b0eed9ca51b318","vendor":"d4c6c37cb71cd8cde431"}[chunkId] + ".js";
5696
+ /******/ return "excalidraw-assets-dev/" + chunkId + "-" + {"locales/ar-SA-json":"f35c4f87e6e2dcf7c20a","locales/az-AZ-json":"5d70eb8bf3f20abc3bac","locales/bg-BG-json":"88cced5fd8a6d8298501","locales/bn-BD-json":"a06588c61947851c8579","locales/ca-ES-json":"9b25933a25836cc0be23","locales/cs-CZ-json":"1d6c97ea271d017058c9","locales/da-DK-json":"34a60c9843cecd71376f","locales/de-DE-json":"d13450595b795867412b","locales/el-GR-json":"c854b199f3ac07d40294","locales/es-ES-json":"6a667bfbf4ff3d0181a7","locales/eu-ES-json":"3ec11367a80491b09056","locales/fa-IR-json":"e459964936177074abe7","locales/fi-FI-json":"f7839bb6f5ad0a3c7e0d","locales/fr-FR-json":"20e8535e2675a6736c81","locales/gl-ES-json":"861f534b46c0db1fa8db","locales/he-IL-json":"504d78736487793ffccd","locales/hi-IN-json":"82d988431011c330242a","locales/hu-HU-json":"d4150250980011726fd9","locales/id-ID-json":"82e300d4fe1e87adba9b","locales/it-IT-json":"6ecc9aec005faab90f41","locales/ja-JP-json":"3c6a065f0f1303b297fa","locales/kaa-json":"983a9ccc652aa01980f3","locales/kab-KAB-json":"cac3cf66f1db5c1a6e19","locales/kk-KZ-json":"e9dd81c22419efd44478","locales/km-KH-json":"be77acee611d96d88dda","locales/ko-KR-json":"ad8e9d31d52b26f3fbc2","locales/ku-TR-json":"ed67af91ae1920f114a8","locales/lt-LT-json":"2c3d35d6fb5dbf95a27e","locales/lv-LV-json":"fa8973c231afb2ddafe9","locales/mr-IN-json":"2949146743072eb11b40","locales/my-MM-json":"4c04ffe415641f69ed75","locales/nb-NO-json":"b8d7a5b70562dacdad45","locales/nl-NL-json":"a65f82a25fe038c45d35","locales/nn-NO-json":"858fbccbc5be386977db","locales/oc-FR-json":"a68ea08272c8da3c0e3f","locales/pa-IN-json":"90a2b3775bd7d8983def","locales/pl-PL-json":"9bb55330d5aaf336646e","locales/pt-BR-json":"3635e753c1b6e5b681fa","locales/pt-PT-json":"0d3694a92e0134549086","locales/ro-RO-json":"e83fda16c860c6d0b383","locales/ru-RU-json":"ddc13261ce5d864d36a9","locales/si-LK-json":"16eb66dbfc6c55fc85b1","locales/sk-SK-json":"782ead8707f2ad0e8e4e","locales/sl-SI-json":"82e55cf7cdbdc7d7f959","locales/sv-SE-json":"2f362899d3ac4089534f","locales/ta-IN-json":"07623a485202da63a84b","locales/th-TH-json":"4e4b97f5f6e905191383","locales/tr-TR-json":"003be1cf6ebf0b787dec","locales/uk-UA-json":"ca6ea1156db2649d3e27","locales/vi-VN-json":"9a5e5fab41a1a120a916","locales/zh-CN-json":"670c28a6ae1e3ddecaa4","locales/zh-HK-json":"93b9b676d4f4b5702797","locales/zh-TW-json":"805d10b0eed9ca51b318","vendor":"1e45dd9aba63a718dcee"}[chunkId] + ".js";
5697
5697
  /******/ };
5698
5698
  /******/ })();
5699
5699
  /******/