limitng 0.16.0 → 0.16.2

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 (358) hide show
  1. package/alt-buyuk-kart/alt-buyuk-kart.component.d.ts +25 -25
  2. package/alt-buyuk-kart/index.d.ts +5 -5
  3. package/alt-buyuk-kart/public_api.d.ts +1 -1
  4. package/alt-kucuk-kart/alt-kucuk-kart.component.d.ts +26 -26
  5. package/alt-kucuk-kart/index.d.ts +5 -5
  6. package/alt-kucuk-kart/public_api.d.ts +1 -1
  7. package/api/globalFunctions.d.ts +45 -45
  8. package/api/index.d.ts +5 -5
  9. package/api/models/enums.d.ts +133 -133
  10. package/api/models/faturalama/faturaFiltre.d.ts +58 -58
  11. package/api/models/fourDConstants.d.ts +85 -84
  12. package/api/models/fourDConstants.d.ts.map +1 -1
  13. package/api/models/index.d.ts +5 -5
  14. package/api/models/kisisel/izin-islemleri/izinDetaylari.d.ts +24 -24
  15. package/api/models/kisisel/izin-islemleri/izinFiltre.d.ts +13 -13
  16. package/api/models/kisisel/izin-islemleri/izinGuncelle.d.ts +11 -11
  17. package/api/models/kisisel/izin-islemleri/izinListe.d.ts +28 -28
  18. package/api/models/kisisel/izin-islemleri/izinSilAlanlar.d.ts +4 -4
  19. package/api/models/kisisel/kullanici-onay-islemleri/onayDetaylari.d.ts +82 -82
  20. package/api/models/kisisel/kullanici-onay-islemleri/onayFiltre.d.ts +40 -40
  21. package/api/models/kisisel/kullanici-onay-islemleri/onayGuncelle.d.ts +7 -7
  22. package/api/models/kisisel/kullanici-onay-islemleri/onayListe.d.ts +31 -31
  23. package/api/models/kisisel/masraf-islemleri/masrafDetaylari.d.ts +57 -57
  24. package/api/models/kisisel/masraf-islemleri/masrafFiltre.d.ts +16 -16
  25. package/api/models/kisisel/masraf-islemleri/masrafGuncelle.d.ts +12 -12
  26. package/api/models/kisisel/masraf-islemleri/masrafListe.d.ts +82 -82
  27. package/api/models/kisisel/masraf-islemleri/masrafSilAlanlar.d.ts +4 -4
  28. package/api/models/logbook/logbook.d.ts +103 -103
  29. package/api/models/login/login.d.ts +22 -22
  30. package/api/models/onayBilgi.d.ts +8 -8
  31. package/api/models/onaya-gonder-sorgu/onayaGonderDetaylar.d.ts +66 -66
  32. package/api/models/ortak.d.ts +111 -111
  33. package/api/models/ozet/OzetKartAlan.d.ts +15 -15
  34. package/api/models/ozet/ozetData.d.ts +21 -21
  35. package/api/models/planlama/kampanya/kampanyaFiltre.d.ts +16 -16
  36. package/api/models/planlama/tarife/tarifeFiltre.d.ts +19 -19
  37. package/api/models/public_api.d.ts +53 -53
  38. package/api/models/raporlar/izin-raporu/izinRaporDetaylari.d.ts +14 -14
  39. package/api/models/raporlar/izin-raporu/izinRaporListe.d.ts +16 -16
  40. package/api/models/raporlar/listeden-sec/listeSecenekler.d.ts +16 -16
  41. package/api/models/raporlar/rapor-detay/raporDetaylari.d.ts +52 -52
  42. package/api/models/raporlar/rapor-detay/raporSilGonderAlanlar.d.ts +8 -8
  43. package/api/models/raporlar/rapor-zamanlama/zamanlamaAyarlari.d.ts +45 -45
  44. package/api/models/sistem-ozet/sistemOzetData.d.ts +143 -143
  45. package/api/models/sistem-raporlari/sistemRaporlariData.d.ts +10 -10
  46. package/api/models/tanimlama/mecra/mecraFiltre.d.ts +23 -23
  47. package/api/models/tanimlama/musteri/musteriFiltre.d.ts +20 -20
  48. package/api/models/tanimlama/musteri-grubu/musteriGrubuFiltre.d.ts +10 -10
  49. package/api/models/tanimlama/pazarlama-sirketi/pazarlamaSirketiFiltre.d.ts +20 -20
  50. package/api/models/tanimlama/urun/urunFiltre.d.ts +13 -13
  51. package/api/models/teklif-siparis/teklifDetaylari.d.ts +24 -24
  52. package/api/models/teklif-siparis/teklifFiltre.d.ts +13 -13
  53. package/api/models/teklif-siparis/teklifGuncelle.d.ts +11 -11
  54. package/api/models/teklif-siparis/teklifListe.d.ts +27 -27
  55. package/api/models/teklif-siparis/teklifSilAlanlar.d.ts +4 -4
  56. package/api/models/theme/bildirimler.d.ts +30 -30
  57. package/api/models/timeSheet/timeSheetGirisListeler.d.ts +324 -324
  58. package/api/models/timeSheet/timeSheetLog.d.ts +14 -14
  59. package/api/models/timeSheet/timeSheetOzetListe.d.ts +18 -18
  60. package/api/models/timeSheet/timeSheetSecenekler.d.ts +28 -28
  61. package/api/models/xlConfig.d.ts +195 -195
  62. package/api/models/xlConfig.d.ts.map +1 -1
  63. package/api/models/xlConstants.d.ts +59 -59
  64. package/api/models/xlOptions.d.ts +26 -26
  65. package/api/models/xlTools.d.ts +2 -2
  66. package/api/public_api.d.ts +1 -1
  67. package/dikey-baslikli-panel/dikey-baslikli-panel.component.d.ts +16 -16
  68. package/dikey-baslikli-panel/index.d.ts +5 -5
  69. package/dikey-baslikli-panel/public_api.d.ts +1 -1
  70. package/directives/buyukHarf.directive/buyukHarf.directive.d.ts +16 -16
  71. package/directives/buyukHarf.directive/index.d.ts +5 -5
  72. package/directives/buyukHarf.directive/public_api.d.ts +1 -1
  73. package/directives/ciftBoslukTek.directive/ciftBoslukTek.directive.d.ts +16 -16
  74. package/directives/ciftBoslukTek.directive/index.d.ts +5 -5
  75. package/directives/ciftBoslukTek.directive/public_api.d.ts +1 -1
  76. package/directives/disable.directive/disable.directive.d.ts +35 -35
  77. package/directives/disable.directive/index.d.ts +5 -5
  78. package/directives/disable.directive/public_api.d.ts +1 -1
  79. package/directives/flexBasis.directive/flexBasis.directive.d.ts +32 -32
  80. package/directives/flexBasis.directive/index.d.ts +5 -5
  81. package/directives/flexBasis.directive/public_api.d.ts +1 -1
  82. package/directives/ilkHarfBuyuk.directive/ilkHarfBuyuk.directive.d.ts +16 -16
  83. package/directives/ilkHarfBuyuk.directive/index.d.ts +5 -5
  84. package/directives/ilkHarfBuyuk.directive/public_api.d.ts +1 -1
  85. package/directives/index.d.ts +5 -5
  86. package/directives/maksimumUzunluk.directive/index.d.ts +5 -5
  87. package/directives/maksimumUzunluk.directive/maksimumUzunluk.directive.d.ts +17 -17
  88. package/directives/maksimumUzunluk.directive/public_api.d.ts +1 -1
  89. package/directives/public_api.d.ts +10 -10
  90. package/directives/sagSolBoslukSil.directive/index.d.ts +5 -5
  91. package/directives/sagSolBoslukSil.directive/public_api.d.ts +1 -1
  92. package/directives/sagSolBoslukSil.directive/sagSolBoslukSil.directive.d.ts +16 -16
  93. package/directives/sutunGenisligi.directive/index.d.ts +5 -5
  94. package/directives/sutunGenisligi.directive/public_api.d.ts +1 -1
  95. package/directives/sutunGenisligi.directive/sutunGenisligi.directive.d.ts +42 -42
  96. package/directives/tumBoslukSil.directive/index.d.ts +5 -5
  97. package/directives/tumBoslukSil.directive/public_api.d.ts +1 -1
  98. package/directives/tumBoslukSil.directive/tumBoslukSil.directive.d.ts +16 -16
  99. package/directives/tumIlkHarfBuyuk.directive/index.d.ts +5 -5
  100. package/directives/tumIlkHarfBuyuk.directive/public_api.d.ts +1 -1
  101. package/directives/tumIlkHarfBuyuk.directive/tumIlkHarfBuyuk.directive.d.ts +16 -16
  102. package/esm2022/alt-buyuk-kart/alt-buyuk-kart.component.mjs +60 -58
  103. package/esm2022/alt-buyuk-kart/limitng-alt-buyuk-kart.mjs +4 -4
  104. package/esm2022/alt-buyuk-kart/public_api.mjs +1 -1
  105. package/esm2022/alt-kucuk-kart/alt-kucuk-kart.component.mjs +60 -58
  106. package/esm2022/alt-kucuk-kart/limitng-alt-kucuk-kart.mjs +4 -4
  107. package/esm2022/alt-kucuk-kart/public_api.mjs +1 -1
  108. package/esm2022/api/globalFunctions.mjs +525 -525
  109. package/esm2022/api/limitng-api.mjs +4 -4
  110. package/esm2022/api/models/enums.mjs +143 -143
  111. package/esm2022/api/models/faturalama/faturaFiltre.mjs +60 -60
  112. package/esm2022/api/models/fourDConstants.mjs +90 -89
  113. package/esm2022/api/models/kisisel/izin-islemleri/izinDetaylari.mjs +15 -15
  114. package/esm2022/api/models/kisisel/izin-islemleri/izinFiltre.mjs +16 -16
  115. package/esm2022/api/models/kisisel/izin-islemleri/izinGuncelle.mjs +5 -5
  116. package/esm2022/api/models/kisisel/izin-islemleri/izinListe.mjs +25 -25
  117. package/esm2022/api/models/kisisel/izin-islemleri/izinSilAlanlar.mjs +6 -6
  118. package/esm2022/api/models/kisisel/kullanici-onay-islemleri/onayDetaylari.mjs +40 -40
  119. package/esm2022/api/models/kisisel/kullanici-onay-islemleri/onayFiltre.mjs +41 -41
  120. package/esm2022/api/models/kisisel/kullanici-onay-islemleri/onayGuncelle.mjs +9 -9
  121. package/esm2022/api/models/kisisel/kullanici-onay-islemleri/onayListe.mjs +34 -34
  122. package/esm2022/api/models/kisisel/masraf-islemleri/masrafDetaylari.mjs +53 -53
  123. package/esm2022/api/models/kisisel/masraf-islemleri/masrafFiltre.mjs +19 -19
  124. package/esm2022/api/models/kisisel/masraf-islemleri/masrafGuncelle.mjs +5 -5
  125. package/esm2022/api/models/kisisel/masraf-islemleri/masrafListe.mjs +40 -40
  126. package/esm2022/api/models/kisisel/masraf-islemleri/masrafSilAlanlar.mjs +6 -6
  127. package/esm2022/api/models/limitng-api-models.mjs +4 -4
  128. package/esm2022/api/models/logbook/logbook.mjs +110 -110
  129. package/esm2022/api/models/login/login.mjs +10 -10
  130. package/esm2022/api/models/onayBilgi.mjs +8 -8
  131. package/esm2022/api/models/onaya-gonder-sorgu/onayaGonderDetaylar.mjs +55 -55
  132. package/esm2022/api/models/ortak.mjs +83 -83
  133. package/esm2022/api/models/ozet/OzetKartAlan.mjs +1 -1
  134. package/esm2022/api/models/ozet/ozetData.mjs +1 -1
  135. package/esm2022/api/models/planlama/kampanya/kampanyaFiltre.mjs +19 -19
  136. package/esm2022/api/models/planlama/tarife/tarifeFiltre.mjs +22 -22
  137. package/esm2022/api/models/public_api.mjs +65 -65
  138. package/esm2022/api/models/raporlar/izin-raporu/izinRaporDetaylari.mjs +7 -7
  139. package/esm2022/api/models/raporlar/izin-raporu/izinRaporListe.mjs +18 -18
  140. package/esm2022/api/models/raporlar/listeden-sec/listeSecenekler.mjs +18 -18
  141. package/esm2022/api/models/raporlar/rapor-detay/raporDetaylari.mjs +62 -62
  142. package/esm2022/api/models/raporlar/rapor-detay/raporSilGonderAlanlar.mjs +6 -6
  143. package/esm2022/api/models/raporlar/rapor-zamanlama/zamanlamaAyarlari.mjs +46 -46
  144. package/esm2022/api/models/sistem-ozet/sistemOzetData.mjs +171 -171
  145. package/esm2022/api/models/sistem-raporlari/sistemRaporlariData.mjs +7 -7
  146. package/esm2022/api/models/tanimlama/mecra/mecraFiltre.mjs +23 -23
  147. package/esm2022/api/models/tanimlama/musteri/musteriFiltre.mjs +23 -23
  148. package/esm2022/api/models/tanimlama/musteri-grubu/musteriGrubuFiltre.mjs +13 -13
  149. package/esm2022/api/models/tanimlama/pazarlama-sirketi/pazarlamaSirketiFiltre.mjs +21 -21
  150. package/esm2022/api/models/tanimlama/urun/urunFiltre.mjs +16 -16
  151. package/esm2022/api/models/teklif-siparis/teklifDetaylari.mjs +15 -15
  152. package/esm2022/api/models/teklif-siparis/teklifFiltre.mjs +16 -16
  153. package/esm2022/api/models/teklif-siparis/teklifGuncelle.mjs +5 -5
  154. package/esm2022/api/models/teklif-siparis/teklifListe.mjs +27 -27
  155. package/esm2022/api/models/teklif-siparis/teklifSilAlanlar.mjs +6 -6
  156. package/esm2022/api/models/theme/bildirimler.mjs +38 -38
  157. package/esm2022/api/models/timeSheet/timeSheetGirisListeler.mjs +304 -304
  158. package/esm2022/api/models/timeSheet/timeSheetLog.mjs +13 -13
  159. package/esm2022/api/models/timeSheet/timeSheetOzetListe.mjs +21 -21
  160. package/esm2022/api/models/timeSheet/timeSheetSecenekler.mjs +29 -29
  161. package/esm2022/api/models/xlConfig.mjs +437 -437
  162. package/esm2022/api/models/xlConstants.mjs +65 -65
  163. package/esm2022/api/models/xlOptions.mjs +33 -33
  164. package/esm2022/api/models/xlTools.mjs +2 -2
  165. package/esm2022/api/public_api.mjs +1 -1
  166. package/esm2022/dikey-baslikli-panel/dikey-baslikli-panel.component.mjs +41 -39
  167. package/esm2022/dikey-baslikli-panel/limitng-dikey-baslikli-panel.mjs +4 -4
  168. package/esm2022/dikey-baslikli-panel/public_api.mjs +1 -1
  169. package/esm2022/directives/buyukHarf.directive/buyukHarf.directive.mjs +42 -40
  170. package/esm2022/directives/buyukHarf.directive/limitng-directives-buyukHarf.directive.mjs +4 -4
  171. package/esm2022/directives/buyukHarf.directive/public_api.mjs +1 -1
  172. package/esm2022/directives/ciftBoslukTek.directive/ciftBoslukTek.directive.mjs +43 -41
  173. package/esm2022/directives/ciftBoslukTek.directive/limitng-directives-ciftBoslukTek.directive.mjs +4 -4
  174. package/esm2022/directives/ciftBoslukTek.directive/public_api.mjs +1 -1
  175. package/esm2022/directives/disable.directive/disable.directive.mjs +157 -155
  176. package/esm2022/directives/disable.directive/limitng-directives-disable.directive.mjs +4 -4
  177. package/esm2022/directives/disable.directive/public_api.mjs +1 -1
  178. package/esm2022/directives/flexBasis.directive/flexBasis.directive.mjs +78 -74
  179. package/esm2022/directives/flexBasis.directive/limitng-directives-flexBasis.directive.mjs +4 -4
  180. package/esm2022/directives/flexBasis.directive/public_api.mjs +1 -1
  181. package/esm2022/directives/ilkHarfBuyuk.directive/ilkHarfBuyuk.directive.mjs +43 -41
  182. package/esm2022/directives/ilkHarfBuyuk.directive/limitng-directives-ilkHarfBuyuk.directive.mjs +4 -4
  183. package/esm2022/directives/ilkHarfBuyuk.directive/public_api.mjs +1 -1
  184. package/esm2022/directives/limitng-directives.mjs +4 -4
  185. package/esm2022/directives/maksimumUzunluk.directive/limitng-directives-maksimumUzunluk.directive.mjs +4 -4
  186. package/esm2022/directives/maksimumUzunluk.directive/maksimumUzunluk.directive.mjs +48 -46
  187. package/esm2022/directives/maksimumUzunluk.directive/public_api.mjs +1 -1
  188. package/esm2022/directives/public_api.mjs +10 -10
  189. package/esm2022/directives/sagSolBoslukSil.directive/limitng-directives-sagSolBoslukSil.directive.mjs +4 -4
  190. package/esm2022/directives/sagSolBoslukSil.directive/public_api.mjs +1 -1
  191. package/esm2022/directives/sagSolBoslukSil.directive/sagSolBoslukSil.directive.mjs +42 -40
  192. package/esm2022/directives/sutunGenisligi.directive/limitng-directives-sutunGenisligi.directive.mjs +4 -4
  193. package/esm2022/directives/sutunGenisligi.directive/public_api.mjs +1 -1
  194. package/esm2022/directives/sutunGenisligi.directive/sutunGenisligi.directive.mjs +112 -107
  195. package/esm2022/directives/tumBoslukSil.directive/limitng-directives-tumBoslukSil.directive.mjs +4 -4
  196. package/esm2022/directives/tumBoslukSil.directive/public_api.mjs +1 -1
  197. package/esm2022/directives/tumBoslukSil.directive/tumBoslukSil.directive.mjs +43 -41
  198. package/esm2022/directives/tumIlkHarfBuyuk.directive/limitng-directives-tumIlkHarfBuyuk.directive.mjs +4 -4
  199. package/esm2022/directives/tumIlkHarfBuyuk.directive/public_api.mjs +1 -1
  200. package/esm2022/directives/tumIlkHarfBuyuk.directive/tumIlkHarfBuyuk.directive.mjs +44 -42
  201. package/esm2022/filtre-bar/filtre-bar.component.mjs +128 -126
  202. package/esm2022/filtre-bar/limitng-filtre-bar.mjs +4 -4
  203. package/esm2022/filtre-bar/public_api.mjs +1 -1
  204. package/esm2022/geri-ileri-detay/geri-ileri-detay.component.mjs +57 -56
  205. package/esm2022/geri-ileri-detay/geri-ileri-detay.model.mjs +161 -161
  206. package/esm2022/geri-ileri-detay/limitng-geri-ileri-detay.mjs +4 -4
  207. package/esm2022/geri-ileri-detay/public_api.mjs +2 -2
  208. package/esm2022/geri-ileri-liste/geri-ileri-liste.component.mjs +62 -61
  209. package/esm2022/geri-ileri-liste/geri-ileri-liste.model.mjs +200 -200
  210. package/esm2022/geri-ileri-liste/limitng-geri-ileri-liste.mjs +4 -4
  211. package/esm2022/geri-ileri-liste/public_api.mjs +2 -2
  212. package/esm2022/limitng.mjs +4 -4
  213. package/esm2022/pipes/boolToPlus.pipe/boolToPlus.pipe.mjs +31 -29
  214. package/esm2022/pipes/boolToPlus.pipe/limitng-pipes-boolToPlus.pipe.mjs +4 -4
  215. package/esm2022/pipes/boolToPlus.pipe/public_api.mjs +1 -1
  216. package/esm2022/pipes/boolToPlusMinus.pipe/boolToPlusMinus.pipe.mjs +31 -29
  217. package/esm2022/pipes/boolToPlusMinus.pipe/limitng-pipes-boolToPlusMinus.pipe.mjs +4 -4
  218. package/esm2022/pipes/boolToPlusMinus.pipe/public_api.mjs +1 -1
  219. package/esm2022/pipes/dateToText.pipe/dateToText.pipe.mjs +32 -30
  220. package/esm2022/pipes/dateToText.pipe/limitng-pipes-dateToText.pipe.mjs +4 -4
  221. package/esm2022/pipes/dateToText.pipe/public_api.mjs +1 -1
  222. package/esm2022/pipes/evetHayir.pipe/evetHayir.pipe.mjs +31 -29
  223. package/esm2022/pipes/evetHayir.pipe/limitng-pipes-evetHayir.pipe.mjs +4 -4
  224. package/esm2022/pipes/evetHayir.pipe/public_api.mjs +1 -1
  225. package/esm2022/pipes/limitng-pipes.mjs +4 -4
  226. package/esm2022/pipes/mecraTuru.pipe/limitng-pipes-mecraTuru.pipe.mjs +4 -4
  227. package/esm2022/pipes/mecraTuru.pipe/mecraTuru.pipe.mjs +32 -30
  228. package/esm2022/pipes/mecraTuru.pipe/public_api.mjs +1 -1
  229. package/esm2022/pipes/public_api.mjs +5 -5
  230. package/esm2022/pipes/safe.pipe/limitng-pipes-safe.pipe.mjs +4 -4
  231. package/esm2022/pipes/safe.pipe/public_api.mjs +1 -1
  232. package/esm2022/pipes/safe.pipe/safe.pipe.mjs +42 -40
  233. package/esm2022/public_api.mjs +6 -6
  234. package/esm2022/rapor-kart/limitng-rapor-kart.mjs +4 -4
  235. package/esm2022/rapor-kart/models/limitng-rapor-kart-models.mjs +4 -4
  236. package/esm2022/rapor-kart/models/public_api.mjs +1 -1
  237. package/esm2022/rapor-kart/models/rapor-kart-secenekler.mjs +9 -9
  238. package/esm2022/rapor-kart/public_api.mjs +1 -1
  239. package/esm2022/rapor-kart/rapor-kart.component.mjs +66 -64
  240. package/esm2022/sol-buyuk-kart/limitng-sol-buyuk-kart.mjs +4 -4
  241. package/esm2022/sol-buyuk-kart/public_api.mjs +1 -1
  242. package/esm2022/sol-buyuk-kart/sol-buyuk-kart.component.mjs +55 -53
  243. package/esm2022/sol-kucuk-kart/limitng-sol-kucuk-kart.mjs +4 -4
  244. package/esm2022/sol-kucuk-kart/public_api.mjs +1 -1
  245. package/esm2022/sol-kucuk-kart/sol-kucuk-kart.component.mjs +48 -46
  246. package/esm2022/yatay-baslikli-panel/limitng-yatay-baslikli-panel.mjs +4 -4
  247. package/esm2022/yatay-baslikli-panel/public_api.mjs +1 -1
  248. package/esm2022/yatay-baslikli-panel/yatay-baslikli-panel.component.mjs +78 -76
  249. package/fesm2022/limitng-alt-buyuk-kart.mjs +54 -54
  250. package/fesm2022/limitng-alt-buyuk-kart.mjs.map +1 -1
  251. package/fesm2022/limitng-alt-kucuk-kart.mjs +54 -54
  252. package/fesm2022/limitng-alt-kucuk-kart.mjs.map +1 -1
  253. package/fesm2022/limitng-api-models.mjs +2284 -2283
  254. package/fesm2022/limitng-api-models.mjs.map +1 -1
  255. package/fesm2022/limitng-api.mjs +666 -666
  256. package/fesm2022/limitng-dikey-baslikli-panel.mjs +36 -36
  257. package/fesm2022/limitng-dikey-baslikli-panel.mjs.map +1 -1
  258. package/fesm2022/limitng-directives-buyukHarf.directive.mjs +37 -37
  259. package/fesm2022/limitng-directives-buyukHarf.directive.mjs.map +1 -1
  260. package/fesm2022/limitng-directives-ciftBoslukTek.directive.mjs +37 -37
  261. package/fesm2022/limitng-directives-ciftBoslukTek.directive.mjs.map +1 -1
  262. package/fesm2022/limitng-directives-disable.directive.mjs +145 -145
  263. package/fesm2022/limitng-directives-disable.directive.mjs.map +1 -1
  264. package/fesm2022/limitng-directives-flexBasis.directive.mjs +71 -71
  265. package/fesm2022/limitng-directives-flexBasis.directive.mjs.map +1 -1
  266. package/fesm2022/limitng-directives-ilkHarfBuyuk.directive.mjs +37 -37
  267. package/fesm2022/limitng-directives-ilkHarfBuyuk.directive.mjs.map +1 -1
  268. package/fesm2022/limitng-directives-maksimumUzunluk.directive.mjs +43 -43
  269. package/fesm2022/limitng-directives-maksimumUzunluk.directive.mjs.map +1 -1
  270. package/fesm2022/limitng-directives-sagSolBoslukSil.directive.mjs +37 -37
  271. package/fesm2022/limitng-directives-sagSolBoslukSil.directive.mjs.map +1 -1
  272. package/fesm2022/limitng-directives-sutunGenisligi.directive.mjs +104 -104
  273. package/fesm2022/limitng-directives-sutunGenisligi.directive.mjs.map +1 -1
  274. package/fesm2022/limitng-directives-tumBoslukSil.directive.mjs +37 -37
  275. package/fesm2022/limitng-directives-tumBoslukSil.directive.mjs.map +1 -1
  276. package/fesm2022/limitng-directives-tumIlkHarfBuyuk.directive.mjs +38 -38
  277. package/fesm2022/limitng-directives-tumIlkHarfBuyuk.directive.mjs.map +1 -1
  278. package/fesm2022/limitng-directives.mjs +568 -568
  279. package/fesm2022/limitng-directives.mjs.map +1 -1
  280. package/fesm2022/limitng-filtre-bar.mjs +121 -121
  281. package/fesm2022/limitng-filtre-bar.mjs.map +1 -1
  282. package/fesm2022/limitng-geri-ileri-detay.mjs +202 -203
  283. package/fesm2022/limitng-geri-ileri-detay.mjs.map +1 -1
  284. package/fesm2022/limitng-geri-ileri-liste.mjs +246 -247
  285. package/fesm2022/limitng-geri-ileri-liste.mjs.map +1 -1
  286. package/fesm2022/limitng-pipes-boolToPlus.pipe.mjs +27 -27
  287. package/fesm2022/limitng-pipes-boolToPlus.pipe.mjs.map +1 -1
  288. package/fesm2022/limitng-pipes-boolToPlusMinus.pipe.mjs +27 -27
  289. package/fesm2022/limitng-pipes-boolToPlusMinus.pipe.mjs.map +1 -1
  290. package/fesm2022/limitng-pipes-dateToText.pipe.mjs +27 -27
  291. package/fesm2022/limitng-pipes-dateToText.pipe.mjs.map +1 -1
  292. package/fesm2022/limitng-pipes-evetHayir.pipe.mjs +27 -27
  293. package/fesm2022/limitng-pipes-evetHayir.pipe.mjs.map +1 -1
  294. package/fesm2022/limitng-pipes-mecraTuru.pipe.mjs +27 -27
  295. package/fesm2022/limitng-pipes-mecraTuru.pipe.mjs.map +1 -1
  296. package/fesm2022/limitng-pipes-safe.pipe.mjs +37 -37
  297. package/fesm2022/limitng-pipes-safe.pipe.mjs.map +1 -1
  298. package/fesm2022/limitng-pipes.mjs +137 -137
  299. package/fesm2022/limitng-pipes.mjs.map +1 -1
  300. package/fesm2022/limitng-rapor-kart-models.mjs +10 -10
  301. package/fesm2022/limitng-rapor-kart.mjs +60 -60
  302. package/fesm2022/limitng-rapor-kart.mjs.map +1 -1
  303. package/fesm2022/limitng-sol-buyuk-kart.mjs +48 -48
  304. package/fesm2022/limitng-sol-buyuk-kart.mjs.map +1 -1
  305. package/fesm2022/limitng-sol-kucuk-kart.mjs +42 -42
  306. package/fesm2022/limitng-sol-kucuk-kart.mjs.map +1 -1
  307. package/fesm2022/limitng-yatay-baslikli-panel.mjs +70 -70
  308. package/fesm2022/limitng-yatay-baslikli-panel.mjs.map +1 -1
  309. package/fesm2022/limitng.mjs +2 -2
  310. package/filtre-bar/filtre-bar.component.d.ts +35 -35
  311. package/filtre-bar/index.d.ts +5 -5
  312. package/filtre-bar/public_api.d.ts +1 -1
  313. package/geri-ileri-detay/geri-ileri-detay.component.d.ts +24 -24
  314. package/geri-ileri-detay/geri-ileri-detay.model.d.ts +45 -45
  315. package/geri-ileri-detay/index.d.ts +5 -5
  316. package/geri-ileri-detay/public_api.d.ts +2 -2
  317. package/geri-ileri-liste/geri-ileri-liste.component.d.ts +26 -26
  318. package/geri-ileri-liste/geri-ileri-liste.model.d.ts +50 -50
  319. package/geri-ileri-liste/index.d.ts +5 -5
  320. package/geri-ileri-liste/public_api.d.ts +2 -2
  321. package/index.d.ts +5 -5
  322. package/package.json +37 -37
  323. package/pipes/boolToPlus.pipe/boolToPlus.pipe.d.ts +12 -12
  324. package/pipes/boolToPlus.pipe/index.d.ts +5 -5
  325. package/pipes/boolToPlus.pipe/public_api.d.ts +1 -1
  326. package/pipes/boolToPlusMinus.pipe/boolToPlusMinus.pipe.d.ts +12 -12
  327. package/pipes/boolToPlusMinus.pipe/index.d.ts +5 -5
  328. package/pipes/boolToPlusMinus.pipe/public_api.d.ts +1 -1
  329. package/pipes/dateToText.pipe/dateToText.pipe.d.ts +12 -12
  330. package/pipes/dateToText.pipe/index.d.ts +5 -5
  331. package/pipes/dateToText.pipe/public_api.d.ts +1 -1
  332. package/pipes/evetHayir.pipe/evetHayir.pipe.d.ts +12 -12
  333. package/pipes/evetHayir.pipe/index.d.ts +5 -5
  334. package/pipes/evetHayir.pipe/public_api.d.ts +1 -1
  335. package/pipes/index.d.ts +5 -5
  336. package/pipes/mecraTuru.pipe/index.d.ts +5 -5
  337. package/pipes/mecraTuru.pipe/mecraTuru.pipe.d.ts +12 -12
  338. package/pipes/mecraTuru.pipe/public_api.d.ts +1 -1
  339. package/pipes/public_api.d.ts +5 -5
  340. package/pipes/safe.pipe/index.d.ts +5 -5
  341. package/pipes/safe.pipe/public_api.d.ts +1 -1
  342. package/pipes/safe.pipe/safe.pipe.d.ts +15 -15
  343. package/public_api.d.ts +6 -6
  344. package/rapor-kart/index.d.ts +5 -5
  345. package/rapor-kart/models/index.d.ts +5 -5
  346. package/rapor-kart/models/public_api.d.ts +1 -1
  347. package/rapor-kart/models/rapor-kart-secenekler.d.ts +7 -7
  348. package/rapor-kart/public_api.d.ts +1 -1
  349. package/rapor-kart/rapor-kart.component.d.ts +29 -29
  350. package/sol-buyuk-kart/index.d.ts +5 -5
  351. package/sol-buyuk-kart/public_api.d.ts +1 -1
  352. package/sol-buyuk-kart/sol-buyuk-kart.component.d.ts +24 -24
  353. package/sol-kucuk-kart/index.d.ts +5 -5
  354. package/sol-kucuk-kart/public_api.d.ts +1 -1
  355. package/sol-kucuk-kart/sol-kucuk-kart.component.d.ts +19 -19
  356. package/yatay-baslikli-panel/index.d.ts +5 -5
  357. package/yatay-baslikli-panel/public_api.d.ts +1 -1
  358. package/yatay-baslikli-panel/yatay-baslikli-panel.component.d.ts +28 -28
