@fluid-experimental/property-properties 0.58.1001 → 0.58.2000-58133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/dist/containerSerializer.d.ts.map +1 -1
  2. package/dist/containerSerializer.js +4 -10
  3. package/dist/containerSerializer.js.map +1 -1
  4. package/dist/enableValidations.d.ts.map +1 -1
  5. package/dist/enableValidations.js +1 -1
  6. package/dist/enableValidations.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
  11. package/dist/properties/abstractStaticCollectionProperty.js +1 -28
  12. package/dist/properties/abstractStaticCollectionProperty.js.map +1 -1
  13. package/dist/properties/arrayProperty.d.ts.map +1 -1
  14. package/dist/properties/arrayProperty.js +26 -85
  15. package/dist/properties/arrayProperty.js.map +1 -1
  16. package/dist/properties/baseProperty.d.ts.map +1 -1
  17. package/dist/properties/baseProperty.js +9 -71
  18. package/dist/properties/baseProperty.js.map +1 -1
  19. package/dist/properties/boolProperty.d.ts.map +1 -1
  20. package/dist/properties/boolProperty.js +0 -1
  21. package/dist/properties/boolProperty.js.map +1 -1
  22. package/dist/properties/containerProperty.d.ts.map +1 -1
  23. package/dist/properties/containerProperty.js +4 -22
  24. package/dist/properties/containerProperty.js.map +1 -1
  25. package/dist/properties/enumArrayProperty.d.ts.map +1 -1
  26. package/dist/properties/enumArrayProperty.js +2 -14
  27. package/dist/properties/enumArrayProperty.js.map +1 -1
  28. package/dist/properties/enumProperty.d.ts.map +1 -1
  29. package/dist/properties/enumProperty.js +3 -10
  30. package/dist/properties/enumProperty.js.map +1 -1
  31. package/dist/properties/floatProperties.js +0 -2
  32. package/dist/properties/floatProperties.js.map +1 -1
  33. package/dist/properties/index.d.ts +7 -38
  34. package/dist/properties/index.d.ts.map +1 -1
  35. package/dist/properties/index.js +37 -68
  36. package/dist/properties/index.js.map +1 -1
  37. package/dist/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
  38. package/dist/properties/indexedCollectionBaseProperty.js +6 -18
  39. package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
  40. package/dist/properties/intProperties.d.ts.map +1 -1
  41. package/dist/properties/intProperties.js +3 -20
  42. package/dist/properties/intProperties.js.map +1 -1
  43. package/dist/properties/lazyLoadedProperties.js.map +1 -1
  44. package/dist/properties/mapProperty.d.ts.map +1 -1
  45. package/dist/properties/mapProperty.js +4 -23
  46. package/dist/properties/mapProperty.js.map +1 -1
  47. package/dist/properties/namedNodeProperty.d.ts.map +1 -1
  48. package/dist/properties/namedNodeProperty.js.map +1 -1
  49. package/dist/properties/namedProperty.d.ts.map +1 -1
  50. package/dist/properties/namedProperty.js +0 -3
  51. package/dist/properties/namedProperty.js.map +1 -1
  52. package/dist/properties/nodeProperty.d.ts.map +1 -1
  53. package/dist/properties/nodeProperty.js +0 -3
  54. package/dist/properties/nodeProperty.js.map +1 -1
  55. package/dist/properties/primitiveTypeCasts.d.ts.map +1 -1
  56. package/dist/properties/primitiveTypeCasts.js +2 -2
  57. package/dist/properties/primitiveTypeCasts.js.map +1 -1
  58. package/dist/properties/referenceArrayProperty.d.ts.map +1 -1
  59. package/dist/properties/referenceArrayProperty.js +3 -16
  60. package/dist/properties/referenceArrayProperty.js.map +1 -1
  61. package/dist/properties/referenceMapProperty.d.ts.map +1 -1
  62. package/dist/properties/referenceMapProperty.js +3 -13
  63. package/dist/properties/referenceMapProperty.js.map +1 -1
  64. package/dist/properties/referenceProperty.d.ts.map +1 -1
  65. package/dist/properties/referenceProperty.js +4 -12
  66. package/dist/properties/referenceProperty.js.map +1 -1
  67. package/dist/properties/setProperty.d.ts.map +1 -1
  68. package/dist/properties/setProperty.js +3 -22
  69. package/dist/properties/setProperty.js.map +1 -1
  70. package/dist/properties/stringProperty.d.ts.map +1 -1
  71. package/dist/properties/stringProperty.js +12 -48
  72. package/dist/properties/stringProperty.js.map +1 -1
  73. package/dist/properties/uintProperties.js +0 -3
  74. package/dist/properties/uintProperties.js.map +1 -1
  75. package/dist/properties/valueArrayProperty.d.ts.map +1 -1
  76. package/dist/properties/valueArrayProperty.js +3 -45
  77. package/dist/properties/valueArrayProperty.js.map +1 -1
  78. package/dist/properties/valueMapProperty.d.ts.map +1 -1
  79. package/dist/properties/valueMapProperty.js +4 -29
  80. package/dist/properties/valueMapProperty.js.map +1 -1
  81. package/dist/properties/valueProperty.d.ts.map +1 -1
  82. package/dist/properties/valueProperty.js +2 -14
  83. package/dist/properties/valueProperty.js.map +1 -1
  84. package/dist/propertyFactory.d.ts.map +1 -1
  85. package/dist/propertyFactory.js +35 -72
  86. package/dist/propertyFactory.js.map +1 -1
  87. package/dist/propertyTemplate.d.ts.map +1 -1
  88. package/dist/propertyTemplate.js +0 -14
  89. package/dist/propertyTemplate.js.map +1 -1
  90. package/dist/propertyTemplateWrapper.d.ts.map +1 -1
  91. package/dist/propertyTemplateWrapper.js +4 -12
  92. package/dist/propertyTemplateWrapper.js.map +1 -1
  93. package/dist/propertyUtils.d.ts.map +1 -1
  94. package/dist/propertyUtils.js.map +1 -1
  95. package/dist/test/properties/arrayProperty.spec.js +82 -82
  96. package/dist/test/properties/arrayProperty.spec.js.map +1 -1
  97. package/dist/test/properties/baseProperty.spec.js +53 -53
  98. package/dist/test/properties/baseProperty.spec.js.map +1 -1
  99. package/dist/test/properties/containerProperty.spec.js +25 -25
  100. package/dist/test/properties/containerProperty.spec.js.map +1 -1
  101. package/dist/test/properties/customArrayProperty.spec.js +35 -35
  102. package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
  103. package/dist/test/properties/enumArrayProperty.spec.js +6 -6
  104. package/dist/test/properties/enumArrayProperty.spec.js.map +1 -1
  105. package/dist/test/properties/enumProperty.spec.js +26 -26
  106. package/dist/test/properties/enumProperty.spec.js.map +1 -1
  107. package/dist/test/properties/float32.spec.js.map +1 -1
  108. package/dist/test/properties/int64ArrayProperty.spec.js +22 -22
  109. package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
  110. package/dist/test/properties/int64MapProperty.spec.js +28 -28
  111. package/dist/test/properties/int64MapProperty.spec.js.map +1 -1
  112. package/dist/test/properties/int64Property.spec.js +11 -11
  113. package/dist/test/properties/int64Property.spec.js.map +1 -1
  114. package/dist/test/properties/isLeafNode.spec.js +25 -25
  115. package/dist/test/properties/isLeafNode.spec.js.map +1 -1
  116. package/dist/test/properties/mapProperty.spec.js +110 -110
  117. package/dist/test/properties/mapProperty.spec.js.map +1 -1
  118. package/dist/test/properties/namedNodeProperty.spec.js +5 -5
  119. package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
  120. package/dist/test/properties/nodeProperty.spec.js +160 -160
  121. package/dist/test/properties/nodeProperty.spec.js.map +1 -1
  122. package/dist/test/properties/referenceProperty.spec.js +21 -21
  123. package/dist/test/properties/referenceProperty.spec.js.map +1 -1
  124. package/dist/test/properties/relationshipProperty.spec.js +4 -4
  125. package/dist/test/properties/relationshipProperty.spec.js.map +1 -1
  126. package/dist/test/properties/setProperty.spec.js +32 -32
  127. package/dist/test/properties/setProperty.spec.js.map +1 -1
  128. package/dist/test/properties/stringProperty.spec.js +38 -38
  129. package/dist/test/properties/stringProperty.spec.js.map +1 -1
  130. package/dist/test/properties/uint64Property.spec.js +3 -3
  131. package/dist/test/properties/uint64Property.spec.js.map +1 -1
  132. package/dist/test/properties/valueMapProperty.spec.js +28 -28
  133. package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
  134. package/dist/test/properties/valueProperty.spec.js +7 -7
  135. package/dist/test/properties/valueProperty.spec.js.map +1 -1
  136. package/dist/test/propertyFactory.spec.js +559 -560
  137. package/dist/test/propertyFactory.spec.js.map +1 -1
  138. package/dist/test/propertyTemplateWrapper.spec.js +38 -38
  139. package/dist/test/propertyTemplateWrapper.spec.js.map +1 -1
  140. package/dist/test/propertyUtils.spec.js +5 -5
  141. package/dist/test/propertyUtils.spec.js.map +1 -1
  142. package/dist/test/reversibleChangeset.spec.js +266 -266
  143. package/dist/test/reversibleChangeset.spec.js.map +1 -1
  144. package/dist/test/setup.js.map +1 -1
  145. package/dist/test/tsconfig.tsbuildinfo +145 -145
  146. package/dist/test/utils.spec.js +508 -517
  147. package/dist/test/utils.spec.js.map +1 -1
  148. package/dist/test/validation/badMissingSemverInTypeid.js +9 -9
  149. package/dist/test/validation/badMissingSemverInTypeid.js.map +1 -1
  150. package/dist/test/validation/badPrimitiveTypeid.js +5 -5
  151. package/dist/test/validation/badPrimitiveTypeid.js.map +1 -1
  152. package/dist/test/validation/goodColorId.js +42 -42
  153. package/dist/test/validation/goodColorId.js.map +1 -1
  154. package/dist/test/validation/goodColorPalette.js +2 -2
  155. package/dist/test/validation/goodColorPalette.js.map +1 -1
  156. package/dist/test/validation/goodPointId.js +9 -9
  157. package/dist/test/validation/goodPointId.js.map +1 -1
  158. package/dist/test/validation/reversibleChangeSetTestData.js +1 -1
  159. package/dist/test/validation/reversibleChangeSetTestData.js.map +1 -1
  160. package/lib/containerSerializer.js +4 -10
  161. package/lib/containerSerializer.js.map +1 -1
  162. package/lib/enableValidations.js +1 -1
  163. package/lib/enableValidations.js.map +1 -1
  164. package/lib/index.js +1 -1
  165. package/lib/index.js.map +1 -1
  166. package/lib/properties/abstractStaticCollectionProperty.js +1 -28
  167. package/lib/properties/abstractStaticCollectionProperty.js.map +1 -1
  168. package/lib/properties/arrayProperty.js +26 -85
  169. package/lib/properties/arrayProperty.js.map +1 -1
  170. package/lib/properties/baseProperty.js +7 -69
  171. package/lib/properties/baseProperty.js.map +1 -1
  172. package/lib/properties/boolProperty.js +0 -1
  173. package/lib/properties/boolProperty.js.map +1 -1
  174. package/lib/properties/containerProperty.js +4 -22
  175. package/lib/properties/containerProperty.js.map +1 -1
  176. package/lib/properties/enumArrayProperty.js +2 -14
  177. package/lib/properties/enumArrayProperty.js.map +1 -1
  178. package/lib/properties/enumProperty.js +3 -10
  179. package/lib/properties/enumProperty.js.map +1 -1
  180. package/lib/properties/floatProperties.js +0 -2
  181. package/lib/properties/floatProperties.js.map +1 -1
  182. package/lib/properties/index.js +7 -38
  183. package/lib/properties/index.js.map +1 -1
  184. package/lib/properties/indexedCollectionBaseProperty.js +6 -18
  185. package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
  186. package/lib/properties/intProperties.js +3 -20
  187. package/lib/properties/intProperties.js.map +1 -1
  188. package/lib/properties/lazyLoadedProperties.js.map +1 -1
  189. package/lib/properties/mapProperty.js +4 -23
  190. package/lib/properties/mapProperty.js.map +1 -1
  191. package/lib/properties/namedNodeProperty.js.map +1 -1
  192. package/lib/properties/namedProperty.js +0 -3
  193. package/lib/properties/namedProperty.js.map +1 -1
  194. package/lib/properties/nodeProperty.js +0 -3
  195. package/lib/properties/nodeProperty.js.map +1 -1
  196. package/lib/properties/primitiveTypeCasts.js +2 -2
  197. package/lib/properties/primitiveTypeCasts.js.map +1 -1
  198. package/lib/properties/referenceArrayProperty.js +3 -16
  199. package/lib/properties/referenceArrayProperty.js.map +1 -1
  200. package/lib/properties/referenceMapProperty.js +3 -13
  201. package/lib/properties/referenceMapProperty.js.map +1 -1
  202. package/lib/properties/referenceProperty.js +4 -12
  203. package/lib/properties/referenceProperty.js.map +1 -1
  204. package/lib/properties/setProperty.js +3 -22
  205. package/lib/properties/setProperty.js.map +1 -1
  206. package/lib/properties/stringProperty.js +12 -48
  207. package/lib/properties/stringProperty.js.map +1 -1
  208. package/lib/properties/uintProperties.js +0 -3
  209. package/lib/properties/uintProperties.js.map +1 -1
  210. package/lib/properties/valueArrayProperty.js +3 -45
  211. package/lib/properties/valueArrayProperty.js.map +1 -1
  212. package/lib/properties/valueMapProperty.js +4 -29
  213. package/lib/properties/valueMapProperty.js.map +1 -1
  214. package/lib/properties/valueProperty.js +2 -14
  215. package/lib/properties/valueProperty.js.map +1 -1
  216. package/lib/propertyFactory.js +35 -72
  217. package/lib/propertyFactory.js.map +1 -1
  218. package/lib/propertyTemplate.js +0 -14
  219. package/lib/propertyTemplate.js.map +1 -1
  220. package/lib/propertyTemplateWrapper.js +4 -12
  221. package/lib/propertyTemplateWrapper.js.map +1 -1
  222. package/lib/propertyUtils.js.map +1 -1
  223. package/package.json +13 -6
