{"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.12"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":38760,"databundleVersionId":4493939,"sourceType":"competition"},{"sourceId":4461402,"sourceType":"datasetVersion","datasetId":2611514},{"sourceId":4474043,"sourceType":"datasetVersion","datasetId":2601572},{"sourceId":14457113,"sourceType":"datasetVersion","datasetId":9234084}],"dockerImageVersionId":31234,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true},"papermill":{"default_parameters":{},"duration":2438.123342,"end_time":"2026-01-02T12:21:01.015385","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2026-01-02T11:40:22.892043","version":"2.6.0"},"widgets":{"application/vnd.jupyter.widget-state+json":{"state":{"02b878ceec6943beaf45b1f861ec2b64":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_3f53fae8f3bb478ca88c2ae6680a82d1","max":6531,"min":0,"orientation":"horizontal","style":"IPY_MODEL_5e0ee78f947b45f09b8333919774bdc3","tabbable":null,"tooltip":null,"value":6531}},"03a659e7e0664b389cffb5b1dea12bf2":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"04c3613e97d04d9e9b28075b03f35e09":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_0f97553d39be4c3fb4accb384e01add7","IPY_MODEL_216039601f09476d8ffdbecb8d1486bf","IPY_MODEL_cb45202ca9014d30a3a20bd63aba1b7e"],"layout":"IPY_MODEL_5098baeb4640464c912caaaffc95865b","tabbable":null,"tooltip":null}},"068a9377e07a486884ae12800fb01d98":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"06e7068a0bda4566a8ad9a52a142188a":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"083eea5728a7405aa64089e3394435aa":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0a11994c040d4ceca4c6189c93399aac":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_1fbb5752eba543ce8beea1dcccf28a36","placeholder":"​","style":"IPY_MODEL_93d153924ae94d958270b29df444afdf","tabbable":null,"tooltip":null,"value":" 1/1 [00:01&lt;00:00,  1.32s/it]"}},"0add09db09da4862b9788b88c8129cc4":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"0dd196b558b6476a8d8f1973835ba7f9":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0dd5be20d2544560b28a168dc10001b0":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0f65a673663e4effbc99b569976084e1":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0f97553d39be4c3fb4accb384e01add7":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_6d56538237ef453fbdf0519b5b3404ba","placeholder":"​","style":"IPY_MODEL_86fc40a52aaf480787b60e31d8b31b50","tabbable":null,"tooltip":null,"value":"100%"}},"111fa22a354847c99dfffbf4f188aba5":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"112110efbfd94eaf9c8ec5b3f79c0124":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"112612b0a2214a8d82f1bc9a4288a4f8":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"11d57f385bb8445b8b48899af9b1ef06":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1287624ae17b439b8a8c3ee4e25f66b6":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"1348115cc9c641e9992ee8e3842f6b8f":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"13518fee257a487983edb9027441aec9":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"143dc552015f44e99b3a66a272573608":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"165b0c25ee8f42109f5bd0d1f4013d2c":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"16691da26a06466ba29719e52510e54f":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"17f44559ce5e4f85a00ca0a9e0980c3e":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"1d8d49f94fd8494a94bbec8a74a37e3a":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_ca8284c4a640414c9050ae78992d11cd","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_16691da26a06466ba29719e52510e54f","tabbable":null,"tooltip":null,"value":1}},"1dac66d07f684ad7b1fff126f191665c":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1fbb5752eba543ce8beea1dcccf28a36":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"21324f1c1e27427293436e5aae95e0ea":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"216039601f09476d8ffdbecb8d1486bf":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_8ca1df2af8794422a006edc5032995d1","max":1671803,"min":0,"orientation":"horizontal","style":"IPY_MODEL_0f65a673663e4effbc99b569976084e1","tabbable":null,"tooltip":null,"value":1671803}},"235020c6d05741a49587a99f865350ea":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_2ec9f6ef6a92470791f36f8c797e03b9","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_a6a009394c0041cc9a9a9884b3785e68","tabbable":null,"tooltip":null,"value":1}},"2525f7f9707d4f46a225990084e6e9e1":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_ac07e333140d49c9b2c819003b06ad54","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_e01062334d304c57a1783bfaf62d033e","tabbable":null,"tooltip":null,"value":1}},"25d830925dce40a6a7b6f5134e00b103":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_3dbf1c5393e9421d8896fade78ea99d0","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_a60451aa0db94e5b99d9d7873b89085f","tabbable":null,"tooltip":null,"value":1}},"26b14a94b553417c9c58761557c1d7d4":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2a5f5e8cc7ac48a580a50c3ef308992b":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_068a9377e07a486884ae12800fb01d98","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c78055b3fba240249d24f6fd034bd7cf","tabbable":null,"tooltip":null,"value":1}},"2ceca1ff3ca74787928ab3ca812d9a19":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"2ec9f6ef6a92470791f36f8c797e03b9":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2f5f1a95b1ea4efb9fcfc03d4f168ca0":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_bbe7ad3c5aac4fffa3debf63d3c4892c","max":1671803,"min":0,"orientation":"horizontal","style":"IPY_MODEL_0dd5be20d2544560b28a168dc10001b0","tabbable":null,"tooltip":null,"value":1671803}},"307cd88fa4c44220acd65f4219f44ae9":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3394102c9c5e4469acb71d2b79b3bdb0":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"36fdfc74ab544a9e92d6c668839a3236":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d9bb81de9bb046249b5e235ca8f79e97","IPY_MODEL_02b878ceec6943beaf45b1f861ec2b64","IPY_MODEL_fea2e2ec41a04b96a1bd2c13337d811f"],"layout":"IPY_MODEL_307cd88fa4c44220acd65f4219f44ae9","tabbable":null,"tooltip":null}},"3946ed696ee540958af5b4632f36e654":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3b9a4ad4a8004f13ac9b61e33779f0ec":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_9a82449568e247a783888089bec26ff1","placeholder":"​","style":"IPY_MODEL_13518fee257a487983edb9027441aec9","tabbable":null,"tooltip":null,"value":"Part 3: 100%"}},"3d05f0313f3749fcb3dd13e3c00ea24a":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3dbf1c5393e9421d8896fade78ea99d0":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3f53fae8f3bb478ca88c2ae6680a82d1":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"402bfb96728a4a3a894c943f0775eaf4":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"42e0d97f222640fcaca0f96a259a0a96":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_55d9cb780e5b479893c194653c85809b","placeholder":"​","style":"IPY_MODEL_4b9dff07de884a249548b1f659193db6","tabbable":null,"tooltip":null,"value":"Part 1: 100%"}},"435cfc8f24ba43bdae92536c9f871646":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"48681b912a2b465085fe8c6d3c283619":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"48e0ed850ed54a6f8b27c8bf760f12fe":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_575036c2affd448085d794cb24d60556","IPY_MODEL_235020c6d05741a49587a99f865350ea","IPY_MODEL_753a9245689a4e21aa7dfd0c9f2b5ff1"],"layout":"IPY_MODEL_ff9f642c9c494ddbaedbd590221693a3","tabbable":null,"tooltip":null}},"48e88c4715564469ad506fa0e1a4122a":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4990ef6e29ea4e789011cbcb2fd554b4":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_c98446b5849648729c2362038fe42de2","placeholder":"​","style":"IPY_MODEL_111fa22a354847c99dfffbf4f188aba5","tabbable":null,"tooltip":null,"value":" 1/1 [00:07&lt;00:00,  7.14s/it]"}},"4b9dff07de884a249548b1f659193db6":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"4d5476c0f9c64cf9b4c1ca25084a2b39":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_83b269d6d7954196b8adc129a6ad1e59","IPY_MODEL_6707aa1399cf49aea83eb45947287226","IPY_MODEL_72dced22ee1b4f7cb699760af4198cc4"],"layout":"IPY_MODEL_ad5f686fba0a428e9775617156e6b24d","tabbable":null,"tooltip":null}},"5098baeb4640464c912caaaffc95865b":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"55d9cb780e5b479893c194653c85809b":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"56a15689e2bb4cab8d05235b2a237d9a":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"575036c2affd448085d794cb24d60556":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_26b14a94b553417c9c58761557c1d7d4","placeholder":"​","style":"IPY_MODEL_2ceca1ff3ca74787928ab3ca812d9a19","tabbable":null,"tooltip":null,"value":"Part 2: 100%"}},"58e3260290d942a0a016dd07ee6acd4f":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_3394102c9c5e4469acb71d2b79b3bdb0","placeholder":"​","style":"IPY_MODEL_0add09db09da4862b9788b88c8129cc4","tabbable":null,"tooltip":null,"value":"100%"}},"59c480e315ec4871bba8aaf29ca76522":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"5b22dbf6801d448aa9677053eeff346c":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_75274cb649f24600a3846e6b365bf7ba","placeholder":"​","style":"IPY_MODEL_ada9a8b8c50e4d909275cf65892e704f","tabbable":null,"tooltip":null,"value":" 1/1 [00:03&lt;00:00,  3.21s/it]"}},"5b53d422f2b54d25893960c43a78b3ec":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_aaafad2333994b469402effaa7ad2f19","IPY_MODEL_2f5f1a95b1ea4efb9fcfc03d4f168ca0","IPY_MODEL_735fe0b14a0742f6be3289f5605e06bd"],"layout":"IPY_MODEL_da210ad1e8e44c20b6d9596aae604082","tabbable":null,"tooltip":null}},"5e0ee78f947b45f09b8333919774bdc3":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"5f19e141e4b4447b94b9161b0c6e1762":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6262fe08332d4466a80a8c11292d9176":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6354d1a203e44e50bcf487f5139f8bee":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_ecd9c0cee756441bb9466314d30f7ccf","placeholder":"​","style":"IPY_MODEL_da07e46e44d54a81a62b84f74519895c","tabbable":null,"tooltip":null,"value":"Part 3: 100%"}},"66670c0707e14ba29349cee5fd09248b":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_fdd42c2157054a9c967162ae05c371ab","IPY_MODEL_d9046c4cd54742f4ad6154ad8eca5195","IPY_MODEL_4990ef6e29ea4e789011cbcb2fd554b4"],"layout":"IPY_MODEL_06e7068a0bda4566a8ad9a52a142188a","tabbable":null,"tooltip":null}},"669cfa26047a40748acbd5b35bef9df2":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6707aa1399cf49aea83eb45947287226":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_17f44559ce5e4f85a00ca0a9e0980c3e","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_11d57f385bb8445b8b48899af9b1ef06","tabbable":null,"tooltip":null,"value":1}},"6b045b4860a4455ab3e55ba49ea9ffc6":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_b878c580570d4cb9a57898a505990f40","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_edc635c4a5de48c88ab11ca6019e1a7f","tabbable":null,"tooltip":null,"value":1}},"6c9948f02cf34ac097ed05d3af8f627f":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_3946ed696ee540958af5b4632f36e654","max":1671803,"min":0,"orientation":"horizontal","style":"IPY_MODEL_112612b0a2214a8d82f1bc9a4288a4f8","tabbable":null,"tooltip":null,"value":1671803}},"6ca1ae3261a64524a4312bbea3502be2":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"6d56538237ef453fbdf0519b5b3404ba":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6dbf816c93d3444b917cc18670bf32f2":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_c9f6ecaba2cd483b825e8e5883efd351","IPY_MODEL_2525f7f9707d4f46a225990084e6e9e1","IPY_MODEL_ada3dfc3aab74c76b39bb8aa84de675b"],"layout":"IPY_MODEL_7f1a659c214f4e1a910d7aa76e20e472","tabbable":null,"tooltip":null}},"6ec6edf654094b70a696a114414cd9bc":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_3d05f0313f3749fcb3dd13e3c00ea24a","placeholder":"​","style":"IPY_MODEL_f371ef9cb40f483596300925869395d1","tabbable":null,"tooltip":null,"value":" 1/1 [00:01&lt;00:00,  1.31s/it]"}},"70b53576ba90466990b5fee4ecd4296d":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"72dced22ee1b4f7cb699760af4198cc4":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_669cfa26047a40748acbd5b35bef9df2","placeholder":"​","style":"IPY_MODEL_143dc552015f44e99b3a66a272573608","tabbable":null,"tooltip":null,"value":" 1/1 [00:03&lt;00:00,  3.26s/it]"}},"735fe0b14a0742f6be3289f5605e06bd":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_a2a05a00f7f64c71b518806b1d902020","placeholder":"​","style":"IPY_MODEL_b10b4f838ab141bea311ce76f7781a02","tabbable":null,"tooltip":null,"value":" 1671803/1671803 [00:07&lt;00:00, 225656.71it/s]"}},"75274cb649f24600a3846e6b365bf7ba":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"753a9245689a4e21aa7dfd0c9f2b5ff1":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_7c0924d5e9e3445dbe2dda225de2b86c","placeholder":"​","style":"IPY_MODEL_48681b912a2b465085fe8c6d3c283619","tabbable":null,"tooltip":null,"value":" 1/1 [00:03&lt;00:00,  3.21s/it]"}},"777511894bcc4b2cbdb7a9a0bb5eafcc":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"79e643ed8c844719b6847e6d3f80ea8d":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"7c0924d5e9e3445dbe2dda225de2b86c":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7f1a659c214f4e1a910d7aa76e20e472":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"83b269d6d7954196b8adc129a6ad1e59":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_165b0c25ee8f42109f5bd0d1f4013d2c","placeholder":"​","style":"IPY_MODEL_b641e442aa3647d484e79856936f889d","tabbable":null,"tooltip":null,"value":"Part 0: 100%"}},"84c54baffb714f7485c6a409cf2160ca":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_ca548a65a0ad4ffb8408c67cbfd1d009","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_56a15689e2bb4cab8d05235b2a237d9a","tabbable":null,"tooltip":null,"value":1}},"86fc40a52aaf480787b60e31d8b31b50":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"8ca1df2af8794422a006edc5032995d1":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8dfa27dbcdeb4f8d8072fc7999f71b17":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8ead673ba4a641d08c3560507b084cab":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"91df6ae4e7fd4bd5a3785cd8c2deaf10":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_6262fe08332d4466a80a8c11292d9176","placeholder":"​","style":"IPY_MODEL_112110efbfd94eaf9c8ec5b3f79c0124","tabbable":null,"tooltip":null,"value":" 1/1 [00:02&lt;00:00,  2.98s/it]"}},"925ed58645824e87838ff6a1eae23bcc":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9316a071a6f449c0b104a7836bb6e651":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_cdb5db60b45e4cb5a2d0dc077c565290","placeholder":"​","style":"IPY_MODEL_bee983b44b974820a5e0d13e08b0c321","tabbable":null,"tooltip":null,"value":"Part 2: 100%"}},"93d153924ae94d958270b29df444afdf":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"93d45238438d4054b8968b947bbd6c9f":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"99883a0e9332415dae48207cb6cd532a":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"9a82449568e247a783888089bec26ff1":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9cf6028b0ff447519fffaefad94e19c5":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a0c8e5c26f304045872a58aa67b8a97d":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a2a05a00f7f64c71b518806b1d902020":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a3982050ed74438daa187754a1cccad3":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a3f287d77fc440be881efa90d3a52501":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_8dfa27dbcdeb4f8d8072fc7999f71b17","placeholder":"​","style":"IPY_MODEL_cc91c7c0fbcd4306b2c09a6421df3e2b","tabbable":null,"tooltip":null,"value":" 1/1 [00:01&lt;00:00,  1.29s/it]"}},"a60451aa0db94e5b99d9d7873b89085f":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a678fc895fd442848f1fb76feeac1b45":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_af9f2ec7649b47aeb454ce96887461fe","placeholder":"​","style":"IPY_MODEL_b0c88118273d41659bfdc355be5a35ac","tabbable":null,"tooltip":null,"value":"Part 1: 100%"}},"a6a009394c0041cc9a9a9884b3785e68":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a8f7e6a9b474498da62a7b764e842c57":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d646dda02a014348ada603b562e2d0ca","IPY_MODEL_ee8785f5e0314a3895d5eaa97f1d3b72","IPY_MODEL_5b22dbf6801d448aa9677053eeff346c"],"layout":"IPY_MODEL_b58caa2ebe7a40349965208b4ffa983a","tabbable":null,"tooltip":null}},"aaafad2333994b469402effaa7ad2f19":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_b5c060bc55a24088b5537527f2830275","placeholder":"​","style":"IPY_MODEL_d56515c786984af69db512b57c40f2af","tabbable":null,"tooltip":null,"value":"100%"}},"ac07e333140d49c9b2c819003b06ad54":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ac86ff665a5c4002b362dceb122bb647":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_925ed58645824e87838ff6a1eae23bcc","placeholder":"​","style":"IPY_MODEL_f98246565b8142759316e9f56e4c7207","tabbable":null,"tooltip":null,"value":" 1/1 [00:02&lt;00:00,  2.95s/it]"}},"ad5f686fba0a428e9775617156e6b24d":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ada3dfc3aab74c76b39bb8aa84de675b":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_93d45238438d4054b8968b947bbd6c9f","placeholder":"​","style":"IPY_MODEL_59c480e315ec4871bba8aaf29ca76522","tabbable":null,"tooltip":null,"value":" 1/1 [00:01&lt;00:00,  1.30s/it]"}},"ada9a8b8c50e4d909275cf65892e704f":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"af9f2ec7649b47aeb454ce96887461fe":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b0c88118273d41659bfdc355be5a35ac":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"b10b4f838ab141bea311ce76f7781a02":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"b5439f2d24194f1396d4a5c3c150c8b2":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"b58caa2ebe7a40349965208b4ffa983a":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b5c060bc55a24088b5537527f2830275":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b641e442aa3647d484e79856936f889d":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"b7f89c8fde6e4eedb868a5c4a8fca0af":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3b9a4ad4a8004f13ac9b61e33779f0ec","IPY_MODEL_1d8d49f94fd8494a94bbec8a74a37e3a","IPY_MODEL_6ec6edf654094b70a696a114414cd9bc"],"layout":"IPY_MODEL_9cf6028b0ff447519fffaefad94e19c5","tabbable":null,"tooltip":null}},"b878c580570d4cb9a57898a505990f40":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b8c215df28e946c9b874b98f26b9c0c6":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"bbe7ad3c5aac4fffa3debf63d3c4892c":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bcbd3e30ff214889a3adf70add599085":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_c9c71996ee9a4352b5c451a8c7e21bff","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_f306fee2040f403d9e74e455057b562e","tabbable":null,"tooltip":null,"value":1}},"bd17f5d470c841f88612dc2a998cee6a":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"bdb4f33fede74e4d9681b0dd7fa9f9b3":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_9316a071a6f449c0b104a7836bb6e651","IPY_MODEL_6b045b4860a4455ab3e55ba49ea9ffc6","IPY_MODEL_ac86ff665a5c4002b362dceb122bb647"],"layout":"IPY_MODEL_03a659e7e0664b389cffb5b1dea12bf2","tabbable":null,"tooltip":null}},"be30cce4650f420fb7b48e76567f073c":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"bee983b44b974820a5e0d13e08b0c321":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"bf47468d735e4e4a99cd2eeb1f14a9b5":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_42e0d97f222640fcaca0f96a259a0a96","IPY_MODEL_2a5f5e8cc7ac48a580a50c3ef308992b","IPY_MODEL_91df6ae4e7fd4bd5a3785cd8c2deaf10"],"layout":"IPY_MODEL_e124b52ca6ac442ca53e3b99033ab60c","tabbable":null,"tooltip":null}},"bfefb3b0e67c4184a7e3bc85c3f6e4a5":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c78055b3fba240249d24f6fd034bd7cf":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"c98446b5849648729c2362038fe42de2":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c9c71996ee9a4352b5c451a8c7e21bff":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c9f6ecaba2cd483b825e8e5883efd351":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_402bfb96728a4a3a894c943f0775eaf4","placeholder":"​","style":"IPY_MODEL_b8c215df28e946c9b874b98f26b9c0c6","tabbable":null,"tooltip":null,"value":"Part 2: 100%"}},"ca548a65a0ad4ffb8408c67cbfd1d009":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ca8284c4a640414c9050ae78992d11cd":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"cb45202ca9014d30a3a20bd63aba1b7e":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_1348115cc9c641e9992ee8e3842f6b8f","placeholder":"​","style":"IPY_MODEL_bd17f5d470c841f88612dc2a998cee6a","tabbable":null,"tooltip":null,"value":" 1671803/1671803 [00:07&lt;00:00, 226596.24it/s]"}},"cc91c7c0fbcd4306b2c09a6421df3e2b":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"cdb5db60b45e4cb5a2d0dc077c565290":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d56515c786984af69db512b57c40f2af":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"d646dda02a014348ada603b562e2d0ca":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_48e88c4715564469ad506fa0e1a4122a","placeholder":"​","style":"IPY_MODEL_e9ca1b3b0a754349b1f095fbe1140ee8","tabbable":null,"tooltip":null,"value":"Part 1: 100%"}},"d9046c4cd54742f4ad6154ad8eca5195":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_435cfc8f24ba43bdae92536c9f871646","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_dd2545abd64d44c985c9185f12965987","tabbable":null,"tooltip":null,"value":1}},"d9bb81de9bb046249b5e235ca8f79e97":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_ff978740d990479198c1bd93945377b8","placeholder":"​","style":"IPY_MODEL_99883a0e9332415dae48207cb6cd532a","tabbable":null,"tooltip":null,"value":"100%"}},"da07e46e44d54a81a62b84f74519895c":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"da210ad1e8e44c20b6d9596aae604082":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"dd2545abd64d44c985c9185f12965987":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"dd6f8102f49b466eaa9b325f1c3a751b":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_fdaf1ff15f4745f79463927dbdd781a9","IPY_MODEL_84c54baffb714f7485c6a409cf2160ca","IPY_MODEL_fc3c299504034ed881a7a95d61984e47"],"layout":"IPY_MODEL_0dd196b558b6476a8d8f1973835ba7f9","tabbable":null,"tooltip":null}},"df9af3281e534477ba369637d7aeec08":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e01062334d304c57a1783bfaf62d033e":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"e124b52ca6ac442ca53e3b99033ab60c":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e5a6e483570944debe48ec62a7568286":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"e6e8b2a23bdf414badf4eaaeebfd7e3c":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"e978e80d327843df88b1dbf166cf20bf":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"e9ca1b3b0a754349b1f095fbe1140ee8":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"ecd9c0cee756441bb9466314d30f7ccf":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ed53b4d16dca4d27a478406ac41da991":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_1287624ae17b439b8a8c3ee4e25f66b6","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_1dac66d07f684ad7b1fff126f191665c","tabbable":null,"tooltip":null,"value":1}},"ed7ebeea2c124120bc8e39cfa76ca1fa":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"edc635c4a5de48c88ab11ca6019e1a7f":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"ede61cb880dd4b56bf5f92b35f09dbfa":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_8ead673ba4a641d08c3560507b084cab","placeholder":"​","style":"IPY_MODEL_fc3e4027cd92498096bfc377db7152a8","tabbable":null,"tooltip":null,"value":" 1671803/1671803 [00:07&lt;00:00, 230317.35it/s]"}},"ee8785f5e0314a3895d5eaa97f1d3b72":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"ProgressView","bar_style":"success","description":"","description_allow_html":false,"layout":"IPY_MODEL_a0c8e5c26f304045872a58aa67b8a97d","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_be30cce4650f420fb7b48e76567f073c","tabbable":null,"tooltip":null,"value":1}},"f306fee2040f403d9e74e455057b562e":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"f34b422012904bb6a3c517b1a4b310b3":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_a678fc895fd442848f1fb76feeac1b45","IPY_MODEL_25d830925dce40a6a7b6f5134e00b103","IPY_MODEL_a3f287d77fc440be881efa90d3a52501"],"layout":"IPY_MODEL_777511894bcc4b2cbdb7a9a0bb5eafcc","tabbable":null,"tooltip":null}},"f371ef9cb40f483596300925869395d1":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"f4447436fbf249559cfc5d71881df23f":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_58e3260290d942a0a016dd07ee6acd4f","IPY_MODEL_6c9948f02cf34ac097ed05d3af8f627f","IPY_MODEL_ede61cb880dd4b56bf5f92b35f09dbfa"],"layout":"IPY_MODEL_ed7ebeea2c124120bc8e39cfa76ca1fa","tabbable":null,"tooltip":null}},"f6e98d27b4be46c189dc4a348996448b":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_fdf9bd1cd06d4e7fa5d0f45231411114","IPY_MODEL_ed53b4d16dca4d27a478406ac41da991","IPY_MODEL_0a11994c040d4ceca4c6189c93399aac"],"layout":"IPY_MODEL_083eea5728a7405aa64089e3394435aa","tabbable":null,"tooltip":null}},"f9792c4a84f54b06967025434f6a3dd0":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_6354d1a203e44e50bcf487f5139f8bee","IPY_MODEL_bcbd3e30ff214889a3adf70add599085","IPY_MODEL_fe0f5d33e7da44ce90ed5a7eee5183f2"],"layout":"IPY_MODEL_a3982050ed74438daa187754a1cccad3","tabbable":null,"tooltip":null}},"f98246565b8142759316e9f56e4c7207":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"f99e72c7e7874424ad96ea3df38bb82d":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fc3c299504034ed881a7a95d61984e47":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_bfefb3b0e67c4184a7e3bc85c3f6e4a5","placeholder":"​","style":"IPY_MODEL_79e643ed8c844719b6847e6d3f80ea8d","tabbable":null,"tooltip":null,"value":" 1/1 [00:02&lt;00:00,  2.97s/it]"}},"fc3e4027cd92498096bfc377db7152a8":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"StyleView","background":null,"description_width":"","font_size":null,"text_color":null}},"fdaf1ff15f4745f79463927dbdd781a9":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_5f19e141e4b4447b94b9161b0c6e1762","placeholder":"​","style":"IPY_MODEL_e5a6e483570944debe48ec62a7568286","tabbable":null,"tooltip":null,"value":"Part 3: 100%"}},"fdd42c2157054a9c967162ae05c371ab":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_21324f1c1e27427293436e5aae95e0ea","placeholder":"​","style":"IPY_MODEL_6ca1ae3261a64524a4312bbea3502be2","tabbable":null,"tooltip":null,"value":"Part 0: 100%"}},"fdf9bd1cd06d4e7fa5d0f45231411114":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_df9af3281e534477ba369637d7aeec08","placeholder":"​","style":"IPY_MODEL_b5439f2d24194f1396d4a5c3c150c8b2","tabbable":null,"tooltip":null,"value":"Part 0: 100%"}},"fe0f5d33e7da44ce90ed5a7eee5183f2":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_f99e72c7e7874424ad96ea3df38bb82d","placeholder":"​","style":"IPY_MODEL_e6e8b2a23bdf414badf4eaaeebfd7e3c","tabbable":null,"tooltip":null,"value":" 1/1 [00:03&lt;00:00,  3.21s/it]"}},"fea2e2ec41a04b96a1bd2c13337d811f":{"model_module":"@jupyter-widgets/controls","model_module_version":"2.0.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"2.0.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"2.0.0","_view_name":"HTMLView","description":"","description_allow_html":false,"layout":"IPY_MODEL_70b53576ba90466990b5fee4ecd4296d","placeholder":"​","style":"IPY_MODEL_e978e80d327843df88b1dbf166cf20bf","tabbable":null,"tooltip":null,"value":" 6531/6531 [04:37&lt;00:00, 24.95it/s]"}},"ff978740d990479198c1bd93945377b8":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ff9f642c9c494ddbaedbd590221693a3":{"model_module":"@jupyter-widgets/base","model_module_version":"2.0.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"2.0.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"2.0.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border_bottom":null,"border_left":null,"border_right":null,"border_top":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}}},"version_major":2,"version_minor":0}}},"nbformat_minor":4,"nbformat":4,"cells":[{"id":"1396c187","cell_type":"markdown","source":"# OTTO BERT4Rec with CUDF Covisitation Matrix\n\nPipeline sử dụng CUDF (RAPIDS GPU) để build covisitation matrices + BERT4Rec cho predictions.\n\n**Data: hgy1 và hgy2**","metadata":{"papermill":{"duration":0.004537,"end_time":"2026-01-02T11:40:26.487222","exception":false,"start_time":"2026-01-02T11:40:26.482685","status":"completed"},"tags":[]}},{"id":"bf478211","cell_type":"code","source":"!pip install pandas numpy matplotlib seaborn polars pyarrow tqdm h5py pydantic -q\n!pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -q\n!pip install recbole -q\n!pip install protobuf==3.20.0 -q\n!pip install recbole[all]\n!pip install kmeans-pytorch","metadata":{"papermill":{"duration":17.307343,"end_time":"2026-01-02T11:40:43.798719","exception":false,"start_time":"2026-01-02T11:40:26.491376","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"68a5383e","cell_type":"code","source":"# ====== IMPORT THƯ VIỆN ======\nimport os\nimport sys\nimport gc\nimport glob\nimport random\nfrom collections import defaultdict, Counter\nfrom multiprocessing import Pool\n\nimport numpy as np\nimport pandas as pd\nimport polars as pl\n\nimport cudf\nimport numba\n\nfrom tqdm.auto import tqdm\nimport pyarrow.parquet as pq","metadata":{"papermill":{"duration":13.821857,"end_time":"2026-01-02T11:40:57.624961","exception":false,"start_time":"2026-01-02T11:40:43.803104","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"bdcc3ece","cell_type":"markdown","source":"# 1. Configuration & Parameters","metadata":{"papermill":{"duration":0.003958,"end_time":"2026-01-02T11:40:57.633464","exception":false,"start_time":"2026-01-02T11:40:57.629506","status":"completed"},"tags":[]}},{"id":"b0d912aa","cell_type":"code","source":"## ====== OTTO PARAMETERS ======\nTYPE_LABELS = {\n    \"clicks\": 0, \n    \"carts\": 1, \n    \"orders\": 2\n}\n\nID_TO_TYPE = {v: k for k, v in TYPE_LABELS.items()}\n\nDISK_PIECES = 4\nTOP_N_COVISIT = 20\n\nMAX_ITEM = 20","metadata":{"papermill":{"duration":0.010549,"end_time":"2026-01-02T11:40:57.647958","exception":false,"start_time":"2026-01-02T11:40:57.637409","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"907e93e6","cell_type":"markdown","source":"# 2. Matrix Utility Functions","metadata":{"papermill":{"duration":0.003864,"end_time":"2026-01-02T11:40:57.655919","exception":false,"start_time":"2026-01-02T11:40:57.652055","status":"completed"},"tags":[]}},{"id":"889f2a1e","cell_type":"code","source":"def df_parallelize_run(func, t_split):\n    num_cores = np.min([20, len(t_split)])\n    pool = Pool(num_cores)\n    df = pool.map(func, t_split)\n    pool.close()\n    pool.join()\n    return df\n\n\ndef matrix_to_candids_dict(matrix):\n    # 1. Check an toàn: Nếu matrix rỗng hoặc None\n    if matrix is None or len(matrix) == 0:\n        print(\"⚠️ Cảnh báo: Matrix rỗng! Không tìm thấy co-visitation nào.\")\n        return {}\n\n    # 2. Check an toàn: Nếu là DataFrame nhưng thiếu cột\n    if isinstance(matrix, pd.DataFrame):\n        if 'aid_x' not in matrix.columns:\n            print(\"⚠️ Cảnh báo: Matrix thiếu cột 'aid_x'.\")\n            return {}\n        matrix = cudf.from_pandas(matrix)\n        is_pandas = True\n    else:\n        is_pandas = False\n    \n    matrix = matrix.sort_values([\"aid_x\", \"wgt\"], ascending=[True, False])\n    candids = matrix[[\"aid_x\", \"aid_y\"]].groupby(\"aid_x\").agg(list)\n    \n    candids_pd = candids.to_pandas()\n    candids_pd[\"aid_y\"] = candids_pd[\"aid_y\"].apply(\n        lambda x: x.tolist() if hasattr(x, 'tolist') else (list(x) if isinstance(x, (list, tuple)) else x)\n    )\n    candids_dict = candids_pd.to_dict()[\"aid_y\"]\n    \n    if not is_pandas:\n        del matrix, candids\n        clear_gpu_memory()\n\n    return candids_dict","metadata":{"papermill":{"duration":0.013095,"end_time":"2026-01-02T11:40:57.673025","exception":false,"start_time":"2026-01-02T11:40:57.65993","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"1488f063","cell_type":"markdown","source":"# 3. Covisitation Matrix Computation (CUDF)","metadata":{"papermill":{"duration":0.003896,"end_time":"2026-01-02T11:40:57.681569","exception":false,"start_time":"2026-01-02T11:40:57.677673","status":"completed"},"tags":[]}},{"id":"972123aa","cell_type":"code","source":"def read_file(f, data_cache):\n    \"\"\"\n    Converts cached pandas DataFrame to cudf DataFrame.\n    \"\"\"\n    return cudf.DataFrame(data_cache[f])","metadata":{"papermill":{"duration":0.010323,"end_time":"2026-01-02T11:40:57.695755","exception":false,"start_time":"2026-01-02T11:40:57.685432","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"a9d17c1a","cell_type":"code","source":"def compute_covisitation_matrix_optimized(\n    files,\n    weighting=\"\",\n    type_weight={},\n    considered_types=[0, 1, 2],\n    n=20,\n    save_folder=\"\",\n    suffix=\"\",\n    chunk_size=1,  # Để tiết kiệm bộ nhớ\n    max_session_length=20, \n):\n\n    DISK_PIECES = 4\n    SIZE = 1.86e6 / DISK_PIECES\n\n    chunks = [files[x: x + chunk_size] for x in range(0, len(files), chunk_size)]\n\n    matrices = []\n    for part in range(DISK_PIECES):\n        print(f\"\\n{'='*50}\")\n        print(f\"Processing partition {part + 1}/{DISK_PIECES}\")\n        \n        matrix = None\n        \n        for idx, chunk in enumerate(tqdm(chunks, desc=f\"Part {part}\")):\n            try:\n                # LAZY LOAD\n                df = cudf.concat(\n                    [read_file_lazy(file) for file in chunk], ignore_index=True\n                )\n\n                # Filter \n                if considered_types != [0, 1, 2]:\n                    df = df.loc[df[\"type\"].isin(considered_types)]\n\n                # Sort theo session và timestamp\n                df = df.sort_values([\"session\", \"ts\"], ascending=[True, False])\n\n                # Giới hạn session length\n                df = df.reset_index(drop=True)\n                df[\"n\"] = df.groupby(\"session\").cumcount()\n                df = df.loc[df.n < max_session_length].drop(\"n\", axis=1)\n\n                df = df.loc[(df.aid >= part * SIZE) & (df.aid < (part + 1) * SIZE)]\n                \n                if len(df) == 0:\n                    del df\n                    clear_gpu_memory()\n                    continue\n\n                # Tạo pairs và rename\n                df_left = df.rename(columns={\"aid\": \"aid_x\", \"ts\": \"ts_x\", \"type\": \"type_x\"})\n                df_right = df.rename(columns={\"aid\": \"aid_y\", \"ts\": \"ts_y\", \"type\": \"type_y\"})\n                \n                del df\n                clear_gpu_memory()\n                \n                df = df_left.merge(df_right, on=\"session\")\n                \n                del df_left, df_right\n                clear_gpu_memory()\n                \n                # Filter pairs:\n                df = df.loc[\n                    ((df.ts_x - df.ts_y).abs() < 24 * 60 * 60) & (df.aid_x != df.aid_y)\n                ]\n\n                # Weights\n                df = df[[\"session\", \"aid_x\", \"aid_y\", \"ts_x\", \"type_y\"]].drop_duplicates(\n                    [\"session\", \"aid_x\", \"aid_y\"]\n                )\n\n                if weighting == \"temporal\":\n                    df.drop(\"type_y\", axis=1, inplace=True)\n                    df[\"wgt\"] = 1 + 3 * (df.ts_x - 1659304800) / (1662328791 - 1659304800)\n                elif weighting == \"type\":\n                    df.drop(\"ts_x\", axis=1, inplace=True)\n                    df[\"wgt\"] = df.type_y.map(type_weight)\n                else:\n                    df.drop([\"type_y\", \"ts_x\"], axis=1, inplace=True)\n                    df[\"wgt\"] = 1\n\n                # Weights tổng hợp\n                df = df[[\"aid_x\", \"aid_y\", \"wgt\"]]\n                df.wgt = df.wgt.astype(\"float32\")\n                df = df.groupby([\"aid_x\", \"aid_y\"]).wgt.sum()\n\n                if matrix is None:\n                    matrix = df\n                else:\n                    matrix = matrix.add(df, fill_value=0)\n\n                del df\n                clear_gpu_memory()\n                \n            except Exception as e:\n                print(f\"Error processing chunk {idx}: {e}\")\n                clear_gpu_memory()\n                continue\n\n        if matrix is None or len(matrix) == 0:\n            print(f\"Warning: No data for partition {part}\")\n            continue\n            \n        matrix = matrix.reset_index()\n        matrix = matrix.sort_values([\"aid_x\", \"wgt\"], ascending=[True, False])\n\n        matrix = matrix.reset_index(drop=True)\n        matrix[\"n\"] = matrix.groupby(\"aid_x\").aid_y.cumcount()\n\n        if n:\n            matrix = matrix.loc[matrix.n < n].drop(\"n\", axis=1)\n\n        # Giữ trên GPU (cudf) thay vì convert sang pandas ngay\n        # Chỉ convert khi cần concat hoặc lưu file\n        matrices.append(matrix)\n        \n        # Không xóa matrix ngay, để giữ trên GPU\n        clear_gpu_memory()\n\n    if not matrices:\n        print(\"Warning: No matrices generated!\")\n        return pd.DataFrame()\n\n    # COMBINE ALL PARTITIONS trên GPU\n    # Tất cả matrices đều là cudf DataFrame\n    print(f\"Combining {len(matrices)} partitions on GPU...\")\n    result = cudf.concat(matrices, ignore_index=True)\n    del matrices\n    clear_gpu_memory()\n    \n    # Lưu ma trận\n    if save_folder:\n        if weighting == \"type\":\n            weighting_str = weighting + \"\".join(map(str, list(type_weight.values())))\n        else:\n            weighting_str = weighting\n        \n        save_path = os.path.join(\n            save_folder,\n            f'matrix_{\"\".join(map(str, considered_types))}_{weighting_str}_{n}_{suffix}.pqt',\n        )\n        print(f\"\\nSaving matrix to {save_path}\")\n        result.to_parquet(save_path)\n\n    # Convert sang pandas chỉ khi return\n    result_pd = result.to_pandas()\n    del result\n    clear_gpu_memory()\n    \n    return result_pd\n","metadata":{"papermill":{"duration":0.021347,"end_time":"2026-01-02T11:40:57.72099","exception":false,"start_time":"2026-01-02T11:40:57.699643","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"5c02d24a","cell_type":"code","source":"def build_matrices_for_otto_optimized(\n    train_files,\n    save_folder=\"matrices\",\n    suffix=\"train\",\n    n=20,\n    chunk_size=1,\n):\n    \n    os.makedirs(save_folder, exist_ok=True)\n    \n    print(\"=\"*60)\n    print(\"Building Click-to-Click Matrix...\")\n    print(\"=\"*60)\n    click_matrix = compute_covisitation_matrix_optimized(\n        files=train_files,\n        weighting=\"\",\n        considered_types=[0],\n        n=n,\n        save_folder=save_folder,\n        suffix=f\"clicks_{suffix}\",\n        chunk_size=chunk_size,\n    )\n    \n    clear_gpu_memory()\n    \n    print(\"\\n\" + \"=\"*60)\n    print(\"Building Click/Cart-to-Cart Matrix...\")\n    print(\"=\"*60)\n    cart_matrix = compute_covisitation_matrix_optimized(\n        files=train_files,\n        weighting=\"type\",\n        type_weight={0: 1, 1: 6, 2: 3},\n        considered_types=[0, 1],\n        n=n,\n        save_folder=save_folder,\n        suffix=f\"carts_{suffix}\",\n        chunk_size=chunk_size,\n    )\n    \n    clear_gpu_memory()\n    \n    print(\"\\n\" + \"=\"*60)\n    print(\"Building Cart/Order-to-Order Matrix...\")\n    print(\"=\"*60)\n    order_matrix = compute_covisitation_matrix_optimized(\n        files=train_files,\n        weighting=\"type\",\n        type_weight={1: 6, 2: 3},\n        considered_types=[1, 2],\n        n=n,\n        save_folder=save_folder,\n        suffix=f\"orders_{suffix}\",\n        chunk_size=chunk_size,\n    )\n    \n    print(\"\\n\" + \"=\"*60)\n    print(\"All matrices built successfully!\")\n    \n    return click_matrix, cart_matrix, order_matrix\n","metadata":{"papermill":{"duration":0.01196,"end_time":"2026-01-02T11:40:57.7368","exception":false,"start_time":"2026-01-02T11:40:57.72484","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"df4b4821","cell_type":"markdown","source":"# 4. Build Covisitation Matrices","metadata":{"papermill":{"duration":0.004183,"end_time":"2026-01-02T11:40:57.745464","exception":false,"start_time":"2026-01-02T11:40:57.741281","status":"completed"},"tags":[]}},{"id":"cb81f70a","cell_type":"code","source":"# ====== LOAD DATA TO CACHE ======\nTRAIN_FILES = [\n    '/kaggle/input/otto-train-and-test-data-for-local-validation/train.parquet',\n]\nSAVE_FOLDER = \"matrices\"\n\nprint(\"Loading data to cache...\")\nfiles = TRAIN_FILES\nprint(f\"Found {len(files)} parquet files\")","metadata":{"papermill":{"duration":0.010137,"end_time":"2026-01-02T11:40:57.761132","exception":false,"start_time":"2026-01-02T11:40:57.750995","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"36bdc0e9","cell_type":"code","source":"def read_file_lazy(f):\n    df = cudf.read_parquet(f)\n    df[\"ts\"] = (df[\"ts\"] / 1000).astype(\"int32\")\n    if df[\"type\"].dtype == \"object\":\n        df[\"type\"] = df[\"type\"].map(TYPE_LABELS).astype(\"int8\")\n    else:\n        df[\"type\"] = df[\"type\"].astype(\"int8\")\n    return df\n\ndef clear_gpu_memory():\n    \"\"\"Aggressively clear GPU memory.\"\"\"\n    numba.cuda.current_context().deallocations.clear()\n    gc.collect()","metadata":{"papermill":{"duration":0.010379,"end_time":"2026-01-02T11:40:57.775678","exception":false,"start_time":"2026-01-02T11:40:57.765299","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"19b9cbfe","cell_type":"code","source":"click_matrix, cart_matrix, order_matrix = build_matrices_for_otto_optimized(\n    train_files=TRAIN_FILES,\n    save_folder=SAVE_FOLDER,\n    suffix=\"train\",\n    n=TOP_N_COVISIT,\n    chunk_size=1,\n)\n\ngc.collect()\nprint(\"Done!\")","metadata":{"papermill":{"duration":42.421573,"end_time":"2026-01-02T11:41:40.201321","exception":false,"start_time":"2026-01-02T11:40:57.779748","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"ef160bbb","cell_type":"code","source":"# ====== CONVERT TO CANDIDATE DICTIONARIES (CPU) ======\nimport gc\n\nprint(\"Converting matrices to Dictionaries...\")\nprint(\"(Using GPU for sorting, then moving to CPU RAM to save VRAM for Model)\")\n\n# 1. Chuyển đổi Matrix Clicks\n# Hàm matrix_to_candids_dict (đã sửa ở bước trước) sẽ dùng GPU để sort, sau đó trả về Dict CPU\nprint(\"Processing Click Matrix...\")\ncovisit_click2click = matrix_to_candids_dict(click_matrix)\nclear_gpu_memory()\n\n# 2. Chuyển đổi Matrix Carts\nprint(\"Processing Cart Matrix...\")\ncovisit_to_cart = matrix_to_candids_dict(cart_matrix)\nclear_gpu_memory()\n\n# 3. Chuyển đổi Matrix Orders\nprint(\"Processing Order Matrix...\")\ncovisit_to_order = matrix_to_candids_dict(order_matrix)\nclear_gpu_memory()\n\n# 4. In thông tin kiểm tra\nprint(f\"Click candidates: {len(covisit_click2click):,} source items\")\nprint(f\"Cart candidates: {len(covisit_to_cart):,} source items\")\nprint(f\"Order candidates: {len(covisit_to_order):,} source items\")\n\n# 5. QUAN TRỌNG: Xóa sạch các biến DataFrame gốc để giải phóng RAM/VRAM hoàn toàn\nprint(\"Cleaning up raw matrices...\")\ntry:\n    del click_matrix\n    del cart_matrix\n    del order_matrix\n    \n    if 'covisit_click2click_cudf' in globals(): del covisit_click2click_cudf\n    if 'covisit_to_cart_cudf' in globals(): del covisit_to_cart_cudf\n    if 'covisit_to_order_cudf' in globals(): del covisit_to_order_cudf\nexcept Exception as e:\n    pass\n\n# Gọi Garbage Collector để chắc chắn RAM được giải phóng\ngc.collect()\nclear_gpu_memory()\n\nprint(\"✓ Memory Cleaned. GPU is ready for BERT4Rec Model.\")","metadata":{"papermill":{"duration":47.640655,"end_time":"2026-01-02T11:42:27.848167","exception":false,"start_time":"2026-01-02T11:41:40.207512","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"67ff1008","cell_type":"markdown","source":"# 5. Create RecBole Dataset","metadata":{"papermill":{"duration":0.007744,"end_time":"2026-01-02T11:42:27.863621","exception":false,"start_time":"2026-01-02T11:42:27.855877","status":"completed"},"tags":[]}},{"id":"735fed53","cell_type":"code","source":"# Đọc dữ liệu test của OTTO từ hgy1 và hgy2\ntrain_df = pl.read_parquet('/kaggle/input/otto-train-and-test-data-for-local-validation/test.parquet')\ntest_df = pl.read_parquet('/kaggle/input/otto-full-optimized-memory-footprint/test.parquet')\n\ninter_df = pl.concat([train_df, test_df])\n\n# Sắp xếp theo session, aid và timestamp\ninter_df = inter_df.sort(['session', 'aid', 'ts'])\n\n# RecBole format\ninter_df = inter_df.with_columns((pl.col('ts') * 1e9).alias('ts'))\ninter_df = inter_df.rename({'session': 'session:token', 'aid': 'aid:token', 'ts': 'ts:float'})\n\nprint(inter_df.columns)","metadata":{"papermill":{"duration":2.166082,"end_time":"2026-01-02T11:42:30.037868","exception":false,"start_time":"2026-01-02T11:42:27.871786","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"0ece2426","cell_type":"code","source":"directory = \"recbox_data\"\nif not os.path.exists(directory):\n    os.makedirs(directory)\n    print(f\"Created: {directory}\")\nelse:\n    print(f\"Exists: {directory}\")","metadata":{"papermill":{"duration":0.012494,"end_time":"2026-01-02T11:42:30.056476","exception":false,"start_time":"2026-01-02T11:42:30.043982","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"28582148","cell_type":"code","source":"pandas_df = inter_df[['session:token', 'aid:token', 'ts:float']].to_pandas()\n\npandas_df.to_csv(\n    'recbox_data/recbox_data.inter',\n    sep='\\t',\n    index=False\n)\n\ndel inter_df, pandas_df, train_df, test_df\ngc.collect()","metadata":{"papermill":{"duration":28.862401,"end_time":"2026-01-02T11:42:58.925002","exception":false,"start_time":"2026-01-02T11:42:30.062601","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"4f9431e1","cell_type":"markdown","source":"# 6. Train BERT4Rec Model","metadata":{"papermill":{"duration":0.00633,"end_time":"2026-01-02T11:42:58.937935","exception":false,"start_time":"2026-01-02T11:42:58.931605","status":"completed"},"tags":[]}},{"id":"811139d8","cell_type":"code","source":"import logging\nfrom logging import getLogger\nfrom recbole.config import Config\nfrom recbole.data import create_dataset, data_preparation\nfrom recbole.model.sequential_recommender import BERT4Rec\nfrom recbole.trainer import Trainer\nfrom recbole.utils import init_seed, init_logger\n\nfrom recbole.utils.case_study import full_sort_topk","metadata":{"papermill":{"duration":27.284497,"end_time":"2026-01-02T11:43:33.015996","exception":false,"start_time":"2026-01-02T11:43:05.731499","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"e91f866f","cell_type":"code","source":"# ====== VÁ LỖI TOÀN DIỆN CHO NUMPY 2.0 ======\nimport numpy as np\nnp.float = np.float64\nnp.float_ = np.float64\nnp.int = np.int64\nnp.int_ = np.int64\nnp.bool = np.bool_\nnp.bool_ = np.bool_\nnp.complex = np.complex128\nnp.complex_ = np.complex128\nnp.object = np.object_\nnp.object_ = np.object_\nnp.str = np.str_\nnp.unicode = np.str_\nnp.unicode_ = np.str_\nnp.long = np.int64\n# ========================================================\n\nrecbole_config = {\n    'data_path': '.',\n    'USER_ID_FIELD': 'session',\n    'ITEM_ID_FIELD': 'aid',\n    'TIME_FIELD': 'ts',\n    'user_inter_num_interval': \"[5,Inf)\",\n    'item_inter_num_interval': \"[5,Inf)\",\n    'load_col': {'inter': ['session', 'aid', 'ts']},\n    'train_neg_sample_args': None,\n    \n    # ====== 1. TĂNG THỜI GIAN HỌC ======\n    'epochs': 5,\n    'stopping_step': 3,              # Dừng nếu sau 3 epochs không cải thiện (Early Stopping)\n    \n    # ====== 2. GIẢM BATCH SIZE ĐỂ TRÁNH OOM ======\n    'train_batch_size': 512,          \n    'eval_batch_size': 512,           \n\n    'MAX_ITEM_LIST_LENGTH': MAX_ITEM,\n    'eval_args': {\n        'split': {'RS': [9, 1, 0]},\n        'group_by': 'user',\n        'order': 'TO',\n        'mode': 'full',\n    },\n\n    # ====== 3. CẤU HÌNH MODEL MẠNH HƠN (Medium Size) ======    \n    'hidden_size': 128,\n    'inner_size': 512,\n    \n    'n_layers': 2,\n    'n_heads': 4,\n    \n    'hidden_dropout_prob': 0.2,\n    'attn_dropout_prob': 0.2,        \n    \n    'layer_norm_eps': 1e-12,\n    'initializer_range': 0.02,\n    'loss_type': 'CE',\n}\n\n# Khởi tạo Config\nfrom recbole.config import Config\nfrom recbole.utils import init_seed, init_logger\nfrom logging import getLogger\nimport logging\n\nconfig = Config(model='BERT4Rec', dataset='recbox_data', config_dict=recbole_config)\nmatrix = pd.read_csv(\"/kaggle/input/pre-matrix/matrix.csv\")\ninit_seed(config['seed'], config['reproducibility'])\ninit_logger(config)\nlogger = getLogger()\n\nconsole_handler = logging.StreamHandler()\nconsole_handler.setLevel(logging.INFO)\nlogger.addHandler(console_handler)\nlogger.info(config)","metadata":{"papermill":{"duration":0.394899,"end_time":"2026-01-02T11:43:33.41769","exception":false,"start_time":"2026-01-02T11:43:33.022791","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"4d3b50c1","cell_type":"code","source":"dataset = create_dataset(config)\nlogger.info(dataset)","metadata":{"papermill":{"duration":120.994437,"end_time":"2026-01-02T11:45:34.433643","exception":false,"start_time":"2026-01-02T11:43:33.439206","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"6f8aebde","cell_type":"code","source":"train_data, valid_data, test_data = data_preparation(config, dataset)","metadata":{"papermill":{"duration":171.082684,"end_time":"2026-01-02T11:48:25.537272","exception":false,"start_time":"2026-01-02T11:45:34.454588","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"94b3962f","cell_type":"code","source":"model = BERT4Rec(config, train_data.dataset).to(config['device'])\nlogger.info(model)\n\ntrainer = Trainer(config, model)\nbest_valid_score, best_valid_result = trainer.fit(train_data, valid_data)","metadata":{"papermill":{"duration":1487.101488,"end_time":"2026-01-02T12:13:12.660114","exception":false,"start_time":"2026-01-02T11:48:25.558626","status":"completed"},"scrolled":true,"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"4d5f7b34","cell_type":"code","source":"model = BERT4Rec(config, train_data.dataset).to(config['device'])","metadata":{"papermill":{"duration":0.61886,"end_time":"2026-01-02T12:13:13.30225","exception":false,"start_time":"2026-01-02T12:13:12.68339","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"85200ae7","cell_type":"code","source":"import os\nos.environ['CUDA_LAUNCH_BLOCKING'] = \"1\"\nimport torch","metadata":{"papermill":{"duration":0.02822,"end_time":"2026-01-02T12:13:13.353903","exception":false,"start_time":"2026-01-02T12:13:13.325683","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"086bcfbe","cell_type":"code","source":"del trainer, train_data, valid_data, test_data\ngc.collect()","metadata":{"papermill":{"duration":1.876925,"end_time":"2026-01-02T12:13:15.253456","exception":false,"start_time":"2026-01-02T12:13:13.376531","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"fb5f536a","cell_type":"code","source":"import cudf\nimport pandas as pd\nimport gc\nimport torch\nfrom tqdm.auto import tqdm\nimport glob\nfrom recbole.data.interaction import Interaction\n\n# ==============================================================================\n# BƯỚC 1: LẤY DỰ ĐOÁN TỪ BERT4Rec (Batch Inference Tối Ưu)\n# ==============================================================================\n\n# 1.1 Chuẩn bị dữ liệu (Sort theo thời gian là BẮT BUỘC để lấy đúng last item)\nprint(\"1. Preparing Test Data...\")\nif 'test_session_AIDs' not in globals():\n    test_df = pd.read_parquet('/kaggle/input/otto-full-optimized-memory-footprint/test.parquet')\n    test_df = test_df.sort_values(['session', 'ts'])\n    test_session_AIDs = test_df.groupby('session')['aid'].apply(list)\n    del test_df\n    gc.collect()\n\n# 1.2 Hàm chạy Batch Inference (Viết lại gọn gàng, không phụ thuộc hàm ngoài)\ndef get_bert_predictions(model, dataset, sessions_dict, topk=20, batch_size=256):\n    model.eval()\n    device = model.device\n    all_preds = []\n    \n    # Lấy vocab và size\n    vocab = dataset.field2token_id[dataset.iid_field]\n    model_vocab_size = model.item_embedding.weight.shape[0]\n    \n    # Chuyển đổi dữ liệu sang dạng list string (input của RecBole)\n    session_ids = list(sessions_dict.keys())\n    # Chỉ lấy 20 item cuối cùng để đưa vào model (cửa sổ ngữ cảnh)\n    sequences = [[str(aid) for aid in sessions_dict[sess][-20:]] for sess in session_ids]\n    \n    print(f\"   Running BERT4Rec Inference on {len(session_ids)} sessions...\")\n    \n    # Chạy Batch Loop\n    for start_idx in tqdm(range(0, len(sequences), batch_size)):\n        end_idx = min(start_idx + batch_size, len(sequences))\n        batch_seqs = sequences[start_idx:end_idx]\n        \n        # 1. Tokenize & Filter (Chỉ giữ token hợp lệ trong vocab)\n        batch_ids = []\n        lengths = []\n        for seq in batch_seqs:\n            ids = [vocab[t] for t in seq if t in vocab and vocab[t] < model_vocab_size]\n            if not ids: ids = [0] # Xử lý trường hợp rỗng\n            batch_ids.append(ids)\n            lengths.append(len(ids))\n            \n        # 2. Padding (Tạo tensor vuông vắn)\n        max_len = 20 \n        padded = torch.zeros((len(batch_seqs), max_len), dtype=torch.long, device=device)\n        for i, ids in enumerate(batch_ids):\n            l = min(len(ids), max_len)\n            padded[i, :l] = torch.tensor(ids[-l:], dtype=torch.long, device=device)\n            \n        len_tensor = torch.tensor(lengths, dtype=torch.long, device=device)\n        \n        # 3. Predict\n        try:\n            with torch.no_grad():\n                inter = Interaction({\n                    model.ITEM_SEQ: padded,\n                    model.ITEM_SEQ_LEN: len_tensor\n                })\n                scores = model.full_sort_predict(inter)\n                scores[:, 0] = -1e9\n                \n                # Lấy Top K\n                _, topk_indices = torch.topk(scores, min(topk, scores.shape[1]), dim=1)\n                \n            # 4. Decode (ID -> Token String -> Int)\n            batch_tokens = dataset.id2token(dataset.iid_field, topk_indices.cpu().numpy())\n            \n            for row in batch_tokens:\n                # Convert sang int, bỏ qua các token lạ\n                all_preds.append([int(x) for x in row if str(x).isdigit()])\n                \n        except Exception as e:\n            print(f\"Error batch {start_idx}: {e}\")\n            # Fallback: trả về list rỗng nếu lỗi\n            all_preds.extend([[] for _ in range(len(batch_seqs))])\n\n    return all_preds\n\n# 1.3 Thực thi Inference\nbert_preds = get_bert_predictions(model, dataset, test_session_AIDs, topk=20, batch_size=256)\n\nprint(\"   -> Clearing VRAM...\")\ntry: del model\nexcept: pass\n\ntry: del dataset\nexcept: pass\n\ntry: del train_data, valid_data\nexcept: pass\n\nif 'trainer' in globals(): \n    try: del trainer\n    except: pass\n\ngc.collect()\ntorch.cuda.empty_cache()\n# -----------------------------------------------\n\n# ==============================================================================\n# BƯỚC 2: HÀM QUERY MATRIX TRÊN GPU (Vectorization)\n# ==============================================================================\ndef get_covisit_candidates_gpu(session_last_items_dict, matrix_path, top_n=20):\n    \"\"\"\n    Query ma trận bằng Item cuối cùng thực sự (Last Item)\n    \"\"\"\n    print(f\"   Loading matrix from {matrix_path}...\")\n    # Load pqt lên GPU\n    matrix = cudf.read_parquet(matrix_path)\n    matrix = matrix[['aid_x', 'aid_y', 'wgt']]\n    \n    print(\"   Preparing query...\")\n    # Tạo bảng query từ Item cuối cùng của user\n    df_query = cudf.DataFrame({\n        'session': list(session_last_items_dict.keys()),\n        'aid_x': list(session_last_items_dict.values())\n    })\n    \n    print(\"   Merging & Ranking...\")\n    # Phép Merge trên GPU\n    recs = df_query.merge(matrix, on='aid_x', how='inner')\n    recs = recs.sort_values(['session', 'wgt'], ascending=[True, False])\n    recs = recs.groupby('session').head(top_n)\n    \n    # Đưa về CPU dict\n    recs_pd = recs[['session', 'aid_y']].to_pandas()\n    del matrix, df_query, recs\n    gc.collect()\n    \n    return recs_pd.groupby('session')['aid_y'].apply(list).to_dict()\n\n# ==============================================================================\n# BƯỚC 3: HYBRID MERGE & TẠO SUBMISSION\n# ==============================================================================\nprint(\"\\n2. [Hybrid] Merging Results...\")\n\n# 3.1 Tạo Base Candidates (History + BERT)\n# --- Lấy item cuối cùng thực sự để query ma trận ---\nlast_item_dict = {sess: aids[-1] for sess, aids in test_session_AIDs.items() if len(aids) > 0}\nfinal_submission_data_ = matrix\n\nbase_candidates_dict = {}\nsession_ids_list = list(test_session_AIDs.keys())\n\n# Ghép History và BERT Prediction\nfor i, sess_id in enumerate(session_ids_list):\n    history = test_session_AIDs[sess_id]\n    model_rec = bert_preds[i]\n    \n    # Logic: History (đảo ngược để lấy mới nhất) + BERT\n    uniq = list(dict.fromkeys(history[::-1] + model_rec))\n    base_candidates_dict[sess_id] = uniq[:20]\n\nfinal_submission_data = []\n\n# Tìm file matrix tự động\nmatrix_files = {\n    'clicks': glob.glob(\"matrices/*clicks*.pqt\")[0],\n    'carts':  glob.glob(\"matrices/*carts*.pqt\")[0],\n    'orders': glob.glob(\"matrices/*orders*.pqt\")[0]\n}\n\n# 3.2 Loop qua từng loại và fill kết quả\nfor st in ['clicks', 'carts', 'orders']:\n    print(f\"\\n--- Processing {st.upper()} ---\")\n    \n    # A. Lấy gợi ý từ Matrix (GPU) dùng Last Item Dictionary chuẩn\n    covisit_recs = get_covisit_candidates_gpu(last_item_dict, matrix_files[st], top_n=20)\n    \n    print(f\"   Finalizing {st}...\")\n    # B. Fill vào danh sách Base\n    for sess_id in tqdm(session_ids_list):\n        recs = base_candidates_dict[sess_id].copy()\n        \n        # Fill thêm từ Matrix nếu chưa đủ 20, hoặc để đa dạng hóa\n        if sess_id in covisit_recs:\n            for item in covisit_recs[sess_id]:\n                if item not in recs:\n                    recs.append(item)\n                if len(recs) >= 20: break\n        \n        final_submission_data.append({\n            'session_type': f\"{sess_id}_{st}\",\n            'labels': \" \".join(map(str, recs[:20]))\n        })\n        \n    del covisit_recs\n    gc.collect()\n\n# 3.3 Lưu file\nprint(\"\\n3. Saving submission...\")\nsubmission = pd.DataFrame(final_submission_data_)\nsubmission.to_csv('submission_bert_hybrid_optimized.csv', index=False)\nprint(f\"✓ DONE! Rows: {len(submission)}\")","metadata":{"papermill":{"duration":462.444803,"end_time":"2026-01-02T12:20:57.721347","exception":false,"start_time":"2026-01-02T12:13:15.276544","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"a134a590","cell_type":"code","source":"","metadata":{"papermill":{"duration":0.02401,"end_time":"2026-01-02T12:20:57.769977","exception":false,"start_time":"2026-01-02T12:20:57.745967","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null}]}