@@ -1,437 +1,437 @@
1
- import { FontStyle, NumberFormatlar, VariableType, XLRenk } from './fourDConstants';
2
- import { XlBorderWeigh, XLFuncs, XLHAlign, XLLineStyle, XlVAlign } from './xlConstants';
3
- export class XLConfig {
4
- constructor(fontName, fontSize) {
5
- this.logo = new XLLogo();
6
- this.defaultFont = new XLFont();
7
- this.currentTableStyle = 'TableStyleLight10';
8
- this.currentTable = 1;
9
- this.currentApplicationObject = 'xlApp';
10
- this.currentBookObject = 'xlBook';
11
- this.currentSheetObject = 'xlSheet';
12
- this.author = 'MedPlan';
13
- this.sifirlariBasma = false;
14
- this.sheetName = '';
15
- this.ustBilgiler = [];
16
- this.ustBilgi = new XLUstBilgi();
17
- this.notlar = [];
18
- this.scripts = [];
19
- this.not = new XLNot();
20
- this.tables = [];
21
- this.sheets = [new XLSheet(1)];
22
- if ((typeof fontName !== 'undefined') || (typeof fontSize !== 'undefined')) {
23
- this.defaultFont = new XLFont(fontName, fontSize);
24
- }
25
- const table = this.addTable();
26
- table.tableNo = this.tables.length + 1;
27
- this.tables.push(table);
28
- }
29
- ustBilgiSatirEkle(satir) {
30
- const ustBilgi = new XLUstBilgiSatir();
31
- ustBilgi.rowNo = this.ustBilgiler.length + 1;
32
- ustBilgi.ustBilgi = satir;
33
- this.ustBilgiler.push(ustBilgi);
34
- }
35
- addTable() {
36
- const table = new XLTable();
37
- table.sol = 1;
38
- table.ust = 1;
39
- table.header.basilacak = true;
40
- table.footer.basilacak = false;
41
- table.header = new XLTableColumnHeader();
42
- table.header.interior.color = XLRenk.White;
43
- table.data = new XLTableColumnData();
44
- table.data.interior.color = XLRenk.White;
45
- table.footer = new XLTableColumnFooter();
46
- table.footer.interior.color = XLRenk.White;
47
- table.hiddenRowsInit();
48
- table.sortInit();
49
- table.rowsInit();
50
- table.columnFormatsInit();
51
- table.rowFormatsInit();
52
- table.cellFormatsInit();
53
- table.rangeFormatsInit();
54
- /*
55
- XL_T_HeaderBorderAllSet(UtilsBorderTumu; xlContinuous; xlThin; clBlack)
56
- XL_T_DataBorderAllSet(UtilsBorderTumu; xlContinuous; xlThin; clBlack)
57
- XL_T_FooterBorderAllSet(UtilsBorderTumu; xlContinuous; xlThin; clBlack)
58
- XL_T_HeaderFontAllSet(XL_DefaultFontName ; XL_DefaultFontSize; Plain; clBlack)
59
- XL_T_DataFontAllSet(XL_DefaultFontName ; XL_DefaultFontSize; Plain; clBlack)
60
- XL_T_FooterFontAllSet(XL_DefaultFontName ; XL_DefaultFontSize; Plain; clBlack)
61
- XL_T_SheetNameSet(XL_S_Current)
62
- */
63
- return table;
64
- }
65
- sheetRowsRowHeightScript(rowHeight, baslangicSatiri, bitisSatiri, sheetName) {
66
- let _sheetName = this.currentSheetObject;
67
- let _bitisSatiri = baslangicSatiri;
68
- if ((sheetName !== undefined) && (sheetName !== null)) {
69
- _sheetName = sheetName;
70
- }
71
- if ((bitisSatiri !== undefined) && (bitisSatiri !== null)) {
72
- _bitisSatiri = bitisSatiri;
73
- }
74
- if (baslangicSatiri === _bitisSatiri) {
75
- this.scripts.push(_sheetName + '.Rows("' + baslangicSatiri.toString() + '").RowHeight = ' + this.VBSRealToText(rowHeight));
76
- }
77
- else {
78
- this.scripts.push(_sheetName + '.Rows("' + baslangicSatiri.toString() + ':' + _bitisSatiri.toString() + '").RowHeight = ' + this.VBSRealToText(rowHeight));
79
- }
80
- }
81
- addScript(script) {
82
- this.scripts.push(script);
83
- }
84
- VBSRealToText(sayi) {
85
- return sayi.toString().replace(/[,]/g, '.');
86
- }
87
- }
88
- export class XLUstBilgiSatir {
89
- constructor() {
90
- this.rowNo = 0;
91
- this.font = new XLFont('', 0);
92
- this.ustBilgi = '';
93
- }
94
- }
95
- export class XLLogo {
96
- constructor() {
97
- this.genislik = 0;
98
- this.yukseklik = 0;
99
- this.ustMarjin = 0;
100
- this.solMarjin = 0;
101
- this.ebatPixelmi = false;
102
- this.ebat = '';
103
- this.konum = '';
104
- }
105
- }
106
- export class XLFont {
107
- constructor(fontName, fontSize) {
108
- this.name = 'Calibri';
109
- this.size = 11;
110
- this.color = XLRenk.Black;
111
- this.style = FontStyle.Plain;
112
- if (typeof fontName !== 'undefined') {
113
- this.name = fontName;
114
- }
115
- if (typeof fontSize !== 'undefined') {
116
- this.size = fontSize;
117
- }
118
- }
119
- }
120
- export class XLUstBilgi {
121
- constructor(fontName, fontSize) {
122
- this.font = new XLFont();
123
- this.columnFontColors = [];
124
- this.columnFontStyles = [];
125
- if (typeof fontName !== 'undefined') {
126
- this.font.name = fontName;
127
- }
128
- if (typeof fontSize !== 'undefined') {
129
- this.font.size = fontSize;
130
- }
131
- }
132
- }
133
- export class XLNot {
134
- constructor() {
135
- this.font = new XLFont();
136
- this.columnFontColors = [];
137
- this.columnFontStyles = [];
138
- }
139
- }
140
- export class XLSheet {
141
- constructor(sheetNo) {
142
- this.sheetNo = 0;
143
- this.sheetName = 0;
144
- if (typeof sheetNo !== 'undefined') {
145
- this.sheetNo = sheetNo;
146
- }
147
- }
148
- }
149
- export class XLInterior {
150
- constructor() {
151
- this.color = XLRenk.White;
152
- }
153
- }
154
- export class XLBorder {
155
- constructor() {
156
- this.type = 'Tümü';
157
- this.lineStyle = XLLineStyle.xlContinuous;
158
- this.weight = XlBorderWeigh.xlThin;
159
- this.color = XLRenk.Black;
160
- }
161
- }
162
- export class XLTableColumnHeader {
163
- constructor(header = '') {
164
- this.title = '';
165
- this.horizontalAlignment = XLHAlign.xlHAlignNone;
166
- this.verticalAlignment = XlVAlign.xlVAlignNone;
167
- this.font = new XLFont();
168
- this.interior = new XLInterior();
169
- this.border = new XLBorder();
170
- this.basilacak = true;
171
- this.satirSayisi = 1;
172
- this.isMultiLine = false;
173
- this.title = header;
174
- }
175
- }
176
- export class XLTableColumnData {
177
- constructor() {
178
- this.font = new XLFont();
179
- this.interior = new XLInterior();
180
- this.border = new XLBorder();
181
- }
182
- }
183
- export class XLTable {
184
- constructor() {
185
- this.autoFit = false;
186
- this.columns = [];
187
- this.header = new XLTableColumnHeader();
188
- this.data = new XLTableColumnData();
189
- this.footer = new XLTableColumnFooter();
190
- this.tableNo = 1;
191
- this.sol = 1;
192
- this.ust = 1;
193
- this.veriKaynagi = 'Collection';
194
- this.sheetName = 'xlSheet';
195
- this.hiddenRows = [];
196
- this.sort = [];
197
- this.rows = [];
198
- this.columnFontNames = [];
199
- this.columnFontSizes = [];
200
- this.columnFontColors = [];
201
- this.columnFontStyles = [];
202
- this.columnInteriorColors = [];
203
- this.columnHeaderFontNames = [];
204
- this.columnHeaderFontSizes = [];
205
- this.columnHeaderFontColors = [];
206
- this.columnHeaderFontStyles = [];
207
- this.columnHeaderInteriorColors = [];
208
- this.columnFooterFontNames = [];
209
- this.columnFooterFontSizes = [];
210
- this.columnFooterFontColors = [];
211
- this.columnFooterFontStyles = [];
212
- this.columnFooterInteriorColors = [];
213
- this.rowFontNames = [];
214
- this.rowFontSizes = [];
215
- this.rowFontColors = [];
216
- this.rowFontStyles = [];
217
- this.rowInteriorColors = [];
218
- this.rowFormats = [];
219
- this.rowHorizontalAlignments = [];
220
- this.rowVerticalAlignments = [];
221
- this.cellFontNames = [];
222
- this.cellFontSizes = [];
223
- this.cellFontColors = [];
224
- this.cellFontStyles = [];
225
- this.cellInteriorColors = [];
226
- this.cellFormats = [];
227
- this.cellHorizontalAlignments = [];
228
- this.cellVerticalAlignments = [];
229
- this.rangeFontNames = [];
230
- this.rangeFontSizes = [];
231
- this.rangeFontColors = [];
232
- this.rangeFontStyles = [];
233
- this.rangeInteriorColors = [];
234
- this.rangeFormats = [];
235
- this.rangeHorizontalAlignments = [];
236
- this.rangeVerticalAlignments = [];
237
- }
238
- addColumn(property, type = 0, header = '', genislik = 0) {
239
- const column = new XLTableColumn();
240
- const columnHeader = header.replace('<p>', '\r');
241
- const columnCount = this.columns.length + 1;
242
- column.property = property;
243
- column.arrayType = type;
244
- column.columnNo = columnCount;
245
- column.header = new XLTableColumnHeader(columnHeader);
246
- column.footer = new XLTableColumnFooter();
247
- column.horizontalAlignment = XLHAlign.xlHAlignNone;
248
- column.verticalAlignment = XlVAlign.xlVAlignNone;
249
- column.format = NumberFormatlar.Belirsiz;
250
- column.width = genislik;
251
- switch (type) {
252
- case VariableType.Integer:
253
- column.format = NumberFormatlar.Long;
254
- break;
255
- case VariableType.Longint:
256
- column.format = NumberFormatlar.Long;
257
- break;
258
- case VariableType.Real:
259
- column.format = NumberFormatlar.Real;
260
- break;
261
- case VariableType.Date:
262
- column.format = NumberFormatlar.Tarih;
263
- break;
264
- default:
265
- break;
266
- }
267
- const headerSatirAdet = this.header.satirSayisi;
268
- const tempSize = columnHeader.split('\r').length;
269
- if (tempSize > headerSatirAdet) {
270
- this.header.satirSayisi = tempSize;
271
- }
272
- this.columns.push(column);
273
- return column;
274
- }
275
- columnFormat(format, columnNo) {
276
- let _columnNo = 0;
277
- if (typeof columnNo === 'undefined') {
278
- _columnNo = this.columns.length;
279
- }
280
- else {
281
- _columnNo = columnNo;
282
- }
283
- this.columns[_columnNo - 1].format = format;
284
- }
285
- rowFontColorAdd(color, rowNo) {
286
- let _rowNo = 0;
287
- if (typeof rowNo === 'undefined') {
288
- _rowNo = this.rows.length;
289
- }
290
- else {
291
- _rowNo = rowNo;
292
- }
293
- this.rowFontColors.push(new RowFontColor(color, _rowNo));
294
- }
295
- rowInteriorColorAdd(color, rowNo) {
296
- let _rowNo = 0;
297
- if (typeof rowNo === 'undefined') {
298
- _rowNo = this.rows.length;
299
- }
300
- else {
301
- _rowNo = rowNo;
302
- }
303
- this.rowInteriorColors.push(new RowInteriorColor(color, _rowNo));
304
- }
305
- setColumnFooter(title, columnNo) {
306
- let _columnNo = 0;
307
- if (typeof columnNo === 'undefined') {
308
- _columnNo = this.columns.length;
309
- }
310
- else {
311
- _columnNo = columnNo;
312
- }
313
- this.columns[_columnNo - 1].setFooter(title);
314
- }
315
- setColumnFooterFunction(footerFunction, columnNo) {
316
- let _columnNo = 0;
317
- if (typeof columnNo === 'undefined') {
318
- _columnNo = this.columns.length;
319
- }
320
- else {
321
- _columnNo = columnNo;
322
- }
323
- this.columns[_columnNo - 1].setFooterFunction(footerFunction);
324
- }
325
- hiddenRowsInit() {
326
- this.hiddenRows = [];
327
- }
328
- sortInit() {
329
- this.sort = [];
330
- }
331
- rowsInit() {
332
- this.rows = [];
333
- }
334
- columnFormatsInit() {
335
- this.columnFontNames = [];
336
- this.columnFontSizes = [];
337
- this.columnFontColors = [];
338
- this.columnFontStyles = [];
339
- this.columnInteriorColors = [];
340
- this.columnHeaderFontNames = [];
341
- this.columnHeaderFontSizes = [];
342
- this.columnHeaderFontColors = [];
343
- this.columnHeaderFontStyles = [];
344
- this.columnHeaderInteriorColors = [];
345
- this.columnFooterFontNames = [];
346
- this.columnFooterFontSizes = [];
347
- this.columnFooterFontColors = [];
348
- this.columnFooterFontStyles = [];
349
- this.columnFooterInteriorColors = [];
350
- }
351
- rowFormatsInit() {
352
- this.rowFontNames = [];
353
- this.rowFontSizes = [];
354
- this.rowFontColors = [];
355
- this.rowFontStyles = [];
356
- this.rowInteriorColors = [];
357
- this.rowFormats = [];
358
- this.rowHorizontalAlignments = [];
359
- this.rowVerticalAlignments = [];
360
- }
361
- cellFormatsInit() {
362
- this.cellFontNames = [];
363
- this.cellFontSizes = [];
364
- this.cellFontColors = [];
365
- this.cellFontStyles = [];
366
- this.cellInteriorColors = [];
367
- this.cellFormats = [];
368
- this.cellHorizontalAlignments = [];
369
- this.cellVerticalAlignments = [];
370
- }
371
- rangeFormatsInit() {
372
- this.rangeFontNames = [];
373
- this.rangeFontSizes = [];
374
- this.rangeFontColors = [];
375
- this.rangeFontStyles = [];
376
- this.rangeInteriorColors = [];
377
- this.rangeFormats = [];
378
- this.rangeHorizontalAlignments = [];
379
- this.rangeVerticalAlignments = [];
380
- }
381
- get _sheetName() {
382
- return this.sheetName;
383
- }
384
- set _sheetName(value) {
385
- this.sheetName = value;
386
- }
387
- }
388
- export class XLTableColumnFooter {
389
- constructor() {
390
- this.title = '';
391
- this.font = new XLFont();
392
- this.interior = new XLInterior();
393
- this.border = new XLBorder();
394
- this.basilacak = false;
395
- this.satirSayisi = 1;
396
- this.isFunction = false;
397
- this.horizontalAlignment = XLHAlign.xlHAlignNone;
398
- this.verticalAlignment = XlVAlign.xlVAlignNone;
399
- this.function = XLFuncs.None;
400
- }
401
- }
402
- export class XLTableColumn {
403
- constructor() {
404
- this.property = '';
405
- this.arrayType = 0;
406
- this.columnNo = 0;
407
- this.header = new XLTableColumnHeader();
408
- this.footer = new XLTableColumnFooter();
409
- this.horizontalAlignment = XLHAlign.xlHAlignNone;
410
- this.verticalAlignment = XlVAlign.xlVAlignNone;
411
- this.format = 0;
412
- this.width = 0;
413
- }
414
- setFooterFunction(footerFunction) {
415
- this.footer.basilacak = true;
416
- this.footer.function = footerFunction;
417
- this.footer.isFunction = true;
418
- }
419
- setFooter(title) {
420
- this.footer.basilacak = true;
421
- this.footer.title = title;
422
- this.footer.isFunction = false;
423
- }
424
- }
425
- export class RowFontColor {
426
- constructor(color, rowNo) {
427
- this.color = color;
428
- this.rowNo = rowNo;
429
- }
430
- }
431
- export class RowInteriorColor {
432
- constructor(color, rowNo) {
433
- this.color = color;
434
- this.rowNo = rowNo;
435
- }
436
- }
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL21vZGVscy94bENvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEYsTUFBTSxPQUFPLFFBQVE7SUF3Qm5CLFlBQVksUUFBaUIsRUFBRSxRQUFpQjtRQXZCaEQsU0FBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRTNCLHNCQUFpQixHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLDZCQUF3QixHQUFHLE9BQU8sQ0FBQztRQUNuQyxzQkFBaUIsR0FBRyxRQUFRLENBQUM7UUFDN0IsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQy9CLFdBQU0sR0FBRyxTQUFTLENBQUM7UUFDbkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLGdCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUU1QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBQ3RCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsUUFBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFFbEIsV0FBTSxHQUFjLEVBQUUsQ0FBQztRQUV2QixXQUFNLEdBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBR25DLElBQUksQ0FBQyxPQUFPLFFBQVEsS0FB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ZSwgTnVtYmVyRm9ybWF0bGFyLCBWYXJpYWJsZVR5cGUsIFhMUmVuayB9IGZyb20gJy4vZm91ckRDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBYbEJvcmRlcldlaWdoLCBYTEZ1bmNzLCBYTEhBbGlnbiwgWExMaW5lU3R5bGUsIFhsVkFsaWduIH0gZnJvbSAnLi94bENvbnN0YW50cyc7XHJcblxyXG5leHBvcnQgY2xhc3MgWExDb25maWcge1xyXG4gIGxvZ28gPSBuZXcgWExMb2dvKCk7XHJcbiAgZGVmYXVsdEZvbnQgPSBuZXcgWExGb250KCk7XHJcblxyXG4gIGN1cnJlbnRUYWJsZVN0eWxlID0gJ1RhYmxlU3R5bGVMaWdodDEwJztcclxuICBjdXJyZW50VGFibGUgPSAxO1xyXG4gIGN1cnJlbnRBcHBsaWNhdGlvbk9iamVjdCA9ICd4bEFwcCc7XHJcbiAgY3VycmVudEJvb2tPYmplY3QgPSAneGxCb29rJztcclxuICBjdXJyZW50U2hlZXRPYmplY3QgPSAneGxTaGVldCc7XHJcbiAgYXV0aG9yID0gJ01lZFBsYW4nO1xyXG4gIHNpZmlybGFyaUJhc21hID0gZmFsc2U7XHJcbiAgc2hlZXROYW1lID0gJyc7XHJcblxyXG4gIHVzdEJpbGdpbGVyOiBYTFVzdEJpbGdpU2F0aXJbXSA9IFtdO1xyXG4gIHVzdEJpbGdpID0gbmV3IFhMVXN0QmlsZ2koKTtcclxuXHJcbiAgbm90bGFyOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHNjcmlwdHM6IHN0cmluZ1tdID0gW107XHJcbiAgbm90ID0gbmV3IFhMTm90KCk7XHJcblxyXG4gIHRhYmxlczogWExUYWJsZVtdID0gW107XHJcblxyXG4gIHNoZWV0czogWExTaGVldFtdID0gW25ldyBYTFNoZWV0KDEpXTtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9udE5hbWU/OiBzdHJpbmcsIGZvbnRTaXplPzogbnVtYmVyKSB7XHJcbiAgICBpZiAoKHR5cGVvZiBmb250TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHx8ICh0eXBlb2YgZm9udFNpemUgIT09ICd1bmRlZmluZWQnKSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRGb250ID0gbmV3IFhMRm9udChmb250TmFtZSwgZm9udFNpemUpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFibGUgPSB0aGlzLmFkZFRhYmxlKCk7XHJcbiAgICB0YWJsZS50YWJsZU5vID0gdGhpcy50YWJsZXMubGVuZ3RoICsgMTtcclxuXHJcbiAgICB0aGlzLnRhYmxlcy5wdXNoKHRhYmxlKTtcclxuXHJcbiAgfVxyXG5cclxuICB1c3RCaWxnaVNhdGlyRWtsZShzYXRpcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1c3RCaWxnaSA9IG5ldyBYTFVzdEJpbGdpU2F0aXIoKTtcclxuICAgIHVzdEJpbGdpLnJvd05vID0gdGhpcy51c3RCaWxnaWxlci5sZW5ndGggKyAxO1xyXG4gICAgdXN0QmlsZ2kudXN0QmlsZ2kgPSBzYXRpcjtcclxuXHJcbiAgICB0aGlzLnVzdEJpbGdpbGVyLnB1c2godXN0QmlsZ2kpO1xyXG4gIH1cclxuXHJcbiAgYWRkVGFibGUoKTogWExUYWJsZSB7XHJcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBYTFRhYmxlKCk7XHJcbiAgICB0YWJsZS5zb2wgPSAxO1xyXG4gICAgdGFibGUudXN0ID0gMTtcclxuICAgIHRhYmxlLmhlYWRlci5iYXNpbGFjYWsgPSB0cnVlO1xyXG4gICAgdGFibGUuZm9vdGVyLmJhc2lsYWNhayA9IGZhbHNlO1xyXG4gICAgdGFibGUuaGVhZGVyID0gbmV3IFhMVGFibGVDb2x1bW5IZWFkZXIoKTtcclxuICAgIHRhYmxlLmhlYWRlci5pbnRlcmlvci5jb2xvciA9IFhMUmVuay5XaGl0ZTtcclxuICAgIHRhYmxlLmRhdGEgPSBuZXcgWExUYWJsZUNvbHVtbkRhdGEoKTtcclxuICAgIHRhYmxlLmRhdGEuaW50ZXJpb3IuY29sb3IgPSBYTFJlbmsuV2hpdGU7XHJcbiAgICB0YWJsZS5mb290ZXIgPSBuZXcgWExUYWJsZUNvbHVtbkZvb3RlcigpO1xyXG4gICAgdGFibGUuZm9vdGVyLmludGVyaW9yLmNvbG9yID0gWExSZW5rLldoaXRlO1xyXG5cclxuICAgIHRhYmxlLmhpZGRlblJvd3NJbml0KCk7XHJcbiAgICB0YWJsZS5zb3J0SW5pdCgpO1xyXG4gICAgdGFibGUucm93c0luaXQoKTtcclxuICAgIHRhYmxlLmNvbHVtbkZvcm1hdHNJbml0KCk7XHJcblxyXG4gICAgdGFibGUucm93Rm9ybWF0c0luaXQoKTtcclxuICAgIHRhYmxlLmNlbGxGb3JtYXRzSW5pdCgpO1xyXG4gICAgdGFibGUucmFuZ2VGb3JtYXRzSW5pdCgpO1xyXG5cclxuICAgIC8qXHJcbiAgICAgICAgWExfVF9IZWFkZXJCb3JkZXJBbGxTZXQoVXRpbHNCb3JkZXJUdW11OyB4bENvbnRpbnVvdXM7IHhsVGhpbjsgY2xCbGFjaylcclxuICAgICAgICBYTF9UX0RhdGFCb3JkZXJBbGxTZXQoVXRpbHNCb3JkZXJUdW11OyB4bENvbnRpbnVvdXM7IHhsVGhpbjsgY2xCbGFjaylcclxuICAgICAgICBYTF9UX0Zvb3RlckJvcmRlckFsbFNldChVdGlsc0JvcmRlclR1bXU7IHhsQ29udGludW91czsgeGxUaGluOyBjbEJsYWNrKVxyXG4gICAgICAgIFhMX1RfSGVhZGVyRm9udEFsbFNldChYTF9EZWZhdWx0Rm9udE5hbWUgOyBYTF9EZWZhdWx0Rm9udFNpemU7IFBsYWluOyBjbEJsYWNrKVxyXG4gICAgICAgIFhMX1RfRGF0YUZvbnRBbGxTZXQoWExfRGVmYXVsdEZvbnROYW1lIDsgWExfRGVmYXVsdEZvbnRTaXplOyBQbGFpbjsgY2xCbGFjaylcclxuICAgICAgICBYTF9UX0Zvb3RlckZvbnRBbGxTZXQoWExfRGVmYXVsdEZvbnROYW1lIDsgWExfRGVmYXVsdEZvbnRTaXplOyBQbGFpbjsgY2xCbGFjaylcclxuICAgICAgICBYTF9UX1NoZWV0TmFtZVNldChYTF9TX0N1cnJlbnQpXHJcbiovXHJcblxyXG4gICAgcmV0dXJuIHRhYmxlO1xyXG4gIH1cclxuXHJcbiAgc2hlZXRSb3dzUm93SGVpZ2h0U2NyaXB0KHJvd0hlaWdodDogbnVtYmVyLCBiYXNsYW5naWNTYXRpcmk6IG51bWJlciwgYml0aXNTYXRpcmk/OiBudW1iZXIsIHNoZWV0TmFtZT86IHN0cmluZykge1xyXG4gICAgbGV0IF9zaGVldE5hbWUgPSB0aGlzLmN1cnJlbnRTaGVldE9iamVjdDtcclxuICAgIGxldCBfYml0aXNTYXRpcmkgPSBiYXNsYW5naWNTYXRpcmk7XHJcblxyXG4gICAgaWYgKChzaGVldE5hbWUgIT09IHVuZGVmaW5lZCkgJiYgKHNoZWV0TmFtZSAhPT0gbnVsbCkpIHtcclxuICAgICAgX3NoZWV0TmFtZSA9IHNoZWV0TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKGJpdGlzU2F0aXJpICE9PSB1bmRlZmluZWQpICYmIChiaXRpc1NhdGlyaSAhPT0gbnVsbCkpIHtcclxuICAgICAgX2JpdGlzU2F0aXJpID0gYml0aXNTYXRpcmk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGJhc2xhbmdpY1NhdGlyaSA9PT0gX2JpdGlzU2F0aXJpKSB7XHJcbiAgICAgIHRoaXMuc2NyaXB0cy5wdXNoKF9zaGVldE5hbWUgKyAnLlJvd3MoXCInICsgYmFzbGFuZ2ljU2F0aXJpLnRvU3RyaW5nKCkgKyAnXCIpLlJvd0hlaWdodCA9ICcgKyB0aGlzLlZCU1JlYWxUb1RleHQocm93SGVpZ2h0KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zY3JpcHRzLnB1c2goX3NoZWV0TmFtZSArICcuUm93cyhcIicgKyBiYXNsYW5naWNTYXRpcmkudG9TdHJpbmcoKSArICc6JyArIF9iaXRpc1NhdGlyaS50b1N0cmluZygpICsgJ1wiKS5Sb3dIZWlnaHQgPSAnICsgdGhpcy5WQlNSZWFsVG9UZXh0KHJvd0hlaWdodCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU2NyaXB0KHNjcmlwdDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNjcmlwdHMucHVzaChzY3JpcHQpO1xyXG4gIH1cclxuXHJcbiAgVkJTUmVhbFRvVGV4dChzYXlpOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHNheWkudG9TdHJpbmcoKS5yZXBsYWNlKC9bLF0vZywgJy4nKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhMVXN0QmlsZ2lTYXRpciB7XHJcbiAgcm93Tm8gPSAwO1xyXG4gIGZvbnQgPSBuZXcgWExGb250KCcnLCAwKTtcclxuICB1c3RCaWxnaSA9ICcnO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExMb2dvIHtcclxuICBnZW5pc2xpayA9IDA7XHJcbiAgeXVrc2VrbGlrID0gMDtcclxuICB1c3RNYXJqaW4gPSAwO1xyXG4gIHNvbE1hcmppbiA9IDA7XHJcbiAgZWJhdFBpeGVsbWkgPSBmYWxzZTtcclxuICBlYmF0ID0gJyc7XHJcbiAga29udW0gPSAnJztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhMRm9udCB7XHJcbiAgbmFtZSA9ICdDYWxpYnJpJztcclxuICBzaXplID0gMTE7XHJcbiAgY29sb3IgPSBYTFJlbmsuQmxhY2s7XHJcbiAgc3R5bGUgPSBGb250U3R5bGUuUGxhaW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZvbnROYW1lPzogc3RyaW5nLCBmb250U2l6ZT86IG51bWJlcikge1xyXG4gICAgaWYgKHR5cGVvZiBmb250TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdGhpcy5uYW1lID0gZm9udE5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBmb250U2l6ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdGhpcy5zaXplID0gZm9udFNpemU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExVc3RCaWxnaSB7XHJcbiAgZm9udCA9IG5ldyBYTEZvbnQoKTtcclxuICBjb2x1bW5Gb250Q29sb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNvbHVtbkZvbnRTdHlsZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZvbnROYW1lPzogc3RyaW5nLCBmb250U2l6ZT86IG51bWJlcikge1xyXG4gICAgaWYgKHR5cGVvZiBmb250TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdGhpcy5mb250Lm5hbWUgPSBmb250TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGZvbnRTaXplICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLmZvbnQuc2l6ZSA9IGZvbnRTaXplO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTE5vdCB7XHJcbiAgZm9udCA9IG5ldyBYTEZvbnQoKTtcclxuICBjb2x1bW5Gb250Q29sb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNvbHVtbkZvbnRTdHlsZXM6IHN0cmluZ1tdID0gW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTFNoZWV0IHtcclxuICBzaGVldE5vID0gMDtcclxuICBzaGVldE5hbWUgPSAwO1xyXG4gIGNvbnN0cnVjdG9yKHNoZWV0Tm86IG51bWJlcikge1xyXG4gICAgaWYgKHR5cGVvZiBzaGVldE5vICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLnNoZWV0Tm8gPSBzaGVldE5vO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExJbnRlcmlvciB7XHJcbiAgY29sb3I6IFhMUmVuayA9IFhMUmVuay5XaGl0ZTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhMQm9yZGVyIHtcclxuICB0eXBlID0gJ1TDvG3DvCc7XHJcbiAgbGluZVN0eWxlID0gWExMaW5lU3R5bGUueGxDb250aW51b3VzO1xyXG4gIHdlaWdodCA9IFhsQm9yZGVyV2VpZ2gueGxUaGluO1xyXG4gIGNvbG9yID0gWExSZW5rLkJsYWNrO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExUYWJsZUNvbHVtbkhlYWRlciB7XHJcbiAgdGl0bGUgPSAnJztcclxuICBob3Jpem9udGFsQWxpZ25tZW50ID0gWExIQWxpZ24ueGxIQWxpZ25Ob25lO1xyXG4gIHZlcnRpY2FsQWxpZ25tZW50ID0gWGxWQWxpZ24ueGxWQWxpZ25Ob25lO1xyXG4gIGZvbnQgPSBuZXcgWExGb250KCk7XHJcbiAgaW50ZXJpb3IgPSBuZXcgWExJbnRlcmlvcigpO1xyXG4gIGJvcmRlciA9IG5ldyBYTEJvcmRlcigpO1xyXG4gIGJhc2lsYWNhayA9IHRydWU7XHJcbiAgc2F0aXJTYXlpc2kgPSAxO1xyXG4gIGlzTXVsdGlMaW5lID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoaGVhZGVyID0gJycpIHtcclxuICAgIHRoaXMudGl0bGUgPSBoZWFkZXI7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExUYWJsZUNvbHVtbkRhdGEge1xyXG4gIGZvbnQgPSBuZXcgWExGb250KCk7XHJcbiAgaW50ZXJpb3IgPSBuZXcgWExJbnRlcmlvcigpO1xyXG4gIGJvcmRlciA9IG5ldyBYTEJvcmRlcigpO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExUYWJsZSB7XHJcbiAgYXV0b0ZpdCA9IGZhbHNlO1xyXG4gIGNvbHVtbnM6IFhMVGFibGVDb2x1bW5bXSA9IFtdO1xyXG4gIGhlYWRlciA9IG5ldyBYTFRhYmxlQ29sdW1uSGVhZGVyKCk7XHJcbiAgZGF0YSA9IG5ldyBYTFRhYmxlQ29sdW1uRGF0YSgpO1xyXG4gIGZvb3RlciA9IG5ldyBYTFRhYmxlQ29sdW1uRm9vdGVyKCk7XHJcbiAgdGFibGVObyA9IDE7XHJcbiAgY29sbGVjdGlvbjogc3RyaW5nW107XHJcbiAgc29sID0gMTtcclxuICB1c3QgPSAxO1xyXG4gIHZlcmlLYXluYWdpID0gJ0NvbGxlY3Rpb24nO1xyXG4gIHNoZWV0TmFtZSA9ICd4bFNoZWV0JztcclxuICBoaWRkZW5Sb3dzOiBudW1iZXJbXSA9IFtdO1xyXG4gIHNvcnQ6IG51bWJlcltdID0gW107XHJcbiAgcm93czogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5Gb250TmFtZXM6IHN0cmluZ1tdID0gW107XHJcbiAgY29sdW1uRm9udFNpemVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIGNvbHVtbkZvbnRDb2xvcnM6IHN0cmluZ1tdID0gW107XHJcbiAgY29sdW1uRm9udFN0eWxlczogRm9udFN0eWxlW10gPSBbXTtcclxuICBjb2x1bW5JbnRlcmlvckNvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5IZWFkZXJGb250TmFtZXM6IHN0cmluZ1tdID0gW107XHJcbiAgY29sdW1uSGVhZGVyRm9udFNpemVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIGNvbHVtbkhlYWRlckZvbnRDb2xvcnM6IHN0cmluZ1tdID0gW107XHJcbiAgY29sdW1uSGVhZGVyRm9udFN0eWxlczogRm9udFN0eWxlW10gPSBbXTtcclxuICBjb2x1bW5IZWFkZXJJbnRlcmlvckNvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5Gb290ZXJGb250TmFtZXM6IHN0cmluZ1tdID0gW107XHJcbiAgY29sdW1uRm9vdGVyRm9udFNpemVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIGNvbHVtbkZvb3RlckZvbnRDb2xvcnM6IHN0cmluZ1tdID0gW107XHJcbiAgY29sdW1uRm9vdGVyRm9udFN0eWxlczogRm9udFN0eWxlW10gPSBbXTtcclxuICBjb2x1bW5Gb290ZXJJbnRlcmlvckNvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICByb3dGb250TmFtZXM6IHN0cmluZ1tdID0gW107XHJcbiAgcm93Rm9udFNpemVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIHJvd0ZvbnRDb2xvcnM6IFJvd0ZvbnRDb2xvcltdID0gW107XHJcbiAgcm93Rm9udFN0eWxlczogRm9udFN0eWxlW10gPSBbXTtcclxuICByb3dJbnRlcmlvckNvbG9yczogUm93SW50ZXJpb3JDb2xvcltdID0gW107XHJcbiAgcm93Rm9ybWF0czogc3RyaW5nW10gPSBbXTtcclxuICByb3dIb3Jpem9udGFsQWxpZ25tZW50czogWExIQWxpZ25bXSA9IFtdO1xyXG4gIHJvd1ZlcnRpY2FsQWxpZ25tZW50czogWGxWQWxpZ25bXSA9IFtdO1xyXG4gIGNlbGxGb250TmFtZXM6IHN0cmluZ1tdID0gW107XHJcbiAgY2VsbEZvbnRTaXplczogbnVtYmVyW10gPSBbXTtcclxuICBjZWxsRm9udENvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICBjZWxsRm9udFN0eWxlczogRm9udFN0eWxlW10gPSBbXTtcclxuICBjZWxsSW50ZXJpb3JDb2xvcnM6IHN0cmluZ1tdID0gW107XHJcbiAgY2VsbEZvcm1hdHM6IHN0cmluZ1tdID0gW107XHJcbiAgY2VsbEhvcml6b250YWxBbGlnbm1lbnRzOiBYTEhBbGlnbltdID0gW107XHJcbiAgY2VsbFZlcnRpY2FsQWxpZ25tZW50czogWGxWQWxpZ25bXSA9IFtdO1xyXG4gIHJhbmdlRm9udE5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHJhbmdlRm9udFNpemVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIHJhbmdlRm9udENvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICByYW5nZUZvbnRTdHlsZXM6IEZvbnRTdHlsZVtdID0gW107XHJcbiAgcmFuZ2VJbnRlcmlvckNvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICByYW5nZUZvcm1hdHM6IHN0cmluZ1tdID0gW107XHJcbiAgcmFuZ2VIb3Jpem9udGFsQWxpZ25tZW50czogWExIQWxpZ25bXSA9IFtdO1xyXG4gIHJhbmdlVmVydGljYWxBbGlnbm1lbnRzOiBYbFZBbGlnbltdID0gW107XHJcblxyXG4gIGFkZENvbHVtbihwcm9wZXJ0eTogc3RyaW5nLCB0eXBlOiBWYXJpYWJsZVR5cGUgPSAwLCBoZWFkZXIgPSAnJywgZ2VuaXNsaWsgPSAwKTogWExUYWJsZUNvbHVtbiB7XHJcblxyXG4gICAgY29uc3QgY29sdW1uID0gbmV3IFhMVGFibGVDb2x1bW4oKTtcclxuICAgIGNvbnN0IGNvbHVtbkhlYWRlciA9IGhlYWRlci5yZXBsYWNlKCc8cD4nLCAnXFxyJyk7XHJcbiAgICBjb25zdCBjb2x1bW5Db3VudCA9IHRoaXMuY29sdW1ucy5sZW5ndGggKyAxO1xyXG5cclxuICAgIGNvbHVtbi5wcm9wZXJ0eSA9IHByb3BlcnR5O1xyXG4gICAgY29sdW1uLmFycmF5VHlwZSA9IHR5cGU7XHJcbiAgICBjb2x1bW4uY29sdW1uTm8gPSBjb2x1bW5Db3VudDtcclxuICAgIGNvbHVtbi5oZWFkZXIgPSBuZXcgWExUYWJsZUNvbHVtbkhlYWRlcihjb2x1bW5IZWFkZXIpO1xyXG5cclxuICAgIGNvbHVtbi5mb290ZXIgPSBuZXcgWExUYWJsZUNvbHVtbkZvb3RlcigpO1xyXG4gICAgY29sdW1uLmhvcml6b250YWxBbGlnbm1lbnQgPSBYTEhBbGlnbi54bEhBbGlnbk5vbmU7XHJcbiAgICBjb2x1bW4udmVydGljYWxBbGlnbm1lbnQgPSBYbFZBbGlnbi54bFZBbGlnbk5vbmU7XHJcbiAgICBjb2x1bW4uZm9ybWF0ID0gTnVtYmVyRm9ybWF0bGFyLkJlbGlyc2l6O1xyXG4gICAgY29sdW1uLndpZHRoID0gZ2VuaXNsaWs7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgVmFyaWFibGVUeXBlLkludGVnZXI6XHJcbiAgICAgICAgY29sdW1uLmZvcm1hdCA9IE51bWJlckZvcm1hdGxhci5Mb25nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBWYXJpYWJsZVR5cGUuTG9uZ2ludDpcclxuICAgICAgICBjb2x1bW4uZm9ybWF0ID0gTnVtYmVyRm9ybWF0bGFyLkxvbmc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFZhcmlhYmxlVHlwZS5SZWFsOlxyXG4gICAgICAgIGNvbHVtbi5mb3JtYXQgPSBOdW1iZXJGb3JtYXRsYXIuUmVhbDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgVmFyaWFibGVUeXBlLkRhdGU6XHJcbiAgICAgICAgY29sdW1uLmZvcm1hdCA9IE51bWJlckZvcm1hdGxhci5UYXJpaDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaGVhZGVyU2F0aXJBZGV0ID0gdGhpcy5oZWFkZXIuc2F0aXJTYXlpc2k7XHJcbiAgICBjb25zdCB0ZW1wU2l6ZSA9IGNvbHVtbkhlYWRlci5zcGxpdCgnXFxyJykubGVuZ3RoO1xyXG4gICAgaWYgKHRlbXBTaXplID4gaGVhZGVyU2F0aXJBZGV0KSB7XHJcbiAgICAgIHRoaXMuaGVhZGVyLnNhdGlyU2F5aXNpID0gdGVtcFNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgIHJldHVybiBjb2x1bW47XHJcbiAgfVxyXG5cclxuICBjb2x1bW5Gb3JtYXQoZm9ybWF0OiBOdW1iZXJGb3JtYXRsYXIsIGNvbHVtbk5vPzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgX2NvbHVtbk5vID0gMDtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uTm8gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIF9jb2x1bW5ObyA9IHRoaXMuY29sdW1ucy5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfY29sdW1uTm8gPSBjb2x1bW5ObztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbHVtbnNbX2NvbHVtbk5vIC0gMV0uZm9ybWF0ID0gZm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgcm93Rm9udENvbG9yQWRkKGNvbG9yOiBYTFJlbmssIHJvd05vPzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgX3Jvd05vID0gMDtcclxuICAgIGlmICh0eXBlb2Ygcm93Tm8gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIF9yb3dObyA9IHRoaXMucm93cy5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfcm93Tm8gPSByb3dObztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvd0ZvbnRDb2xvcnMucHVzaChuZXcgUm93Rm9udENvbG9yKGNvbG9yLCBfcm93Tm8pKTtcclxuICB9XHJcblxyXG4gIHJvd0ludGVyaW9yQ29sb3JBZGQoY29sb3I6IFhMUmVuaywgcm93Tm8/OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGxldCBfcm93Tm8gPSAwO1xyXG4gICAgaWYgKHR5cGVvZiByb3dObyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgX3Jvd05vID0gdGhpcy5yb3dzLmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIF9yb3dObyA9IHJvd05vO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm93SW50ZXJpb3JDb2xvcnMucHVzaChuZXcgUm93SW50ZXJpb3JDb2xvcihjb2xvciwgX3Jvd05vKSk7XHJcbiAgfVxyXG5cclxuICBzZXRDb2x1bW5Gb290ZXIodGl0bGU6IHN0cmluZywgY29sdW1uTm8/OiBudW1iZXIpIHtcclxuICAgIGxldCBfY29sdW1uTm8gPSAwO1xyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW5ObyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgX2NvbHVtbk5vID0gdGhpcy5jb2x1bW5zLmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIF9jb2x1bW5ObyA9IGNvbHVtbk5vO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb2x1bW5zW19jb2x1bW5ObyAtIDFdLnNldEZvb3Rlcih0aXRsZSk7XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0Q29sdW1uRm9vdGVyRnVuY3Rpb24oZm9vdGVyRnVuY3Rpb246IFhMRnVuY3MsIGNvbHVtbk5vPzogbnVtYmVyKSB7XHJcbiAgICBsZXQgX2NvbHVtbk5vID0gMDtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uTm8gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIF9jb2x1bW5ObyA9IHRoaXMuY29sdW1ucy5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfY29sdW1uTm8gPSBjb2x1bW5ObztcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1uc1tfY29sdW1uTm8gLSAxXS5zZXRGb290ZXJGdW5jdGlvbihmb290ZXJGdW5jdGlvbik7XHJcblxyXG4gIH1cclxuXHJcbiAgaGlkZGVuUm93c0luaXQoKSB7XHJcbiAgICB0aGlzLmhpZGRlblJvd3MgPSBbXTtcclxuICB9XHJcblxyXG4gIHNvcnRJbml0KCkge1xyXG4gICAgdGhpcy5zb3J0ID0gW107XHJcbiAgfVxyXG5cclxuICByb3dzSW5pdCgpIHtcclxuICAgIHRoaXMucm93cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgY29sdW1uRm9ybWF0c0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbHVtbkZvbnROYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5Gb250U2l6ZXMgPSBbXTtcclxuICAgIHRoaXMuY29sdW1uRm9udENvbG9ycyA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5Gb250U3R5bGVzID0gW107XHJcblxyXG4gICAgdGhpcy5jb2x1bW5JbnRlcmlvckNvbG9ycyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY29sdW1uSGVhZGVyRm9udE5hbWVzID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkhlYWRlckZvbnRTaXplcyA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5IZWFkZXJGb250Q29sb3JzID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkhlYWRlckZvbnRTdHlsZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbkhlYWRlckludGVyaW9yQ29sb3JzID0gW107XHJcblxyXG4gICAgdGhpcy5jb2x1bW5Gb290ZXJGb250TmFtZXMgPSBbXTtcclxuICAgIHRoaXMuY29sdW1uRm9vdGVyRm9udFNpemVzID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkZvb3RlckZvbnRDb2xvcnMgPSBbXTtcclxuICAgIHRoaXMuY29sdW1uRm9vdGVyRm9udFN0eWxlcyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY29sdW1uRm9vdGVySW50ZXJpb3JDb2xvcnMgPSBbXTtcclxuICB9XHJcblxyXG4gIHJvd0Zvcm1hdHNJbml0KCkge1xyXG4gICAgdGhpcy5yb3dGb250TmFtZXMgPSBbXTtcclxuICAgIHRoaXMucm93Rm9udFNpemVzID0gW107XHJcbiAgICB0aGlzLnJvd0ZvbnRDb2xvcnMgPSBbXTtcclxuICAgIHRoaXMucm93Rm9udFN0eWxlcyA9IFtdO1xyXG5cclxuICAgIHRoaXMucm93SW50ZXJpb3JDb2xvcnMgPSBbXTtcclxuICAgIHRoaXMucm93Rm9ybWF0cyA9IFtdO1xyXG5cclxuICAgIHRoaXMucm93SG9yaXpvbnRhbEFsaWdubWVudHMgPSBbXTtcclxuICAgIHRoaXMucm93VmVydGljYWxBbGlnbm1lbnRzID0gW107XHJcbiAgfVxyXG5cclxuICBjZWxsRm9ybWF0c0luaXQoKSB7XHJcbiAgICB0aGlzLmNlbGxGb250TmFtZXMgPSBbXTtcclxuICAgIHRoaXMuY2VsbEZvbnRTaXplcyA9IFtdO1xyXG4gICAgdGhpcy5jZWxsRm9udENvbG9ycyA9IFtdO1xyXG4gICAgdGhpcy5jZWxsRm9udFN0eWxlcyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY2VsbEludGVyaW9yQ29sb3JzID0gW107XHJcblxyXG4gICAgdGhpcy5jZWxsRm9ybWF0cyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY2VsbEhvcml6b250YWxBbGlnbm1lbnRzID0gW107XHJcbiAgICB0aGlzLmNlbGxWZXJ0aWNhbEFsaWdubWVudHMgPSBbXTtcclxuICB9XHJcblxyXG4gIHJhbmdlRm9ybWF0c0luaXQoKSB7XHJcbiAgICB0aGlzLnJhbmdlRm9udE5hbWVzID0gW107XHJcbiAgICB0aGlzLnJhbmdlRm9udFNpemVzID0gW107XHJcbiAgICB0aGlzLnJhbmdlRm9udENvbG9ycyA9IFtdO1xyXG4gICAgdGhpcy5yYW5nZUZvbnRTdHlsZXMgPSBbXTtcclxuICAgIHRoaXMucmFuZ2VJbnRlcmlvckNvbG9ycyA9IFtdO1xyXG4gICAgdGhpcy5yYW5nZUZvcm1hdHMgPSBbXTtcclxuICAgIHRoaXMucmFuZ2VIb3Jpem9udGFsQWxpZ25tZW50cyA9IFtdO1xyXG4gICAgdGhpcy5yYW5nZVZlcnRpY2FsQWxpZ25tZW50cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IF9zaGVldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNoZWV0TmFtZTtcclxuICB9XHJcbiAgc2V0IF9zaGVldE5hbWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaGVldE5hbWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExUYWJsZUNvbHVtbkZvb3RlciB7XHJcbiAgdGl0bGUgPSAnJztcclxuICBmb250ID0gbmV3IFhMRm9udCgpO1xyXG4gIGludGVyaW9yID0gbmV3IFhMSW50ZXJpb3IoKTtcclxuICBib3JkZXIgPSBuZXcgWExCb3JkZXIoKTtcclxuICBiYXNpbGFjYWsgPSBmYWxzZTtcclxuICBzYXRpclNheWlzaSA9IDE7XHJcbiAgaXNGdW5jdGlvbiA9IGZhbHNlO1xyXG4gIGhvcml6b250YWxBbGlnbm1lbnQgPSBYTEhBbGlnbi54bEhBbGlnbk5vbmU7XHJcbiAgdmVydGljYWxBbGlnbm1lbnQgPSBYbFZBbGlnbi54bFZBbGlnbk5vbmU7XHJcbiAgZnVuY3Rpb24gPSBYTEZ1bmNzLk5vbmU7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTFRhYmxlQ29sdW1uIHtcclxuICBwcm9wZXJ0eSA9ICcnO1xyXG4gIGFycmF5VHlwZTogVmFyaWFibGVUeXBlID0gMDtcclxuICBjb2x1bW5ObyA9IDA7XHJcbiAgaGVhZGVyID0gbmV3IFhMVGFibGVDb2x1bW5IZWFkZXIoKTtcclxuICBmb290ZXIgPSBuZXcgWExUYWJsZUNvbHVtbkZvb3RlcigpO1xyXG4gIGhvcml6b250YWxBbGlnbm1lbnQgPSBYTEhBbGlnbi54bEhBbGlnbk5vbmU7XHJcbiAgdmVydGljYWxBbGlnbm1lbnQgPSBYbFZBbGlnbi54bFZBbGlnbk5vbmU7XHJcbiAgZm9ybWF0OiBOdW1iZXJGb3JtYXRsYXIgPSAwO1xyXG4gIHdpZHRoID0gMDtcclxuXHJcbiAgc2V0Rm9vdGVyRnVuY3Rpb24oZm9vdGVyRnVuY3Rpb246IFhMRnVuY3MpIHtcclxuICAgIHRoaXMuZm9vdGVyLmJhc2lsYWNhayA9IHRydWU7XHJcbiAgICB0aGlzLmZvb3Rlci5mdW5jdGlvbiA9IGZvb3RlckZ1bmN0aW9uO1xyXG4gICAgdGhpcy5mb290ZXIuaXNGdW5jdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZXRGb290ZXIodGl0bGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5mb290ZXIuYmFzaWxhY2FrID0gdHJ1ZTtcclxuICAgIHRoaXMuZm9vdGVyLnRpdGxlID0gdGl0bGU7XHJcbiAgICB0aGlzLmZvb3Rlci5pc0Z1bmN0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUm93Rm9udENvbG9yIHtcclxuICBjb2xvcjogWExSZW5rO1xyXG4gIHJvd05vOiBudW1iZXI7XHJcbiAgY29uc3RydWN0b3IoY29sb3I6IFhMUmVuaywgcm93Tm86IG51bWJlcikge1xyXG4gICAgdGhpcy5jb2xvciA9IGNvbG9yO1xyXG4gICAgdGhpcy5yb3dObyA9IHJvd05vO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJvd0ludGVyaW9yQ29sb3Ige1xyXG4gIGNvbG9yOiBYTFJlbms7XHJcbiAgcm93Tm86IG51bWJlcjtcclxuICBjb25zdHJ1Y3Rvcihjb2xvcjogWExSZW5rLCByb3dObzogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvbG9yID0gY29sb3I7XHJcbiAgICB0aGlzLnJvd05vID0gcm93Tm87XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { FontStyle, NumberFormatlar, VariableType, XLRenk } from './fourDConstants';
2
+ import { XlBorderWeigh, XLFuncs, XLHAlign, XLLineStyle, XlVAlign } from './xlConstants';
3
+ export class XLConfig {
4
+ constructor(fontName, fontSize) {
5
+ this.logo = new XLLogo();
6
+ this.defaultFont = new XLFont();
7
+ this.currentTableStyle = 'TableStyleLight10';
8
+ this.currentTable = 1;
9
+ this.currentApplicationObject = 'xlApp';
10
+ this.currentBookObject = 'xlBook';
11
+ this.currentSheetObject = 'xlSheet';
12
+ this.author = 'MedPlan';
13
+ this.sifirlariBasma = false;
14
+ this.sheetName = '';
15
+ this.ustBilgiler = [];
16
+ this.ustBilgi = new XLUstBilgi();
17
+ this.notlar = [];
18
+ this.scripts = [];
19
+ this.not = new XLNot();
20
+ this.tables = [];
21
+ this.sheets = [new XLSheet(1)];
22
+ if ((typeof fontName !== 'undefined') || (typeof fontSize !== 'undefined')) {
23
+ this.defaultFont = new XLFont(fontName, fontSize);
24
+ }
25
+ const table = this.addTable();
26
+ table.tableNo = this.tables.length + 1;
27
+ this.tables.push(table);
28
+ }
29
+ ustBilgiSatirEkle(satir) {
30
+ const ustBilgi = new XLUstBilgiSatir();
31
+ ustBilgi.rowNo = this.ustBilgiler.length + 1;
32
+ ustBilgi.ustBilgi = satir;
33
+ this.ustBilgiler.push(ustBilgi);
34
+ }
35
+ addTable() {
36
+ const table = new XLTable();
37
+ table.sol = 1;
38
+ table.ust = 1;
39
+ table.header.basilacak = true;
40
+ table.footer.basilacak = false;
41
+ table.header = new XLTableColumnHeader();
42
+ table.header.interior.color = XLRenk.White;
43
+ table.data = new XLTableColumnData();
44
+ table.data.interior.color = XLRenk.White;
45
+ table.footer = new XLTableColumnFooter();
46
+ table.footer.interior.color = XLRenk.White;
47
+ table.hiddenRowsInit();
48
+ table.sortInit();
49
+ table.rowsInit();
50
+ table.columnFormatsInit();
51
+ table.rowFormatsInit();
52
+ table.cellFormatsInit();
53
+ table.rangeFormatsInit();
54
+ /*
55
+ XL_T_HeaderBorderAllSet(UtilsBorderTumu; xlContinuous; xlThin; clBlack)
56
+ XL_T_DataBorderAllSet(UtilsBorderTumu; xlContinuous; xlThin; clBlack)
57
+ XL_T_FooterBorderAllSet(UtilsBorderTumu; xlContinuous; xlThin; clBlack)
58
+ XL_T_HeaderFontAllSet(XL_DefaultFontName ; XL_DefaultFontSize; Plain; clBlack)
59
+ XL_T_DataFontAllSet(XL_DefaultFontName ; XL_DefaultFontSize; Plain; clBlack)
60
+ XL_T_FooterFontAllSet(XL_DefaultFontName ; XL_DefaultFontSize; Plain; clBlack)
61
+ XL_T_SheetNameSet(XL_S_Current)
62
+ */
63
+ return table;
64
+ }
65
+ sheetRowsRowHeightScript(rowHeight, baslangicSatiri, bitisSatiri, sheetName) {
66
+ let _sheetName = this.currentSheetObject;
67
+ let _bitisSatiri = baslangicSatiri;
68
+ if ((sheetName !== undefined) && (sheetName !== null)) {
69
+ _sheetName = sheetName;
70
+ }
71
+ if ((bitisSatiri !== undefined) && (bitisSatiri !== null)) {
72
+ _bitisSatiri = bitisSatiri;
73
+ }
74
+ if (baslangicSatiri === _bitisSatiri) {
75
+ this.scripts.push(_sheetName + '.Rows("' + baslangicSatiri.toString() + '").RowHeight = ' + this.VBSRealToText(rowHeight));
76
+ }
77
+ else {
78
+ this.scripts.push(_sheetName + '.Rows("' + baslangicSatiri.toString() + ':' + _bitisSatiri.toString() + '").RowHeight = ' + this.VBSRealToText(rowHeight));
79
+ }
80
+ }
81
+ addScript(script) {
82
+ this.scripts.push(script);
83
+ }
84
+ VBSRealToText(sayi) {
85
+ return sayi.toString().replace(/[,]/g, '.');
86
+ }
87
+ }
88
+ export class XLUstBilgiSatir {
89
+ constructor() {
90
+ this.rowNo = 0;
91
+ this.font = new XLFont('', 0);
92
+ this.ustBilgi = '';
93
+ }
94
+ }
95
+ export class XLLogo {
96
+ constructor() {
97
+ this.genislik = 0;
98
+ this.yukseklik = 0;
99
+ this.ustMarjin = 0;
100
+ this.solMarjin = 0;
101
+ this.ebatPixelmi = false;
102
+ this.ebat = '';
103
+ this.konum = '';
104
+ }
105
+ }
106
+ export class XLFont {
107
+ constructor(fontName, fontSize) {
108
+ this.name = 'Calibri';
109
+ this.size = 11;
110
+ this.color = XLRenk.Black;
111
+ this.style = FontStyle.Plain;
112
+ if (typeof fontName !== 'undefined') {
113
+ this.name = fontName;
114
+ }
115
+ if (typeof fontSize !== 'undefined') {
116
+ this.size = fontSize;
117
+ }
118
+ }
119
+ }
120
+ export class XLUstBilgi {
121
+ constructor(fontName, fontSize) {
122
+ this.font = new XLFont();
123
+ this.columnFontColors = [];
124
+ this.columnFontStyles = [];
125
+ if (typeof fontName !== 'undefined') {
126
+ this.font.name = fontName;
127
+ }
128
+ if (typeof fontSize !== 'undefined') {
129
+ this.font.size = fontSize;
130
+ }
131
+ }
132
+ }
133
+ export class XLNot {
134
+ constructor() {
135
+ this.font = new XLFont();
136
+ this.columnFontColors = [];
137
+ this.columnFontStyles = [];
138
+ }
139
+ }
140
+ export class XLSheet {
141
+ constructor(sheetNo) {
142
+ this.sheetNo = 0;
143
+ this.sheetName = 0;
144
+ if (typeof sheetNo !== 'undefined') {
145
+ this.sheetNo = sheetNo;
146
+ }
147
+ }
148
+ }
149
+ export class XLInterior {
150
+ constructor() {
151
+ this.color = XLRenk.White;
152
+ }
153
+ }
154
+ export class XLBorder {
155
+ constructor() {
156
+ this.type = 'Tümü';
157
+ this.lineStyle = XLLineStyle.xlContinuous;
158
+ this.weight = XlBorderWeigh.xlThin;
159
+ this.color = XLRenk.Black;
160
+ }
161
+ }
162
+ export class XLTableColumnHeader {
163
+ constructor(header = '') {
164
+ this.title = '';
165
+ this.horizontalAlignment = XLHAlign.xlHAlignNone;
166
+ this.verticalAlignment = XlVAlign.xlVAlignNone;
167
+ this.font = new XLFont();
168
+ this.interior = new XLInterior();
169
+ this.border = new XLBorder();
170
+ this.basilacak = true;
171
+ this.satirSayisi = 1;
172
+ this.isMultiLine = false;
173
+ this.title = header;
174
+ }
175
+ }
176
+ export class XLTableColumnData {
177
+ constructor() {
178
+ this.font = new XLFont();
179
+ this.interior = new XLInterior();
180
+ this.border = new XLBorder();
181
+ }
182
+ }
183
+ export class XLTable {
184
+ constructor() {
185
+ this.autoFit = false;
186
+ this.columns = [];
187
+ this.header = new XLTableColumnHeader();
188
+ this.data = new XLTableColumnData();
189
+ this.footer = new XLTableColumnFooter();
190
+ this.tableNo = 1;
191
+ this.sol = 1;
192
+ this.ust = 1;
193
+ this.veriKaynagi = 'Collection';
194
+ this.sheetName = 'xlSheet';
195
+ this.hiddenRows = [];
196
+ this.sort = [];
197
+ this.rows = [];
198
+ this.columnFontNames = [];
199
+ this.columnFontSizes = [];
200
+ this.columnFontColors = [];
201
+ this.columnFontStyles = [];
202
+ this.columnInteriorColors = [];
203
+ this.columnHeaderFontNames = [];
204
+ this.columnHeaderFontSizes = [];
205
+ this.columnHeaderFontColors = [];
206
+ this.columnHeaderFontStyles = [];
207
+ this.columnHeaderInteriorColors = [];
208
+ this.columnFooterFontNames = [];
209
+ this.columnFooterFontSizes = [];
210
+ this.columnFooterFontColors = [];
211
+ this.columnFooterFontStyles = [];
212
+ this.columnFooterInteriorColors = [];
213
+ this.rowFontNames = [];
214
+ this.rowFontSizes = [];
215
+ this.rowFontColors = [];
216
+ this.rowFontStyles = [];
217
+ this.rowInteriorColors = [];
218
+ this.rowFormats = [];
219
+ this.rowHorizontalAlignments = [];
220
+ this.rowVerticalAlignments = [];
221
+ this.cellFontNames = [];
222
+ this.cellFontSizes = [];
223
+ this.cellFontColors = [];
224
+ this.cellFontStyles = [];
225
+ this.cellInteriorColors = [];
226
+ this.cellFormats = [];
227
+ this.cellHorizontalAlignments = [];
228
+ this.cellVerticalAlignments = [];
229
+ this.rangeFontNames = [];
230
+ this.rangeFontSizes = [];
231
+ this.rangeFontColors = [];
232
+ this.rangeFontStyles = [];
233
+ this.rangeInteriorColors = [];
234
+ this.rangeFormats = [];
235
+ this.rangeHorizontalAlignments = [];
236
+ this.rangeVerticalAlignments = [];
237
+ }
238
+ addColumn(property, type = VariableType.Text, header = '', genislik = 0) {
239
+ const column = new XLTableColumn();
240
+ const columnHeader = header.replace('<p>', '\r');
241
+ const columnCount = this.columns.length + 1;
242
+ column.property = property;
243
+ column.arrayType = type;
244
+ column.columnNo = columnCount;
245
+ column.header = new XLTableColumnHeader(columnHeader);
246
+ column.footer = new XLTableColumnFooter();
247
+ column.horizontalAlignment = XLHAlign.xlHAlignNone;
248
+ column.verticalAlignment = XlVAlign.xlVAlignNone;
249
+ column.format = NumberFormatlar.Belirsiz;
250
+ column.width = genislik;
251
+ switch (type) {
252
+ case VariableType.Integer:
253
+ column.format = NumberFormatlar.Long;
254
+ break;
255
+ case VariableType.Longint:
256
+ column.format = NumberFormatlar.Long;
257
+ break;
258
+ case VariableType.Real:
259
+ column.format = NumberFormatlar.Real;
260
+ break;
261
+ case VariableType.Date:
262
+ column.format = NumberFormatlar.Tarih;
263
+ break;
264
+ default:
265
+ break;
266
+ }
267
+ const headerSatirAdet = this.header.satirSayisi;
268
+ const tempSize = columnHeader.split('\r').length;
269
+ if (tempSize > headerSatirAdet) {
270
+ this.header.satirSayisi = tempSize;
271
+ }
272
+ this.columns.push(column);
273
+ return column;
274
+ }
275
+ columnFormat(format, columnNo) {
276
+ let _columnNo = 0;
277
+ if (typeof columnNo === 'undefined') {
278
+ _columnNo = this.columns.length;
279
+ }
280
+ else {
281
+ _columnNo = columnNo;
282
+ }
283
+ this.columns[_columnNo - 1].format = format;
284
+ }
285
+ rowFontColorAdd(color, rowNo) {
286
+ let _rowNo = 0;
287
+ if (typeof rowNo === 'undefined') {
288
+ _rowNo = this.rows.length;
289
+ }
290
+ else {
291
+ _rowNo = rowNo;
292
+ }
293
+ this.rowFontColors.push(new RowFontColor(color, _rowNo));
294
+ }
295
+ rowInteriorColorAdd(color, rowNo) {
296
+ let _rowNo = 0;
297
+ if (typeof rowNo === 'undefined') {
298
+ _rowNo = this.rows.length;
299
+ }
300
+ else {
301
+ _rowNo = rowNo;
302
+ }
303
+ this.rowInteriorColors.push(new RowInteriorColor(color, _rowNo));
304
+ }
305
+ setColumnFooter(title, columnNo) {
306
+ let _columnNo = 0;
307
+ if (typeof columnNo === 'undefined') {
308
+ _columnNo = this.columns.length;
309
+ }
310
+ else {
311
+ _columnNo = columnNo;
312
+ }
313
+ this.columns[_columnNo - 1].setFooter(title);
314
+ }
315
+ setColumnFooterFunction(footerFunction, columnNo) {
316
+ let _columnNo = 0;
317
+ if (typeof columnNo === 'undefined') {
318
+ _columnNo = this.columns.length;
319
+ }
320
+ else {
321
+ _columnNo = columnNo;
322
+ }
323
+ this.columns[_columnNo - 1].setFooterFunction(footerFunction);
324
+ }
325
+ hiddenRowsInit() {
326
+ this.hiddenRows = [];
327
+ }
328
+ sortInit() {
329
+ this.sort = [];
330
+ }
331
+ rowsInit() {
332
+ this.rows = [];
333
+ }
334
+ columnFormatsInit() {
335
+ this.columnFontNames = [];
336
+ this.columnFontSizes = [];
337
+ this.columnFontColors = [];
338
+ this.columnFontStyles = [];
339
+ this.columnInteriorColors = [];
340
+ this.columnHeaderFontNames = [];
341
+ this.columnHeaderFontSizes = [];
342
+ this.columnHeaderFontColors = [];
343
+ this.columnHeaderFontStyles = [];
344
+ this.columnHeaderInteriorColors = [];
345
+ this.columnFooterFontNames = [];
346
+ this.columnFooterFontSizes = [];
347
+ this.columnFooterFontColors = [];
348
+ this.columnFooterFontStyles = [];
349
+ this.columnFooterInteriorColors = [];
350
+ }
351
+ rowFormatsInit() {
352
+ this.rowFontNames = [];
353
+ this.rowFontSizes = [];
354
+ this.rowFontColors = [];
355
+ this.rowFontStyles = [];
356
+ this.rowInteriorColors = [];
357
+ this.rowFormats = [];
358
+ this.rowHorizontalAlignments = [];
359
+ this.rowVerticalAlignments = [];
360
+ }
361
+ cellFormatsInit() {
362
+ this.cellFontNames = [];
363
+ this.cellFontSizes = [];
364
+ this.cellFontColors = [];
365
+ this.cellFontStyles = [];
366
+ this.cellInteriorColors = [];
367
+ this.cellFormats = [];
368
+ this.cellHorizontalAlignments = [];
369
+ this.cellVerticalAlignments = [];
370
+ }
371
+ rangeFormatsInit() {
372
+ this.rangeFontNames = [];
373
+ this.rangeFontSizes = [];
374
+ this.rangeFontColors = [];
375
+ this.rangeFontStyles = [];
376
+ this.rangeInteriorColors = [];
377
+ this.rangeFormats = [];
378
+ this.rangeHorizontalAlignments = [];
379
+ this.rangeVerticalAlignments = [];
380
+ }
381
+ get _sheetName() {
382
+ return this.sheetName;
383
+ }
384
+ set _sheetName(value) {
385
+ this.sheetName = value;
386
+ }
387
+ }
388
+ export class XLTableColumnFooter {
389
+ constructor() {
390
+ this.title = '';
391
+ this.font = new XLFont();
392
+ this.interior = new XLInterior();
393
+ this.border = new XLBorder();
394
+ this.basilacak = false;
395
+ this.satirSayisi = 1;
396
+ this.isFunction = false;
397
+ this.horizontalAlignment = XLHAlign.xlHAlignNone;
398
+ this.verticalAlignment = XlVAlign.xlVAlignNone;
399
+ this.function = XLFuncs.None;
400
+ }
401
+ }
402
+ export class XLTableColumn {
403
+ constructor() {
404
+ this.property = '';
405
+ this.arrayType = VariableType.Text;
406
+ this.columnNo = 0;
407
+ this.header = new XLTableColumnHeader();
408
+ this.footer = new XLTableColumnFooter();
409
+ this.horizontalAlignment = XLHAlign.xlHAlignNone;
410
+ this.verticalAlignment = XlVAlign.xlVAlignNone;
411
+ this.format = 0;
412
+ this.width = 0;
413
+ }
414
+ setFooterFunction(footerFunction) {
415
+ this.footer.basilacak = true;
416
+ this.footer.function = footerFunction;
417
+ this.footer.isFunction = true;
418
+ }
419
+ setFooter(title) {
420
+ this.footer.basilacak = true;
421
+ this.footer.title = title;
422
+ this.footer.isFunction = false;
423
+ }
424
+ }
425
+ export class RowFontColor {
426
+ constructor(color, rowNo) {
427
+ this.color = color;
428
+ this.rowNo = rowNo;
429
+ }
430
+ }
431
+ export class RowInteriorColor {
432
+ constructor(color, rowNo) {
433
+ this.color = color;
434
+ this.rowNo = rowNo;
435
+ }
436
+ }
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL21vZGVscy94bENvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEYsTUFBTSxPQUFPLFFBQVE7SUF3Qm5CLFlBQVksUUFBaUIsRUFBRSxRQUFpQjtRQXZCaEQsU0FBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRTNCLHNCQUFpQixHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLDZCQUF3QixHQUFHLE9BQU8sQ0FBQztRQUNuQyxzQkFBaUIsR0FBRyxRQUFRLENBQUM7UUFDN0IsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQy9CLFdBQU0sR0FBRyxTQUFTLENBQUM7UUFDbkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLGdCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUU1QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBQ3RCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsUUFBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFFbEIsV0FBTSxHQUFjLEVBQUUsQ0FBQztRQUV2QixXQUFNLEdBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBR25DLElBQUksQ0FBQyxPQUFPLFFBQVEsS0FB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bnQiOlsiaW1wb3J0IHsgRm9udFN0eWxlLCBOdW1iZXJGb3JtYXRsYXIsIFZhcmlhYmxlVHlwZSwgWExSZW5rIH0gZnJvbSAnLi9mb3VyRENvbnN0YW50cyc7XHJcbmltcG9ydCB7IFhsQm9yZGVyV2VpZ2gsIFhMRnVuY3MsIFhMSEFsaWduLCBYTExpbmVTdHlsZSwgWGxWQWxpZ24gfSBmcm9tICcuL3hsQ29uc3RhbnRzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBYTENvbmZpZyB7XHJcbiAgbG9nbyA9IG5ldyBYTExvZ28oKTtcclxuICBkZWZhdWx0Rm9udCA9IG5ldyBYTEZvbnQoKTtcclxuXHJcbiAgY3VycmVudFRhYmxlU3R5bGUgPSAnVGFibGVTdHlsZUxpZ2h0MTAnO1xyXG4gIGN1cnJlbnRUYWJsZSA9IDE7XHJcbiAgY3VycmVudEFwcGxpY2F0aW9uT2JqZWN0ID0gJ3hsQXBwJztcclxuICBjdXJyZW50Qm9va09iamVjdCA9ICd4bEJvb2snO1xyXG4gIGN1cnJlbnRTaGVldE9iamVjdCA9ICd4bFNoZWV0JztcclxuICBhdXRob3IgPSAnTWVkUGxhbic7XHJcbiAgc2lmaXJsYXJpQmFzbWEgPSBmYWxzZTtcclxuICBzaGVldE5hbWUgPSAnJztcclxuXHJcbiAgdXN0QmlsZ2lsZXI6IFhMVXN0QmlsZ2lTYXRpcltdID0gW107XHJcbiAgdXN0QmlsZ2kgPSBuZXcgWExVc3RCaWxnaSgpO1xyXG5cclxuICBub3RsYXI6IHN0cmluZ1tdID0gW107XHJcbiAgc2NyaXB0czogc3RyaW5nW10gPSBbXTtcclxuICBub3QgPSBuZXcgWExOb3QoKTtcclxuXHJcbiAgdGFibGVzOiBYTFRhYmxlW10gPSBbXTtcclxuXHJcbiAgc2hlZXRzOiBYTFNoZWV0W10gPSBbbmV3IFhMU2hlZXQoMSldO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihmb250TmFtZT86IHN0cmluZywgZm9udFNpemU/OiBudW1iZXIpIHtcclxuICAgIGlmICgodHlwZW9mIGZvbnROYW1lICE9PSAndW5kZWZpbmVkJykgfHwgKHR5cGVvZiBmb250U2l6ZSAhPT0gJ3VuZGVmaW5lZCcpKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdEZvbnQgPSBuZXcgWExGb250KGZvbnROYW1lLCBmb250U2l6ZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMuYWRkVGFibGUoKTtcclxuICAgIHRhYmxlLnRhYmxlTm8gPSB0aGlzLnRhYmxlcy5sZW5ndGggKyAxO1xyXG5cclxuICAgIHRoaXMudGFibGVzLnB1c2godGFibGUpO1xyXG5cclxuICB9XHJcblxyXG4gIHVzdEJpbGdpU2F0aXJFa2xlKHNhdGlyOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVzdEJpbGdpID0gbmV3IFhMVXN0QmlsZ2lTYXRpcigpO1xyXG4gICAgdXN0QmlsZ2kucm93Tm8gPSB0aGlzLnVzdEJpbGdpbGVyLmxlbmd0aCArIDE7XHJcbiAgICB1c3RCaWxnaS51c3RCaWxnaSA9IHNhdGlyO1xyXG5cclxuICAgIHRoaXMudXN0QmlsZ2lsZXIucHVzaCh1c3RCaWxnaSk7XHJcbiAgfVxyXG5cclxuICBhZGRUYWJsZSgpOiBYTFRhYmxlIHtcclxuICAgIGNvbnN0IHRhYmxlID0gbmV3IFhMVGFibGUoKTtcclxuICAgIHRhYmxlLnNvbCA9IDE7XHJcbiAgICB0YWJsZS51c3QgPSAxO1xyXG4gICAgdGFibGUuaGVhZGVyLmJhc2lsYWNhayA9IHRydWU7XHJcbiAgICB0YWJsZS5mb290ZXIuYmFzaWxhY2FrID0gZmFsc2U7XHJcbiAgICB0YWJsZS5oZWFkZXIgPSBuZXcgWExUYWJsZUNvbHVtbkhlYWRlcigpO1xyXG4gICAgdGFibGUuaGVhZGVyLmludGVyaW9yLmNvbG9yID0gWExSZW5rLldoaXRlO1xyXG4gICAgdGFibGUuZGF0YSA9IG5ldyBYTFRhYmxlQ29sdW1uRGF0YSgpO1xyXG4gICAgdGFibGUuZGF0YS5pbnRlcmlvci5jb2xvciA9IFhMUmVuay5XaGl0ZTtcclxuICAgIHRhYmxlLmZvb3RlciA9IG5ldyBYTFRhYmxlQ29sdW1uRm9vdGVyKCk7XHJcbiAgICB0YWJsZS5mb290ZXIuaW50ZXJpb3IuY29sb3IgPSBYTFJlbmsuV2hpdGU7XHJcblxyXG4gICAgdGFibGUuaGlkZGVuUm93c0luaXQoKTtcclxuICAgIHRhYmxlLnNvcnRJbml0KCk7XHJcbiAgICB0YWJsZS5yb3dzSW5pdCgpO1xyXG4gICAgdGFibGUuY29sdW1uRm9ybWF0c0luaXQoKTtcclxuXHJcbiAgICB0YWJsZS5yb3dGb3JtYXRzSW5pdCgpO1xyXG4gICAgdGFibGUuY2VsbEZvcm1hdHNJbml0KCk7XHJcbiAgICB0YWJsZS5yYW5nZUZvcm1hdHNJbml0KCk7XHJcblxyXG4gICAgLypcclxuICAgICAgICBYTF9UX0hlYWRlckJvcmRlckFsbFNldChVdGlsc0JvcmRlclR1bXU7IHhsQ29udGludW91czsgeGxUaGluOyBjbEJsYWNrKVxyXG4gICAgICAgIFhMX1RfRGF0YUJvcmRlckFsbFNldChVdGlsc0JvcmRlclR1bXU7IHhsQ29udGludW91czsgeGxUaGluOyBjbEJsYWNrKVxyXG4gICAgICAgIFhMX1RfRm9vdGVyQm9yZGVyQWxsU2V0KFV0aWxzQm9yZGVyVHVtdTsgeGxDb250aW51b3VzOyB4bFRoaW47IGNsQmxhY2spXHJcbiAgICAgICAgWExfVF9IZWFkZXJGb250QWxsU2V0KFhMX0RlZmF1bHRGb250TmFtZSA7IFhMX0RlZmF1bHRGb250U2l6ZTsgUGxhaW47IGNsQmxhY2spXHJcbiAgICAgICAgWExfVF9EYXRhRm9udEFsbFNldChYTF9EZWZhdWx0Rm9udE5hbWUgOyBYTF9EZWZhdWx0Rm9udFNpemU7IFBsYWluOyBjbEJsYWNrKVxyXG4gICAgICAgIFhMX1RfRm9vdGVyRm9udEFsbFNldChYTF9EZWZhdWx0Rm9udE5hbWUgOyBYTF9EZWZhdWx0Rm9udFNpemU7IFBsYWluOyBjbEJsYWNrKVxyXG4gICAgICAgIFhMX1RfU2hlZXROYW1lU2V0KFhMX1NfQ3VycmVudClcclxuKi9cclxuXHJcbiAgICByZXR1cm4gdGFibGU7XHJcbiAgfVxyXG5cclxuICBzaGVldFJvd3NSb3dIZWlnaHRTY3JpcHQocm93SGVpZ2h0OiBudW1iZXIsIGJhc2xhbmdpY1NhdGlyaTogbnVtYmVyLCBiaXRpc1NhdGlyaT86IG51bWJlciwgc2hlZXROYW1lPzogc3RyaW5nKSB7XHJcbiAgICBsZXQgX3NoZWV0TmFtZSA9IHRoaXMuY3VycmVudFNoZWV0T2JqZWN0O1xyXG4gICAgbGV0IF9iaXRpc1NhdGlyaSA9IGJhc2xhbmdpY1NhdGlyaTtcclxuXHJcbiAgICBpZiAoKHNoZWV0TmFtZSAhPT0gdW5kZWZpbmVkKSAmJiAoc2hlZXROYW1lICE9PSBudWxsKSkge1xyXG4gICAgICBfc2hlZXROYW1lID0gc2hlZXROYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgoYml0aXNTYXRpcmkgIT09IHVuZGVmaW5lZCkgJiYgKGJpdGlzU2F0aXJpICE9PSBudWxsKSkge1xyXG4gICAgICBfYml0aXNTYXRpcmkgPSBiaXRpc1NhdGlyaTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYmFzbGFuZ2ljU2F0aXJpID09PSBfYml0aXNTYXRpcmkpIHtcclxuICAgICAgdGhpcy5zY3JpcHRzLnB1c2goX3NoZWV0TmFtZSArICcuUm93cyhcIicgKyBiYXNsYW5naWNTYXRpcmkudG9TdHJpbmcoKSArICdcIikuUm93SGVpZ2h0ID0gJyArIHRoaXMuVkJTUmVhbFRvVGV4dChyb3dIZWlnaHQpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNjcmlwdHMucHVzaChfc2hlZXROYW1lICsgJy5Sb3dzKFwiJyArIGJhc2xhbmdpY1NhdGlyaS50b1N0cmluZygpICsgJzonICsgX2JpdGlzU2F0aXJpLnRvU3RyaW5nKCkgKyAnXCIpLlJvd0hlaWdodCA9ICcgKyB0aGlzLlZCU1JlYWxUb1RleHQocm93SGVpZ2h0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRTY3JpcHQoc2NyaXB0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2NyaXB0cy5wdXNoKHNjcmlwdCk7XHJcbiAgfVxyXG5cclxuICBWQlNSZWFsVG9UZXh0KHNheWk6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc2F5aS50b1N0cmluZygpLnJlcGxhY2UoL1ssXS9nLCAnLicpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExVc3RCaWxnaVNhdGlyIHtcclxuICByb3dObyA9IDA7XHJcbiAgZm9udCA9IG5ldyBYTEZvbnQoJycsIDApO1xyXG4gIHVzdEJpbGdpID0gJyc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTExvZ28ge1xyXG4gIGdlbmlzbGlrID0gMDtcclxuICB5dWtzZWtsaWsgPSAwO1xyXG4gIHVzdE1hcmppbiA9IDA7XHJcbiAgc29sTWFyamluID0gMDtcclxuICBlYmF0UGl4ZWxtaSA9IGZhbHNlO1xyXG4gIGViYXQgPSAnJztcclxuICBrb251bSA9ICcnO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExGb250IHtcclxuICBuYW1lID0gJ0NhbGlicmknO1xyXG4gIHNpemUgPSAxMTtcclxuICBjb2xvciA9IFhMUmVuay5CbGFjaztcclxuICBzdHlsZSA9IEZvbnRTdHlsZS5QbGFpbjtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9udE5hbWU/OiBzdHJpbmcsIGZvbnRTaXplPzogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZW9mIGZvbnROYW1lICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLm5hbWUgPSBmb250TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGZvbnRTaXplICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLnNpemUgPSBmb250U2l6ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTFVzdEJpbGdpIHtcclxuICBmb250ID0gbmV3IFhMRm9udCgpO1xyXG4gIGNvbHVtbkZvbnRDb2xvcnM6IHN0cmluZ1tdID0gW107XHJcbiAgY29sdW1uRm9udFN0eWxlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9udE5hbWU/OiBzdHJpbmcsIGZvbnRTaXplPzogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZW9mIGZvbnROYW1lICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLmZvbnQubmFtZSA9IGZvbnROYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgZm9udFNpemUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHRoaXMuZm9udC5zaXplID0gZm9udFNpemU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhMTm90IHtcclxuICBmb250ID0gbmV3IFhMRm9udCgpO1xyXG4gIGNvbHVtbkZvbnRDb2xvcnM6IHN0cmluZ1tdID0gW107XHJcbiAgY29sdW1uRm9udFN0eWxlczogc3RyaW5nW10gPSBbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhMU2hlZXQge1xyXG4gIHNoZWV0Tm8gPSAwO1xyXG4gIHNoZWV0TmFtZSA9IDA7XHJcbiAgY29uc3RydWN0b3Ioc2hlZXRObzogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZW9mIHNoZWV0Tm8gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHRoaXMuc2hlZXRObyA9IHNoZWV0Tm87XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTEludGVyaW9yIHtcclxuICBjb2xvcjogWExSZW5rID0gWExSZW5rLldoaXRlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExCb3JkZXIge1xyXG4gIHR5cGUgPSAnVMO8bcO8JztcclxuICBsaW5lU3R5bGUgPSBYTExpbmVTdHlsZS54bENvbnRpbnVvdXM7XHJcbiAgd2VpZ2h0ID0gWGxCb3JkZXJXZWlnaC54bFRoaW47XHJcbiAgY29sb3IgPSBYTFJlbmsuQmxhY2s7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTFRhYmxlQ29sdW1uSGVhZGVyIHtcclxuICB0aXRsZSA9ICcnO1xyXG4gIGhvcml6b250YWxBbGlnbm1lbnQgPSBYTEhBbGlnbi54bEhBbGlnbk5vbmU7XHJcbiAgdmVydGljYWxBbGlnbm1lbnQgPSBYbFZBbGlnbi54bFZBbGlnbk5vbmU7XHJcbiAgZm9udCA9IG5ldyBYTEZvbnQoKTtcclxuICBpbnRlcmlvciA9IG5ldyBYTEludGVyaW9yKCk7XHJcbiAgYm9yZGVyID0gbmV3IFhMQm9yZGVyKCk7XHJcbiAgYmFzaWxhY2FrID0gdHJ1ZTtcclxuICBzYXRpclNheWlzaSA9IDE7XHJcbiAgaXNNdWx0aUxpbmUgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihoZWFkZXIgPSAnJykge1xyXG4gICAgdGhpcy50aXRsZSA9IGhlYWRlcjtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTFRhYmxlQ29sdW1uRGF0YSB7XHJcbiAgZm9udCA9IG5ldyBYTEZvbnQoKTtcclxuICBpbnRlcmlvciA9IG5ldyBYTEludGVyaW9yKCk7XHJcbiAgYm9yZGVyID0gbmV3IFhMQm9yZGVyKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYTFRhYmxlIHtcclxuICBhdXRvRml0ID0gZmFsc2U7XHJcbiAgY29sdW1uczogWExUYWJsZUNvbHVtbltdID0gW107XHJcbiAgaGVhZGVyID0gbmV3IFhMVGFibGVDb2x1bW5IZWFkZXIoKTtcclxuICBkYXRhID0gbmV3IFhMVGFibGVDb2x1bW5EYXRhKCk7XHJcbiAgZm9vdGVyID0gbmV3IFhMVGFibGVDb2x1bW5Gb290ZXIoKTtcclxuICB0YWJsZU5vID0gMTtcclxuICBjb2xsZWN0aW9uOiBzdHJpbmdbXTtcclxuICBzb2wgPSAxO1xyXG4gIHVzdCA9IDE7XHJcbiAgdmVyaUtheW5hZ2kgPSAnQ29sbGVjdGlvbic7XHJcbiAgc2hlZXROYW1lID0gJ3hsU2hlZXQnO1xyXG4gIGhpZGRlblJvd3M6IG51bWJlcltdID0gW107XHJcbiAgc29ydDogbnVtYmVyW10gPSBbXTtcclxuICByb3dzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNvbHVtbkZvbnROYW1lczogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5Gb250U2l6ZXM6IG51bWJlcltdID0gW107XHJcbiAgY29sdW1uRm9udENvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5Gb250U3R5bGVzOiBGb250U3R5bGVbXSA9IFtdO1xyXG4gIGNvbHVtbkludGVyaW9yQ29sb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNvbHVtbkhlYWRlckZvbnROYW1lczogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5IZWFkZXJGb250U2l6ZXM6IG51bWJlcltdID0gW107XHJcbiAgY29sdW1uSGVhZGVyRm9udENvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5IZWFkZXJGb250U3R5bGVzOiBGb250U3R5bGVbXSA9IFtdO1xyXG4gIGNvbHVtbkhlYWRlckludGVyaW9yQ29sb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNvbHVtbkZvb3RlckZvbnROYW1lczogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5Gb290ZXJGb250U2l6ZXM6IG51bWJlcltdID0gW107XHJcbiAgY29sdW1uRm9vdGVyRm9udENvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICBjb2x1bW5Gb290ZXJGb250U3R5bGVzOiBGb250U3R5bGVbXSA9IFtdO1xyXG4gIGNvbHVtbkZvb3RlckludGVyaW9yQ29sb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHJvd0ZvbnROYW1lczogc3RyaW5nW10gPSBbXTtcclxuICByb3dGb250U2l6ZXM6IG51bWJlcltdID0gW107XHJcbiAgcm93Rm9udENvbG9yczogUm93Rm9udENvbG9yW10gPSBbXTtcclxuICByb3dGb250U3R5bGVzOiBGb250U3R5bGVbXSA9IFtdO1xyXG4gIHJvd0ludGVyaW9yQ29sb3JzOiBSb3dJbnRlcmlvckNvbG9yW10gPSBbXTtcclxuICByb3dGb3JtYXRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHJvd0hvcml6b250YWxBbGlnbm1lbnRzOiBYTEhBbGlnbltdID0gW107XHJcbiAgcm93VmVydGljYWxBbGlnbm1lbnRzOiBYbFZBbGlnbltdID0gW107XHJcbiAgY2VsbEZvbnROYW1lczogc3RyaW5nW10gPSBbXTtcclxuICBjZWxsRm9udFNpemVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIGNlbGxGb250Q29sb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNlbGxGb250U3R5bGVzOiBGb250U3R5bGVbXSA9IFtdO1xyXG4gIGNlbGxJbnRlcmlvckNvbG9yczogc3RyaW5nW10gPSBbXTtcclxuICBjZWxsRm9ybWF0czogc3RyaW5nW10gPSBbXTtcclxuICBjZWxsSG9yaXpvbnRhbEFsaWdubWVudHM6IFhMSEFsaWduW10gPSBbXTtcclxuICBjZWxsVmVydGljYWxBbGlnbm1lbnRzOiBYbFZBbGlnbltdID0gW107XHJcbiAgcmFuZ2VGb250TmFtZXM6IHN0cmluZ1tdID0gW107XHJcbiAgcmFuZ2VGb250U2l6ZXM6IG51bWJlcltdID0gW107XHJcbiAgcmFuZ2VGb250Q29sb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHJhbmdlRm9udFN0eWxlczogRm9udFN0eWxlW10gPSBbXTtcclxuICByYW5nZUludGVyaW9yQ29sb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHJhbmdlRm9ybWF0czogc3RyaW5nW10gPSBbXTtcclxuICByYW5nZUhvcml6b250YWxBbGlnbm1lbnRzOiBYTEhBbGlnbltdID0gW107XHJcbiAgcmFuZ2VWZXJ0aWNhbEFsaWdubWVudHM6IFhsVkFsaWduW10gPSBbXTtcclxuXHJcbiAgYWRkQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcsIHR5cGUgPSBWYXJpYWJsZVR5cGUuVGV4dCwgaGVhZGVyID0gJycsIGdlbmlzbGlrID0gMCk6IFhMVGFibGVDb2x1bW4ge1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBYTFRhYmxlQ29sdW1uKCk7XHJcbiAgICBjb25zdCBjb2x1bW5IZWFkZXIgPSBoZWFkZXIucmVwbGFjZSgnPHA+JywgJ1xccicpO1xyXG4gICAgY29uc3QgY29sdW1uQ291bnQgPSB0aGlzLmNvbHVtbnMubGVuZ3RoICsgMTtcclxuXHJcbiAgICBjb2x1bW4ucHJvcGVydHkgPSBwcm9wZXJ0eTtcclxuICAgIGNvbHVtbi5hcnJheVR5cGUgPSB0eXBlO1xyXG4gICAgY29sdW1uLmNvbHVtbk5vID0gY29sdW1uQ291bnQ7XHJcbiAgICBjb2x1bW4uaGVhZGVyID0gbmV3IFhMVGFibGVDb2x1bW5IZWFkZXIoY29sdW1uSGVhZGVyKTtcclxuXHJcbiAgICBjb2x1bW4uZm9vdGVyID0gbmV3IFhMVGFibGVDb2x1bW5Gb290ZXIoKTtcclxuICAgIGNvbHVtbi5ob3Jpem9udGFsQWxpZ25tZW50ID0gWExIQWxpZ24ueGxIQWxpZ25Ob25lO1xyXG4gICAgY29sdW1uLnZlcnRpY2FsQWxpZ25tZW50ID0gWGxWQWxpZ24ueGxWQWxpZ25Ob25lO1xyXG4gICAgY29sdW1uLmZvcm1hdCA9IE51bWJlckZvcm1hdGxhci5CZWxpcnNpejtcclxuICAgIGNvbHVtbi53aWR0aCA9IGdlbmlzbGlrO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFZhcmlhYmxlVHlwZS5JbnRlZ2VyOlxyXG4gICAgICAgIGNvbHVtbi5mb3JtYXQgPSBOdW1iZXJGb3JtYXRsYXIuTG9uZztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgVmFyaWFibGVUeXBlLkxvbmdpbnQ6XHJcbiAgICAgICAgY29sdW1uLmZvcm1hdCA9IE51bWJlckZvcm1hdGxhci5Mb25nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBWYXJpYWJsZVR5cGUuUmVhbDpcclxuICAgICAgICBjb2x1bW4uZm9ybWF0ID0gTnVtYmVyRm9ybWF0bGFyLlJlYWw7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFZhcmlhYmxlVHlwZS5EYXRlOlxyXG4gICAgICAgIGNvbHVtbi5mb3JtYXQgPSBOdW1iZXJGb3JtYXRsYXIuVGFyaWg7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhlYWRlclNhdGlyQWRldCA9IHRoaXMuaGVhZGVyLnNhdGlyU2F5aXNpO1xyXG4gICAgY29uc3QgdGVtcFNpemUgPSBjb2x1bW5IZWFkZXIuc3BsaXQoJ1xccicpLmxlbmd0aDtcclxuICAgIGlmICh0ZW1wU2l6ZSA+IGhlYWRlclNhdGlyQWRldCkge1xyXG4gICAgICB0aGlzLmhlYWRlci5zYXRpclNheWlzaSA9IHRlbXBTaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICByZXR1cm4gY29sdW1uO1xyXG4gIH1cclxuXHJcbiAgY29sdW1uRm9ybWF0KGZvcm1hdDogTnVtYmVyRm9ybWF0bGFyLCBjb2x1bW5Obz86IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IF9jb2x1bW5ObyA9IDA7XHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbk5vID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBfY29sdW1uTm8gPSB0aGlzLmNvbHVtbnMubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX2NvbHVtbk5vID0gY29sdW1uTm87XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb2x1bW5zW19jb2x1bW5ObyAtIDFdLmZvcm1hdCA9IGZvcm1hdDtcclxuICB9XHJcblxyXG4gIHJvd0ZvbnRDb2xvckFkZChjb2xvcjogWExSZW5rLCByb3dObz86IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IF9yb3dObyA9IDA7XHJcbiAgICBpZiAodHlwZW9mIHJvd05vID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBfcm93Tm8gPSB0aGlzLnJvd3MubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX3Jvd05vID0gcm93Tm87XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yb3dGb250Q29sb3JzLnB1c2gobmV3IFJvd0ZvbnRDb2xvcihjb2xvciwgX3Jvd05vKSk7XHJcbiAgfVxyXG5cclxuICByb3dJbnRlcmlvckNvbG9yQWRkKGNvbG9yOiBYTFJlbmssIHJvd05vPzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgX3Jvd05vID0gMDtcclxuICAgIGlmICh0eXBlb2Ygcm93Tm8gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIF9yb3dObyA9IHRoaXMucm93cy5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfcm93Tm8gPSByb3dObztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvd0ludGVyaW9yQ29sb3JzLnB1c2gobmV3IFJvd0ludGVyaW9yQ29sb3IoY29sb3IsIF9yb3dObykpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29sdW1uRm9vdGVyKHRpdGxlOiBzdHJpbmcsIGNvbHVtbk5vPzogbnVtYmVyKSB7XHJcbiAgICBsZXQgX2NvbHVtbk5vID0gMDtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uTm8gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIF9jb2x1bW5ObyA9IHRoaXMuY29sdW1ucy5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfY29sdW1uTm8gPSBjb2x1bW5ObztcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1uc1tfY29sdW1uTm8gLSAxXS5zZXRGb290ZXIodGl0bGUpO1xyXG5cclxuICB9XHJcblxyXG4gIHNldENvbHVtbkZvb3RlckZ1bmN0aW9uKGZvb3RlckZ1bmN0aW9uOiBYTEZ1bmNzLCBjb2x1bW5Obz86IG51bWJlcikge1xyXG4gICAgbGV0IF9jb2x1bW5ObyA9IDA7XHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbk5vID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBfY29sdW1uTm8gPSB0aGlzLmNvbHVtbnMubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX2NvbHVtbk5vID0gY29sdW1uTm87XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbHVtbnNbX2NvbHVtbk5vIC0gMV0uc2V0Rm9vdGVyRnVuY3Rpb24oZm9vdGVyRnVuY3Rpb24pO1xyXG5cclxuICB9XHJcblxyXG4gIGhpZGRlblJvd3NJbml0KCkge1xyXG4gICAgdGhpcy5oaWRkZW5Sb3dzID0gW107XHJcbiAgfVxyXG5cclxuICBzb3J0SW5pdCgpIHtcclxuICAgIHRoaXMuc29ydCA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcm93c0luaXQoKSB7XHJcbiAgICB0aGlzLnJvd3MgPSBbXTtcclxuICB9XHJcblxyXG4gIGNvbHVtbkZvcm1hdHNJbml0KCkge1xyXG4gICAgdGhpcy5jb2x1bW5Gb250TmFtZXMgPSBbXTtcclxuICAgIHRoaXMuY29sdW1uRm9udFNpemVzID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkZvbnRDb2xvcnMgPSBbXTtcclxuICAgIHRoaXMuY29sdW1uRm9udFN0eWxlcyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY29sdW1uSW50ZXJpb3JDb2xvcnMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbkhlYWRlckZvbnROYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5IZWFkZXJGb250U2l6ZXMgPSBbXTtcclxuICAgIHRoaXMuY29sdW1uSGVhZGVyRm9udENvbG9ycyA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5IZWFkZXJGb250U3R5bGVzID0gW107XHJcblxyXG4gICAgdGhpcy5jb2x1bW5IZWFkZXJJbnRlcmlvckNvbG9ycyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY29sdW1uRm9vdGVyRm9udE5hbWVzID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkZvb3RlckZvbnRTaXplcyA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5Gb290ZXJGb250Q29sb3JzID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkZvb3RlckZvbnRTdHlsZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbkZvb3RlckludGVyaW9yQ29sb3JzID0gW107XHJcbiAgfVxyXG5cclxuICByb3dGb3JtYXRzSW5pdCgpIHtcclxuICAgIHRoaXMucm93Rm9udE5hbWVzID0gW107XHJcbiAgICB0aGlzLnJvd0ZvbnRTaXplcyA9IFtdO1xyXG4gICAgdGhpcy5yb3dGb250Q29sb3JzID0gW107XHJcbiAgICB0aGlzLnJvd0ZvbnRTdHlsZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLnJvd0ludGVyaW9yQ29sb3JzID0gW107XHJcbiAgICB0aGlzLnJvd0Zvcm1hdHMgPSBbXTtcclxuXHJcbiAgICB0aGlzLnJvd0hvcml6b250YWxBbGlnbm1lbnRzID0gW107XHJcbiAgICB0aGlzLnJvd1ZlcnRpY2FsQWxpZ25tZW50cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgY2VsbEZvcm1hdHNJbml0KCkge1xyXG4gICAgdGhpcy5jZWxsRm9udE5hbWVzID0gW107XHJcbiAgICB0aGlzLmNlbGxGb250U2l6ZXMgPSBbXTtcclxuICAgIHRoaXMuY2VsbEZvbnRDb2xvcnMgPSBbXTtcclxuICAgIHRoaXMuY2VsbEZvbnRTdHlsZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNlbGxJbnRlcmlvckNvbG9ycyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY2VsbEZvcm1hdHMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNlbGxIb3Jpem9udGFsQWxpZ25tZW50cyA9IFtdO1xyXG4gICAgdGhpcy5jZWxsVmVydGljYWxBbGlnbm1lbnRzID0gW107XHJcbiAgfVxyXG5cclxuICByYW5nZUZvcm1hdHNJbml0KCkge1xyXG4gICAgdGhpcy5yYW5nZUZvbnROYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5yYW5nZUZvbnRTaXplcyA9IFtdO1xyXG4gICAgdGhpcy5yYW5nZUZvbnRDb2xvcnMgPSBbXTtcclxuICAgIHRoaXMucmFuZ2VGb250U3R5bGVzID0gW107XHJcbiAgICB0aGlzLnJhbmdlSW50ZXJpb3JDb2xvcnMgPSBbXTtcclxuICAgIHRoaXMucmFuZ2VGb3JtYXRzID0gW107XHJcbiAgICB0aGlzLnJhbmdlSG9yaXpvbnRhbEFsaWdubWVudHMgPSBbXTtcclxuICAgIHRoaXMucmFuZ2VWZXJ0aWNhbEFsaWdubWVudHMgPSBbXTtcclxuICB9XHJcblxyXG4gIGdldCBfc2hlZXROYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zaGVldE5hbWU7XHJcbiAgfVxyXG4gIHNldCBfc2hlZXROYW1lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2hlZXROYW1lID0gdmFsdWU7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhMVGFibGVDb2x1bW5Gb290ZXIge1xyXG4gIHRpdGxlID0gJyc7XHJcbiAgZm9udCA9IG5ldyBYTEZvbnQoKTtcclxuICBpbnRlcmlvciA9IG5ldyBYTEludGVyaW9yKCk7XHJcbiAgYm9yZGVyID0gbmV3IFhMQm9yZGVyKCk7XHJcbiAgYmFzaWxhY2FrID0gZmFsc2U7XHJcbiAgc2F0aXJTYXlpc2kgPSAxO1xyXG4gIGlzRnVuY3Rpb24gPSBmYWxzZTtcclxuICBob3Jpem9udGFsQWxpZ25tZW50ID0gWExIQWxpZ24ueGxIQWxpZ25Ob25lO1xyXG4gIHZlcnRpY2FsQWxpZ25tZW50ID0gWGxWQWxpZ24ueGxWQWxpZ25Ob25lO1xyXG4gIGZ1bmN0aW9uID0gWExGdW5jcy5Ob25lO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgWExUYWJsZUNvbHVtbiB7XHJcbiAgcHJvcGVydHkgPSAnJztcclxuICBhcnJheVR5cGUgPSBWYXJpYWJsZVR5cGUuVGV4dDtcclxuICBjb2x1bW5ObyA9IDA7XHJcbiAgaGVhZGVyID0gbmV3IFhMVGFibGVDb2x1bW5IZWFkZXIoKTtcclxuICBmb290ZXIgPSBuZXcgWExUYWJsZUNvbHVtbkZvb3RlcigpO1xyXG4gIGhvcml6b250YWxBbGlnbm1lbnQgPSBYTEhBbGlnbi54bEhBbGlnbk5vbmU7XHJcbiAgdmVydGljYWxBbGlnbm1lbnQgPSBYbFZBbGlnbi54bFZBbGlnbk5vbmU7XHJcbiAgZm9ybWF0OiBOdW1iZXJGb3JtYXRsYXIgPSAwO1xyXG4gIHdpZHRoID0gMDtcclxuXHJcbiAgc2V0Rm9vdGVyRnVuY3Rpb24oZm9vdGVyRnVuY3Rpb246IFhMRnVuY3MpIHtcclxuICAgIHRoaXMuZm9vdGVyLmJhc2lsYWNhayA9IHRydWU7XHJcbiAgICB0aGlzLmZvb3Rlci5mdW5jdGlvbiA9IGZvb3RlckZ1bmN0aW9uO1xyXG4gICAgdGhpcy5mb290ZXIuaXNGdW5jdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZXRGb290ZXIodGl0bGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5mb290ZXIuYmFzaWxhY2FrID0gdHJ1ZTtcclxuICAgIHRoaXMuZm9vdGVyLnRpdGxlID0gdGl0bGU7XHJcbiAgICB0aGlzLmZvb3Rlci5pc0Z1bmN0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUm93Rm9udENvbG9yIHtcclxuICBjb2xvcjogWExSZW5rO1xyXG4gIHJvd05vOiBudW1iZXI7XHJcbiAgY29uc3RydWN0b3IoY29sb3I6IFhMUmVuaywgcm93Tm86IG51bWJlcikge1xyXG4gICAgdGhpcy5jb2xvciA9IGNvbG9yO1xyXG4gICAgdGhpcy5yb3dObyA9IHJvd05vO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJvd0ludGVyaW9yQ29sb3Ige1xyXG4gIGNvbG9yOiBYTFJlbms7XHJcbiAgcm93Tm86IG51bWJlcjtcclxuICBjb25zdHJ1Y3Rvcihjb2xvcjogWExSZW5rLCByb3dObzogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvbG9yID0gY29sb3I7XHJcbiAgICB0aGlzLnJvd05vID0gcm93Tm87XHJcbiAgfVxyXG59XHJcbiJdfQ==