)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"70f9d2054cbe9616e97b35bbc33373ea889d4867","unresolved":false,"context_lines":[{"line_number":11,"context_line":"to OSC\u0027s \"router remove port\"."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ifceabce080aacac9f6410c809fcc097760e0c5ee"},{"line_number":14,"context_line":"Partial-Bug: #1546849"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"1af94dfe_8c7c4eed","line":14,"updated":"2016-03-18 14:20:27.000000000","message":"This is also implementing the neutron-client-advanced-router blueprint.","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"}],"doc/source/command-objects/router-port.rst":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"a842caaf58358ab12163a087af2afcc3ad10dcd4","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    os router remove port"},{"line_number":36,"context_line":"        \u003cport\u003e"},{"line_number":37,"context_line":"        \u003crouter\u003e"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. option:: \u003cport\u003e"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1af94dfe_8192d19d","line":37,"updated":"2016-03-16 16:34:32.000000000","message":"Other commands like this I have seen put the main object first, and the object being added second.  I think this should be \"os router remove port \u003crouter\u003e \u003cport\u003e\" and should be changed in the docs and in the command itself.","commit_id":"2c32a6ac18bd685f77dd48875408d64c84ae3e03"},{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"a842caaf58358ab12163a087af2afcc3ad10dcd4","unresolved":false,"context_lines":[{"line_number":44,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Router from which port would be removed (name or ID)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1af94dfe_c15e9911","line":47,"updated":"2016-03-16 16:34:32.000000000","message":"Both of the options should use the \"describe\" heading since they are positional arguments.  Here is an example from \"server remove security group\":\n\nserver remove security group\n----------------------------\n\nRemove security group from server\n\n.. program:: server remove security group\n.. code:: bash\n\n    os server remove security group\n        \u003cserver\u003e\n        \u003cgroup\u003e\n\n.. describe:: \u003cserver\u003e\n\n    Name or ID of server to use\n\n.. describe:: \u003cgroup\u003e\n\n    Name or ID of security group to remove from server","commit_id":"2c32a6ac18bd685f77dd48875408d64c84ae3e03"}],"doc/source/command-objects/router.rst":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"db8377032fecbbf84aebbe4b0d9c25414e47ec11","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    Router to which port would be added (name or ID)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"router remove port"},{"line_number":172,"context_line":"---------------"},{"line_number":173,"context_line":"Remove a port from a router"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":".. program:: router remove port"}],"source_content_type":"text/x-rst","patch_set":17,"id":"1af94dfe_43642848","line":172,"range":{"start_line":171,"start_character":0,"end_line":172,"end_character":15},"updated":"2016-03-17 08:08:38.000000000","message":"nit: underline don\u0027t match with title length.\n\nsorry, I love consistency :-)","commit_id":"0636056cff945301f703db7a0e898983874ccaf9"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"88dbc3c972f02b44929befa478c0f571cf98cbcb","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    Router from which port would be removed (name or ID)"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"1af94dfe_58bcc1ba","line":189,"updated":"2016-03-18 14:16:42.000000000","message":"I suggest \"will\" instead of \"would\".","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"39e46dc4a60082c10591e4cd93466ec95811d32d","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    Router to which port will be added (name or ID)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"router remove port"},{"line_number":173,"context_line":"------------------"},{"line_number":174,"context_line":"Remove a port from a router"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"1af94dfe_7ee7dbab","line":172,"updated":"2016-03-18 17:07:20.000000000","message":"sort","commit_id":"346b05424524b78c768d3c0f2091300716fc038f"}],"openstackclient/network/v2/router_interface.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"a842caaf58358ab12163a087af2afcc3ad10dcd4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def take_action(self, parsed_args):"},{"line_number":62,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":63,"context_line":"        obj \u003d client.find_router(parsed_args.router, ignore_missing\u003dFalse)"},{"line_number":64,"context_line":"        if parsed_args.port:"},{"line_number":65,"context_line":"            port \u003d client.find_port(parsed_args.port, ignore_missing\u003dFalse)"},{"line_number":66,"context_line":"            client.router_remove_interface(obj, port_id\u003dport.id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_61b505ed","line":64,"updated":"2016-03-16 16:34:32.000000000","message":"Since port is required, you shouldn\u0027t need this if statement","commit_id":"2c32a6ac18bd685f77dd48875408d64c84ae3e03"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"88dbc3c972f02b44929befa478c0f571cf98cbcb","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#   under the License."},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"\"\"\"Router-Interface implementations\"\"\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from openstackclient.common import command"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1af94dfe_0c4f9e37","line":14,"updated":"2016-03-18 14:16:42.000000000","message":"Why not include these with the router commands in router.py?  That is how other commands have handled this.","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"a9481d2c372eb42ac267c30f7b102dd64d1a5173","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#   under the License."},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"\"\"\"Router-Interface implementations\"\"\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from openstackclient.common import command"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1af94dfe_7ba1b2f7","line":14,"in_reply_to":"1af94dfe_0c4f9e37","updated":"2016-03-18 15:27:46.000000000","message":"Because router.py would be elongated when I add subnet related changes as well...\nI considered it better to keep it separate....\nBesides, I do not think it is much of an issue, we can always merge it later on.","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"88dbc3c972f02b44929befa478c0f571cf98cbcb","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class RemovePortFromRouter(command.Command):"},{"line_number":44,"context_line":"    \"\"\"Remove port interface from router\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_parser(self, prog_name):"},{"line_number":47,"context_line":"        parser \u003d super(RemovePortFromRouter, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af94dfe_18d6b9f0","line":44,"updated":"2016-03-18 14:16:42.000000000","message":"Please update to match the doc.","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"a9481d2c372eb42ac267c30f7b102dd64d1a5173","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class RemovePortFromRouter(command.Command):"},{"line_number":44,"context_line":"    \"\"\"Remove port interface from router\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_parser(self, prog_name):"},{"line_number":47,"context_line":"        parser \u003d super(RemovePortFromRouter, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af94dfe_5b34b6dc","line":44,"in_reply_to":"1af94dfe_18d6b9f0","updated":"2016-03-18 15:27:46.000000000","message":"Done","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"88dbc3c972f02b44929befa478c0f571cf98cbcb","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def take_action(self, parsed_args):"},{"line_number":61,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":62,"context_line":"        port \u003d client.find_port(parsed_args.port, ignore_missing\u003dFalse)"},{"line_number":63,"context_line":"        client.router_remove_interface(client.find_router("},{"line_number":64,"context_line":"            parsed_args.router, ignore_missing\u003dFalse), port_id\u003dport.id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af94dfe_985c897e","line":63,"updated":"2016-03-18 14:16:42.000000000","message":"We don\u0027t have an SDK release with the enhancements that you made to this interface.","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"a9481d2c372eb42ac267c30f7b102dd64d1a5173","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def take_action(self, parsed_args):"},{"line_number":61,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":62,"context_line":"        port \u003d client.find_port(parsed_args.port, ignore_missing\u003dFalse)"},{"line_number":63,"context_line":"        client.router_remove_interface(client.find_router("},{"line_number":64,"context_line":"            parsed_args.router, ignore_missing\u003dFalse), port_id\u003dport.id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af94dfe_bb597a37","line":63,"in_reply_to":"1af94dfe_985c897e","updated":"2016-03-18 15:27:46.000000000","message":"Now we do :)","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"39e46dc4a60082c10591e4cd93466ec95811d32d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            parsed_args.router, ignore_missing\u003dFalse), port_id\u003dport.id)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class RemovePortFromRouter(command.Command):"},{"line_number":44,"context_line":"    \"\"\"Remove a port from a router\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":21,"id":"1af94dfe_be05e346","line":43,"updated":"2016-03-18 17:07:20.000000000","message":"put in router.py","commit_id":"346b05424524b78c768d3c0f2091300716fc038f"}],"openstackclient/tests/network/v2/fakes.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"a842caaf58358ab12163a087af2afcc3ad10dcd4","unresolved":false,"context_lines":[{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    @staticmethod"},{"line_number":450,"context_line":"    def remove_port(attrs\u003d{}, methods\u003d{}):"},{"line_number":451,"context_line":"        \"\"\"Remove a fake port from a fake router."},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        :param Dictionary attrs:"},{"line_number":454,"context_line":"            A dictionary with all attributes"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_f45a6c82","line":451,"updated":"2016-03-16 16:34:32.000000000","message":"I don\u0027t think this remove_port method is needed. From what I can see, all it does is creating a FakeRouter of sorts, but one with only a few of the attributes. I think this method can be removed, and the test modified not to call it (and if needed just call create_one_router with the specific attrs).","commit_id":"2c32a6ac18bd685f77dd48875408d64c84ae3e03"}],"openstackclient/tests/network/v2/test_router_interface.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"a842caaf58358ab12163a087af2afcc3ad10dcd4","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    _router \u003d net_fakes.FakeRouter.create_one_router()"},{"line_number":83,"context_line":"    _port \u003d net_fakes.FakePort.create_one_port()"},{"line_number":84,"context_line":"    _interface \u003d net_fakes.FakeRouter.remove_port("},{"line_number":85,"context_line":"        attrs\u003d{\u0027id\u0027: _router.id, \u0027port\u0027: _port.id})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    columns \u003d ("},{"line_number":88,"context_line":"        \u0027port\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_65b51030","line":85,"updated":"2016-03-16 16:34:32.000000000","message":"I think this _interface object is unnecessary and confusing (and most likely the whole FakeRouter.remote_port() method as well).  I think the method just returns a FakeRouter with the specified id and port, which isn\u0027t different from the _router instance above in any useful way.","commit_id":"2c32a6ac18bd685f77dd48875408d64c84ae3e03"},{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"a842caaf58358ab12163a087af2afcc3ad10dcd4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    data \u003d ("},{"line_number":92,"context_line":"        _interface.port,"},{"line_number":93,"context_line":"        _interface.id,"},{"line_number":94,"context_line":"    )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def setUp(self):"},{"line_number":97,"context_line":"        super(TestRemovePortFromRouter, self).setUp()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_c5d06456","line":94,"updated":"2016-03-16 16:34:32.000000000","message":"columns and data aren\u0027t being used for comparison (since the router_remove_interface sdk call returns None), so these can be removed.","commit_id":"2c32a6ac18bd685f77dd48875408d64c84ae3e03"},{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"a842caaf58358ab12163a087af2afcc3ad10dcd4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def setUp(self):"},{"line_number":97,"context_line":"        super(TestRemovePortFromRouter, self).setUp()"},{"line_number":98,"context_line":"        self.network.router_remove_interface \u003d mock.Mock("},{"line_number":99,"context_line":"            return_value\u003dself._interface)"},{"line_number":100,"context_line":"        self.cmd \u003d router.RemovePortFromRouter(self.app, self.namespace)"},{"line_number":101,"context_line":"        self.network.find_router \u003d mock.Mock(return_value\u003dself._router)"},{"line_number":102,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._port)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_744c9c70","line":99,"updated":"2016-03-16 16:34:32.000000000","message":"You might as well just return self._router from the mocked router_remove_interface, since the take_action method ignores the return value completely.  No need to create the _interface object.","commit_id":"2c32a6ac18bd685f77dd48875408d64c84ae3e03"},{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"a842caaf58358ab12163a087af2afcc3ad10dcd4","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        result \u003d self.cmd.take_action(parsed_args)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self.assertIsNone(result)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_b404647e","line":124,"updated":"2016-03-16 16:34:32.000000000","message":"Should probably add the following (filling in the parameters expected) to make sure the OSC code makes the call to the SDK with the right parameters.\n\nself.network.router_remove_interface.assert_called_with(**{\n        ...\n        })","commit_id":"2c32a6ac18bd685f77dd48875408d64c84ae3e03"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"db8377032fecbbf84aebbe4b0d9c25414e47ec11","unresolved":false,"context_lines":[{"line_number":71,"context_line":"class TestRemovePortFromRouter(TestRouter):"},{"line_number":72,"context_line":"    \u0027\u0027\u0027Remove port from a Router \u0027\u0027\u0027"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    _port \u003d net_fakes.FakePort.create_one_port()"},{"line_number":75,"context_line":"    _router \u003d net_fakes.FakeRouter.create_one_router("},{"line_number":76,"context_line":"        attrs\u003d{\u0027port\u0027: _port.id})"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def setUp(self):"},{"line_number":79,"context_line":"        super(TestRemovePortFromRouter, self).setUp()"}],"source_content_type":"text/x-python","patch_set":17,"id":"1af94dfe_be91bf54","line":76,"range":{"start_line":74,"start_character":0,"end_line":76,"end_character":33},"updated":"2016-03-17 08:08:38.000000000","message":"the code are duplicated with TestAddPortToRouter, they can be merged into base class TestRouter.","commit_id":"0636056cff945301f703db7a0e898983874ccaf9"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"db8377032fecbbf84aebbe4b0d9c25414e47ec11","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        super(TestRemovePortFromRouter, self).setUp()"},{"line_number":80,"context_line":"        self.network.router_remove_interface \u003d mock.Mock()"},{"line_number":81,"context_line":"        self.cmd \u003d router.RemovePortFromRouter(self.app, self.namespace)"},{"line_number":82,"context_line":"        self.network.find_router \u003d mock.Mock(return_value\u003dself._router)"},{"line_number":83,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._port)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_remove_port_no_option(self):"},{"line_number":86,"context_line":"        arglist \u003d []"}],"source_content_type":"text/x-python","patch_set":17,"id":"1af94dfe_feed07f0","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":67},"updated":"2016-03-17 08:08:38.000000000","message":"ditto","commit_id":"0636056cff945301f703db7a0e898983874ccaf9"}],"setup.cfg":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"0f525b4e0be980f4f132cd4cc6ede467e388da21","unresolved":false,"context_lines":[{"line_number":344,"context_line":"    router_set \u003d openstackclient.network.v2.router:SetRouter"},{"line_number":345,"context_line":"    router_show \u003d openstackclient.network.v2.router:ShowRouter"},{"line_number":346,"context_line":"    router_add_port \u003d openstackclient.network.v2.router_interface:AddPortToRouter"},{"line_number":347,"context_line":"    router_remove_port \u003d openstackclient.network.v2.router_interface:RemovePortFromRouter"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    security_group_delete \u003d openstackclient.network.v2.security_group:DeleteSecurityGroup"},{"line_number":350,"context_line":"    security_group_list \u003d openstackclient.network.v2.security_group:ListSecurityGroup"}],"source_content_type":"text/x-ttcn-cfg","patch_set":19,"id":"1af94dfe_5232e2a7","line":347,"updated":"2016-03-18 13:34:14.000000000","message":"These should be sorted...and i see the add command isn\u0027t...","commit_id":"be3619eaac7a8681828b665c7a917375a6c9adb0"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"39e46dc4a60082c10591e4cd93466ec95811d32d","unresolved":false,"context_lines":[{"line_number":344,"context_line":"    router_set \u003d openstackclient.network.v2.router:SetRouter"},{"line_number":345,"context_line":"    router_show \u003d openstackclient.network.v2.router:ShowRouter"},{"line_number":346,"context_line":"    router_add_port \u003d openstackclient.network.v2.router_interface:AddPortToRouter"},{"line_number":347,"context_line":"    router_remove_port \u003d openstackclient.network.v2.router_interface:RemovePortFromRouter"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    security_group_delete \u003d openstackclient.network.v2.security_group:DeleteSecurityGroup"},{"line_number":350,"context_line":"    security_group_list \u003d openstackclient.network.v2.security_group:ListSecurityGroup"}],"source_content_type":"text/x-ttcn-cfg","patch_set":21,"id":"1af94dfe_9e00e735","line":347,"updated":"2016-03-18 17:07:20.000000000","message":"sort","commit_id":"346b05424524b78c768d3c0f2091300716fc038f"}]}
