You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1190 lines
282 KiB

  1. <html><head>
  2. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  3. <meta charset="utf-8">
  4. <title>permAppv3</title>
  5. <style type="text/css">
  6. body, select {
  7. font: 10pt sans;
  8. }
  9. #mynetwork {
  10. position:relative;
  11. width: 800px;
  12. height: 600px;
  13. border: 1px solid lightgray;
  14. }
  15. table.legend_table {
  16. font-size: 11px;
  17. border-width:1px;
  18. border-color:#d3d3d3;
  19. border-style:solid;
  20. }
  21. table.legend_table,td {
  22. border-width:1px;
  23. border-color:#d3d3d3;
  24. border-style:solid;
  25. padding: 2px;
  26. }
  27. div.table_content {
  28. width:80px;
  29. text-align:center;
  30. }
  31. div.table_description {
  32. width:100px;
  33. }
  34. #operation {
  35. font-size:28px;
  36. }
  37. #node-popUp {
  38. display:none;
  39. position:absolute;
  40. top:350px;
  41. left:170px;
  42. z-index:299;
  43. width:250px;
  44. height:120px;
  45. background-color: lightblue;
  46. border-style:solid;
  47. border-width:3px;
  48. border-color: #5394ed;
  49. padding:10px;
  50. text-align: center;
  51. }
  52. #title-box {
  53. top:350px;
  54. left:170px;
  55. z-index:299;
  56. width:400px;
  57. height:300px;
  58. background-color: lightblue;
  59. border-style:solid;
  60. border-width:3px;
  61. border-color: green;
  62. padding:10px;
  63. text-align: center;
  64. }
  65. p.test {
  66. background-color: lightblue;
  67. height: 400px;
  68. width: 300px;
  69. border: 0px solid green;
  70. word-wrap: break-word;
  71. word-break: keep-all;
  72. white-space:normal;
  73. }
  74. #edge-popUp {
  75. display:none;
  76. position:absolute;
  77. top:350px;
  78. left:170px;
  79. z-index:299;
  80. width:250px;
  81. height:90px;
  82. background-color: lightblue;
  83. border-style:solid;
  84. border-width:3px;
  85. border-color: lightblue;
  86. padding:10px;
  87. text-align: center;
  88. }
  89. </style><script>try {
  90. Object.defineProperty(screen, "availTop", { value: 0 });
  91. } catch (e) {}
  92. try {
  93. Object.defineProperty(screen, "availLeft", { value: 0 });
  94. } catch (e) {}
  95. try {
  96. Object.defineProperty(screen, "availWidth", { value: 1366 });
  97. } catch (e) {}
  98. try {
  99. Object.defineProperty(screen, "availHeight", { value: 768 });
  100. } catch (e) {}
  101. try {
  102. Object.defineProperty(screen, "colorDepth", { value: 24 });
  103. } catch (e) {}
  104. try {
  105. Object.defineProperty(screen, "pixelDepth", { value: 24 });
  106. } catch (e) {}
  107. try {
  108. Object.defineProperty(navigator, "hardwareConcurrency", { value: 8 });
  109. } catch (e) {}
  110. try {
  111. Object.defineProperty(navigator, "appVersion", { value: "5.0 (X11)" });
  112. } catch (e) {}
  113. try {
  114. Object.defineProperty(navigator, "doNotTrack", { value: "unspecified" });
  115. } catch (e) {}
  116. try {
  117. window.screenY = 0
  118. } catch (e) { }
  119. try {
  120. window.screenTop = 0
  121. } catch (e) { }
  122. try {
  123. window.top.window.outerHeight = 744
  124. } catch (e) { }
  125. try {
  126. window.screenX = 0
  127. } catch (e) { }
  128. try {
  129. window.screenLeft = 0
  130. } catch (e) { }
  131. try {
  132. window.top.window.outerWidth = window.screen.width
  133. } catch (e) { }
  134. </script>
  135. <script type="text/javascript" src="permAppv3_responsive_files/visjs.js"></script><style type="text/css">.vis-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}
  136. /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjdGl2YXRvci5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFDRSxpQkFBa0IsQ0FDbEIsS0FBUSxDQUNSLE9BQVUsQ0FDVixRQUFXLENBQ1gsTUFBUyxDQUdULFVBQ0YsQ0FFQSxZQUNFLDJCQUNGIiwiZmlsZSI6IkFjdGl2YXRvci5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudmlzLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICByaWdodDogMHB4O1xuICBib3R0b206IDBweDtcbiAgbGVmdDogMHB4O1xuXG4gIC8qIE11c3QgYmUgZGlzcGxheWVkIGFib3ZlIGZvciBleGFtcGxlIHNlbGVjdGVkIFRpbWVsaW5lIGl0ZW1zICovXG4gIHotaW5kZXg6IDEwO1xufVxuXG4udmlzLWFjdGl2ZSB7XG4gIGJveC1zaGFkb3c6IDAgMCAxMHB4ICM4NmQ1Zjg7XG59XG4iXX0= */</style><style type="text/css">div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZ
  137. /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25IYW5kbGVyLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrREFDSSxVQUFVLENBQ1YsV0FBVyxDQUNYLHVCQUF3QixDQUN4QixrQkFBbUIsQ0FDbkIsaUJBQWlCLENBQ2pCLG9CQUFvQixDQUNwQiwyQkFBNEIsQ0FDNUIsMkJBQTJCLENBQzNCLGNBQWUsQ0FDZiwwQkFBMkIsQ0FDM0Isd0JBQXlCLENBQ3pCLHVCQUF3QixDQUN4QixxQkFBc0IsQ0FDdEIsb0JBQXFCLENBQ3JCLGdCQUNKLENBRUEsd0RBQ0kseUNBQ0osQ0FFQSx5REFDSSwwQ0FDSixDQUVBLHlEQUNJLDAyTEFBdUMsQ0FDdkMsV0FBVyxDQUNYLFNBQ0osQ0FDQSwyREFDSSwwMkxBQXlDLENBQ3pDLFdBQVcsQ0FDWCxTQUNKLENBQ0EsMkRBQ0ksMDhMQUF5QyxDQUN6QyxXQUFXLENBQ1gsU0FDSixDQUNBLDREQUNJLGs3TEFBMEMsQ0FDMUMsV0FBVyxDQUNYLFNBQ0osQ0FDQSw2REFDSSwwc0xBQW9DLENBQ3BDLFdBQVcsQ0FDWCxVQUNKLENBQ0EsOERBQ0ksMDhLQUFxQyxDQUNyQyxXQUFXLENBQ1gsVUFDSixDQUNBLGtFQUNJLDgyTEFBMkMsQ0FDM0MsV0FBVyxDQUNYLFVBQ0oiLCJmaWxlIjoiTmF2aWdhdGlvbkhhbmRsZXIuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiZGl2LnZpcy1uZXR3b3JrIGRpdi52aXMtbmF2aWdhdGlvbiBkaXYudmlzLWJ1dHRvbiB7XG4gICAgd2lkdGg6MzRweDtcbiAgICBoZWlnaHQ6MzRweDtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDE3cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTdweDtcbiAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAycHggMnB4O1xuICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG5kaXYudmlzLW5ldHdvcmsgZGl2LnZpcy1uYXZpZ2F0aW9uIGRpdi52aXMtYnV0dG9uOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDNweCByZ2JhKDU2LCAyMDcsIDIxLCAwLjMwKTtcbn1cblxuZGl2LnZpcy1uZXR3b3JrIGRpdi52aXMtbmF2aWdhdGlvbiBkaXYudmlzLWJ1dHRvbjphY3RpdmUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggM3B4IHJnYmEoNTYsIDIwNywgMjEsIDAuOTUpO1xufVxuXG5kaXYudmlzLW5ldHdvcmsgZGl2LnZpcy1uYXZpZ2F0aW9uIGRpdi52aXMtYnV0dG9uLnZpcy11cCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW5saW5lKFwidXBBcnJvdy5wbmdcIik7XG4gICAgYm90dG9tOjUwcHg7XG4gICAgbGVmdDo1NXB4O1xufVxuZGl2LnZpcy1uZXR3b3JrIGRpdi52aXMtbmF2aWdhdGlvbiBkaXYudmlzLWJ1dHRvbi52aXMtZG93biB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW5saW5lKFwiZG93bkFycm93LnBuZ1wiKTtcbiAgICBib3R0b206MTBweDtcbiAgICBsZWZ0OjU1cHg7XG59XG5kaXYudmlzLW5ldHdvcmsgZGl2LnZpcy1uYXZpZ2F0aW9uIGRpdi52aXMtYnV0dG9uLnZpcy1sZWZ0IHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbmxpbmUoXCJsZWZ0QXJyb3cucG5nXCIpO1xuICAgIGJvdHRvbToxMHB4O1xuICAgIGxlZnQ6MTVweDtcbn1cbmRpdi52aXMtbmV0d29yayBkaXYudmlzLW5hdmlnYXRpb24gZGl2LnZpcy1idXR0b24udmlzLXJpZ2h0IHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbmxpbmUoXCJyaWdodEFycm93LnBuZ1wiKTtcbiAgICBib3R0b206MTBweDtcbiAgICBsZWZ0Ojk1cHg7XG59XG5kaXYudmlzLW5ldHdvcmsgZGl2LnZpcy1uYXZpZ2F0aW9uIGRpdi52aXMtYnV0dG9uLnZpcy16b29tSW4ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGlubGluZShcInBsdXMucG5nXCIpO1xuICAgIGJvdHRvbToxMHB4O1xuICAgIHJpZ2h0OjE1cHg7XG59XG5kaXYudmlzLW5ldHdvcmsgZGl2LnZpcy1uYXZpZ2F0aW9uIGRpdi52aXMtYnV0dG9uLnZpcy16b29tT3V0IHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbmxpbmUoXCJtaW51cy5wbmdcIik7XG4gICAgYm90dG9tOjEwcHg7XG4gICAgcmlnaHQ6NTVweDtcbn1cbmRpdi52aXMtbmV0d29yayBkaXYudmlzLW5hdmlnYXRpb24gZGl2LnZpcy1idXR0b24udmlzLXpvb21FeHRlbmRzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbmxpbmUoXCJ6b29tRXh0ZW5kcy5wbmdcIik7XG4gICAgYm90dG9tOjUwcHg7XG4gICAgcmlnaHQ6MTVweDtcbn1cbiJdfQ== */</style><style type="text/css">div.vis-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none;z-index:5}
  138. /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBvcHVwLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFDRSxpQkFBa0IsQ0FDbEIsaUJBQWtCLENBQ2xCLFdBQVksQ0FDWixrQkFBbUIsQ0FFbkIsbUJBQW9CLENBQ3BCLGNBQWMsQ0FDZCxVQUFhLENBQ2Isd0JBQXlCLENBRXpCLHNCQUF1QixDQUN2Qix5QkFBMEIsQ0FDMUIsaUJBQWtCLENBQ2xCLHdCQUF5QixDQUV6QixzQ0FBMkMsQ0FDM0MsbUJBQW9CLENBRXBCLFNBQ0YiLCJmaWxlIjoiUG9wdXAuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiZGl2LnZpcy10b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHBhZGRpbmc6IDVweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBmb250LWZhbWlseTogdmVyZGFuYTtcbiAgZm9udC1zaXplOjE0cHg7XG4gIGNvbG9yOiMwMDAwMDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY0ZWQ7XG5cbiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4MDgwNzQ7XG5cbiAgYm94LXNoYWRvdzogM3B4IDNweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgei1pbmRleDogNTtcbn1cbiJdfQ== */</style><style type="text/css">div.vis-network div.vis-manipulation{box-sizing:content-box;border:0 solid #d6d9d8;border-bottom:1px;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff,#fcfcfc 48%,#fafafa 50%,#fcfcfc);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(180deg,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff",endColorstr="#fcfcfc",GradientType=0);padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaL
  139. /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlwdWxhdGlvblN5c3RlbS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUNBQ0Usc0JBQXVCLENBS3ZCLHNCQUFxQixDQUFyQixpQkFBcUIsQ0FDckIsZUFBbUIsQ0FDbkIsZ0ZBQTBGLENBQzFGLG9KQUErSixDQUMvSiw0RUFBMEYsQ0FDMUYsOEVBQXFGLENBQ3JGLCtFQUFzRixDQUN0Rix5RUFBd0YsQ0FDeEYsK0dBQW1ILENBRW5ILGVBQWUsQ0FDZixpQkFBa0IsQ0FDbEIsTUFBTyxDQUNQLEtBQU0sQ0FDTixVQUFXLENBQ1gsV0FDRixDQUVBLGtDQUNFLGlCQUFpQixDQUNqQixNQUFPLENBQ1AsT0FBUSxDQUNSLFdBQ0YsQ0FJQSw4QkFDRSxpQkFBaUIsQ0FDakIsT0FBUSxDQUNSLEtBQU0sQ0FDTixVQUFXLENBQ1gsV0FBWSxDQUVaLDRCQUE2QixDQUM3QiwyQkFBNEIsQ0FDNUIsazR2QkFBcUMsQ0FDckMsY0FBZSxDQUNmLDBCQUEyQixDQUMzQix3QkFBeUIsQ0FDekIsdUJBQXdCLENBQ3hCLHFCQUFzQixDQUN0QixvQkFBcUIsQ0FDckIsZ0JBQ0YsQ0FFQSxvQ0FDRSxVQUNGLENBRUEscUdBRUUsVUFBVSxDQUNWLG1CQUFvQixDQUNwQixjQUFlLENBQ2YsdUJBQXdCLENBQ3hCLGtCQUFtQixDQUNuQixvQkFBb0IsQ0FDcEIsdUJBQTRCLENBQzVCLDJCQUEyQixDQUMzQixXQUFXLENBQ1gsZ0JBQWlCLENBRWpCLGNBQWUsQ0FDZixhQUF3QixDQUN4QiwwQkFBMkIsQ0FDM0Isd0JBQXlCLENBQ3pCLHVCQUF3QixDQUN4QixxQkFBc0IsQ0FDdEIsb0JBQXFCLENBQ3JCLGdCQUNGLENBRUEsMERBQ0UscUNBQ0YsQ0FFQSwyREFDRSxxQ0FDRixDQUVBLDZEQUNFLHNvMkJBQ0YsQ0FFQSxtRUFDRSxrQ0FBMEMsQ0FDMUMsY0FDRixDQUNBLG9FQUNFLGtDQUNGLENBQ0EsNkRBQ0UsU0FDRixDQUNBLHNEQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEsNERBQ0UsODQyQkFDRixDQUVBLHVIQUVFLHM2MkJBQ0YsQ0FFQSx3RUFDRSx3QkFBeUIsQ0FDekIscUJBQ0YsQ0FFQSxnRUFDRSxzbDJCQUNGLENBRUEsK0RBQ0UsczMyQkFDRixDQUVBLG1HQUVFLGlCQUFrQixDQUNsQixnQkFDRixDQUNBLDREQUNFLFVBQVUsQ0FDVixvQkFBb0IsQ0FDcEIsU0FBUyxDQUNULFdBQVcsQ0FDWCx3QkFBeUIsQ0FDekIsbUJBQ0YiLCJmaWxlIjoiTWFuaXB1bGF0aW9uU3lzdGVtLmNzcyIsInNvdXJjZXNDb250ZW50IjpbImRpdi52aXMtbmV0d29yayBkaXYudmlzLW1hbmlwdWxhdGlvbiB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXG4gIGJvcmRlci13aWR0aDogMDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4O1xuICBib3JkZXItc3R5bGU6c29saWQ7XG4gIGJvcmRlci1jb2xvcjogI2Q2ZDlkODtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjsgLyogT2xkIGJyb3dzZXJzICovXG4gIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsICNmY2ZjZmMgNDglLCAjZmFmYWZhIDUwJSwgI2ZjZmNmYyAxMDAlKTsgLyogRkYzLjYrICovXG4gIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUsI2ZmZmZmZiksIGNvbG9yLXN0b3AoNDglLCNmY2ZjZmMpLCBjb2xvci1zdG9wKDUwJSwjZmFmYWZhKSwgY29sb3Itc3RvcCgxMDAlLCNmY2ZjZmMpKTsgLyogQ2hyb21lLFNhZmFyaTQrICovXG4gIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsI2ZjZmNmYyA0OCUsI2ZhZmFmYSA1MCUsI2ZjZmNmYyAxMDAlKTsgLyogQ2hyb21lMTArLFNhZmFyaTUuMSsgKi9cbiAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgICNmZmZmZmYgMCUsI2ZjZmNmYyA0OCUsI2ZhZmFmYSA1MCUsI2ZjZmNmYyAxMDAlKTsgLyogT3BlcmEgMTEuMTArICovXG4gIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ZmZmZmZiAwJSwjZmNmY2ZjIDQ4JSwjZmFmYWZhIDUwJSwjZmNmY2ZjIDEwMCUpOyAvKiBJRTEwKyAqL1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAgI2ZmZmZmZiAwJSwjZmNmY2ZjIDQ4JSwjZmFmYWZhIDUwJSwjZmNmY2ZjIDEwMCUpOyAvKiBXM0MgKi9cbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoIHN0YXJ0Q29sb3JzdHI9JyNmZmZmZmYnLCBlbmRDb2xvcnN0cj0nI2ZjZmNmYycsR3JhZGllbnRUeXBlPTAgKTsgLyogSUU2LTkgKi9cblxuICBwYWRkaW5nLXRvcDo0cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyOHB4O1xufVxuXG5kaXYudmlzLW5ldHdvcmsgZGl2LnZpcy1lZGl0LW1vZGUge1xuICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiA1cHg7XG4gIGhlaWdodDogMzBweDtcbn1cblxuLyogRklYTUU6IHNob3VsZG4ndCB0aGUgdmlzLWNsb3NlIGJ1dHRvbiBiZSBhIGNoaWxkIG9mIHRoZSB2aXMtbWFuaXB1bGF0aW9uIGRpdj8gKi9cblxuZGl2LnZpcy1uZXR3b3JrIGRpdi52aXMtY2xvc2Uge1xuICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDMwcHg7XG4gIGhlaWdodDogMzBweDtcblxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMHB4IDNweDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1pbWFnZTogaW5saW5lKFwiY3Jvc3MucG5nXCIpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG5kaXYudmlzLW5ldHdvcmsgZGl2LnZpcy1jbG9zZTpob3ZlciB7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuZGl2LnZpcy1uZXR3b3JrIGRpdi52aXMtbWFua
  140. /*# sourceMappingURL=data:application/json;base64,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QUFXLENBR1gsc0JBQXVCLENBR3ZCLHdCQUF5QixDQUN6QixrQkFBbUIsQ0FHbkIsaUJBQ0osQ0FDQSx5REFDSSxlQUFnQixDQUNoQixrQkFDSixDQUNBLHlEQUNJLGVBQWdCLENBQ2hCLGtCQUNKLENBQ0Esb0RBQ0ksV0FBWSxDQUNaLFdBQVksQ0FDWixVQUFXLENBQ1gsaUJBQWtCLENBQ2xCLGtCQUNKLENBQ0EsK0RBQ0ksZUFDSixDQUNBLCtEQUNJLGVBQ0osQ0FFQSx5QkFDSSxpQkFBa0IsQ0FDbEIsNkJBQWtDLENBQ2xDLHdCQUF5QixDQUN6QixnQkFBZ0IsQ0FDaEIsV0FBVyxDQUNYLFdBQVcsQ0FDWCxpQkFBaUIsQ0FDakIsVUFBYyxDQUNkLGNBQWMsQ0FDZCxpQkFBaUIsQ0FDakIsMENBQTRDLENBQzVDLHVDQUF5QyxDQUN6QyxrQ0FDSixDQUNBLCtEQUNJLFNBQVUsQ0FDVixPQUFRLENBQ1Isd0JBQXlCLENBQ3pCLFdBQVksQ0FDWixRQUFTLENBQ1QsT0FBUSxDQUNSLGlCQUFrQixDQUNsQixtQkFDSixDQUVBLCtCQUVJLDJGQUF5QyxDQUN6QyxnQkFBaUIsQ0FDakIsZUFDSixDQUNBLGdDQUVJLGdGQUEwQixDQUMxQixpQkFBa0IsQ0FDbEIsZ0JBQ0oiLCJmaWxlIjoiQ29uZmlndXJhdG9yLmNzcyIsInNvdXJjZXNDb250ZW50IjpbImRpdi52aXMtY29uZmlndXJhdGlvbiB7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBmbG9hdDpsZWZ0O1xuICAgIGZvbnQtc2l6ZToxMnB4O1xufVxuXG5kaXYudmlzLWNvbmZpZ3VyYXRpb24td3JhcHBlciB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICB3aWR0aDo3MDBweDtcbn1cblxuZGl2LnZpcy1jb25maWd1cmF0aW9uLXdyYXBwZXI6OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5kaXYudmlzLWNvbmZpZ3VyYXRpb24udmlzLWNvbmZpZy1vcHRpb24tY29udGFpbmVye1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgd2lkdGg6NDk1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXI6MnB4IHNvbGlkICNmN2Y4ZmE7XG4gICAgYm9yZGVyLXJhZGl1czo0cHg7XG4gICAgbWFyZ2luLXRvcDoyMHB4O1xuICAgIGxlZnQ6MTBweDtcbiAgICBwYWRkaW5nLWxlZnQ6NXB4O1xufVxuXG5kaXYudmlzLWNvbmZpZ3VyYXRpb24udmlzLWNvbmZpZy1idXR0b257XG4gICAgZGlzcGxheTpibG9jaztcbiAgICB3aWR0aDo0OTVweDtcbiAgICBoZWlnaHQ6MjVweDtcbiAgICB2ZXJ0aWNhbC1hbGlnb
  141. /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbG9yUGlja2VyLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxxQkFDRSxpQkFBaUIsQ0FDakIsS0FBUSxDQUNSLFNBQVUsQ0FDVixpQkFBaUIsQ0FDakIsZ0JBQWdCLENBQ2hCLFdBQVcsQ0FDWCxZQUFZLENBQ1osU0FBVSxDQUNWLFlBQWEsQ0FDYixrQkFBa0IsQ0FDbEIscUJBQXdCLENBQ3hCLFlBQWEsQ0FDYixvQ0FDRixDQUVBLG1DQUNFLGlCQUFrQixDQUNsQixTQUFTLENBQ1QsUUFDRixDQUVBLG1GQUVFLFVBQVcsQ0FDWCxPQUFRLENBQ1Isd0JBQXlCLENBQ3pCLFdBQVksQ0FDWixRQUFTLENBQ1QsT0FBUSxDQUNSLGlCQUFrQixDQUNsQixtQkFDRixDQUVBLHlDQUVFLHVFQUEyQixDQUMzQixpQkFBa0IsQ0FDbEIsZ0JBQ0YsQ0FFQSxtQ0FDRSxpQkFBaUIsQ0FDakIsV0FBWSxDQUNaLFlBQWEsQ0FDYixjQUNGLENBSUEsd0NBQ0UsaUJBQWtCLENBQ2xCLFNBQ0YsQ0FFQSxxQ0FDRSxpQkFBaUIsQ0FDakIsU0FDRixDQUVBLHNDQUNFLGlCQUFpQixDQUNqQixTQUFTLENBQ1QsVUFBVSxDQUNWLFVBQVUsQ0FDVixXQUFXLENBQ1gsa0JBQWtCLENBQ2xCLHFCQUF3QixDQUN4QixrQkFBbUIsQ0FDbkIsa0pBQXdLLENBQ3hLLDhSQUFxVCxDQUNyVCw4SUFBa0ssQ0FDbEssZ0pBQTZKLENBQzdKLGlKQUE4SixDQUM5SiwySUFBZ0ssQ0FDaEssK0dBQ0YsQ0FJQSx1Q0FPRSxVQUFVLENBQ1YsZ0JBQWdCLENBQ2hCLGlCQU1GLENBRUEsa0ZBaEJFLGlCQUFpQixDQUNqQixXQUFXLENBQ1gsV0FBVyxDQUNYLCtCQUFnQyxDQUNoQyxpQkFBaUIsQ0FDakIsU0FBUyxDQUlULGNBQWMsQ0FDZCxvQkFBcUIsQ0FDckIscUJBQXFCLENBQ3JCLGdCQWtCRixDQWRBLDJDQU9FLFNBQVMsQ0FDVCxlQUFlLENBQ2YsZ0JBS0YsQ0FFQSxtQ0FDRSxpQkFBaUIsQ0FDakIsV0FBVyxDQUNYLFNBQ0YsQ0FFQSxrREFDRSxTQUNGLENBRUEsK0NBQ0UsU0FDRixDQUVBLG9DQUNFLGlCQUFpQixDQUNqQixVQUFVLENBQ1YsV0FBVyxDQUNYLGtCQUFrQixDQUNsQixxQkFBc0IsQ0FDdEIsaUJBQWlCLENBQ2pCLGdCQUFpQixDQUNqQixTQUFTLENBQ1Qsd0JBQXdCLENBQ3hCLHdCQUF5QixDQUN6QixjQUNGLENBRUEsK0NBR0UsUUFDRixDQUNBLDZDQUdFLFNBQ0YsQ0FDQSw4Q0FHRSxVQUNGLENBQ0EsNkNBR0UsVUFDRixDQUdBLHFDQUNFLFdBQVksQ0FDWixXQUNGIiwiZmlsZSI6IkNvbG9yUGlja2VyLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIlxuZGl2LnZpcy1jb2xvci1waWNrZXIge1xuICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgdG9wOiAwcHg7XG4gIGxlZnQ6IDMwcHg7XG4gIG1hcmdpbi10b3A6LTE0MHB4O1xuICBtYXJnaW4tbGVmdDozMHB4O1xuICB3aWR0aDozMTBweDtcbiAgaGVpZ2h0OjQ0NHB4O1xuICB6LWluZGV4OiAxO1xuICBwYWRkaW5nOiAxMHB4O1xuICBib3JkZXItcmFkaXVzOjE1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjtcbiAgZGlzcGxheTogbm9uZTtcbiAgYm94LXNoYWRvdzogcmdiYSgwLDAsMCwwLjUpIDBweCAwcHggMTBweCAwcHg7XG59XG5cbmRpdi52aXMtY29sb3ItcGlja2VyIGRpdi52aXMtYXJyb3cge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDoxNDdweDtcbiAgbGVmdDo1cHg7XG59XG5cbmRpdi52aXMtY29sb3ItcGlja2VyIGRpdi52aXMtYXJyb3c6OmFmdGVyLFxuZGl2LnZpcy1jb2xvci1waWNrZXIgZGl2LnZpcy1hcnJvdzo6YmVmb3JlIHtcbiAgcmlnaHQ6IDEwMCU7XG4gIHRvcDogNTAlO1xuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xuICBjb250ZW50OiBcIiBcIjtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuZGl2LnZpcy1jb2xvci1waWNrZXIgZGl2LnZpcy1hcnJvdzphZnRlciB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItd2lkdGg6IDMwcHg7XG4gIG1hcmdpbi10b3A6IC0zMHB4O1xufVxuXG5kaXYudmlzLWNvbG9yLXBpY2tlciBkaXYudmlzLWNvbG9yIHtcbiAgcG9zaXRpb246YWJzb2x1dGU7XG4gIHdpZHRoOiAyODlweDtcbiAgaGVpZ2h0OiAyODlweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5cblxuZGl2LnZpcy1jb2xvci1waWNrZXIgZGl2LnZpcy1icmlnaHRuZXNzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6MzEzcHg7XG59XG5cbmRpdi52aXMtY29sb3ItcGlja2VyIGRpdi52aXMtb3BhY2l0eSB7XG4gIHBvc2l0aW9uOmFic29sdXRlO1xuICB0b3A6MzUwcHg7XG59XG5cbmRpdi52aXMtY29sb3ItcGlja2VyIGRpdi52aXMtc2VsZWN0b3Ige1xuICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgdG9wOjEzN3B4O1xuICBsZWZ0OjEzN3B4O1xuICB3aWR0aDoxNXB4O1xuICBoZWlnaHQ6MTVweDtcbiAgYm9yZGVyLXJhZGl1czoxNXB4O1xuICBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7XG4gIGJhY2tncm91bmQ6ICM0YzRjNGM7IC8qIE9sZCBicm93c2VycyAqL1xuICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICAjNGM0YzRjIDAlLCAjNTk1OTU5IDEyJSwgIzY2NjY2NiAyNSUsICM0NzQ3NDcgMzklLCAjMmMyYzJjIDUwJSwgIzAwMDAwMCA1MSUsICMxMTExMTEgNjAlLCAjMmIyYjJiIDc2JSwgIzFjMWMxYyA5MSUsICMxMzEzMTMgMTAwJSk7IC8qIEZGMy42KyAqL1xuICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCM0YzRjNGMpLCBjb2xvci1zdG9wKDEyJSwjNTk1OTU5KSwgY29sb3Itc3RvcCgyNSUsIzY2NjY2NiksIGNvbG9yLXN0b3AoMzklLCM0NzQ3NDcpLCBjb2xvci1zdG9wKDUwJSwjMmMyYzJjKSwgY29sb3Itc3RvcCg1MSUsIzAwMDAwMCksIGNvbG9yLXN0b3AoNjAlLCMxMTExMTEpLCBjb2xvci1zdG9wKDc2JSwjMmIyYjJiKSwgY29sb3Itc3RvcCg5MSUsIzFjMWMxYyksIGNvbG9yL
  142. <script type="text/javascript" src="permAppv3_responsive_files/axios.js"></script>
  143. <script type="text/javascript">
  144. var nodes;
  145. var edges;
  146. var network = null;
  147. function destroy() {
  148. if (network !== null) {
  149. network.destroy();
  150. network = null;
  151. }
  152. }
  153. function draw() {
  154. destroy();
  155. // create a network
  156. var DIR = "public/images/";
  157. nodes = new vis.DataSet();
  158. nodes.on("*", function () {
  159. document.getElementById("nodes").innerHTML = JSON.stringify(
  160. nodes.get(),
  161. null,
  162. 4
  163. );
  164. });
  165. nodes.add([
  166. {id: 0, shape: 'circularImage', image: DIR + 'canna.jpg', "label": "Cannabis", "group": 1, title: 'I am a plant' },
  167. {id: 1, shape: 'circularImage', image: DIR + 'rose.jpg', "label": "Rose", "group": 1},
  168. {id: 2, "label": "Tomato", "group": 1},
  169. {id: 3, "label": "Mint", "group": 1},
  170. {id: 4, "label": "Basil", "group": 1},
  171. {id: 5, "label": "Acorn", "group": 1},
  172. {id: 6, "label": "Pine", "group": 1},
  173. {id: 7, "label": "Orange", "group": 1},
  174. {id: 8, "label": "Lemon", "group": 1},
  175. {id: 9, shape: 'circularImage', image: DIR + 'sunflower.jpg', "label": "Sunflower", "group": 1},
  176. {id: 10, "label": "Marigold", "group": 1},
  177. {id: 11, "label": "Alfalfa", "group": 1},
  178. {id: 12, "label": "Red Clover", "group": 1},
  179. {id: 13, "label": "Chervil", "group": 1},
  180. {id: 14, "label": "White Clover", "group": 1},
  181. {id: 15, "label": "Lavender", "group": 1},
  182. {id: 16, "label": "Coriander", "group": 1},
  183. {id: 17, shape: 'circularImage', image: DIR + 'chamomile.jpg', "label": "Chamomile", "group": 1},
  184. {id: 18, "label": "Yarrow", "group": 1},
  185. {id: 19, "label": "Dill", "group": 1},
  186. {id: 20, "label": "Lemon Balm", "group": 1},
  187. {id: 21, "label": "Borage", "group": 1},
  188. {id: 22, "label": "Ant", "group": 2},
  189. {id: 23, "label": "Bee", "group": 2},
  190. {id: 24, "label": "Snail", "group": 2},
  191. {id: 25, "label": "Heat", "group": 3},
  192. {id: 26, "label": "Water", "group": 3},
  193. {id: 27, "label": "Luminance", "group": 3},
  194. {id: 28, "label": "Bird", "group": 2}
  195. ]);
  196. var Edgebox1 = '<p class="test">'
  197. var Edgebox2 = '</p>'
  198. // create some edges
  199. edges = new vis.DataSet();
  200. edges.on("*", function () {
  201. document.getElementById("edges").innerHTML = JSON.stringify(
  202. edges.get(),
  203. null,
  204. 4
  205. );
  206. });
  207. edges.add( [
  208. {"from": 1, "to": 0, arrows:'to', color:'green', title: Edgebox1 + 'the rose is very fragile. For that reason, she gets a lot of deseases some time before Cannabis gets it. That means, the rose can give you time to act.' + Edgebox2},
  209. {"from": 2, "to": 0},
  210. {"from": 3, "to": 0},
  211. {"from": 3, "to": 2},
  212. {"from": 4, "to": 0},
  213. {"from": 5, "to": 0},
  214. {"from": 6, "to": 0},
  215. {"from": 7, "to": 0},
  216. {"from": 8, "to": 0},
  217. {"from": 9, "to": 0},
  218. {"from": 11, "to": 10},
  219. {"from": 11, "to": 3},
  220. {"from": 11, "to": 2},
  221. {"from": 11, "to": 0},
  222. {"from": 12, "to": 11},
  223. {"from": 13, "to": 11},
  224. {"from": 14, "to": 11},
  225. {"from": 15, "to": 11},
  226. {"from": 17, "to": 16},
  227. {"from": 18, "to": 16},
  228. {"from": 18, "to": 17},
  229. {"from": 19, "to": 16},
  230. {"from": 19, "to": 17},
  231. {"from": 19, "to": 18},
  232. {"from": 20, "to": 16},
  233. {"from": 20, "to": 17},
  234. {"from": 20, "to": 18},
  235. {"from": 20, "to": 19},
  236. {"from": 21, "to": 16},
  237. {"from": 21, "to": 17},
  238. {"from": 21, "to": 18},
  239. {"from": 21, "to": 19},
  240. {"from": 21, "to": 20},
  241. {"from": 22, "to": 16},
  242. {"from": 22, "to": 17},
  243. {"from": 22, "to": 18},
  244. {"from": 22, "to": 19},
  245. {"from": 22, "to": 20},
  246. {"from": 22, "to": 21},
  247. {"from": 23, "to": 16},
  248. {"from": 23, "to": 17},
  249. {"from": 23, "to": 18},
  250. {"from": 23, "to": 19},
  251. {"from": 23, "to": 20},
  252. {"from": 23, "to": 21},
  253. {"from": 23, "to": 22},
  254. {"from": 23, "to": 12},
  255. {"from": 23, "to": 11},
  256. {"from": 24, "to": 23},
  257. {"from": 24, "to": 11},
  258. {"from": 25, "to": 24},
  259. {"from": 25, "to": 23},
  260. {"from": 25, "to": 11},
  261. {"from": 26, "to": 24},
  262. {"from": 26, "to": 11},
  263. {"from": 26, "to": 16},
  264. {"from": 26, "to": 25},
  265. {"from": 27, "to": 11},
  266. {"from": 27, "to": 23},
  267. {"from": 27, "to": 25},
  268. {"from": 27, "to": 24},
  269. {"from": 27, "to": 26},
  270. {"from": 28, "to": 11},
  271. {"from": 28, "to": 27}
  272. ]);
  273. // create a network
  274. var container = document.getElementById('mynetwork');
  275. var data = {
  276. nodes: nodes,
  277. edges: edges
  278. };
  279. var options = {
  280. manipulation: {
  281. addNode: function (data, callback) {
  282. // filling in the popup DOM elements
  283. document.getElementById('node-operation').innerHTML = "Add Node";
  284. editNode(data, clearNodePopUp, callback);
  285. },
  286. editNode: function (data, callback) {
  287. // filling in the popup DOM elements
  288. document.getElementById('node-operation').innerHTML = "Edit Node";
  289. editNode(data, cancelNodeEdit, callback);
  290. },
  291. addEdge: function (data, callback) {
  292. if (data.from == data.to) {
  293. var r = confirm("Do you want to connect the node to itself?");
  294. if (r != true) {
  295. callback(null);
  296. return;
  297. }
  298. }
  299. document.getElementById('edge-operation').innerHTML = "Add Edge";
  300. editEdgeWithoutDrag(data, callback);
  301. },
  302. editEdge: {
  303. editWithoutDrag: function(data, callback) {
  304. document.getElementById('edge-operation').innerHTML = "Edit Edge";
  305. editEdgeWithoutDrag(data,callback);
  306. }
  307. }
  308. }
  309. };
  310. network = new vis.Network(container, data, options);
  311. }
  312. var Nodebox1 = '<p class="test"><img src="'
  313. var Nodebox2 = '" style="width:300px;height:200px;float:up;">'
  314. var Nodebox3 = '</p>'
  315. function editNode(data, cancelAction, callback) {
  316. document.getElementById('node-descript').value = data.title;
  317. document.getElementById('node-label').value = data.label;
  318. document.getElementById('node-saveButton').onclick = saveNodeData.bind(this, data, callback);
  319. document.getElementById('node-cancelButton').onclick = cancelAction.bind(this, callback);
  320. document.getElementById('node-popUp').style.display = 'block';
  321. }
  322. // Callback passed as parameter is ignored
  323. function clearNodePopUp() {
  324. document.getElementById('node-saveButton').onclick = null;
  325. document.getElementById('node-cancelButton').onclick = null;
  326. document.getElementById('node-popUp').style.display = 'none';
  327. }
  328. function cancelNodeEdit(callback) {
  329. clearNodePopUp();
  330. callback(null);
  331. }
  332. function saveNodeData(data, callback) {
  333. data.label = document.getElementById('node-label').value;
  334. data.title = Nodebox1 + data.image + Nodebox2 + document.getElementById('node-descript').value + Nodebox3;
  335. clearNodePopUp();
  336. callback(data);
  337. }
  338. function editEdgeWithoutDrag(data, callback) {
  339. // filling in the popup DOM elements
  340. document.getElementById('edge-color').value = data.color;
  341. document.getElementById('edge-descript').value = data.title;
  342. document.getElementById('edge-saveButton').onclick = saveEdgeData.bind(this, data, callback);
  343. document.getElementById('edge-cancelButton').onclick = cancelEdgeEdit.bind(this,callback);
  344. document.getElementById('edge-popUp').style.display = 'block';
  345. }
  346. function clearEdgePopUp() {
  347. document.getElementById('edge-saveButton').onclick = null;
  348. document.getElementById('edge-cancelButton').onclick = null;
  349. document.getElementById('edge-popUp').style.display = 'none';
  350. }
  351. function cancelEdgeEdit(callback) {
  352. clearEdgePopUp();
  353. callback(null);
  354. }
  355. var Edgebox1 = '<p class="test">'
  356. var Edgebox2 = '</p>'
  357. function saveEdgeData(data, callback) {
  358. if (typeof data.to === 'object')
  359. data.to = data.to.id
  360. if (typeof data.from === 'object')
  361. data.from = data.from.id
  362. data.arrows = 'to';
  363. data.color = document.getElementById('edge-color').value;
  364. data.title = Edgebox1 + document.getElementById('edge-descript').value + Edgebox2;
  365. clearEdgePopUp();
  366. callback(data);
  367. }
  368. function exportnetwork() {
  369. var xhr=newXMLHttpRequest();
  370. var url="data.json";
  371. xhr.onreadystatechange=function() {
  372. if (xhr.readyState==4 && xhr.status==200) {
  373. var myArr=JSON.parse(xhr.responseText);
  374. myParse(myArr);
  375. }
  376. }
  377. xhr.open("GET", url, true);
  378. xhr.send();
  379. function myParse(arr) {
  380. var out="";
  381. for(var i=0; i<arr.length; i++) {
  382. out +='<a href="'+arr[i].url+'">'+
  383. arr[i].ort+'</a>'+" = " +arr[i].postleitzahl+'<br>';
  384. }
  385. document.getElementById("output").innerHTML=out;
  386. }
  387. }
  388. function init() {
  389. draw();
  390. }
  391. function exportnetwork() {
  392. // import fs module in which writeFile function is defined.
  393. // myJSON = JSON.stringify(egdes);
  394. //
  395. }
  396. function importnetwork() {
  397. }
  398. function focusOnNode() {
  399. var labeltofocus = ""
  400. labeltofocus = document.getElementById('labelinput').value;
  401. var nodeid
  402. var i;
  403. for (i = 0; i < nodes.length; i++) {
  404. if (nodes[i].label == labeltofocus) {
  405. nodeid = nodes[i].id;
  406. };
  407. }
  408. network.fit({
  409. nodes:[nodeid],
  410. animation: { // -------------------> can be a boolean too!
  411. duration: 1000,
  412. easingFunction: "easeInOutQuad"
  413. }
  414. }
  415. );
  416. }
  417. </script>
  418. <script>try {
  419. Object.defineProperty(screen, "availTop", { value: 0 });
  420. } catch (e) {}
  421. try {
  422. Object.defineProperty(screen, "availLeft", { value: 0 });
  423. } catch (e) {}
  424. try {
  425. Object.defineProperty(screen, "availWidth", { value: 1366 });
  426. } catch (e) {}
  427. try {
  428. Object.defineProperty(screen, "availHeight", { value: 768 });
  429. } catch (e) {}
  430. try {
  431. Object.defineProperty(screen, "colorDepth", { value: 24 });
  432. } catch (e) {}
  433. try {
  434. Object.defineProperty(screen, "pixelDepth", { value: 24 });
  435. } catch (e) {}
  436. try {
  437. Object.defineProperty(navigator, "hardwareConcurrency", { value: 8 });
  438. } catch (e) {}
  439. try {
  440. Object.defineProperty(navigator, "appVersion", { value: "5.0 (X11)" });
  441. } catch (e) {}
  442. try {
  443. Object.defineProperty(navigator, "doNotTrack", { value: "unspecified" });
  444. } catch (e) {}
  445. try {
  446. window.screenY = 0
  447. } catch (e) { }
  448. try {
  449. window.screenTop = 0
  450. } catch (e) { }
  451. try {
  452. window.top.window.outerHeight = 744
  453. } catch (e) { }
  454. try {
  455. window.screenX = 0
  456. } catch (e) { }
  457. try {
  458. window.screenLeft = 0
  459. } catch (e) { }
  460. try {
  461. window.top.window.outerWidth = window.screen.width
  462. } catch (e) { }
  463. </script><script>try {
  464. Object.defineProperty(screen, "availTop", { value: 0 });
  465. } catch (e) {}
  466. try {
  467. Object.defineProperty(screen, "availLeft", { value: 0 });
  468. } catch (e) {}
  469. try {
  470. Object.defineProperty(screen, "availWidth", { value: 1366 });
  471. } catch (e) {}
  472. try {
  473. Object.defineProperty(screen, "availHeight", { value: 768 });
  474. } catch (e) {}
  475. try {
  476. Object.defineProperty(screen, "colorDepth", { value: 24 });
  477. } catch (e) {}
  478. try {
  479. Object.defineProperty(screen, "pixelDepth", { value: 24 });
  480. } catch (e) {}
  481. try {
  482. Object.defineProperty(navigator, "hardwareConcurrency", { value: 8 });
  483. } catch (e) {}
  484. try {
  485. Object.defineProperty(navigator, "appVersion", { value: "5.0 (X11)" });
  486. } catch (e) {}
  487. try {
  488. Object.defineProperty(navigator, "doNotTrack", { value: "unspecified" });
  489. } catch (e) {}
  490. try {
  491. window.screenY = 0
  492. } catch (e) { }
  493. try {
  494. window.screenTop = 0
  495. } catch (e) { }
  496. try {
  497. window.top.window.outerHeight = 744
  498. } catch (e) { }
  499. try {
  500. window.screenX = 0
  501. } catch (e) { }
  502. try {
  503. window.screenLeft = 0
  504. } catch (e) { }
  505. try {
  506. window.top.window.outerWidth = window.screen.width
  507. } catch (e) { }
  508. </script><script>try {
  509. Object.defineProperty(screen, "availTop", { value: 0 });
  510. } catch (e) {}
  511. try {
  512. Object.defineProperty(screen, "availLeft", { value: 0 });
  513. } catch (e) {}
  514. try {
  515. Object.defineProperty(screen, "availWidth", { value: 1366 });
  516. } catch (e) {}
  517. try {
  518. Object.defineProperty(screen, "availHeight", { value: 768 });
  519. } catch (e) {}
  520. try {
  521. Object.defineProperty(screen, "colorDepth", { value: 24 });
  522. } catch (e) {}
  523. try {
  524. Object.defineProperty(screen, "pixelDepth", { value: 24 });
  525. } catch (e) {}
  526. try {
  527. Object.defineProperty(navigator, "hardwareConcurrency", { value: 8 });
  528. } catch (e) {}
  529. try {
  530. Object.defineProperty(navigator, "appVersion", { value: "5.0 (X11)" });
  531. } catch (e) {}
  532. try {
  533. Object.defineProperty(navigator, "doNotTrack", { value: "unspecified" });
  534. } catch (e) {}
  535. try {
  536. window.screenY = 0
  537. } catch (e) { }
  538. try {
  539. window.screenTop = 0
  540. } catch (e) { }
  541. try {
  542. window.top.window.outerHeight = 744
  543. } catch (e) { }
  544. try {
  545. window.screenX = 0
  546. } catch (e) { }
  547. try {
  548. window.screenLeft = 0
  549. } catch (e) { }
  550. try {
  551. window.top.window.outerWidth = window.screen.width
  552. } catch (e) { }
  553. </script></head>
  554. <body onload="init();">
  555. <h2 style="height:20px; font-size:90px">
  556. <span style="color: green">perm</span><span style="color: red">A</span><span style="color: green">pp</span>
  557. </h2>
  558. <p style="width: 700px; font-size:16px; text-align: justify;">
  559. .explore relations between entities of the ecosystem
  560. </p>
  561. <div id="node-popUp">
  562. <span id="node-operation">node</span> <br>
  563. <table style="margin:auto;">
  564. <tbody><tr>
  565. <td>label</td><td><input id="node-label" value="new value"></td>
  566. </tr>
  567. <tr>
  568. <td>description</td><td><input id="node-descript" value="new value"></td>
  569. </tr>
  570. </tbody></table>
  571. <input type="button" value="save" id="node-saveButton">
  572. <input type="button" value="cancel" id="node-cancelButton">
  573. </div>
  574. <div id="edge-popUp">
  575. <span id="edge-operation">edge</span> <br>
  576. <table style="margin:auto;">
  577. <tbody><tr>
  578. <td>red/green</td><td><input id="edge-color" value="new value"></td>
  579. </tr></tbody></table>
  580. description<input id="edge-descript" value="new value">
  581. <input type="button" value="save" id="edge-saveButton">
  582. <input type="button" value="cancel" id="edge-cancelButton">
  583. </div>
  584. <div class="bottom">
  585. <span id="statusUpdate"></span>
  586. <br>
  587. <input type="button" onclick="exportnetwork();" value="export network to txt file:" style="width:800px;height:50px;color:black;background-color:lightblue;" id="btnFocus"><br>
  588. <br>
  589. <input type="button" onclick="focusOnNode();" value="Focus on node:" style="width:800px;height:50px;color:black;background-color:lightblue;" id="btnFocus"><br>
  590. <input type="text" id="labelinput" style="width:785px;">
  591. </div>
  592. <br>
  593. <div id="mynetwork"><div class="vis-network" style="position: relative; overflow: hidden; touch-action: pan-y; user-select: none; width: 100%; height: 100%;" tabindex="900"><canvas style="position: relative; touch-action: none; user-select: none; width: 100%; height: 100%;" width="800" height="600"></canvas><div class="vis-manipulation" style="display: none;"></div><div class="vis-edit-mode" style="display: block;"><div class="vis-button vis-edit vis-edit-mode" style="touch-action: pan-y; user-select: none;"><div class="vis-label">Edit</div></div></div><div class="vis-close" style="display: none;"></div></div></div>
  594. <h1>View</h1>
  595. <table class="view">
  596. <tbody><tr>
  597. <td>
  598. <h2>Nodes</h2>
  599. <pre id="nodes">[
  600. {
  601. "id": 0,
  602. "shape": "circularImage",
  603. "image": "public/images/canna.jpg",
  604. "label": "Cannabis",
  605. "group": 1,
  606. "title": "I am a plant"
  607. },
  608. {
  609. "id": 1,
  610. "shape": "circularImage",
  611. "image": "public/images/rose.jpg",
  612. "label": "Rose",
  613. "group": 1
  614. },
  615. {
  616. "id": 2,
  617. "label": "Tomato",
  618. "group": 1
  619. },
  620. {
  621. "id": 3,
  622. "label": "Mint",
  623. "group": 1
  624. },
  625. {
  626. "id": 4,
  627. "label": "Basil",
  628. "group": 1
  629. },
  630. {
  631. "id": 5,
  632. "label": "Acorn",
  633. "group": 1
  634. },
  635. {
  636. "id": 6,
  637. "label": "Pine",
  638. "group": 1
  639. },
  640. {
  641. "id": 7,
  642. "label": "Orange",
  643. "group": 1
  644. },
  645. {
  646. "id": 8,
  647. "label": "Lemon",
  648. "group": 1
  649. },
  650. {
  651. "id": 9,
  652. "shape": "circularImage",
  653. "image": "public/images/sunflower.jpg",
  654. "label": "Sunflower",
  655. "group": 1
  656. },
  657. {
  658. "id": 10,
  659. "label": "Marigold",
  660. "group": 1
  661. },
  662. {
  663. "id": 11,
  664. "label": "Alfalfa",
  665. "group": 1
  666. },
  667. {
  668. "id": 12,
  669. "label": "Red Clover",
  670. "group": 1
  671. },
  672. {
  673. "id": 13,
  674. "label": "Chervil",
  675. "group": 1
  676. },
  677. {
  678. "id": 14,
  679. "label": "White Clover",
  680. "group": 1
  681. },
  682. {
  683. "id": 15,
  684. "label": "Lavender",
  685. "group": 1
  686. },
  687. {
  688. "id": 16,
  689. "label": "Coriander",
  690. "group": 1
  691. },
  692. {
  693. "id": 17,
  694. "shape": "circularImage",
  695. "image": "public/images/chamomile.jpg",
  696. "label": "Chamomile",
  697. "group": 1
  698. },
  699. {
  700. "id": 18,
  701. "label": "Yarrow",
  702. "group": 1
  703. },
  704. {
  705. "id": 19,
  706. "label": "Dill",
  707. "group": 1
  708. },
  709. {
  710. "id": 20,
  711. "label": "Lemon Balm",
  712. "group": 1
  713. },
  714. {
  715. "id": 21,
  716. "label": "Borage",
  717. "group": 1
  718. },
  719. {
  720. "id": 22,
  721. "label": "Ant",
  722. "group": 2
  723. },
  724. {
  725. "id": 23,
  726. "label": "Bee",
  727. "group": 2
  728. },
  729. {
  730. "id": 24,
  731. "label": "Snail",
  732. "group": 2
  733. },
  734. {
  735. "id": 25,
  736. "label": "Heat",
  737. "group": 3
  738. },
  739. {
  740. "id": 26,
  741. "label": "Water",
  742. "group": 3
  743. },
  744. {
  745. "id": 27,
  746. "label": "Luminance",
  747. "group": 3
  748. },
  749. {
  750. "id": 28,
  751. "label": "Bird",
  752. "group": 2
  753. }
  754. ]</pre>
  755. </td>
  756. <td>
  757. <h2>Edges</h2>
  758. <pre id="edges">[
  759. {
  760. "from": 1,
  761. "to": 0,
  762. "arrows": "to",
  763. "color": "green",
  764. "title": "<p class="\&quot;test\&quot;">the rose is very fragile. For that reason, she gets a lot of deseases some time before Cannabis gets it. That means, the rose can give you time to act.</p>",
  765. "id": "2b17f7e3-5586-4b9b-9957-f5a755818c95"
  766. },
  767. {
  768. "from": 2,
  769. "to": 0,
  770. "id": "5021306a-dcaa-4680-9a76-70e2965ea9ea"
  771. },
  772. {
  773. "from": 3,
  774. "to": 0,
  775. "id": "8821598a-6072-43ff-81d5-48e8155bdfd4"
  776. },
  777. {
  778. "from": 3,
  779. "to": 2,
  780. "id": "8fe477c8-bce7-4ad3-baac-89236fc0ba78"
  781. },
  782. {
  783. "from": 4,
  784. "to": 0,
  785. "id": "252051ba-1d76-4a87-a7ca-00876e89885f"
  786. },
  787. {
  788. "from": 5,
  789. "to": 0,
  790. "id": "cf279726-6b56-4a1a-942d-6ed3c4532219"
  791. },
  792. {
  793. "from": 6,
  794. "to": 0,
  795. "id": "899cb9b4-b9d9-41ba-9591-d344af95f742"
  796. },
  797. {
  798. "from": 7,
  799. "to": 0,
  800. "id": "2fa71ca8-d3e5-4c4d-986b-ce212c271863"
  801. },
  802. {
  803. "from": 8,
  804. "to": 0,
  805. "id": "f8ac1c5e-9a70-4008-9f24-3bd2715d31eb"
  806. },
  807. {
  808. "from": 9,
  809. "to": 0,
  810. "id": "ac39d4a5-3674-4076-abec-2fe412b7201a"
  811. },
  812. {
  813. "from": 11,
  814. "to": 10,
  815. "id": "d0822f89-a8cd-4993-8bec-567b857ab5bd"
  816. },
  817. {
  818. "from": 11,
  819. "to": 3,
  820. "id": "4bbfd401-bb4b-4171-a21d-d7c208af7662"
  821. },
  822. {
  823. "from": 11,
  824. "to": 2,
  825. "id": "ea6108f1-2412-41ff-a32f-2f0020af2752"
  826. },
  827. {
  828. "from": 11,
  829. "to": 0,
  830. "id": "976847d8-5c55-4413-b25b-169b5a3c9a7a"
  831. },
  832. {
  833. "from": 12,
  834. "to": 11,
  835. "id": "e48aba46-1d4f-4b90-93e4-e813b55b4786"
  836. },
  837. {
  838. "from": 13,
  839. "to": 11,
  840. "id": "f0156501-e873-402e-80a3-aa6acdcba1ef"
  841. },
  842. {
  843. "from": 14,
  844. "to": 11,
  845. "id": "9e993715-4da2-43a9-9c09-16b4931d94fc"
  846. },
  847. {
  848. "from": 15,
  849. "to": 11,
  850. "id": "16cc8bf4-4cd3-4dd1-ad72-6872dffa34a5"
  851. },
  852. {
  853. "from": 17,
  854. "to": 16,
  855. "id": "2e8b06e2-32d0-4f59-b2bc-232ea0998e78"
  856. },
  857. {
  858. "from": 18,
  859. "to": 16,
  860. "id": "aec41c02-e596-45c7-87eb-ddb9e2f015d8"
  861. },
  862. {
  863. "from": 18,
  864. "to": 17,
  865. "id": "7d67a0e9-9dd0-4b3d-8d76-166a6b4d839c"
  866. },
  867. {
  868. "from": 19,
  869. "to": 16,
  870. "id": "26a11319-7a32-493c-b407-5ab8f862634a"
  871. },
  872. {
  873. "from": 19,
  874. "to": 17,
  875. "id": "7ebd58a7-e51b-464c-b67c-db52ef49a94d"
  876. },
  877. {
  878. "from": 19,
  879. "to": 18,
  880. "id": "d1948a44-ce22-47da-9ce7-5b2b7eac3af1"
  881. },
  882. {
  883. "from": 20,
  884. "to": 16,
  885. "id": "0f8a8217-66a1-4646-9ed6-a43de37084de"
  886. },
  887. {
  888. "from": 20,
  889. "to": 17,
  890. "id": "4a7a42f6-d69a-4a3c-8799-a10a55ec264c"
  891. },
  892. {
  893. "from": 20,
  894. "to": 18,
  895. "id": "96a57975-fdad-4bdd-b097-17a6399e5a08"
  896. },
  897. {
  898. "from": 20,
  899. "to": 19,
  900. "id": "a3915a81-6a03-487d-90ac-f28eb231d97e"
  901. },
  902. {
  903. "from": 21,
  904. "to": 16,
  905. "id": "fdcce3b8-568e-4818-aa51-c71b8e8e629a"
  906. },
  907. {
  908. "from": 21,
  909. "to": 17,
  910. "id": "4c705e6d-da21-4606-a0ed-e42e63301c88"
  911. },
  912. {
  913. "from": 21,
  914. "to": 18,
  915. "id": "0b517446-80c3-4e14-96dd-c4df89bb6c88"
  916. },
  917. {
  918. "from": 21,
  919. "to": 19,
  920. "id": "5c5b7eb7-427b-44ba-a711-527eb852fc42"
  921. },
  922. {
  923. "from": 21,
  924. "to": 20,
  925. "id": "88627610-ac45-459c-867f-e9ad0f146e27"
  926. },
  927. {
  928. "from": 22,
  929. "to": 16,
  930. "id": "1170b918-3b5b-4f6a-bc71-4ad2aa1af91c"
  931. },
  932. {
  933. "from": 22,
  934. "to": 17,
  935. "id": "05b8fc93-acf7-49d6-8729-9a36ef7c90bc"
  936. },
  937. {
  938. "from": 22,
  939. "to": 18,
  940. "id": "44efe55f-1b91-44c1-86b3-882472f4f003"
  941. },
  942. {
  943. "from": 22,
  944. "to": 19,
  945. "id": "9da4511c-ffbd-437c-b4dc-90e11ef3a7b0"
  946. },
  947. {
  948. "from": 22,
  949. "to": 20,
  950. "id": "658c1057-4ebc-4859-b940-c7a1e5ea7d41"
  951. },
  952. {
  953. "from": 22,
  954. "to": 21,
  955. "id": "c1a1ed8c-4f8a-448e-9b33-a429f9bc79f3"
  956. },
  957. {
  958. "from": 23,
  959. "to": 16,
  960. "id": "5b0efea0-a645-4cf6-9045-c5831c87919a"
  961. },
  962. {
  963. "from": 23,
  964. "to": 17,
  965. "id": "1a22df22-54e4-4b48-b8dd-f09578f28d4d"
  966. },
  967. {
  968. "from": 23,
  969. "to": 18,
  970. "id": "8749348a-2f57-4d78-ba26-e0d876a669a8"
  971. },
  972. {
  973. "from": 23,
  974. "to": 19,
  975. "id": "318d7318-23ba-455a-9d40-3f4865511bec"
  976. },
  977. {
  978. "from": 23,
  979. "to": 20,
  980. "id": "7d51a759-55a0-4128-b72a-632b2a636b59"
  981. },
  982. {
  983. "from": 23,
  984. "to": 21,
  985. "id": "1eae2ef5-6104-47c8-ad97-dafebcfa4a23"
  986. },
  987. {
  988. "from": 23,
  989. "to": 22,
  990. "id": "9bf34382-9e24-43c7-9d32-4c9ae41fc694"
  991. },
  992. {
  993. "from": 23,
  994. "to": 12,
  995. "id": "1b30313a-682e-4593-acd1-c3405f32172e"
  996. },
  997. {
  998. "from": 23,
  999. "to": 11,
  1000. "id": "5091f39d-1418-4fd4-abe8-e7a77ac70255"
  1001. },
  1002. {
  1003. "from": 24,
  1004. "to": 23,
  1005. "id": "0f8f7a42-5a84-4483-9a6d-582b307a7f15"
  1006. },
  1007. {
  1008. "from": 24,
  1009. "to": 11,
  1010. "id": "c20bb6ff-ff9c-400c-8869-e6e704b2899f"
  1011. },
  1012. {
  1013. "from": 25,
  1014. "to": 24,
  1015. "id": "25bfad1f-ee97-438d-b46a-5d9058d84e63"
  1016. },
  1017. {
  1018. "from": 25,
  1019. "to": 23,
  1020. "id": "0fd04e11-19d7-498b-8673-e471b1839dc7"
  1021. },
  1022. {
  1023. "from": 25,
  1024. "to": 11,
  1025. "id": "8d9792d2-78cb-4107-8850-9f7dfe0bab7e"
  1026. },
  1027. {
  1028. "from": 26,
  1029. "to": 24,
  1030. "id": "90f1c3a9-66a1-44c5-b371-3ed2e948e3de"
  1031. },
  1032. {
  1033. "from": 26,
  1034. "to": 11,
  1035. "id": "9db347bb-2a50-4dfa-9dcd-e46d146e41be"
  1036. },
  1037. {
  1038. "from": 26,
  1039. "to": 16,
  1040. "id": "4f1ac32c-91b3-4ca0-a679-8a61bd356cc6"
  1041. },
  1042. {
  1043. "from": 26,
  1044. "to": 25,
  1045. "id": "4a14c6d2-9395-4ebe-8c1e-6f17e703c5f0"
  1046. },
  1047. {
  1048. "from": 27,
  1049. "to": 11,
  1050. "id": "d9af938b-e618-4945-8abe-ea7068117454"
  1051. },
  1052. {
  1053. "from": 27,
  1054. "to": 23,
  1055. "id": "2bc1fbf6-9428-4285-8808-3d5da39620dc"
  1056. },
  1057. {
  1058. "from": 27,
  1059. "to": 25,
  1060. "id": "95d68416-df07-4cd5-bb52-f224b724aae2"
  1061. },
  1062. {
  1063. "from": 27,
  1064. "to": 24,
  1065. "id": "4f25cc0d-418d-47fa-91e4-ca7cb00c55f9"
  1066. },
  1067. {
  1068. "from": 27,
  1069. "to": 26,
  1070. "id": "3cda4c0a-c6c8-4de9-b4ee-70dc436229ec"
  1071. },
  1072. {
  1073. "from": 28,
  1074. "to": 11,
  1075. "id": "4abf107e-752a-4e33-a31e-21f8f6661ba6"
  1076. },
  1077. {
  1078. "from": 28,
  1079. "to": 27,
  1080. "id": "99bb86a6-9fc1-4cd7-8ac5-c4f68bb7da37"
  1081. }
  1082. ]</pre>
  1083. </td>
  1084. </tr></tbody></table></body></html>