)]}'
{"ironic/drivers/modules/iscsi_deploy.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e8dc6de78fae52535651bae47500e929c89259fc","unresolved":false,"context_lines":[{"line_number":784,"context_line":"        :param step: a clean step dictionary to execute"},{"line_number":785,"context_line":"        :raises: NodeCleaningFailure if the agent does not return a command"},{"line_number":786,"context_line":"            status"},{"line_number":787,"context_line":"        :returns: states.CLEANWAIT to signify the step will be completed async"},{"line_number":788,"context_line":"        \"\"\""},{"line_number":789,"context_line":"        return deploy_utils.agent_execute_clean_step(task, step)"},{"line_number":790,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_ed5b2df8","line":787,"updated":"2015-09-08 10:54:38.000000000","message":"s/async/asynchronously","commit_id":"82921b5e536f697b727f6480f3a73c8fb0fda0f6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"b35566cd372f6491489c41a26a74f0db2eec688f","unresolved":false,"context_lines":[{"line_number":784,"context_line":"        :param step: a clean step dictionary to execute"},{"line_number":785,"context_line":"        :raises: NodeCleaningFailure if the agent does not return a command"},{"line_number":786,"context_line":"            status"},{"line_number":787,"context_line":"        :returns: states.CLEANWAIT to signify the step will be completed async"},{"line_number":788,"context_line":"        \"\"\""},{"line_number":789,"context_line":"        return deploy_utils.agent_execute_clean_step(task, step)"},{"line_number":790,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_207a52f2","line":787,"in_reply_to":"da20952f_ed5b2df8","updated":"2015-09-15 05:42:01.000000000","message":"Done","commit_id":"82921b5e536f697b727f6480f3a73c8fb0fda0f6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8cd059245635dda1e32e30cf134f1a46d9ef24c0","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"        # Tell the conductor we are waiting for the agent to boot."},{"line_number":813,"context_line":"        return states.CLEANWAIT"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"    def tear_down_cleaning(self, task):"},{"line_number":816,"context_line":"        \"\"\"Clean up the PXE and DHCP files after cleaning."}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_a06f20fb","line":813,"updated":"2015-09-10 08:27:13.000000000","message":"I wonder if this function can also be moved to a common location","commit_id":"82921b5e536f697b727f6480f3a73c8fb0fda0f6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"b35566cd372f6491489c41a26a74f0db2eec688f","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"        # Tell the conductor we are waiting for the agent to boot."},{"line_number":813,"context_line":"        return states.CLEANWAIT"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"    def tear_down_cleaning(self, task):"},{"line_number":816,"context_line":"        \"\"\"Clean up the PXE and DHCP files after cleaning."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_40642648","line":813,"in_reply_to":"da20952f_a06f20fb","updated":"2015-09-15 05:42:01.000000000","message":"Done","commit_id":"82921b5e536f697b727f6480f3a73c8fb0fda0f6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8cd059245635dda1e32e30cf134f1a46d9ef24c0","unresolved":false,"context_lines":[{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"},{"line_number":826,"context_line":"        task.driver.boot.clean_up_ramdisk(task)"},{"line_number":827,"context_line":"        deploy_utils.tear_down_cleaning_ports(task)"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"class VendorPassthru(agent_base_vendor.BaseAgentVendor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_407724d4","line":827,"updated":"2015-09-10 08:27:13.000000000","message":"ditto","commit_id":"82921b5e536f697b727f6480f3a73c8fb0fda0f6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"b35566cd372f6491489c41a26a74f0db2eec688f","unresolved":false,"context_lines":[{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"},{"line_number":826,"context_line":"        task.driver.boot.clean_up_ramdisk(task)"},{"line_number":827,"context_line":"        deploy_utils.tear_down_cleaning_ports(task)"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"class VendorPassthru(agent_base_vendor.BaseAgentVendor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_e05a1a83","line":827,"in_reply_to":"da20952f_407724d4","updated":"2015-09-15 05:42:01.000000000","message":"Done","commit_id":"82921b5e536f697b727f6480f3a73c8fb0fda0f6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"285748bbc9a12197f62c40c101e925cbda67d01f","unresolved":false,"context_lines":[{"line_number":783,"context_line":"        :param step: a clean step dictionary to execute"},{"line_number":784,"context_line":"        :raises: NodeCleaningFailure if the agent does not return a command"},{"line_number":785,"context_line":"            status"},{"line_number":786,"context_line":"        :returns: states.CLEANWAIT to signify the step will be completed async"},{"line_number":787,"context_line":"        \"\"\""},{"line_number":788,"context_line":"        return deploy_utils.agent_execute_clean_step(task, step)"},{"line_number":789,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_aac4f85e","line":786,"updated":"2015-09-15 09:24:12.000000000","message":"Forgot to address the s/async/asynchronously here.  Will update it if I throw a new patch set.","commit_id":"0be0da41f8ad65762d29006df1a1064a55414109"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"d90f3343c7cbdf0b9645807a4c78a0c1ab0e8a5e","unresolved":false,"context_lines":[{"line_number":783,"context_line":"        :param step: a clean step dictionary to execute"},{"line_number":784,"context_line":"        :raises: NodeCleaningFailure if the agent does not return a command"},{"line_number":785,"context_line":"            status"},{"line_number":786,"context_line":"        :returns: states.CLEANWAIT to signify the step will be completed async"},{"line_number":787,"context_line":"        \"\"\""},{"line_number":788,"context_line":"        return deploy_utils.agent_execute_clean_step(task, step)"},{"line_number":789,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_92cb5753","line":786,"in_reply_to":"ba15a1d1_aac4f85e","updated":"2015-09-15 15:19:03.000000000","message":"Done","commit_id":"0be0da41f8ad65762d29006df1a1064a55414109"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"970b5f9a97a0305d970378c18c930c1475e0fb91","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":794,"context_line":"        :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":795,"context_line":"            be removed or if new cleaning ports cannot be created"},{"line_number":796,"context_line":"        :returns: states.CLEANWAIT to signify an asynchronous prepare"},{"line_number":797,"context_line":"        \"\"\""},{"line_number":798,"context_line":"        if CONF.iscsi_deploy.enable_cleaning is False:"},{"line_number":799,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_3b6351de","line":796,"updated":"2015-09-15 13:01:45.000000000","message":"nit: also returns None","commit_id":"0be0da41f8ad65762d29006df1a1064a55414109"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"d90f3343c7cbdf0b9645807a4c78a0c1ab0e8a5e","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":794,"context_line":"        :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":795,"context_line":"            be removed or if new cleaning ports cannot be created"},{"line_number":796,"context_line":"        :returns: states.CLEANWAIT to signify an asynchronous prepare"},{"line_number":797,"context_line":"        \"\"\""},{"line_number":798,"context_line":"        if CONF.iscsi_deploy.enable_cleaning is False:"},{"line_number":799,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_52c5bf39","line":796,"in_reply_to":"ba15a1d1_3b6351de","updated":"2015-09-15 15:19:03.000000000","message":"Done","commit_id":"0be0da41f8ad65762d29006df1a1064a55414109"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ff398199e9fd4a5f0c8813b91bd50adc3113b4a3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    # TODO(rameshg87): Remove the below CONF option in Mitaka release."},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027enable_cleaning\u0027,"},{"line_number":84,"context_line":"                default\u003dFalse,"},{"line_number":85,"context_line":"                help\u003d_(\u0027[DEPRECATED] Set this to True to enable in-band \u0027"},{"line_number":86,"context_line":"                       \u0027cleaning using Ironic Python Agent ramdisk. \u0027"},{"line_number":87,"context_line":"                       \u0027Default is False. Ironic Python Agent deploy ramdisk \u0027"},{"line_number":88,"context_line":"                       \u0027should be used for nodes managed by drivers using \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_f16cea36","line":85,"updated":"2015-09-16 11:23:49.000000000","message":"Seems that you haven\u0027t recreated ironic.conf, also might be useful to add deprecated_for_removal\u003dTrue to this option.","commit_id":"5ef6d0382e19da8c72e5e48dbd01d4cc14511a78"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0e1fc2cb010867af05066f11506cee9ed1d61097","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    # TODO(rameshg87): Remove the below CONF option in Mitaka release."},{"line_number":83,"context_line":"    cfg.BoolOpt(\u0027enable_cleaning\u0027,"},{"line_number":84,"context_line":"                default\u003dFalse,"},{"line_number":85,"context_line":"                help\u003d_(\u0027[DEPRECATED] Set this to True to enable in-band \u0027"},{"line_number":86,"context_line":"                       \u0027cleaning using Ironic Python Agent ramdisk. \u0027"},{"line_number":87,"context_line":"                       \u0027Default is False. Ironic Python Agent deploy ramdisk \u0027"},{"line_number":88,"context_line":"                       \u0027should be used for nodes managed by drivers using \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_7c5431fe","line":85,"in_reply_to":"ba15a1d1_f16cea36","updated":"2015-09-16 11:28:15.000000000","message":"Done","commit_id":"5ef6d0382e19da8c72e5e48dbd01d4cc14511a78"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"55ab44df43412c43712ff750639a776419a1b306","unresolved":false,"context_lines":[{"line_number":801,"context_line":"        :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":802,"context_line":"            Returns None if [iscsi_deploy]enable_cleaning is false."},{"line_number":803,"context_line":"        \"\"\""},{"line_number":804,"context_line":"        if CONF.iscsi_deploy.enable_cleaning is False:"},{"line_number":805,"context_line":"            return"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        return deploy_utils.prepare_inband_cleaning("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_49a9e623","line":804,"updated":"2015-09-19 19:37:17.000000000","message":"if not CONF.iscsi_deploy.enable_cleaning:","commit_id":"0095da9fdb5005657d49d615b0e1124c8ec0ef23"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"21b31e497b48de98047012e1055cc78b543d0981","unresolved":false,"context_lines":[{"line_number":801,"context_line":"        :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":802,"context_line":"            Returns None if [iscsi_deploy]enable_cleaning is false."},{"line_number":803,"context_line":"        \"\"\""},{"line_number":804,"context_line":"        if CONF.iscsi_deploy.enable_cleaning is False:"},{"line_number":805,"context_line":"            return"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        return deploy_utils.prepare_inband_cleaning("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_67a5e7b3","line":804,"in_reply_to":"ba15a1d1_49a9e623","updated":"2015-09-21 05:42:34.000000000","message":"Done","commit_id":"0095da9fdb5005657d49d615b0e1124c8ec0ef23"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"55ab44df43412c43712ff750639a776419a1b306","unresolved":false,"context_lines":[{"line_number":814,"context_line":"        :raises NodeCleaningFailure: if the cleaning ports cannot be"},{"line_number":815,"context_line":"            removed"},{"line_number":816,"context_line":"        \"\"\""},{"line_number":817,"context_line":"        if CONF.iscsi_deploy.enable_cleaning is False:"},{"line_number":818,"context_line":"            return"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        deploy_utils.tear_down_inband_cleaning("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_69a62a55","line":817,"updated":"2015-09-19 19:37:17.000000000","message":"ditto","commit_id":"0095da9fdb5005657d49d615b0e1124c8ec0ef23"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"21b31e497b48de98047012e1055cc78b543d0981","unresolved":false,"context_lines":[{"line_number":814,"context_line":"        :raises NodeCleaningFailure: if the cleaning ports cannot be"},{"line_number":815,"context_line":"            removed"},{"line_number":816,"context_line":"        \"\"\""},{"line_number":817,"context_line":"        if CONF.iscsi_deploy.enable_cleaning is False:"},{"line_number":818,"context_line":"            return"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        deploy_utils.tear_down_inband_cleaning("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_07aaeb85","line":817,"in_reply_to":"ba15a1d1_69a62a55","updated":"2015-09-21 05:42:34.000000000","message":"Done","commit_id":"0095da9fdb5005657d49d615b0e1124c8ec0ef23"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bab0800230b709cb8be1c0fe5d246232b1819aaf","unresolved":false,"context_lines":[{"line_number":870,"context_line":"        LOG.warning("},{"line_number":871,"context_line":"            _LW(\"Bash deploy ramdisk doesn\u0027t support in-band cleaning. \""},{"line_number":872,"context_line":"                \"Please use the ironic-python-agent (IPA) ramdisk \""},{"line_number":873,"context_line":"                \"instead for node %s. \"), task.node.uuid)"},{"line_number":874,"context_line":"        try:"},{"line_number":875,"context_line":"            manager.set_node_cleaning_steps(task)"},{"line_number":876,"context_line":"            self.notify_conductor_resume_clean(task)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_7458af8a","line":873,"updated":"2015-10-08 13:21:14.000000000","message":"Anyways it will attempt in-band cleaning step leading to CLEANFAIL state, right?\nIs it possible to append this message to node\u0027s last_error for ease of reference to the user.","commit_id":"366e48350580301cf688bbd444600f6a7d47dd38"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"d264de227ad566a33e3c63cdbaed156863627aaf","unresolved":false,"context_lines":[{"line_number":870,"context_line":"        LOG.warning("},{"line_number":871,"context_line":"            _LW(\"Bash deploy ramdisk doesn\u0027t support in-band cleaning. \""},{"line_number":872,"context_line":"                \"Please use the ironic-python-agent (IPA) ramdisk \""},{"line_number":873,"context_line":"                \"instead for node %s. \"), task.node.uuid)"},{"line_number":874,"context_line":"        try:"},{"line_number":875,"context_line":"            manager.set_node_cleaning_steps(task)"},{"line_number":876,"context_line":"            self.notify_conductor_resume_clean(task)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_645d2b46","line":873,"in_reply_to":"7a2fa921_7458af8a","updated":"2015-10-09 10:15:55.000000000","message":"No it won\u0027t fail.  We have guarded get_clean_steps() to be invoked only if agent_url is found in driver_internal_info.  So it will still execute the clean steps for all other interfaces - for example, in pxe_ilo, it will still execute the clean steps in management interface even if bash ramdisk is used.","commit_id":"366e48350580301cf688bbd444600f6a7d47dd38"}],"ironic/tests/drivers/test_iscsi_deploy.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"970b5f9a97a0305d970378c18c930c1475e0fb91","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"    @mock.patch.object(deploy_utils, \u0027prepare_inband_cleaning\u0027, autospec\u003dTrue)"},{"line_number":1062,"context_line":"    def test_prepare_cleaning_disabled(self, prepare_inband_cleaning_mock):"},{"line_number":1063,"context_line":"        with task_manager.acquire("},{"line_number":1064,"context_line":"                self.context, self.node[\u0027uuid\u0027], shared\u003dFalse) as task:"},{"line_number":1065,"context_line":"            self.assertIsNone(task.driver.deploy.prepare_cleaning(task))"},{"line_number":1066,"context_line":"            self.assertFalse(prepare_inband_cleaning_mock.called)"},{"line_number":1067,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_7bc5498c","line":1064,"updated":"2015-09-15 13:01:45.000000000","message":"nit: self.node.uuid","commit_id":"0be0da41f8ad65762d29006df1a1064a55414109"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"d90f3343c7cbdf0b9645807a4c78a0c1ab0e8a5e","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"    @mock.patch.object(deploy_utils, \u0027prepare_inband_cleaning\u0027, autospec\u003dTrue)"},{"line_number":1062,"context_line":"    def test_prepare_cleaning_disabled(self, prepare_inband_cleaning_mock):"},{"line_number":1063,"context_line":"        with task_manager.acquire("},{"line_number":1064,"context_line":"                self.context, self.node[\u0027uuid\u0027], shared\u003dFalse) as task:"},{"line_number":1065,"context_line":"            self.assertIsNone(task.driver.deploy.prepare_cleaning(task))"},{"line_number":1066,"context_line":"            self.assertFalse(prepare_inband_cleaning_mock.called)"},{"line_number":1067,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_f2ead3ab","line":1064,"in_reply_to":"ba15a1d1_7bc5498c","updated":"2015-09-15 15:19:03.000000000","message":"Done","commit_id":"0be0da41f8ad65762d29006df1a1064a55414109"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"970b5f9a97a0305d970378c18c930c1475e0fb91","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"                       autospec\u003dTrue)"},{"line_number":1079,"context_line":"    def test_tear_down_cleaning_disabled(self, tear_down_cleaning_mock):"},{"line_number":1080,"context_line":"        with task_manager.acquire("},{"line_number":1081,"context_line":"                self.context, self.node[\u0027uuid\u0027], shared\u003dFalse) as task:"},{"line_number":1082,"context_line":"            task.driver.deploy.tear_down_cleaning(task)"},{"line_number":1083,"context_line":"            self.assertFalse(tear_down_cleaning_mock.called)"},{"line_number":1084,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_bb41a10d","line":1081,"updated":"2015-09-15 13:01:45.000000000","message":"ditto","commit_id":"0be0da41f8ad65762d29006df1a1064a55414109"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"d90f3343c7cbdf0b9645807a4c78a0c1ab0e8a5e","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"                       autospec\u003dTrue)"},{"line_number":1079,"context_line":"    def test_tear_down_cleaning_disabled(self, tear_down_cleaning_mock):"},{"line_number":1080,"context_line":"        with task_manager.acquire("},{"line_number":1081,"context_line":"                self.context, self.node[\u0027uuid\u0027], shared\u003dFalse) as task:"},{"line_number":1082,"context_line":"            task.driver.deploy.tear_down_cleaning(task)"},{"line_number":1083,"context_line":"            self.assertFalse(tear_down_cleaning_mock.called)"},{"line_number":1084,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_b2cd3b5f","line":1081,"in_reply_to":"ba15a1d1_bb41a10d","updated":"2015-09-15 15:19:03.000000000","message":"Done","commit_id":"0be0da41f8ad65762d29006df1a1064a55414109"}]}
