{ "info": { "author": "Aleksas Pielikis", "author_email": "ant.kampo@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![Build Status](https://travis-ci.org/aleksas/re-map.svg?branch=master)](https://travis-ci.org/aleksas/re-map)\n[![PyPI](https://img.shields.io/pypi/v/re-map?color=success)](https://pypi.org/project/re-map/)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/63e1067e85994870b8f6a39a4ee34ec3)](https://www.codacy.com/manual/aleksas/re-map?utm_source=github.com&utm_medium=referral&utm_content=aleksas/re-map&utm_campaign=Badge_Grade)\n\n# re-map\n\nPackage for managing multiple regext pattern replacement change location map.\n\n\nMay be usefull when there is a necesity to have original text, text altered using regex pattern replacements and a map of said replacements.\nOne scenario where this may proove usefull is machine learning \"text2text# problems (e.g. translation, text normalization, etc.).\n\n# install\n\n```bash\n$ pip install re-map\n```\n\n# example\n## Code\n```python\nfrom re_map import Processor\n\nnumbers = {5: 'five', 8: 'eight', 10: 'ten'}\norginal_numbers = {1: 'first', 2: 'second'}\n\nmodifiers = [\n ( r'der (G\\.) Be', { 1: 'Graham'} ),\n ( r' (&) ', { 1: 'and'} ),\n ( r' (etc)\\.', { 1: 'et cetera'} ),\n ( r' ((\\d+)((st)|(nd)|(rd)|(th))) ', { 2: lambda x: orginal_numbers[int(x)], 3: '' } ),\n ( r' (\\d+) ', { 1: lambda x: numbers[int(x)] } ),\n]\n\ntext = 'Alexander G. Bell ate 10 apples & 8 cucumbers. The 1st apple was rotten, the 2nd was too, also the third, fourth etc.'\n\nwith Processor(text) as procesor:\n for pattern, replacement_map in modifiers:\n procesor.process(pattern, replacement_map)\n\ndecorated_text, decorated_processed_text = procesor.decorate()\n\nprint (text)\nprint (decorated_text)\nprint (procesor.processed_text)\nprint (decorated_processed_text)\nprint (procesor.span_map)\n```\n\n## Output\n\n```shell\nAlexander G. Bell ate 10 apples & 8 cucumbers. The 1st apple was rotten, the 2nd was too, also the third, fourth etc.\nAlexander 00 Bell ate 11 apples 2 3 cucumbers. The 455 apple was rotten, the 677 was too, also the third, fourth 888.\nAlexander Graham Bell ate ten apples and eight cucumbers. The first apple was rotten, the second was too, also the third, fourth et cetera.\nAlexander 000000 Bell ate 111 apples 222 33333 cucumbers. The 44444 apple was rotten, the 666666 was too, also the third, fourth 888888888.\n[((10, 12), (10, 16)), ((22, 24), (26, 29)), ((32, 33), (37, 40)), ((34, 35), (41, 46)), ((51, 52), (62, 67)), ((52, 54), (67, 67)), ((77, 78), (90, 96)), ((78, 80), (96, 96)), ((113, 116), (129, 138))]\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/aleksas/re-map", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "re-map", "package_url": "https://pypi.org/project/re-map/", "platform": "", "project_url": "https://pypi.org/project/re-map/", "project_urls": { "Homepage": "https://github.com/aleksas/re-map" }, "release_url": "https://pypi.org/project/re-map/0.4.6/", "requires_dist": null, "requires_python": ">=2.7", "summary": "Apply multiple regex patterns and keep change index map.", "version": "0.4.6", "yanked": false, "yanked_reason": null }, "last_serial": 6559203, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c4f8a356a6d38a3fdd6d839aa122a5c1", "sha256": "a83fd64064821e463e21ee502c70404e5de6b24160c0f8289b62e6412e89bddf" }, "downloads": -1, "filename": "re_map-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c4f8a356a6d38a3fdd6d839aa122a5c1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 2900, "upload_time": "2019-09-23T07:17:47", "upload_time_iso_8601": "2019-09-23T07:17:47.717255Z", "url": "https://files.pythonhosted.org/packages/34/c2/685f3fef4efed8822cf7f87c38d344bcf2105a50bc844a84a893e09fc104/re_map-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8aa0b415a1fc3c6babdc205c1fc6b9ff", "sha256": "9647ce746d13d03314cae0a68b4c29eee2333d021e9b69f82980f66805630b1a" }, "downloads": -1, "filename": "re_map-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8aa0b415a1fc3c6babdc205c1fc6b9ff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3014, "upload_time": "2019-09-23T09:08:08", "upload_time_iso_8601": "2019-09-23T09:08:08.288521Z", "url": "https://files.pythonhosted.org/packages/62/e3/70aba5923cb63be4629a52e930b53cfb6b2ec9c51d9fe59339b49b0e46da/re_map-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "8b92b846acba4554288cf3b25860383b", "sha256": "8857069e547cb11832aa3ca133117369bc70d8e5ebd5887c30d3da5cf2cddd8b" }, "downloads": -1, "filename": "re_map-0.0.3.tar.gz", "has_sig": false, "md5_digest": "8b92b846acba4554288cf3b25860383b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3051, "upload_time": "2019-09-23T13:00:33", "upload_time_iso_8601": "2019-09-23T13:00:33.875765Z", "url": "https://files.pythonhosted.org/packages/34/0a/a2dd93deed43bd4daa1fedde014864caca32b340462796e29d312451f721/re_map-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "472a973baea3fcb4328eb6d71412368b", "sha256": "2ab2518b249ef481b961ea39789d6c8b09d84f71200508a9a876db2445525ba7" }, "downloads": -1, "filename": "re_map-0.0.4.tar.gz", "has_sig": false, "md5_digest": "472a973baea3fcb4328eb6d71412368b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3072, "upload_time": "2019-09-23T13:13:39", "upload_time_iso_8601": "2019-09-23T13:13:39.288079Z", "url": "https://files.pythonhosted.org/packages/1a/a8/b51b404bf5e9c62a34969819a723ff6209585a3bf4a1f3d644a290b58ddd/re_map-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "0b175c8e3377c0449e6a8ec7fdbeb0ec", "sha256": "ade1d8bdb8ace7b1a524528b08a076c43ef35d2e3b1e4460ae7ad8fb54ab02d7" }, "downloads": -1, "filename": "re_map-0.0.5.tar.gz", "has_sig": false, "md5_digest": "0b175c8e3377c0449e6a8ec7fdbeb0ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3151, "upload_time": "2019-09-24T11:47:11", "upload_time_iso_8601": "2019-09-24T11:47:11.612709Z", "url": "https://files.pythonhosted.org/packages/0a/b9/1d861e8f64501dd4e54f85c36ece5801c8376b2413a528bd6981a6d4465a/re_map-0.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "d656d9e81c9cda5c4208a682e0a5842c", "sha256": "308ec9fc93685330764fbf08b25f3d50eb90feb5a5aab03a2a04062962ac7827" }, "downloads": -1, "filename": "re_map-0.0.6.tar.gz", "has_sig": false, "md5_digest": "d656d9e81c9cda5c4208a682e0a5842c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3152, "upload_time": "2019-09-25T12:12:56", "upload_time_iso_8601": "2019-09-25T12:12:56.896658Z", "url": "https://files.pythonhosted.org/packages/46/f5/2ba0f1b8efeb8aa93dd08dff38f692d68d4208c7ee41e06a7a4423e88443/re_map-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "c069d5de26913eb6886c89088dccf118", "sha256": "84c00148b080906b5b23c43b4ce251e7f7438e78fc6f49d107586dd4b7a7fd4d" }, "downloads": -1, "filename": "re_map-0.0.7.tar.gz", "has_sig": false, "md5_digest": "c069d5de26913eb6886c89088dccf118", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3109, "upload_time": "2019-09-25T13:02:25", "upload_time_iso_8601": "2019-09-25T13:02:25.180279Z", "url": "https://files.pythonhosted.org/packages/b8/cc/74b9497f2adacc9b1cfd4b1ef83768efba49e20f7550576403589c2483bb/re_map-0.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "c57bc4c1bb226e8b51daaf85716e6651", "sha256": "5a30a304e99075c393511fc66403460a86b46bf41ad0324ff9cc9b1c70cc0960" }, "downloads": -1, "filename": "re_map-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c57bc4c1bb226e8b51daaf85716e6651", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 4049, "upload_time": "2019-10-01T21:55:11", "upload_time_iso_8601": "2019-10-01T21:55:11.332756Z", "url": "https://files.pythonhosted.org/packages/74/c1/24284e7b5abf81ba05ed43f756629700f07814eb852027df83465ab4dbd1/re_map-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b9713fc9af2719a21b1fdb71938c75a5", "sha256": "d19e18f2a3a14461a4a0d4051d5edb5391c51da2f90cd019b076789e7369e197" }, "downloads": -1, "filename": "re_map-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b9713fc9af2719a21b1fdb71938c75a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5046, "upload_time": "2019-10-12T18:26:34", "upload_time_iso_8601": "2019-10-12T18:26:34.004682Z", "url": "https://files.pythonhosted.org/packages/20/b7/faf4e08e2ed19c72a3d6cbce807fd100bdbf35d4c2e4119d9273589b1020/re_map-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "f3218065587fc6f437fdad75289846df", "sha256": "314ced15d191627af29efc880beb3361ff5bd7c072baa1e2da1c043f11041783" }, "downloads": -1, "filename": "re_map-0.1.3.tar.gz", "has_sig": false, "md5_digest": "f3218065587fc6f437fdad75289846df", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5232, "upload_time": "2019-10-12T19:10:31", "upload_time_iso_8601": "2019-10-12T19:10:31.547803Z", "url": "https://files.pythonhosted.org/packages/41/b1/dd6b49a9030f62edf5a12a992b520289074e1f436a1e3e0ecbd338c59fb3/re_map-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "2e9e1a1e94e75690da1b621b57277b7e", "sha256": "01cbcc614516ec56d5dc9074917cc98d8a010f066d35344975b25209b75a1381" }, "downloads": -1, "filename": "re_map-0.1.4.tar.gz", "has_sig": false, "md5_digest": "2e9e1a1e94e75690da1b621b57277b7e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5231, "upload_time": "2019-10-12T19:17:29", "upload_time_iso_8601": "2019-10-12T19:17:29.345125Z", "url": "https://files.pythonhosted.org/packages/41/f4/cef2eb72dc4e07ad080c1c3b5730b278599cc0d8c94b8f5090c5c79a96e5/re_map-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "66066cafb46aece10143615cd07062c3", "sha256": "b920032310bb16a86ba8885ad1a9dffac45e86c372610ba2abedce613caaaf8a" }, "downloads": -1, "filename": "re_map-0.1.5.tar.gz", "has_sig": false, "md5_digest": "66066cafb46aece10143615cd07062c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 5864, "upload_time": "2019-10-13T11:36:24", "upload_time_iso_8601": "2019-10-13T11:36:24.708582Z", "url": "https://files.pythonhosted.org/packages/b4/02/d86c77fd4573e33f85561d326cf4dd4e9d74cc0087043b4b8d6749928383/re_map-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f6e7faa33452dd175a113faed60b0207", "sha256": "a5896cb639c357d63d3a02c0011808c9c54ed44409b95cc6bad796eebbd14e29" }, "downloads": -1, "filename": "re_map-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f6e7faa33452dd175a113faed60b0207", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 6236, "upload_time": "2019-10-16T09:13:43", "upload_time_iso_8601": "2019-10-16T09:13:43.418785Z", "url": "https://files.pythonhosted.org/packages/f6/21/401fa6e7ca92f55ba70034f2fb0f7445fda446eb78d3ef6f02c9ece0c9cf/re_map-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f125ec4a4a30d902e70818b931ecb1e7", "sha256": "aa5636bb824508d0e8b8cccb2177a780dd1c7def66357dc821ae698b13ed9e04" }, "downloads": -1, "filename": "re_map-0.2.1.tar.gz", "has_sig": false, "md5_digest": "f125ec4a4a30d902e70818b931ecb1e7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 6364, "upload_time": "2019-10-16T17:44:31", "upload_time_iso_8601": "2019-10-16T17:44:31.842562Z", "url": "https://files.pythonhosted.org/packages/70/3c/9815dc6f061b3e2675b5571386b2ac9c8d70445e080e1cbb5f2643f5ad11/re_map-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "e17ade3a56ab91d53d6236ddd92b2316", "sha256": "8d923bba331f1c14d965441ad9526c2430695b1f08ebbfd322869d9232d26f2b" }, "downloads": -1, "filename": "re_map-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e17ade3a56ab91d53d6236ddd92b2316", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 6756, "upload_time": "2019-10-19T16:08:11", "upload_time_iso_8601": "2019-10-19T16:08:11.658778Z", "url": "https://files.pythonhosted.org/packages/3e/c6/2b9167f7c9cbf61203803064a09d09bfeaafa49d16d3547a98016a781f95/re_map-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "dcb01fe56de4cddc91c81efc209a34e6", "sha256": "cc1699c60f306b80b9c46804dc7cb167d0945135cffc46fe2c19e8b3450dcec3" }, "downloads": -1, "filename": "re_map-0.3.1.tar.gz", "has_sig": false, "md5_digest": "dcb01fe56de4cddc91c81efc209a34e6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 29075, "upload_time": "2019-10-20T17:41:43", "upload_time_iso_8601": "2019-10-20T17:41:43.934540Z", "url": "https://files.pythonhosted.org/packages/a7/d8/208767f5f316c519c3661ebd512485adacd6f8ea4ea98b22457cb4198727/re_map-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "762332aa8b2ecc18c67100d9792bfbcd", "sha256": "1b0873d3749c4f4fc4f3d4f0b85a563bb9be8f054d381284296709990c35dc2f" }, "downloads": -1, "filename": "re_map-0.4.0.tar.gz", "has_sig": false, "md5_digest": "762332aa8b2ecc18c67100d9792bfbcd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 29285, "upload_time": "2019-10-21T07:20:26", "upload_time_iso_8601": "2019-10-21T07:20:26.350782Z", "url": "https://files.pythonhosted.org/packages/bb/f1/ab550accae77808f6e51ad9776bef83e1f5f39cdca3fe442fa252b72f4b4/re_map-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "8cc135f8f6b8e6a4a37e5c19cd036edf", "sha256": "405fa1b62aa0619100d7fc8fa525fc8b2e86419648bb8165702c22e13148be8a" }, "downloads": -1, "filename": "re_map-0.4.1.tar.gz", "has_sig": false, "md5_digest": "8cc135f8f6b8e6a4a37e5c19cd036edf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7025, "upload_time": "2019-10-22T20:14:02", "upload_time_iso_8601": "2019-10-22T20:14:02.966276Z", "url": "https://files.pythonhosted.org/packages/47/bd/d825352571a18c672f70607edab20f4fde1c755855c223c567594a006d6c/re_map-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "594d7505eb41b3066652ed155dc4a09e", "sha256": "811b5e50520e6e945ce7d17fdd0af8845165b82b7933bb1f1eb6cb4ff286859f" }, "downloads": -1, "filename": "re_map-0.4.2.tar.gz", "has_sig": false, "md5_digest": "594d7505eb41b3066652ed155dc4a09e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7192, "upload_time": "2019-10-25T19:50:19", "upload_time_iso_8601": "2019-10-25T19:50:19.686348Z", "url": "https://files.pythonhosted.org/packages/c4/f3/b8321aaa1a57cbb023bddcf8634d87ea9cc68ecb99a04f31d87944c925fe/re_map-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "2e808374e781bbcb916e022803865bfc", "sha256": "24d2cce9086df41941c773e6060f2209c0d85e151a291ea0a9163cbfd89c5168" }, "downloads": -1, "filename": "re_map-0.4.3.tar.gz", "has_sig": false, "md5_digest": "2e808374e781bbcb916e022803865bfc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7190, "upload_time": "2020-02-01T19:49:51", "upload_time_iso_8601": "2020-02-01T19:49:51.613166Z", "url": "https://files.pythonhosted.org/packages/ed/d2/7e16258ddf1ffb065522ca8730edeb05142268839da16a550037a2a7050b/re_map-0.4.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "23a6cd489ae67aa822d182a8dd96dfa0", "sha256": "94d700e0771c3d3bd6d3ce96553bb7ae1cddd859ac9186274af47651dd2c5843" }, "downloads": -1, "filename": "re_map-0.4.4.tar.gz", "has_sig": false, "md5_digest": "23a6cd489ae67aa822d182a8dd96dfa0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7221, "upload_time": "2020-02-02T07:56:50", "upload_time_iso_8601": "2020-02-02T07:56:50.119057Z", "url": "https://files.pythonhosted.org/packages/33/3f/fe5fdbb3bd4cf26d37b1bff33242c758d1d2fcb44e8c6bc1c07ffffa0f24/re_map-0.4.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "c66df187699433395d3a61cbc44ed97b", "sha256": "5b1197d32a18512464a5956fc6a5f5ab5cec5c62023703803486d47134f25eb4" }, "downloads": -1, "filename": "re_map-0.4.5.tar.gz", "has_sig": false, "md5_digest": "c66df187699433395d3a61cbc44ed97b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7240, "upload_time": "2020-02-02T14:26:25", "upload_time_iso_8601": "2020-02-02T14:26:25.700996Z", "url": "https://files.pythonhosted.org/packages/cf/73/4243593aad200cde3a604c66cfa5329a5500269813419d792bcb895dc848/re_map-0.4.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "eb660afac50574a74e192644e732c56f", "sha256": "4fa2fdc5c5fb127ced9fd82d636008901f63d84799afd0c231e7a656ceef1a58" }, "downloads": -1, "filename": "re_map-0.4.6.tar.gz", "has_sig": false, "md5_digest": "eb660afac50574a74e192644e732c56f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7270, "upload_time": "2020-02-02T18:29:06", "upload_time_iso_8601": "2020-02-02T18:29:06.076877Z", "url": "https://files.pythonhosted.org/packages/2b/16/6435f738286e5a119d72dd2a803c3e7c21ba577442dbac6f575858a013c7/re_map-0.4.6.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eb660afac50574a74e192644e732c56f", "sha256": "4fa2fdc5c5fb127ced9fd82d636008901f63d84799afd0c231e7a656ceef1a58" }, "downloads": -1, "filename": "re_map-0.4.6.tar.gz", "has_sig": false, "md5_digest": "eb660afac50574a74e192644e732c56f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7270, "upload_time": "2020-02-02T18:29:06", "upload_time_iso_8601": "2020-02-02T18:29:06.076877Z", "url": "https://files.pythonhosted.org/packages/2b/16/6435f738286e5a119d72dd2a803c3e7c21ba577442dbac6f575858a013c7/re_map-0.4.6.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }