Case Study: Chelmsford

Analysis summary

  • You calculated the BNA score for Chelmsford, UK within a biking distance of 3 km.

The size of the osm data for your study area is 97 MB and the analysis took 34.68 minutes to run.

  • The analysis corresponds to the OSM boundary area (red) based on its Lower Layer Superoutput Areas (LSOA) (green).

Results

Score/Value
Overall Score 69.25
Population 176194
Length of Low Stress Network (km) 1993.8
Length of High Stress Network (km) 1500.1
People
Total People 76.87
Opportunity
Employment 74.4
K-12 Education 82.94
Technical/vocational school 56.49
Higher Education 57.29
Total Opportunity 72.18
Core Services
Doctor offices/clinics 67.41
Dentist offices 57.79
Hospitals 65.93
Pharmacies 72.65
Supermarkets 76.09
Social services 64.6
Total Core Services 68.42
Retail
Total Retail shopping 71.21
Recreation
Parks 85
Recreational trails 73.06
Community centers 53.65
Total Recreation 72.98
Transit
Total Transit 53.17

Setup info

To run this analysis, the user should:

  1. Create a database on its PostgreSQL. To test connection an empty table on the database called “test” should be created on the public schema.
    • Tip: Run FULL VACUUM/ANALYZE frequently to the database to improve performance.
    • Follow the tips on this presentation to increase performance of the database.
  2. Set path variables for osm2pgsql and osm2pgrouting.

  3. Create a password file on %APPDATA%/postgresql/pgpass.conf with the format hostname:port:database:username:password

Data sources

