)]}'
{"doc/source/admin/drivers/ansible.rst":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4eeaae291a8689a43b4c6357a940d14a0b47ce1","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    Absolute path to the python interpreter on the managed machine."},{"line_number":236,"context_line":"    Default is taken from ``[ansible]/default_python_interpreter`` option of"},{"line_number":237,"context_line":"    the ironic configuration file."},{"line_number":238,"context_line":"    Ansible uses /usr/bin/python by default."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5fc1f717_746a8bee","line":238,"range":{"start_line":238,"start_character":17,"end_line":238,"end_character":32},"updated":"2019-03-13 06:07:14.000000000","message":"Make it bold as for other default values in this page.\ns/ \"/usr/bin/python\" / \"``/usr/bin/python``\" /","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e116aa9efa12d6f58997e88a515780e1345738e5","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    Absolute path to the python interpreter on the managed machine."},{"line_number":236,"context_line":"    Default is taken from ``[ansible]/default_python_interpreter`` option of"},{"line_number":237,"context_line":"    the ironic configuration file."},{"line_number":238,"context_line":"    Ansible uses /usr/bin/python by default."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5fc1f717_a8bad006","line":238,"range":{"start_line":238,"start_character":17,"end_line":238,"end_character":32},"in_reply_to":"5fc1f717_746a8bee","updated":"2019-03-13 10:25:47.000000000","message":"Done","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"}],"ironic/conf/ansible.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"4f1394ca618af0f46df3ebf4f6dbdaeb2c35244c","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                      \"\u0027driver_info\u0027 field.\")),"},{"line_number":137,"context_line":"    cfg.StrOpt(\u0027default_python_interpreter\u0027,"},{"line_number":138,"context_line":"               help\u003d_(\"Absolute path to the python interpreter on the \""},{"line_number":139,"context_line":"                      \"managed machines. It may be overridden by per-node \""},{"line_number":140,"context_line":"                      \"\u0027ansible_python_interpreter\u0027 option in node\u0027s \""},{"line_number":141,"context_line":"                      \"\u0027driver_info\u0027 field. \""},{"line_number":142,"context_line":"                      \"By default, ansible uses /usr/bin/python\")),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_cad2d05c","line":139,"range":{"start_line":139,"start_character":44,"end_line":139,"end_character":47},"updated":"2019-03-12 05:35:25.000000000","message":"nit: will","commit_id":"9b5dcddb148966a6c216dd2656b90440b90f1761"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"5d63a27f02a07d461c4ca811f80ef05a8a88fc5c","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                      \"\u0027driver_info\u0027 field.\")),"},{"line_number":137,"context_line":"    cfg.StrOpt(\u0027default_python_interpreter\u0027,"},{"line_number":138,"context_line":"               help\u003d_(\"Absolute path to the python interpreter on the \""},{"line_number":139,"context_line":"                      \"managed machines. It may be overridden by per-node \""},{"line_number":140,"context_line":"                      \"\u0027ansible_python_interpreter\u0027 option in node\u0027s \""},{"line_number":141,"context_line":"                      \"\u0027driver_info\u0027 field. \""},{"line_number":142,"context_line":"                      \"By default, ansible uses /usr/bin/python\")),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_83cfd254","line":139,"range":{"start_line":139,"start_character":44,"end_line":139,"end_character":47},"in_reply_to":"5fc1f717_803d882c","updated":"2019-03-12 10:05:34.000000000","message":"Technically it will override default one, but I am not insisting :)","commit_id":"9b5dcddb148966a6c216dd2656b90440b90f1761"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"f00fa29301c2141c5e637c740d268f138774043d","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                      \"\u0027driver_info\u0027 field.\")),"},{"line_number":137,"context_line":"    cfg.StrOpt(\u0027default_python_interpreter\u0027,"},{"line_number":138,"context_line":"               help\u003d_(\"Absolute path to the python interpreter on the \""},{"line_number":139,"context_line":"                      \"managed machines. It may be overridden by per-node \""},{"line_number":140,"context_line":"                      \"\u0027ansible_python_interpreter\u0027 option in node\u0027s \""},{"line_number":141,"context_line":"                      \"\u0027driver_info\u0027 field. \""},{"line_number":142,"context_line":"                      \"By default, ansible uses /usr/bin/python\")),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_803d882c","line":139,"range":{"start_line":139,"start_character":44,"end_line":139,"end_character":47},"in_reply_to":"5fc1f717_cad2d05c","updated":"2019-03-12 09:43:34.000000000","message":"I think I will leave \u0027may\u0027 in this case, to keep consistency with the other options statements.\nIt gives the permission to override, since it\u0027s an option it feels like it should be expressed as a possibility.","commit_id":"9b5dcddb148966a6c216dd2656b90440b90f1761"}],"ironic/drivers/modules/ansible/deploy.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"4f1394ca618af0f46df3ebf4f6dbdaeb2c35244c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"def _get_python_interpreter(node):"},{"line_number":107,"context_line":"    return node.driver_info.get(\u0027ansible_python_interpreter\u0027,"},{"line_number":108,"context_line":"                                CONF.ansible.default_python_interpreter)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _get_configdrive_path(basename):"},{"line_number":112,"context_line":"    return os.path.join(CONF.tempdir, basename + \u0027.cndrive\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_aa5d04ea","line":109,"updated":"2019-03-12 05:35:25.000000000","message":"I\u0027d like to suggest we check the python path in the validate() interface.","commit_id":"9b5dcddb148966a6c216dd2656b90440b90f1761"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4b0fa68cdc0ed81e7a8549a2786dc215d1508201","unresolved":false,"context_lines":[{"line_number":106,"context_line":"def _get_python_interpreter(node):"},{"line_number":107,"context_line":"    return node.driver_info.get(\u0027ansible_python_interpreter\u0027,"},{"line_number":108,"context_line":"                                CONF.ansible.default_python_interpreter)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _get_configdrive_path(basename):"},{"line_number":112,"context_line":"    return os.path.join(CONF.tempdir, basename + \u0027.cndrive\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_8396f292","line":109,"updated":"2019-03-12 09:50:38.000000000","message":"You mean, a basic sanity-check (i.e. that it looks like a path)? We cannot have a proper check for something remote.","commit_id":"9b5dcddb148966a6c216dd2656b90440b90f1761"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"9dc25a2dd29b59072f35438be2d9693dc0895580","unresolved":false,"context_lines":[{"line_number":106,"context_line":"def _get_python_interpreter(node):"},{"line_number":107,"context_line":"    return node.driver_info.get(\u0027ansible_python_interpreter\u0027,"},{"line_number":108,"context_line":"                                CONF.ansible.default_python_interpreter)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _get_configdrive_path(basename):"},{"line_number":112,"context_line":"    return os.path.join(CONF.tempdir, basename + \u0027.cndrive\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_e677c49f","line":109,"in_reply_to":"5fc1f717_23c37e3a","updated":"2019-03-12 10:28:39.000000000","message":"I don\u0027t debate on how someone would like to call their interpreter :D\nJokes aside, thanks, I understand what you mean, I think it would make sense if we also specified that the path to the interpreter needs to be formatted in a certain way or we support only standard paths (e.g. /usr/bin, /usr/local/bin).\nDo we really want to do that ?\nansible itself doesn\u0027t really care AFAIK","commit_id":"9b5dcddb148966a6c216dd2656b90440b90f1761"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"5d63a27f02a07d461c4ca811f80ef05a8a88fc5c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"def _get_python_interpreter(node):"},{"line_number":107,"context_line":"    return node.driver_info.get(\u0027ansible_python_interpreter\u0027,"},{"line_number":108,"context_line":"                                CONF.ansible.default_python_interpreter)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _get_configdrive_path(basename):"},{"line_number":112,"context_line":"    return os.path.join(CONF.tempdir, basename + \u0027.cndrive\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_23c37e3a","line":109,"in_reply_to":"5fc1f717_8396f292","updated":"2019-03-12 10:05:34.000000000","message":"yep, sorry for the confusion, we don’t expect a python interpreter like meow right?\nNote that it’s just a suggestion.","commit_id":"9b5dcddb148966a6c216dd2656b90440b90f1761"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"f00fa29301c2141c5e637c740d268f138774043d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"def _get_python_interpreter(node):"},{"line_number":107,"context_line":"    return node.driver_info.get(\u0027ansible_python_interpreter\u0027,"},{"line_number":108,"context_line":"                                CONF.ansible.default_python_interpreter)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _get_configdrive_path(basename):"},{"line_number":112,"context_line":"    return os.path.join(CONF.tempdir, basename + \u0027.cndrive\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_a011a45f","line":109,"in_reply_to":"5fc1f717_aa5d04ea","updated":"2019-03-12 09:43:34.000000000","message":"I\u0027m not sure how to implement this, and maybe we don\u0027t even need it.\nThe check should validate the interpreter path on the ramdisk, but that happens anyway as ansible will do that and error out in case of failure.\nMaybe you mean a different type of validation or I\u0027m not seeing this correctly ?","commit_id":"9b5dcddb148966a6c216dd2656b90440b90f1761"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4eeaae291a8689a43b4c6357a940d14a0b47ce1","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                                    \u0027\"ansible_playbooks_path\" folder with \u0027"},{"line_number":75,"context_line":"                                    \u0027cleaning steps configuration. Optional.\u0027),"},{"line_number":76,"context_line":"    \u0027ansible_python_interpreter\u0027: _(\u0027Absolute path to the python interpreter \u0027"},{"line_number":77,"context_line":"                                    \u0027 on the managed machines. Optional.\u0027),"},{"line_number":78,"context_line":"}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"COMMON_PROPERTIES \u003d OPTIONAL_PROPERTIES"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_5433cf14","line":77,"range":{"start_line":77,"start_character":37,"end_line":77,"end_character":38},"updated":"2019-03-13 06:07:14.000000000","message":"nit: extra space","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e116aa9efa12d6f58997e88a515780e1345738e5","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                                    \u0027\"ansible_playbooks_path\" folder with \u0027"},{"line_number":75,"context_line":"                                    \u0027cleaning steps configuration. Optional.\u0027),"},{"line_number":76,"context_line":"    \u0027ansible_python_interpreter\u0027: _(\u0027Absolute path to the python interpreter \u0027"},{"line_number":77,"context_line":"                                    \u0027 on the managed machines. Optional.\u0027),"},{"line_number":78,"context_line":"}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"COMMON_PROPERTIES \u003d OPTIONAL_PROPERTIES"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_683e288d","line":77,"range":{"start_line":77,"start_character":37,"end_line":77,"end_character":38},"in_reply_to":"5fc1f717_5433cf14","updated":"2019-03-13 10:25:47.000000000","message":"Done","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b16ad2e8d7e051f1636f4c94df6fe4bd51ceb1a4","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    inventory \u003d os.path.join(root, \u0027inventory\u0027)"},{"line_number":135,"context_line":"    ironic_vars \u003d {\u0027ironic\u0027: extra_vars}"},{"line_number":136,"context_line":"    python_interpreter \u003d _get_python_interpreter(node)"},{"line_number":137,"context_line":"    if python_interpreter:"},{"line_number":138,"context_line":"        ironic_vars[\u0027ansible_python_interpreter\u0027] \u003d python_interpreter"},{"line_number":139,"context_line":"    args \u003d [CONF.ansible.ansible_playbook_script, playbook,"},{"line_number":140,"context_line":"            \u0027-i\u0027, inventory,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_17e549dc","line":137,"range":{"start_line":137,"start_character":7,"end_line":137,"end_character":25},"updated":"2019-03-13 07:41:00.000000000","message":"nit: can this ever evaluate to False? Or is the intention to allow empty value in ironic config to just leave `ansible_python_interpreter` undefined?","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e116aa9efa12d6f58997e88a515780e1345738e5","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    inventory \u003d os.path.join(root, \u0027inventory\u0027)"},{"line_number":135,"context_line":"    ironic_vars \u003d {\u0027ironic\u0027: extra_vars}"},{"line_number":136,"context_line":"    python_interpreter \u003d _get_python_interpreter(node)"},{"line_number":137,"context_line":"    if python_interpreter:"},{"line_number":138,"context_line":"        ironic_vars[\u0027ansible_python_interpreter\u0027] \u003d python_interpreter"},{"line_number":139,"context_line":"    args \u003d [CONF.ansible.ansible_playbook_script, playbook,"},{"line_number":140,"context_line":"            \u0027-i\u0027, inventory,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_285d80e8","line":137,"range":{"start_line":137,"start_character":7,"end_line":137,"end_character":25},"in_reply_to":"5fc1f717_17e549dc","updated":"2019-03-13 10:25:47.000000000","message":"the intention is to allow empty value to leave `ansible_python_interpreter` undefined","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"}],"ironic/tests/unit/drivers/modules/ansible/test_deploy.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"df7f30e3de6726909e66f0d9a6fade4e2936d09f","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        self.assertEqual({\"ansible_python_interpreter\": \"/usr/bin/python4\","},{"line_number":220,"context_line":"                          \"ironic\": {\"foo\": \"bar\"}},"},{"line_number":221,"context_line":"                         json.loads(all_vars))"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    @mock.patch.object(com_utils, \u0027execute\u0027,"},{"line_number":224,"context_line":"                       side_effect\u003dprocessutils.ProcessExecutionError("},{"line_number":225,"context_line":"                           description\u003d\u0027VIKINGS!\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_45cebc2e","line":222,"updated":"2019-03-13 01:40:49.000000000","message":"we could refactor later with a helper so that above two tests would share common bits.","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"}],"releasenotes/notes/add-ansible-python-interpreter-2035e0f23d407aaf.yaml":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4eeaae291a8689a43b4c6357a940d14a0b47ce1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    The same interpreter will be used in all operations that use the"},{"line_number":13,"context_line":"    ansible deploy interface."},{"line_number":14,"context_line":"    It is also possible to override the value set in the configuration"},{"line_number":15,"context_line":"    per-node passing ``ansible_python_interpreter`` as driver-info."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5fc1f717_3725e5ab","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":20},"updated":"2019-03-13 06:07:14.000000000","message":"Can it be:\ns/ per-node passing/ for a node by passing /","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4eeaae291a8689a43b4c6357a940d14a0b47ce1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    The same interpreter will be used in all operations that use the"},{"line_number":13,"context_line":"    ansible deploy interface."},{"line_number":14,"context_line":"    It is also possible to override the value set in the configuration"},{"line_number":15,"context_line":"    per-node passing ``ansible_python_interpreter`` as driver-info."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5fc1f717_973379f6","line":15,"range":{"start_line":15,"start_character":52,"end_line":15,"end_character":66},"updated":"2019-03-13 06:07:14.000000000","message":"s/ as driver-info / in its ``driver_info`` /","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4eeaae291a8689a43b4c6357a940d14a0b47ce1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    The same interpreter will be used in all operations that use the"},{"line_number":13,"context_line":"    ansible deploy interface."},{"line_number":14,"context_line":"    It is also possible to override the value set in the configuration"},{"line_number":15,"context_line":"    per-node passing ``ansible_python_interpreter`` as driver-info."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5fc1f717_f40c3b42","line":15,"range":{"start_line":15,"start_character":55,"end_line":15,"end_character":66},"updated":"2019-03-13 06:07:14.000000000","message":"s/ driver-info / driver_info /","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e116aa9efa12d6f58997e88a515780e1345738e5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    The same interpreter will be used in all operations that use the"},{"line_number":13,"context_line":"    ansible deploy interface."},{"line_number":14,"context_line":"    It is also possible to override the value set in the configuration"},{"line_number":15,"context_line":"    per-node passing ``ansible_python_interpreter`` as driver-info."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5fc1f717_e849b830","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":20},"in_reply_to":"5fc1f717_3725e5ab","updated":"2019-03-13 10:25:47.000000000","message":"sure!","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e116aa9efa12d6f58997e88a515780e1345738e5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    The same interpreter will be used in all operations that use the"},{"line_number":13,"context_line":"    ansible deploy interface."},{"line_number":14,"context_line":"    It is also possible to override the value set in the configuration"},{"line_number":15,"context_line":"    per-node passing ``ansible_python_interpreter`` as driver-info."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5fc1f717_885274dd","line":15,"range":{"start_line":15,"start_character":52,"end_line":15,"end_character":66},"in_reply_to":"5fc1f717_973379f6","updated":"2019-03-13 10:25:47.000000000","message":"Done","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e116aa9efa12d6f58997e88a515780e1345738e5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    The same interpreter will be used in all operations that use the"},{"line_number":13,"context_line":"    ansible deploy interface."},{"line_number":14,"context_line":"    It is also possible to override the value set in the configuration"},{"line_number":15,"context_line":"    per-node passing ``ansible_python_interpreter`` as driver-info."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5fc1f717_a84f3032","line":15,"range":{"start_line":15,"start_character":55,"end_line":15,"end_character":66},"in_reply_to":"5fc1f717_f40c3b42","updated":"2019-03-13 10:25:47.000000000","message":"Done","commit_id":"c7375e78e911d902572b0eee960e4b46497203cb"}]}