@@ -1 +1 @@
1
- {"version":3,"file":"reversibleChangeset.spec.js","sourceRoot":"","sources":["../../src/test/reversibleChangeset.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* globals expect*/\n/**\n * @fileoverview In this file, we will test the functions of the property factory.\n */\nconst _ = require('lodash');\nconst { PropertyFactory } = require('..');\nconst { ChangeSet } = require('@fluid-experimental/property-changeset')\nconst { Int64, Uint64 } = require('@fluid-experimental/property-common');\nconst deepCopy = _.cloneDeep;\n\ndescribe('Reversible ChangeSets', function () {\n\n var testRevAndInvCS = function (initialProperty, modificationFunction,\n expectedRevCS, expectedAfterCS, expectedInverseCS) {\n\n var initialChangeSet = new ChangeSet(initialProperty._serialize(false));\n initialChangeSet.setIsNormalized(true);\n var initialChangeSetBackup = deepCopy(initialChangeSet.getSerializedChangeSet());\n initialProperty.cleanDirty();\n\n var initialPropertyClone = initialProperty.clone();\n var initialPropertyBackup = initialProperty.clone();\n\n modificationFunction(initialProperty);\n\n var cs2 = new ChangeSet(initialProperty._serialize(true));\n\n var cs2Rev = cs2.clone();\n\n cs2Rev._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Rev.getSerializedChangeSet());\n\n cs2Rev._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\n var cs2Strip = cs2Rev.clone();\n cs2Strip._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Strip.getSerializedChangeSet());\n\n\n cs2._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n var csR = cs2.clone();\n csR._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\n if (expectedRevCS) {\n expect(csR.getSerializedChangeSet()).to.deep.equal(expectedRevCS);\n }\n\n // now apply cs2 on the initial changeset\n initialChangeSet.applyChangeSet(cs2);\n if (expectedAfterCS) {\n expect(initialChangeSet.getSerializedChangeSet()).to.deep.equal(expectedAfterCS);\n }\n // now apply cs2 on the initial property\n initialPropertyClone.applyChangeSet(cs2.getSerializedChangeSet());\n if (expectedAfterCS) {\n expect(initialPropertyClone._serialize(false)).to.deep.equal(initialProperty._serialize(false));\n }\n // now inverse the changeset\n var inverseCS = cs2.clone();\n inverseCS.toInverseChangeSet();\n if (expectedInverseCS) {\n expect(inverseCS.getSerializedChangeSet()).to.deep.equal(expectedInverseCS);\n }\n // applying the inverse change should get us back to the initial state\n // apply on changeset\n initialChangeSet.applyChangeSet(inverseCS);\n expect(initialChangeSet.getSerializedChangeSet()).to.deep.equal(initialChangeSetBackup);\n // apply on properties\n initialPropertyClone.applyChangeSet(inverseCS.getSerializedChangeSet());\n expect(initialPropertyClone._serialize(false)).to.deep.equal(initialPropertyBackup._serialize(false));\n };\n\n before(function () {\n\n var TaskSubjectParentTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.parentTemplate-1.0.0',\n properties: [\n { id: 'directMember', typeid: 'autodesk.tests:ChangeSetApplyAfterTask.memberTemplate-1.0.0' },\n {\n id: 'nested', properties: [\n { id: 'member', typeid: 'autodesk.tests:ChangeSetApplyAfterTask.nestedTemplate-1.0.0' }\n ]\n }\n ]\n };\n var TaskSubjectMemberTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.memberTemplate-1.0.0',\n properties: [\n { id: 'progress', typeid: 'Uint32' },\n { id: 'timeRemaining', typeid: 'Uint32' }\n ]\n };\n\n var TaskSubjectTestTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.nodeTemplate-1.0.0',\n properties: [\n { id: 'result', typeid: 'NodeProperty' },\n { id: 'integer', typeid: 'Uint32' }\n ]\n };\n\n // Register the templates from the discussion document\n var Vec3Template = {\n typeid: 'autodesk.test:vector3-1.0.0',\n properties: [\n { id: 'x', typeid: 'Float32' },\n { id: 'y', typeid: 'Float32' },\n { id: 'z', typeid: 'Float32' }\n ]\n };\n\n var Point2DTemplate = {\n typeid: 'autodesk.test:point2d-1.0.0',\n properties: [\n {\n id: 'position', properties: [\n { id: 'x', typeid: 'Float32' },\n { id: 'y', typeid: 'Float32' }\n ]\n },\n { id: 'normal', typeid: 'autodesk.test:vector3-1.0.0' },\n { id: 'neighbours', typeid: 'autodesk.test:vector3-1.0.0', context: 'map' },\n { id: 'temperature', typeid: 'Float32' }\n ]\n };\n\n var TestArrayFloat32 = {\n typeid: 'autodesk.test:test.arrayfloat32-1.0.0',\n properties: [\n { id: 'data', typeid: 'Float32', context: 'array' }\n ]\n };\n\n var SimpleStringTestPropertyTemplate = {\n typeid: 'autodesk.tests:DataStringTestProperty-1.0.0',\n properties: [\n { id: 'data', typeid: 'String' }\n ]\n };\n\n var SimpleRefTestPropertyTemplate = {\n typeid: 'autodesk.tests:DataRefTestProperty-1.0.0',\n properties: [\n { id: 'data', typeid: 'Reference' }\n ]\n };\n\n var SimpleMapTestPropertyTemplate = {\n typeid: 'autodesk.tests:MapTestPropertyID-1.0.0',\n properties: [\n { id: 'data', typeid: 'Float32', context: 'map' }\n ]\n };\n\n var TestPropertyTemplate = {\n typeid: 'autodesk.tests:MapTestNamedPropertyID-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'stringProperty', typeid: 'String' },\n { id: 'stringProperty2', typeid: 'String' },\n { id: 'map', context: 'map', typeid: 'NamedProperty' }\n ]\n };\n var AnonymousTestPropertyTemplate = {\n typeid: 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0',\n properties: [\n { id: 'stringProperty', typeid: 'String' }\n ]\n };\n\n var CuststomArrayTemplate = {\n typeid: 'autodesk.tests:CustomArrayChangesetTestID-1.0.0',\n properties: [\n { id: 'data', typeid: 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0', context: 'array' }\n ]\n };\n\n var TestEnumTemplate = {\n typeid: 'autodesk.core:UnitsEnum-1.0.0',\n inherits: 'Enum',\n annotation: { description: 'The metric units' },\n properties: [\n { id: 'm', value: 1, annotation: { description: 'meter' } },\n { id: 'cm', value: 2, annotation: { description: 'centimeter' } },\n { id: 'mm', value: 3, annotation: { description: 'millimeter' } }\n ]\n };\n PropertyFactory._reregister(TestEnumTemplate);\n\n var TestBaseContainingEnumTemplate = {\n typeid: 'autodesk.core:CustomWithEnumID-1.0.0',\n properties: [{\n id: 'data', typeid: 'autodesk.core:UnitsEnum-1.0.0'\n }]\n };\n\n var TestInheritsNodePropertyObject = {\n inherits: ['NodeProperty'],\n typeid: 'autodesk.tests:SimpleInheritsNodeProperty-1.0.0'\n };\n\n PropertyFactory._reregister(TestInheritsNodePropertyObject);\n PropertyFactory._reregister(TestEnumTemplate);\n PropertyFactory._reregister(TestBaseContainingEnumTemplate);\n\n PropertyFactory._reregister(CuststomArrayTemplate);\n PropertyFactory._reregister(TestPropertyTemplate);\n PropertyFactory._reregister(AnonymousTestPropertyTemplate);\n\n PropertyFactory._reregister(SimpleMapTestPropertyTemplate);\n PropertyFactory._reregister(SimpleStringTestPropertyTemplate);\n PropertyFactory._reregister(SimpleRefTestPropertyTemplate);\n PropertyFactory._reregister(Vec3Template);\n PropertyFactory._reregister(Point2DTemplate);\n PropertyFactory._reregister(TaskSubjectParentTemplate);\n PropertyFactory._reregister(TaskSubjectMemberTemplate);\n PropertyFactory._reregister(TaskSubjectTestTemplate);\n PropertyFactory._reregister(TestArrayFloat32);\n });\n\n describe('Make inversible, apply and reverse for primitive properties.', function () {\n\n it('should work for modifying Int8', function () {\n var prop = PropertyFactory.create('Int8');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint8', function () {\n var prop = PropertyFactory.create('Uint8');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int16', function () {\n var prop = PropertyFactory.create('Int16');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint16', function () {\n var prop = PropertyFactory.create('Uint16');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int32', function () {\n var prop = PropertyFactory.create('Int32');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint32', function () {\n var prop = PropertyFactory.create('Uint32');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int64', function () {\n var prop = PropertyFactory.create('Int64');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(new Int64(10, 10)); },\n { 'oldValue': [0, 0], 'value': [10, 10] },\n [10, 10],\n { 'oldValue': [10, 10], 'value': [0, 0] });\n });\n it('should work for modifying Uint64', function () {\n var prop = PropertyFactory.create('Uint64');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(new Uint64(10, 10)); },\n { 'oldValue': [0, 0], 'value': [10, 10] },\n [10, 10],\n { 'oldValue': [10, 10], 'value': [0, 0] });\n });\n it('should work for modifying Float32', function () {\n var prop = PropertyFactory.create('Float32');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(0.5); },\n { 'oldValue': 0, 'value': 0.5 },\n 0.5,\n { 'oldValue': 0.5, 'value': 0 });\n });\n it('should work for modifying Float64', function () {\n var prop = PropertyFactory.create('Float64');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(0.5); },\n { 'oldValue': 0, 'value': 0.5 },\n 0.5,\n { 'oldValue': 0.5, 'value': 0 });\n });\n it('should work for modifying Bool', function () {\n var prop = PropertyFactory.create('Bool');\n testRevAndInvCS(\n prop,\n function () { prop.setValue(true); },\n { 'oldValue': false, 'value': true },\n true,\n { 'oldValue': true, 'value': false });\n });\n // These tests have been disabled, since the interface of\n // the ChangeSet class is ambiguous when inserting a string\n it.skip('@bugfix should work for modifying String', function () {\n var prop = PropertyFactory.create('String');\n testRevAndInvCS(\n prop,\n function () { prop.setValue('test'); },\n { 'oldValue': '', 'value': 'test' },\n 'test',\n { 'oldValue': 'test', 'value': '' });\n });\n // These tests have been disabled, since the interface of\n // the ChangeSet class is ambiguous when inserting a string\n it.skip('@bugfix should work for modifying Reference', function () {\n var prop = PropertyFactory.create('Reference');\n testRevAndInvCS(\n prop,\n function () { prop.setValue('/'); },\n { 'oldValue': '', 'value': '/' },\n '/',\n { 'oldValue': '/', 'value': '' });\n });\n });\n\n describe('Make inversible, apply and reverse for primitive properties in a NodeProperty.', function () {\n\n it('should work for modifying Int8', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int8');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(10); },\n { 'modify': { 'Int8': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int8': { 'prop': 10 } } },\n { 'modify': { 'Int8': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint8', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint8');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(10); },\n { 'modify': { 'Uint8': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint8': { 'prop': 10 } } },\n { 'modify': { 'Uint8': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int16', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int16');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(10); },\n { 'modify': { 'Int16': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int16': { 'prop': 10 } } },\n { 'modify': { 'Int16': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint16', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint16');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(10); },\n { 'modify': { 'Uint16': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint16': { 'prop': 10 } } },\n { 'modify': { 'Uint16': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int32', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(10); },\n { 'modify': { 'Int32': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int32': { 'prop': 10 } } },\n { 'modify': { 'Int32': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint32', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(10); },\n { 'modify': { 'Uint32': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint32': { 'prop': 10 } } },\n { 'modify': { 'Uint32': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int64', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(new Int64(10, 10)); },\n { 'modify': { 'Int64': { 'prop': { 'oldValue': [0, 0], 'value': [10, 10] } } } },\n { 'insert': { 'Int64': { 'prop': [10, 10] } } },\n { 'modify': { 'Int64': { 'prop': { 'oldValue': [10, 10], 'value': [0, 0] } } } });\n });\n it('should work for modifying Uint64', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(new Uint64(10, 10)); },\n { 'modify': { 'Uint64': { 'prop': { 'oldValue': [0, 0], 'value': [10, 10] } } } },\n { 'insert': { 'Uint64': { 'prop': [10, 10] } } },\n { 'modify': { 'Uint64': { 'prop': { 'oldValue': [10, 10], 'value': [0, 0] } } } });\n });\n it('should work for modifying Float32', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Float32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(0.5); },\n { 'modify': { 'Float32': { 'prop': { 'oldValue': 0, 'value': 0.5 } } } },\n { 'insert': { 'Float32': { 'prop': 0.5 } } },\n { 'modify': { 'Float32': { 'prop': { 'oldValue': 0.5, 'value': 0 } } } });\n });\n it('should work for modifying Float64', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Float64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(0.5); },\n { 'modify': { 'Float64': { 'prop': { 'oldValue': 0, 'value': 0.5 } } } },\n { 'insert': { 'Float64': { 'prop': 0.5 } } },\n { 'modify': { 'Float64': { 'prop': { 'oldValue': 0.5, 'value': 0 } } } });\n });\n it('should work for modifying Bool', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Bool');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue(true); },\n { 'modify': { 'Bool': { 'prop': { 'oldValue': false, 'value': true } } } },\n { 'insert': { 'Bool': { 'prop': true } } },\n { 'modify': { 'Bool': { 'prop': { 'oldValue': true, 'value': false } } } });\n });\n it('should work for modifying String', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('String');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue('test'); },\n { 'modify': { 'String': { 'prop': { 'oldValue': '', 'value': 'test' } } } },\n { 'insert': { 'String': { 'prop': 'test' } } },\n { 'modify': { 'String': { 'prop': { 'oldValue': 'test', 'value': '' } } } });\n });\n it('should work for modifying Reference', function () {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Reference');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function () { prop.setValue('/'); },\n { 'modify': { 'Reference': { 'prop': { 'oldValue': '', 'value': '/' } } } },\n { 'insert': { 'Reference': { 'prop': '/' } } },\n { 'modify': { 'Reference': { 'prop': { 'oldValue': '/', 'value': '' } } } });\n });\n });\n\n describe('apply reversible ChangeSets on all properties', function () {\n\n\n it('should work for primitive properties', function () {\n var prop = PropertyFactory.create('autodesk.test:vector3-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.test:vector3-1.0.0');\n prop._properties.x.value = 2;\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n\n it('should work for string properties', function () {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.value = 'A';\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for reference properties', function () {\n var root = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('autodesk.tests:DataRefTestProperty-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:DataRefTestProperty-1.0.0');\n var target = PropertyFactory.create('String');\n root.insert('target', target);\n root.insert('reference', prop);\n root.insert('referenceCopy', propCopy);\n prop._properties.data.set(target);\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for enum properties', function () {\n var prop = PropertyFactory.create('autodesk.core:CustomWithEnumID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.core:CustomWithEnumID-1.0.0');\n prop._properties.data.value = 'cm';\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for indexed collections of complex types', function () {\n\n var prop = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n prop._properties.map.insert('A', A);\n prop._properties.map.insert('B', B);\n prop._properties.map.insert('C', C);\n propCopy.deserialize(prop._serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.map.remove('B');\n prop._properties.map.get('A')._properties.stringProperty.value = 'hello';\n\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for indexed collections of primitive types', function () {\n\n var prop = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n\n prop._properties.data.insert('A', 1);\n prop._properties.data.insert('B', 2);\n prop._properties.data.insert('C', 3);\n propCopy.deserialize(prop._serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.remove('B');\n prop._properties.data.set('C', 99);\n\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n\n it('should work for custom array properties', function () {\n var prop = PropertyFactory.create('autodesk.tests:CustomArrayChangesetTestID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:CustomArrayChangesetTestID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n prop._properties.data.insertRange(0, [A, B, C]);\n propCopy.deserialize(prop.serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.get(2)._properties.stringProperty.value = 'hello';\n prop._properties.data.removeRange(1, 1);\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n var baseState = propCopy.serialize({ 'dirtyOnly': false });\n changeSet._toReversibleChangeSet(baseState);\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for primitive array properties', function () {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n prop._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n propCopy._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.setRange(4, [24, 25]);\n prop._properties.data.removeRange(1, 2);\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(propCopy.serialize({ 'dirtyOnly': false }));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for node properties', function () {\n var prop = PropertyFactory.create('NodeProperty');\n var propCopy = PropertyFactory.create('NodeProperty');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n\n prop.insert('A', A);\n prop.insert('B', B);\n prop.insert('C', C);\n prop.insert('D', D);\n\n var initialChangeset = prop.serialize({ 'dirtyOnly': false });\n propCopy.deserialize(initialChangeset);\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.A.stringProperty.value = 'test';\n prop.remove('B');\n prop.remove('C');\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(initialChangeset);\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for inherits node properties', function () {\n var root = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('autodesk.tests:SimpleInheritsNodeProperty-1.0.0');\n root.insert('prop', prop);\n\n var rootCopy = PropertyFactory.create('NodeProperty');\n var propCopy = PropertyFactory.create('autodesk.tests:SimpleInheritsNodeProperty-1.0.0');\n rootCopy.insert('prop', propCopy);\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n\n prop.insert('A', A);\n prop.insert('B', B);\n prop.insert('C', C);\n prop.insert('D', D);\n\n var initialChangeset = root.serialize({ 'dirtyOnly': false });\n rootCopy.deserialize(initialChangeset);\n\n root.cleanDirty();\n rootCopy.cleanDirty();\n\n prop._properties.A.stringProperty.value = 'test';\n prop.remove('B');\n prop.remove('C');\n\n var changeSet = new ChangeSet(root.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(initialChangeset);\n rootCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(root.serialize()).to.deep.equal(rootCopy.serialize());\n expect(root.serialize({ 'dirtyOnly': true })).to.deep.equal(rootCopy.serialize({ 'dirtyOnly': true }));\n });\n });\n\n describe('Apply with reversible ChangeSets', function () {\n var overlapApplyTest = function (in_type, in_inputArrayOperations1, in_inputArrayOperations2,\n in_outputArrayOperations) {\n var convertModificationSetToArray = function (in_modificationSet) {\n return in_modificationSet.map((x) => {\n return x[2] === undefined ?\n [x[0], x[1].split('')] :\n [x[0], x[1].split(''), x[2].split('')];\n });\n };\n\n var performApplyTest = function (in_typeid, inputArrayOperations1, inputArrayOperations2, outputArrayOperations) {\n var CS1 = new ChangeSet({ 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations1 } } } });\n var CS2 = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations2 } } } };\n var CS2_copy = deepCopy(CS2);\n CS1.applyChangeSet(CS2);\n\n // CS2 should be unchanged\n expect(CS2).to.deep.equal(CS2_copy);\n\n // CS2 should no longer contain the removal of A\n expect(CS1.getSerializedChangeSet()).to.deep.equal({\n 'modify': { [in_typeid]: { 'arr': { [in_type]: outputArrayOperations } } }\n });\n };\n\n it('on strings', function () {\n performApplyTest('String',\n deepCopy(in_inputArrayOperations1),\n in_inputArrayOperations2,\n in_outputArrayOperations);\n });\n\n it('on arrays', function () {\n performApplyTest('array<String>',\n convertModificationSetToArray(in_inputArrayOperations1),\n convertModificationSetToArray(in_inputArrayOperations2),\n convertModificationSetToArray(in_outputArrayOperations));\n });\n };\n\n describe('for overlapping modifies 1', function () {\n overlapApplyTest('modify',\n [[3, 'abc', '123']],\n [[3, 'def', 'abc']],\n [[3, 'def', '123']]);\n });\n\n describe('for overlapping modifies 2', function () {\n overlapApplyTest('modify',\n [[0, 'abc', '123']],\n [[2, 'def', 'c45']],\n [[0, 'abdef', '12345']]);\n });\n });\n\n describe('Rebase with reversible ChangeSets', function () {\n var overlapRebaseTest = function (in_type, in_inputArrayOperations1, in_inputArrayOperations2,\n in_outputArrayOperations, in_expectedConflicts) {\n var convertModificationSetToArray = function (in_modificationSet) {\n return in_modificationSet.map((x) => {\n return x[2] === undefined ?\n [x[0], x[1].split('')] :\n [x[0], x[1].split(''), x[2].split('')];\n });\n };\n\n var performRebaseTest = function (in_typeid, inputArrayOperations1, inputArrayOperations2, outputArrayOperations) {\n var conflicts = [];\n var CS1_initial = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations1 } } } };\n var CS1 = new ChangeSet(deepCopy(CS1_initial));\n var CS2 = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations2 } } } };\n CS1._rebaseChangeSet(CS2, conflicts);\n\n // Duplicated remove is not a conflict\n expect(conflicts.length).to.equal(in_expectedConflicts);\n\n // CS1 should be unchanged\n expect(CS1.getSerializedChangeSet()).to.deep.equal(CS1_initial);\n\n // CS2 should no longer contain the removal of A\n expect(CS2).to.deep.equal({ 'modify': { [in_typeid]: { 'arr': { [in_type]: outputArrayOperations } } } });\n };\n\n it('on strings', function () {\n performRebaseTest('String',\n in_inputArrayOperations1,\n in_inputArrayOperations2,\n in_outputArrayOperations);\n });\n\n it('on arrays', function () {\n performRebaseTest('array<String>',\n convertModificationSetToArray(in_inputArrayOperations1),\n convertModificationSetToArray(in_inputArrayOperations2),\n convertModificationSetToArray(in_outputArrayOperations));\n });\n };\n\n describe('for overlapping removes', function () {\n overlapRebaseTest('remove',\n [[0, '<A'], [4, '>']],\n [[1, 'ABC']],\n [[0, 'BC']],\n 0);\n });\n\n describe('for overlapping removes 2', function () {\n overlapRebaseTest('remove',\n [[2, 'C>']],\n [[0, 'ABC']],\n [[0, 'AB']],\n 0);\n });\n\n describe('for overlapping removes 3', function () {\n overlapRebaseTest('remove',\n [[2, 'CD>']],\n [[0, 'ABC'], [4, '>']],\n [[0, 'AB']],\n 0);\n });\n\n describe('for overlapping modifies', function () {\n overlapRebaseTest('modify',\n [[0, '<A', '..'], [4, '>', '.']],\n [[1, '123', '---']],\n [[1, '123', 'A--']],\n 1);\n });\n\n describe('for overlapping modifies 2', function () {\n overlapRebaseTest('modify',\n [[2, 'C>', '..']],\n [[0, '123', '---']],\n [[0, '123', '--C']],\n 1);\n });\n\n describe('for overlapping modifies 3', function () {\n overlapRebaseTest('modify',\n [[2, 'CD>', '..']],\n [[0, '123', '---'], [4, '45', '--']],\n [[0, '123', '--C'], [4, '45', '>-']],\n 2);\n });\n\n it('for array modify rebases', function () {\n var CS = new ChangeSet({\n 'array<Float32>': {\n 'elements': {\n 'modify': [\n [1, [1, 2, 3], [0, 1, 2]]\n ]\n }\n }\n });\n\n var rebasedCS = CS._rebaseChangeSet({\n 'array<Float32>': {\n 'elements': {\n 'modify': [\n [\n 0,\n [0, 1, 2, 3],\n [1, 2, 3, 4]\n ]\n ]\n }\n }\n }, []);\n expect(rebasedCS['array<Float32>'].elements.modify[0].length).to.equal(3);\n });\n });\n\n describe('applying reversible CS to primitive string types', function () {\n it('should work for strings', function () {\n var CS = new ChangeSet({ 'String': { 'test': { 'value': '10', 'oldValue': '9' } } });\n CS.applyChangeSet({ 'String': { 'test': { 'value': '8', 'oldValue': '10' } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'String': { 'test': { 'value': '8', 'oldValue': '9' } } });\n });\n\n it('should work for strings', function () {\n var CS = new ChangeSet({ 'Float64': { 'test': { 'value': 10, 'oldValue': 9 } } });\n CS.applyChangeSet({ 'Float64': { 'test': { 'value': 8, 'oldValue': 10 } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Float64': { 'test': { 'value': 8, 'oldValue': 9 } } });\n });\n\n it('should work for bool', function () {\n // TODO: This should become a NOP\n var CS = new ChangeSet({ 'Bool': { 'test': { 'value': false, 'oldValue': true } } });\n CS.applyChangeSet({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Bool': { 'test': { 'value': true, 'oldValue': true } } });\n });\n\n it('should work for bool', function () {\n // TODO: This should become a NOP\n var CS = new ChangeSet({});\n CS.applyChangeSet({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n });\n });\n\n describe('_stripReversibleChangeSet should', function () {\n it('correctly handle removes at the root', function () {\n var CS = new ChangeSet({\n remove: {\n String: {\n testString: 'abcde'\n }\n }\n });\n CS._stripReversibleChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n remove: ['testString']\n });\n });\n it('ignore the root when passing it a flag', function () {\n var SCS = {\n remove: {\n String: {\n testString: 'abcde'\n }\n }\n };\n var CS = new ChangeSet(SCS);\n CS._stripReversibleChangeSet(true);\n expect(CS.getSerializedChangeSet()).to.deep.equal(SCS);\n });\n });\n\n describe('should return a minimal CS when squashing', function () {\n it('matching primitive type remove/insert combinations in a polymorphic indexed collection', function () {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ remove: { String: { A: 'A' } } });\n var CS2 = new ChangeSet({ insert: { String: { A: 'A' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching primitive type remove/insert combinations in a polymorphic indexed collection', function () {\n // These two operations should result in a modify\n var CS1 = new ChangeSet({ remove: { String: { A: 'A' } } });\n var CS2 = new ChangeSet({ insert: { String: { A: 'B' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({ modify: { String: { A: 'B' } } });\n });\n it('matching remove/insert combinations in a primitive type indexed collection', function () {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ modify: { 'map<String>': { test: { remove: { A: 'A' } } } } });\n var CS2 = new ChangeSet({ modify: { 'map<String>': { test: { insert: { A: 'A' } } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching primitive type remove/insert combinations in a polymorphic indexed collection', function () {\n // These two operations should result in a modify\n var CS1 = new ChangeSet({ modify: { 'map<String>': { test: { remove: { A: 'A' } } } } });\n var CS2 = new ChangeSet({ modify: { 'map<String>': { test: { insert: { A: 'B' } } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({ modify: { 'map<String>': { test: { modify: { A: 'B' } } } } });\n });\n it('matching complex type remove/insert combinations in a polymorphic indexed collection', function () {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n var CS2 = new ChangeSet({ insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching complex type remove/insert combinations in a polymorphic indexed collection', function () {\n // TODO: How should we treat these operations? Should they be rewritten to a modify?\n var CS1 = new ChangeSet({ remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n var CS2 = new ChangeSet({ insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'B' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({\n remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } },\n insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'B' } }\n });\n });\n\n it('matching primitive type remove/insert operations in primitive type arrays', function () {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ modify: { 'array<String>': { test: { remove: [[0, ['A', 'B', 'C']]] } } } });\n var CS2 = new ChangeSet({ modify: { 'array<String>': { test: { insert: [[0, ['A', 'B', 'C']]] } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n });\n\n it('should work for primitive array properties', function () {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n prop._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n testRevAndInvCS(\n prop,\n function (in_prop) {\n in_prop._properties.data.setRange(1, [21, 22]);\n in_prop._properties.data.removeRange(4, 3);\n in_prop._properties.data.insert(0, 9);\n },\n {\n 'array<Float32>': {\n 'data': {\n 'modify': [[1, [21, 22], [11, 12]]],\n 'remove': [[4, [14, 15, 16]]],\n 'insert': [[0, [9]]]\n }\n }\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [9, 10, 21, 22, 13]]]\n }\n }\n },\n {\n 'array<Float32>': {\n 'data': {\n 'modify': [[2, [11, 12], [21, 22]]],\n 'insert': [[5, [14, 15, 16]]],\n 'remove': [[0, [9]]]\n }\n }\n }\n );\n });\n\n it('should work for insertions into empty primitive array properties', function () {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n testRevAndInvCS(\n prop,\n function (in_prop) {\n in_prop._properties.data.insertRange(0, [1, 2, 3]);\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [1, 2, 3]]]\n }\n }\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [1, 2, 3]]]\n }\n }\n },\n {\n 'array<Float32>': {\n 'data': {\n 'remove': [[0, [1, 2, 3]]]\n }\n }\n }\n );\n });\n\n it('should not crash with an empty input if it is not needed in the actual CS', function () {\n var initialCS = {\n 'NodeProperty': {\n insert: {\n NodeProperty: {\n test2: {}\n }\n }\n }\n };\n var CS = new ChangeSet(deepCopy(initialCS));\n CS._toReversibleChangeSet({});\n expect(CS.getSerializedChangeSet()).to.deep.equal(initialCS);\n });\n\n it('should work for inserts, even if the corresponding property is missing in the initial state', function () {\n // This test checks, whether changesets with insert work, even if the corresponding property is not present in the\n // initial changeset. Since the initial changeset is not needed for the insert, we don't need to throw an\n // error in that case. This type of situation can occur in the materialized history, if an insert happens right\n // at a chunk boundary.\n var initialCS = {\n 'NodeProperty': {\n 'test': {\n insert: {\n NodeProperty: {\n test2: {}\n }\n }\n }\n }\n };\n var CS = new ChangeSet(deepCopy(initialCS));\n CS._toReversibleChangeSet({});\n expect(CS.getSerializedChangeSet()).to.deep.equal(initialCS);\n });\n\n it('should work for simple primitive properties', function () {\n var cs = new ChangeSet({\n insert: {\n 'Float32': {\n 'myFloat': 23\n }\n }\n });\n var cs2 = new ChangeSet({\n modify: {\n 'Float32': {\n 'myFloat': 42\n }\n }\n });\n\n var cs2Rev = cs2.clone();\n\n cs2Rev._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Rev.getSerializedChangeSet());\n\n cs2Rev._toReversibleChangeSet(cs.getSerializedChangeSet());\n\n var cs2Strip = cs2Rev.clone();\n cs2Strip._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Strip.getSerializedChangeSet());\n\n expect(cs2Rev.getSerializedChangeSet()).to.deep.equal(\n { 'modify': { 'Float32': { 'myFloat': { 'value': 42, 'oldValue': 23 } } } });\n\n // forward and reverse:\n cs.applyChangeSet(cs2Rev);\n // cs now should be 42\n expect(cs.getSerializedChangeSet()).to.deep.equal({ 'insert': { 'Float32': { 'myFloat': 42 } } });\n\n var invCS = cs2Rev.clone();\n invCS.toInverseChangeSet();\n expect(invCS.getSerializedChangeSet()).to.deep.equal(\n { 'modify': { 'Float32': { 'myFloat': { 'value': 23, 'oldValue': 42 } } } });\n\n cs.applyChangeSet(invCS);\n // cs now should be 23\n expect(cs.getSerializedChangeSet()).to.deep.equal({ 'insert': { 'Float32': { 'myFloat': 23 } } });\n });\n\n it('should work for templated properties', function () {\n var prop = PropertyFactory.create('autodesk.test:point2d-1.0.0');\n testRevAndInvCS(\n prop,\n function (in_prop) {\n in_prop._properties.position.x.value = 2;\n in_prop._properties.normal.y.value = 4;\n in_prop._properties.temperature.value = 21;\n },\n {\n 'Float32': {\n 'position.x': { 'value': 2, 'oldValue': 0 },\n 'temperature': { 'value': 21, 'oldValue': 0 }\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'y': { 'value': 4, 'oldValue': 0 } } }\n }\n },\n {\n 'Float32': {\n 'position.x': 2, 'position.y': 0, 'temperature': 21\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'x': 0, 'y': 4, 'z': 0 } }\n },\n 'map<autodesk.test:vector3-1.0.0>': { 'neighbours': {} }\n },\n {\n 'Float32': {\n 'position.x': { 'value': 0, 'oldValue': 2 },\n 'temperature': { 'value': 0, 'oldValue': 21 }\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'y': { 'value': 0, 'oldValue': 4 } } }\n }\n }\n );\n });\n\n it('should work for string properties initialized by set', function () {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.value = 'Hello world';\n testRevAndInvCS(\n prop,\n function (in_prop) {\n in_prop._properties.data.setRange(1, 'aih');\n in_prop._properties.data.removeRange(6, 5);\n in_prop._properties.data.insertRange(0, 'Hi, ');\n },\n { 'String': { 'data': { 'modify': [[1, 'aih', 'ell']], 'remove': [[6, 'world']], 'insert': [[0, 'Hi, ']] } } },\n { 'String': { 'data': 'Hi, Haiho ' } },\n { 'String': { 'data': { 'modify': [[5, 'ell', 'aih']], 'remove': [[0, 'Hi, ']], 'insert': [[10, 'world']] } } }\n );\n });\n\n it('should work for string properties initialized by insert', function () {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.insert(0, 'Hello world');\n testRevAndInvCS(\n prop,\n function (in_prop) {\n in_prop._properties.data.setRange(1, 'aih');\n in_prop._properties.data.removeRange(6, 5);\n in_prop._properties.data.insertRange(0, 'Hi, ');\n },\n { 'String': { 'data': { 'modify': [[1, 'aih', 'ell']], 'remove': [[6, 'world']], 'insert': [[0, 'Hi, ']] } } },\n { 'String': { 'data': 'Hi, Haiho ' } },\n { 'String': { 'data': { 'modify': [[5, 'ell', 'aih']], 'remove': [[0, 'Hi, ']], 'insert': [[10, 'world']] } } }\n );\n });\n\n it('should work for primitive map properties', function () {\n var property = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n var prop = property._properties.data;\n prop.insert('A', 3);\n prop.insert('B', 4);\n prop.insert('C', 5);\n prop.insert('D', 6);\n testRevAndInvCS(\n property,\n function (myProp) {\n myProp._properties.data.set('A', 7);\n myProp._properties.data.remove('B');\n myProp._properties.data.remove('C');\n myProp._properties.data.set('D', 8);\n myProp._properties.data.insert('F', 9);\n },\n {\n 'map<Float32>': {\n 'data': {\n 'remove': { 'B': 4, 'C': 5 },\n 'modify': { 'A': { 'value': 7, 'oldValue': 3 }, 'D': { 'value': 8, 'oldValue': 6 } },\n 'insert': { 'F': 9 }\n }\n }\n },\n {\n 'map<Float32>': {\n 'data': {\n 'insert': { 'A': 7, 'D': 8, 'F': 9 }\n }\n }\n },\n {\n 'map<Float32>': {\n 'data': {\n 'modify': { 'A': { 'value': 3, 'oldValue': 7 }, 'D': { 'value': 6, 'oldValue': 8 } },\n 'insert': { 'B': 4, 'C': 5 },\n 'remove': { 'F': 9 }\n }\n }\n }\n );\n });\n\n it('should work for custom map properties', function () {\n var rootNode = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n rootNode._properties.map.insert('A', A);\n rootNode._properties.map.insert('B', B);\n rootNode._properties.map.insert('C', C);\n rootNode._properties.map.insert('D', D);\n testRevAndInvCS(\n rootNode,\n function (myProp) {\n var F = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n myProp._properties.map.remove('B');\n myProp._properties.map.remove('C');\n myProp._properties.map.insert('F', F);\n myProp._properties.map.get('A')._properties.stringProperty.value = 'hello';\n },\n {\n 'map<NamedProperty>': {\n 'map': {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } }\n }\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } }, 'C': { 'String': { 'stringProperty': '' } }\n }\n },\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': { 'value': 'hello', 'oldValue': '' } } }\n }\n }\n }\n }\n },\n undefined,\n {\n 'map<NamedProperty>': {\n 'map': {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } }\n }\n },\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': { 'value': '', 'oldValue': 'hello' } } }\n }\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } }\n }\n }\n }\n }\n }\n );\n });\n\n it('should test reversible changeset for a NodeProperty', function () {\n var originalChangeSet = {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } }\n }\n },\n 'remove': ['B', 'C'],\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': 'hello' } }\n }\n }\n };\n var parentChangeSet = {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': '' } },\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } }\n }\n }\n };\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } }\n }\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } }\n }\n }, 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': {\n 'String': {\n 'stringProperty': {\n 'value': 'hello',\n 'oldValue': ''\n }\n }\n }\n }\n }\n });\n\n changeSet.toInverseChangeSet();\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } }\n }\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } }\n }\n }, 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': {\n 'String': {\n 'stringProperty': {\n 'value': '',\n 'oldValue': 'hello'\n }\n }\n }\n }\n }\n });\n\n var originalChangeSet2 = {\n 'insert': {\n 'mysample:point2d-1.0.0': {\n '7485af0e-c992-af6a-ef36-6a024eb4b4e5---2': {\n 'String': {\n 'guid': 'fb5f062f-9f56-55c3-f868-06caa5d8ce26'\n },\n 'Float64': {\n 'x': 0,\n 'y': 0\n }\n }\n }\n }\n };\n\n var parentChangeSet2 = {};\n\n var changeSet2 = new ChangeSet(originalChangeSet2);\n changeSet2._toReversibleChangeSet(parentChangeSet2);\n\n expect(changeSet2.getSerializedChangeSet()).to.eql(changeSet2.getSerializedChangeSet());\n changeSet2.toInverseChangeSet();\n\n expect(changeSet2.getSerializedChangeSet()).to.eql({\n 'remove': {\n 'mysample:point2d-1.0.0': {\n '7485af0e-c992-af6a-ef36-6a024eb4b4e5---2': {\n 'String': {\n 'guid': 'fb5f062f-9f56-55c3-f868-06caa5d8ce26'\n },\n 'Float64': {\n 'x': 0,\n 'y': 0\n }\n }\n }\n }\n });\n });\n\n it('should test reversible changeset for an array of non primitive types', function () {\n var originalChangeSet = {\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': 15.104284463262685\n },\n 'typeid': 'mysample:point2d-1.0.0'\n }\n ]\n ]\n ]\n }\n }\n }\n };\n\n var parentChangeSet = {\n 'insert': {\n 'mysample:point2d-1.0.0': {\n 'test': {\n 'String': {\n 'guid': 'cd36cd32-0bd3-5c55-f94c-b95933fdc58b'\n },\n 'Float64': {\n 'x': 65.18242364168808,\n 'y': 0\n }\n }\n },\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'insert': [\n [\n 0,\n [\n {\n 'String': {\n 'guid': 'e66540ff-9e5e-d599-033e-d3dd55efc2a3'\n },\n 'Float64': {\n 'x': 0,\n 'y': 0\n },\n 'typeid': 'mysample:point2d-1.0.0'\n },\n {\n 'String': {\n 'guid': 'daeb5439-baef-7986-f90a-6a3a2f082250'\n },\n 'Float64': {\n 'x': 0,\n 'y': 0\n },\n 'typeid': 'mysample:point2d-1.0.0'\n }\n ]\n ]\n ]\n },\n 'test3': {}\n }\n },\n 'insertTemplates': {\n 'mysample:point2d-1.0.0': {\n 'typeid': 'mysample:point2d-1.0.0',\n 'inherits': 'NamedProperty',\n 'properties': [\n {\n 'id': 'x',\n 'typeid': 'Float64'\n },\n {\n 'id': 'y',\n 'typeid': 'Float64'\n }\n ]\n }\n }\n };\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': {\n value: 15.104284463262685,\n oldValue: 0\n }\n },\n 'typeid': 'mysample:point2d-1.0.0'\n }\n ]\n ]\n ]\n }\n }\n }\n });\n\n changeSet.toInverseChangeSet();\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': {\n value: 0,\n oldValue: 15.104284463262685\n }\n },\n 'typeid': 'mysample:point2d-1.0.0'\n }\n ]\n ]\n ]\n }\n }\n }\n });\n });\n\n it('should correctly reverse inserts of strings', function () {\n let CS = new ChangeSet({\n insert: {\n 'String': {\n 'test': 'xxx'\n }\n }\n });\n CS.toInverseChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n 'remove': {\n 'String': {\n 'test': 'xxx'\n }\n }\n });\n });\n\n it('should correctly reverse inserts of literal strings within NodeProperties', function () {\n let CS = new ChangeSet({\n 'modify': {\n 'NodeProperty': {\n 'test': {\n insert: {\n 'String': {\n 'test': 'xxx'\n }\n }\n }\n }\n }\n });\n CS.toInverseChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n 'modify': {\n 'NodeProperty': {\n 'test': {\n 'remove': {\n 'String': {\n 'test': 'xxx'\n }\n }\n }\n }\n }\n });\n });\n\n it('@regression should not fail when building reversible change sets', function () {\n var parentChangeSet = require('./validation/reversibleChangeSetTestData.js').parentChangeSet;\n var originalChangeSet = require('./validation/reversibleChangeSetTestData.js').originalChangeSet;\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n });\n\n it('@regression should not fail when creating a reversible change set', function () {\n var cs = {\n 'modify': {\n 'autodesk.compute:graph-1.0.0': {\n '5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7':\n {\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'modify': {\n 'autodesk.compute:fanOut-1.0.0':\n {\n 'a7e7d213-1202-9ee4-a3c1-8a33d6f36122': {\n 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '/8ce10fdd-b2b6-7152-21dc-c0e199b579e3' } }\n },\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'modify': {\n 'autodesk.test:testCN-1.0.0':\n {\n '1e924300-92ef-eaad-391f-53b77fe01099': {\n 'enum<Enum>': { 'status': 1 }, 'autodesk.compute:context-1.0.0':\n {\n 'computeContext': {\n 'Reference<autodesk.compute:resource-2.0.0>': {\n 'resource':\n '/c1a811ea-608e-5fcc-1487-c74ab6939dee'\n }\n }\n }, 'Reference<autodesk.core:user-1.0.0>': {\n 'inputs.input':\n '/5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7.computeNodes[a7e7d213-1202-9ee4-a3c1-8a33d6f36122]' +\n '.intermediateProperties[2c06da5c-8614-e9c2-3bd6-75ae739eba4f]'\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n var parent = {\n 'insert': {\n 'autodesk.compute:graph-1.0.0': {\n '5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7':\n {\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'insert': {\n 'autodesk.compute:fanOut-1.0.0':\n {\n 'a7e7d213-1202-9ee4-a3c1-8a33d6f36122': {\n 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '' } }\n }, 'map<autodesk.compute:node-2.0.0>':\n {\n 'computeNodes': {\n 'insert': {\n 'autodesk.test:testCN-1.0.0': {\n '1e924300-92ef-eaad-391f-53b77fe01099':\n {\n 'enum<Enum>': { 'status': 0 }, 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '' } }\n }, 'Reference<autodesk.core:user-1.0.0>':\n { 'inputs.input': '' }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n\n var b = new ChangeSet(cs);\n b._toReversibleChangeSet(parent);\n });\n});\n"]}
1
+ {"version":3,"file":"reversibleChangeset.spec.js","sourceRoot":"","sources":["../../src/test/reversibleChangeset.spec.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAoB;AACpB;;GAEG;AACH,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC;AACxE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;AACzE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC;AAE7B,QAAQ,CAAC,uBAAuB,EAAE;IAC9B,IAAI,eAAe,GAAG,UAAS,eAAe,EAAE,oBAAoB,EAChE,aAAa,EAAE,eAAe,EAAE,iBAAiB;QACjD,IAAI,gBAAgB,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACjF,eAAe,CAAC,UAAU,EAAE,CAAC;QAE7B,IAAI,oBAAoB,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,qBAAqB,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;QAEpD,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAEtC,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1D,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QAEzB,MAAM,CAAC,yBAAyB,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAEpF,MAAM,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAEzE,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9B,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAEtF,GAAG,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACtE,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAEtE,IAAI,aAAa,EAAE;YACf,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SACrE;QAED,yCAAyC;QACzC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,eAAe,EAAE;YACjB,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;SACpF;QACD,wCAAwC;QACxC,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAClE,IAAI,eAAe,EAAE;YACjB,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;SACnG;QACD,4BAA4B;QAC5B,IAAI,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QAC5B,SAAS,CAAC,kBAAkB,EAAE,CAAC;QAC/B,IAAI,iBAAiB,EAAE;YACnB,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;SAC/E;QACD,sEAAsE;QACtE,qBAAqB;QACrB,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACxF,sBAAsB;QACtB,oBAAoB,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1G,CAAC,CAAC;IAEF,MAAM,CAAC;QACH,IAAI,yBAAyB,GAAG;YAC5B,MAAM,EAAE,6DAA6D;YACrE,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,6DAA6D,EAAE;gBAC7F;oBACI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;wBACtB,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,6DAA6D,EAAE;qBAC1F;iBACJ;aACJ;SACJ,CAAC;QACF,IAAI,yBAAyB,GAAG;YAC5B,MAAM,EAAE,6DAA6D;YACrE,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACpC,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC5C;SACJ,CAAC;QAEF,IAAI,uBAAuB,GAAG;YAC1B,MAAM,EAAE,2DAA2D;YACnE,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE;gBACxC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;aACtC;SACJ,CAAC;QAEF,sDAAsD;QACtD,IAAI,YAAY,GAAG;YACf,MAAM,EAAE,6BAA6B;YACrC,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;gBAC9B,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;gBAC9B,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;aACjC;SACJ,CAAC;QAEF,IAAI,eAAe,GAAG;YAClB,MAAM,EAAE,6BAA6B;YACrC,UAAU,EAAE;gBACR;oBACI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;wBACxB,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;wBAC9B,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;qBACjC;iBACJ;gBACD,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,6BAA6B,EAAE;gBACvD,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,6BAA6B,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3E,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE;aAC3C;SACJ,CAAC;QAEF,IAAI,gBAAgB,GAAG;YACnB,MAAM,EAAE,uCAAuC;YAC/C,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;aACtD;SACJ,CAAC;QAEF,IAAI,gCAAgC,GAAG;YACnC,MAAM,EAAE,6CAA6C;YACrD,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;aACnC;SACJ,CAAC;QAEF,IAAI,6BAA6B,GAAG;YAChC,MAAM,EAAE,0CAA0C;YAClD,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE;aACtC;SACJ,CAAC;QAEF,IAAI,6BAA6B,GAAG;YAChC,MAAM,EAAE,wCAAwC;YAChD,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;aACpD;SACJ,CAAC;QAEF,IAAI,oBAAoB,GAAG;YACvB,MAAM,EAAE,6CAA6C;YACrD,QAAQ,EAAE,CAAC,eAAe,CAAC;YAC3B,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;gBAC1C,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE;gBAC3C,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE;aACzD;SACJ,CAAC;QACF,IAAI,6BAA6B,GAAG;YAChC,MAAM,EAAE,iDAAiD;YACzD,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC7C;SACJ,CAAC;QAEF,IAAI,qBAAqB,GAAG;YACxB,MAAM,EAAE,iDAAiD;YACzD,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iDAAiD,EAAE,OAAO,EAAE,OAAO,EAAE;aAC9F;SACJ,CAAC;QAEF,IAAI,gBAAgB,GAAG;YACnB,MAAM,EAAE,+BAA+B;YACvC,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE;YAC/C,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;gBAC3D,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;gBACjE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;aACpE;SACJ,CAAC;QACF,eAAe,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAI,8BAA8B,GAAG;YACjC,MAAM,EAAE,sCAAsC;YAC9C,UAAU,EAAE,CAAC;oBACT,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,+BAA+B;iBACtD,CAAC;SACL,CAAC;QAEF,IAAI,8BAA8B,GAAG;YACjC,QAAQ,EAAE,CAAC,cAAc,CAAC;YAC1B,MAAM,EAAE,iDAAiD;SAC5D,CAAC;QAEF,eAAe,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;QAC5D,eAAe,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC9C,eAAe,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;QAE5D,eAAe,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QACnD,eAAe,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClD,eAAe,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;QAE3D,eAAe,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;QAC3D,eAAe,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;QAC9D,eAAe,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;QAC3D,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1C,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC7C,eAAe,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;QACvD,eAAe,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;QACvD,eAAe,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACrD,eAAe,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8DAA8D,EAAE;QACrE,EAAE,CAAC,gCAAgC,EAAE;YACjC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAC9B,EAAE,EACF,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAC9B,EAAE,EACF,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAC9B,EAAE,EACF,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACnC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAC9B,EAAE,EACF,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAC9B,EAAE,EACF,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACnC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAC9B,EAAE,EACF,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChD,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EACzC,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACnC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EACjD,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EACzC,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mCAAmC,EAAE;YACpC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAClC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAC/B,GAAG,EACH,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mCAAmC,EAAE;YACpC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAClC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAC/B,GAAG,EACH,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE;YACjC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACnC,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EACpC,IAAI,EACJ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,yDAAyD;QACzD,2DAA2D;QAC3D,EAAE,CAAC,IAAI,CAAC,0CAA0C,EAAE;YAChD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACrC,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EACnC,MAAM,EACN,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,yDAAyD;QACzD,2DAA2D;QAC3D,EAAE,CAAC,IAAI,CAAC,6CAA6C,EAAE;YACnD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/C,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAClC,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAChC,GAAG,EACH,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gFAAgF,EAAE;QACvF,EAAE,CAAC,gCAAgC,EAAE;YACjC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACpE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EACxC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACrE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EACzC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACrE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EACzC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACnC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACtE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1C,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACrE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EACzC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACnC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACtE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1C,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChD,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAChF,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAC/C,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACnC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EACjD,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EACjF,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAChD,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mCAAmC,EAAE;YACpC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAClC,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EACxE,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAC5C,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mCAAmC,EAAE;YACpC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAClC,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EACxE,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAC5C,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE;YACjC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACnC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAC1C,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACnC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACrC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAC3E,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAC9C,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qCAAqC,EAAE;YACtC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,eAAe,CACX,IAAI,EACJ,cAAa,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAClC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC3E,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAC9C,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+CAA+C,EAAE;QACtD,EAAE,CAAC,sCAAsC,EAAE;YACvC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;YACjE,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC7B,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE;YACpC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACjF,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACrF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YAClC,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE;YACvC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;YAC9E,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;YAClF,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;YAC1E,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;YAC9E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACnC,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE;YACvD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACjF,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;YAErF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAExC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;YAEtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,GAAG,OAAO,CAAC;YAEzE,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE;YACzD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;YAC5E,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;YAEhF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAExC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;YAEtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAEnC,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE;YAC1C,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YACrF,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAEzF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAEvC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;YAEtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,GAAG,OAAO,CAAC;YACxE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAExC,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,SAAS,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAC5C,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE;YAC7C,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;YAC3E,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;YAC/E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACnE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAEvE,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;YAEtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAExC,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7E,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAEtD,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAElF,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAEpB,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAEvC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;YAEtB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEjB,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,SAAS,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACnD,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE;YAC3C,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAE1B,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACtD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YACzF,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAElC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAElF,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAEpB,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAEvC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;YAEtB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEjB,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,SAAS,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACnD,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE;QACzC,IAAI,gBAAgB,GAAG,UAAS,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EACvF,wBAAwB;YACxB,IAAI,6BAA6B,GAAG,UAAS,kBAAkB;gBAC3D,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAChC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;wBACvB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACxB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,IAAI,gBAAgB,GAAG,UAAS,SAAS,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB;gBAC1G,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxG,IAAI,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC;gBACzF,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC7B,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAExB,0BAA0B;gBAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAEpC,gDAAgD;gBAChD,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC/C,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE;iBAC7E,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,EAAE,CAAC,YAAY,EAAE;gBACb,gBAAgB,CAAC,QAAQ,EACrB,QAAQ,CAAC,wBAAwB,CAAC,EAClC,wBAAwB,EACxB,wBAAwB,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,WAAW,EAAE;gBACZ,gBAAgB,CAAC,eAAe,EAC5B,6BAA6B,CAAC,wBAAwB,CAAC,EACvD,6BAA6B,CAAC,wBAAwB,CAAC,EACvD,6BAA6B,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,QAAQ,CAAC,4BAA4B,EAAE;YACnC,gBAAgB,CAAC,QAAQ,EACrB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACnB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACnB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,4BAA4B,EAAE;YACnC,gBAAgB,CAAC,QAAQ,EACrB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACnB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACnB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mCAAmC,EAAE;QAC1C,IAAI,iBAAiB,GAAG,UAAS,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EACxF,wBAAwB,EAAE,oBAAoB;YAC9C,IAAI,6BAA6B,GAAG,UAAS,kBAAkB;gBAC3D,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAChC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;wBACvB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACxB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,IAAI,iBAAiB,GAAG,UAAS,SAAS,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB;gBAC3G,IAAI,SAAS,GAAG,EAAE,CAAC;gBACnB,IAAI,WAAW,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC;gBACjG,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/C,IAAI,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC;gBACzF,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAErC,sCAAsC;gBACtC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBAExD,0BAA0B;gBAC1B,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAEhE,gDAAgD;gBAChD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9G,CAAC,CAAC;YAEF,EAAE,CAAC,YAAY,EAAE;gBACb,iBAAiB,CAAC,QAAQ,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,WAAW,EAAE;gBACZ,iBAAiB,CAAC,eAAe,EAC7B,6BAA6B,CAAC,wBAAwB,CAAC,EACvD,6BAA6B,CAAC,wBAAwB,CAAC,EACvD,6BAA6B,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,QAAQ,CAAC,yBAAyB,EAAE;YAChC,iBAAiB,CAAC,QAAQ,EACtB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EACrB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EACZ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EACX,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,2BAA2B,EAAE;YAClC,iBAAiB,CAAC,QAAQ,EACtB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EACX,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EACZ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EACX,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,2BAA2B,EAAE;YAClC,iBAAiB,CAAC,QAAQ,EACtB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EACZ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EACtB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EACX,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,0BAA0B,EAAE;YACjC,iBAAiB,CAAC,QAAQ,EACtB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAChC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACnB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACnB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,4BAA4B,EAAE;YACnC,iBAAiB,CAAC,QAAQ,EACtB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EACjB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACnB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACnB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,4BAA4B,EAAE;YACnC,iBAAiB,CAAC,QAAQ,EACtB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAClB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EACpC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EACpC,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE;YAC3B,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC;gBACnB,gBAAgB,EAAE;oBACd,UAAU,EAAE;wBACR,QAAQ,EAAE;4BACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBAC5B;qBACJ;iBACJ;aACJ,CAAC,CAAC;YAEH,IAAI,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC;gBAChC,gBAAgB,EAAE;oBACd,UAAU,EAAE;wBACR,QAAQ,EAAE;4BACN;gCACI,CAAC;gCACD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gCACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;6BACf;yBACJ;qBACJ;iBACJ;aACJ,EAAE,EAAE,CAAC,CAAC;YACP,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kDAAkD,EAAE;QACzD,EAAE,CAAC,yBAAyB,EAAE;YAC1B,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACrF,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QACnH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE;YAC1B,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAClF,EAAE,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE;YACvB,iCAAiC;YACjC,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACrF,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACnH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE;YACvB,iCAAiC;YACjC,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;YAC3B,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE;QACzC,EAAE,CAAC,sCAAsC,EAAE;YACvC,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC;gBACnB,MAAM,EAAE;oBACJ,MAAM,EAAE;wBACJ,UAAU,EAAE,OAAO;qBACtB;iBACJ;aACJ,CAAC,CAAC;YACH,EAAE,CAAC,yBAAyB,EAAE,CAAC;YAC/B,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9C,MAAM,EAAE,CAAC,YAAY,CAAC;aACzB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,wCAAwC,EAAE;YACzC,IAAI,GAAG,GAAG;gBACN,MAAM,EAAE;oBACJ,MAAM,EAAE;wBACJ,UAAU,EAAE,OAAO;qBACtB;iBACJ;aACJ,CAAC;YACF,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5B,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2CAA2C,EAAE;QAClD,EAAE,CAAC,wFAAwF,EAAE;YACzF,yCAAyC;YACzC,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5D,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5D,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,4FAA4F,EAAE;YAC7F,iDAAiD;YACjD,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5D,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5D,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,4EAA4E,EAAE;YAC7E,yCAAyC;YACzC,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACzF,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACzF,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,4FAA4F,EAAE;YAC7F,iDAAiD;YACjD,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACzF,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACzF,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACxH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,sFAAsF,EAAE;YACvF,yCAAyC;YACzC,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,8BAA8B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACvF,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,8BAA8B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACvF,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,0FAA0F,EAAE;YAC3F,oFAAoF;YACpF,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,8BAA8B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACvF,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,8BAA8B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACvF,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/C,MAAM,EAAE,EAAE,8BAA8B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;gBACzD,MAAM,EAAE,EAAE,8BAA8B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;aAC5D,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE;YAC5E,yCAAyC;YACzC,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACvG,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACvG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE;QAC7C,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACnE,eAAe,CACX,IAAI,EACJ,UAAS,OAAO;YACZ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC,EACD;YACI,gBAAgB,EAAE;gBACd,MAAM,EAAE;oBACJ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACnC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC7B,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvB;aACJ;SACJ,EACD;YACI,gBAAgB,EAAE;gBACd,MAAM,EAAE;oBACJ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;iBACvC;aACJ;SACJ,EACD;YACI,gBAAgB,EAAE;gBACd,MAAM,EAAE;oBACJ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACnC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC7B,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvB;aACJ;SACJ,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE;QACnE,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;QAC3E,eAAe,CACX,IAAI,EACJ,UAAS,OAAO;YACZ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,EACD;YACI,gBAAgB,EAAE;gBACd,MAAM,EAAE;oBACJ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC7B;aACJ;SACJ,EACD;YACI,gBAAgB,EAAE;gBACd,MAAM,EAAE;oBACJ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC7B;aACJ;SACJ,EACD;YACI,gBAAgB,EAAE;gBACd,MAAM,EAAE;oBACJ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC7B;aACJ;SACJ,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE;QAC5E,IAAI,SAAS,GAAG;YACZ,cAAc,EAAE;gBACZ,MAAM,EAAE;oBACJ,YAAY,EAAE;wBACV,KAAK,EAAE,EAAE;qBACZ;iBACJ;aACJ;SACJ,CAAC;QACF,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6FAA6F,EAAE;QAC9F,kHAAkH;QAClH,yGAAyG;QACzG,+GAA+G;QAC/G,uBAAuB;QACvB,IAAI,SAAS,GAAG;YACZ,cAAc,EAAE;gBACZ,MAAM,EAAE;oBACJ,MAAM,EAAE;wBACJ,YAAY,EAAE;4BACV,KAAK,EAAE,EAAE;yBACZ;qBACJ;iBACJ;aACJ;SACJ,CAAC;QACF,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE;QAC9C,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC;YACnB,MAAM,EAAE;gBACJ,SAAS,EAAE;oBACP,SAAS,EAAE,EAAE;iBAChB;aACJ;SACJ,CAAC,CAAC;QACH,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC;YACpB,MAAM,EAAE;gBACJ,SAAS,EAAE;oBACP,SAAS,EAAE,EAAE;iBAChB;aACJ;SACJ,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QAEzB,MAAM,CAAC,yBAAyB,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAEpF,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAE3D,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9B,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAEtF,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACjD,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjF,uBAAuB;QACvB,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1B,sBAAsB;QACtB,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAElG,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3B,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAChD,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjF,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzB,sBAAsB;QACtB,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE;QACvC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;QACjE,eAAe,CACX,IAAI,EACJ,UAAS,OAAO;YACZ,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACzC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACvC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;QAC/C,CAAC,EACD;YACI,SAAS,EAAE;gBACP,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC3C,aAAa,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;aAChD;YACD,6BAA6B,EAAE;gBAC3B,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE;aAClE;SACJ,EACD;YACI,SAAS,EAAE;gBACP,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE;aACtD;YACD,6BAA6B,EAAE;gBAC3B,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;aACtD;YACD,kCAAkC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;SAC3D,EACD;YACI,SAAS,EAAE;gBACP,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC3C,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;aAChD;YACD,6BAA6B,EAAE;gBAC3B,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE;aAClE;SACJ,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE;QACvD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;QAC5C,eAAe,CACX,IAAI,EACJ,UAAS,OAAO;YACZ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC,EACD,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAC9G,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EACtC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAClH,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE;QAC1D,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAC/C,eAAe,CACX,IAAI,EACJ,UAAS,OAAO;YACZ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC,EACD,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAC9G,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EACtC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAClH,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE;QAC3C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;QAChF,IAAI,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpB,eAAe,CACX,QAAQ,EACR,UAAS,MAAM;YACX,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC,EACD;YACI,cAAc,EAAE;gBACZ,MAAM,EAAE;oBACJ,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;oBAC5B,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;oBACpF,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;iBACvB;aACJ;SACJ,EACD;YACI,cAAc,EAAE;gBACZ,MAAM,EAAE;oBACJ,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;iBACvC;aACJ;SACJ,EACD;YACI,cAAc,EAAE;gBACZ,MAAM,EAAE;oBACJ,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;oBACpF,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;oBAC5B,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;iBACvB;aACJ;SACJ,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE;QACxC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;QAErF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;QAClF,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxC,eAAe,CACX,QAAQ,EACR,UAAS,MAAM;YACX,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YAClF,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,GAAG,OAAO,CAAC;QAC/E,CAAC,EACD;YACI,oBAAoB,EAAE;gBAClB,KAAK,EAAE;oBACH,QAAQ,EAAE;wBACN,iDAAiD,EAAE;4BAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;yBAC9C;qBACJ;oBACD,QAAQ,EAAE;wBACN,iDAAiD,EAAE;4BAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;yBAC3F;qBACJ;oBACD,QAAQ,EAAE;wBACN,iDAAiD,EAAE;4BAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE;yBAChF;qBACJ;iBACJ;aACJ;SACJ,EACD,SAAS,EACT;YACI,oBAAoB,EAAE;gBAClB,KAAK,EAAE;oBACH,QAAQ,EAAE;wBACN,iDAAiD,EAAE;4BAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;4BAC3C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;yBAC9C;qBACJ;oBACD,QAAQ,EAAE;wBACN,iDAAiD,EAAE;4BAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE;yBAChF;qBACJ;oBACD,QAAQ,EAAE;wBACN,iDAAiD,EAAE;4BAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;yBAC9C;qBACJ;iBACJ;aACJ;SACJ,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE;QACtD,IAAI,iBAAiB,GAAG;YACpB,QAAQ,EAAE;gBACN,iDAAiD,EAAE;oBAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;iBAC9C;aACJ;YACD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACpB,QAAQ,EAAE;gBACN,iDAAiD,EAAE;oBAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE;iBACnD;aACJ;SACJ,CAAC;QACF,IAAI,eAAe,GAAG;YAClB,QAAQ,EAAE;gBACN,iDAAiD,EAAE;oBAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;oBAC3C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;oBAC3C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;iBAC9C;aACJ;SACJ,CAAC;QAEF,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjD,SAAS,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;QAElD,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;YAC9C,QAAQ,EAAE;gBACN,iDAAiD,EAAE;oBAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;iBAC9C;aACJ;YACD,QAAQ,EAAE;gBACN,iDAAiD,EAAE;oBAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;oBAC3C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;iBAC9C;aACJ,EAAE,QAAQ,EAAE;gBACT,iDAAiD,EAAE;oBAC/C,GAAG,EAAE;wBACD,QAAQ,EAAE;4BACN,gBAAgB,EAAE;gCACd,OAAO,EAAE,OAAO;gCAChB,UAAU,EAAE,EAAE;6BACjB;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;QAEH,SAAS,CAAC,kBAAkB,EAAE,CAAC;QAE/B,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;YAC9C,QAAQ,EAAE;gBACN,iDAAiD,EAAE;oBAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;oBAC3C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;iBAC9C;aACJ;YACD,QAAQ,EAAE;gBACN,iDAAiD,EAAE;oBAC/C,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE;iBAC9C;aACJ,EAAE,QAAQ,EAAE;gBACT,iDAAiD,EAAE;oBAC/C,GAAG,EAAE;wBACD,QAAQ,EAAE;4BACN,gBAAgB,EAAE;gCACd,OAAO,EAAE,EAAE;gCACX,UAAU,EAAE,OAAO;6BACtB;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;QAEH,IAAI,kBAAkB,GAAG;YACrB,QAAQ,EAAE;gBACN,wBAAwB,EAAE;oBACtB,0CAA0C,EAAE;wBACxC,QAAQ,EAAE;4BACN,MAAM,EAAE,sCAAsC;yBACjD;wBACD,SAAS,EAAE;4BACP,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACT;qBACJ;iBACJ;aACJ;SACJ,CAAC;QAEF,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAE1B,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACnD,UAAU,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAEpD,MAAM,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACxF,UAAU,CAAC,kBAAkB,EAAE,CAAC;QAEhC,MAAM,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;YAC/C,QAAQ,EAAE;gBACN,wBAAwB,EAAE;oBACtB,0CAA0C,EAAE;wBACxC,QAAQ,EAAE;4BACN,MAAM,EAAE,sCAAsC;yBACjD;wBACD,SAAS,EAAE;4BACP,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACT;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE;QACvE,IAAI,iBAAiB,GAAG;YACpB,QAAQ,EAAE;gBACN,+BAA+B,EAAE;oBAC7B,OAAO,EAAE;wBACL,QAAQ,EAAE;4BACN;gCACI,CAAC;gCACD;oCACI;wCACI,SAAS,EAAE;4CACP,GAAG,EAAE,kBAAkB;yCAC1B;wCACD,QAAQ,EAAE,wBAAwB;qCACrC;iCACJ;6BACJ;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC;QAEF,IAAI,eAAe,GAAG;YAClB,QAAQ,EAAE;gBACN,wBAAwB,EAAE;oBACtB,MAAM,EAAE;wBACJ,QAAQ,EAAE;4BACN,MAAM,EAAE,sCAAsC;yBACjD;wBACD,SAAS,EAAE;4BACP,GAAG,EAAE,iBAAiB;4BACtB,GAAG,EAAE,CAAC;yBACT;qBACJ;iBACJ;gBACD,+BAA+B,EAAE;oBAC7B,OAAO,EAAE;wBACL,QAAQ,EAAE;4BACN;gCACI,CAAC;gCACD;oCACI;wCACI,QAAQ,EAAE;4CACN,MAAM,EAAE,sCAAsC;yCACjD;wCACD,SAAS,EAAE;4CACP,GAAG,EAAE,CAAC;4CACN,GAAG,EAAE,CAAC;yCACT;wCACD,QAAQ,EAAE,wBAAwB;qCACrC;oCACD;wCACI,QAAQ,EAAE;4CACN,MAAM,EAAE,sCAAsC;yCACjD;wCACD,SAAS,EAAE;4CACP,GAAG,EAAE,CAAC;4CACN,GAAG,EAAE,CAAC;yCACT;wCACD,QAAQ,EAAE,wBAAwB;qCACrC;iCACJ;6BACJ;yBACJ;qBACJ;oBACD,OAAO,EAAE,EAAE;iBACd;aACJ;YACD,iBAAiB,EAAE;gBACf,wBAAwB,EAAE;oBACtB,QAAQ,EAAE,wBAAwB;oBAClC,UAAU,EAAE,eAAe;oBAC3B,YAAY,EAAE;wBACV;4BACI,IAAI,EAAE,GAAG;4BACT,QAAQ,EAAE,SAAS;yBACtB;wBACD;4BACI,IAAI,EAAE,GAAG;4BACT,QAAQ,EAAE,SAAS;yBACtB;qBACJ;iBACJ;aACJ;SACJ,CAAC;QAEF,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjD,SAAS,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;QAElD,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;YAC9C,QAAQ,EAAE;gBACN,+BAA+B,EAAE;oBAC7B,OAAO,EAAE;wBACL,QAAQ,EAAE;4BACN;gCACI,CAAC;gCACD;oCACI;wCACI,SAAS,EAAE;4CACP,GAAG,EAAE;gDACD,KAAK,EAAE,kBAAkB;gDACzB,QAAQ,EAAE,CAAC;6CACd;yCACJ;wCACD,QAAQ,EAAE,wBAAwB;qCACrC;iCACJ;6BACJ;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;QAEH,SAAS,CAAC,kBAAkB,EAAE,CAAC;QAE/B,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;YAC9C,QAAQ,EAAE;gBACN,+BAA+B,EAAE;oBAC7B,OAAO,EAAE;wBACL,QAAQ,EAAE;4BACN;gCACI,CAAC;gCACD;oCACI;wCACI,SAAS,EAAE;4CACP,GAAG,EAAE;gDACD,KAAK,EAAE,CAAC;gDACR,QAAQ,EAAE,kBAAkB;6CAC/B;yCACJ;wCACD,QAAQ,EAAE,wBAAwB;qCACrC;iCACJ;6BACJ;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE;QAC9C,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC;YACnB,MAAM,EAAE;gBACJ,QAAQ,EAAE;oBACN,MAAM,EAAE,KAAK;iBAChB;aACJ;SACJ,CAAC,CAAC;QACH,EAAE,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9C,QAAQ,EAAE;gBACN,QAAQ,EAAE;oBACN,MAAM,EAAE,KAAK;iBAChB;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE;QAC5E,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC;YACnB,QAAQ,EAAE;gBACN,cAAc,EAAE;oBACZ,MAAM,EAAE;wBACJ,MAAM,EAAE;4BACJ,QAAQ,EAAE;gCACN,MAAM,EAAE,KAAK;6BAChB;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;QACH,EAAE,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9C,QAAQ,EAAE;gBACN,cAAc,EAAE;oBACZ,MAAM,EAAE;wBACJ,QAAQ,EAAE;4BACN,QAAQ,EAAE;gCACN,MAAM,EAAE,KAAK;6BAChB;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE;QACnE,IAAI,eAAe,GAAG,OAAO,CAAC,6CAA6C,CAAC,CAAC,eAAe,CAAC;QAC7F,IAAI,iBAAiB,GAAG,OAAO,CAAC,6CAA6C,CAAC,CAAC,iBAAiB,CAAC;QAEjG,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjD,SAAS,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE;QACpE,IAAI,EAAE,GAAG;YACL,QAAQ,EAAE;gBACN,8BAA8B,EAAE;oBAC5B,sCAAsC,EACtC;wBACI,kCAAkC,EAAE;4BAChC,cAAc,EAAE;gCACZ,QAAQ,EAAE;oCACN,+BAA+B,EAC/B;wCACI,sCAAsC,EAAE;4CACpC,gCAAgC,EAAE;gDAC9B,gBAAgB,EACZ,EAAE,4CAA4C,EAAE,EAAE,UAAU,EAAE,uCAAuC,EAAE,EAAE;6CAChH;4CACD,kCAAkC,EAAE;gDAChC,cAAc,EAAE;oDACZ,QAAQ,EAAE;wDACN,4BAA4B,EAC5B;4DACI,sCAAsC,EAAE;gEACpC,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,gCAAgC,EAC/D;oEACI,gBAAgB,EAAE;wEACd,4CAA4C,EAAE;4EAC1C,UAAU,EACN,uCAAuC;yEAC9C;qEACJ;iEACJ,EAAE,qCAAqC,EAAE;oEACtC,cAAc,EACV,0FAA0F;wEAC1F,+DAA+D;iEACtE;6DACJ;yDACJ;qDACJ;iDACJ;6CACJ;yCACJ;qCACJ;iCACJ;6BACJ;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC;QACF,IAAI,MAAM,GAAG;YACT,QAAQ,EAAE;gBACN,8BAA8B,EAAE;oBAC5B,sCAAsC,EACtC;wBACI,kCAAkC,EAAE;4BAChC,cAAc,EAAE;gCACZ,QAAQ,EAAE;oCACN,+BAA+B,EAC/B;wCACI,sCAAsC,EAAE;4CACpC,gCAAgC,EAAE;gDAC9B,gBAAgB,EACZ,EAAE,4CAA4C,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;6CAC3E,EAAE,kCAAkC,EACrC;gDACI,cAAc,EAAE;oDACZ,QAAQ,EAAE;wDACN,4BAA4B,EAAE;4DAC1B,sCAAsC,EACtC;gEACI,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,gCAAgC,EAAE;oEAC7D,gBAAgB,EACZ,EAAE,4CAA4C,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;iEAC3E,EAAE,qCAAqC,EACpC,EAAE,cAAc,EAAE,EAAE,EAAE;6DAC7B;yDACJ;qDACJ;iDACJ;6CACJ;yCACJ;qCACJ;iCACJ;6BACJ;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC;QAEF,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* globals expect */\n/**\n * @fileoverview In this file, we will test the functions of the property factory.\n */\nconst _ = require('lodash');\nconst { ChangeSet } = require('@fluid-experimental/property-changeset');\nconst { Int64, Uint64 } = require('@fluid-experimental/property-common');\nconst { PropertyFactory } = require('..');\nconst deepCopy = _.cloneDeep;\n\ndescribe('Reversible ChangeSets', function() {\n var testRevAndInvCS = function(initialProperty, modificationFunction,\n expectedRevCS, expectedAfterCS, expectedInverseCS) {\n var initialChangeSet = new ChangeSet(initialProperty._serialize(false));\n initialChangeSet.setIsNormalized(true);\n var initialChangeSetBackup = deepCopy(initialChangeSet.getSerializedChangeSet());\n initialProperty.cleanDirty();\n\n var initialPropertyClone = initialProperty.clone();\n var initialPropertyBackup = initialProperty.clone();\n\n modificationFunction(initialProperty);\n\n var cs2 = new ChangeSet(initialProperty._serialize(true));\n\n var cs2Rev = cs2.clone();\n\n cs2Rev._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Rev.getSerializedChangeSet());\n\n cs2Rev._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\n var cs2Strip = cs2Rev.clone();\n cs2Strip._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Strip.getSerializedChangeSet());\n\n cs2._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n var csR = cs2.clone();\n csR._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\n if (expectedRevCS) {\n expect(csR.getSerializedChangeSet()).to.deep.equal(expectedRevCS);\n }\n\n // now apply cs2 on the initial changeset\n initialChangeSet.applyChangeSet(cs2);\n if (expectedAfterCS) {\n expect(initialChangeSet.getSerializedChangeSet()).to.deep.equal(expectedAfterCS);\n }\n // now apply cs2 on the initial property\n initialPropertyClone.applyChangeSet(cs2.getSerializedChangeSet());\n if (expectedAfterCS) {\n expect(initialPropertyClone._serialize(false)).to.deep.equal(initialProperty._serialize(false));\n }\n // now inverse the changeset\n var inverseCS = cs2.clone();\n inverseCS.toInverseChangeSet();\n if (expectedInverseCS) {\n expect(inverseCS.getSerializedChangeSet()).to.deep.equal(expectedInverseCS);\n }\n // applying the inverse change should get us back to the initial state\n // apply on changeset\n initialChangeSet.applyChangeSet(inverseCS);\n expect(initialChangeSet.getSerializedChangeSet()).to.deep.equal(initialChangeSetBackup);\n // apply on properties\n initialPropertyClone.applyChangeSet(inverseCS.getSerializedChangeSet());\n expect(initialPropertyClone._serialize(false)).to.deep.equal(initialPropertyBackup._serialize(false));\n };\n\n before(function() {\n var TaskSubjectParentTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.parentTemplate-1.0.0',\n properties: [\n { id: 'directMember', typeid: 'autodesk.tests:ChangeSetApplyAfterTask.memberTemplate-1.0.0' },\n {\n id: 'nested', properties: [\n { id: 'member', typeid: 'autodesk.tests:ChangeSetApplyAfterTask.nestedTemplate-1.0.0' },\n ],\n },\n ],\n };\n var TaskSubjectMemberTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.memberTemplate-1.0.0',\n properties: [\n { id: 'progress', typeid: 'Uint32' },\n { id: 'timeRemaining', typeid: 'Uint32' },\n ],\n };\n\n var TaskSubjectTestTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.nodeTemplate-1.0.0',\n properties: [\n { id: 'result', typeid: 'NodeProperty' },\n { id: 'integer', typeid: 'Uint32' },\n ],\n };\n\n // Register the templates from the discussion document\n var Vec3Template = {\n typeid: 'autodesk.test:vector3-1.0.0',\n properties: [\n { id: 'x', typeid: 'Float32' },\n { id: 'y', typeid: 'Float32' },\n { id: 'z', typeid: 'Float32' },\n ],\n };\n\n var Point2DTemplate = {\n typeid: 'autodesk.test:point2d-1.0.0',\n properties: [\n {\n id: 'position', properties: [\n { id: 'x', typeid: 'Float32' },\n { id: 'y', typeid: 'Float32' },\n ],\n },\n { id: 'normal', typeid: 'autodesk.test:vector3-1.0.0' },\n { id: 'neighbours', typeid: 'autodesk.test:vector3-1.0.0', context: 'map' },\n { id: 'temperature', typeid: 'Float32' },\n ],\n };\n\n var TestArrayFloat32 = {\n typeid: 'autodesk.test:test.arrayfloat32-1.0.0',\n properties: [\n { id: 'data', typeid: 'Float32', context: 'array' },\n ],\n };\n\n var SimpleStringTestPropertyTemplate = {\n typeid: 'autodesk.tests:DataStringTestProperty-1.0.0',\n properties: [\n { id: 'data', typeid: 'String' },\n ],\n };\n\n var SimpleRefTestPropertyTemplate = {\n typeid: 'autodesk.tests:DataRefTestProperty-1.0.0',\n properties: [\n { id: 'data', typeid: 'Reference' },\n ],\n };\n\n var SimpleMapTestPropertyTemplate = {\n typeid: 'autodesk.tests:MapTestPropertyID-1.0.0',\n properties: [\n { id: 'data', typeid: 'Float32', context: 'map' },\n ],\n };\n\n var TestPropertyTemplate = {\n typeid: 'autodesk.tests:MapTestNamedPropertyID-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'stringProperty', typeid: 'String' },\n { id: 'stringProperty2', typeid: 'String' },\n { id: 'map', context: 'map', typeid: 'NamedProperty' },\n ],\n };\n var AnonymousTestPropertyTemplate = {\n typeid: 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0',\n properties: [\n { id: 'stringProperty', typeid: 'String' },\n ],\n };\n\n var CuststomArrayTemplate = {\n typeid: 'autodesk.tests:CustomArrayChangesetTestID-1.0.0',\n properties: [\n { id: 'data', typeid: 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0', context: 'array' },\n ],\n };\n\n var TestEnumTemplate = {\n typeid: 'autodesk.core:UnitsEnum-1.0.0',\n inherits: 'Enum',\n annotation: { description: 'The metric units' },\n properties: [\n { id: 'm', value: 1, annotation: { description: 'meter' } },\n { id: 'cm', value: 2, annotation: { description: 'centimeter' } },\n { id: 'mm', value: 3, annotation: { description: 'millimeter' } },\n ],\n };\n PropertyFactory._reregister(TestEnumTemplate);\n\n var TestBaseContainingEnumTemplate = {\n typeid: 'autodesk.core:CustomWithEnumID-1.0.0',\n properties: [{\n id: 'data', typeid: 'autodesk.core:UnitsEnum-1.0.0',\n }],\n };\n\n var TestInheritsNodePropertyObject = {\n inherits: ['NodeProperty'],\n typeid: 'autodesk.tests:SimpleInheritsNodeProperty-1.0.0',\n };\n\n PropertyFactory._reregister(TestInheritsNodePropertyObject);\n PropertyFactory._reregister(TestEnumTemplate);\n PropertyFactory._reregister(TestBaseContainingEnumTemplate);\n\n PropertyFactory._reregister(CuststomArrayTemplate);\n PropertyFactory._reregister(TestPropertyTemplate);\n PropertyFactory._reregister(AnonymousTestPropertyTemplate);\n\n PropertyFactory._reregister(SimpleMapTestPropertyTemplate);\n PropertyFactory._reregister(SimpleStringTestPropertyTemplate);\n PropertyFactory._reregister(SimpleRefTestPropertyTemplate);\n PropertyFactory._reregister(Vec3Template);\n PropertyFactory._reregister(Point2DTemplate);\n PropertyFactory._reregister(TaskSubjectParentTemplate);\n PropertyFactory._reregister(TaskSubjectMemberTemplate);\n PropertyFactory._reregister(TaskSubjectTestTemplate);\n PropertyFactory._reregister(TestArrayFloat32);\n });\n\n describe('Make inversible, apply and reverse for primitive properties.', function() {\n it('should work for modifying Int8', function() {\n var prop = PropertyFactory.create('Int8');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint8', function() {\n var prop = PropertyFactory.create('Uint8');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int16', function() {\n var prop = PropertyFactory.create('Int16');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint16', function() {\n var prop = PropertyFactory.create('Uint16');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int32', function() {\n var prop = PropertyFactory.create('Int32');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint32', function() {\n var prop = PropertyFactory.create('Uint32');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int64', function() {\n var prop = PropertyFactory.create('Int64');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(new Int64(10, 10)); },\n { 'oldValue': [0, 0], 'value': [10, 10] },\n [10, 10],\n { 'oldValue': [10, 10], 'value': [0, 0] });\n });\n it('should work for modifying Uint64', function() {\n var prop = PropertyFactory.create('Uint64');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(new Uint64(10, 10)); },\n { 'oldValue': [0, 0], 'value': [10, 10] },\n [10, 10],\n { 'oldValue': [10, 10], 'value': [0, 0] });\n });\n it('should work for modifying Float32', function() {\n var prop = PropertyFactory.create('Float32');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(0.5); },\n { 'oldValue': 0, 'value': 0.5 },\n 0.5,\n { 'oldValue': 0.5, 'value': 0 });\n });\n it('should work for modifying Float64', function() {\n var prop = PropertyFactory.create('Float64');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(0.5); },\n { 'oldValue': 0, 'value': 0.5 },\n 0.5,\n { 'oldValue': 0.5, 'value': 0 });\n });\n it('should work for modifying Bool', function() {\n var prop = PropertyFactory.create('Bool');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(true); },\n { 'oldValue': false, 'value': true },\n true,\n { 'oldValue': true, 'value': false });\n });\n // These tests have been disabled, since the interface of\n // the ChangeSet class is ambiguous when inserting a string\n it.skip('@bugfix should work for modifying String', function() {\n var prop = PropertyFactory.create('String');\n testRevAndInvCS(\n prop,\n function() { prop.setValue('test'); },\n { 'oldValue': '', 'value': 'test' },\n 'test',\n { 'oldValue': 'test', 'value': '' });\n });\n // These tests have been disabled, since the interface of\n // the ChangeSet class is ambiguous when inserting a string\n it.skip('@bugfix should work for modifying Reference', function() {\n var prop = PropertyFactory.create('Reference');\n testRevAndInvCS(\n prop,\n function() { prop.setValue('/'); },\n { 'oldValue': '', 'value': '/' },\n '/',\n { 'oldValue': '/', 'value': '' });\n });\n });\n\n describe('Make inversible, apply and reverse for primitive properties in a NodeProperty.', function() {\n it('should work for modifying Int8', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int8');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Int8': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int8': { 'prop': 10 } } },\n { 'modify': { 'Int8': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint8', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint8');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Uint8': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint8': { 'prop': 10 } } },\n { 'modify': { 'Uint8': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int16', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int16');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Int16': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int16': { 'prop': 10 } } },\n { 'modify': { 'Int16': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint16', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint16');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Uint16': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint16': { 'prop': 10 } } },\n { 'modify': { 'Uint16': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int32', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Int32': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int32': { 'prop': 10 } } },\n { 'modify': { 'Int32': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint32', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Uint32': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint32': { 'prop': 10 } } },\n { 'modify': { 'Uint32': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int64', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(new Int64(10, 10)); },\n { 'modify': { 'Int64': { 'prop': { 'oldValue': [0, 0], 'value': [10, 10] } } } },\n { 'insert': { 'Int64': { 'prop': [10, 10] } } },\n { 'modify': { 'Int64': { 'prop': { 'oldValue': [10, 10], 'value': [0, 0] } } } });\n });\n it('should work for modifying Uint64', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(new Uint64(10, 10)); },\n { 'modify': { 'Uint64': { 'prop': { 'oldValue': [0, 0], 'value': [10, 10] } } } },\n { 'insert': { 'Uint64': { 'prop': [10, 10] } } },\n { 'modify': { 'Uint64': { 'prop': { 'oldValue': [10, 10], 'value': [0, 0] } } } });\n });\n it('should work for modifying Float32', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Float32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(0.5); },\n { 'modify': { 'Float32': { 'prop': { 'oldValue': 0, 'value': 0.5 } } } },\n { 'insert': { 'Float32': { 'prop': 0.5 } } },\n { 'modify': { 'Float32': { 'prop': { 'oldValue': 0.5, 'value': 0 } } } });\n });\n it('should work for modifying Float64', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Float64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(0.5); },\n { 'modify': { 'Float64': { 'prop': { 'oldValue': 0, 'value': 0.5 } } } },\n { 'insert': { 'Float64': { 'prop': 0.5 } } },\n { 'modify': { 'Float64': { 'prop': { 'oldValue': 0.5, 'value': 0 } } } });\n });\n it('should work for modifying Bool', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Bool');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(true); },\n { 'modify': { 'Bool': { 'prop': { 'oldValue': false, 'value': true } } } },\n { 'insert': { 'Bool': { 'prop': true } } },\n { 'modify': { 'Bool': { 'prop': { 'oldValue': true, 'value': false } } } });\n });\n it('should work for modifying String', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('String');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue('test'); },\n { 'modify': { 'String': { 'prop': { 'oldValue': '', 'value': 'test' } } } },\n { 'insert': { 'String': { 'prop': 'test' } } },\n { 'modify': { 'String': { 'prop': { 'oldValue': 'test', 'value': '' } } } });\n });\n it('should work for modifying Reference', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Reference');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue('/'); },\n { 'modify': { 'Reference': { 'prop': { 'oldValue': '', 'value': '/' } } } },\n { 'insert': { 'Reference': { 'prop': '/' } } },\n { 'modify': { 'Reference': { 'prop': { 'oldValue': '/', 'value': '' } } } });\n });\n });\n\n describe('apply reversible ChangeSets on all properties', function() {\n it('should work for primitive properties', function() {\n var prop = PropertyFactory.create('autodesk.test:vector3-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.test:vector3-1.0.0');\n prop._properties.x.value = 2;\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for string properties', function() {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.value = 'A';\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for reference properties', function() {\n var root = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('autodesk.tests:DataRefTestProperty-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:DataRefTestProperty-1.0.0');\n var target = PropertyFactory.create('String');\n root.insert('target', target);\n root.insert('reference', prop);\n root.insert('referenceCopy', propCopy);\n prop._properties.data.set(target);\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for enum properties', function() {\n var prop = PropertyFactory.create('autodesk.core:CustomWithEnumID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.core:CustomWithEnumID-1.0.0');\n prop._properties.data.value = 'cm';\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for indexed collections of complex types', function() {\n var prop = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n prop._properties.map.insert('A', A);\n prop._properties.map.insert('B', B);\n prop._properties.map.insert('C', C);\n propCopy.deserialize(prop._serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.map.remove('B');\n prop._properties.map.get('A')._properties.stringProperty.value = 'hello';\n\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for indexed collections of primitive types', function() {\n var prop = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n\n prop._properties.data.insert('A', 1);\n prop._properties.data.insert('B', 2);\n prop._properties.data.insert('C', 3);\n propCopy.deserialize(prop._serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.remove('B');\n prop._properties.data.set('C', 99);\n\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for custom array properties', function() {\n var prop = PropertyFactory.create('autodesk.tests:CustomArrayChangesetTestID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:CustomArrayChangesetTestID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n prop._properties.data.insertRange(0, [A, B, C]);\n propCopy.deserialize(prop.serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.get(2)._properties.stringProperty.value = 'hello';\n prop._properties.data.removeRange(1, 1);\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n var baseState = propCopy.serialize({ 'dirtyOnly': false });\n changeSet._toReversibleChangeSet(baseState);\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for primitive array properties', function() {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n prop._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n propCopy._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.setRange(4, [24, 25]);\n prop._properties.data.removeRange(1, 2);\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(propCopy.serialize({ 'dirtyOnly': false }));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for node properties', function() {\n var prop = PropertyFactory.create('NodeProperty');\n var propCopy = PropertyFactory.create('NodeProperty');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n\n prop.insert('A', A);\n prop.insert('B', B);\n prop.insert('C', C);\n prop.insert('D', D);\n\n var initialChangeset = prop.serialize({ 'dirtyOnly': false });\n propCopy.deserialize(initialChangeset);\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.A.stringProperty.value = 'test';\n prop.remove('B');\n prop.remove('C');\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(initialChangeset);\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for inherits node properties', function() {\n var root = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('autodesk.tests:SimpleInheritsNodeProperty-1.0.0');\n root.insert('prop', prop);\n\n var rootCopy = PropertyFactory.create('NodeProperty');\n var propCopy = PropertyFactory.create('autodesk.tests:SimpleInheritsNodeProperty-1.0.0');\n rootCopy.insert('prop', propCopy);\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n\n prop.insert('A', A);\n prop.insert('B', B);\n prop.insert('C', C);\n prop.insert('D', D);\n\n var initialChangeset = root.serialize({ 'dirtyOnly': false });\n rootCopy.deserialize(initialChangeset);\n\n root.cleanDirty();\n rootCopy.cleanDirty();\n\n prop._properties.A.stringProperty.value = 'test';\n prop.remove('B');\n prop.remove('C');\n\n var changeSet = new ChangeSet(root.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(initialChangeset);\n rootCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(root.serialize()).to.deep.equal(rootCopy.serialize());\n expect(root.serialize({ 'dirtyOnly': true })).to.deep.equal(rootCopy.serialize({ 'dirtyOnly': true }));\n });\n });\n\n describe('Apply with reversible ChangeSets', function() {\n var overlapApplyTest = function(in_type, in_inputArrayOperations1, in_inputArrayOperations2,\n in_outputArrayOperations) {\n var convertModificationSetToArray = function(in_modificationSet) {\n return in_modificationSet.map((x) => {\n return x[2] === undefined ?\n [x[0], x[1].split('')] :\n [x[0], x[1].split(''), x[2].split('')];\n });\n };\n\n var performApplyTest = function(in_typeid, inputArrayOperations1, inputArrayOperations2, outputArrayOperations) {\n var CS1 = new ChangeSet({ 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations1 } } } });\n var CS2 = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations2 } } } };\n var CS2_copy = deepCopy(CS2);\n CS1.applyChangeSet(CS2);\n\n // CS2 should be unchanged\n expect(CS2).to.deep.equal(CS2_copy);\n\n // CS2 should no longer contain the removal of A\n expect(CS1.getSerializedChangeSet()).to.deep.equal({\n 'modify': { [in_typeid]: { 'arr': { [in_type]: outputArrayOperations } } },\n });\n };\n\n it('on strings', function() {\n performApplyTest('String',\n deepCopy(in_inputArrayOperations1),\n in_inputArrayOperations2,\n in_outputArrayOperations);\n });\n\n it('on arrays', function() {\n performApplyTest('array<String>',\n convertModificationSetToArray(in_inputArrayOperations1),\n convertModificationSetToArray(in_inputArrayOperations2),\n convertModificationSetToArray(in_outputArrayOperations));\n });\n };\n\n describe('for overlapping modifies 1', function() {\n overlapApplyTest('modify',\n [[3, 'abc', '123']],\n [[3, 'def', 'abc']],\n [[3, 'def', '123']]);\n });\n\n describe('for overlapping modifies 2', function() {\n overlapApplyTest('modify',\n [[0, 'abc', '123']],\n [[2, 'def', 'c45']],\n [[0, 'abdef', '12345']]);\n });\n });\n\n describe('Rebase with reversible ChangeSets', function() {\n var overlapRebaseTest = function(in_type, in_inputArrayOperations1, in_inputArrayOperations2,\n in_outputArrayOperations, in_expectedConflicts) {\n var convertModificationSetToArray = function(in_modificationSet) {\n return in_modificationSet.map((x) => {\n return x[2] === undefined ?\n [x[0], x[1].split('')] :\n [x[0], x[1].split(''), x[2].split('')];\n });\n };\n\n var performRebaseTest = function(in_typeid, inputArrayOperations1, inputArrayOperations2, outputArrayOperations) {\n var conflicts = [];\n var CS1_initial = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations1 } } } };\n var CS1 = new ChangeSet(deepCopy(CS1_initial));\n var CS2 = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations2 } } } };\n CS1._rebaseChangeSet(CS2, conflicts);\n\n // Duplicated remove is not a conflict\n expect(conflicts.length).to.equal(in_expectedConflicts);\n\n // CS1 should be unchanged\n expect(CS1.getSerializedChangeSet()).to.deep.equal(CS1_initial);\n\n // CS2 should no longer contain the removal of A\n expect(CS2).to.deep.equal({ 'modify': { [in_typeid]: { 'arr': { [in_type]: outputArrayOperations } } } });\n };\n\n it('on strings', function() {\n performRebaseTest('String',\n in_inputArrayOperations1,\n in_inputArrayOperations2,\n in_outputArrayOperations);\n });\n\n it('on arrays', function() {\n performRebaseTest('array<String>',\n convertModificationSetToArray(in_inputArrayOperations1),\n convertModificationSetToArray(in_inputArrayOperations2),\n convertModificationSetToArray(in_outputArrayOperations));\n });\n };\n\n describe('for overlapping removes', function() {\n overlapRebaseTest('remove',\n [[0, '<A'], [4, '>']],\n [[1, 'ABC']],\n [[0, 'BC']],\n 0);\n });\n\n describe('for overlapping removes 2', function() {\n overlapRebaseTest('remove',\n [[2, 'C>']],\n [[0, 'ABC']],\n [[0, 'AB']],\n 0);\n });\n\n describe('for overlapping removes 3', function() {\n overlapRebaseTest('remove',\n [[2, 'CD>']],\n [[0, 'ABC'], [4, '>']],\n [[0, 'AB']],\n 0);\n });\n\n describe('for overlapping modifies', function() {\n overlapRebaseTest('modify',\n [[0, '<A', '..'], [4, '>', '.']],\n [[1, '123', '---']],\n [[1, '123', 'A--']],\n 1);\n });\n\n describe('for overlapping modifies 2', function() {\n overlapRebaseTest('modify',\n [[2, 'C>', '..']],\n [[0, '123', '---']],\n [[0, '123', '--C']],\n 1);\n });\n\n describe('for overlapping modifies 3', function() {\n overlapRebaseTest('modify',\n [[2, 'CD>', '..']],\n [[0, '123', '---'], [4, '45', '--']],\n [[0, '123', '--C'], [4, '45', '>-']],\n 2);\n });\n\n it('for array modify rebases', function() {\n var CS = new ChangeSet({\n 'array<Float32>': {\n 'elements': {\n 'modify': [\n [1, [1, 2, 3], [0, 1, 2]],\n ],\n },\n },\n });\n\n var rebasedCS = CS._rebaseChangeSet({\n 'array<Float32>': {\n 'elements': {\n 'modify': [\n [\n 0,\n [0, 1, 2, 3],\n [1, 2, 3, 4],\n ],\n ],\n },\n },\n }, []);\n expect(rebasedCS['array<Float32>'].elements.modify[0].length).to.equal(3);\n });\n });\n\n describe('applying reversible CS to primitive string types', function() {\n it('should work for strings', function() {\n var CS = new ChangeSet({ 'String': { 'test': { 'value': '10', 'oldValue': '9' } } });\n CS.applyChangeSet({ 'String': { 'test': { 'value': '8', 'oldValue': '10' } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'String': { 'test': { 'value': '8', 'oldValue': '9' } } });\n });\n\n it('should work for strings', function() {\n var CS = new ChangeSet({ 'Float64': { 'test': { 'value': 10, 'oldValue': 9 } } });\n CS.applyChangeSet({ 'Float64': { 'test': { 'value': 8, 'oldValue': 10 } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Float64': { 'test': { 'value': 8, 'oldValue': 9 } } });\n });\n\n it('should work for bool', function() {\n // TODO: This should become a NOP\n var CS = new ChangeSet({ 'Bool': { 'test': { 'value': false, 'oldValue': true } } });\n CS.applyChangeSet({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Bool': { 'test': { 'value': true, 'oldValue': true } } });\n });\n\n it('should work for bool', function() {\n // TODO: This should become a NOP\n var CS = new ChangeSet({});\n CS.applyChangeSet({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n });\n });\n\n describe('_stripReversibleChangeSet should', function() {\n it('correctly handle removes at the root', function() {\n var CS = new ChangeSet({\n remove: {\n String: {\n testString: 'abcde',\n },\n },\n });\n CS._stripReversibleChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n remove: ['testString'],\n });\n });\n it('ignore the root when passing it a flag', function() {\n var SCS = {\n remove: {\n String: {\n testString: 'abcde',\n },\n },\n };\n var CS = new ChangeSet(SCS);\n CS._stripReversibleChangeSet(true);\n expect(CS.getSerializedChangeSet()).to.deep.equal(SCS);\n });\n });\n\n describe('should return a minimal CS when squashing', function() {\n it('matching primitive type remove/insert combinations in a polymorphic indexed collection', function() {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ remove: { String: { A: 'A' } } });\n var CS2 = new ChangeSet({ insert: { String: { A: 'A' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching primitive type remove/insert combinations in a polymorphic indexed collection', function() {\n // These two operations should result in a modify\n var CS1 = new ChangeSet({ remove: { String: { A: 'A' } } });\n var CS2 = new ChangeSet({ insert: { String: { A: 'B' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({ modify: { String: { A: 'B' } } });\n });\n it('matching remove/insert combinations in a primitive type indexed collection', function() {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ modify: { 'map<String>': { test: { remove: { A: 'A' } } } } });\n var CS2 = new ChangeSet({ modify: { 'map<String>': { test: { insert: { A: 'A' } } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching primitive type remove/insert combinations in a polymorphic indexed collection', function() {\n // These two operations should result in a modify\n var CS1 = new ChangeSet({ modify: { 'map<String>': { test: { remove: { A: 'A' } } } } });\n var CS2 = new ChangeSet({ modify: { 'map<String>': { test: { insert: { A: 'B' } } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({ modify: { 'map<String>': { test: { modify: { A: 'B' } } } } });\n });\n it('matching complex type remove/insert combinations in a polymorphic indexed collection', function() {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n var CS2 = new ChangeSet({ insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching complex type remove/insert combinations in a polymorphic indexed collection', function() {\n // TODO: How should we treat these operations? Should they be rewritten to a modify?\n var CS1 = new ChangeSet({ remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n var CS2 = new ChangeSet({ insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'B' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({\n remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } },\n insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'B' } },\n });\n });\n\n it('matching primitive type remove/insert operations in primitive type arrays', function() {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ modify: { 'array<String>': { test: { remove: [[0, ['A', 'B', 'C']]] } } } });\n var CS2 = new ChangeSet({ modify: { 'array<String>': { test: { insert: [[0, ['A', 'B', 'C']]] } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n });\n\n it('should work for primitive array properties', function() {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n prop._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.data.setRange(1, [21, 22]);\n in_prop._properties.data.removeRange(4, 3);\n in_prop._properties.data.insert(0, 9);\n },\n {\n 'array<Float32>': {\n 'data': {\n 'modify': [[1, [21, 22], [11, 12]]],\n 'remove': [[4, [14, 15, 16]]],\n 'insert': [[0, [9]]],\n },\n },\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [9, 10, 21, 22, 13]]],\n },\n },\n },\n {\n 'array<Float32>': {\n 'data': {\n 'modify': [[2, [11, 12], [21, 22]]],\n 'insert': [[5, [14, 15, 16]]],\n 'remove': [[0, [9]]],\n },\n },\n },\n );\n });\n\n it('should work for insertions into empty primitive array properties', function() {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.data.insertRange(0, [1, 2, 3]);\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [1, 2, 3]]],\n },\n },\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [1, 2, 3]]],\n },\n },\n },\n {\n 'array<Float32>': {\n 'data': {\n 'remove': [[0, [1, 2, 3]]],\n },\n },\n },\n );\n });\n\n it('should not crash with an empty input if it is not needed in the actual CS', function() {\n var initialCS = {\n 'NodeProperty': {\n insert: {\n NodeProperty: {\n test2: {},\n },\n },\n },\n };\n var CS = new ChangeSet(deepCopy(initialCS));\n CS._toReversibleChangeSet({});\n expect(CS.getSerializedChangeSet()).to.deep.equal(initialCS);\n });\n\n it('should work for inserts, even if the corresponding property is missing in the initial state', function() {\n // This test checks, whether changesets with insert work, even if the corresponding property is not present in the\n // initial changeset. Since the initial changeset is not needed for the insert, we don't need to throw an\n // error in that case. This type of situation can occur in the materialized history, if an insert happens right\n // at a chunk boundary.\n var initialCS = {\n 'NodeProperty': {\n 'test': {\n insert: {\n NodeProperty: {\n test2: {},\n },\n },\n },\n },\n };\n var CS = new ChangeSet(deepCopy(initialCS));\n CS._toReversibleChangeSet({});\n expect(CS.getSerializedChangeSet()).to.deep.equal(initialCS);\n });\n\n it('should work for simple primitive properties', function() {\n var cs = new ChangeSet({\n insert: {\n 'Float32': {\n 'myFloat': 23,\n },\n },\n });\n var cs2 = new ChangeSet({\n modify: {\n 'Float32': {\n 'myFloat': 42,\n },\n },\n });\n\n var cs2Rev = cs2.clone();\n\n cs2Rev._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Rev.getSerializedChangeSet());\n\n cs2Rev._toReversibleChangeSet(cs.getSerializedChangeSet());\n\n var cs2Strip = cs2Rev.clone();\n cs2Strip._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Strip.getSerializedChangeSet());\n\n expect(cs2Rev.getSerializedChangeSet()).to.deep.equal(\n { 'modify': { 'Float32': { 'myFloat': { 'value': 42, 'oldValue': 23 } } } });\n\n // forward and reverse:\n cs.applyChangeSet(cs2Rev);\n // cs now should be 42\n expect(cs.getSerializedChangeSet()).to.deep.equal({ 'insert': { 'Float32': { 'myFloat': 42 } } });\n\n var invCS = cs2Rev.clone();\n invCS.toInverseChangeSet();\n expect(invCS.getSerializedChangeSet()).to.deep.equal(\n { 'modify': { 'Float32': { 'myFloat': { 'value': 23, 'oldValue': 42 } } } });\n\n cs.applyChangeSet(invCS);\n // cs now should be 23\n expect(cs.getSerializedChangeSet()).to.deep.equal({ 'insert': { 'Float32': { 'myFloat': 23 } } });\n });\n\n it('should work for templated properties', function() {\n var prop = PropertyFactory.create('autodesk.test:point2d-1.0.0');\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.position.x.value = 2;\n in_prop._properties.normal.y.value = 4;\n in_prop._properties.temperature.value = 21;\n },\n {\n 'Float32': {\n 'position.x': { 'value': 2, 'oldValue': 0 },\n 'temperature': { 'value': 21, 'oldValue': 0 },\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'y': { 'value': 4, 'oldValue': 0 } } },\n },\n },\n {\n 'Float32': {\n 'position.x': 2, 'position.y': 0, 'temperature': 21,\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'x': 0, 'y': 4, 'z': 0 } },\n },\n 'map<autodesk.test:vector3-1.0.0>': { 'neighbours': {} },\n },\n {\n 'Float32': {\n 'position.x': { 'value': 0, 'oldValue': 2 },\n 'temperature': { 'value': 0, 'oldValue': 21 },\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'y': { 'value': 0, 'oldValue': 4 } } },\n },\n },\n );\n });\n\n it('should work for string properties initialized by set', function() {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.value = 'Hello world';\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.data.setRange(1, 'aih');\n in_prop._properties.data.removeRange(6, 5);\n in_prop._properties.data.insertRange(0, 'Hi, ');\n },\n { 'String': { 'data': { 'modify': [[1, 'aih', 'ell']], 'remove': [[6, 'world']], 'insert': [[0, 'Hi, ']] } } },\n { 'String': { 'data': 'Hi, Haiho ' } },\n { 'String': { 'data': { 'modify': [[5, 'ell', 'aih']], 'remove': [[0, 'Hi, ']], 'insert': [[10, 'world']] } } },\n );\n });\n\n it('should work for string properties initialized by insert', function() {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.insert(0, 'Hello world');\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.data.setRange(1, 'aih');\n in_prop._properties.data.removeRange(6, 5);\n in_prop._properties.data.insertRange(0, 'Hi, ');\n },\n { 'String': { 'data': { 'modify': [[1, 'aih', 'ell']], 'remove': [[6, 'world']], 'insert': [[0, 'Hi, ']] } } },\n { 'String': { 'data': 'Hi, Haiho ' } },\n { 'String': { 'data': { 'modify': [[5, 'ell', 'aih']], 'remove': [[0, 'Hi, ']], 'insert': [[10, 'world']] } } },\n );\n });\n\n it('should work for primitive map properties', function() {\n var property = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n var prop = property._properties.data;\n prop.insert('A', 3);\n prop.insert('B', 4);\n prop.insert('C', 5);\n prop.insert('D', 6);\n testRevAndInvCS(\n property,\n function(myProp) {\n myProp._properties.data.set('A', 7);\n myProp._properties.data.remove('B');\n myProp._properties.data.remove('C');\n myProp._properties.data.set('D', 8);\n myProp._properties.data.insert('F', 9);\n },\n {\n 'map<Float32>': {\n 'data': {\n 'remove': { 'B': 4, 'C': 5 },\n 'modify': { 'A': { 'value': 7, 'oldValue': 3 }, 'D': { 'value': 8, 'oldValue': 6 } },\n 'insert': { 'F': 9 },\n },\n },\n },\n {\n 'map<Float32>': {\n 'data': {\n 'insert': { 'A': 7, 'D': 8, 'F': 9 },\n },\n },\n },\n {\n 'map<Float32>': {\n 'data': {\n 'modify': { 'A': { 'value': 3, 'oldValue': 7 }, 'D': { 'value': 6, 'oldValue': 8 } },\n 'insert': { 'B': 4, 'C': 5 },\n 'remove': { 'F': 9 },\n },\n },\n },\n );\n });\n\n it('should work for custom map properties', function() {\n var rootNode = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n rootNode._properties.map.insert('A', A);\n rootNode._properties.map.insert('B', B);\n rootNode._properties.map.insert('C', C);\n rootNode._properties.map.insert('D', D);\n testRevAndInvCS(\n rootNode,\n function(myProp) {\n var F = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n myProp._properties.map.remove('B');\n myProp._properties.map.remove('C');\n myProp._properties.map.insert('F', F);\n myProp._properties.map.get('A')._properties.stringProperty.value = 'hello';\n },\n {\n 'map<NamedProperty>': {\n 'map': {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } }, 'C': { 'String': { 'stringProperty': '' } },\n },\n },\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': { 'value': 'hello', 'oldValue': '' } } },\n },\n },\n },\n },\n },\n undefined,\n {\n 'map<NamedProperty>': {\n 'map': {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } },\n },\n },\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': { 'value': '', 'oldValue': 'hello' } } },\n },\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n },\n },\n },\n },\n );\n });\n\n it('should test reversible changeset for a NodeProperty', function() {\n var originalChangeSet = {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n },\n 'remove': ['B', 'C'],\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': 'hello' } },\n },\n },\n };\n var parentChangeSet = {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': '' } },\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } },\n },\n },\n };\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } },\n },\n }, 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': {\n 'String': {\n 'stringProperty': {\n 'value': 'hello',\n 'oldValue': '',\n },\n },\n },\n },\n },\n });\n\n changeSet.toInverseChangeSet();\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } },\n },\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n }, 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': {\n 'String': {\n 'stringProperty': {\n 'value': '',\n 'oldValue': 'hello',\n },\n },\n },\n },\n },\n });\n\n var originalChangeSet2 = {\n 'insert': {\n 'mysample:point2d-1.0.0': {\n '7485af0e-c992-af6a-ef36-6a024eb4b4e5---2': {\n 'String': {\n 'guid': 'fb5f062f-9f56-55c3-f868-06caa5d8ce26',\n },\n 'Float64': {\n 'x': 0,\n 'y': 0,\n },\n },\n },\n },\n };\n\n var parentChangeSet2 = {};\n\n var changeSet2 = new ChangeSet(originalChangeSet2);\n changeSet2._toReversibleChangeSet(parentChangeSet2);\n\n expect(changeSet2.getSerializedChangeSet()).to.eql(changeSet2.getSerializedChangeSet());\n changeSet2.toInverseChangeSet();\n\n expect(changeSet2.getSerializedChangeSet()).to.eql({\n 'remove': {\n 'mysample:point2d-1.0.0': {\n '7485af0e-c992-af6a-ef36-6a024eb4b4e5---2': {\n 'String': {\n 'guid': 'fb5f062f-9f56-55c3-f868-06caa5d8ce26',\n },\n 'Float64': {\n 'x': 0,\n 'y': 0,\n },\n },\n },\n },\n });\n });\n\n it('should test reversible changeset for an array of non primitive types', function() {\n var originalChangeSet = {\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': 15.104284463262685,\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n ],\n ],\n ],\n },\n },\n },\n };\n\n var parentChangeSet = {\n 'insert': {\n 'mysample:point2d-1.0.0': {\n 'test': {\n 'String': {\n 'guid': 'cd36cd32-0bd3-5c55-f94c-b95933fdc58b',\n },\n 'Float64': {\n 'x': 65.18242364168808,\n 'y': 0,\n },\n },\n },\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'insert': [\n [\n 0,\n [\n {\n 'String': {\n 'guid': 'e66540ff-9e5e-d599-033e-d3dd55efc2a3',\n },\n 'Float64': {\n 'x': 0,\n 'y': 0,\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n {\n 'String': {\n 'guid': 'daeb5439-baef-7986-f90a-6a3a2f082250',\n },\n 'Float64': {\n 'x': 0,\n 'y': 0,\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n ],\n ],\n ],\n },\n 'test3': {},\n },\n },\n 'insertTemplates': {\n 'mysample:point2d-1.0.0': {\n 'typeid': 'mysample:point2d-1.0.0',\n 'inherits': 'NamedProperty',\n 'properties': [\n {\n 'id': 'x',\n 'typeid': 'Float64',\n },\n {\n 'id': 'y',\n 'typeid': 'Float64',\n },\n ],\n },\n },\n };\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': {\n value: 15.104284463262685,\n oldValue: 0,\n },\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n ],\n ],\n ],\n },\n },\n },\n });\n\n changeSet.toInverseChangeSet();\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': {\n value: 0,\n oldValue: 15.104284463262685,\n },\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n ],\n ],\n ],\n },\n },\n },\n });\n });\n\n it('should correctly reverse inserts of strings', function() {\n let CS = new ChangeSet({\n insert: {\n 'String': {\n 'test': 'xxx',\n },\n },\n });\n CS.toInverseChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n 'remove': {\n 'String': {\n 'test': 'xxx',\n },\n },\n });\n });\n\n it('should correctly reverse inserts of literal strings within NodeProperties', function() {\n let CS = new ChangeSet({\n 'modify': {\n 'NodeProperty': {\n 'test': {\n insert: {\n 'String': {\n 'test': 'xxx',\n },\n },\n },\n },\n },\n });\n CS.toInverseChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n 'modify': {\n 'NodeProperty': {\n 'test': {\n 'remove': {\n 'String': {\n 'test': 'xxx',\n },\n },\n },\n },\n },\n });\n });\n\n it('@regression should not fail when building reversible change sets', function() {\n var parentChangeSet = require('./validation/reversibleChangeSetTestData.js').parentChangeSet;\n var originalChangeSet = require('./validation/reversibleChangeSetTestData.js').originalChangeSet;\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n });\n\n it('@regression should not fail when creating a reversible change set', function() {\n var cs = {\n 'modify': {\n 'autodesk.compute:graph-1.0.0': {\n '5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7':\n {\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'modify': {\n 'autodesk.compute:fanOut-1.0.0':\n {\n 'a7e7d213-1202-9ee4-a3c1-8a33d6f36122': {\n 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '/8ce10fdd-b2b6-7152-21dc-c0e199b579e3' } },\n },\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'modify': {\n 'autodesk.test:testCN-1.0.0':\n {\n '1e924300-92ef-eaad-391f-53b77fe01099': {\n 'enum<Enum>': { 'status': 1 }, 'autodesk.compute:context-1.0.0':\n {\n 'computeContext': {\n 'Reference<autodesk.compute:resource-2.0.0>': {\n 'resource':\n '/c1a811ea-608e-5fcc-1487-c74ab6939dee',\n },\n },\n }, 'Reference<autodesk.core:user-1.0.0>': {\n 'inputs.input':\n '/5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7.computeNodes[a7e7d213-1202-9ee4-a3c1-8a33d6f36122]' +\n '.intermediateProperties[2c06da5c-8614-e9c2-3bd6-75ae739eba4f]',\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n };\n var parent = {\n 'insert': {\n 'autodesk.compute:graph-1.0.0': {\n '5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7':\n {\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'insert': {\n 'autodesk.compute:fanOut-1.0.0':\n {\n 'a7e7d213-1202-9ee4-a3c1-8a33d6f36122': {\n 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '' } },\n }, 'map<autodesk.compute:node-2.0.0>':\n {\n 'computeNodes': {\n 'insert': {\n 'autodesk.test:testCN-1.0.0': {\n '1e924300-92ef-eaad-391f-53b77fe01099':\n {\n 'enum<Enum>': { 'status': 0 }, 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '' } },\n }, 'Reference<autodesk.core:user-1.0.0>':\n { 'inputs.input': '' },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n };\n\n var b = new ChangeSet(cs);\n b._toReversibleChangeSet(parent);\n });\n});\n"]}