decode_synth_test.ts 112 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299
  1. /* Copyright 2023 Google Inc. All Rights Reserved.
  2. Distributed under MIT license.
  3. See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
  4. */
  5. import {brotliDecode} from "./decode";
  6. /**
  7. * NB: Use intermediate chunks to avoid "Maximum call stack size exceeded".
  8. */
  9. function bytesToString(bytes: Int8Array): string {
  10. const kChunkSize = 4096;
  11. if (bytes.length <= kChunkSize) {
  12. const chars = new Uint8Array(bytes) as unknown as number[];
  13. return String.fromCharCode.apply(null, chars);
  14. }
  15. const chunks = [];
  16. for (let start = 0; start < bytes.length; start += kChunkSize) {
  17. const end = Math.min(start + 4096, bytes.length);
  18. chunks.push(bytesToString(bytes.slice(start, end)));
  19. }
  20. return chunks.join('');
  21. }
  22. /**
  23. * NB: String.prototype.repeat causes "Maximum call stack size exceeded".
  24. */
  25. function times(count: number, char:string): string {
  26. return char.repeat(count);
  27. }
  28. function checkSynth(
  29. compressed: number[], expectSuccess: boolean, expectedOutput: string) {
  30. let success = true;
  31. let actual: Int8Array|null = null;
  32. try {
  33. actual = brotliDecode(Int8Array.from(compressed));
  34. } catch (ex) {
  35. success = false;
  36. }
  37. expect(expectSuccess).toEqual(success);
  38. if (expectSuccess) {
  39. expect(expectedOutput).toEqual(bytesToString(actual as Int8Array));
  40. }
  41. }
  42. const allTests: object = {
  43. /* GENERATED CODE START */
  44. testAllTransforms10() {
  45. const compressed = [
  46. 0x1b, 0xfc, 0x05, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  47. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x13, 0x7c,
  48. 0x84, 0x26, 0xf8, 0x04, 0x10, 0x4c, 0xf0, 0x89, 0x38, 0x30, 0xc1, 0x27,
  49. 0x4e, 0xc1, 0x04, 0x9f, 0x64, 0x06, 0x26, 0xf8, 0x24, 0x3f, 0x34, 0xc1,
  50. 0x27, 0x7d, 0x82, 0x09, 0x3e, 0xe9, 0x16, 0x4d, 0xf0, 0xc9, 0xd2, 0xc0,
  51. 0x04, 0x9f, 0x0c, 0x8f, 0x4c, 0xf0, 0xc9, 0x06, 0xd1, 0x04, 0x9f, 0x6c,
  52. 0x92, 0x4d, 0xf0, 0xc9, 0x39, 0xc1, 0x04, 0x9f, 0xdc, 0x94, 0x4c, 0xf0,
  53. 0xc9, 0x69, 0xd1, 0x04, 0x9f, 0x3c, 0x98, 0x4d, 0xf0, 0x29, 0x9c, 0x81,
  54. 0x09, 0x3e, 0x45, 0x37, 0x31, 0xc1, 0xa7, 0x60, 0x47, 0x26, 0xf8, 0x14,
  55. 0xfa, 0xcc, 0x04, 0x9f, 0xc2, 0x20, 0x9a, 0xe0, 0x53, 0x48, 0x54, 0x13,
  56. 0x7c, 0x8a, 0x8f, 0x6c, 0x82, 0x4f, 0xb1, 0xd2, 0x4d, 0xf0, 0x29, 0x67,
  57. 0x82, 0x09, 0x3e, 0xe5, 0x4f, 0x31, 0xc1, 0xa7, 0x7c, 0x4a, 0x26, 0xf8,
  58. 0x94, 0x57, 0xcd, 0x04, 0x9f, 0x12, 0x2c, 0x9a, 0xe0, 0x53, 0xba, 0x55,
  59. 0x13, 0x7c, 0xca, 0xbf, 0x6c, 0x82, 0x4f, 0xb9, 0xd8, 0x4d, 0xf0, 0xa9,
  60. 0x30, 0x03, 0x13, 0x7c, 0x2a, 0xd2, 0xc2, 0x04, 0x9f, 0x4a, 0x36, 0x31,
  61. 0xc1, 0xa7, 0xca, 0x6d, 0x4c, 0xf0, 0xa9, 0x94, 0x23, 0x13, 0x7c, 0x2a,
  62. 0xeb, 0xca, 0x04, 0x9f, 0xea, 0x3c, 0x33, 0xc1, 0xa7, 0xb2, 0xef, 0x4c,
  63. 0xf0, 0xa9, 0xf8, 0x43, 0x13, 0x7c, 0xaa, 0x00, 0xd3, 0x04, 0x9f, 0x2a,
  64. 0x42, 0x35, 0xc1, 0xa7, 0xc2, 0x70, 0x4d, 0xf0, 0xa9, 0x52, 0x64, 0x13,
  65. 0x7c, 0x2a, 0x1a, 0xdb, 0x04, 0x9f, 0x6a, 0x48, 0x37, 0xc1, 0xa7, 0x92,
  66. 0xf2, 0x4d, 0xf0, 0xa9, 0xc3, 0x04, 0x13, 0x7c, 0xea, 0x32, 0xc3, 0x04,
  67. 0x9f, 0x7a, 0x4e, 0x31, 0xc1, 0xa7, 0x06, 0x74, 0x4c, 0xf0, 0xa9, 0x19,
  68. 0x25, 0x13, 0x7c, 0x6a, 0x4d, 0xcb, 0x04, 0x9f, 0x1a, 0x55, 0x33, 0xc1,
  69. 0xa7, 0x56, 0xf5, 0x4c, 0xf0, 0xa9, 0x5d, 0x45, 0x13, 0x7c, 0xea, 0x59,
  70. 0xd3, 0x04, 0x9f, 0xfa, 0x57, 0x35, 0xc1, 0xa7, 0x66, 0x76, 0x4d, 0xf0,
  71. 0xa9, 0x9f, 0x65, 0x13, 0x7c, 0x6a, 0x6f, 0xdb, 0x04, 0x9f, 0x9a, 0x5d,
  72. 0x37, 0xc1, 0xa7, 0x06, 0xf8, 0x4d, 0xf0, 0x69, 0x0c, 0x06, 0x26, 0xf8,
  73. 0x34, 0x08, 0x07, 0x13, 0x7c, 0x1a, 0x8b, 0x85, 0x09, 0x3e, 0x8d, 0xc8,
  74. 0xc3, 0x04, 0x9f, 0xe6, 0x65, 0x62, 0x82, 0x4f, 0xb3, 0x73, 0x31, 0xc1,
  75. 0xa7, 0x41, 0xda, 0x98, 0xe0, 0xd3, 0x54, 0x7d, 0x4c, 0xf0, 0x69, 0xc4,
  76. 0x46, 0x26, 0xf8, 0x34, 0x72, 0x27, 0x13, 0x7c, 0x1a, 0xc5, 0x95, 0x09,
  77. 0x3e, 0x8d, 0xe5, 0xcb, 0x04, 0x9f, 0x06, 0x75, 0x66, 0x82, 0x4f, 0x43,
  78. 0x7b, 0x33, 0xc1, 0xa7, 0x09, 0xde, 0x99, 0xe0, 0xd3, 0x34, 0xff, 0x4c,
  79. 0xf0, 0x69, 0xb2, 0x87, 0x26, 0xf8, 0x34, 0xe9, 0x47, 0x13, 0x7c, 0x9a,
  80. 0xfb, 0xa5, 0x09, 0x3e, 0x4d, 0x01, 0xd4, 0x04, 0x9f, 0x46, 0x82, 0x6a,
  81. 0x82, 0x4f, 0x03, 0x82, 0x35, 0xc1, 0xa7, 0x61, 0xe1, 0x9a, 0xe0, 0xd3,
  82. 0xe4, 0x80, 0x4d, 0xf0, 0x69, 0x8a, 0xc8, 0x26, 0xf8, 0x34, 0x52, 0x68,
  83. 0x13, 0x7c, 0x9a, 0x2f, 0xb6, 0x09, 0x3e, 0x8d, 0x1b, 0xdc, 0x04, 0x9f,
  84. 0x86, 0x8f, 0x6e, 0x82, 0x4f, 0xb3, 0x88, 0x37, 0xc1, 0xa7, 0xd9, 0xe4,
  85. 0x9b, 0xe0, 0xd3, 0x9e, 0x02, 0x4c, 0xf0, 0x69, 0x6d, 0x09, 0x26, 0xf8,
  86. 0xb4, 0xc3, 0x08, 0x13, 0x7c, 0x5a, 0x68, 0x86, 0x09, 0x3e, 0xad, 0x37,
  87. 0xc4, 0x04, 0x9f, 0x56, 0x9d, 0x62, 0x82, 0x4f, 0x9b, 0x8f, 0x31, 0xc1,
  88. 0xa7, 0x2d, 0xe8, 0x98, 0xe0, 0xd3, 0x4a, 0x84, 0x4c, 0xf0, 0x69, 0x3f,
  89. 0x4a, 0x26, 0xf8, 0xb4, 0x2c, 0x29, 0x13, 0x7c, 0xda, 0x9c, 0x96, 0x09,
  90. 0x3e, 0x2d, 0x52, 0xcc, 0x04, 0x9f, 0xb6, 0xaa, 0x66, 0x82, 0x4f, 0x2b,
  91. 0x96, 0x33, 0xc1, 0xa7, 0x7d, 0xeb, 0x99, 0xe0, 0xd3, 0xf6, 0x05, 0x4d,
  92. 0xf0, 0x69, 0x17, 0x8b, 0x26, 0xf8, 0xb4, 0x97, 0x49, 0x13, 0x7c, 0xda,
  93. 0xd1, 0xa6, 0x09, 0x3e, 0x2d, 0x6c, 0xd4, 0x04, 0x9f, 0xb6, 0xb7, 0x6a,
  94. 0x82, 0x4f, 0xab, 0x9c, 0x35, 0xc1, 0xa7, 0xc5, 0xee, 0x9a, 0xe0, 0xd3,
  95. 0x9a, 0x87, 0x4d, 0xf0, 0x69, 0xe9, 0xcb
  96. ];
  97. checkSynth(
  98. /*
  99. * // The stream consists of word "time" with all possible transforms.
  100. * main_header
  101. * metablock_header_easy: 1533, 1
  102. * command_easy: 10, "|", 2 // = 0 << 10 + 1 + 1
  103. * command_easy: 10, "|", 1037 // = 1 << 10 + 1 + 12
  104. * command_easy: 10, "|", 2073 // = 2 << 10 + 1 + 24
  105. * command_easy: 10, "|", 3110 // = 3 << 10 + 1 + 37
  106. * command_easy: 10, "|", 4144 // = 4 << 10 + 1 + 47
  107. * command_easy: 10, "|", 5180 // = 5 << 10 + 1 + 59
  108. * command_easy: 10, "|", 6220 // = 6 << 10 + 1 + 75
  109. * command_easy: 10, "|", 7256 // = 7 << 10 + 1 + 87
  110. * command_easy: 10, "|", 8294 // = 8 << 10 + 1 + 101
  111. * command_easy: 10, "|", 9333 // = 9 << 10 + 1 + 116
  112. * command_easy: 10, "|", 10368 // = 10 << 10 + 1 + 127
  113. * command_easy: 10, "|", 11408 // = 11 << 10 + 1 + 143
  114. * command_easy: 10, "|", 12441 // = 12 << 10 + 1 + 152
  115. * command_easy: 10, "|", 13475 // = 13 << 10 + 1 + 162
  116. * command_easy: 10, "|", 14513 // = 14 << 10 + 1 + 176
  117. * command_easy: 10, "|", 15550 // = 15 << 10 + 1 + 189
  118. * command_easy: 10, "|", 16587 // = 16 << 10 + 1 + 202
  119. * command_easy: 10, "|", 17626 // = 17 << 10 + 1 + 217
  120. * command_easy: 10, "|", 18665 // = 18 << 10 + 1 + 232
  121. * command_easy: 10, "|", 19703 // = 19 << 10 + 1 + 246
  122. * command_easy: 10, "|", 20739 // = 20 << 10 + 1 + 258
  123. * command_easy: 10, "|", 21775 // = 21 << 10 + 1 + 270
  124. * command_easy: 10, "|", 22812 // = 22 << 10 + 1 + 283
  125. * command_easy: 10, "|", 23848 // = 23 << 10 + 1 + 295
  126. * command_easy: 10, "|", 24880 // = 24 << 10 + 1 + 303
  127. * command_easy: 10, "|", 25916 // = 25 << 10 + 1 + 315
  128. * command_easy: 10, "|", 26956 // = 26 << 10 + 1 + 331
  129. * command_easy: 10, "|", 27988 // = 27 << 10 + 1 + 339
  130. * command_easy: 10, "|", 29021 // = 28 << 10 + 1 + 348
  131. * command_easy: 10, "|", 30059 // = 29 << 10 + 1 + 362
  132. * command_easy: 10, "|", 31100 // = 30 << 10 + 1 + 379
  133. * command_easy: 10, "|", 32136 // = 31 << 10 + 1 + 391
  134. * command_easy: 10, "|", 33173 // = 32 << 10 + 1 + 404
  135. * command_easy: 10, "|", 34209 // = 33 << 10 + 1 + 416
  136. * command_easy: 10, "|", 35247 // = 34 << 10 + 1 + 430
  137. * command_easy: 10, "|", 36278 // = 35 << 10 + 1 + 437
  138. * command_easy: 10, "|", 37319 // = 36 << 10 + 1 + 454
  139. * command_easy: 10, "|", 38355 // = 37 << 10 + 1 + 466
  140. * command_easy: 10, "|", 39396 // = 38 << 10 + 1 + 483
  141. * command_easy: 10, "|", 40435 // = 39 << 10 + 1 + 498
  142. * command_easy: 10, "|", 41465 // = 40 << 10 + 1 + 504
  143. * command_easy: 10, "|", 42494 // = 41 << 10 + 1 + 509
  144. * command_easy: 10, "|", 43534 // = 42 << 10 + 1 + 525
  145. * command_easy: 10, "|", 44565 // = 43 << 10 + 1 + 532
  146. * command_easy: 10, "|", 45606 // = 44 << 10 + 1 + 549
  147. * command_easy: 10, "|", 46641 // = 45 << 10 + 1 + 560
  148. * command_easy: 10, "|", 47680 // = 46 << 10 + 1 + 575
  149. * command_easy: 10, "|", 48719 // = 47 << 10 + 1 + 590
  150. * command_easy: 10, "|", 49758 // = 48 << 10 + 1 + 605
  151. * command_easy: 10, "|", 50786 // = 49 << 10 + 1 + 609
  152. * command_easy: 10, "|", 51824 // = 50 << 10 + 1 + 623
  153. * command_easy: 10, "|", 52861 // = 51 << 10 + 1 + 636
  154. * command_easy: 10, "|", 53897 // = 52 << 10 + 1 + 648
  155. * command_easy: 10, "|", 54935 // = 53 << 10 + 1 + 662
  156. * command_easy: 10, "|", 55973 // = 54 << 10 + 1 + 676
  157. * command_easy: 10, "|", 56999 // = 55 << 10 + 1 + 678
  158. * command_easy: 10, "|", 58027 // = 56 << 10 + 1 + 682
  159. * command_easy: 10, "|", 59056 // = 57 << 10 + 1 + 687
  160. * command_easy: 10, "|", 60092 // = 58 << 10 + 1 + 699
  161. * command_easy: 10, "|", 61129 // = 59 << 10 + 1 + 712
  162. * command_easy: 10, "|", 62156 // = 60 << 10 + 1 + 715
  163. * command_easy: 10, "|", 63195 // = 61 << 10 + 1 + 730
  164. * command_easy: 10, "|", 64233 // = 62 << 10 + 1 + 744
  165. * command_easy: 10, "|", 65277 // = 63 << 10 + 1 + 764
  166. * command_easy: 10, "|", 66307 // = 64 << 10 + 1 + 770
  167. * command_easy: 10, "|", 67333 // = 65 << 10 + 1 + 772
  168. * command_easy: 10, "|", 68371 // = 66 << 10 + 1 + 786
  169. * command_easy: 10, "|", 69407 // = 67 << 10 + 1 + 798
  170. * command_easy: 10, "|", 70444 // = 68 << 10 + 1 + 811
  171. * command_easy: 10, "|", 71480 // = 69 << 10 + 1 + 823
  172. * command_easy: 10, "|", 72517 // = 70 << 10 + 1 + 836
  173. * command_easy: 10, "|", 73554 // = 71 << 10 + 1 + 849
  174. * command_easy: 10, "|", 74591 // = 72 << 10 + 1 + 862
  175. * command_easy: 10, "|", 75631 // = 73 << 10 + 1 + 878
  176. * command_easy: 10, "|", 76679 // = 74 << 10 + 1 + 902
  177. * command_easy: 10, "|", 77715 // = 75 << 10 + 1 + 914
  178. * command_easy: 10, "|", 78757 // = 76 << 10 + 1 + 932
  179. * command_easy: 10, "|", 79793 // = 77 << 10 + 1 + 944
  180. * command_easy: 10, "|", 80830 // = 78 << 10 + 1 + 957
  181. * command_easy: 10, "|", 81866 // = 79 << 10 + 1 + 969
  182. * command_easy: 10, "|", 82902 // = 80 << 10 + 1 + 981
  183. * command_easy: 10, "|", 83942 // = 81 << 10 + 1 + 997
  184. * command_easy: 10, "|", 84980 // = 82 << 10 + 1 + 1011
  185. * command_easy: 10, "|", 86018 // = 83 << 10 + 1 + 1025
  186. * command_easy: 10, "|", 87055 // = 84 << 10 + 1 + 1038
  187. * command_easy: 10, "|", 88093 // = 85 << 10 + 1 + 1052
  188. * command_easy: 10, "|", 89129 // = 86 << 10 + 1 + 1064
  189. * command_easy: 10, "|", 90166 // = 87 << 10 + 1 + 1077
  190. * command_easy: 10, "|", 91202 // = 88 << 10 + 1 + 1089
  191. * command_easy: 10, "|", 92239 // = 89 << 10 + 1 + 1102
  192. * command_easy: 10, "|", 93276 // = 90 << 10 + 1 + 1115
  193. * command_easy: 10, "|", 94315 // = 91 << 10 + 1 + 1130
  194. * command_easy: 10, "|", 95353 // = 92 << 10 + 1 + 1144
  195. * command_easy: 10, "|", 96392 // = 93 << 10 + 1 + 1159
  196. * command_easy: 10, "|", 97432 // = 94 << 10 + 1 + 1175
  197. * command_easy: 10, "|", 98468 // = 95 << 10 + 1 + 1187
  198. * command_easy: 10, "|", 99507 // = 96 << 10 + 1 + 1202
  199. * command_easy: 10, "|", 100544 // = 97 << 10 + 1 + 1215
  200. * command_easy: 10, "|", 101581 // = 98 << 10 + 1 + 1228
  201. * command_easy: 10, "|", 102619 // = 99 << 10 + 1 + 1242
  202. * command_easy: 10, "|", 103655 // = 100 << 10 + 1 + 1254
  203. * command_easy: 10, "|", 104694 // = 101 << 10 + 1 + 1269
  204. * command_easy: 10, "|", 105730 // = 102 << 10 + 1 + 1281
  205. * command_easy: 10, "|", 106767 // = 103 << 10 + 1 + 1294
  206. * command_easy: 10, "|", 107804 // = 104 << 10 + 1 + 1307
  207. * command_easy: 10, "|", 108841 // = 105 << 10 + 1 + 1320
  208. * command_easy: 10, "|", 109878 // = 106 << 10 + 1 + 1333
  209. * command_easy: 10, "|", 110917 // = 107 << 10 + 1 + 1348
  210. * command_easy: 10, "|", 111954 // = 108 << 10 + 1 + 1361
  211. * command_easy: 10, "|", 112991 // = 109 << 10 + 1 + 1374
  212. * command_easy: 10, "|", 114028 // = 110 << 10 + 1 + 1387
  213. * command_easy: 10, "|", 115066 // = 111 << 10 + 1 + 1401
  214. * command_easy: 10, "|", 116104 // = 112 << 10 + 1 + 1415
  215. * command_easy: 10, "|", 117140 // = 113 << 10 + 1 + 1427
  216. * command_easy: 10, "|", 118176 // = 114 << 10 + 1 + 1439
  217. * command_easy: 10, "|", 119213 // = 115 << 10 + 1 + 1452
  218. * command_easy: 10, "|", 120250 // = 116 << 10 + 1 + 1465
  219. * command_easy: 10, "|", 121287 // = 117 << 10 + 1 + 1478
  220. * command_easy: 10, "|", 122325 // = 118 << 10 + 1 + 1492
  221. * command_easy: 10, "|", 123363 // = 119 << 10 + 1 + 1506
  222. * command_easy: 10, "|", 124401 // = 120 << 10 + 1 + 1520
  223. */
  224. compressed,
  225. true,
  226. '|categories|categories | categories |ategories|Categories |categories the '
  227. + '| categories|s categories |categories of |Categories|categories and |teg'
  228. + 'ories|categorie|, categories |categories, | Categories |categories in |c'
  229. + 'ategories to |e categories |categories"|categories.|categories">|categor'
  230. + 'ies\n|categor|categories]|categories for |egories|categori|categories a '
  231. + '|categories that | Categories|categories. |.categories| categories, |gor'
  232. + 'ies|categories with |categories\'|categories from |categories by |ories|'
  233. + 'ries| the categories|catego|categories. The |CATEGORIES|categories on |c'
  234. + 'ategories as |categories is |cat|categorieing |categories\n\t|categories'
  235. + ':| categories. |categoriesed |s|ies|cate|categories(|Categories, |ca|cat'
  236. + 'egories at |categoriesly | the categories of |categ|c| Categories, |Cate'
  237. + 'gories"|.categories(|CATEGORIES |Categories">|categories="| categories.|'
  238. + '.com/categories| the categories of the |Categories\'|categories. This |c'
  239. + 'ategories,|.categories |Categories(|Categories.|categories not | categor'
  240. + 'ies="|categorieser | CATEGORIES |categoriesal | CATEGORIES|categories='
  241. + '\'|CATEGORIES"|Categories. | categories(|categoriesful | Categories. |ca'
  242. + 'tegoriesive |categoriesless |CATEGORIES\'|categoriesest | Categories.|CA'
  243. + 'TEGORIES">| categories=\'|Categories,|categoriesize |CATEGORIES.|'
  244. + '\xc2\xa0categories| categories,|Categories="|CATEGORIES="|categoriesous '
  245. + '|CATEGORIES, |Categories=\'| Categories,| CATEGORIES="| CATEGORIES, |CAT'
  246. + 'EGORIES,|CATEGORIES(|CATEGORIES. | CATEGORIES.|CATEGORIES=\'| CATEGORIES'
  247. + '. | Categories="| CATEGORIES=\'| Categories=\''
  248. );
  249. },
  250. testAllTransforms4() {
  251. const compressed = [
  252. 0x1b, 0x40, 0x03, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  253. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x51, 0x3e,
  254. 0x42, 0x51, 0x3e, 0x81, 0x02, 0x51, 0x3e, 0x11, 0x04, 0xa2, 0x7c, 0xe2,
  255. 0x0b, 0x44, 0xf9, 0x24, 0x1b, 0x10, 0xe5, 0x93, 0x84, 0x50, 0x94, 0x4f,
  256. 0xba, 0x02, 0x51, 0x3e, 0x69, 0x0c, 0x45, 0xf9, 0x64, 0x39, 0x20, 0xca,
  257. 0x27, 0x13, 0x22, 0x51, 0x3e, 0xd9, 0x11, 0x8a, 0xf2, 0xc9, 0xa2, 0x58,
  258. 0x94, 0x4f, 0x4e, 0x05, 0xa2, 0x7c, 0x72, 0x2c, 0x12, 0xe5, 0x93, 0x83,
  259. 0xa1, 0x28, 0x9f, 0xfc, 0x8c, 0x45, 0xf9, 0x14, 0x6e, 0x40, 0x94, 0x4f,
  260. 0x71, 0x47, 0x44, 0xf9, 0x14, 0x80, 0x48, 0x94, 0x4f, 0x81, 0xc8, 0x44,
  261. 0xf9, 0x14, 0x8e, 0x50, 0x94, 0x4f, 0x41, 0x49, 0x45, 0xf9, 0x14, 0x9b,
  262. 0x58, 0x94, 0x4f, 0x11, 0xca, 0x45, 0xf9, 0x94, 0xa3, 0x40, 0x94, 0x4f,
  263. 0x99, 0x4a, 0x44, 0xf9, 0x94, 0xb3, 0x48, 0x94, 0x4f, 0x59, 0xcb, 0x44,
  264. 0xf9, 0x94, 0xb8, 0x50, 0x94, 0x4f, 0x09, 0x4c, 0x45, 0xf9, 0x94, 0xcb,
  265. 0x58, 0x94, 0x4f, 0x19, 0xcd, 0x45, 0xf9, 0x54, 0xd8, 0x80, 0x28, 0x9f,
  266. 0xca, 0x9b, 0x10, 0xe5, 0x53, 0x99, 0x23, 0xa2, 0x7c, 0xaa, 0x73, 0x46,
  267. 0x94, 0x4f, 0x25, 0x0f, 0x89, 0xf2, 0xa9, 0xf0, 0x29, 0x51, 0x3e, 0xd5,
  268. 0x40, 0x26, 0xca, 0xa7, 0x62, 0xe8, 0x44, 0xf9, 0x54, 0x0d, 0xa1, 0x28,
  269. 0x9f, 0xca, 0xa1, 0x14, 0xe5, 0x53, 0x61, 0xa4, 0xa2, 0x7c, 0xaa, 0x8c,
  270. 0x56, 0x94, 0x4f, 0x45, 0x12, 0x8b, 0xf2, 0xa9, 0x52, 0x6a, 0x51, 0x3e,
  271. 0x95, 0x4c, 0x2e, 0xca, 0xa7, 0xda, 0xe9, 0x45, 0xf9, 0xd4, 0x44, 0x81,
  272. 0x28, 0x9f, 0xba, 0xa8, 0x10, 0xe5, 0x53, 0x37, 0x25, 0xa2, 0x7c, 0x6a,
  273. 0xaa, 0x46, 0x94, 0x4f, 0xad, 0x15, 0x89, 0xf2, 0xa9, 0xc5, 0x2a, 0x51,
  274. 0x3e, 0xb5, 0x5a, 0x26, 0xca, 0xa7, 0x5e, 0xeb, 0x44, 0xf9, 0xd4, 0x6c,
  275. 0xa1, 0x28, 0x9f, 0xba, 0xad, 0x14, 0xe5, 0x53, 0xcf, 0xa5, 0xa2, 0x7c,
  276. 0x6a, 0xbd, 0x56, 0x94, 0x4f, 0xbd, 0x17, 0x8b, 0xf2, 0xa9, 0x09, 0x6b,
  277. 0x51, 0x3e, 0x35, 0x63, 0x2e, 0xca, 0xa7, 0xd6, 0xec, 0x45, 0xf9, 0x34,
  278. 0x9b, 0x01, 0x51, 0x3e, 0x0d, 0x67, 0x41, 0x94, 0x4f, 0x43, 0x9a, 0x10,
  279. 0xe5, 0xd3, 0xa8, 0x36, 0x44, 0xf9, 0x34, 0xb1, 0x11, 0x51, 0x3e, 0xcd,
  280. 0x6d, 0x45, 0x94, 0x4f, 0xe3, 0x9b, 0x11, 0xe5, 0xd3, 0x14, 0x77, 0x44,
  281. 0xf9, 0x34, 0xcc, 0x21, 0x51, 0x3e, 0x8d, 0x75, 0x49, 0x94, 0x4f, 0x83,
  282. 0x9e, 0x12, 0xe5, 0xd3, 0xb8, 0xb7, 0x44, 0xf9, 0x34, 0xfa, 0x31, 0x51,
  283. 0x3e, 0x0d, 0x80, 0x4d, 0x94, 0x4f, 0x73, 0xa0, 0x13, 0xe5, 0xd3, 0x34,
  284. 0xf8, 0x44, 0xf9, 0x34, 0x13, 0x42, 0x51, 0x3e, 0x4d, 0x87, 0x51, 0x94,
  285. 0x4f, 0x53, 0xa2, 0x14, 0xe5, 0xd3, 0xb4, 0x38, 0x45, 0xf9, 0x34, 0x34,
  286. 0x52, 0x51, 0x3e, 0x0d, 0x8f, 0x55, 0x94, 0x4f, 0x23, 0xa4, 0x15, 0xe5,
  287. 0xd3, 0x24, 0x79, 0x45, 0xf9, 0x34, 0x4f, 0x62, 0x51, 0x3e, 0x8d, 0x95,
  288. 0x59, 0x94, 0x4f, 0xd3, 0xa5, 0x16, 0xe5, 0xd3, 0x98, 0xb9, 0x45, 0xf9,
  289. 0x34, 0x6e, 0x72, 0x51, 0x3e, 0xcd, 0x9d, 0x5d, 0x94, 0x4f, 0x13, 0xa8,
  290. 0x17, 0xe5, 0xd3, 0x1c, 0xfa, 0x45, 0xf9, 0xb4, 0x90, 0x02, 0x51, 0x3e,
  291. 0xed, 0xa5, 0x41, 0x94, 0x4f, 0xeb, 0xa9, 0x10, 0xe5, 0xd3, 0x9a, 0x3a,
  292. 0x44, 0xf9, 0xb4, 0xac, 0x12, 0x51, 0x3e, 0x6d, 0xad, 0x45, 0x94, 0x4f,
  293. 0xbb, 0xab, 0x11, 0xe5, 0xd3, 0x0a, 0x7b, 0x44, 0xf9, 0xb4, 0xc9, 0x22,
  294. 0x51, 0x3e, 0x2d, 0xb4, 0x49, 0x94, 0x4f, 0x7b, 0xad, 0x12, 0xe5, 0xd3,
  295. 0x82, 0xbb, 0x44, 0xf9, 0xb4, 0xe7, 0x32, 0x51, 0x3e, 0xad, 0xbb, 0x4d,
  296. 0x94, 0x4f, 0x5b, 0xaf, 0x13, 0xe5, 0xd3, 0xf6, 0xfb, 0x44, 0xf9, 0xb4,
  297. 0x05, 0x43, 0x51, 0x3e, 0xed, 0xc2, 0x51, 0x94, 0x4f, 0x1b, 0xb1, 0x14,
  298. 0xe5, 0xd3, 0x62, 0x3c, 0x45, 0xf9, 0xb4, 0x1f, 0x53, 0x51, 0x3e, 0xad,
  299. 0xc9, 0x55, 0x94, 0x4f, 0xeb, 0xb2, 0x15, 0xe5, 0xd3, 0xda, 0x7c, 0x45,
  300. 0xf9, 0xb4, 0x3e, 0x63
  301. ];
  302. checkSynth(
  303. /*
  304. * // The stream consists of word "time" with all possible transforms.
  305. * main_header
  306. * metablock_header_easy: 833, 1
  307. * command_easy: 4, "|", 2 // = 0 << 10 + 1 + 1
  308. * command_easy: 4, "|", 1031 // = 1 << 10 + 1 + 6
  309. * command_easy: 4, "|", 2061 // = 2 << 10 + 1 + 12
  310. * command_easy: 4, "|", 3092 // = 3 << 10 + 1 + 19
  311. * command_easy: 4, "|", 4120 // = 4 << 10 + 1 + 23
  312. * command_easy: 4, "|", 5150 // = 5 << 10 + 1 + 29
  313. * command_easy: 4, "|", 6184 // = 6 << 10 + 1 + 39
  314. * command_easy: 4, "|", 7214 // = 7 << 10 + 1 + 45
  315. * command_easy: 4, "|", 8246 // = 8 << 10 + 1 + 53
  316. * command_easy: 4, "|", 9279 // = 9 << 10 + 1 + 62
  317. * command_easy: 4, "|", 10308 // = 10 << 10 + 1 + 67
  318. * command_easy: 4, "|", 11342 // = 11 << 10 + 1 + 77
  319. * command_easy: 4, "|", 12369 // = 12 << 10 + 1 + 80
  320. * command_easy: 4, "|", 13397 // = 13 << 10 + 1 + 84
  321. * command_easy: 4, "|", 14429 // = 14 << 10 + 1 + 92
  322. * command_easy: 4, "|", 15460 // = 15 << 10 + 1 + 99
  323. * command_easy: 4, "|", 16491 // = 16 << 10 + 1 + 106
  324. * command_easy: 4, "|", 17524 // = 17 << 10 + 1 + 115
  325. * command_easy: 4, "|", 18557 // = 18 << 10 + 1 + 124
  326. * command_easy: 4, "|", 19589 // = 19 << 10 + 1 + 132
  327. * command_easy: 4, "|", 20619 // = 20 << 10 + 1 + 138
  328. * command_easy: 4, "|", 21649 // = 21 << 10 + 1 + 144
  329. * command_easy: 4, "|", 22680 // = 22 << 10 + 1 + 151
  330. * command_easy: 4, "|", 23710 // = 23 << 10 + 1 + 157
  331. * command_easy: 4, "|", 24736 // = 24 << 10 + 1 + 159
  332. * command_easy: 4, "|", 25766 // = 25 << 10 + 1 + 165
  333. * command_easy: 4, "|", 26800 // = 26 << 10 + 1 + 175
  334. * command_easy: 4, "|", 27826 // = 27 << 10 + 1 + 177
  335. * command_easy: 4, "|", 28853 // = 28 << 10 + 1 + 180
  336. * command_easy: 4, "|", 29885 // = 29 << 10 + 1 + 188
  337. * command_easy: 4, "|", 30920 // = 30 << 10 + 1 + 199
  338. * command_easy: 4, "|", 31950 // = 31 << 10 + 1 + 205
  339. * command_easy: 4, "|", 32981 // = 32 << 10 + 1 + 212
  340. * command_easy: 4, "|", 34011 // = 33 << 10 + 1 + 218
  341. * command_easy: 4, "|", 35043 // = 34 << 10 + 1 + 226
  342. * command_easy: 4, "|", 36068 // = 35 << 10 + 1 + 227
  343. * command_easy: 4, "|", 37103 // = 36 << 10 + 1 + 238
  344. * command_easy: 4, "|", 38133 // = 37 << 10 + 1 + 244
  345. * command_easy: 4, "|", 39168 // = 38 << 10 + 1 + 255
  346. * command_easy: 4, "|", 40201 // = 39 << 10 + 1 + 264
  347. * command_easy: 4, "|", 41226 // = 40 << 10 + 1 + 265
  348. * command_easy: 4, "|", 42251 // = 41 << 10 + 1 + 266
  349. * command_easy: 4, "|", 43285 // = 42 << 10 + 1 + 276
  350. * command_easy: 4, "|", 44310 // = 43 << 10 + 1 + 277
  351. * command_easy: 4, "|", 45345 // = 44 << 10 + 1 + 288
  352. * command_easy: 4, "|", 46374 // = 45 << 10 + 1 + 293
  353. * command_easy: 4, "|", 47407 // = 46 << 10 + 1 + 302
  354. * command_easy: 4, "|", 48440 // = 47 << 10 + 1 + 311
  355. * command_easy: 4, "|", 49473 // = 48 << 10 + 1 + 320
  356. * command_easy: 4, "|", 50498 // = 49 << 10 + 1 + 321
  357. * command_easy: 4, "|", 51530 // = 50 << 10 + 1 + 329
  358. * command_easy: 4, "|", 52561 // = 51 << 10 + 1 + 336
  359. * command_easy: 4, "|", 53591 // = 52 << 10 + 1 + 342
  360. * command_easy: 4, "|", 54623 // = 53 << 10 + 1 + 350
  361. * command_easy: 4, "|", 55655 // = 54 << 10 + 1 + 358
  362. * command_easy: 4, "|", 56680 // = 55 << 10 + 1 + 359
  363. * command_easy: 4, "|", 57705 // = 56 << 10 + 1 + 360
  364. * command_easy: 4, "|", 58730 // = 57 << 10 + 1 + 361
  365. * command_easy: 4, "|", 59760 // = 58 << 10 + 1 + 367
  366. * command_easy: 4, "|", 60791 // = 59 << 10 + 1 + 374
  367. * command_easy: 4, "|", 61816 // = 60 << 10 + 1 + 375
  368. * command_easy: 4, "|", 62849 // = 61 << 10 + 1 + 384
  369. * command_easy: 4, "|", 63881 // = 62 << 10 + 1 + 392
  370. * command_easy: 4, "|", 64919 // = 63 << 10 + 1 + 406
  371. * command_easy: 4, "|", 65944 // = 64 << 10 + 1 + 407
  372. * command_easy: 4, "|", 66969 // = 65 << 10 + 1 + 408
  373. * command_easy: 4, "|", 68001 // = 66 << 10 + 1 + 416
  374. * command_easy: 4, "|", 69031 // = 67 << 10 + 1 + 422
  375. * command_easy: 4, "|", 70062 // = 68 << 10 + 1 + 429
  376. * command_easy: 4, "|", 71092 // = 69 << 10 + 1 + 435
  377. * command_easy: 4, "|", 72123 // = 70 << 10 + 1 + 442
  378. * command_easy: 4, "|", 73154 // = 71 << 10 + 1 + 449
  379. * command_easy: 4, "|", 74185 // = 72 << 10 + 1 + 456
  380. * command_easy: 4, "|", 75219 // = 73 << 10 + 1 + 466
  381. * command_easy: 4, "|", 76261 // = 74 << 10 + 1 + 484
  382. * command_easy: 4, "|", 77291 // = 75 << 10 + 1 + 490
  383. * command_easy: 4, "|", 78327 // = 76 << 10 + 1 + 502
  384. * command_easy: 4, "|", 79357 // = 77 << 10 + 1 + 508
  385. * command_easy: 4, "|", 80388 // = 78 << 10 + 1 + 515
  386. * command_easy: 4, "|", 81418 // = 79 << 10 + 1 + 521
  387. * command_easy: 4, "|", 82448 // = 80 << 10 + 1 + 527
  388. * command_easy: 4, "|", 83482 // = 81 << 10 + 1 + 537
  389. * command_easy: 4, "|", 84514 // = 82 << 10 + 1 + 545
  390. * command_easy: 4, "|", 85546 // = 83 << 10 + 1 + 553
  391. * command_easy: 4, "|", 86577 // = 84 << 10 + 1 + 560
  392. * command_easy: 4, "|", 87609 // = 85 << 10 + 1 + 568
  393. * command_easy: 4, "|", 88639 // = 86 << 10 + 1 + 574
  394. * command_easy: 4, "|", 89670 // = 87 << 10 + 1 + 581
  395. * command_easy: 4, "|", 90700 // = 88 << 10 + 1 + 587
  396. * command_easy: 4, "|", 91731 // = 89 << 10 + 1 + 594
  397. * command_easy: 4, "|", 92762 // = 90 << 10 + 1 + 601
  398. * command_easy: 4, "|", 93795 // = 91 << 10 + 1 + 610
  399. * command_easy: 4, "|", 94827 // = 92 << 10 + 1 + 618
  400. * command_easy: 4, "|", 95860 // = 93 << 10 + 1 + 627
  401. * command_easy: 4, "|", 96894 // = 94 << 10 + 1 + 637
  402. * command_easy: 4, "|", 97924 // = 95 << 10 + 1 + 643
  403. * command_easy: 4, "|", 98957 // = 96 << 10 + 1 + 652
  404. * command_easy: 4, "|", 99988 // = 97 << 10 + 1 + 659
  405. * command_easy: 4, "|", 101019 // = 98 << 10 + 1 + 666
  406. * command_easy: 4, "|", 102051 // = 99 << 10 + 1 + 674
  407. * command_easy: 4, "|", 103081 // = 100 << 10 + 1 + 680
  408. * command_easy: 4, "|", 104114 // = 101 << 10 + 1 + 689
  409. * command_easy: 4, "|", 105144 // = 102 << 10 + 1 + 695
  410. * command_easy: 4, "|", 106175 // = 103 << 10 + 1 + 702
  411. * command_easy: 4, "|", 107206 // = 104 << 10 + 1 + 709
  412. * command_easy: 4, "|", 108237 // = 105 << 10 + 1 + 716
  413. * command_easy: 4, "|", 109268 // = 106 << 10 + 1 + 723
  414. * command_easy: 4, "|", 110301 // = 107 << 10 + 1 + 732
  415. * command_easy: 4, "|", 111332 // = 108 << 10 + 1 + 739
  416. * command_easy: 4, "|", 112363 // = 109 << 10 + 1 + 746
  417. * command_easy: 4, "|", 113394 // = 110 << 10 + 1 + 753
  418. * command_easy: 4, "|", 114426 // = 111 << 10 + 1 + 761
  419. * command_easy: 4, "|", 115458 // = 112 << 10 + 1 + 769
  420. * command_easy: 4, "|", 116488 // = 113 << 10 + 1 + 775
  421. * command_easy: 4, "|", 117518 // = 114 << 10 + 1 + 781
  422. * command_easy: 4, "|", 118549 // = 115 << 10 + 1 + 788
  423. * command_easy: 4, "|", 119580 // = 116 << 10 + 1 + 795
  424. * command_easy: 4, "|", 120611 // = 117 << 10 + 1 + 802
  425. * command_easy: 4, "|", 121643 // = 118 << 10 + 1 + 810
  426. * command_easy: 4, "|", 122675 // = 119 << 10 + 1 + 818
  427. * command_easy: 4, "|", 123707 // = 120 << 10 + 1 + 826
  428. */
  429. compressed,
  430. true,
  431. '|time|time | time |ime|Time |time the | time|s time |time of |Time|time an'
  432. + 'd |me|tim|, time |time, | Time |time in |time to |e time |time"|time.|ti'
  433. + 'me">|time\n|t|time]|time for |e|ti|time a |time that | Time|time. |.time'
  434. + '| time, ||time with |time\'|time from |time by ||| the time||time. The |'
  435. + 'TIME|time on |time as |time is ||timing |time\n\t|time:| time. |timeed |'
  436. + '|||time(|Time, ||time at |timely | the time of ||| Time, |Time"|.time(|T'
  437. + 'IME |Time">|time="| time.|.com/time| the time of the |Time\'|time. This '
  438. + '|time,|.time |Time(|Time.|time not | time="|timeer | TIME |timeal | TIME'
  439. + '|time=\'|TIME"|Time. | time(|timeful | Time. |timeive |timeless |TIME'
  440. + '\'|timeest | Time.|TIME">| time=\'|Time,|timeize |TIME.|\xc2\xa0time| ti'
  441. + 'me,|Time="|TIME="|timeous |TIME, |Time=\'| Time,| TIME="| TIME, |TIME,|T'
  442. + 'IME(|TIME. | TIME.|TIME=\'| TIME. | Time="| TIME=\'| Time=\''
  443. );
  444. },
  445. testBaseDictWord() {
  446. const compressed = [
  447. 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  448. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x02
  449. ];
  450. checkSynth(
  451. /*
  452. * // The stream consists of a base dictionary word.
  453. * main_header
  454. * metablock_header_easy: 4, 1
  455. * command_inscopy_easy: 0, 4
  456. * command_dist_easy: 1
  457. */
  458. compressed,
  459. true,
  460. 'time'
  461. );
  462. },
  463. testBaseDictWordFinishBlockOnRingbufferWrap() {
  464. const compressed = [
  465. 0x1b, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  466. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0x58, 0x32,
  467. 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
  468. 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
  469. 0x34, 0x34, 0x34, 0xd4, 0x00
  470. ];
  471. checkSynth(
  472. /*
  473. * main_header
  474. * metablock_header_easy: 32, 1 // 32 = minimal ringbuffer size
  475. * command_easy: 4, "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", 29
  476. */
  477. compressed,
  478. true,
  479. times(28, 'a')
  480. + 'time'
  481. );
  482. },
  483. testBaseDictWordTooLong() {
  484. const compressed = [
  485. 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  486. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x02
  487. ];
  488. checkSynth(
  489. /*
  490. * // Has an unmodified dictionary word that goes over the end of the
  491. * // meta-block. Same as BaseDictWord, but with a shorter meta-block length.
  492. * main_header
  493. * metablock_header_easy: 1, 1
  494. * command_inscopy_easy: 0, 4
  495. * command_dist_easy: 1
  496. */
  497. compressed,
  498. false,
  499. ''
  500. );
  501. },
  502. testBlockCountMessage() {
  503. const compressed = [
  504. 0x1b, 0x0b, 0x00, 0x11, 0x01, 0x8c, 0xc1, 0xc5, 0x0d, 0x08, 0x00, 0x22,
  505. 0x65, 0xe1, 0xfc, 0xfd, 0x22, 0x2c, 0xc4, 0x00, 0x00, 0x38, 0xd8, 0x32,
  506. 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0x04, 0x10, 0x42, 0x00, 0x00,
  507. 0x00
  508. ];
  509. checkSynth(
  510. /*
  511. * // Same as BlockSwitchMessage but also uses 0-bit block-type commands.
  512. * main_header
  513. * metablock_header_begin: 1, 0, 12, 0
  514. * // two literal block types
  515. * vlq_blocktypes: 2
  516. * huffman_simple: 1,1,4, 1 // literal blocktype prefix code
  517. * huffman_fixed: 26 // literal blockcount prefix code
  518. * blockcount_easy: 2 // 2 a's
  519. * // one ins/copy and dist block type
  520. * vlq_blocktypes: 1
  521. * vlq_blocktypes: 1
  522. * ndirect: 0, 0
  523. * // two MSB6 literal context modes
  524. * bits: "00", "00"
  525. * // two literal prefix codes
  526. * vlq_blocktypes: 2
  527. * // literal context map
  528. * vlq_rlemax: 5
  529. * huffman_simple: 0,3,7, 5,0,6 // context map RLE Huffman code
  530. * // context map RLE: repeat 0 64 times, 1+5 64 times
  531. * bits: "01", "0", "11111", "11", "0", "11111"
  532. * bit: 1 // MTF enabled
  533. * // one distance prefix code
  534. * vlq_blocktypes: 1
  535. * huffman_simple: 0,1,256, 97 // only a's
  536. * huffman_simple: 0,1,256, 98 // only b's
  537. * huffman_fixed: 704
  538. * huffman_fixed: 64
  539. * // now comes the data
  540. * command_inscopy_easy: 12, 0
  541. * blockcount_easy: 2 // switch to other block type; 2 b's
  542. * blockcount_easy: 5 // switch to other block type; 5 a's
  543. * blockcount_easy: 1 // switch to other block type; 1 b
  544. * blockcount_easy: 1 // switch to other block type; 1 a
  545. * blockcount_easy: 1 // switch to other block type; 1 b
  546. */
  547. compressed,
  548. true,
  549. 'aabbaaaaabab'
  550. );
  551. },
  552. testBlockSwitchMessage() {
  553. const compressed = [
  554. 0x1b, 0x0b, 0x00, 0xd1, 0xe1, 0x01, 0xc6, 0xe0, 0xe2, 0x06, 0x04, 0x00,
  555. 0x91, 0xb2, 0x70, 0xfe, 0x7e, 0x11, 0x16, 0x62, 0x00, 0x00, 0x1c, 0x6c,
  556. 0x99, 0xc4, 0x00, 0x09, 0x00, 0x80, 0x3b, 0x6d, 0x02, 0x08, 0x82, 0x00,
  557. 0x00, 0x00
  558. ];
  559. checkSynth(
  560. /*
  561. * // Uses blocks with 1-symbol Huffman codes that take 0 bits, so that it
  562. * // is the block-switch commands that encode the message rather than actual
  563. * // literals.
  564. * main_header
  565. * metablock_header_begin: 1, 0, 12, 0
  566. * // two literal block types
  567. * vlq_blocktypes: 2
  568. * huffman_simple: 1,4,4, 1,0,2,3 // literal blocktype prefix code
  569. * huffman_fixed: 26 // literal blockcount prefix code
  570. * blockcount_easy: 2 // 2 a's
  571. * // one ins/copy and dist block type
  572. * vlq_blocktypes: 1
  573. * vlq_blocktypes: 1
  574. * ndirect: 0, 0
  575. * // two MSB6 literal context modes
  576. * bits: "00", "00"
  577. * // two literal prefix codes
  578. * vlq_blocktypes: 2
  579. * // literal context map
  580. * vlq_rlemax: 5
  581. * huffman_simple: 0,3,7, 5,0,6 // context map RLE Huffman code
  582. * // context map RLE: repeat 0 64 times, 1+5 64 times
  583. * bits: "01", "0", "11111", "11", "0", "11111"
  584. * bit: 1 // MTF enabled
  585. * // one distance prefix code
  586. * vlq_blocktypes: 1
  587. * huffman_simple: 0,1,256, 97 // only a's
  588. * huffman_simple: 0,1,256, 98 // only b's
  589. * huffman_fixed: 704
  590. * huffman_fixed: 64
  591. * // now comes the data
  592. * command_inscopy_easy: 12, 0
  593. * bits: "0"; blockcount_easy: 2 // switch to other block type; 2 b's
  594. * bits: "0"; blockcount_easy: 5 // switch to other block type; 5 a's
  595. * bits: "0"; blockcount_easy: 1 // switch to other block type; 1 b
  596. * bits: "0"; blockcount_easy: 1 // switch to other block type; 1 a
  597. * bits: "0"; blockcount_easy: 1 // switch to other block type; 1 b
  598. */
  599. compressed,
  600. true,
  601. 'aabbaaaaabab'
  602. );
  603. },
  604. testClClTreeDeficiency() {
  605. const compressed = [
  606. 0x1b, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0x43, 0x01, 0xe0, 0x05, 0x88,
  607. 0x55, 0x90, 0x01, 0x00, 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x00, 0x00,
  608. 0x77, 0xda, 0x28, 0x40, 0x23
  609. ];
  610. checkSynth(
  611. /*
  612. * // This test is a copy of TooManySymbolsRepeated, with changed clcl table.
  613. * main_header
  614. * metablock_header_begin: 1, 0, 4, 0
  615. * metablock_header_trivial_context
  616. * hskip: 0
  617. * clcl_ordered: 0,3,0,0,0,0,0,0,3,3,0,0,0,0,0,0,1,0
  618. * set_prefix_cl_rle: "", "110", "", "", "", "", "", "", "111", "101",\
  619. * "", "", "", "", "", "", "0", ""
  620. * cl_rle: 8
  621. * cl_rle_rep: 9, 96
  622. * cl_rle: 1
  623. * cl_rle_rep: 9, 159 // 1 + 96 + 1 + 159 = 257 > 256 = alphabet size
  624. * huffman_fixed: 704
  625. * huffman_fixed: 64
  626. * command_inscopy_easy: 4, 0
  627. * command_literal_bits: 0, 0, 0, 101100010
  628. */
  629. compressed,
  630. false,
  631. 'aaab'
  632. );
  633. },
  634. testClClTreeExcess() {
  635. const compressed = [
  636. 0x1b, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc3, 0x7b, 0x80, 0x58, 0x41,
  637. 0x06, 0x00, 0xe0, 0x60, 0xcb, 0x24, 0x06, 0x48, 0x00, 0x00, 0xdc, 0x69,
  638. 0xa3, 0x00, 0x8d, 0x00
  639. ];
  640. checkSynth(
  641. /*
  642. * // This test is a copy of ClClTreeDeficiency, with changed clcl table.
  643. * main_header
  644. * metablock_header_begin: 1, 0, 4, 0
  645. * metablock_header_trivial_context
  646. * hskip: 0
  647. * clcl_ordered: 0,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,1,0
  648. * set_prefix_cl_rle: "", "110", "", "", "", "", "", "", "111", "1",\
  649. * "", "", "", "", "", "", "0", ""
  650. * cl_rle: 8
  651. * cl_rle_rep: 9, 96
  652. * cl_rle: 1
  653. * cl_rle_rep: 9, 159 // 1 + 96 + 1 + 159 = 257 > 256 = alphabet size
  654. * huffman_fixed: 704
  655. * huffman_fixed: 64
  656. * command_inscopy_easy: 4, 0
  657. * command_literal_bits: 0, 0, 0, 101100010
  658. */
  659. compressed,
  660. false,
  661. 'aaab'
  662. );
  663. },
  664. testComplexHuffmanCodeTwoSymbols() {
  665. const compressed = [
  666. 0x1b, 0x01, 0x00, 0x00, 0x80, 0x03, 0xe0, 0xa2, 0x1a, 0x00, 0x00, 0x0e,
  667. 0xb6, 0x4c, 0x62, 0x80, 0x04, 0x00, 0xc0, 0x9d, 0x36, 0x12, 0x04
  668. ];
  669. checkSynth(
  670. /*
  671. * // This tests a complex Huffman code with only two symbols followed by a
  672. * // tiny amount of content.
  673. * main_header
  674. * metablock_header_begin: 1, 0, 2, 0
  675. * metablock_header_trivial_context
  676. * // begin of literal Huffman tree. The tree has symbol length 1 for "a",
  677. * // symbol length 1 for "b" and symbol length 0 for all others.
  678. * hskip: 0
  679. * clcl_ordered: 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  680. * set_prefix_cl_rle: "", "0", "", "", "", "", "", "", "", "",\
  681. * "", "", "", "", "", "", "", "1"
  682. * cl_rle_rep_0: 97
  683. * cl_rle: 1 // literal number 97, that is, the letter 'a'
  684. * cl_rle: 1 // literal number 98, that is, the letter 'b'
  685. * // end of literal Huffman tree
  686. * huffman_fixed: 704
  687. * huffman_fixed: 64
  688. * command_inscopy_easy: 2, 0
  689. * command_literal_bits: 0, 1 // a followed by b
  690. */
  691. compressed,
  692. true,
  693. 'ab'
  694. );
  695. },
  696. testCompressedUncompressedShortCompressed() {
  697. const compressed = [
  698. 0x8b, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  699. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0x66, 0x6f,
  700. 0x1b, 0x0a, 0x50, 0x00, 0x10, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x31,
  701. 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0,
  702. 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x24, 0x00
  703. ];
  704. checkSynth(
  705. /*
  706. * main_header: 22
  707. * metablock_header_easy: 1022, 0
  708. * command_easy: 1021, "a", 1 // 1022 x "a"
  709. * metablock_uncompressed: "bbbbbb"
  710. * metablock_header_easy: 4, 1
  711. * command_easy: 4, "", 1 // 6 + 4 = 10 x "b"
  712. */
  713. compressed,
  714. true,
  715. times(1022, 'a')
  716. + times(10, 'b')
  717. );
  718. },
  719. testCompressedUncompressedShortCompressedSmallWindow() {
  720. const compressed = [
  721. 0x21, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00,
  722. 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0x34, 0x7b,
  723. 0xdb, 0x50, 0x80, 0x02, 0x80, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x31,
  724. 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0,
  725. 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x24, 0x00
  726. ];
  727. checkSynth(
  728. /*
  729. * main_header: 10
  730. * metablock_header_easy: 1022, 0
  731. * command_easy: 1021, "a", 1 // 1022 x "a"
  732. * metablock_uncompressed: "bbbbbb"
  733. * metablock_header_easy: 4, 1
  734. * command_easy: 4, "", 1 // 6 + 4 = 10 x "b"
  735. */
  736. compressed,
  737. true,
  738. times(1022, 'a')
  739. + times(10, 'b')
  740. );
  741. },
  742. testCopyLengthTooLong() {
  743. const compressed = [
  744. 0x1b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  745. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x11, 0x86,
  746. 0x02
  747. ];
  748. checkSynth(
  749. /*
  750. * // Has a copy length that goes over the end of the meta-block.
  751. * // Same as OneCommand, but with a shorter meta-block length.
  752. * main_header
  753. * metablock_header_easy: 2, 1
  754. * command_easy: 2, "a", 1
  755. */
  756. compressed,
  757. false,
  758. ''
  759. );
  760. },
  761. testCopyTooLong() {
  762. const compressed = [
  763. 0xa1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00,
  764. 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0x34, 0xab,
  765. 0xdb, 0x50, 0x00
  766. ];
  767. checkSynth(
  768. /*
  769. * // Has a copy length that goes over the end of the meta-block,
  770. * // with a ringbuffer wrap.
  771. * main_header: 10
  772. * metablock_header_easy: 2, 1
  773. * command_easy: 1024, "a", 1
  774. */
  775. compressed,
  776. false,
  777. ''
  778. );
  779. },
  780. testCustomHuffmanCode() {
  781. const compressed = [
  782. 0x1b, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc3, 0x3d, 0x80, 0x58, 0x82,
  783. 0x08, 0x00, 0xc0, 0xc1, 0x96, 0x49, 0x0c, 0x90, 0x00, 0x00, 0xb8, 0xd3,
  784. 0x46, 0x01, 0x1a, 0x01
  785. ];
  786. checkSynth(
  787. /*
  788. * // This tests a small hand crafted Huffman code followed by a tiny amount
  789. * // of content. This tests if the bit reader detects the end correctly even
  790. * // with tiny content after a larger Huffman tree encoding.
  791. * main_header
  792. * metablock_header_begin: 1, 0, 4, 0
  793. * metablock_header_trivial_context
  794. * // begin of literal Huffman tree. The tree has symbol length 1 for "a",
  795. * // symbol length 8 for null, symbol length 9 for all others. The length 1
  796. * // for a is chosen on purpose here, the others must be like that to
  797. * // fulfill the requirement that sum of 32>>length is 32768.
  798. * hskip: 0
  799. * clcl_ordered: 0,3,0,0,0,0,0,0,3,2,0,0,0,0,0,0,1,0
  800. * set_prefix_cl_rle: "", "110", "", "", "", "", "", "", "111", "10",\
  801. * "", "", "", "", "", "", "0", ""
  802. * cl_rle: 8
  803. * cl_rle_rep: 9, 96
  804. * cl_rle: 1 // literal number 97, that is, the letter 'a'
  805. * cl_rle_rep: 9, 158
  806. * // end of literal Huffman tree
  807. * huffman_fixed: 704
  808. * huffman_fixed: 64
  809. * command_inscopy_easy: 4, 0
  810. * // Here is how the code "101100010" for b is derived: remember that a has
  811. * // symbol length 1, null has symbol length 8, the rest 9. So in the
  812. * // canonical Huffman code, the code for "a" is "0", for null is
  813. * // "10000000". The next value has "100000010" (cfr. the rules of canonical
  814. * // prefix code). Counting upwards +95 from there, the value "@" (ASCII 96,
  815. * // before "a") has "101100001", and so b, the next 9-bit symbol, has the
  816. * // next binary value "101100010".
  817. * command_literal_bits: 0, 0, 0, 101100010 // 3 a's followed by a b
  818. */
  819. compressed,
  820. true,
  821. 'aaab'
  822. );
  823. },
  824. testDistanceLut() {
  825. const compressed = [
  826. 0x8b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  827. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x99, 0x86,
  828. 0x46, 0xc6, 0x22, 0x14, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1c, 0xa7, 0x6d,
  829. 0x00, 0x00, 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x21, 0x91, 0x69, 0x62,
  830. 0x6a, 0x36
  831. ];
  832. checkSynth(
  833. /*
  834. * main_header
  835. * metablock_header_easy: 6, 0 // implicit ndirect: 0, 0
  836. * command_easy: 3, "abc", 3 // Insert "abc", copy "abc"
  837. * metablock_header_begin: 0, 0, 6, 0
  838. * vlq_blocktypes: 1 // num litetal block types
  839. * vlq_blocktypes: 1 // num command block types
  840. * vlq_blocktypes: 1 // num distance block types
  841. * ndirect: 3, 0
  842. * bits: "00" // literal context modes
  843. * vlq_blocktypes: 1 // num literal Huffman trees
  844. * // command has no context -> num trees == num block types
  845. * vlq_blocktypes: 1 // num distance Huffman trees
  846. * huffman_fixed: 256
  847. * huffman_fixed: 704
  848. * huffman_simple: 0,1,67, 18
  849. * command_inscopy_easy: 3, 3 // Insert 3, copy 3
  850. * command_literals_easy: "def"
  851. * // 0-bit Huffman code : dcode = 18 -> third direct distance
  852. * metablock_lastempty // make sure that no extra distance bits are read
  853. */
  854. compressed,
  855. true,
  856. 'abcabcdefdef'
  857. );
  858. },
  859. testEmpty() {
  860. const compressed = [
  861. 0x3b
  862. ];
  863. checkSynth(
  864. /*
  865. * main_header
  866. * metablock_lastempty
  867. */
  868. compressed,
  869. true,
  870. ''
  871. );
  872. },
  873. testHelloWorld() {
  874. const compressed = [
  875. 0x1b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  876. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0x00, 0x59,
  877. 0x98, 0xda, 0xd8, 0xd8, 0x13, 0xb8, 0xdb, 0x3b, 0xd9, 0x98, 0x00
  878. ];
  879. checkSynth(
  880. /*
  881. * main_header
  882. * metablock_fixed: "hello world", 1
  883. */
  884. compressed,
  885. true,
  886. 'hello world'
  887. );
  888. },
  889. testInsertTooLong() {
  890. const compressed = [
  891. 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  892. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x09, 0x86,
  893. 0x46
  894. ];
  895. checkSynth(
  896. /*
  897. * // Has an insert length that goes over the end of the meta-block.
  898. * // Same as OneInsert, but with a shorter meta-block length.
  899. * main_header
  900. * metablock_header_easy: 1, 1
  901. * command_easy: 0, "ab"
  902. */
  903. compressed,
  904. false,
  905. ''
  906. );
  907. },
  908. testIntactDistanceRingBuffer0() {
  909. const compressed = [
  910. 0x1b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  911. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0xa1, 0x80,
  912. 0x20, 0x00
  913. ];
  914. checkSynth(
  915. /*
  916. * main_header
  917. * metablock_header_easy: 11, 1
  918. * command_inscopy_easy: 0, 7 // "himself" from dictionary
  919. * bits: "000000" // distance = 4 from RB; RB remains intact
  920. * command_inscopy_easy: 0, 4 // copy "self"
  921. * bits: "000000" // distance = 4 from RB; RB remains intact
  922. */
  923. compressed,
  924. true,
  925. 'himselfself'
  926. );
  927. },
  928. testIntactDistanceRingBuffer1() {
  929. const compressed = [
  930. 0x1b, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  931. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x21, 0xa0,
  932. 0x20, 0x00
  933. ];
  934. checkSynth(
  935. /*
  936. * main_header
  937. * metablock_header_easy: 10, 1
  938. * command_inscopy_easy: 0, 6 // "scroll" from dictionary
  939. * bits: "100000" // distance = 11 from RB; RB remains intact
  940. * command_inscopy_easy: 0, 4 // copy "roll"
  941. * bits: "000000" // distance = 4 from RB; RB remains intact
  942. */
  943. compressed,
  944. true,
  945. 'scrollroll'
  946. );
  947. },
  948. testIntactDistanceRingBuffer2() {
  949. const compressed = [
  950. 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  951. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x80,
  952. 0x20, 0x50, 0x10, 0x24, 0x08, 0x06
  953. ];
  954. checkSynth(
  955. /*
  956. * main_header
  957. * metablock_header_easy: 16, 1
  958. * command_inscopy_easy: 0, 4 // "left" from dictionary (index = 3 = 4 - 1)
  959. * bits: "000000" // distance = 4 from RB; RB remains intact
  960. * command_inscopy_easy: 0, 4 // "data" from dictionary (index = 6 = 11 - 5)
  961. * bits: "100000" // distance = 11 from RB; RB remains intact
  962. * command_inscopy_easy: 0, 4 // "data" from dictionary (index = 6 = 15 - 9)
  963. * bits: "010000" // distance = 15 from RB; RB remains intact
  964. * command_inscopy_easy: 0, 4 // "left" from dictionary (index = 3 = 16 - 13)
  965. * bits: "110000" // distance = 16 from RB; RB remains intact
  966. */
  967. compressed,
  968. true,
  969. 'leftdatadataleft'
  970. );
  971. },
  972. testIntactDistanceRingBufferNoDistanceValue0() {
  973. const compressed = [
  974. 0x1b, 0x17, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  975. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x40, 0x82,
  976. 0x40, 0x41, 0x90, 0x20, 0x58, 0x18, 0x00
  977. ];
  978. checkSynth(
  979. /*
  980. * main_header
  981. * metablock_header_easy: 24, 1
  982. * // cmd is {ins_extra, copy_extra, distance_code, ctx, ins_off, copy_off}
  983. * // cmd.2 = {0x00, 0x00, 0, 0x02, 0x0000, 0x0004}
  984. * // cmd.2 = no insert, copy length = 4, distance_code = 0 (last distance)
  985. * command_short: 2 // "left" from dictionary (index = 3 = 4 - 1)
  986. * // Check that RB is untouched after the first command...
  987. * command_inscopy_easy: 0, 4 // "data" from dictionary (index = 6 = 11 - 5)
  988. * bits: "100000" // distance = 11 from RB; RB remains intact
  989. * command_inscopy_easy: 0, 4 // "data" from dictionary (index = 6 = 15 - 9)
  990. * bits: "010000" // distance = 15 from RB; RB remains intact
  991. * command_inscopy_easy: 0, 4 // "left" from dictionary (index = 3 = 16 - 13)
  992. * bits: "110000" // distance = 16 from RB; RB remains intact
  993. * command_inscopy_easy: 0, 8 // copy "leftleft"
  994. * bits: "000000" // distance = 4 from RB; RB remains intact
  995. */
  996. compressed,
  997. true,
  998. 'leftdatadataleftleftleft'
  999. );
  1000. },
  1001. testIntactDistanceRingBufferNoDistanceValue1() {
  1002. const compressed = [
  1003. 0x1b, 0x19, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  1004. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0xc0, 0x82,
  1005. 0x41, 0x41, 0x90, 0x20, 0x58, 0x18, 0x00
  1006. ];
  1007. checkSynth(
  1008. /*
  1009. * main_header
  1010. * metablock_header_easy: 26, 1
  1011. * // cmd is {ins_extra, copy_extra, distance_code, ctx, ins_off, copy_off}
  1012. * // cmd.3 = {0x00, 0x00, 0, 0x03, 0x0000, 0x0005}
  1013. * // cmd.3 = no insert, copy length = 5, distance_code = 0 (last distance)
  1014. * command_short: 3 // "world" from dictionary (index = 3 = 4 - 1)
  1015. * // Check that RB is untouched after the first command...
  1016. * command_inscopy_easy: 0, 5 // "white" from dictionary (index = 5 = 11 - 6)
  1017. * bits: "100000" // distance = 11 from RB; RB remains intact
  1018. * command_inscopy_easy: 0, 4 // "back" from dictionary (index = 4 = 15 - 11)
  1019. * bits: "010000" // distance = 15 from RB; RB remains intact
  1020. * command_inscopy_easy: 0, 4 // "down" from dictionary (index = 1 = 16 - 15)
  1021. * bits: "110000" // distance = 16 from RB; RB remains intact
  1022. * command_inscopy_easy: 0, 8 // copy "downdown"
  1023. * bits: "000000" // distance = 4 from RB; RB remains intact
  1024. */
  1025. compressed,
  1026. true,
  1027. 'worldwhitebackdowndowndown'
  1028. );
  1029. },
  1030. testInvalidNoLastMetablock() {
  1031. const compressed = [
  1032. 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  1033. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0x00, 0x13,
  1034. 0x59, 0x98, 0xda, 0xd8, 0xd8, 0x13, 0xb8, 0xdb, 0x3b, 0xd9, 0x98, 0xe8,
  1035. 0x00
  1036. ];
  1037. checkSynth(
  1038. /*
  1039. * main_header
  1040. * metablock_fixed: \"hello world\", 0
  1041. */
  1042. compressed,
  1043. false,
  1044. 'hello world'
  1045. );
  1046. },
  1047. testInvalidNoMetaBlocks() {
  1048. const compressed = [
  1049. 0x0b
  1050. ];
  1051. checkSynth(
  1052. /*
  1053. * main_header
  1054. */
  1055. compressed,
  1056. false,
  1057. ''
  1058. );
  1059. },
  1060. testInvalidTooFarDist() {
  1061. const compressed = [
  1062. 0xa1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00,
  1063. 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0xe8, 0xe0,
  1064. 0x62, 0x6f, 0x4f, 0x60, 0x66, 0xe8, 0x44, 0x38, 0x0f, 0x09, 0x0d
  1065. ];
  1066. checkSynth(
  1067. /*
  1068. * main_header: 10
  1069. * metablock_header_begin: 1, 0, 10, 0
  1070. * metablock_header_trivial_context
  1071. * huffman_fixed: 256
  1072. * huffman_fixed: 704
  1073. * huffman_fixed: 64
  1074. * command_easy: 2, "too far!", 1000000 // distance too far for 10 wbits
  1075. */
  1076. compressed,
  1077. false,
  1078. ''
  1079. );
  1080. },
  1081. testInvalidTooLargeContextMap() {
  1082. const compressed = [
  1083. 0x1b, 0x00, 0x00, 0xd1, 0xe1, 0x01, 0xc6, 0xe0, 0xe2, 0x06, 0x00, 0x00,
  1084. 0x91, 0xb2, 0x70, 0xfe, 0xfb, 0x45, 0x58, 0x88, 0x01, 0x00, 0x70, 0xb0,
  1085. 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x01
  1086. ];
  1087. checkSynth(
  1088. /*
  1089. * // Has a repeat code a context map that makes the size too big -> invalid.
  1090. * main_header
  1091. * metablock_header_begin: 1, 0, 1, 0
  1092. * // two literal block types
  1093. * vlq_blocktypes: 2
  1094. * huffman_simple: 1,4,4, 1,0,2,3 // literal blocktype prefix code
  1095. * huffman_fixed: 26 // literal blockcount prefix code
  1096. * blockcount_easy: 1
  1097. * // one ins/copy and dist block type
  1098. * vlq_blocktypes: 1
  1099. * vlq_blocktypes: 1
  1100. * ndirect: 0, 0
  1101. * // two MSB6 literal context modes
  1102. * bits: "00", "00"
  1103. * // two literal prefix codes
  1104. * vlq_blocktypes: 2
  1105. * // literal context map
  1106. * vlq_rlemax: 5
  1107. * huffman_simple: 0,3,7, 5,0,6 // context map RLE Huffman code
  1108. * // Too long context map RLE: repeat 0 64 times, 1+5 65 times, that is 129
  1109. * // values which is 1 too much.
  1110. * bits: "01", "0", "11111", "11", "11", "0", "11111"
  1111. * bit: 1 // MTF enabled
  1112. * // one distance prefix code
  1113. * vlq_blocktypes: 1
  1114. * huffman_simple: 0,1,256, 97 // only a's
  1115. * huffman_simple: 0,1,256, 98 // only b's
  1116. * huffman_fixed: 704
  1117. * huffman_fixed: 64
  1118. * // now comes the data
  1119. * command_inscopy_easy: 1, 0
  1120. */
  1121. compressed,
  1122. false,
  1123. 'a'
  1124. );
  1125. },
  1126. testInvalidTransformType() {
  1127. const compressed = [
  1128. 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  1129. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x2d,
  1130. 0x01, 0x19
  1131. ];
  1132. checkSynth(
  1133. /*
  1134. * main_header
  1135. * metablock_header_easy: 4, 1
  1136. * command_inscopy_easy: 0, 4
  1137. * command_dist_easy: 123905 // = 121 << 10 + 1
  1138. */
  1139. compressed,
  1140. false,
  1141. ''
  1142. );
  1143. },
  1144. testInvalidWindowBits9() {
  1145. const compressed = [
  1146. 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00,
  1147. 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0xc8, 0x20,
  1148. 0x32, 0xd4, 0x01
  1149. ];
  1150. checkSynth(
  1151. /*
  1152. * main_header: 9
  1153. * metablock_fixed: \"a\", 1
  1154. */
  1155. compressed,
  1156. false,
  1157. 'a'
  1158. );
  1159. },
  1160. testManyTinyMetablocks() {
  1161. const compressed = [
  1162. 0x0b, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1163. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1164. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1165. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1166. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1167. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1168. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1169. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1170. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1171. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1172. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1173. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1174. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1175. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1176. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1177. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1178. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1179. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1180. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1181. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1182. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1183. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1184. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1185. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1186. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1187. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1188. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1189. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1190. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1191. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1192. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1193. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1194. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1195. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1196. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1197. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1198. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1199. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1200. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1201. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1202. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1203. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1204. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1205. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1206. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1207. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1208. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1209. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1210. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1211. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1212. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1213. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1214. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1215. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1216. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1217. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1218. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1219. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1220. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1221. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1222. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1223. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1224. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1225. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1226. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1227. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1228. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1229. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1230. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1231. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1232. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1233. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1234. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1235. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1236. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1237. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1238. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1239. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1240. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1241. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1242. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1243. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1244. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1245. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1246. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1247. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1248. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1249. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1250. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1251. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1252. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1253. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1254. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1255. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1256. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1257. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1258. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1259. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1260. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1261. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1262. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1263. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1264. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1265. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1266. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1267. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1268. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1269. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1270. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1271. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1272. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1273. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1274. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1275. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1276. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1277. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1278. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1279. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1280. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1281. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1282. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1283. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1284. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1285. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1286. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1287. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1288. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1289. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1290. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1291. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1292. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1293. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1294. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1295. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1296. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1297. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1298. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1299. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1300. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1301. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1302. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1303. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1304. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1305. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1306. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1307. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1308. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1309. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1310. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1311. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1312. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1313. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1314. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1315. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1316. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1317. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1318. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1319. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1320. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1321. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1322. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1323. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1324. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1325. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1326. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1327. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1328. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1329. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1330. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1331. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1332. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1333. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1334. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1335. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1336. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1337. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1338. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1339. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1340. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1341. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1342. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1343. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1344. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1345. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1346. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1347. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1348. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1349. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1350. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1351. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1352. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1353. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1354. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1355. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1356. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1357. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1358. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1359. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1360. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1361. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1362. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1363. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1364. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1365. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1366. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1367. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1368. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1369. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1370. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1371. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1372. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1373. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1374. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1375. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1376. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1377. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1378. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1379. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1380. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1381. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1382. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1383. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1384. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1385. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1386. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1387. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1388. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1389. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1390. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1391. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1392. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1393. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1394. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1395. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1396. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1397. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1398. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1399. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1400. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1401. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1402. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1403. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1404. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1405. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1406. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1407. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1408. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1409. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1410. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1411. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1412. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1413. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1414. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1415. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1416. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1417. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1418. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1419. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1420. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1421. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1422. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1423. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1424. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1425. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1426. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1427. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1428. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1429. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1430. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1431. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1432. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1433. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1434. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1435. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1436. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1437. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1438. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1439. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1440. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1441. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1442. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1443. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1444. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1445. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1446. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1447. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1448. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1449. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1450. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1451. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1452. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1453. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1454. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1455. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1456. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1457. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1458. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1459. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1460. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1461. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1462. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1463. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1464. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1465. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1466. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1467. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1468. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1469. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1470. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1471. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1472. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1473. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1474. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1475. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1476. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1477. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1478. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1479. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1480. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1481. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1482. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1483. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1484. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1485. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1486. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1487. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1488. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1489. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1490. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1491. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1492. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1493. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1494. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1495. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1496. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1497. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1498. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1499. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1500. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1501. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1502. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1503. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1504. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1505. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1506. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1507. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1508. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1509. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1510. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1511. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1512. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1513. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1514. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1515. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1516. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1517. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1518. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1519. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1520. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1521. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1522. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1523. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1524. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1525. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1526. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1527. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1528. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1529. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1530. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1531. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1532. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1533. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1534. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1535. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1536. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1537. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1538. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1539. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1540. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1541. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1542. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1543. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1544. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1545. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1546. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1547. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1548. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1549. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1550. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1551. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1552. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1553. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1554. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1555. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1556. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1557. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1558. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1559. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1560. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1561. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1562. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1563. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1564. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1565. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1566. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1567. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1568. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1569. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1570. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1571. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1572. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1573. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1574. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1575. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1576. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1577. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1578. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1579. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1580. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1581. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1582. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1583. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1584. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1585. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1586. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1587. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1588. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1589. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1590. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1591. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1592. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1593. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1594. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1595. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1596. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1597. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1598. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1599. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1600. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1601. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1602. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1603. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1604. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1605. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1606. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1607. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1608. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1609. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1610. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1611. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1612. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1613. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1614. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1615. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1616. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1617. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1618. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1619. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1620. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1621. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1622. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1623. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1624. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1625. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1626. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1627. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1628. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1629. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1630. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1631. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1632. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1633. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1634. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1635. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1636. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1637. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1638. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1639. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1640. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1641. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1642. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1643. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1644. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1645. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1646. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1647. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1648. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1649. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1650. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1651. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1652. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1653. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1654. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1655. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1656. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1657. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1658. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1659. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1660. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1661. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1662. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1663. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1664. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1665. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1666. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1667. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1668. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1669. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1670. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1671. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1672. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1673. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1674. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1675. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1676. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1677. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1678. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1679. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1680. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1681. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1682. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1683. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1684. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1685. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1686. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1687. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1688. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1689. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1690. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1691. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1692. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1693. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1694. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1695. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1696. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1697. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1698. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1699. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1700. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1701. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1702. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1703. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1704. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1705. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1706. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1707. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1708. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1709. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1710. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1711. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1712. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1713. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1714. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1715. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1716. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1717. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1718. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1719. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1720. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1721. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1722. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1723. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1724. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1725. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1726. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1727. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1728. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1729. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1730. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1731. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1732. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1733. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1734. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1735. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1736. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1737. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1738. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1739. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1740. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1741. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1742. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1743. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1744. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1745. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1746. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1747. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1748. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1749. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1750. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1751. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1752. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1753. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1754. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1755. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1756. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1757. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1758. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1759. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1760. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1761. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1762. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1763. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1764. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1765. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1766. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1767. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1768. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1769. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1770. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1771. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1772. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1773. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1774. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1775. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1776. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1777. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1778. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1779. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1780. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1781. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1782. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1783. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1784. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1785. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1786. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1787. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1788. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1789. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1790. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1791. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1792. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1793. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1794. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1795. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1796. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1797. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1798. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1799. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1800. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1801. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1802. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1803. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1804. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1805. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1806. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1807. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1808. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1809. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1810. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1811. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1812. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1813. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1814. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1815. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1816. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1817. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1818. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1819. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1820. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1821. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1822. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1823. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1824. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1825. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1826. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1827. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1828. 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
  1829. 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
  1830. 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
  1831. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  1832. 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
  1833. 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
  1834. 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
  1835. 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1836. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
  1837. 0x34
  1838. ];
  1839. checkSynth(
  1840. /*
  1841. * main_header
  1842. * repeat: 300
  1843. * metablock_uncompressed: "a"
  1844. * metablock_fixed: "b"
  1845. * end_repeat
  1846. * metablock_lastempty
  1847. */
  1848. compressed,
  1849. true,
  1850. times(300, 'ab')
  1851. );
  1852. },
  1853. testNegativeDistance() {
  1854. const compressed = [
  1855. 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  1856. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x02,
  1857. 0x01, 0x42, 0x01, 0x42, 0x01, 0x42, 0x01, 0x42, 0x01, 0x42, 0x01, 0x1c
  1858. ];
  1859. checkSynth(
  1860. /*
  1861. * main_header
  1862. * metablock_header_easy: 16, 1
  1863. * command_inscopy_easy: 0, 4 // time
  1864. * command_dist_easy: 1
  1865. * command_inscopy_easy: 0, 2 // me
  1866. * command_dist_easy: 2
  1867. * command_inscopy_easy: 0, 2 // me
  1868. * command_dist_easy: 2
  1869. * command_inscopy_easy: 0, 2 // me
  1870. * command_dist_easy: 2
  1871. * command_inscopy_easy: 0, 2 // me
  1872. * command_dist_easy: 2
  1873. * command_inscopy_easy: 0, 2 // me
  1874. * command_dist_easy: 2 // All rb items are 2 now
  1875. * command_inscopy_easy: 0, 2
  1876. * bits: "011100" // 15 -> distance = rb[idx + 2] - 3
  1877. */
  1878. compressed,
  1879. false,
  1880. 'timemememememeXX'
  1881. );
  1882. },
  1883. testNegativeRemainingLenBetweenMetablocks() {
  1884. const compressed = [
  1885. 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  1886. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x09, 0x86,
  1887. 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
  1888. 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x91, 0x60,
  1889. 0x68, 0x04
  1890. ];
  1891. checkSynth(
  1892. /*
  1893. * main_header
  1894. * metablock_header_easy: 1, 0
  1895. * command_easy: 0, "ab" // remaining length == -1 -> invalid stream
  1896. * metablock_header_easy: 2, 1
  1897. * command_easy: 0, "ab"
  1898. */
  1899. compressed,
  1900. false,
  1901. 'abab'
  1902. );
  1903. },
  1904. testOneCommand() {
  1905. const compressed = [
  1906. 0x1b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  1907. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x11, 0x86,
  1908. 0x02
  1909. ];
  1910. checkSynth(
  1911. /*
  1912. * // The stream consists of one command with insert and copy.
  1913. * main_header
  1914. * metablock_header_easy: 3, 1
  1915. * command_easy: 2, "a", 1
  1916. */
  1917. compressed,
  1918. true,
  1919. 'aaa'
  1920. );
  1921. },
  1922. testOneInsert() {
  1923. const compressed = [
  1924. 0x1b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  1925. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x09, 0x86,
  1926. 0x46
  1927. ];
  1928. checkSynth(
  1929. /*
  1930. * // The stream consists of one half command with insert only.
  1931. * main_header
  1932. * metablock_header_easy: 2, 1
  1933. * command_easy: 0, "ab"
  1934. */
  1935. compressed,
  1936. true,
  1937. 'ab'
  1938. );
  1939. },
  1940. testPeculiarWrap() {
  1941. const compressed = [
  1942. 0x21, 0xfc, 0x1f, 0x00, 0x00, 0xa1, 0x12, 0x82, 0x04, 0x60, 0x1d, 0x00,
  1943. 0xca, 0xfe, 0xba, 0xbe, 0xde, 0xad, 0xbe, 0xef, 0x21, 0x00, 0x00, 0x00,
  1944. 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03,
  1945. 0x24, 0x00, 0x00, 0xee, 0xb4, 0x91, 0x61, 0x68, 0x64, 0x0c
  1946. ];
  1947. checkSynth(
  1948. /*
  1949. * main_header: 10
  1950. * // See ZeroCostCommand
  1951. * metablock_header_begin: 0, 0, 2048, 0
  1952. * metablock_header_trivial_context
  1953. * huffman_simple: 0,1,256, 42
  1954. * huffman_simple: 0,1,704, 130
  1955. * huffman_simple: 0,1,64, 0
  1956. * // Metadata block; at least 8 bytes long
  1957. * bits: "0", "11", "0", "01", "00000111"
  1958. * byte_boundary
  1959. * bits: "11001010", "11111110", "10111010", "10111110"
  1960. * bits: "11011110", "10101101", "10111110", "11101111"
  1961. * metablock_header_easy: 3, 1
  1962. * command_easy: 0, "abc", 0
  1963. */
  1964. compressed,
  1965. true,
  1966. times(512, 'left')
  1967. + 'abc'
  1968. );
  1969. },
  1970. testSimplePrefix() {
  1971. const compressed = [
  1972. 0x1b, 0x03, 0x00, 0x00, 0xa0, 0xc3, 0xc4, 0xc6, 0xc8, 0x02, 0x00, 0x70,
  1973. 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x51, 0xa0, 0x1d
  1974. ];
  1975. checkSynth(
  1976. /*
  1977. * main_header
  1978. * metablock_header_begin: 1, 0, 4, 0
  1979. * metablock_header_trivial_context
  1980. * huffman_simple: 1,4,256, 97,98,99,100 // ASCII codes for a, b, c, d
  1981. * huffman_fixed: 704
  1982. * huffman_fixed: 64
  1983. * command_inscopy_easy: 4, 0
  1984. * command_literal_bits: 0, 10, 110, 111 // a, b, c, d
  1985. */
  1986. compressed,
  1987. true,
  1988. 'abcd'
  1989. );
  1990. },
  1991. testSimplePrefixDuplicateSymbols() {
  1992. const compressed = [
  1993. 0x1b, 0x03, 0x00, 0x00, 0xa0, 0xc3, 0xc4, 0xc2, 0xc4, 0x02, 0x00, 0x70,
  1994. 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x51, 0xa0, 0x1d
  1995. ];
  1996. checkSynth(
  1997. /*
  1998. * main_header
  1999. * metablock_header_begin: 1, 0, 4, 0
  2000. * metablock_header_trivial_context
  2001. * huffman_simple: 1,4,256, 97,98,97,98 // ASCII codes for a, b, a, b
  2002. * huffman_fixed: 704
  2003. * huffman_fixed: 64
  2004. * command_inscopy_easy: 4, 0
  2005. * command_literal_bits: 0, 10, 110, 111 // a, b, a, b
  2006. */
  2007. compressed,
  2008. false,
  2009. 'abab'
  2010. );
  2011. },
  2012. testSimplePrefixOutOfRangeSymbols() {
  2013. const compressed = [
  2014. 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x4d, 0xff, 0xef,
  2015. 0x7f, 0xff, 0xfc, 0x07, 0x00, 0xb8, 0xd3, 0x06
  2016. ];
  2017. checkSynth(
  2018. /*
  2019. * main_header
  2020. * metablock_header_begin: 1, 0, 4, 0
  2021. * metablock_header_trivial_context
  2022. * huffman_fixed: 256
  2023. * huffman_simple: 1,4,704, 1023,1022,1021,1020
  2024. * huffman_fixed: 64
  2025. */
  2026. compressed,
  2027. false,
  2028. ''
  2029. );
  2030. },
  2031. testSimplePrefixPlusExtraData() {
  2032. if (pending) pending(); else return;
  2033. const compressed = [
  2034. 0x1b, 0x03, 0x00, 0x00, 0xa0, 0xc3, 0xc4, 0xc6, 0xc8, 0x02, 0x00, 0x70,
  2035. 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x51, 0xa0, 0x1d,
  2036. 0x55, 0xaa
  2037. ];
  2038. checkSynth(
  2039. /*
  2040. * main_header
  2041. * metablock_header_begin: 1, 0, 4, 0
  2042. * metablock_header_trivial_context
  2043. * huffman_simple: 1,4,256, 97,98,99,100 // ASCII codes for a, b, c, d
  2044. * huffman_fixed: 704
  2045. * huffman_fixed: 64
  2046. * command_inscopy_easy: 4, 0
  2047. * command_literal_bits: 0, 10, 110, 111 // a, b, c, d
  2048. * byte_boundary
  2049. * bits: "01010101", "10101010"
  2050. */
  2051. compressed,
  2052. true,
  2053. 'abcd'
  2054. );
  2055. },
  2056. testStressReadDistanceExtraBits() {
  2057. const compressed = [
  2058. 0x4f, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00,
  2059. 0x00, 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0xf6,
  2060. 0x69, 0xef, 0xff, 0x0c, 0x8d, 0x8c, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00,
  2061. 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
  2062. 0xa8, 0xaa, 0xef, 0xab, 0xaa, 0x7f, 0x24, 0x16, 0x35, 0x8f, 0xac, 0x9e,
  2063. 0x3d, 0xf7, 0xf3, 0xe3, 0x0a, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x78, 0x01,
  2064. 0x08, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41,
  2065. 0x42, 0x43, 0x44, 0x45, 0x46, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
  2066. 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x30, 0x31, 0x32,
  2067. 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45,
  2068. 0x46, 0x03
  2069. ];
  2070. checkSynth(
  2071. /*
  2072. * main_header: 24
  2073. * metablock_header_easy: 8388605, 0 // 2^23 - 3 = shortest 22-bit distance
  2074. * command_easy: 8388602, "abc", 1
  2075. * metablock_header_begin: 0, 0, 3, 0
  2076. * vlq_blocktypes: 1 // num litetal block types
  2077. * vlq_blocktypes: 1 // num command block types
  2078. * vlq_blocktypes: 1 // num distance block types
  2079. * ndirect: 0, 0
  2080. * bits: "00" // literal context modes
  2081. * vlq_blocktypes: 1 // num literal Huffman trees
  2082. * // command has no context -> num trees == num block types
  2083. * vlq_blocktypes: 1 // num distance Huffman trees
  2084. * huffman_fixed: 256
  2085. * huffman_fixed: 704
  2086. * // Begin of distance Huffman tree. First 15 codes have lengths 1 to 15.
  2087. * // Symbol that corresponds to first half of 22-bit distance range is also
  2088. * // 15. All other symbols are 0.
  2089. * hskip: 0
  2090. * clcl_ordered: 4,4,4,4, 4,4,4,4, 4,4,4,4, 4,4, 5,5,5,5
  2091. * set_prefix_cl_rle: "0000", "0001", "0010", "0011", \
  2092. * "0100", "0101", "0110", "0111", \
  2093. * "1000", "1001", "1010", "1011", \
  2094. * "1100", "1101", \
  2095. * "11100", "11101", "11110", "11111"
  2096. * cl_rle: 1
  2097. * cl_rle: 2
  2098. * cl_rle: 3
  2099. * cl_rle: 4
  2100. * cl_rle: 5
  2101. * cl_rle: 6
  2102. * cl_rle: 7
  2103. * cl_rle: 8
  2104. * cl_rle: 9
  2105. * cl_rle: 10
  2106. * cl_rle: 11
  2107. * cl_rle: 12
  2108. * cl_rle: 13
  2109. * cl_rle: 14
  2110. * cl_rle: 15
  2111. * cl_rle_rep_0: 43
  2112. * cl_rle: 15 // literal number 97, that is, the letter 'a'
  2113. * // end of literal Huffman tree
  2114. * command_inscopy_easy: 0, 3 // Insert 0, copy 3
  2115. * // 15 bits of distance code plus 22 extra bits
  2116. * command_dist_bits: "111111111111111", "0000000000000000000000"
  2117. * metablock_uncompressed: "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
  2118. * metablock_lastempty
  2119. */
  2120. compressed,
  2121. true,
  2122. 'abc'
  2123. + times(8388602, 'c')
  2124. + 'abc'
  2125. + times(3, '0123456789ABCDEF')
  2126. );
  2127. },
  2128. testTooManySymbolsRepeated() {
  2129. const compressed = [
  2130. 0x1b, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc3, 0x3d, 0x80, 0x58, 0x82,
  2131. 0x0c, 0x00, 0xc0, 0xc1, 0x96, 0x49, 0x0c, 0x90, 0x00, 0x00, 0xb8, 0xd3,
  2132. 0x46, 0x01, 0x1a, 0x01
  2133. ];
  2134. checkSynth(
  2135. /*
  2136. * // This test is a copy of CustomHuffmanCode, with changed repeat count.
  2137. * main_header
  2138. * metablock_header_begin: 1, 0, 4, 0
  2139. * metablock_header_trivial_context
  2140. * hskip: 0
  2141. * clcl_ordered: 0,3,0,0,0,0,0,0,3,2,0,0,0,0,0,0,1,0
  2142. * set_prefix_cl_rle: "", "110", "", "", "", "", "", "", "111", "10",\
  2143. * "", "", "", "", "", "", "0", ""
  2144. * cl_rle: 8
  2145. * cl_rle_rep: 9, 96
  2146. * cl_rle: 1
  2147. * cl_rle_rep: 9, 159 // 1 + 96 + 1 + 159 = 257 > 256 = alphabet size
  2148. * huffman_fixed: 704
  2149. * huffman_fixed: 64
  2150. * command_inscopy_easy: 4, 0
  2151. * command_literal_bits: 0, 0, 0, 101100010
  2152. */
  2153. compressed,
  2154. false,
  2155. 'aaab'
  2156. );
  2157. },
  2158. testTransformedDictWord() {
  2159. const compressed = [
  2160. 0x1b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  2161. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x09,
  2162. 0x01, 0x01
  2163. ];
  2164. checkSynth(
  2165. /*
  2166. * // The stream consists of a transformed dictionary word.
  2167. * main_header
  2168. * metablock_header_easy: 9, 1
  2169. * command_inscopy_easy: 0, 4
  2170. * command_dist_easy: 5121 // 5 << 10 + 1
  2171. */
  2172. compressed,
  2173. true,
  2174. 'time the '
  2175. );
  2176. },
  2177. testTransformedDictWordTooLong() {
  2178. const compressed = [
  2179. 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00,
  2180. 0x07, 0x5b, 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x09,
  2181. 0x01, 0x01
  2182. ];
  2183. checkSynth(
  2184. /*
  2185. * // Has a transformed dictionary word that goes over the end of the
  2186. * // meta-block, but the base dictionary word fits in the meta-block.
  2187. * // Same as TransformedDictWord, but with a shorter meta-block length.
  2188. * main_header
  2189. * metablock_header_easy: 4, 1
  2190. * command_inscopy_easy: 0, 4
  2191. * command_dist_easy: 5121 // 5 << 10 + 1
  2192. */
  2193. compressed,
  2194. false,
  2195. ''
  2196. );
  2197. },
  2198. testZeroCostCommand() {
  2199. const compressed = [
  2200. 0xa1, 0xf8, 0x1f, 0x00, 0x00, 0xa1, 0x12, 0x82, 0x04, 0x00
  2201. ];
  2202. checkSynth(
  2203. /*
  2204. * main_header: 10
  2205. * metablock_header_begin: 1, 0, 1024, 0 // last, not empty, length, compressed
  2206. * metablock_header_trivial_context
  2207. * huffman_simple: 0,1,256, 42 // literal: any
  2208. * huffman_simple: 0,1,704, 130 // command: insert = 0, copy = 4, distance_code = -1
  2209. * huffman_simple: 0,1,64, 0 // distance: last
  2210. * // 256 0-bit commands with direct distances
  2211. */
  2212. compressed,
  2213. true,
  2214. times(256, 'left')
  2215. );
  2216. },
  2217. testZeroCostLiterals() {
  2218. const compressed = [
  2219. 0x9b, 0xff, 0xff, 0xff, 0x00, 0x20, 0x54, 0x00, 0x00, 0x38, 0xd8, 0x32,
  2220. 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0xcc, 0xe1, 0x7b, 0xfa, 0x0f
  2221. ];
  2222. checkSynth(
  2223. /*
  2224. * main_header
  2225. * metablock_header_begin: 1, 0, 16777216, 0
  2226. * metablock_header_trivial_context
  2227. * huffman_simple: 0,1,256, 42 // Single symbol alphabet
  2228. * huffman_fixed: 704
  2229. * huffman_fixed: 64
  2230. * command_inscopy_easy: 16777216, 0
  2231. * // 16777216 times 0 bits
  2232. */
  2233. compressed,
  2234. true,
  2235. times(16777216, '*')
  2236. );
  2237. },
  2238. /* GENERATED CODE END */
  2239. };
  2240. describe("DecodeSynthTest", () => {
  2241. const testNames = Object.keys(allTests);
  2242. for (let i = 0; i < testNames.length; ++i) {
  2243. const testName = testNames[i] as keyof typeof allTests;
  2244. it(testName, allTests[testName]);
  2245. }
  2246. });