Population
Jobs
Region Source Description Source Description
US Not added yet. Not added yet.
Europe GEOSTAT - EUROSTAT Population grid per squared kilometer for 2011. No data available for the whole continent with high spatial resolution.
UK Office of National Statistics - UK Population estimates for mid-2017 at LSOA and MSOA level. Office of National Statistics - UK Flow commute data for the 2011 Census at LSOA and MSOA level, where the total number of trips per super-output area where aggregated.
The Netherlands CBS (Centraal Bureau voor de Statistiek) - NL District and neighborhood map with associated key figures for 2017. LISA (National Information System for Workplaces) dataset Jobs per municipality. To estimate jobs at neighborhood level an weighted estimation was made with the number of jobs in the whole municipality hafly weighted by the fraction of the neighborhood area, and hafly weighted by the fraction of companies in the neighborhood. This approach needs to be validated, however it is one way to approximate it, given that LISA data at this aggregation level has to be bought and is not open data.
LS0tDQp0aXRsZTogIkJOQSBSZXBvcnQiDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6DQogICAgaGlnaGxpZ2h0OiBoYWRkb2NrDQogICAgdGhlbWU6IGpvdXJuYWwNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2tuaXQkc2V0KHJvb3QuZGlyID0gbm9ybWFsaXplUGF0aCgiLi4vIikpDQprbml0cjo6cmVhZF9jaHVuaygNCiAgIi4uL3NjcmlwdHMvYW5hbHlzaXMuUiINCikNCmBgYA0KDQojIENhc2UgU3R1ZHk6IGByIHNhX25hbWVgIHsudGFic2V0fQ0KDQojIyBBbmFseXNpcyBzdW1tYXJ5DQoNCmBgYHtyIGRhdGFiYXNlLCBpbmNsdWRlID0gRkFMU0V9DQpkYl9uYW1lID0gImJuYV9ldXJvcGUiDQpsb2NhbF9ob3N0ID0gImxvY2FsaG9zdCINCnBvcnRfbnVtID0gNTQzMg0KdXNlcl9uYW1lID0gInBvc3RncmVzIg0KZGJfcGFzcyA9IHJzdHVkaW9hcGk6OmFza0ZvclBhc3N3b3JkKCJEYXRhYmFzZSBwYXNzd29yZCIpDQpgYGANCg0KYGBge3IgdmFyaWFibGVzLCB3YXJuaW5nID0gRkFMU0UsIGluY2x1ZGUgPSBGQUxTRX0NCiMjIEJhc2ljIHZhcmlhYmxlcyB0byBzZXQgDQpjb3VudHJ5ID0gIlVLIiAjIFBvc3NpYmxlIG9wdGlvbnM6IFVLLCBVUywgQmVsZ2l1bSwgTmV0aGVybGFuZHMsIE5BDQpzYV9uYW1lID0gIkNoZWxtc2ZvcmQiICMgc3R1ZHkgYXJlYQ0Kc2FfY3JzID0gMzg1NyAjIGNycw0KYmlraW5nX2Rpc3RhbmNlID0gMzAwMCAjIyBpbiBtZXRlcnMNCg0KYXJlYV90eXBlID0gIm9zbSIgIyMgcG9zc2libGUgb3B0aW9uczogIg0KICAgICAgICAgICAgICAgICAgIyMgIm9zbSIgZm9yIGFueSBjb3VudHJ5DQogICAgICAgICAgICAgICAgICAjIyAidHR3YSIgZm9yIHRoZSBVSw0KDQptaW5fYXJlYSA9ICJsc29hIiAjIyBwb3NzaWJsZSBvcHRpb25zOiANCiAgICAgICAgICAgICAgICAgICMjICJnZW9zdGF0IiBmb3IgYW55IGNvdW50cnksIA0KICAgICAgICAgICAgICAgICAgIyMgImxzb2EiIG9yICJtc29hIiBmb3IgdGhlIFVLDQogICAgICAgICAgICAgICAgICAjIyAiY2IiIGZvciB0aGUgVVMgKG5vdCB5ZXQpDQogICAgICAgICAgICAgICAgICAjIyAiYnV1cnQiIGZvciB0aGUgTmV0aGVybGFuZHMNCg0KIyMgSWYgdGhlIGFuYWx5c2lzIHJ1bnMgd2l0aCB0aGUgR0VPU1RBVCBwb3B1bGF0aW9uIGdyaWQgYXMgbWluX2FyZWENCnN1YmRpdmlzaW9ucyA9IDQNCmBgYA0KDQoqIFlvdSBjYWxjdWxhdGVkIHRoZSBCTkEgc2NvcmUgZm9yIA0KPHNwYW4gc3R5bGU9ImNvbG9yOiNCQjYxNkQiPioqYHIgc2FfbmFtZWAsIGByIGNvdW50cnlgKio8L3NwYW4+IA0Kd2l0aGluIGEgYmlraW5nIGRpc3RhbmNlIG9mIA0KPHNwYW4gc3R5bGU9ImNvbG9yOiNCQjYxNkQiPioqYHIgYmlraW5nX2Rpc3RhbmNlLzEwMDBgKio8L3NwYW4+IGttLiANCg0KYHIgaWZlbHNlKGFyZWFfdHlwZSA9PSAib3NtIixwYXN0ZSgiVGhlIHNpemUgb2YgdGhlIG9zbSBkYXRhIGZvciB5b3VyIHN0dWR5IGFyZWEgaXMiLCByb3VuZChvc21fc2l6ZSwyKSwgIk1CIGFuZCB0aGUiKSwiVGhlIilgIGFuYWx5c2lzIHRvb2sgKipgciByb3VuZChhcy5udW1lcmljKGR1cmF0aW9uKSwyKWAgbWludXRlcyoqIHRvIHJ1bi4NCg0KKiBUaGUgYW5hbHlzaXMgY29ycmVzcG9uZHMgdG8gdGhlIA0KPHNwYW4gc3R5bGU9ImNvbG9yOiNCQjYxNkQiPioqYHIgaWZlbHNlKGFyZWFfdHlwZSA9PSAidHR3YSIsIlRyYXZlbCB0byBXb3JrIEFyZWEiLCJPU00gYm91bmRhcnkgYXJlYSIpYCoqPC9zcGFuPiAocmVkKSBiYXNlZCBvbiANCjxzcGFuIHN0eWxlPSJjb2xvcjojQkI2MTZEIj4qKmByIGlmZWxzZShtaW5fYXJlYSA9PSAibXNvYSIsIml0cyBNaWRkbGUgTGF5ZXIgU3VwZXJvdXRwdXQgQXJlYXMgKE1TT0EpIixpZmVsc2UobWluX2FyZWEgPT0gImxzb2EiLCJpdHMgTG93ZXIgTGF5ZXIgU3VwZXJvdXRwdXQgQXJlYXMgKExTT0EpIixpZmVsc2UobWluX2FyZWEgPT0gImNiIiwiaXRzIGNlbnN1cyBibG9ja3MiLGlmZWxzZShtaW5fYXJlYSA9PSAiYnV1cnQiLCJpdHMgbmVpZ2hib3Job29kIGFyZWFzIiwiYSBzdWJkaXZpZGVkIHBvcHVsYXRpb24gZ3JpZCBmcm9tIEdFT1NUQVQiKSkpKWAqKjwvc3Bhbj4gKGdyZWVuKS4NCg0KYGBge3IgY29ubmVjdGlvbiwgaW5jbHVkZT1GQUxTRSwgY2FjaGUgPSBGQUxTRX0NCmBgYA0KDQpgYGB7ciBhcmVhLCBpbmNsdWRlPUZBTFNFLCBjYWNoZSA9IEZBTFNFfQ0KYGBgDQoNCmBgYHtyIG5ldHdvcmssIGluY2x1ZGUgPSBGQUxTRSwgY2FjaGUgPSBGQUxTRX0NCmBgYA0KDQpgYGB7ciBtaW5fYXJlYSwgaW5jbHVkZSA9IEZBTFNFLCBjYWNoZSA9IEZBTFNFfQ0KYGBgDQoNCmBgYHtyIHBsb3RfYXJlYSwgZmlnLndpZHRoID0gOCwgZmlnLmhlaWdodD0gNSwgZWNobyA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRX0NCmxpYnJhcnkodG1hcCkNCg0KdG1hcF9tb2RlKCJ2aWV3IikNCnRtYXBfbGVhZmxldCgNCiAgICAgdG1fdmlldygNCiAgICAgYmFzZW1hcHMgPSAiQ2FydG9EQi5Qb3NpdHJvbiINCiAgICkgKw0KICAgICB0bV9zaGFwZShtaW5fYXJlYV9ncmlkKSArDQogICAgIHRtX3BvbHlnb25zKA0KICAgICAgIGJvcmRlci5jb2wgPSAiZ3JlZW4iLA0KICAgICAgIGFscGhhID0gMA0KICAgICAgKSArDQogICAgIHRtX3NoYXBlKGJvdW5kYXJ5KSArDQogICAgIHRtX3BvbHlnb25zKA0KICAgICAgIGJvcmRlci5jb2wgPSAicmVkIiwNCiAgICAgICBhbHBoYSA9IDAsDQogICAgICAgbHdkID0gNA0KICAgICAgKSANCikNCmBgYA0KDQpgYGB7ciByZWFjaGFibGVfcm9hZHMsIGluY2x1ZGUgPSBGQUxTRSwgY2FjaGUgPSBGQUxTRX0NCmBgYA0KDQpgYGB7ciBhY2Nlc3NpYmlsaXR5LCBpbmNsdWRlID0gRkFMU0UsIGNhY2hlID0gRkFMU0V9DQpgYGANCg0KYGBge3Igb3ZlcmFsbF9zY29yZSwgaW5jbHVkZSA9IEZBTFNFLCBjYWNoZSA9IEZBTFNFfQ0KYGBgDQoNCiMjIFJlc3VsdHMNCg0KYGBge3IsIGluY2x1ZGUgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQ0KIyMgQ2FsbCBkYXRhIGludG8gUg0KbGlicmFyeShzZikNCmJuYV9zY29yZSA8LSBzdF9yZWFkKA0KICBkc24gPSBjb25uZWN0aW9uLA0KICBsYXllciA9IGMoImdlbmVyYXRlZCIsInNhX3BvcF9ncmlkIikNCikNCg0Kc3RyZXNzX25ldHdvcmsgPC0gc3RfcmVhZCgNCiAgZHNuID0gY29ubmVjdGlvbiwNCiAgcXVlcnkgPSAiU0VMRUNUIGZ0X3NlZ19zdHJlc3MsIHRmX3NlZ19zdHJlc3MsIGdlb20gRlJPTSByZWNlaXZlZC5zYV93YXlzIg0KKQ0KDQojIyBFc3RhYmxpc2ggY29sb3JzIGFuZCBicmVha3MgZm9yIHRoZSBCTkEgZGlzcGxheSBiYXNlZCBvbiB0aGUgUGZCIHZpc3VhbGl6ZXINCmJuYV9wYWwgPC0gYygiI0ZDNzE1MSIsIiNEQzdFNkEiLCIjQzk4ODc1IiwiI0MwOEI4MyIsIiNBRDkzOTYiLA0KICAgICAgICAgICAgICIjOUM5QTlGIiwiIzkyOUVBQyIsIiM3OEFBQzUiLCIjNkZBRENCIiwiIzQ5QkZFNiIpDQoNCmJuYV9icmVha3MgPC0gYyg2LDEyLDE4LDI0LDMwLDM2LDQyLDQ4LDU0LDEwMCkNCg0Kc3RyZXNzX25ldHdvcmskZnRfc3RyZXNzIDwtIGlmZWxzZShzdHJlc3NfbmV0d29yayRmdF9zZWdfc3RyZXNzID09IDEsImxvdyBzdHJlc3MiLCJoaWdoIHN0cmVzcyIpDQpzdHJlc3NfbmV0d29yayR0Zl9zdHJlc3MgPC0gaWZlbHNlKHN0cmVzc19uZXR3b3JrJHRmX3NlZ19zdHJlc3MgPT0gMSwibG93IHN0cmVzcyIsImhpZ2ggc3RyZXNzIikNCg0KIyMgQ2FsbCBwbG90dGluZyBsaWJyYXJ5IGFuZCBzZXQgdG8gbW9kZSB2aWV3DQpsaWJyYXJ5KHRtYXApDQp0bWFwX21vZGUoInZpZXciKQ0KYGBgDQoNCmBgYHtyLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodD0gNSwgZmlnLmFsaWduID0gJ2NlbnRlcicsIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQ0KaW50X21hcCA8LSANCiAgdG1hcDo6dG1hcF9sZWFmbGV0KA0KICAgICB0bWFwOjp0bV92aWV3KA0KICAgICBiYXNlbWFwcyA9IGMoDQogICAgICAgIkNhcnRvREIuUG9zaXRyb24iLA0KICAgICAgICJDYXJ0b0RCLkRhcmtNYXR0ZXIiLA0KICAgICAgICJPcGVuU3RyZWV0TWFwLk1hcG5payINCiAgICAgKQ0KICAgKSArDQogICAgIHRtYXA6OnRtX3NoYXBlKGJuYV9zY29yZSkgKw0KICAgICB0bWFwOjp0bV9wb2x5Z29ucygNCiAgICAgICBjb2wgPSAib3ZlcmFsbF9zY29yZSIsDQogICAgICAgc3R5bGUgPSAiZml4ZWQiLA0KICAgICAgIGJyZWFrcyA9IGJuYV9icmVha3MsDQogICAgICAgcGFsZXR0ZSA9IGJuYV9wYWwsDQogICAgICAgYWxwaGEgPSAwLjgsDQogICAgICAgdGl0bGUgPSAiQk5BIHNjb3JlIiwNCiAgICAgICBib3JkZXIuY29sID0gTlVMTCwNCiAgICAgICBjb2xvck5BID0gTlVMTCwNCiAgICAgICBzaG93TkEgPSBGQUxTRQ0KICAgICAgKSArDQogICAgIHRtYXA6OnRtX3NoYXBlKHN0cmVzc19uZXR3b3JrKSArDQogICAgIHRtYXA6OnRtX2xpbmVzKA0KICAgICAgIGNvbCA9ICJmdF9zdHJlc3MiLCANCiAgICAgICBjb2xvck5BID0gTlVMTCwNCiAgICAgICBzaG93TkEgPSBGQUxTRSwNCiAgICAgICBwYWxldHRlID0gYygiZmlyZWJyaWNrMSIsICJkZWVwc2t5Ymx1ZTMiKSwNCiAgICAgICB0aXRsZS5jb2wgPSAiU3RyZXNzIG5ldHdvcmsiDQogICAgICApICsNCiAgICAgdG1hcDo6dG1fc2hhcGUoc3RyZXNzX25ldHdvcmspICsNCiAgICAgdG1hcDo6dG1fbGluZXMoDQogICAgICAgY29sID0gInRmX3N0cmVzcyIsIA0KICAgICAgIGNvbG9yTkEgPSBOVUxMLA0KICAgICAgIHNob3dOQSA9IEZBTFNFLA0KICAgICAgIHBhbGV0dGUgPSBjKCJmaXJlYnJpY2sxIiwgImRlZXBza3libHVlMyIpLA0KICAgICAgIGxlZ2VuZC5jb2wuc2hvdyA9IEZBTFNFDQogICAgICApDQogICkNCg0KaW50X21hcA0KYGBgDQoNCmBgYHtyIGRpc3BsYXlfdGFibGUsIGluY2x1ZGUgPSBUUlVFLCBlY2hvID0gRkFMU0UsIGNhY2hlID0gRkFMU0V9DQpgYGANCg0KYGBge3IgZHVyYXRpb24sIGluY2x1ZGUgPSBGQUxTRSwgY2FjaGUgPSBGQUxTRX0NCmBgYA0KDQojIyBTZXR1cCBpbmZvDQoNClRvIHJ1biB0aGlzIGFuYWx5c2lzLCB0aGUgdXNlciBzaG91bGQ6DQoNCjEuIENyZWF0ZSBhIGRhdGFiYXNlIG9uIGl0cyBQb3N0Z3JlU1FMLiBUbyB0ZXN0IGNvbm5lY3Rpb24gYW4gZW1wdHkgdGFibGUgb24gdGhlIGRhdGFiYXNlIGNhbGxlZCAidGVzdCIgc2hvdWxkIGJlIGNyZWF0ZWQgb24gdGhlIHB1YmxpYyBzY2hlbWEuIA0KICAgICsgVGlwOiBSdW4gRlVMTCBWQUNVVU0vQU5BTFlaRSBmcmVxdWVudGx5IHRvIHRoZSBkYXRhYmFzZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLg0KICAgICsgRm9sbG93IHRoZSB0aXBzIG9uIFt0aGlzIHByZXNlbnRhdGlvbl0oaHR0cHM6Ly90aGVidWlsZC5jb20vcHJlc2VudGF0aW9ucy9ub3QteW91ci1qb2IucGRmKSB0byBpbmNyZWFzZSBwZXJmb3JtYW5jZSBvZiB0aGUgZGF0YWJhc2UuDQoNCjIuIFNldCBwYXRoIHZhcmlhYmxlcyBmb3IgYG9zbTJwZ3NxbGAgYW5kIGBvc20ycGdyb3V0aW5nYC4NCg0KMy4gQ3JlYXRlIGEgcGFzc3dvcmQgZmlsZSBvbiBgJUFQUERBVEElL3Bvc3RncmVzcWwvcGdwYXNzLmNvbmZgIHdpdGggdGhlIGZvcm1hdCAqaG9zdG5hbWU6cG9ydDpkYXRhYmFzZTp1c2VybmFtZTpwYXNzd29yZCoNCg0KDQojIyBEYXRhIHNvdXJjZXMNCg0KYGBge3IsIGVjaG8gPSBGQUxTRX0NCmxpYnJhcnkoa2FibGVFeHRyYSkNCnRibCA8LSBkYXRhLmZyYW1lKA0KICBSZWdpb24gPSBjZWxsX3NwZWMoDQogICAgYygNCiAgICAgICJVUyIsDQogICAgICAiRXVyb3BlIiwNCiAgICAgICJVSyIsDQogICAgICAiVGhlIE5ldGhlcmxhbmRzIg0KICAgICkNCiAgKSwNCiAgc291cmNlX3BvcCA9IGNlbGxfc3BlYygNCiAgICBjKA0KICAgICAgIiIsDQogICAgICAiR0VPU1RBVCAtIEVVUk9TVEFUIiwNCiAgICAgICJPZmZpY2Ugb2YgTmF0aW9uYWwgU3RhdGlzdGljcyAtIFVLIiwNCiAgICAgICJDQlMgKENlbnRyYWFsIEJ1cmVhdSB2b29yIGRlIFN0YXRpc3RpZWspIC0gTkwiDQogICAgKSwNCiAgICBsaW5rID0gYygNCiAgICAgICIiLA0KICAgICAgImh0dHBzOi8vZWMuZXVyb3BhLmV1L2V1cm9zdGF0L3dlYi9naXNjby9nZW9kYXRhL3JlZmVyZW5jZS1kYXRhL3BvcHVsYXRpb24tZGlzdHJpYnV0aW9uLWRlbW9ncmFwaHkvZ2Vvc3RhdCIsDQogICAgICAiaHR0cHM6Ly93d3cub25zLmdvdi51ay9wZW9wbGVwb3B1bGF0aW9uYW5kY29tbXVuaXR5L3BvcHVsYXRpb25hbmRtaWdyYXRpb24vcG9wdWxhdGlvbmVzdGltYXRlcyIsDQogICAgICAiaHR0cHM6Ly93d3cuY2JzLm5sL25sLW5sL2Rvc3NpZXIvbmVkZXJsYW5kLXJlZ2lvbmFhbC9nZW9ncmFmaXNjaGUlMjBkYXRhL3dpamstZW4tYnV1cnRrYWFydC0yMDE3Ig0KICAgICkNCiAgKSwNCiAgZGVzY19wb3AgPSBjZWxsX3NwZWMoDQogICAgYygNCiAgICAgICJOb3QgYWRkZWQgeWV0LiIsDQogICAgICAiUG9wdWxhdGlvbiBncmlkIHBlciBzcXVhcmVkIGtpbG9tZXRlciBmb3IgMjAxMS4iLA0KICAgICAgIlBvcHVsYXRpb24gZXN0aW1hdGVzIGZvciBtaWQtMjAxNyBhdCBMU09BIGFuZCBNU09BIGxldmVsLiIsDQogICAgICAiRGlzdHJpY3QgYW5kIG5laWdoYm9yaG9vZCBtYXAgd2l0aCBhc3NvY2lhdGVkIGtleSBmaWd1cmVzIGZvciAyMDE3LiINCiAgICApDQogICksDQogIHNvdXJjZV9qb2JzID0gY2VsbF9zcGVjKA0KICAgIGMoDQogICAgICAiIiwNCiAgICAgICIiLA0KICAgICAgIk9mZmljZSBvZiBOYXRpb25hbCBTdGF0aXN0aWNzIC0gVUsiLA0KICAgICAgIkxJU0EgKE5hdGlvbmFsIEluZm9ybWF0aW9uIFN5c3RlbSBmb3IgV29ya3BsYWNlcykgZGF0YXNldCINCiAgICApLCANCiAgICBsaW5rID0gYygNCiAgICAgICIiLA0KICAgICAgIiIsDQogICAgICAiaHR0cHM6Ly93aWNpZC51a2RhdGFzZXJ2aWNlLmFjLnVrL2NpZGVyL3dpY2lkL2Rvd25sb2Fkcy5waHA/Z3Vlc3Q9MSIsDQogICAgICAiaHR0cHM6Ly93d3cubGlzYS5ubC9kYXRhL2dyYXRpcy1kYXRhL292ZXJ6aWNodC1saXNhLWRhdGEtcGVyLWdlbWVlbnRlIg0KICAgICkNCiAgKSwNCiAgZGVzY19qb2JzID0gY2VsbF9zcGVjKA0KICAgIGMoDQogICAgICAiTm90IGFkZGVkIHlldC4iLA0KICAgICAgIk5vIGRhdGEgYXZhaWxhYmxlIGZvciB0aGUgd2hvbGUgY29udGluZW50IHdpdGggaGlnaCBzcGF0aWFsIHJlc29sdXRpb24uIiwNCiAgICAgICJGbG93IGNvbW11dGUgZGF0YSBmb3IgdGhlIDIwMTEgQ2Vuc3VzIGF0IExTT0EgYW5kIE1TT0EgbGV2ZWwsIHdoZXJlIHRoZSB0b3RhbCBudW1iZXIgb2YgdHJpcHMgcGVyIHN1cGVyLW91dHB1dCBhcmVhIHdoZXJlIGFnZ3JlZ2F0ZWQuIiwNCiAgICAgICJKb2JzIHBlciBtdW5pY2lwYWxpdHkuIFRvIGVzdGltYXRlIGpvYnMgYXQgbmVpZ2hib3Job29kIGxldmVsIGFuIHdlaWdodGVkIGVzdGltYXRpb24gd2FzIG1hZGUgd2l0aCB0aGUgbnVtYmVyIG9mIGpvYnMgaW4gdGhlIHdob2xlIG11bmljaXBhbGl0eSBoYWZseSB3ZWlnaHRlZCBieSB0aGUgZnJhY3Rpb24gb2YgdGhlIG5laWdoYm9yaG9vZCBhcmVhLCBhbmQgaGFmbHkgd2VpZ2h0ZWQgYnkgdGhlIGZyYWN0aW9uIG9mIGNvbXBhbmllcyBpbiB0aGUgbmVpZ2hib3Job29kLiBUaGlzIGFwcHJvYWNoIG5lZWRzIHRvIGJlIHZhbGlkYXRlZCwgaG93ZXZlciBpdCBpcyBvbmUgd2F5IHRvIGFwcHJveGltYXRlIGl0LCBnaXZlbiB0aGF0IExJU0EgZGF0YSBhdCB0aGlzIGFnZ3JlZ2F0aW9uIGxldmVsIGhhcyB0byBiZSBib3VnaHQgYW5kIGlzIG5vdCBvcGVuIGRhdGEuIg0KICAgICkNCiAgKQ0KKQ0KDQpuYW1lcyh0YmwpIDwtIGMoIlJlZ2lvbiIsICJTb3VyY2UiLCAiRGVzY3JpcHRpb24iLCAiU291cmNlIiwgIkRlc2NyaXB0aW9uIikNCg0Ka2FibGUodGJsLCBhbGlnbiA9ICJjIiwgZXNjYXBlID0gRkFMU0UpICU+JQ0KICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgImJvcmRlcmVkIiwgZm9udF9zaXplID0gMTAsIGZ1bGxfd2lkdGggPSBUKSAlPiUgDQogIGFkZF9oZWFkZXJfYWJvdmUoYygiICIsICJQb3B1bGF0aW9uIiA9IDIsICJKb2JzIiA9IDIpKSAlPiUgDQogIGNvbHVtbl9zcGVjKDMsIHdpZHRoX21heCA9ICIxMGNtIikgJT4lIA0KICBjb2x1bW5fc3BlYyg1LCB3aWR0aF9tYXggPSAiMTBjbSIpDQpgYGANCg0K