tomwer 1.3.26__py3-none-any.whl → 1.4.0__py3-none-any.whl

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 (638) hide show
  1. orangecontrib/tomwer/orange/managedprocess.py +1 -29
  2. orangecontrib/tomwer/orange/settings.py +2 -28
  3. orangecontrib/tomwer/tests/TestAcquisition.py +220 -0
  4. orangecontrib/tomwer/tutorials/append_raw_darks_and_flats_frames_to_NXtomos.ows +2 -2
  5. orangecontrib/tomwer/tutorials/copy_reduced_darks_and_flats_meth1.ows +1 -1
  6. orangecontrib/tomwer/tutorials/{icat_publication.ows → drac_publication.ows} +7 -21
  7. orangecontrib/tomwer/tutorials/id16b/ID16b_full_volume.ows +22 -0
  8. orangecontrib/tomwer/tutorials/id16b/ID16b_insitu.ows +302 -0
  9. orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows +218 -0
  10. orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows +29 -24
  11. orangecontrib/tomwer/tutorials/test_cor.ows +19 -0
  12. orangecontrib/tomwer/tutorials/volume_casting_on_slurm.ows +54 -0
  13. orangecontrib/tomwer/widgets/__init__.py +3 -5
  14. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +35 -54
  15. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +1 -31
  16. orangecontrib/tomwer/widgets/control/AdvancementOW.py +1 -29
  17. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +5 -4
  18. orangecontrib/tomwer/widgets/control/DataListenerOW.py +1 -29
  19. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +11 -30
  20. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +2 -28
  21. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +1 -28
  22. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +1 -28
  23. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +48 -51
  24. orangecontrib/tomwer/widgets/control/EmailOW.py +12 -2
  25. orangecontrib/tomwer/widgets/control/FilterOW.py +1 -28
  26. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +37 -53
  27. orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +21 -20
  28. orangecontrib/tomwer/widgets/control/NotifierOW.py +9 -28
  29. orangecontrib/tomwer/widgets/control/ReduceDarkFlatSelectorOW.py +3 -2
  30. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +1 -27
  31. orangecontrib/tomwer/widgets/control/TimerOW.py +9 -28
  32. orangecontrib/tomwer/widgets/control/TomoObjSeriesOW.py +58 -0
  33. orangecontrib/tomwer/widgets/control/VolumeSelector.py +8 -30
  34. orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +173 -119
  35. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.png +0 -0
  36. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.svg +55 -195
  37. orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.svg → tomoobjseries.svg} +2 -2
  38. orangecontrib/tomwer/widgets/dataportal/PublishProcessedDataOW.py +172 -0
  39. orangecontrib/tomwer/widgets/{icat → dataportal}/__init__.py +2 -2
  40. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +2 -29
  41. orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +1 -29
  42. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +48 -73
  43. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +48 -75
  44. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -30
  45. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +51 -52
  46. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +22 -10
  47. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +51 -60
  48. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +22 -68
  49. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +3 -30
  50. orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +21 -19
  51. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +7 -70
  52. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +41 -84
  53. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +15 -40
  54. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +13 -35
  55. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +2 -30
  56. orangecontrib/tomwer/widgets/stitching/ZStitchingConfigOW.py +11 -11
  57. orangecontrib/tomwer/widgets/utils.py +2 -29
  58. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +1 -27
  59. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -27
  60. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +1 -1
  61. orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +2 -28
  62. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +1 -27
  63. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +1 -27
  64. orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +2 -28
  65. tomwer/__init__.py +3 -28
  66. tomwer/__main__.py +8 -4
  67. tomwer/app/__init__.py +2 -0
  68. tomwer/app/axis.py +8 -10
  69. tomwer/app/canvas.py +23 -29
  70. tomwer/app/canvas_launcher/config.py +14 -102
  71. tomwer/app/canvas_launcher/environ.py +5 -8
  72. tomwer/app/canvas_launcher/mainwindow.py +175 -69
  73. tomwer/app/canvas_launcher/splash.py +1 -3
  74. tomwer/app/canvas_launcher/utils.py +47 -0
  75. tomwer/app/canvas_launcher/widgetsscheme.py +3 -10
  76. tomwer/app/diffframe.py +2 -0
  77. tomwer/app/imagekeyeditor.py +2 -1
  78. tomwer/app/imagekeyupgrader.py +2 -0
  79. tomwer/app/multicor.py +5 -2
  80. tomwer/app/multipag.py +16 -5
  81. tomwer/app/nabuapp.py +2 -1
  82. tomwer/app/nxtomoeditor.py +17 -12
  83. tomwer/app/patchrawdarkflat.py +2 -0
  84. tomwer/app/radiostack.py +3 -2
  85. tomwer/app/reducedarkflat.py +3 -0
  86. tomwer/app/samplemoved.py +2 -0
  87. tomwer/app/scanviewer.py +2 -0
  88. tomwer/app/sinogramviewer.py +2 -0
  89. tomwer/app/slicestack.py +11 -13
  90. tomwer/app/stitching/common.py +431 -0
  91. tomwer/app/stopdatalistener.py +3 -0
  92. tomwer/app/ystitching.py +26 -0
  93. tomwer/app/zstitching.py +8 -363
  94. tomwer/core/__init__.py +2 -28
  95. tomwer/core/cluster/__init__.py +3 -0
  96. tomwer/core/cluster/cluster.py +10 -26
  97. tomwer/core/futureobject.py +17 -43
  98. tomwer/core/log/__init__.py +2 -0
  99. tomwer/core/log/processlog.py +0 -28
  100. tomwer/core/process/cluster/supervisor.py +52 -34
  101. tomwer/core/process/conditions/filters.py +3 -28
  102. tomwer/core/process/control/datalistener/datalistener.py +7 -75
  103. tomwer/core/process/control/datalistener/rpcserver.py +8 -38
  104. tomwer/core/process/control/datawatcher/datawatcher.py +11 -40
  105. tomwer/core/process/control/datawatcher/datawatcherobserver.py +30 -64
  106. tomwer/core/process/control/datawatcher/datawatcherprocess.py +11 -32
  107. tomwer/core/process/control/datawatcher/edfdwprocess.py +2 -27
  108. tomwer/core/process/control/datawatcher/hdf5dwprocess.py +1 -26
  109. tomwer/core/process/control/datawatcher/status.py +1 -26
  110. tomwer/core/process/control/emailnotifier.py +11 -23
  111. tomwer/core/process/control/nxtomoconcatenate.py +20 -18
  112. tomwer/core/process/control/nxtomomill.py +9 -44
  113. tomwer/core/process/control/scanlist.py +0 -27
  114. tomwer/core/process/control/scantransfer.py +15 -13
  115. tomwer/core/process/control/scanvalidator.py +4 -30
  116. tomwer/core/process/control/{test → tests}/test_concatenate_nxtomos.py +5 -5
  117. tomwer/core/process/control/timer.py +1 -27
  118. tomwer/core/process/control/tomoobjseries.py +12 -0
  119. tomwer/core/process/drac/binning.py +37 -0
  120. tomwer/core/process/drac/dracbase.py +170 -0
  121. tomwer/core/process/drac/gallery.py +109 -0
  122. tomwer/core/process/drac/output.py +12 -0
  123. tomwer/core/process/drac/processeddataset.py +147 -0
  124. tomwer/core/process/drac/publish.py +118 -0
  125. tomwer/core/process/drac/rawdataset.py +142 -0
  126. tomwer/core/process/drac/tests/test_gallery.py +71 -0
  127. tomwer/core/process/drac/tests/test_icat_processed_dataset.py +80 -0
  128. tomwer/core/process/drac/tests/test_icat_raw_dataset.py +90 -0
  129. tomwer/core/process/edit/darkflatpatch.py +1 -28
  130. tomwer/core/process/edit/imagekeyeditor.py +4 -32
  131. tomwer/core/process/edit/nxtomoeditor.py +307 -0
  132. tomwer/core/process/edit/tests/test_darkflatpatch.py +243 -0
  133. tomwer/core/process/edit/tests/test_imagekey_editor.py +99 -0
  134. tomwer/core/process/output.py +9 -2
  135. tomwer/core/process/reconstruction/__init__.py +0 -26
  136. tomwer/core/process/reconstruction/axis/anglemode.py +1 -29
  137. tomwer/core/process/reconstruction/axis/axis.py +47 -804
  138. tomwer/core/process/reconstruction/axis/mode.py +89 -25
  139. tomwer/core/process/reconstruction/axis/params.py +131 -283
  140. tomwer/core/process/reconstruction/axis/projectiontype.py +0 -28
  141. tomwer/core/process/reconstruction/axis/side.py +8 -0
  142. tomwer/core/process/reconstruction/darkref/darkrefs.py +14 -39
  143. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +7 -39
  144. tomwer/core/process/reconstruction/darkref/params.py +1 -28
  145. tomwer/core/process/reconstruction/nabu/castvolume.py +19 -34
  146. tomwer/core/process/reconstruction/nabu/nabucommon.py +18 -43
  147. tomwer/core/process/reconstruction/nabu/nabuscores.py +64 -68
  148. tomwer/core/process/reconstruction/nabu/nabuslices.py +63 -105
  149. tomwer/core/process/reconstruction/nabu/nabuvolume.py +44 -70
  150. tomwer/core/process/reconstruction/nabu/plane.py +10 -0
  151. tomwer/core/process/reconstruction/nabu/settings.py +1 -28
  152. tomwer/core/process/reconstruction/nabu/target.py +0 -28
  153. tomwer/core/process/reconstruction/nabu/test/test_castvolume.py +116 -0
  154. tomwer/core/process/reconstruction/nabu/test/test_nabu_utils.py +277 -0
  155. tomwer/core/process/reconstruction/nabu/test/test_nabunormalization.py +199 -0
  156. tomwer/core/process/reconstruction/nabu/utils.py +11 -60
  157. tomwer/core/process/reconstruction/normalization/normalization.py +2 -32
  158. tomwer/core/process/reconstruction/normalization/params.py +3 -35
  159. tomwer/core/process/reconstruction/output.py +14 -19
  160. tomwer/core/process/reconstruction/paramsbase.py +4 -33
  161. tomwer/core/process/reconstruction/saaxis/params.py +5 -33
  162. tomwer/core/process/reconstruction/saaxis/saaxis.py +22 -51
  163. tomwer/core/process/reconstruction/sadeltabeta/params.py +2 -31
  164. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +18 -46
  165. tomwer/core/process/reconstruction/scores/params.py +9 -39
  166. tomwer/core/process/reconstruction/scores/scores.py +10 -42
  167. tomwer/core/process/reconstruction/tests/__init__.py +0 -0
  168. tomwer/core/process/reconstruction/tests/test_axis.py +46 -0
  169. tomwer/core/process/reconstruction/tests/test_darkref.py +33 -0
  170. tomwer/core/process/reconstruction/{test → tests}/test_saaxis.py +1 -27
  171. tomwer/core/process/reconstruction/tests/test_sadeltabeta.py +48 -0
  172. tomwer/core/process/reconstruction/{test → tests}/test_utils.py +4 -4
  173. tomwer/core/process/reconstruction/utils/cor.py +8 -4
  174. tomwer/core/process/script/python.py +1 -27
  175. tomwer/core/process/script/tests/test_script.py +41 -0
  176. tomwer/core/process/stitching/metadataholder.py +5 -4
  177. tomwer/core/process/stitching/nabustitcher.py +35 -5
  178. tomwer/core/process/stitching/tests/test_metadataholder.py +17 -0
  179. tomwer/core/process/task.py +20 -63
  180. tomwer/core/process/tests/__init__.py +0 -0
  181. tomwer/core/process/{test → tests}/test_conditions.py +1 -28
  182. tomwer/core/process/{test → tests}/test_dark_and_flat.py +1 -27
  183. tomwer/core/process/{test → tests}/test_data_listener.py +1 -27
  184. tomwer/core/process/{test → tests}/test_data_transfer.py +2 -28
  185. tomwer/core/process/{test → tests}/test_data_watcher.py +1 -27
  186. tomwer/core/process/{test → tests}/test_nabu.py +2 -33
  187. tomwer/core/process/{test → tests}/test_normalization.py +1 -26
  188. tomwer/core/process/{test → tests}/test_timer.py +1 -27
  189. tomwer/core/process/utils.py +2 -31
  190. tomwer/core/process/visualization/dataviewer.py +1 -26
  191. tomwer/core/process/visualization/diffviewer.py +1 -26
  192. tomwer/core/process/visualization/imagestackviewer.py +0 -26
  193. tomwer/core/process/visualization/radiostack.py +0 -26
  194. tomwer/core/process/visualization/samplemoved.py +0 -28
  195. tomwer/core/process/visualization/sinogramviewer.py +0 -27
  196. tomwer/core/process/visualization/slicestack.py +0 -28
  197. tomwer/core/process/visualization/tests/test_data_viewer.py +12 -0
  198. tomwer/core/process/visualization/tests/test_diff_viewer.py +12 -0
  199. tomwer/core/process/visualization/tests/test_image_stack_viewer.py +14 -0
  200. tomwer/core/process/visualization/tests/test_radio_stack.py +12 -0
  201. tomwer/core/process/visualization/tests/test_sample_moved.py +14 -0
  202. tomwer/core/process/visualization/tests/test_sinogram_viewer.py +13 -0
  203. tomwer/core/process/visualization/tests/test_slice_stack.py +13 -0
  204. tomwer/core/process/visualization/tests/test_volume_viewer.py +12 -0
  205. tomwer/core/process/visualization/volumeviewer.py +0 -29
  206. tomwer/core/scan/__init__.py +3 -27
  207. tomwer/core/scan/blissscan.py +5 -34
  208. tomwer/core/scan/edfscan.py +19 -53
  209. tomwer/core/scan/hdf5scan.py +2 -2
  210. tomwer/core/scan/nxtomoscan.py +48 -54
  211. tomwer/core/scan/scanbase.py +107 -203
  212. tomwer/core/scan/scanfactory.py +11 -41
  213. tomwer/core/scan/tests/__init__.py +0 -0
  214. tomwer/core/scan/tests/test_edf.py +25 -0
  215. tomwer/core/scan/tests/test_future_scan.py +35 -0
  216. tomwer/core/scan/tests/test_nxtomoscan.py +143 -0
  217. tomwer/core/scan/tests/test_process_registration.py +64 -0
  218. tomwer/core/settings.py +18 -40
  219. tomwer/core/tests/__init__.py +0 -0
  220. tomwer/core/tests/test_scanutils.py +26 -0
  221. tomwer/core/{test → tests}/test_utils.py +1 -28
  222. tomwer/core/tomwer_object.py +4 -0
  223. tomwer/core/utils/__init__.py +2 -0
  224. tomwer/core/utils/char.py +0 -28
  225. tomwer/core/utils/deprecation.py +12 -38
  226. tomwer/core/utils/dictutils.py +1 -3
  227. tomwer/core/utils/ftseriesutils.py +1 -27
  228. tomwer/core/utils/gpu.py +0 -28
  229. tomwer/core/utils/image.py +8 -39
  230. tomwer/core/utils/locker.py +1 -28
  231. tomwer/core/utils/logconfig.py +0 -27
  232. tomwer/core/utils/normalization.py +4 -31
  233. tomwer/core/utils/nxtomoutils.py +8 -38
  234. tomwer/core/utils/resource.py +0 -26
  235. tomwer/core/utils/scanutils.py +23 -52
  236. tomwer/core/utils/slurm.py +7 -30
  237. tomwer/core/utils/spec.py +6 -6
  238. tomwer/core/utils/tests/__init__.py +0 -0
  239. tomwer/core/utils/tests/test_image.py +30 -0
  240. tomwer/core/utils/tests/test_nxtomo.py +38 -0
  241. tomwer/core/utils/tests/test_scan_utils.py +46 -0
  242. tomwer/core/utils/tests/test_time.py +6 -0
  243. tomwer/core/utils/threads.py +0 -26
  244. tomwer/core/utils/time.py +0 -27
  245. tomwer/core/volume/__init__.py +4 -0
  246. tomwer/core/volume/edfvolume.py +1 -28
  247. tomwer/core/volume/hdf5volume.py +1 -28
  248. tomwer/core/volume/jp2kvolume.py +1 -27
  249. tomwer/core/volume/rawvolume.py +1 -28
  250. tomwer/core/volume/tests/test_volumes.py +21 -0
  251. tomwer/core/volume/tiffvolume.py +1 -28
  252. tomwer/core/volume/volumebase.py +5 -0
  253. tomwer/core/volume/volumefactory.py +7 -33
  254. tomwer/gui/__init__.py +0 -28
  255. tomwer/gui/cluster/__init__.py +2 -0
  256. tomwer/gui/cluster/slurm.py +297 -95
  257. tomwer/gui/cluster/supervisor.py +1 -27
  258. tomwer/gui/cluster/tests/__init__.py +0 -0
  259. tomwer/gui/cluster/{test → tests}/test_cluster.py +21 -26
  260. tomwer/gui/cluster/{test → tests}/test_supervisor.py +1 -27
  261. tomwer/gui/conditions/__init__.py +2 -0
  262. tomwer/gui/conditions/filter.py +1 -26
  263. tomwer/gui/configuration/__init__.py +2 -0
  264. tomwer/gui/control/__init__.py +2 -0
  265. tomwer/gui/control/actions.py +2 -28
  266. tomwer/gui/control/datadiscovery.py +4 -3
  267. tomwer/gui/control/datalist.py +64 -69
  268. tomwer/gui/control/datalistener.py +1 -39
  269. tomwer/gui/control/datareacheractions.py +1 -28
  270. tomwer/gui/control/datatransfert.py +2 -29
  271. tomwer/gui/control/datavalidator.py +3 -37
  272. tomwer/gui/control/datawatcher/__init__.py +0 -28
  273. tomwer/gui/control/datawatcher/configuration.py +1 -28
  274. tomwer/gui/control/datawatcher/datawatcher.py +3 -32
  275. tomwer/gui/control/datawatcher/datawatcherobserver.py +2 -28
  276. tomwer/gui/control/history.py +5 -35
  277. tomwer/gui/control/nxtomomill.py +3 -30
  278. tomwer/gui/control/observations.py +61 -55
  279. tomwer/gui/control/reducedarkflatselector.py +24 -20
  280. tomwer/gui/control/scanselectorwidget.py +2 -28
  281. tomwer/gui/control/selectorwidgetbase.py +17 -17
  282. tomwer/gui/control/series/__init__.py +0 -0
  283. tomwer/gui/control/{serie/seriecreator.py → series/seriescreator.py} +214 -235
  284. tomwer/gui/control/series/serieswaiter.py +0 -0
  285. tomwer/gui/control/series/test/test_creator.py +424 -0
  286. tomwer/gui/control/series/test/test_nxtomo_concatenate.py +21 -0
  287. tomwer/gui/control/singletomoobj.py +1 -1
  288. tomwer/gui/control/tests/__init__.py +0 -0
  289. tomwer/gui/control/tests/test_datalist.py +47 -0
  290. tomwer/gui/control/{test → tests}/test_datalistener.py +1 -28
  291. tomwer/gui/control/tests/test_datavalidator.py +27 -0
  292. tomwer/gui/control/{test → tests}/test_inputwidget.py +1 -27
  293. tomwer/gui/control/tests/test_process_manager.py +38 -0
  294. tomwer/gui/control/tests/test_scan_observations.py +23 -0
  295. tomwer/gui/control/tests/test_scanselector.py +42 -0
  296. tomwer/gui/control/{test → tests}/test_scanvalidator.py +1 -27
  297. tomwer/gui/control/{test → tests}/test_volume_dialog.py +2 -30
  298. tomwer/gui/control/{test → tests}/test_volumeselector.py +1 -27
  299. tomwer/gui/control/volumeselectorwidget.py +2 -30
  300. tomwer/gui/dataportal/__init__.py +2 -0
  301. tomwer/gui/{icat → dataportal}/createscreenshots.py +3 -2
  302. tomwer/gui/dataportal/gallery.py +133 -0
  303. tomwer/gui/dataportal/outputformat.py +0 -0
  304. tomwer/gui/dataportal/publish.py +96 -0
  305. tomwer/gui/dataportal/tests/test_create_screenshots_gui.py +23 -0
  306. tomwer/gui/dataportal/tests/test_gallery_gui.py +21 -0
  307. tomwer/gui/debugtools/__init__.py +2 -0
  308. tomwer/gui/debugtools/datasetgenerator.py +1 -30
  309. tomwer/gui/debugtools/objectinspector.py +1 -29
  310. tomwer/gui/dialog/QDataDialog.py +89 -0
  311. tomwer/gui/{qfolderdialog.py → dialog/QVolumeDialog.py} +8 -107
  312. tomwer/gui/dialog/__init__.py +1 -0
  313. tomwer/gui/edit/__init__.py +2 -0
  314. tomwer/gui/edit/dkrfpatch.py +52 -87
  315. tomwer/gui/edit/imagekeyeditor.py +18 -54
  316. tomwer/gui/edit/nxtomoeditor.py +113 -300
  317. tomwer/gui/edit/nxtomowarmer.py +3 -2
  318. tomwer/gui/edit/tests/__init__.py +0 -0
  319. tomwer/gui/edit/{test → tests}/test_dkrf_patch.py +3 -29
  320. tomwer/gui/edit/{test → tests}/test_image_key_editor.py +1 -27
  321. tomwer/gui/edit/{test → tests}/test_nx_editor.py +45 -23
  322. tomwer/gui/fonts.py +5 -0
  323. tomwer/gui/icons.py +28 -66
  324. tomwer/gui/illustrations.py +4 -34
  325. tomwer/gui/imagefromfile.py +5 -30
  326. tomwer/gui/metadataloader.py +36 -0
  327. tomwer/gui/qconfigfile.py +3 -0
  328. tomwer/gui/qlefilesystem.py +3 -0
  329. tomwer/gui/reconstruction/__init__.py +2 -0
  330. tomwer/gui/reconstruction/axis/AxisMainWindow.py +275 -0
  331. tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +313 -0
  332. tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +797 -0
  333. tomwer/gui/reconstruction/axis/AxisWidget.py +534 -0
  334. tomwer/gui/reconstruction/axis/CalculationWidget.py +218 -0
  335. tomwer/gui/reconstruction/axis/CompareImages.py +11 -44
  336. tomwer/gui/reconstruction/axis/ControlWidget.py +285 -0
  337. tomwer/gui/reconstruction/axis/EstimatedCORWidget.py +394 -0
  338. tomwer/gui/reconstruction/axis/EstimatedCorComboBox.py +118 -0
  339. tomwer/gui/reconstruction/axis/InputWidget.py +347 -0
  340. tomwer/gui/reconstruction/axis/ManualFramesSelection.py +168 -0
  341. tomwer/gui/reconstruction/axis/__init__.py +2 -2
  342. tomwer/gui/reconstruction/darkref/__init__.py +0 -27
  343. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +5 -34
  344. tomwer/gui/reconstruction/darkref/darkrefwidget.py +1 -27
  345. tomwer/gui/reconstruction/nabu/castvolume.py +40 -59
  346. tomwer/gui/reconstruction/nabu/check.py +7 -33
  347. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +7 -34
  348. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -5
  349. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +10 -69
  350. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +3 -47
  351. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +54 -36
  352. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +103 -54
  353. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +116 -65
  354. tomwer/gui/reconstruction/nabu/nabuflow.py +31 -61
  355. tomwer/gui/reconstruction/nabu/platform.py +94 -0
  356. tomwer/gui/reconstruction/nabu/slices.py +81 -45
  357. tomwer/gui/reconstruction/nabu/slurm.py +1 -27
  358. tomwer/gui/reconstruction/nabu/test/test_cast_volume.py +82 -0
  359. tomwer/gui/reconstruction/nabu/test/test_check.py +66 -0
  360. tomwer/gui/reconstruction/nabu/test/test_ctf.py +46 -0
  361. tomwer/gui/reconstruction/nabu/test/test_helical.py +21 -0
  362. tomwer/gui/reconstruction/nabu/test/test_nabu_preprocessing.py +81 -0
  363. tomwer/gui/reconstruction/nabu/volume.py +62 -90
  364. tomwer/gui/reconstruction/normalization/intensity.py +5 -32
  365. tomwer/gui/reconstruction/normalization/test/test_intensity.py +89 -0
  366. tomwer/gui/reconstruction/saaxis/corrangeselector.py +32 -56
  367. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +56 -96
  368. tomwer/gui/reconstruction/saaxis/saaxis.py +17 -38
  369. tomwer/gui/reconstruction/saaxis/sliceselector.py +8 -39
  370. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +19 -37
  371. tomwer/gui/reconstruction/scores/control.py +2 -30
  372. tomwer/gui/reconstruction/scores/scoreplot.py +23 -49
  373. tomwer/gui/reconstruction/tests/__init__.py +0 -0
  374. tomwer/gui/reconstruction/{test → tests}/test_axis.py +23 -49
  375. tomwer/gui/reconstruction/{test → tests}/test_nabu.py +16 -31
  376. tomwer/gui/reconstruction/{test → tests}/test_saaxis.py +10 -37
  377. tomwer/gui/reconstruction/{test → tests}/test_sadeltabeta.py +1 -26
  378. tomwer/gui/samplemoved/__init__.py +2 -30
  379. tomwer/gui/samplemoved/selectiontable.py +3 -33
  380. tomwer/gui/settings.py +7 -0
  381. tomwer/gui/stackplot.py +33 -661
  382. tomwer/gui/stacks.py +261 -135
  383. tomwer/gui/stitching/SingleAxisStitchingWidget.py +326 -0
  384. tomwer/gui/stitching/StitchingOptionsWidget.py +438 -0
  385. tomwer/gui/stitching/StitchingWindow.py +586 -0
  386. tomwer/gui/stitching/__init__.py +2 -0
  387. tomwer/gui/stitching/alignment.py +90 -0
  388. tomwer/gui/stitching/axisorderedlist.py +44 -34
  389. tomwer/gui/stitching/config/axisparams.py +25 -11
  390. tomwer/gui/stitching/config/output.py +6 -5
  391. tomwer/gui/stitching/config/positionoveraxis.py +313 -51
  392. tomwer/gui/stitching/config/stitchingstrategies.py +22 -16
  393. tomwer/gui/stitching/config/tests/test_axisparams.py +25 -0
  394. tomwer/gui/stitching/config/tomoobjdetails.py +3 -5
  395. tomwer/gui/stitching/normalization.py +1 -0
  396. tomwer/gui/stitching/preview.py +59 -0
  397. tomwer/gui/stitching/singleaxis.py +57 -0
  398. tomwer/gui/stitching/stitchandbackground.py +3 -2
  399. tomwer/gui/stitching/stitching_preview.py +44 -36
  400. tomwer/gui/stitching/stitching_raw.py +5 -3
  401. tomwer/gui/stitching/tests/test_ZStitchingWindow.py +88 -0
  402. tomwer/gui/stitching/tests/test_axis_ordered_list.py +21 -0
  403. tomwer/gui/stitching/tests/test_normalization.py +27 -0
  404. tomwer/gui/stitching/tests/test_preview.py +68 -0
  405. tomwer/gui/stitching/tests/test_stitching_raw.py +110 -0
  406. tomwer/gui/stitching/tests/utils.py +92 -0
  407. tomwer/gui/stitching/utils.py +14 -0
  408. tomwer/gui/stitching/z_stitching/fineestimation.py +5 -33
  409. tomwer/gui/stitching/z_stitching/tests/test_fine_estimation.py +35 -0
  410. tomwer/gui/stitching/z_stitching/tests/test_raw_estimation.py +215 -0
  411. tomwer/gui/stitching/z_stitching/tests/test_stitching_window.py +51 -0
  412. tomwer/gui/tests/__init__.py +0 -0
  413. tomwer/gui/tests/test_axis_gui.py +43 -0
  414. tomwer/gui/{test → tests}/test_qfolder_dialog.py +1 -1
  415. tomwer/gui/utils/RangeWidget.py +44 -0
  416. tomwer/gui/utils/buttons.py +4 -3
  417. tomwer/gui/utils/completer.py +2 -33
  418. tomwer/gui/utils/flow.py +11 -40
  419. tomwer/gui/utils/gpu.py +60 -0
  420. tomwer/gui/utils/illustrations.py +1 -26
  421. tomwer/gui/utils/inputwidget.py +35 -73
  422. tomwer/gui/utils/lineselector/lineselector.py +9 -46
  423. tomwer/gui/utils/loadingmode.py +81 -0
  424. tomwer/gui/utils/qt_utils.py +9 -0
  425. tomwer/gui/utils/sandboxes.py +1 -26
  426. tomwer/gui/utils/scandescription.py +2 -31
  427. tomwer/gui/utils/scrollarea.py +6 -55
  428. tomwer/gui/utils/slider.py +4 -28
  429. tomwer/gui/utils/splashscreen.py +0 -28
  430. tomwer/gui/utils/step.py +14 -13
  431. tomwer/gui/utils/tests/test_completer.py +41 -0
  432. tomwer/gui/utils/tests/test_line_selector.py +21 -0
  433. tomwer/gui/utils/tests/test_splashscreen.py +8 -0
  434. tomwer/gui/utils/tests/test_vignettes.py +68 -0
  435. tomwer/gui/utils/unitsystem.py +15 -69
  436. tomwer/gui/utils/utils.py +4 -5
  437. tomwer/gui/utils/vignettes.py +10 -41
  438. tomwer/gui/utils/waiterthread.py +0 -26
  439. tomwer/gui/visualization/__init__.py +2 -0
  440. tomwer/gui/visualization/dataviewer.py +68 -421
  441. tomwer/gui/visualization/diffviewer/diffviewer.py +2 -30
  442. tomwer/gui/visualization/diffviewer/shiftwidget.py +4 -29
  443. tomwer/gui/visualization/fullscreenplot.py +5 -5
  444. tomwer/gui/visualization/imagestack.py +403 -0
  445. tomwer/gui/visualization/nxtomometadata.py +0 -4
  446. tomwer/gui/visualization/reconstructionparameters.py +14 -32
  447. tomwer/gui/visualization/scanoverview.py +33 -66
  448. tomwer/gui/visualization/sinogramviewer.py +2 -28
  449. tomwer/gui/visualization/test/__init__.py +0 -28
  450. tomwer/gui/visualization/test/test_dataviewer.py +1 -28
  451. tomwer/gui/visualization/test/test_diffviewer.py +1 -28
  452. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +0 -5
  453. tomwer/gui/visualization/test/test_reconstruction_parameters.py +1 -27
  454. tomwer/gui/visualization/test/test_sinogramviewer.py +1 -28
  455. tomwer/gui/visualization/test/test_stacks.py +184 -115
  456. tomwer/gui/visualization/test/test_volumeviewer.py +3 -2
  457. tomwer/gui/visualization/tomoobjoverview.py +2 -2
  458. tomwer/gui/visualization/volumeoverview.py +3 -2
  459. tomwer/gui/visualization/volumeviewer.py +47 -43
  460. tomwer/io/__init__.py +2 -0
  461. tomwer/io/utils/h5pyutils.py +1 -27
  462. tomwer/io/utils/test/test_raw_and_processed_data.py +10 -0
  463. tomwer/io/utils/test/test_utils.py +67 -0
  464. tomwer/io/utils/utils.py +2 -31
  465. tomwer/resources/__init__.py +13 -33
  466. tomwer/resources/gui/icons/edit_downstream.svg +114 -0
  467. tomwer/resources/gui/icons/edit_upstream.svg +112 -0
  468. tomwer/resources/gui/icons/free_edition.svg +23 -0
  469. tomwer/resources/gui/icons/icat_gallery_opts.png +0 -0
  470. tomwer/resources/gui/icons/icat_gallery_opts.svg +80 -0
  471. tomwer/resources/gui/icons/search.png +0 -0
  472. tomwer/resources/gui/icons/search.svg +23 -0
  473. tomwer/resources/gui/icons/warning.png +0 -0
  474. tomwer/synctools/__init__.py +2 -0
  475. tomwer/synctools/axis.py +1 -27
  476. tomwer/synctools/darkref.py +1 -26
  477. tomwer/synctools/datalistener.py +1 -27
  478. tomwer/synctools/datatransfert.py +2 -27
  479. tomwer/synctools/imageloaderthread.py +1 -28
  480. tomwer/synctools/rsyncmanager.py +1 -25
  481. tomwer/synctools/saaxis.py +1 -26
  482. tomwer/synctools/sadeltabeta.py +1 -26
  483. tomwer/synctools/stacks/control/datalistener.py +1 -26
  484. tomwer/synctools/stacks/processingstack.py +4 -33
  485. tomwer/synctools/stacks/reconstruction/axis.py +6 -53
  486. tomwer/synctools/stacks/reconstruction/castvolume.py +12 -43
  487. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +4 -27
  488. tomwer/synctools/stacks/reconstruction/nabu.py +3 -28
  489. tomwer/synctools/stacks/reconstruction/normalization.py +2 -27
  490. tomwer/synctools/stacks/reconstruction/saaxis.py +2 -27
  491. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +2 -27
  492. tomwer/synctools/tests/__init__.py +0 -0
  493. tomwer/synctools/{test → tests}/test_darkRefs.py +16 -40
  494. tomwer/synctools/{test → tests}/test_foldertransfer.py +2 -33
  495. tomwer/synctools/utils/scanstages.py +2 -31
  496. tomwer/tests/__init__.py +1 -0
  497. tomwer/tests/app/test_stitching.py +95 -0
  498. tomwer/tests/datasets.py +1 -5
  499. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_future_supervisorow.py +48 -0
  500. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_slurm_clusterow.py +40 -0
  501. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_advancement.py +8 -0
  502. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_data_validator.py +55 -0
  503. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datadiscovery.py +129 -0
  504. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datalistener.py +111 -0
  505. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_dataselector.py +69 -0
  506. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datawatcher.py +411 -0
  507. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_emailow.py +29 -0
  508. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_notifier.py +24 -0
  509. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomo_concatenate_ow.py +64 -0
  510. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomomill.py +133 -0
  511. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_reduce_dark_flat_selector.py +40 -0
  512. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_singletomoobj.py +40 -0
  513. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_timerow.py +25 -0
  514. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_tomoobj_series.py +96 -0
  515. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_volume_selector.py +69 -0
  516. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py → tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_dataset_generator.py +17 -16
  517. tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_object_inspector.py +36 -0
  518. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_dark_flat_patch.py +1 -27
  519. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_image_key_editor.py +30 -0
  520. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_nxtomo_editor.py +138 -0
  521. tomwer/tests/orangecontrib/tomwer/widgets/other/tests/test_pythonscript.py +31 -0
  522. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_axis.py +199 -0
  523. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_cast_volumeow.py +58 -0
  524. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_dark_refs_widget.py +136 -0
  525. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_delta_beta_selector.py +15 -0
  526. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py +200 -0
  527. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_helical_prepare_weights_double.py +20 -0
  528. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_volume.py +74 -0
  529. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_widget.py +107 -0
  530. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_sa_delta_beta.py +194 -0
  531. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_saaxis.py +194 -0
  532. tomwer/tests/orangecontrib/tomwer/widgets/stitching/tests/test_zstitching.py +313 -0
  533. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_conditions.py +85 -0
  534. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_darkref.py +225 -0
  535. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_foldertransfert.py +105 -0
  536. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_dataviewerow.py +57 -0
  537. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_diffviewerow.py +39 -0
  538. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_nxtomo_metadata_viewer.py +29 -0
  539. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_radio_stackow.py +31 -0
  540. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sample_movedow.py +46 -0
  541. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sinogram_viewerow.py +31 -0
  542. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_slice_stackow.py +31 -0
  543. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewerow.py +32 -0
  544. tomwer/tests/test_ewoks/test_conversion.py +104 -0
  545. tomwer/tests/test_ewoks/test_single_node_execution.py +87 -0
  546. tomwer/tests/test_ewoks/test_workflows.py +138 -0
  547. tomwer/utils.py +11 -39
  548. tomwer/version.py +2 -2
  549. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/LICENSE +3 -3
  550. tomwer-1.4.0.dist-info/METADATA +337 -0
  551. tomwer-1.4.0.dist-info/RECORD +912 -0
  552. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/WHEEL +1 -1
  553. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/entry_points.txt +1 -0
  554. orangecontrib/tomwer/widgets/control/DataListOW.py +0 -129
  555. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +0 -86
  556. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +0 -182
  557. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +0 -141
  558. orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +0 -115
  559. orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +0 -98
  560. orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +0 -129
  561. orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
  562. orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +0 -82
  563. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
  564. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +0 -143
  565. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +0 -87
  566. orangecontrib/tomwer/widgets/visualization/icons/liveslice.png +0 -0
  567. orangecontrib/tomwer/widgets/visualization/icons/liveslice.svg +0 -110
  568. tomwer/core/log/logger.py +0 -130
  569. tomwer/core/process/control/test/test_volume_link.py +0 -74
  570. tomwer/core/process/control/tomoobjserie.py +0 -12
  571. tomwer/core/process/control/volumesymlink.py +0 -200
  572. tomwer/core/process/icat/createscreenshots.py +0 -100
  573. tomwer/core/process/icat/gallery.py +0 -377
  574. tomwer/core/process/icat/icatbase.py +0 -36
  575. tomwer/core/process/icat/publish.py +0 -228
  576. tomwer/core/process/icat/screenshots.py +0 -27
  577. tomwer/core/process/reconstruction/test/test_darkref.py +0 -60
  578. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +0 -74
  579. tomwer/core/process/test/test_axis.py +0 -309
  580. tomwer/core/process/visualization/liveslice.py +0 -6
  581. tomwer/core/progress.py +0 -100
  582. tomwer/core/scan/test/test_edf.py +0 -53
  583. tomwer/core/scan/test/test_future_scan.py +0 -61
  584. tomwer/core/scan/test/test_h5.py +0 -96
  585. tomwer/core/scan/test/test_process_registration.py +0 -109
  586. tomwer/core/test/test_scanutils.py +0 -53
  587. tomwer/gui/control/emailnotifier.py +0 -174
  588. tomwer/gui/control/serie/seriewaiter.py +0 -28
  589. tomwer/gui/control/test/__init__.py +0 -28
  590. tomwer/gui/control/test/test_datalist.py +0 -96
  591. tomwer/gui/control/test/test_datavalidator.py +0 -54
  592. tomwer/gui/control/test/test_email.py +0 -35
  593. tomwer/gui/control/test/test_process_manager.py +0 -65
  594. tomwer/gui/control/test/test_scanselector.py +0 -67
  595. tomwer/gui/edit/test/__init__.py +0 -28
  596. tomwer/gui/icat/gallery.py +0 -214
  597. tomwer/gui/icat/publish.py +0 -187
  598. tomwer/gui/reconstruction/axis/axis.py +0 -733
  599. tomwer/gui/reconstruction/axis/radioaxis.py +0 -2467
  600. tomwer/gui/stitching/stitching.py +0 -1392
  601. tomwer/gui/test/__init__.py +0 -28
  602. tomwer/gui/test/test_axis_gui.py +0 -34
  603. tomwer/synctools/stacks/edit/darkflatpatch.py +0 -169
  604. tomwer/synctools/stacks/edit/imagekeyeditor.py +0 -135
  605. tomwer/third_part/WaitingOverlay.py +0 -110
  606. tomwer-1.3.26-py3.11-nspkg.pth +0 -1
  607. tomwer-1.3.26.dist-info/METADATA +0 -292
  608. tomwer-1.3.26.dist-info/RECORD +0 -785
  609. tomwer-1.3.26.dist-info/namespace_packages.txt +0 -1
  610. /orangecontrib/tomwer/{widgets/edit/test → tests}/__init__.py +0 -0
  611. {tomwer/core/process/control/test → orangecontrib/tomwer/tutorials/id16b}/__init__.py +0 -0
  612. {tomwer/core/process/icat → orangecontrib/tomwer/widgets/cluster/tests}/__init__.py +0 -0
  613. /orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.png → tomoobjseries.png} +0 -0
  614. {tomwer/core/process/reconstruction/test → orangecontrib/tomwer/widgets/control/tests}/__init__.py +0 -0
  615. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.png +0 -0
  616. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.svg +0 -0
  617. {tomwer/core/process/test → orangecontrib/tomwer/widgets/debugtools/tests}/__init__.py +0 -0
  618. {tomwer/core/scan/test → orangecontrib/tomwer/widgets/edit/tests}/__init__.py +0 -0
  619. {tomwer/core/test → orangecontrib/tomwer/widgets/other/tests}/__init__.py +0 -0
  620. {tomwer/gui/cluster/test → orangecontrib/tomwer/widgets/reconstruction/tests}/__init__.py +0 -0
  621. {tomwer/gui/control/serie → orangecontrib/tomwer/widgets/stitching/tests}/__init__.py +0 -0
  622. {tomwer/gui/icat → orangecontrib/tomwer/widgets/tests}/__init__.py +0 -0
  623. {tomwer/gui/reconstruction/test → orangecontrib/tomwer/widgets/visualization/tests}/__init__.py +0 -0
  624. /tomwer/{synctools/stacks/edit → app/stitching}/__init__.py +0 -0
  625. /tomwer/{synctools/test → core/process/control/tests}/__init__.py +0 -0
  626. /tomwer/core/process/control/{test → tests}/test_email.py +0 -0
  627. /tomwer/core/process/control/{test → tests}/test_h52nx_process.py +0 -0
  628. /tomwer/{third_part → core/process/drac}/__init__.py +0 -0
  629. /tomwer/core/process/reconstruction/{test → tests}/test_axis_params.py +0 -0
  630. /tomwer/core/process/reconstruction/{test → tests}/test_darkref_copy.py +0 -0
  631. /tomwer/core/process/reconstruction/{test → tests}/test_paramsbase.py +0 -0
  632. /tomwer/core/scan/{test → tests}/test_scan.py +0 -0
  633. /tomwer/gui/control/{serie → series}/nxtomoconcatenate.py +0 -0
  634. /tomwer/gui/control/{test → tests}/test_datadiscovery.py +0 -0
  635. /tomwer/gui/control/{test → tests}/test_reducedarkflat_selector.py +0 -0
  636. /tomwer/gui/control/{test → tests}/test_single_tomo_obj.py +0 -0
  637. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_image_key_upgrader.py +0 -0
  638. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,302 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="insitu" description="">
3
+ <nodes>
4
+ <node id="0" name="notifier" qualified_name="orangecontrib.tomwer.widgets.control.NotifierOW.NotifierWidgetOW" project_name="tomwer" version="" title="notifier" position="(1123.0, 407.00000000000006)" />
5
+ <node id="1" name="nabu slice reconstruction" qualified_name="orangecontrib.tomwer.widgets.reconstruction.NabuOW.NabuOW" project_name="tomwer" version="" title="nabu slice reconstruction" position="(751.0, 409.00000000000006)" />
6
+ <node id="2" name="data viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.DataViewerOW.DataViewerOW" project_name="tomwer" version="" title="data viewer" position="(1248.0, 540.0)" />
7
+ <node id="3" name="center of rotation finder" qualified_name="orangecontrib.tomwer.widgets.reconstruction.AxisOW.AxisOW" project_name="tomwer" version="" title="default center of rotation" position="(639.0, 417.00000000000006)" />
8
+ <node id="4" name="Python Script" qualified_name="orangecontrib.tomwer.widgets.other.PythonScriptOW.OWPythonScript" project_name="tomwer" version="" title="create volfloat symlink" position="(1223.0, 680.0)" />
9
+ <node id="5" name="Python Script" qualified_name="orangecontrib.tomwer.widgets.other.PythonScriptOW.OWPythonScript" project_name="tomwer" version="" title="Python Script (old)" position="(358.6666666666667, 240.5)" />
10
+ <node id="6" name="Python Script" qualified_name="orangecontrib.tomwer.widgets.other.PythonScriptOW.OWPythonScript" project_name="tomwer" version="" title="normalize" position="(879.0, 466.00000000000006)" />
11
+ <node id="7" name="data transfer" qualified_name="orangecontrib.tomwer.widgets.control.DataTransfertOW.DataTransfertOW" project_name="tomwer" version="" title="data transfer" position="(1013.0, 585.0)" />
12
+ <node id="8" name="data viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.DataViewerOW.DataViewerOW" project_name="tomwer" version="" title="data viewer (1)" position="(1007.0, 307.0)" />
13
+ <node id="9" name="Python Script" qualified_name="orangecontrib.tomwer.widgets.other.PythonScriptOW.OWPythonScript" project_name="tomwer" version="" title="Python Script (new)" position="(367.0, 360.00000000000006)" />
14
+ <node id="10" name="scan selector" qualified_name="orangecontrib.tomwer.widgets.control.DataSelectorOW.DataSelectorOW" project_name="tomwer" version="" title="scan selector" position="(197.16666666666666, 151.83333333333334)" />
15
+ <node id="11" name="scan watcher" qualified_name="orangecontrib.tomwer.widgets.control.DataWatcherOW.DataWatcherOW" project_name="tomwer" version="" title="scan watcher" position="(185.0, 299.0)" />
16
+ <node id="12" name="reduced darks and flats" qualified_name="orangecontrib.tomwer.widgets.reconstruction.DarkRefAndCopyOW.DarkRefAndCopyOW" project_name="tomwer" version="" title="dark and flat field construction" position="(505.0, 409.00000000000006)" />
17
+ </nodes>
18
+ <links>
19
+ <link id="0" source_node_id="1" sink_node_id="6" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
20
+ <link id="1" source_node_id="7" sink_node_id="0" source_channel="data" sink_channel="tomo_obj" enabled="true" source_channel_id="data" sink_channel_id="tomo_obj" />
21
+ <link id="2" source_node_id="7" sink_node_id="2" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
22
+ <link id="3" source_node_id="7" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
23
+ <link id="4" source_node_id="6" sink_node_id="8" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
24
+ <link id="5" source_node_id="9" sink_node_id="12" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
25
+ <link id="6" source_node_id="12" sink_node_id="3" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
26
+ <link id="7" source_node_id="3" sink_node_id="1" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
27
+ <link id="8" source_node_id="6" sink_node_id="7" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
28
+ <link id="9" source_node_id="11" sink_node_id="9" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
29
+ </links>
30
+ <annotations />
31
+ <thumbnail />
32
+ <node_properties>
33
+ <properties node_id="0" format="literal">{'_muted': False, 'controlAreaVisible': False, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x04n\x00\x00\x01\xfe\x00\x00\x05\xc1\x00\x00\x03-\x00\x00\x04n\x00\x00\x02#\x00\x00\x05\xc1\x00\x00\x03-\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x04n\x00\x00\x02#\x00\x00\x05\xc1\x00\x00\x03-', '__version__': 1}</properties>
34
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': {'preproc': {'flatfield': 1, 'double_flatfield_enabled': 0, 'dff_sigma': 0.0, 'ccd_filter_enabled': 0, 'ccd_filter_threshold': 0.04, 'take_logarithm': True, 'log_min_clip': 1e-06, 'log_max_clip': 10.0, 'sino_rings_correction': 'None', 'sino_rings_options': 'sigma=1.0 ; levels=10 ; padding=False', 'tilt_correction': '', 'autotilt_options': '', 'normalize_srcurrent': 1}, 'reconstruction': {'method': 'FBP', 'slice_plane': 'XY', 'angles_file': '', 'axis_correction_file': '', 'angle_offset': 0.0, 'fbp_filter_type': 'ramlak', 'padding_type': 'edges', 'iterations': 200, 'optim_algorithm': 'chambolle-pock', 'weight_tv': 0.01, 'preconditioning_filter': 1, 'positivity_constraint': 1, 'rotation_axis_position': '', 'translation_movements_file': '', 'clip_outer_circle': 1, 'centered_axis': 1, 'start_x': 0, 'end_x': -1, 'start_y': 0, 'end_y': -1, 'start_z': 0, 'end_z': -1, 'enable_halftomo': 0}, 'dataset': {'binning': 1, 'binning_z': 1, 'projections_subsampling': 1}, 'tomwer_slices': 'middle', 'output': {'file_format': 'vol', 'location': '', 'output_dir_mode': 'same folder as scan'}, 'phase': {'method': 'Paganin', 'delta_beta': '180', 'padding_type': 'edge', 'unsharp_coeff': 3.0, 'unsharp_sigma': 0.8, 'ctf_geometry': ' z1_v=None; z1_h=None; detec_pixel_size=None; magnification=True', 'beam_shape': 'parallel', 'ctf_advanced_params': ' length_scale=1e-05; lim1=1e-05; lim2=0.2; normalize_by_mean=True', 'ctf_translations_file': ''}, 'configuration_level': 'optional', 'mode_locked': True, 'cluster_config': None}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02\xaa\x00\x00\x00\xb4\x00\x00\x083\x00\x00\x04\x12\x00\x00\x02\xaa\x00\x00\x00\xb4\x00\x00\x083\x00\x00\x04\x12\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x02\xaa\x00\x00\x00\xb4\x00\x00\x083\x00\x00\x04\x12', '__version__': 1}</properties>
35
+ <properties node_id="2" format="pickle">gASVPgEAAAAAAAB9lCiMDl92aWV3ZXJfY29uZmlnlH2UKIwEbW9kZZSMI3RvbXdlci5ndWkudmlz
36
+ dWFsaXphdGlvbi5kYXRhdmlld2VylIwMX0Rpc3BsYXlNb2RllJOUjAZzbGljZXOUhZRSlIwJc2xp
37
+ Y2Vfb3B0lGgEjApfU2xpY2VNb2RllJOUjAZsYXRlc3SUhZRSlIwJcmFkaW9fb3B0lGgEjApfUmFk
38
+ aW9Nb2RllJOUjApub3JtYWxpemVklIWUUpR1jBJjb250cm9sQXJlYVZpc2libGWUiIwTc2F2ZWRX
39
+ aWRnZXRHZW9tZXRyeZRDQgHZ0MsAAwAAAAAASAAAAIIAAAeRAAAEpAAAAEgAAACnAAAHkQAABKQA
40
+ AAAAAAAAAAoAAAAASAAAAKcAAAeRAAAEpJSMC19fdmVyc2lvbl9flEsBdS4=
41
+ </properties>
42
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'axis_params': {'MODE': 'centered', 'POSITION_VALUE': -27.7489905564438, 'CALC_INPUT_TYPE': 'transmission_nopag', 'ANGLE_MODE': '0-180', 'USE_SINOGRAM': False, 'SINOGRAM_LINE': '', 'SINOGRAM_SUBSAMPLING': 10, 'AXIS_URL_1': '', 'AXIS_URL_2': '', 'LOOK_AT_STDMAX': False, 'NEAR_WX': 5, 'FINE_STEP_X': 0.1, 'SCALE_IMG2_TO_IMG1': False, 'NEAR_POSITION': 0.0, 'PADDING_MODE': 'edge', 'FLIP_LR': True, 'COMPOSITE_OPTS': {'theta': 10, 'n_subsampling_y': 10, 'oversampling': 4, 'take_log': True, 'near_pos': 0, 'near_width': 20}, 'SIDE': 'center', 'COR_OPTIONS': ''}, 'gui': {'mode_is_lock': True, 'value_is_lock': False, 'auto_update_estimated_cor': False}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02\xda\x00\x00\x00Y\x00\x00\x08\xac\x00\x00\x03U\x00\x00\x02\xda\x00\x00\x00~\x00\x00\x08\xac\x00\x00\x03U\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x02\xda\x00\x00\x00~\x00\x00\x08\xac\x00\x00\x03U', '__version__': 1}</properties>
43
+ <properties node_id="4" format="pickle">gASVwwUAAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU
44
+ SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90
45
+ aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU
46
+ jAZzY3JpcHSUWDUCAABpbXBvcnQgb3MKc2NhbiA9IGluX2RhdGEKCnZvbF9mbG9hdF9wYXRoID0g
47
+ b3MucGF0aC5qb2luKAogICAgb3MucGF0aC5kaXJuYW1lKHNjYW4ucGF0aCksCiAgICAiLnZvbGZs
48
+ b2F0X25vYmFja3VwIiwKKQoKdm9sX2Zsb2F0X3N5bV9saW5rX3BhdGggPSBvcy5wYXRoLmpvaW4o
49
+ CiAgICBvcy5wYXRoLmRpcm5hbWUoc2Nhbi5wYXRoKSwKICAgICJ2b2xmbG9hdCIsCikKCmlmIG5v
50
+ dCBvcy5wYXRoLmV4aXN0cyh2b2xfZmxvYXRfcGF0aCk6CiAgICBwcmludChmImNyZWF0ZXMge3Zv
51
+ bF9mbG9hdF9wYXRofSIpCiAgICBvcy5tYWtlZGlycyh2b2xfZmxvYXRfcGF0aCwgbW9kZT0wbzc3
52
+ NCkKICAgICMgZG9uJ3Qga25vdyB3aHkgYnV0IGZpcnN0IGNyZWF0aW9uIHdpdGggMG83NzQgZmFp
53
+ bHMuLi4KICAgIG9zLmNobW9kKHZvbF9mbG9hdF9wYXRoLCAwbzc3NCkKICAgIAogICAgIyBjcmVh
54
+ dGUgc3ltbGluayBmcm9tIHZvbGZsb2F0IHRvICIudm9sZmxvYXRfbm9iYWNrdXAiCiAgICBvcy5z
55
+ eW1saW5rKHZvbF9mbG9hdF9wYXRoLCB2b2xfZmxvYXRfc3ltX2xpbmtfcGF0aCkKCgpvdXRfZGF0
56
+ YSA9IHNjYW4KlIwFZmxhZ3OUSwCMCGZpbGVuYW1llE51YmGME3NhdmVkV2lkZ2V0R2VvbWV0cnmU
57
+ Q0IB2dDLAAMAAAAAAEgAAABAAAAGBwAAA3YAAABIAAAAQAAABgcAAAN2AAAAAAAAAAAKAAAAAEgA
58
+ AABAAAAGBwAAA3aUjApzY3JpcHRUZXh0lFg1AgAAaW1wb3J0IG9zCnNjYW4gPSBpbl9kYXRhCgp2
59
+ b2xfZmxvYXRfcGF0aCA9IG9zLnBhdGguam9pbigKICAgIG9zLnBhdGguZGlybmFtZShzY2FuLnBh
60
+ dGgpLAogICAgIi52b2xmbG9hdF9ub2JhY2t1cCIsCikKCnZvbF9mbG9hdF9zeW1fbGlua19wYXRo
61
+ ID0gb3MucGF0aC5qb2luKAogICAgb3MucGF0aC5kaXJuYW1lKHNjYW4ucGF0aCksCiAgICAidm9s
62
+ ZmxvYXQiLAopCgppZiBub3Qgb3MucGF0aC5leGlzdHModm9sX2Zsb2F0X3BhdGgpOgogICAgcHJp
63
+ bnQoZiJjcmVhdGVzIHt2b2xfZmxvYXRfcGF0aH0iKQogICAgb3MubWFrZWRpcnModm9sX2Zsb2F0
64
+ X3BhdGgsIG1vZGU9MG83NzQpCiAgICAjIGRvbid0IGtub3cgd2h5IGJ1dCBmaXJzdCBjcmVhdGlv
65
+ biB3aXRoIDBvNzc0IGZhaWxzLi4uCiAgICBvcy5jaG1vZCh2b2xfZmxvYXRfcGF0aCwgMG83NzQp
66
+ CiAgICAKICAgICMgY3JlYXRlIHN5bWxpbmsgZnJvbSB2b2xmbG9hdCB0byAiLnZvbGZsb2F0X25v
67
+ YmFja3VwIgogICAgb3Muc3ltbGluayh2b2xfZmxvYXRfcGF0aCwgdm9sX2Zsb2F0X3N5bV9saW5r
68
+ X3BhdGgpCgoKb3V0X2RhdGEgPSBzY2FuCpSMDXNwbGl0dGVyU3RhdGWUTowLX192ZXJzaW9uX1+U
69
+ SwF1Lg==
70
+ </properties>
71
+ <properties node_id="5" format="pickle">gASVKQ8AAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU
72
+ SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90
73
+ aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU
74
+ jAZzY3JpcHSUWOgGAABpbXBvcnQgc2h1dGlsCmltcG9ydCBvcwpmcm9tIHRvbXdlci5jb3JlLnNj
75
+ YW4uZWRmc2NhbiBpbXBvcnQgRURGVG9tb1NjYW4KZnJvbSBzaWx4LmlvLmRpY3RkdW1wIGltcG9y
76
+ dCBkaWN0dG9pbmksIGxvYWQgYXMgbG9hZF9pbmkKCmRlZiBnZXRfa2V5KGxpbmUpOgogICAgIiIi
77
+ InJldHVybiBrZXkgbmFtZSBvZiBhIC5pbmZvIGZpbGUiIiIKICAgIHJldHVybiBsaW5lLnNwbGl0
78
+ KCI9IilbMF0ucmVwbGFjZSgiICIsICIiKQoKCmRlZiBnZXRfcmF3X2RpY3QoZmlsZV9wYXRoKToK
79
+ ICAgICIiInJldHVybiB0aGUgaW5mbyBmaWxlIG1ldGFkYXRhIGFzIGEgZGljdGlvbmFyeSB3aXRo
80
+ IG1ldGFkYXRhIG5hbWUgYXMga2V5IGFuZCByYXcgbGluZSBhcyB2YWx1ZSIiIgogICAgbWV0YWRh
81
+ dGEgPSB7fQogICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgbW9kZT0iciIpIGFzIGY6CiAgICAgICAg
82
+ bGluZSA9IGYucmVhZGxpbmUoKQogICAgICAgIHdoaWxlIGxpbmU6CiAgICAgICAgICAgIGtleSA9
83
+ IGdldF9rZXkobGluZSkKICAgICAgICAgICAgbWV0YWRhdGFba2V5XSA9IGxpbmUKICAgICAgICAg
84
+ ICAgbGluZSA9IGYucmVhZGxpbmUoKQogICAgcmV0dXJuIG1ldGFkYXRhCgpzY2FuID0gaW5fZGF0
85
+ YQpwcmludCgidHJlYXQiLCBpbl9kYXRhKQoKaWYgaXNpbnN0YW5jZShzY2FuLCBFREZUb21vU2Nh
86
+ bik6CiAgICAjIGNvcHkgdGhlIC5pbmZvIGZpbGUKICAgIGluZm9fZmlsZSA9IHNjYW4uZ2V0X2lu
87
+ Zm9fZmlsZShzY2FuLnBhdGgpCiAgICBwcmludChmIlxuXG5UcnlpbmcgdG8gcmVhZCBpbmZvX2Zp
88
+ bGU6IHtpbmZvX2ZpbGV9IikKICAgICNpbmZvX2ZpbGUgPSBpbmZvX2ZpbGVbNzpdCiAgICBwcmlu
89
+ dChmIlxuRm9yY2UgdG8gcmVhZCAqdGhpcyogaW5mb19maWxlOiB7aW5mb19maWxlfSIpCiAgICBw
90
+ cmludChmIlxuSW5pdGlhbCBkaXN0YW5jZSBpbiBpbnB1dCBmaWxlOiBcdHtnZXRfcmF3X2RpY3Qo
91
+ aW5mb19maWxlKVsnRGlzdGFuY2UnXX0iKQogICAgcmF3X2luZm9fZmlsZSA9IGluZm9fZmlsZVs6
92
+ LTVdICsgIl9yYXcuaW5mbyIKICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyYXdfaW5mb19maWxl
93
+ KToKICAgICAgICAjIGNvcHkgdGhlIG9yaWdpbmFsIGZpbGUgb25seSB0aGUgZmlyc3QgdGltZS4g
94
+ T3RoZXJ3aXNlIHdlIHdpbGwgb3ZlcndyaXRlIHdpdGggYW4gdXBkYXRlZCBmaWxlLgogICAgICAg
95
+ IHNodXRpbC5jb3B5ZmlsZSgKICAgICAgICAgICAgaW5mb19maWxlLAogICAgICAgICAgICByYXdf
96
+ aW5mb19maWxlLAogICAgICAgICkKICAgIG1ldGFkYXRhID0gZ2V0X3Jhd19kaWN0KGluZm9fZmls
97
+ ZSkKICAgICMgb3ZlcndyaXRlIGRpc3RhbmNlIGtleQogICAgbmV3X2Rpc3RhbmNlID0gMC4xMzIx
98
+ MzY5NyoxMDAwICMgMjgwbm0gcGNvMQogICAgI25ld19kaXN0YW5jZSA9IDAuMTM5OSAqMTAwMCAj
99
+ IDI4MG5tIHBjbzIKICAgICNuZXdfZGlzdGFuY2UgPSAwLjEyODczNjkzICoxMDAwICMgMjVubSBw
100
+ Y28xCiAgICAjbmV3X2Rpc3RhbmNlID0gIDAuMDUwMDA2MDUgKiAxMDAwICMgNTBubQogICAgbWV0
101
+ YWRhdGFbIkRpc3RhbmNlIl0gPSAiRGlzdGFuY2U9IFx0XHQiICsgc3RyKG5ld19kaXN0YW5jZSkg
102
+ KyAiXG4iCiAgICB3aXRoIG9wZW4oaW5mb19maWxlLCBtb2RlPSJ3IikgYXMgZjoKICAgICAgICBm
103
+ b3IgXywgbGluZSBpbiBtZXRhZGF0YS5pdGVtcygpOgogICAgICAgICAgICBmLndyaXRlKGxpbmUp
104
+ CiAgICAjIHJlc2V0IGtleSBmb3IgY29oZXJlbmNlCiAgICBzY2FuLl9kaXN0YW5jZSA9IE5vbmUK
105
+ b3V0X2RhdGEgPSBzY2FulIwFZmxhZ3OUSwCMCGZpbGVuYW1llE51YmGME3NhdmVkV2lkZ2V0R2Vv
106
+ bWV0cnmUQ0IB2dDLAAMAAAAAAfoAAAJ5AAAHgQAABpsAAAH6AAACngAAB4EAAAabAAAAAAAAAAAK
107
+ AAAAAfoAAAKeAAAHgQAABpuUjApzY3JpcHRUZXh0lFjoBgAAaW1wb3J0IHNodXRpbAppbXBvcnQg
108
+ b3MKZnJvbSB0b213ZXIuY29yZS5zY2FuLmVkZnNjYW4gaW1wb3J0IEVERlRvbW9TY2FuCmZyb20g
109
+ c2lseC5pby5kaWN0ZHVtcCBpbXBvcnQgZGljdHRvaW5pLCBsb2FkIGFzIGxvYWRfaW5pCgpkZWYg
110
+ Z2V0X2tleShsaW5lKToKICAgICIiIiJyZXR1cm4ga2V5IG5hbWUgb2YgYSAuaW5mbyBmaWxlIiIi
111
+ CiAgICByZXR1cm4gbGluZS5zcGxpdCgiPSIpWzBdLnJlcGxhY2UoIiAiLCAiIikKCgpkZWYgZ2V0
112
+ X3Jhd19kaWN0KGZpbGVfcGF0aCk6CiAgICAiIiJyZXR1cm4gdGhlIGluZm8gZmlsZSBtZXRhZGF0
113
+ YSBhcyBhIGRpY3Rpb25hcnkgd2l0aCBtZXRhZGF0YSBuYW1lIGFzIGtleSBhbmQgcmF3IGxpbmUg
114
+ YXMgdmFsdWUiIiIKICAgIG1ldGFkYXRhID0ge30KICAgIHdpdGggb3BlbihmaWxlX3BhdGgsIG1v
115
+ ZGU9InIiKSBhcyBmOgogICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKICAgICAgICB3aGlsZSBs
116
+ aW5lOgogICAgICAgICAgICBrZXkgPSBnZXRfa2V5KGxpbmUpCiAgICAgICAgICAgIG1ldGFkYXRh
117
+ W2tleV0gPSBsaW5lCiAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKICAgIHJldHVybiBt
118
+ ZXRhZGF0YQoKc2NhbiA9IGluX2RhdGEKcHJpbnQoInRyZWF0IiwgaW5fZGF0YSkKCmlmIGlzaW5z
119
+ dGFuY2Uoc2NhbiwgRURGVG9tb1NjYW4pOgogICAgIyBjb3B5IHRoZSAuaW5mbyBmaWxlCiAgICBp
120
+ bmZvX2ZpbGUgPSBzY2FuLmdldF9pbmZvX2ZpbGUoc2Nhbi5wYXRoKQogICAgcHJpbnQoZiJcblxu
121
+ VHJ5aW5nIHRvIHJlYWQgaW5mb19maWxlOiB7aW5mb19maWxlfSIpCiAgICAjaW5mb19maWxlID0g
122
+ aW5mb19maWxlWzc6XQogICAgcHJpbnQoZiJcbkZvcmNlIHRvIHJlYWQgKnRoaXMqIGluZm9fZmls
123
+ ZToge2luZm9fZmlsZX0iKQogICAgcHJpbnQoZiJcbkluaXRpYWwgZGlzdGFuY2UgaW4gaW5wdXQg
124
+ ZmlsZTogXHR7Z2V0X3Jhd19kaWN0KGluZm9fZmlsZSlbJ0Rpc3RhbmNlJ119IikKICAgIHJhd19p
125
+ bmZvX2ZpbGUgPSBpbmZvX2ZpbGVbOi01XSArICJfcmF3LmluZm8iCiAgICBpZiBub3Qgb3MucGF0
126
+ aC5leGlzdHMocmF3X2luZm9fZmlsZSk6CiAgICAgICAgIyBjb3B5IHRoZSBvcmlnaW5hbCBmaWxl
127
+ IG9ubHkgdGhlIGZpcnN0IHRpbWUuIE90aGVyd2lzZSB3ZSB3aWxsIG92ZXJ3cml0ZSB3aXRoIGFu
128
+ IHVwZGF0ZWQgZmlsZS4KICAgICAgICBzaHV0aWwuY29weWZpbGUoCiAgICAgICAgICAgIGluZm9f
129
+ ZmlsZSwKICAgICAgICAgICAgcmF3X2luZm9fZmlsZSwKICAgICAgICApCiAgICBtZXRhZGF0YSA9
130
+ IGdldF9yYXdfZGljdChpbmZvX2ZpbGUpCiAgICAjIG92ZXJ3cml0ZSBkaXN0YW5jZSBrZXkKICAg
131
+ IG5ld19kaXN0YW5jZSA9IDAuMTMyMTM2OTcqMTAwMCAjIDI4MG5tIHBjbzEKICAgICNuZXdfZGlz
132
+ dGFuY2UgPSAwLjEzOTkgKjEwMDAgIyAyODBubSBwY28yCiAgICAjbmV3X2Rpc3RhbmNlID0gMC4x
133
+ Mjg3MzY5MyAqMTAwMCAjIDI1bm0gcGNvMQogICAgI25ld19kaXN0YW5jZSA9ICAwLjA1MDAwNjA1
134
+ ICogMTAwMCAjIDUwbm0KICAgIG1ldGFkYXRhWyJEaXN0YW5jZSJdID0gIkRpc3RhbmNlPSBcdFx0
135
+ IiArIHN0cihuZXdfZGlzdGFuY2UpICsgIlxuIgogICAgd2l0aCBvcGVuKGluZm9fZmlsZSwgbW9k
136
+ ZT0idyIpIGFzIGY6CiAgICAgICAgZm9yIF8sIGxpbmUgaW4gbWV0YWRhdGEuaXRlbXMoKToKICAg
137
+ ICAgICAgICAgZi53cml0ZShsaW5lKQogICAgIyByZXNldCBrZXkgZm9yIGNvaGVyZW5jZQogICAg
138
+ c2Nhbi5fZGlzdGFuY2UgPSBOb25lCm91dF9kYXRhID0gc2NhbpSMDXNwbGl0dGVyU3RhdGWUTowL
139
+ X192ZXJzaW9uX1+USwF1Lg==
140
+ </properties>
141
+ <properties node_id="6" format="pickle">gASVyw4AAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU
142
+ SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90
143
+ aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU
144
+ jAZzY3JpcHSUWLkGAABpbXBvcnQgb3MKaW1wb3J0IG51bXB5CmZyb20gdG9tb3NjYW4uZmFjdG9y
145
+ eSBpbXBvcnQgRmFjdG9yeQpmcm9tIG5hYnUubWlzYy51dGlscyBpbXBvcnQgcmVzY2FsZV9kYXRh
146
+ CgppZiBpbl9kYXRhIGlzIG5vdCBOb25lOgogICAgc2NhbiA9IGluX2RhdGEKICAgIAogICAgIyB3
147
+ YXJuaW5nOiBzY2FuLmxhdGVzdF9yZWNvbnN0cnVjdGlvbnMgaXMgZGVmaW5lZCBieSB0aGUgJ25h
148
+ YnUgc2xpY2UgcmVjb25zdHJ1Y3Rpb24nLiBTbyBpZiBhIHNjYW4gaXMgbG9hZGVkIGFuZCBub3Qg
149
+ Z28gdHJob3VnaCB0aGlzIHdpZGdldAogICAgIyBoZSB3b24ndCBiZSBhd2FyZSBhYm91dCBzbGlj
150
+ ZSByZWNvbnN0cnVjdGlvbnMKICAgIHByaW50KCJjaGVjayIsIHNjYW4sICIgLSBsYXRlc3RfcmVj
151
+ b25zdHJ1Y3Rpb25zIiwgc2Nhbi5sYXRlc3RfcmVjb25zdHJ1Y3Rpb25zKQogICAgaW5fdm9sdW1l
152
+ cyA9IFsKICAgICAgICBGYWN0b3J5LmNyZWF0ZV90b21vX29iamVjdF9mcm9tX2lkZW50aWZpZXIo
153
+ aWRlbnRpZmllcikgZm9yIGlkZW50aWZpZXIgaW4gc2Nhbi5sYXRlc3RfcmVjb25zdHJ1Y3Rpb25z
154
+ CiAgICBdCgogICAgIyBsb29rcyBsaWtlIHRoZXJlIGlzIHNvbWUgZXh0cmEgdm9sdW1lIGV4aXN0
155
+ aW5nOiBmaWx0ZXIgdGhlbQogICAgcmVzID0gW10KICAgIGZvciB2b2wgaW4gaW5fdm9sdW1lczoK
156
+ ICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh2b2wuZmlsZV9wYXRoKToKICAgICAgICAgICAgcmVz
157
+ LmFwcGVuZCh2b2wpCiAgICAKICAgIGluX3ZvbHVtZXMgPSByZXMKICAgIHByaW50KCJzbGljZXMg
158
+ dG8gYmUgaGFuZGxlZCIsIGluX3ZvbHVtZXMpCgogICAgW3ByaW50KHZvbC5nZXRfaWRlbnRpZmll
159
+ cigpLnRvX3N0cigpKSBmb3Igdm9sIGluIGluX3ZvbHVtZXNdCiAgICAKICAgICMgcmV0cmlldmUg
160
+ dGhlIG1pbiAvIG1heCBmcm9tIHRoZSBmaXJzdCBhY3F1aXNpdGlvbgogICAgaWYgc2Nhbi5wYXRo
161
+ LmVuZHN3aXRoKCJfMV8iKToKICAgICAgICBmb3Igdm9sIGluIGluX3ZvbHVtZXM6CiAgICAgICAg
162
+ ICAgIHByaW50KCJyZWNvbXB1dGUgbWluIGFuZCBtYXggZnJvbSIsIHZvbC5maWxlX3BhdGgpCiAg
163
+ ICAgICAgICAgIGRhdGEgPSB2b2wubG9hZF9kYXRhKCkKICAgICAgICAgICAgbmV3X21pbiwgbmV3
164
+ X21heCA9IG51bXB5LnBlcmNlbnRpbGUoZGF0YVswXSwgKDUsIDk1KSkKCiAgICAjIGFwcGx5IGNh
165
+ c3QgLyByZWNsYW1pbmcgZGF0YQogICAgaWYgIm5ld19taW4iIGluIGdsb2JhbHMoKSBhbmQgIm5l
166
+ d19tYXgiIGluIGdsb2JhbHMoKToKICAgICAgICBmb3Igdm9sIGluIGluX3ZvbHVtZXM6CiAgICAg
167
+ ICAgICAgIHByaW50KCJub3JtYWxpemUiLCB2b2wuZmlsZV9wYXRoKQogICAgICAgICAgICB2b2wu
168
+ bG9hZF9kYXRhKCkKICAgICAgICAgICAgZGF0YSA9IHZvbC5kYXRhCiAgICAgICAgICAgIGRhdGEg
169
+ PSByZXNjYWxlX2RhdGEoCiAgICAgICAgICAgICAgICBkYXRhPWRhdGEsCiAgICAgICAgICAgICAg
170
+ ICBuZXdfbWluPW5ld19taW4sCiAgICAgICAgICAgICAgICBuZXdfbWF4PW5ld19tYXgsCiAgICAg
171
+ ICAgICAgICAgICBkYXRhX21pbj1kYXRhLm1pbigpLAogICAgICAgICAgICAgICAgZGF0YV9tYXg9
172
+ ZGF0YS5tYXgoKSwKICAgICAgICAgICAgKQogICAgICAgICAgICB2b2wuZGF0YSA9IGRhdGEKICAg
173
+ ICAgICAgICAgdm9sLnNhdmVfZGF0YSgpCiAgICAgICAgCiAgICBvdXRfZGF0YSA9IHNjYW4KZWxz
174
+ ZToKICAgIG91dF9kYXRhID0gaW5fZGF0YZSMBWZsYWdzlEsAjAhmaWxlbmFtZZROdWJhjBNzYXZl
175
+ ZFdpZGdldEdlb21ldHJ5lENCAdnQywADAAAAAAHKAAAA5wAACf8AAAWfAAABygAAAOcAAAn/AAAF
176
+ nwAAAAAAAAAACgAAAAHKAAAA5wAACf8AAAWflIwKc2NyaXB0VGV4dJRYuQYAAGltcG9ydCBvcwpp
177
+ bXBvcnQgbnVtcHkKZnJvbSB0b21vc2Nhbi5mYWN0b3J5IGltcG9ydCBGYWN0b3J5CmZyb20gbmFi
178
+ dS5taXNjLnV0aWxzIGltcG9ydCByZXNjYWxlX2RhdGEKCmlmIGluX2RhdGEgaXMgbm90IE5vbmU6
179
+ CiAgICBzY2FuID0gaW5fZGF0YQogICAgCiAgICAjIHdhcm5pbmc6IHNjYW4ubGF0ZXN0X3JlY29u
180
+ c3RydWN0aW9ucyBpcyBkZWZpbmVkIGJ5IHRoZSAnbmFidSBzbGljZSByZWNvbnN0cnVjdGlvbicu
181
+ IFNvIGlmIGEgc2NhbiBpcyBsb2FkZWQgYW5kIG5vdCBnbyB0cmhvdWdoIHRoaXMgd2lkZ2V0CiAg
182
+ ICAjIGhlIHdvbid0IGJlIGF3YXJlIGFib3V0IHNsaWNlIHJlY29uc3RydWN0aW9ucwogICAgcHJp
183
+ bnQoImNoZWNrIiwgc2NhbiwgIiAtIGxhdGVzdF9yZWNvbnN0cnVjdGlvbnMiLCBzY2FuLmxhdGVz
184
+ dF9yZWNvbnN0cnVjdGlvbnMpCiAgICBpbl92b2x1bWVzID0gWwogICAgICAgIEZhY3RvcnkuY3Jl
185
+ YXRlX3RvbW9fb2JqZWN0X2Zyb21faWRlbnRpZmllcihpZGVudGlmaWVyKSBmb3IgaWRlbnRpZmll
186
+ ciBpbiBzY2FuLmxhdGVzdF9yZWNvbnN0cnVjdGlvbnMKICAgIF0KCiAgICAjIGxvb2tzIGxpa2Ug
187
+ dGhlcmUgaXMgc29tZSBleHRyYSB2b2x1bWUgZXhpc3Rpbmc6IGZpbHRlciB0aGVtCiAgICByZXMg
188
+ PSBbXQogICAgZm9yIHZvbCBpbiBpbl92b2x1bWVzOgogICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
189
+ KHZvbC5maWxlX3BhdGgpOgogICAgICAgICAgICByZXMuYXBwZW5kKHZvbCkKICAgIAogICAgaW5f
190
+ dm9sdW1lcyA9IHJlcwogICAgcHJpbnQoInNsaWNlcyB0byBiZSBoYW5kbGVkIiwgaW5fdm9sdW1l
191
+ cykKCiAgICBbcHJpbnQodm9sLmdldF9pZGVudGlmaWVyKCkudG9fc3RyKCkpIGZvciB2b2wgaW4g
192
+ aW5fdm9sdW1lc10KICAgIAogICAgIyByZXRyaWV2ZSB0aGUgbWluIC8gbWF4IGZyb20gdGhlIGZp
193
+ cnN0IGFjcXVpc2l0aW9uCiAgICBpZiBzY2FuLnBhdGguZW5kc3dpdGgoIl8xXyIpOgogICAgICAg
194
+ IGZvciB2b2wgaW4gaW5fdm9sdW1lczoKICAgICAgICAgICAgcHJpbnQoInJlY29tcHV0ZSBtaW4g
195
+ YW5kIG1heCBmcm9tIiwgdm9sLmZpbGVfcGF0aCkKICAgICAgICAgICAgZGF0YSA9IHZvbC5sb2Fk
196
+ X2RhdGEoKQogICAgICAgICAgICBuZXdfbWluLCBuZXdfbWF4ID0gbnVtcHkucGVyY2VudGlsZShk
197
+ YXRhWzBdLCAoNSwgOTUpKQoKICAgICMgYXBwbHkgY2FzdCAvIHJlY2xhbWluZyBkYXRhCiAgICBp
198
+ ZiAibmV3X21pbiIgaW4gZ2xvYmFscygpIGFuZCAibmV3X21heCIgaW4gZ2xvYmFscygpOgogICAg
199
+ ICAgIGZvciB2b2wgaW4gaW5fdm9sdW1lczoKICAgICAgICAgICAgcHJpbnQoIm5vcm1hbGl6ZSIs
200
+ IHZvbC5maWxlX3BhdGgpCiAgICAgICAgICAgIHZvbC5sb2FkX2RhdGEoKQogICAgICAgICAgICBk
201
+ YXRhID0gdm9sLmRhdGEKICAgICAgICAgICAgZGF0YSA9IHJlc2NhbGVfZGF0YSgKICAgICAgICAg
202
+ ICAgICAgIGRhdGE9ZGF0YSwKICAgICAgICAgICAgICAgIG5ld19taW49bmV3X21pbiwKICAgICAg
203
+ ICAgICAgICAgIG5ld19tYXg9bmV3X21heCwKICAgICAgICAgICAgICAgIGRhdGFfbWluPWRhdGEu
204
+ bWluKCksCiAgICAgICAgICAgICAgICBkYXRhX21heD1kYXRhLm1heCgpLAogICAgICAgICAgICAp
205
+ CiAgICAgICAgICAgIHZvbC5kYXRhID0gZGF0YQogICAgICAgICAgICB2b2wuc2F2ZV9kYXRhKCkK
206
+ ICAgICAgICAKICAgIG91dF9kYXRhID0gc2NhbgplbHNlOgogICAgb3V0X2RhdGEgPSBpbl9kYXRh
207
+ lIwNc3BsaXR0ZXJTdGF0ZZROjAtfX3ZlcnNpb25fX5RLAXUu
208
+ </properties>
209
+ <properties node_id="7" format="literal">{'controlAreaVisible': True, 'dest_dir_settings': None, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x04&gt;\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8\x00\x00\x04&gt;\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x04&gt;\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8', '__version__': 1}</properties>
210
+ <properties node_id="8" format="pickle">gASVPgEAAAAAAAB9lCiMDl92aWV3ZXJfY29uZmlnlH2UKIwEbW9kZZSMI3RvbXdlci5ndWkudmlz
211
+ dWFsaXphdGlvbi5kYXRhdmlld2VylIwMX0Rpc3BsYXlNb2RllJOUjAZzbGljZXOUhZRSlIwJc2xp
212
+ Y2Vfb3B0lGgEjApfU2xpY2VNb2RllJOUjAZsYXRlc3SUhZRSlIwJcmFkaW9fb3B0lGgEjApfUmFk
213
+ aW9Nb2RllJOUjApub3JtYWxpemVklIWUUpR1jBJjb250cm9sQXJlYVZpc2libGWUiIwTc2F2ZWRX
214
+ aWRnZXRHZW9tZXRyeZRDQgHZ0MsAAwAAAAABBgAAAJgAAAhPAAAEugAAAQYAAAC9AAAITwAABLoA
215
+ AAAAAAAAAAoAAAABBgAAAL0AAAhPAAAEupSMC19fdmVyc2lvbl9flEsBdS4=
216
+ </properties>
217
+ <properties node_id="9" format="pickle">gASV8hAAAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU
218
+ SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90
219
+ aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU
220
+ jAZzY3JpcHSUWLwHAABmcm9tIHRvbXdlci5jb3JlLnNjYW4uZWRmc2NhbiBpbXBvcnQgRURGVG9t
221
+ b1NjYW4KaW1wb3J0IG9zCmltcG9ydCBzaHV0aWwKaW1wb3J0IHNpbHguaW8KCmRlZiBnZXRfa2V5
222
+ KGxpbmUpOgogICAgIiIiInJldHVybiBrZXkgbmFtZSBvZiBhIC5pbmZvIGZpbGUiIiIKICAgIHJl
223
+ dHVybiBsaW5lLnNwbGl0KCI9IilbMF0ucmVwbGFjZSgiICIsICIiKQoKZGVmIGdldF9yYXdfZGlj
224
+ dChmaWxlX3BhdGgpOgogICAgIiIicmV0dXJuIHRoZSBpbmZvIGZpbGUgbWV0YWRhdGEgYXMgYSBk
225
+ aWN0aW9uYXJ5IHdpdGggbWV0YWRhdGEgbmFtZSBhcyBrZXkgYW5kIHJhdyBsaW5lIGFzIHZhbHVl
226
+ IiIiCiAgICBtZXRhZGF0YSA9IHt9CiAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCBtb2RlPSJyIikg
227
+ YXMgZjoKICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCiAgICAgICAgd2hpbGUgbGluZToKICAg
228
+ ICAgICAgICAga2V5ID0gZ2V0X2tleShsaW5lKQogICAgICAgICAgICBtZXRhZGF0YVtrZXldID0g
229
+ bGluZQogICAgICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCiAgICByZXR1cm4gbWV0YWRhdGEK
230
+ CiMgUmVhZCB0aGUgZGF0YQpzY2FuID0gaW5fZGF0YQpwcmludCgiV29ya2luZyBvbjogIiwgaW5f
231
+ ZGF0YSkKaWYgaXNpbnN0YW5jZShzY2FuLCBFREZUb21vU2Nhbik6CiAgICBpbmZvX2ZpbGUgPSBz
232
+ Y2FuLmdldF9pbmZvX2ZpbGUoc2Nhbi5wYXRoKQogICAgcHJpbnQoZiJcblJlYWRpbmcgKnRoaXMq
233
+ IGluZm9fZmlsZToge2luZm9fZmlsZX0iKQogICAgcmF3X2luZm9fZmlsZSA9IGluZm9fZmlsZVs6
234
+ LTVdICsgIl9yYXcuaW5mbyIKICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyYXdfaW5mb19maWxl
235
+ KToKICAgICAgICAjIGNvcHkgdGhlIG9yaWdpbmFsIGZpbGUgb25seSB0aGUgZmlyc3QgdGltZS4g
236
+ T3RoZXJ3aXNlIHdlIHdpbGwgb3ZlcndyaXRlIHdpdGggYW4gdXBkYXRlZCBmaWxlLgogICAgICAg
237
+ IHNodXRpbC5jb3B5ZmlsZSgKICAgICAgICAgICAgaW5mb19maWxlLAogICAgICAgICAgICByYXdf
238
+ aW5mb19maWxlLAogICAgICAgICkKICAgIG1ldGFkYXRhID0gZ2V0X3Jhd19kaWN0KGluZm9fZmls
239
+ ZSkKICAgIAogICAgIyBSZWFkIHRoZSBpbWFnZXMKICAgIGVkZk5hbWUgPSBpbmZvX2ZpbGVbOi01
240
+ XSsiMDA1MC5lZGYiCiAgICBlZGYgPSBzaWx4LmlvLm9wZW4oZWRmTmFtZSkKICAgICMgUmVhZCB0
241
+ aGUgcGFyYW1ldGVycyBmcm9tIHRoZSBpbWFnZQogICAgY3gxID0gZWRmWyJzY2FuXzAvaW5zdHJ1
242
+ bWVudC9wb3NpdGlvbmVycy9jeCJdWzBdICNtbQogICAgc3gxID0gZWRmWyJzY2FuXzAvaW5zdHJ1
243
+ bWVudC9wb3NpdGlvbmVycy9zeCJdWzBdICNtbQogICAgcHhfbWFnbmlmaWVkX2VkZiA9IGVkZlsi
244
+ c2Nhbl8wL2luc3RydW1lbnQvZGV0ZWN0b3JfMC9vdGhlcnMvcGl4ZWxfc2l6ZSJdWzBdIC8gMWU2
245
+ CiAgICBweDEgPSBlZGZbInNjYW5fMC9pbnN0cnVtZW50L2RldGVjdG9yXzAvb3RoZXJzL29wdGlj
246
+ X3VzZWQiXVswXSAvIDFlNgogICAgbWFnID0gcHgxIC8gcHhfbWFnbmlmaWVkX2VkZgogICAgc3gw
247
+ ID0gc3gxIC0gY3gxIC8gbWFnICMgbW0KICAgIHoxID0gKHN4MSAtIHN4MCkgIyBtbQogICAgejIg
248
+ PSAoY3gxIC0gc3gxICsgc3gwKSAjIG1tCiAgICBtYWduaWZpY2F0aW9uID0gKHoxICsgejIpIC8g
249
+ ejEKICAgIGRpc3RhbmNlID0gejIgLyBtYWduaWZpY2F0aW9uICMgbW0KICAgIHByaW50KCJDb21w
250
+ dXRlZCBkaXN0YW5jZSBpbiBbbW1dOiAiLCBkaXN0YW5jZSkKICAgIG1ldGFkYXRhWyJEaXN0YW5j
251
+ ZSJdID0gIkRpc3RhbmNlPSBcdFx0ICIgKyBzdHIoZGlzdGFuY2UpICsgIlxuIgoKICAgIHdpdGgg
252
+ b3BlbihpbmZvX2ZpbGUsIG1vZGU9InciKSBhcyBmOgogICAgICAgIGZvciBfLCBsaW5lIGluIG1l
253
+ dGFkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgIGYud3JpdGUobGluZSkKICAgICMgcmVzZXQga2V5
254
+ IGZvciBjb2hlcmVuY2UKICAgIHNjYW4uX2Rpc3RhbmNlID0gTm9uZQpvdXRfZGF0YSA9IHNjYW6U
255
+ jAVmbGFnc5RLAIwIZmlsZW5hbWWUTnViYYwTc2F2ZWRXaWRnZXRHZW9tZXRyeZRDQgHZ0MsAAwAA
256
+ AAAMQAAAATEAABCdAAAEwQAADEAAAAFWAAAQnQAABMEAAAABAAAAAAoAAAAMQAAAAVYAABCdAAAE
257
+ wZSMCnNjcmlwdFRleHSUWLwHAABmcm9tIHRvbXdlci5jb3JlLnNjYW4uZWRmc2NhbiBpbXBvcnQg
258
+ RURGVG9tb1NjYW4KaW1wb3J0IG9zCmltcG9ydCBzaHV0aWwKaW1wb3J0IHNpbHguaW8KCmRlZiBn
259
+ ZXRfa2V5KGxpbmUpOgogICAgIiIiInJldHVybiBrZXkgbmFtZSBvZiBhIC5pbmZvIGZpbGUiIiIK
260
+ ICAgIHJldHVybiBsaW5lLnNwbGl0KCI9IilbMF0ucmVwbGFjZSgiICIsICIiKQoKZGVmIGdldF9y
261
+ YXdfZGljdChmaWxlX3BhdGgpOgogICAgIiIicmV0dXJuIHRoZSBpbmZvIGZpbGUgbWV0YWRhdGEg
262
+ YXMgYSBkaWN0aW9uYXJ5IHdpdGggbWV0YWRhdGEgbmFtZSBhcyBrZXkgYW5kIHJhdyBsaW5lIGFz
263
+ IHZhbHVlIiIiCiAgICBtZXRhZGF0YSA9IHt9CiAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCBtb2Rl
264
+ PSJyIikgYXMgZjoKICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCiAgICAgICAgd2hpbGUgbGlu
265
+ ZToKICAgICAgICAgICAga2V5ID0gZ2V0X2tleShsaW5lKQogICAgICAgICAgICBtZXRhZGF0YVtr
266
+ ZXldID0gbGluZQogICAgICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCiAgICByZXR1cm4gbWV0
267
+ YWRhdGEKCiMgUmVhZCB0aGUgZGF0YQpzY2FuID0gaW5fZGF0YQpwcmludCgiV29ya2luZyBvbjog
268
+ IiwgaW5fZGF0YSkKaWYgaXNpbnN0YW5jZShzY2FuLCBFREZUb21vU2Nhbik6CiAgICBpbmZvX2Zp
269
+ bGUgPSBzY2FuLmdldF9pbmZvX2ZpbGUoc2Nhbi5wYXRoKQogICAgcHJpbnQoZiJcblJlYWRpbmcg
270
+ KnRoaXMqIGluZm9fZmlsZToge2luZm9fZmlsZX0iKQogICAgcmF3X2luZm9fZmlsZSA9IGluZm9f
271
+ ZmlsZVs6LTVdICsgIl9yYXcuaW5mbyIKICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyYXdfaW5m
272
+ b19maWxlKToKICAgICAgICAjIGNvcHkgdGhlIG9yaWdpbmFsIGZpbGUgb25seSB0aGUgZmlyc3Qg
273
+ dGltZS4gT3RoZXJ3aXNlIHdlIHdpbGwgb3ZlcndyaXRlIHdpdGggYW4gdXBkYXRlZCBmaWxlLgog
274
+ ICAgICAgIHNodXRpbC5jb3B5ZmlsZSgKICAgICAgICAgICAgaW5mb19maWxlLAogICAgICAgICAg
275
+ ICByYXdfaW5mb19maWxlLAogICAgICAgICkKICAgIG1ldGFkYXRhID0gZ2V0X3Jhd19kaWN0KGlu
276
+ Zm9fZmlsZSkKICAgIAogICAgIyBSZWFkIHRoZSBpbWFnZXMKICAgIGVkZk5hbWUgPSBpbmZvX2Zp
277
+ bGVbOi01XSsiMDA1MC5lZGYiCiAgICBlZGYgPSBzaWx4LmlvLm9wZW4oZWRmTmFtZSkKICAgICMg
278
+ UmVhZCB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSBpbWFnZQogICAgY3gxID0gZWRmWyJzY2FuXzAv
279
+ aW5zdHJ1bWVudC9wb3NpdGlvbmVycy9jeCJdWzBdICNtbQogICAgc3gxID0gZWRmWyJzY2FuXzAv
280
+ aW5zdHJ1bWVudC9wb3NpdGlvbmVycy9zeCJdWzBdICNtbQogICAgcHhfbWFnbmlmaWVkX2VkZiA9
281
+ IGVkZlsic2Nhbl8wL2luc3RydW1lbnQvZGV0ZWN0b3JfMC9vdGhlcnMvcGl4ZWxfc2l6ZSJdWzBd
282
+ IC8gMWU2CiAgICBweDEgPSBlZGZbInNjYW5fMC9pbnN0cnVtZW50L2RldGVjdG9yXzAvb3RoZXJz
283
+ L29wdGljX3VzZWQiXVswXSAvIDFlNgogICAgbWFnID0gcHgxIC8gcHhfbWFnbmlmaWVkX2VkZgog
284
+ ICAgc3gwID0gc3gxIC0gY3gxIC8gbWFnICMgbW0KICAgIHoxID0gKHN4MSAtIHN4MCkgIyBtbQog
285
+ ICAgejIgPSAoY3gxIC0gc3gxICsgc3gwKSAjIG1tCiAgICBtYWduaWZpY2F0aW9uID0gKHoxICsg
286
+ ejIpIC8gejEKICAgIGRpc3RhbmNlID0gejIgLyBtYWduaWZpY2F0aW9uICMgbW0KICAgIHByaW50
287
+ KCJDb21wdXRlZCBkaXN0YW5jZSBpbiBbbW1dOiAiLCBkaXN0YW5jZSkKICAgIG1ldGFkYXRhWyJE
288
+ aXN0YW5jZSJdID0gIkRpc3RhbmNlPSBcdFx0ICIgKyBzdHIoZGlzdGFuY2UpICsgIlxuIgoKICAg
289
+ IHdpdGggb3BlbihpbmZvX2ZpbGUsIG1vZGU9InciKSBhcyBmOgogICAgICAgIGZvciBfLCBsaW5l
290
+ IGluIG1ldGFkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgIGYud3JpdGUobGluZSkKICAgICMgcmVz
291
+ ZXQga2V5IGZvciBjb2hlcmVuY2UKICAgIHNjYW4uX2Rpc3RhbmNlID0gTm9uZQpvdXRfZGF0YSA9
292
+ IHNjYW6UjA1zcGxpdHRlclN0YXRllEMfAAAA/wAAAAEAAAACAAACdgAAAM8B/////wEAAAACAJSM
293
+ C19fdmVyc2lvbl9flEsBdS4=
294
+ </properties>
295
+ <properties node_id="10" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02\xac\x00\x00\x03:\x00\x00\x06\x17\x00\x00\x04\xe8\x00\x00\x02\xac\x00\x00\x03_\x00\x00\x06\x17\x00\x00\x04\xe8\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x02\xac\x00\x00\x03_\x00\x00\x06\x17\x00\x00\x04\xe8', '__version__': 1}</properties>
296
+ <properties node_id="11" format="literal">{'acquisitionMethod': ('[scan].xml',), 'controlAreaVisible': True, 'folderObserved': '/lbsram/data', 'linuxFilePatternSetting': None, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x0c\xf3\x00\x00\x00|\x00\x00\x13\x7f\x00\x00\x02n\x00\x00\x0c\xf3\x00\x00\x00\xa1\x00\x00\x13\x7f\x00\x00\x02n\x00\x00\x00\x01\x00\x00\x00\x00\n\x00\x00\x00\x0c\xf3\x00\x00\x00\xa1\x00\x00\x13\x7f\x00\x00\x02n', '__version__': 1}</properties>
297
+ <properties node_id="12" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': {'DOWHEN': 'before', 'DARKCAL': 'mean', 'DARKOVE': 0, 'DARKRMV': 0, 'DKFILE': 'darkend[0-9]{3,4}', 'REFSCAL': 'median', 'REFSOVE': 0, 'REFSRMV': 0, 'RFFILE': 'ref*.*[0-9]{3,4}_[0-9]{3,4}'}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x01+\x00\x00\x01\x99\x00\x00\x08\xd4\x00\x00\x04\x06\x00\x00\x01+\x00\x00\x01\x99\x00\x00\x08\xd4\x00\x00\x04\x06\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01+\x00\x00\x01\x99\x00\x00\x08\xd4\x00\x00\x04\x06', '__version__': 1}</properties>
298
+ </node_properties>
299
+ <session_state>
300
+ <window_groups />
301
+ </session_state>
302
+ </scheme>
@@ -0,0 +1,218 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="normalization" description="">
3
+ <nodes>
4
+ <node id="0" name="scan watcher" qualified_name="orangecontrib.tomwer.widgets.control.DataWatcherOW.DataWatcherOW" project_name="tomwer" version="" title="scan watcher" position="(45.0, 212.0)" />
5
+ <node id="1" name="reduced darks and flats" qualified_name="orangecontrib.tomwer.widgets.reconstruction.DarkRefAndCopyOW.DarkRefAndCopyOW" project_name="tomwer" version="" title="dark and flat field construction" position="(338.0, 228.0)" />
6
+ <node id="2" name="scan selector" qualified_name="orangecontrib.tomwer.widgets.control.DataSelectorOW.DataSelectorOW" project_name="tomwer" version="" title="scan selector" position="(84.0, 57.0)" />
7
+ <node id="3" name="notifier" qualified_name="orangecontrib.tomwer.widgets.control.NotifierOW.NotifierWidgetOW" project_name="tomwer" version="" title="notifier" position="(953.0, 342.0)" />
8
+ <node id="4" name="nabu slice reconstruction" qualified_name="orangecontrib.tomwer.widgets.reconstruction.NabuOW.NabuOW" project_name="tomwer" version="" title="nabu slice reconstruction" position="(581.0, 344.0)" />
9
+ <node id="5" name="data viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.DataViewerOW.DataViewerOW" project_name="tomwer" version="" title="data viewer" position="(1078.0, 475.0)" />
10
+ <node id="6" name="center of rotation finder" qualified_name="orangecontrib.tomwer.widgets.reconstruction.AxisOW.AxisOW" project_name="tomwer" version="" title="default center of rotation" position="(460.0, 307.0)" />
11
+ <node id="7" name="Python Script" qualified_name="orangecontrib.tomwer.widgets.other.PythonScriptOW.OWPythonScript" project_name="tomwer" version="" title="create volfloat symlink" position="(1053.0, 615.0)" />
12
+ <node id="8" name="Python Script" qualified_name="orangecontrib.tomwer.widgets.other.PythonScriptOW.OWPythonScript" project_name="tomwer" version="" title="Python Script" position="(221.0, 157.0)" />
13
+ <node id="9" name="Python Script" qualified_name="orangecontrib.tomwer.widgets.other.PythonScriptOW.OWPythonScript" project_name="tomwer" version="" title="normalize" position="(709.0, 401.0)" />
14
+ <node id="10" name="data transfer" qualified_name="orangecontrib.tomwer.widgets.control.DataTransfertOW.DataTransfertOW" project_name="tomwer" version="" title="data transfer" position="(844.0, 520.0)" />
15
+ <node id="11" name="slice stack" qualified_name="orangecontrib.tomwer.widgets.visualization.SliceStackOW.SlicesStackOW" project_name="tomwer" version="" title="slice stack" position="(792.0, 691.0)" />
16
+ </nodes>
17
+ <links>
18
+ <link id="0" source_node_id="1" sink_node_id="6" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
19
+ <link id="1" source_node_id="8" sink_node_id="1" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
20
+ <link id="2" source_node_id="4" sink_node_id="9" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
21
+ <link id="3" source_node_id="6" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
22
+ <link id="4" source_node_id="9" sink_node_id="10" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
23
+ <link id="5" source_node_id="10" sink_node_id="3" source_channel="data" sink_channel="tomo_obj" enabled="true" source_channel_id="data" sink_channel_id="tomo_obj" />
24
+ <link id="6" source_node_id="10" sink_node_id="5" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
25
+ <link id="7" source_node_id="10" sink_node_id="7" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
26
+ <link id="8" source_node_id="9" sink_node_id="11" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
27
+ <link id="9" source_node_id="0" sink_node_id="8" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
28
+ </links>
29
+ <annotations />
30
+ <thumbnail />
31
+ <node_properties>
32
+ <properties node_id="0" format="literal">{'acquisitionMethod': ('[scan].xml',), 'controlAreaVisible': True, 'folderObserved': '/lbsram/data/', 'linuxFilePatternSetting': '', 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02I\x00\x00\x01h\x00\x00\x056\x00\x00\x03G\x00\x00\x02I\x00\x00\x01h\x00\x00\x056\x00\x00\x03G\x00\x00\x00\x00\x00\x00\x00\x00\x07\x80\x00\x00\x02I\x00\x00\x01h\x00\x00\x056\x00\x00\x03G', '__version__': 1}</properties>
33
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': {'DOWHEN': 'before', 'DARKCAL': 'Average', 'DARKOVE': 1, 'DARKRMV': 0, 'DKFILE': 'darkend[0-9]{3,4}', 'REFSCAL': 'Median', 'REFSOVE': 1, 'REFSRMV': 0, 'RFFILE': 'ref*.*[0-9]{3,4}_[0-9]{3,4}'}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x00H\x00\x00\x00\x1b\x00\x00\x03\xef\x00\x00\x02\x1f\x00\x00\x00H\x00\x00\x00@\x00\x00\x03\xef\x00\x00\x02\x1f\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x03\xef\x00\x00\x02\x1f', '__version__': 1}</properties>
34
+ <properties node_id="2" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02\x80\x00\x00\x01C\x00\x00\x04\xff\x00\x00\x03G\x00\x00\x02\x80\x00\x00\x01h\x00\x00\x04\xff\x00\x00\x03G\x00\x00\x00\x00\x00\x00\x00\x00\x07\x80\x00\x00\x02\x80\x00\x00\x01h\x00\x00\x04\xff\x00\x00\x03G', '__version__': 1}</properties>
35
+ <properties node_id="3" format="literal">{'_muted': False, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
36
+ <properties node_id="4" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': {'preproc': {'flatfield': 1, 'double_flatfield_enabled': 0, 'dff_sigma': 0.0, 'ccd_filter_enabled': 0, 'ccd_filter_threshold': 0.04, 'take_logarithm': True, 'log_min_clip': 1e-06, 'log_max_clip': 10.0, 'sino_rings_correction': 'None', 'sino_rings_options': 'sigma=1.0 ; levels=10', 'tilt_correction': '', 'autotilt_options': ''}, 'reconstruction': {'method': 'FBP', 'angles_file': '', 'axis_correction_file': '', 'angle_offset': 0.0, 'fbp_filter_type': 'ramlak', 'padding_type': 'edges', 'iterations': 200, 'optim_algorithm': 'chambolle-pock', 'weight_tv': 0.01, 'preconditioning_filter': 1, 'positivity_constraint': 1, 'rotation_axis_position': '', 'translation_movements_file': '', 'clip_outer_circle': 1, 'start_x': 0, 'end_x': -1, 'start_y': 0, 'end_y': -1, 'start_z': 0, 'end_z': -1, 'enable_halftomo': 0}, 'dataset': {'binning': 1, 'binning_z': 1, 'projections_subsampling': 1}, 'tomwer_slices': 'middle', 'output': {'file_format': 'vol', 'location': ''}, 'phase': {'method': 'Paganin', 'delta_beta': '500', 'padding_type': 'edge', 'unsharp_coeff': 3.0, 'unsharp_sigma': 0.65}, 'configuration_level': 'optional', 'mode_locked': False, 'cluster_config': None}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e', '__version__': 1}</properties>
37
+ <properties node_id="5" format="pickle">gASVWQEAAAAAAAB9lCiMDl92aWV3ZXJfY29uZmlnlH2UKIwEbW9kZZSMCGJ1aWx0aW5zlIwHZ2V0
38
+ YXR0cpSTlIwjdG9td2VyLmd1aS52aXN1YWxpemF0aW9uLmRhdGF2aWV3ZXKUjAxfRGlzcGxheU1v
39
+ ZGWUk5SMBlNMSUNFU5SGlFKUjAlzbGljZV9vcHSUaAZoB4wKX1NsaWNlTW9kZZSTlIwGTEFURVNU
40
+ lIaUUpSMCXJhZGlvX29wdJRoBmgHjApfUmFkaW9Nb2RllJOUjApOT1JNQUxJWkVElIaUUpR1jBJj
41
+ b250cm9sQXJlYVZpc2libGWUiIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZRDQgHZ0MsAAwAAAAAASAAA
42
+ AIIAAAeRAAAEpAAAAEgAAACnAAAHkQAABKQAAAAAAAAAAAoAAAAASAAAAKcAAAeRAAAEpJSMC19f
43
+ dmVyc2lvbl9flEsBdS4=
44
+ </properties>
45
+ <properties node_id="6" format="literal">{'_ewoks_default_inputs': {'data': None, 'axis_params': {'MODE': 'centered', 'POSITION_VALUE': -11.37684057962989, 'CALC_INPUT_TYPE': 'transmission_nopag', 'ANGLE_MODE': '0-180', 'USE_SINOGRAM': False, 'SINOGRAM_LINE': '', 'SINOGRAM_SUBSAMPLING': 10, 'AXIS_URL_1': '', 'AXIS_URL_2': '', 'LOOK_AT_STDMAX': False, 'NEAR_WX': 10, 'FINE_STEP_X': 0.1, 'SCALE_IMG2_TO_IMG1': False, 'NEAR_POSITION': 0.0, 'PADDING_MODE': 'edge', 'FLIP_LR': True, 'COMPOSITE_OPTS': {'theta': 10, 'oversampling': 4, 'n_subsampling_y': 10, 'take_log': True, 'near_pos': 0.0, 'near_width': 20}, 'SIDE': 'left', 'COR_OPTIONS': ''}, 'gui': {'mode_is_lock': True, 'value_is_lock': False, 'auto_update_estimated_cor': True}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x00H\x00\x00\x00\x1b\x00\x00\x05]\x00\x00\x03\x17\x00\x00\x00H\x00\x00\x00@\x00\x00\x05]\x00\x00\x03\x17\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x05]\x00\x00\x03\x17', '__version__': 1}</properties>
46
+ <properties node_id="7" format="pickle">gASVwwUAAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU
47
+ SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90
48
+ aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU
49
+ jAZzY3JpcHSUWDUCAABpbXBvcnQgb3MKc2NhbiA9IGluX2RhdGEKCnZvbF9mbG9hdF9wYXRoID0g
50
+ b3MucGF0aC5qb2luKAogICAgb3MucGF0aC5kaXJuYW1lKHNjYW4ucGF0aCksCiAgICAiLnZvbGZs
51
+ b2F0X25vYmFja3VwIiwKKQoKdm9sX2Zsb2F0X3N5bV9saW5rX3BhdGggPSBvcy5wYXRoLmpvaW4o
52
+ CiAgICBvcy5wYXRoLmRpcm5hbWUoc2Nhbi5wYXRoKSwKICAgICJ2b2xmbG9hdCIsCikKCmlmIG5v
53
+ dCBvcy5wYXRoLmV4aXN0cyh2b2xfZmxvYXRfcGF0aCk6CiAgICBwcmludChmImNyZWF0ZXMge3Zv
54
+ bF9mbG9hdF9wYXRofSIpCiAgICBvcy5tYWtlZGlycyh2b2xfZmxvYXRfcGF0aCwgbW9kZT0wbzc3
55
+ NCkKICAgICMgZG9uJ3Qga25vdyB3aHkgYnV0IGZpcnN0IGNyZWF0aW9uIHdpdGggMG83NzQgZmFp
56
+ bHMuLi4KICAgIG9zLmNobW9kKHZvbF9mbG9hdF9wYXRoLCAwbzc3NCkKICAgIAogICAgIyBjcmVh
57
+ dGUgc3ltbGluayBmcm9tIHZvbGZsb2F0IHRvICIudm9sZmxvYXRfbm9iYWNrdXAiCiAgICBvcy5z
58
+ eW1saW5rKHZvbF9mbG9hdF9wYXRoLCB2b2xfZmxvYXRfc3ltX2xpbmtfcGF0aCkKCgpvdXRfZGF0
59
+ YSA9IHNjYW4KlIwFZmxhZ3OUSwCMCGZpbGVuYW1llE51YmGME3NhdmVkV2lkZ2V0R2VvbWV0cnmU
60
+ Q0IB2dDLAAMAAAAAAEgAAAAbAAAGBwAAA3YAAABIAAAAQAAABgcAAAN2AAAAAAAAAAAKAAAAAEgA
61
+ AABAAAAGBwAAA3aUjApzY3JpcHRUZXh0lFg1AgAAaW1wb3J0IG9zCnNjYW4gPSBpbl9kYXRhCgp2
62
+ b2xfZmxvYXRfcGF0aCA9IG9zLnBhdGguam9pbigKICAgIG9zLnBhdGguZGlybmFtZShzY2FuLnBh
63
+ dGgpLAogICAgIi52b2xmbG9hdF9ub2JhY2t1cCIsCikKCnZvbF9mbG9hdF9zeW1fbGlua19wYXRo
64
+ ID0gb3MucGF0aC5qb2luKAogICAgb3MucGF0aC5kaXJuYW1lKHNjYW4ucGF0aCksCiAgICAidm9s
65
+ ZmxvYXQiLAopCgppZiBub3Qgb3MucGF0aC5leGlzdHModm9sX2Zsb2F0X3BhdGgpOgogICAgcHJp
66
+ bnQoZiJjcmVhdGVzIHt2b2xfZmxvYXRfcGF0aH0iKQogICAgb3MubWFrZWRpcnModm9sX2Zsb2F0
67
+ X3BhdGgsIG1vZGU9MG83NzQpCiAgICAjIGRvbid0IGtub3cgd2h5IGJ1dCBmaXJzdCBjcmVhdGlv
68
+ biB3aXRoIDBvNzc0IGZhaWxzLi4uCiAgICBvcy5jaG1vZCh2b2xfZmxvYXRfcGF0aCwgMG83NzQp
69
+ CiAgICAKICAgICMgY3JlYXRlIHN5bWxpbmsgZnJvbSB2b2xmbG9hdCB0byAiLnZvbGZsb2F0X25v
70
+ YmFja3VwIgogICAgb3Muc3ltbGluayh2b2xfZmxvYXRfcGF0aCwgdm9sX2Zsb2F0X3N5bV9saW5r
71
+ X3BhdGgpCgoKb3V0X2RhdGEgPSBzY2FuCpSMDXNwbGl0dGVyU3RhdGWUTowLX192ZXJzaW9uX1+U
72
+ SwF1Lg==
73
+ </properties>
74
+ <properties node_id="8" format="pickle">gASVMw8AAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU
75
+ SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90
76
+ aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU
77
+ jAZzY3JpcHSUWO0GAABpbXBvcnQgc2h1dGlsCmltcG9ydCBvcwpmcm9tIHRvbXdlci5jb3JlLnNj
78
+ YW4uZWRmc2NhbiBpbXBvcnQgRURGVG9tb1NjYW4KZnJvbSBzaWx4LmlvLmRpY3RkdW1wIGltcG9y
79
+ dCBkaWN0dG9pbmksIGxvYWQgYXMgbG9hZF9pbmkKCmRlZiBnZXRfa2V5KGxpbmUpOgogICAgIiIi
80
+ InJldHVybiBrZXkgbmFtZSBvZiBhIC5pbmZvIGZpbGUiIiIKICAgIHJldHVybiBsaW5lLnNwbGl0
81
+ KCI9IilbMF0ucmVwbGFjZSgiICIsICIiKQoKCmRlZiBnZXRfcmF3X2RpY3QoZmlsZV9wYXRoKToK
82
+ ICAgICIiInJldHVybiB0aGUgaW5mbyBmaWxlIG1ldGFkYXRhIGFzIGEgZGljdGlvbmFyeSB3aXRo
83
+ IG1ldGFkYXRhIG5hbWUgYXMga2V5IGFuZCByYXcgbGluZSBhcyB2YWx1ZSIiIgogICAgbWV0YWRh
84
+ dGEgPSB7fQogICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgbW9kZT0iciIpIGFzIGY6CiAgICAgICAg
85
+ bGluZSA9IGYucmVhZGxpbmUoKQogICAgICAgIHdoaWxlIGxpbmU6CiAgICAgICAgICAgIGtleSA9
86
+ IGdldF9rZXkobGluZSkKICAgICAgICAgICAgbWV0YWRhdGFba2V5XSA9IGxpbmUKICAgICAgICAg
87
+ ICAgbGluZSA9IGYucmVhZGxpbmUoKQogICAgcmV0dXJuIG1ldGFkYXRhCgpzY2FuID0gaW5fZGF0
88
+ YQpwcmludCgidHJlYXQiLCBpbl9kYXRhKQoKaWYgaXNpbnN0YW5jZShzY2FuLCBFREZUb21vU2Nh
89
+ bik6CiAgICAjIGNvcHkgdGhlIC5pbmZvIGZpbGUKICAgIGluZm9fZmlsZSA9IHNjYW4uZ2V0X2lu
90
+ Zm9fZmlsZShzY2FuLnBhdGgpCiAgICBwcmludChmIlxuXG5UcnlpbmcgdG8gcmVhZCBpbmZvX2Zp
91
+ bGU6IHtpbmZvX2ZpbGV9IikKICAgICNpbmZvX2ZpbGUgPSBpbmZvX2ZpbGVbNzpdCiAgICBwcmlu
92
+ dChmIlxuRm9yY2UgdG8gcmVhZCAqdGhpcyogaW5mb19maWxlOiB7aW5mb19maWxlfSIpCiAgICBw
93
+ cmludChmIlxuSW5pdGlhbCBkaXN0YW5jZSBpbiBpbnB1dCBmaWxlOiBcdHtnZXRfcmF3X2RpY3Qo
94
+ aW5mb19maWxlKVsnRGlzdGFuY2UnXX0iKQogICAgcmF3X2luZm9fZmlsZSA9IGluZm9fZmlsZVs6
95
+ LTVdICsgIl9yYXcuaW5mbyIKICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyYXdfaW5mb19maWxl
96
+ KToKICAgICAgICAjIGNvcHkgdGhlIG9yaWdpbmFsIGZpbGUgb25seSB0aGUgZmlyc3QgdGltZS4g
97
+ T3RoZXJ3aXNlIHdlIHdpbGwgb3ZlcndyaXRlIHdpdGggYW4gdXBkYXRlZCBmaWxlLgogICAgICAg
98
+ IHNodXRpbC5jb3B5ZmlsZSgKICAgICAgICAgICAgaW5mb19maWxlLAogICAgICAgICAgICByYXdf
99
+ aW5mb19maWxlLAogICAgICAgICkKICAgIG1ldGFkYXRhID0gZ2V0X3Jhd19kaWN0KGluZm9fZmls
100
+ ZSkKICAgICMgb3ZlcndyaXRlIGRpc3RhbmNlIGtleQogICAgbmV3X2Rpc3RhbmNlID0gMC4xNjg1
101
+ ICoxMDAwICMgMjgwbm0KICAgICNuZXdfZGlzdGFuY2UgPSAwLjA5MTcgIzEwMG5tCiAgICAjbmV3
102
+ X2Rpc3RhbmNlID0gMC4xMjUgIzE1MG5tCiAgICAjbmV3X2Rpc3RhbmNlID0gIDAuMDUwMDA2MDUg
103
+ IyAqIDEwMDAgIzUwbm0KICAgICNuZXdfZGlzdGFuY2UgPSAwLjA5OSAqIDEwMDAgIzE1MG5tCiAg
104
+ ICBtZXRhZGF0YVsiRGlzdGFuY2UiXSA9ICJEaXN0YW5jZT0gXHRcdCIgKyBzdHIobmV3X2Rpc3Rh
105
+ bmNlKSArICJcbiIKICAgIHdpdGggb3BlbihpbmZvX2ZpbGUsIG1vZGU9InciKSBhcyBmOgogICAg
106
+ ICAgIGZvciBfLCBsaW5lIGluIG1ldGFkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgIGYud3JpdGUo
107
+ bGluZSkKICAgICMgcmVzZXQga2V5IGZvciBjb2hlcmVuY2UKICAgIHNjYW4uX2Rpc3RhbmNlID0g
108
+ Tm9uZQpvdXRfZGF0YSA9IHNjYW6UjAVmbGFnc5RLAIwIZmlsZW5hbWWUTnViYYwTc2F2ZWRXaWRn
109
+ ZXRHZW9tZXRyeZRDQgHZ0MsAAwAAAAABfwAAAJAAAAjIAAAEsgAAAX8AAAC1AAAIyAAABLIAAAAA
110
+ AAAAAAoAAAABfwAAALUAAAjIAAAEspSMCnNjcmlwdFRleHSUWO0GAABpbXBvcnQgc2h1dGlsCmlt
111
+ cG9ydCBvcwpmcm9tIHRvbXdlci5jb3JlLnNjYW4uZWRmc2NhbiBpbXBvcnQgRURGVG9tb1NjYW4K
112
+ ZnJvbSBzaWx4LmlvLmRpY3RkdW1wIGltcG9ydCBkaWN0dG9pbmksIGxvYWQgYXMgbG9hZF9pbmkK
113
+ CmRlZiBnZXRfa2V5KGxpbmUpOgogICAgIiIiInJldHVybiBrZXkgbmFtZSBvZiBhIC5pbmZvIGZp
114
+ bGUiIiIKICAgIHJldHVybiBsaW5lLnNwbGl0KCI9IilbMF0ucmVwbGFjZSgiICIsICIiKQoKCmRl
115
+ ZiBnZXRfcmF3X2RpY3QoZmlsZV9wYXRoKToKICAgICIiInJldHVybiB0aGUgaW5mbyBmaWxlIG1l
116
+ dGFkYXRhIGFzIGEgZGljdGlvbmFyeSB3aXRoIG1ldGFkYXRhIG5hbWUgYXMga2V5IGFuZCByYXcg
117
+ bGluZSBhcyB2YWx1ZSIiIgogICAgbWV0YWRhdGEgPSB7fQogICAgd2l0aCBvcGVuKGZpbGVfcGF0
118
+ aCwgbW9kZT0iciIpIGFzIGY6CiAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQogICAgICAgIHdo
119
+ aWxlIGxpbmU6CiAgICAgICAgICAgIGtleSA9IGdldF9rZXkobGluZSkKICAgICAgICAgICAgbWV0
120
+ YWRhdGFba2V5XSA9IGxpbmUKICAgICAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQogICAgcmV0
121
+ dXJuIG1ldGFkYXRhCgpzY2FuID0gaW5fZGF0YQpwcmludCgidHJlYXQiLCBpbl9kYXRhKQoKaWYg
122
+ aXNpbnN0YW5jZShzY2FuLCBFREZUb21vU2Nhbik6CiAgICAjIGNvcHkgdGhlIC5pbmZvIGZpbGUK
123
+ ICAgIGluZm9fZmlsZSA9IHNjYW4uZ2V0X2luZm9fZmlsZShzY2FuLnBhdGgpCiAgICBwcmludChm
124
+ IlxuXG5UcnlpbmcgdG8gcmVhZCBpbmZvX2ZpbGU6IHtpbmZvX2ZpbGV9IikKICAgICNpbmZvX2Zp
125
+ bGUgPSBpbmZvX2ZpbGVbNzpdCiAgICBwcmludChmIlxuRm9yY2UgdG8gcmVhZCAqdGhpcyogaW5m
126
+ b19maWxlOiB7aW5mb19maWxlfSIpCiAgICBwcmludChmIlxuSW5pdGlhbCBkaXN0YW5jZSBpbiBp
127
+ bnB1dCBmaWxlOiBcdHtnZXRfcmF3X2RpY3QoaW5mb19maWxlKVsnRGlzdGFuY2UnXX0iKQogICAg
128
+ cmF3X2luZm9fZmlsZSA9IGluZm9fZmlsZVs6LTVdICsgIl9yYXcuaW5mbyIKICAgIGlmIG5vdCBv
129
+ cy5wYXRoLmV4aXN0cyhyYXdfaW5mb19maWxlKToKICAgICAgICAjIGNvcHkgdGhlIG9yaWdpbmFs
130
+ IGZpbGUgb25seSB0aGUgZmlyc3QgdGltZS4gT3RoZXJ3aXNlIHdlIHdpbGwgb3ZlcndyaXRlIHdp
131
+ dGggYW4gdXBkYXRlZCBmaWxlLgogICAgICAgIHNodXRpbC5jb3B5ZmlsZSgKICAgICAgICAgICAg
132
+ aW5mb19maWxlLAogICAgICAgICAgICByYXdfaW5mb19maWxlLAogICAgICAgICkKICAgIG1ldGFk
133
+ YXRhID0gZ2V0X3Jhd19kaWN0KGluZm9fZmlsZSkKICAgICMgb3ZlcndyaXRlIGRpc3RhbmNlIGtl
134
+ eQogICAgbmV3X2Rpc3RhbmNlID0gMC4xNjg1ICoxMDAwICMgMjgwbm0KICAgICNuZXdfZGlzdGFu
135
+ Y2UgPSAwLjA5MTcgIzEwMG5tCiAgICAjbmV3X2Rpc3RhbmNlID0gMC4xMjUgIzE1MG5tCiAgICAj
136
+ bmV3X2Rpc3RhbmNlID0gIDAuMDUwMDA2MDUgIyAqIDEwMDAgIzUwbm0KICAgICNuZXdfZGlzdGFu
137
+ Y2UgPSAwLjA5OSAqIDEwMDAgIzE1MG5tCiAgICBtZXRhZGF0YVsiRGlzdGFuY2UiXSA9ICJEaXN0
138
+ YW5jZT0gXHRcdCIgKyBzdHIobmV3X2Rpc3RhbmNlKSArICJcbiIKICAgIHdpdGggb3BlbihpbmZv
139
+ X2ZpbGUsIG1vZGU9InciKSBhcyBmOgogICAgICAgIGZvciBfLCBsaW5lIGluIG1ldGFkYXRhLml0
140
+ ZW1zKCk6CiAgICAgICAgICAgIGYud3JpdGUobGluZSkKICAgICMgcmVzZXQga2V5IGZvciBjb2hl
141
+ cmVuY2UKICAgIHNjYW4uX2Rpc3RhbmNlID0gTm9uZQpvdXRfZGF0YSA9IHNjYW6UjA1zcGxpdHRl
142
+ clN0YXRllE6MC19fdmVyc2lvbl9flEsBdS4=
143
+ </properties>
144
+ <properties node_id="9" format="pickle">gASVyw4AAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU
145
+ SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90
146
+ aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU
147
+ jAZzY3JpcHSUWLkGAABpbXBvcnQgb3MKaW1wb3J0IG51bXB5CmZyb20gdG9tb3NjYW4uZmFjdG9y
148
+ eSBpbXBvcnQgRmFjdG9yeQpmcm9tIG5hYnUubWlzYy51dGlscyBpbXBvcnQgcmVzY2FsZV9kYXRh
149
+ CgppZiBpbl9kYXRhIGlzIG5vdCBOb25lOgogICAgc2NhbiA9IGluX2RhdGEKICAgIAogICAgIyB3
150
+ YXJuaW5nOiBzY2FuLmxhdGVzdF9yZWNvbnN0cnVjdGlvbnMgaXMgZGVmaW5lZCBieSB0aGUgJ25h
151
+ YnUgc2xpY2UgcmVjb25zdHJ1Y3Rpb24nLiBTbyBpZiBhIHNjYW4gaXMgbG9hZGVkIGFuZCBub3Qg
152
+ Z28gdHJob3VnaCB0aGlzIHdpZGdldAogICAgIyBoZSB3b24ndCBiZSBhd2FyZSBhYm91dCBzbGlj
153
+ ZSByZWNvbnN0cnVjdGlvbnMKICAgIHByaW50KCJjaGVjayIsIHNjYW4sICIgLSBsYXRlc3RfcmVj
154
+ b25zdHJ1Y3Rpb25zIiwgc2Nhbi5sYXRlc3RfcmVjb25zdHJ1Y3Rpb25zKQogICAgaW5fdm9sdW1l
155
+ cyA9IFsKICAgICAgICBGYWN0b3J5LmNyZWF0ZV90b21vX29iamVjdF9mcm9tX2lkZW50aWZpZXIo
156
+ aWRlbnRpZmllcikgZm9yIGlkZW50aWZpZXIgaW4gc2Nhbi5sYXRlc3RfcmVjb25zdHJ1Y3Rpb25z
157
+ CiAgICBdCgogICAgIyBsb29rcyBsaWtlIHRoZXJlIGlzIHNvbWUgZXh0cmEgdm9sdW1lIGV4aXN0
158
+ aW5nOiBmaWx0ZXIgdGhlbQogICAgcmVzID0gW10KICAgIGZvciB2b2wgaW4gaW5fdm9sdW1lczoK
159
+ ICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh2b2wuZmlsZV9wYXRoKToKICAgICAgICAgICAgcmVz
160
+ LmFwcGVuZCh2b2wpCiAgICAKICAgIGluX3ZvbHVtZXMgPSByZXMKICAgIHByaW50KCJzbGljZXMg
161
+ dG8gYmUgaGFuZGxlZCIsIGluX3ZvbHVtZXMpCgogICAgW3ByaW50KHZvbC5nZXRfaWRlbnRpZmll
162
+ cigpLnRvX3N0cigpKSBmb3Igdm9sIGluIGluX3ZvbHVtZXNdCiAgICAKICAgICMgcmV0cmlldmUg
163
+ dGhlIG1pbiAvIG1heCBmcm9tIHRoZSBmaXJzdCBhY3F1aXNpdGlvbgogICAgaWYgc2Nhbi5wYXRo
164
+ LmVuZHN3aXRoKCJfMV8iKToKICAgICAgICBmb3Igdm9sIGluIGluX3ZvbHVtZXM6CiAgICAgICAg
165
+ ICAgIHByaW50KCJyZWNvbXB1dGUgbWluIGFuZCBtYXggZnJvbSIsIHZvbC5maWxlX3BhdGgpCiAg
166
+ ICAgICAgICAgIGRhdGEgPSB2b2wubG9hZF9kYXRhKCkKICAgICAgICAgICAgbmV3X21pbiwgbmV3
167
+ X21heCA9IG51bXB5LnBlcmNlbnRpbGUoZGF0YVswXSwgKDUsIDk1KSkKCiAgICAjIGFwcGx5IGNh
168
+ c3QgLyByZWNsYW1pbmcgZGF0YQogICAgaWYgIm5ld19taW4iIGluIGdsb2JhbHMoKSBhbmQgIm5l
169
+ d19tYXgiIGluIGdsb2JhbHMoKToKICAgICAgICBmb3Igdm9sIGluIGluX3ZvbHVtZXM6CiAgICAg
170
+ ICAgICAgIHByaW50KCJub3JtYWxpemUiLCB2b2wuZmlsZV9wYXRoKQogICAgICAgICAgICB2b2wu
171
+ bG9hZF9kYXRhKCkKICAgICAgICAgICAgZGF0YSA9IHZvbC5kYXRhCiAgICAgICAgICAgIGRhdGEg
172
+ PSByZXNjYWxlX2RhdGEoCiAgICAgICAgICAgICAgICBkYXRhPWRhdGEsCiAgICAgICAgICAgICAg
173
+ ICBuZXdfbWluPW5ld19taW4sCiAgICAgICAgICAgICAgICBuZXdfbWF4PW5ld19tYXgsCiAgICAg
174
+ ICAgICAgICAgICBkYXRhX21pbj1kYXRhLm1pbigpLAogICAgICAgICAgICAgICAgZGF0YV9tYXg9
175
+ ZGF0YS5tYXgoKSwKICAgICAgICAgICAgKQogICAgICAgICAgICB2b2wuZGF0YSA9IGRhdGEKICAg
176
+ ICAgICAgICAgdm9sLnNhdmVfZGF0YSgpCiAgICAgICAgCiAgICBvdXRfZGF0YSA9IHNjYW4KZWxz
177
+ ZToKICAgIG91dF9kYXRhID0gaW5fZGF0YZSMBWZsYWdzlEsAjAhmaWxlbmFtZZROdWJhjBNzYXZl
178
+ ZFdpZGdldEdlb21ldHJ5lENCAdnQywADAAAAAAHKAAAA5wAACf8AAAWfAAABygAAAOcAAAn/AAAF
179
+ nwAAAAAAAAAACgAAAAHKAAAA5wAACf8AAAWflIwKc2NyaXB0VGV4dJRYuQYAAGltcG9ydCBvcwpp
180
+ bXBvcnQgbnVtcHkKZnJvbSB0b21vc2Nhbi5mYWN0b3J5IGltcG9ydCBGYWN0b3J5CmZyb20gbmFi
181
+ dS5taXNjLnV0aWxzIGltcG9ydCByZXNjYWxlX2RhdGEKCmlmIGluX2RhdGEgaXMgbm90IE5vbmU6
182
+ CiAgICBzY2FuID0gaW5fZGF0YQogICAgCiAgICAjIHdhcm5pbmc6IHNjYW4ubGF0ZXN0X3JlY29u
183
+ c3RydWN0aW9ucyBpcyBkZWZpbmVkIGJ5IHRoZSAnbmFidSBzbGljZSByZWNvbnN0cnVjdGlvbicu
184
+ IFNvIGlmIGEgc2NhbiBpcyBsb2FkZWQgYW5kIG5vdCBnbyB0cmhvdWdoIHRoaXMgd2lkZ2V0CiAg
185
+ ICAjIGhlIHdvbid0IGJlIGF3YXJlIGFib3V0IHNsaWNlIHJlY29uc3RydWN0aW9ucwogICAgcHJp
186
+ bnQoImNoZWNrIiwgc2NhbiwgIiAtIGxhdGVzdF9yZWNvbnN0cnVjdGlvbnMiLCBzY2FuLmxhdGVz
187
+ dF9yZWNvbnN0cnVjdGlvbnMpCiAgICBpbl92b2x1bWVzID0gWwogICAgICAgIEZhY3RvcnkuY3Jl
188
+ YXRlX3RvbW9fb2JqZWN0X2Zyb21faWRlbnRpZmllcihpZGVudGlmaWVyKSBmb3IgaWRlbnRpZmll
189
+ ciBpbiBzY2FuLmxhdGVzdF9yZWNvbnN0cnVjdGlvbnMKICAgIF0KCiAgICAjIGxvb2tzIGxpa2Ug
190
+ dGhlcmUgaXMgc29tZSBleHRyYSB2b2x1bWUgZXhpc3Rpbmc6IGZpbHRlciB0aGVtCiAgICByZXMg
191
+ PSBbXQogICAgZm9yIHZvbCBpbiBpbl92b2x1bWVzOgogICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
192
+ KHZvbC5maWxlX3BhdGgpOgogICAgICAgICAgICByZXMuYXBwZW5kKHZvbCkKICAgIAogICAgaW5f
193
+ dm9sdW1lcyA9IHJlcwogICAgcHJpbnQoInNsaWNlcyB0byBiZSBoYW5kbGVkIiwgaW5fdm9sdW1l
194
+ cykKCiAgICBbcHJpbnQodm9sLmdldF9pZGVudGlmaWVyKCkudG9fc3RyKCkpIGZvciB2b2wgaW4g
195
+ aW5fdm9sdW1lc10KICAgIAogICAgIyByZXRyaWV2ZSB0aGUgbWluIC8gbWF4IGZyb20gdGhlIGZp
196
+ cnN0IGFjcXVpc2l0aW9uCiAgICBpZiBzY2FuLnBhdGguZW5kc3dpdGgoIl8xXyIpOgogICAgICAg
197
+ IGZvciB2b2wgaW4gaW5fdm9sdW1lczoKICAgICAgICAgICAgcHJpbnQoInJlY29tcHV0ZSBtaW4g
198
+ YW5kIG1heCBmcm9tIiwgdm9sLmZpbGVfcGF0aCkKICAgICAgICAgICAgZGF0YSA9IHZvbC5sb2Fk
199
+ X2RhdGEoKQogICAgICAgICAgICBuZXdfbWluLCBuZXdfbWF4ID0gbnVtcHkucGVyY2VudGlsZShk
200
+ YXRhWzBdLCAoNSwgOTUpKQoKICAgICMgYXBwbHkgY2FzdCAvIHJlY2xhbWluZyBkYXRhCiAgICBp
201
+ ZiAibmV3X21pbiIgaW4gZ2xvYmFscygpIGFuZCAibmV3X21heCIgaW4gZ2xvYmFscygpOgogICAg
202
+ ICAgIGZvciB2b2wgaW4gaW5fdm9sdW1lczoKICAgICAgICAgICAgcHJpbnQoIm5vcm1hbGl6ZSIs
203
+ IHZvbC5maWxlX3BhdGgpCiAgICAgICAgICAgIHZvbC5sb2FkX2RhdGEoKQogICAgICAgICAgICBk
204
+ YXRhID0gdm9sLmRhdGEKICAgICAgICAgICAgZGF0YSA9IHJlc2NhbGVfZGF0YSgKICAgICAgICAg
205
+ ICAgICAgIGRhdGE9ZGF0YSwKICAgICAgICAgICAgICAgIG5ld19taW49bmV3X21pbiwKICAgICAg
206
+ ICAgICAgICAgIG5ld19tYXg9bmV3X21heCwKICAgICAgICAgICAgICAgIGRhdGFfbWluPWRhdGEu
207
+ bWluKCksCiAgICAgICAgICAgICAgICBkYXRhX21heD1kYXRhLm1heCgpLAogICAgICAgICAgICAp
208
+ CiAgICAgICAgICAgIHZvbC5kYXRhID0gZGF0YQogICAgICAgICAgICB2b2wuc2F2ZV9kYXRhKCkK
209
+ ICAgICAgICAKICAgIG91dF9kYXRhID0gc2NhbgplbHNlOgogICAgb3V0X2RhdGEgPSBpbl9kYXRh
210
+ lIwNc3BsaXR0ZXJTdGF0ZZROjAtfX3ZlcnNpb25fX5RLAXUu
211
+ </properties>
212
+ <properties node_id="10" format="literal">{'controlAreaVisible': True, 'dest_dir_settings': None, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x04&gt;\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8\x00\x00\x04&gt;\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x04&gt;\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8', '__version__': 1}</properties>
213
+ <properties node_id="11" format="literal">{'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x01\xaa\x00\x00\x00\x8b\x00\x00\x08\xbc\x00\x00\x04\x90\x00\x00\x01\xaa\x00\x00\x00\xb0\x00\x00\x08\xbc\x00\x00\x04\x90\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\xaa\x00\x00\x00\xb0\x00\x00\x08\xbc\x00\x00\x04\x90', '__version__': 1}</properties>
214
+ </node_properties>
215
+ <session_state>
216
+ <window_groups />
217
+ </session_state>
218
+ </scheme>