Données géographiques

Ce site a pour but de référencer un ensemble de données spatiales utilisé dans des analyses spatiales dans le BE 6t.

EMPRISES

  • France
emprise_france <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/Affaires France/EN COURS/6t - Financer l'aménagement des courtes distances/Analyses/Donnees cartographiques/Schéma et cartes/contour_fr.gpkg")
  • Régions France (12)
emprise_regions_FR <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Fonds de carte/France Contours Régions/Contours_des_12_regions_fr.geojson")
  • Départements France
emprise_departements <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/DECOUPAGES_FR/DEPARTEMENT.shp")
  • Communes
emprise_communes <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Zonages/COMMUNES SHAPE/communes.shp")
  • Communes Europe
communes_europe <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Zonages/COMMUNES_EUROPE/COMM_RG_01M_2016_3035.shp")
  • IRIS France
iris <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/CONTOURS-IRIS_2-1__SHP__FRA_2020-01-01/CONTOURS-IRIS/1_DONNEES_LIVRAISON_2020-01-00139/CONTOURS-IRIS_2-1_SHP_LAMB93_FXX-2019/CONTOURS-IRIS.shp")
  • Aires urbaines

Une aire urbaine ou “grande aire urbaine” est un ensemble de communes, d’un seul tenant et sans enclave, constitué par un pôle urbain (unité urbaine) de plus de 10 000 emplois, et par des communes rurales ou unités urbaines (couronne périurbaine) dont au moins 40 % de la population résidente ayant un emploi travaille dans le pôle ou dans des communes attirées par celui-ci.

Metropole_Aires_urbaines <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/MetropoleAiresurbaines.shp/MetropoleAiresurbaines.shp")
  • Aires d’attraction des villes source

L’aire d’attraction d’une ville est un ensemble de communes, d’un seul tenant et sans enclave, qui définit l’étendue de l’influence d’un pôle de population et d’emploi sur les communes environnantes, cette influence étant mesurée par l’intensité des déplacements domicile-travail.

Le zonage en aires d’attraction des villes succède au zonage en aires urbaines de 2010.

aav2020_2022 <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/aav2020_2022/aav2020_2022.shp")
  • Unités urbaines

Une commune ou un ensemble de communes présentant une zone de bâti continu (pas de coupure de plus de 200 mètres entre deux constructions) qui compte au moins 2 000 habitants. Permet d’identifier des villes denses, isolées ou des communes rurales.

unites_urbaines <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/UNITES_URBAINES_2020_2023/uu2020_2023/uu2020_2023.shp')
  • Bassins de vie
bassins_de_vie <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/bassin_de_vie_2022_2023/bv2022_2023.shp")
  • Bassins de vie avec leurs communes
bassins_de_vie <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/bassin_de_vie_2022_2023_com/com_bv2022_2023.shp")
  • EPCI
EPCI <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/DECOUPAGES_FR/EPCI.shp")
  • Quartiers prioritaires de la ville
QP_METROPOLE_LB93 <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/qp-politiquedelaville-shp/QP_METROPOLE_LB93.shp")
paris <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Zonages/COMMUNES SHAPE/paris.gpkg")
  • Métropole Grand Lyon
grand_lyon <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/Affaires France/EN COURS/Grand Lyon - Etudes stratégiques de mobilité - M6-M7/Analyses/Donnees cartographiques/Couches_SIG/metropole_GL.gpkg")
  • Métropole Aix-Marseille-Provence
emprise_AMP <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/Affaires France/EN COURS/6t - Financer l'aménagement des courtes distances/Analyses/Donnees cartographiques/R_courtes_distances/data/metropole_aix_marseille.gpkg")
  • Arrondissements Marseille
arr_marseille <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/Affaires France/EN COURS/6t - Financer l'aménagement des courtes distances/Analyses/Donnees cartographiques/R_courtes_distances/processed_data/emprise_arr_marseille_sf_2154.gpkg"")
  • NUTS

La nomenclature NUTS (Nomenclature des unités territoriales statistiques) est un système hiérarchique de découpage du territoire économique de l’UE et du Royaume Uni qui sert de référence. Elle répertorie 92 régions au niveau NUTS 1, 242 au niveau NUTS 2 et 1166 au niveau NUTS 3.

NUTS <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/NUTS_RG_20M_2021_3035.shp/NUTS_RG_20M_2021_3035.shp")

CLC

  • Corine Europe ( (!) 16 go (!) )
CLC_europe <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/clc2018_v2018_20_geoPackage/clc2018_clc2018_v2018_20_geoPackage/CLC2018_CLC2018_V2018_20.gpkg')
  • CLC Allemagne
CLC_allemagne <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/CLC18_ALLEMAGNE.gpkg')
  • CLC Belgique
CLC_belgique <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/CLC18_BELGIQUE.gpkg')
  • CLC Espagne
CLC_espagne <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/CLC18_ESPAGNE.gpkg')
  • CLC France
CLC_france <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/CLC18_france.gpkg')
  • CLC Italie
CLC_italie <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/CLC18_ITALIE.gpkg')
  • CLC Suisse
CLC_suisse <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/CLC18_SUISSE.gpkg')
  • CLC AURA 2012
CLC_PACA_12 <- sf::st_read('C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/CLC_RARA_RGF_SHP/CLC_RARA_RGF_SHP/CLC00/CLC00_RARA_RGF.shp')
  • CLC PACA 2012
CLC_PACA_12 <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/Corine_Land_Cover/CLC_RPACA_RGF_SHP/CLC_RPACA_RGF_SHP/CLC00/CLC00_RPACA_RGF.shp"'")

RECENSEMENT 2018

La base fournit des résultats sur l’évolution et la structure par âge et par sexe de la population ; les indicateurs démographiques essentiels, les informations sur la structure de la population par catégorie socioprofessionnelle.

Niveau géographique : ensemble des IRIS des communes découpées en IRIS, ainsi que les données au niveau communal pour les communes non découpées en IRIS, afin de couvrir l’ensemble du territoire.

base_insee <- read.csv2("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/base-ic-evol-struct-pop-2018_csv/base-ic-evol-struct-pop-2018.CSV")

FILOSOFI REVENUS

  • Filosofi 2017 200m
filosofi_200m_2017 <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/Filosofi2017_carreaux_200m_gpkg/Filosofi2017_carreaux_200m_gpkg/Filosofi2017_carreaux_200m_met.gpkg")  
filosofi_200m_2017$revenus <-  filosofi_200m_2017$Ind_snv / filosofi_200m_2017$Ind  
  • Filosofi 2015 200m

Le fichier se trouve ici



  • Filosofi 2015 1000m
filosofi_1000m_2015 <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/Filosofi2015_carreaux_1000m_shp/Filosofi2015_carreaux_1000m_metropole.shp")  

# Création d'une variable revenus (revenus winsorisés (suppression des valeurs aberrantes) / population)
filosofi_1000m_2015$revenus <-  filosofi_1000m_2015$Ind_snv / filosofi_1000m_2015$Ind  

BDTOPO (routes)

Voir aussi plus bas FLUX WFS IGN

  • autoroutes France
FR_trace_autoroutes <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/Affaires France/EN COURS/Driveco - modele trafic/Analyses/Analyses de donnees/2_V2_aka_complements_France/Méta-modèle batch/Projet_Driveco_batch/Donnees/Donnees geographiques/trace autoroutes/trace_autoroutes.shp")
  • routes France
FR_trace_routes_nationales <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/Affaires France/EN COURS/Driveco - modele trafic/Analyses/Analyses de donnees/2_V2_aka_complements_France/Méta-modèle batch/Projet_Driveco_batch/Donnees/Donnees geographiques/trace nat/trace_nat.shp")

ARRÊTS TC (GTFS)

public_transit_unique <- sf::st_read("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Cartographie/GTFS/public-transit-unique.gpkg")

BPE

BPE <- read.csv2("C:/Users/otheureaux/Dropbox (6t)/6t/6Tcommun/Le bien commun/Base de données Quanti Carto/Insee/Base permanente des équipements/Base_permanente_Equipements_2021/bpe21_ensemble_xy_csv/bpe21_ensemble_xy.csv")
BPE_clean <- BPE %>%
  dplyr::filter(LAMBERT_X != "", LAMBERT_Y != "", 
                !is.na(LAMBERT_X), !is.na(LAMBERT_Y))
BPE_sf <- BPE_clean %>%
  sf::st_as_sf(coords = c("LAMBERT_X", "LAMBERT_Y"), crs = 2154)

Citation

Pour citer ces travaux :

Olivier Theureaux, 2023, “Collecte et analyse de données IGN, INSEE et autres avec R dans le cadre d’une mission de géomaticien dans le bureau d’étude 6t”

LS0tDQp0aXRsZTogIiINCm91dHB1dDogaHRtbF9kb2N1bWVudA0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgRG9ubsOpZXMgZ8Opb2dyYXBoaXF1ZXN7LnRhYnNldCAudW5udW1iZXJlZH0NCg0KQ2Ugc2l0ZSBhIHBvdXIgYnV0IGRlIHLDqWbDqXJlbmNlciB1biBlbnNlbWJsZSBkZSBkb25uw6llcyBzcGF0aWFsZXMgdXRpbGlzw6kgZGFucyBkZXMgYW5hbHlzZXMgc3BhdGlhbGVzIGRhbnMgbGUgQkUgNnQuDQoNCg0KDQojIyBFTVBSSVNFUw0KDQoqICoqRnJhbmNlKiogIA0KYGBge3IsIGV2YWw9Rn0NCmVtcHJpc2VfZnJhbmNlIDwtIHNmOjpzdF9yZWFkKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC9BZmZhaXJlcyBGcmFuY2UvRU4gQ09VUlMvNnQgLSBGaW5hbmNlciBsJ2Ftw6luYWdlbWVudCBkZXMgY291cnRlcyBkaXN0YW5jZXMvQW5hbHlzZXMvRG9ubmVlcyBjYXJ0b2dyYXBoaXF1ZXMvU2Now6ltYSBldCBjYXJ0ZXMvY29udG91cl9mci5ncGtnIikNCmBgYA0KDQoqICoqUsOpZ2lvbnMgRnJhbmNlICgxMikqKg0KYGBge3IsIGV2YWw9Rn0NCmVtcHJpc2VfcmVnaW9uc19GUiA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vQ2FydG9ncmFwaGllL0ZvbmRzIGRlIGNhcnRlL0ZyYW5jZSBDb250b3VycyBSw6lnaW9ucy9Db250b3Vyc19kZXNfMTJfcmVnaW9uc19mci5nZW9qc29uIikNCmBgYA0KDQoqICoqRMOpcGFydGVtZW50cyBGcmFuY2UqKg0KYGBge3IsIGV2YWw9Rn0NCmVtcHJpc2VfZGVwYXJ0ZW1lbnRzIDwtIHNmOjpzdF9yZWFkKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC82VGNvbW11bi9MZSBiaWVuIGNvbW11bi9CYXNlIGRlIGRvbm7DqWVzIFF1YW50aSBDYXJ0by9JbnNlZS9ERUNPVVBBR0VTX0ZSL0RFUEFSVEVNRU5ULnNocCIpDQpgYGANCg0KKiAqKkNvbW11bmVzKioNCmBgYHtyLCBldmFsPUZ9DQplbXByaXNlX2NvbW11bmVzIDwtIHNmOjpzdF9yZWFkKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC82VGNvbW11bi9MZSBiaWVuIGNvbW11bi9CYXNlIGRlIGRvbm7DqWVzIFF1YW50aSBDYXJ0by9DYXJ0b2dyYXBoaWUvWm9uYWdlcy9DT01NVU5FUyBTSEFQRS9jb21tdW5lcy5zaHAiKQ0KYGBgDQoNCiogKipDb21tdW5lcyBFdXJvcGUqKg0KYGBge3IsIGV2YWw9Rn0NCmNvbW11bmVzX2V1cm9wZSA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vQ2FydG9ncmFwaGllL1pvbmFnZXMvQ09NTVVORVNfRVVST1BFL0NPTU1fUkdfMDFNXzIwMTZfMzAzNS5zaHAiKQ0KYGBgDQoNCiogKipJUklTIEZyYW5jZSoqDQpgYGB7ciwgZXZhbD1GfQ0KaXJpcyA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vSW5zZWUvQ09OVE9VUlMtSVJJU18yLTFfX1NIUF9fRlJBXzIwMjAtMDEtMDEvQ09OVE9VUlMtSVJJUy8xX0RPTk5FRVNfTElWUkFJU09OXzIwMjAtMDEtMDAxMzkvQ09OVE9VUlMtSVJJU18yLTFfU0hQX0xBTUI5M19GWFgtMjAxOS9DT05UT1VSUy1JUklTLnNocCIpDQpgYGANCg0KKiAqKkFpcmVzIHVyYmFpbmVzKiogIA0KDQpVbmUgYWlyZSB1cmJhaW5lIG91ICJncmFuZGUgYWlyZSB1cmJhaW5lIiBlc3QgdW4gZW5zZW1ibGUgZGUgY29tbXVuZXMsIGQndW4gc2V1bCB0ZW5hbnQgZXQgc2FucyBlbmNsYXZlLCBjb25zdGl0dcOpIHBhciB1biBww7RsZSB1cmJhaW4gKHVuaXTDqSB1cmJhaW5lKSBkZSBwbHVzIGRlIDEwIDAwMCBlbXBsb2lzLCBldCBwYXIgZGVzIGNvbW11bmVzIHJ1cmFsZXMgb3UgdW5pdMOpcyB1cmJhaW5lcyAoY291cm9ubmUgcMOpcml1cmJhaW5lKSBkb250IGF1IG1vaW5zIDQwICUgZGUgbGEgcG9wdWxhdGlvbiByw6lzaWRlbnRlIGF5YW50IHVuIGVtcGxvaSB0cmF2YWlsbGUgZGFucyBsZSBww7RsZSBvdSBkYW5zIGRlcyBjb21tdW5lcyBhdHRpcsOpZXMgcGFyIGNlbHVpLWNpLiAgDQoNCmBgYHtyLCBldmFsPUZ9DQpNZXRyb3BvbGVfQWlyZXNfdXJiYWluZXMgPC0gc2Y6OnN0X3JlYWQoIkM6L1VzZXJzL290aGV1cmVhdXgvRHJvcGJveCAoNnQpLzZ0LzZUY29tbXVuL0xlIGJpZW4gY29tbXVuL0Jhc2UgZGUgZG9ubsOpZXMgUXVhbnRpIENhcnRvL0NhcnRvZ3JhcGhpZS9NZXRyb3BvbGVBaXJlc3VyYmFpbmVzLnNocC9NZXRyb3BvbGVBaXJlc3VyYmFpbmVzLnNocCIpDQpgYGANCg0KKiAqKkFpcmVzIGQnYXR0cmFjdGlvbiBkZXMgdmlsbGVzKiogW3NvdXJjZV0oaHR0cHM6Ly93d3cuaW5zZWUuZnIvZnIvaW5mb3JtYXRpb24vNDgwMzk1NCkgIA0KDQpM4oCZYWlyZSBk4oCZYXR0cmFjdGlvbiBk4oCZdW5lIHZpbGxlIGVzdCB1biBlbnNlbWJsZSBkZSBjb21tdW5lcywgZOKAmXVuIHNldWwgdGVuYW50IGV0IHNhbnMgZW5jbGF2ZSwgcXVpIGTDqWZpbml0IGzigJnDqXRlbmR1ZSBkZSBs4oCZaW5mbHVlbmNlIGTigJl1biBww7RsZSBkZSBwb3B1bGF0aW9uIGV0IGTigJllbXBsb2kgc3VyIGxlcyBjb21tdW5lcyBlbnZpcm9ubmFudGVzLCBjZXR0ZSBpbmZsdWVuY2Ugw6l0YW50IG1lc3Vyw6llIHBhciBs4oCZaW50ZW5zaXTDqSBkZXMgZMOpcGxhY2VtZW50cyBkb21pY2lsZS10cmF2YWlsLiAgDQogIA0KTGUgem9uYWdlIGVuIGFpcmVzIGTigJlhdHRyYWN0aW9uIGRlcyB2aWxsZXMgc3VjY8OoZGUgYXUgem9uYWdlIGVuIGFpcmVzIHVyYmFpbmVzIGRlIDIwMTAuICANCg0KYGBge3IsIGV2YWw9Rn0NCmFhdjIwMjBfMjAyMiA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vSW5zZWUvYWF2MjAyMF8yMDIyL2FhdjIwMjBfMjAyMi5zaHAiKQ0KYGBgDQoNCiogKipVbml0w6lzIHVyYmFpbmVzKiogIA0KDQpVbmUgY29tbXVuZSBvdSB1biBlbnNlbWJsZSBkZSBjb21tdW5lcyBwcsOpc2VudGFudCB1bmUgem9uZSBkZSBiw6J0aSBjb250aW51IChwYXMgZGUgY291cHVyZSBkZSBwbHVzIGRlIDIwMCBtw6h0cmVzIGVudHJlIGRldXggY29uc3RydWN0aW9ucykgcXVpIGNvbXB0ZSBhdSBtb2lucyAyIDAwMCBoYWJpdGFudHMuIFBlcm1ldCBkJ2lkZW50aWZpZXIgZGVzIHZpbGxlcyBkZW5zZXMsIGlzb2zDqWVzIG91IGRlcyBjb21tdW5lcyBydXJhbGVzLiAgDQoNCmBgYHtyLCBldmFsPUZ9DQp1bml0ZXNfdXJiYWluZXMgPC0gc2Y6OnN0X3JlYWQoJ0M6L1VzZXJzL290aGV1cmVhdXgvRHJvcGJveCAoNnQpLzZ0LzZUY29tbXVuL0xlIGJpZW4gY29tbXVuL0Jhc2UgZGUgZG9ubsOpZXMgUXVhbnRpIENhcnRvL0luc2VlL1VOSVRFU19VUkJBSU5FU18yMDIwXzIwMjMvdXUyMDIwXzIwMjMvdXUyMDIwXzIwMjMuc2hwJykNCmBgYA0KDQoqICoqQmFzc2lucyBkZSB2aWUqKg0KYGBge3IsIGV2YWw9Rn0NCmJhc3NpbnNfZGVfdmllIDwtIHNmOjpzdF9yZWFkKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC82VGNvbW11bi9MZSBiaWVuIGNvbW11bi9CYXNlIGRlIGRvbm7DqWVzIFF1YW50aSBDYXJ0by9JbnNlZS9iYXNzaW5fZGVfdmllXzIwMjJfMjAyMy9idjIwMjJfMjAyMy5zaHAiKQ0KYGBgDQoNCiogKipCYXNzaW5zIGRlIHZpZSBhdmVjIGxldXJzIGNvbW11bmVzKioNCmBgYHtyLCBldmFsPUZ9DQpiYXNzaW5zX2RlX3ZpZSA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vSW5zZWUvYmFzc2luX2RlX3ZpZV8yMDIyXzIwMjNfY29tL2NvbV9idjIwMjJfMjAyMy5zaHAiKQ0KYGBgDQoNCiogKipFUENJKioNCmBgYHtyLCBldmFsPUZ9DQpFUENJIDwtIHNmOjpzdF9yZWFkKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC82VGNvbW11bi9MZSBiaWVuIGNvbW11bi9CYXNlIGRlIGRvbm7DqWVzIFF1YW50aSBDYXJ0by9JbnNlZS9ERUNPVVBBR0VTX0ZSL0VQQ0kuc2hwIikNCmBgYA0KDQoqICoqUXVhcnRpZXJzIHByaW9yaXRhaXJlcyBkZSBsYSB2aWxsZSoqIA0KYGBge3IsIGV2YWw9Rn0NClFQX01FVFJPUE9MRV9MQjkzIDwtIHNmOjpzdF9yZWFkKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC82VGNvbW11bi9MZSBiaWVuIGNvbW11bi9CYXNlIGRlIGRvbm7DqWVzIFF1YW50aSBDYXJ0by9DYXJ0b2dyYXBoaWUvcXAtcG9saXRpcXVlZGVsYXZpbGxlLXNocC9RUF9NRVRST1BPTEVfTEI5My5zaHAiKQ0KYGBgDQoNCmBgYHtyLCBldmFsID0gRn0NCnBhcmlzIDwtIHNmOjpzdF9yZWFkKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC82VGNvbW11bi9MZSBiaWVuIGNvbW11bi9CYXNlIGRlIGRvbm7DqWVzIFF1YW50aSBDYXJ0by9DYXJ0b2dyYXBoaWUvWm9uYWdlcy9DT01NVU5FUyBTSEFQRS9wYXJpcy5ncGtnIikNCmBgYA0KDQoqICoqTcOpdHJvcG9sZSBHcmFuZCBMeW9uKiogDQpgYGB7ciwgZXZhbD1GfQ0KZ3JhbmRfbHlvbiA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvQWZmYWlyZXMgRnJhbmNlL0VOIENPVVJTL0dyYW5kIEx5b24gLSBFdHVkZXMgc3RyYXTDqWdpcXVlcyBkZSBtb2JpbGl0w6kgLSBNNi1NNy9BbmFseXNlcy9Eb25uZWVzIGNhcnRvZ3JhcGhpcXVlcy9Db3VjaGVzX1NJRy9tZXRyb3BvbGVfR0wuZ3BrZyIpDQpgYGANCg0KKiAqKk3DqXRyb3BvbGUgQWl4LU1hcnNlaWxsZS1Qcm92ZW5jZSoqDQpgYGB7ciwgZXZhbD1GfQ0KZW1wcmlzZV9BTVAgPC0gc2Y6OnN0X3JlYWQoIkM6L1VzZXJzL290aGV1cmVhdXgvRHJvcGJveCAoNnQpLzZ0L0FmZmFpcmVzIEZyYW5jZS9FTiBDT1VSUy82dCAtIEZpbmFuY2VyIGwnYW3DqW5hZ2VtZW50IGRlcyBjb3VydGVzIGRpc3RhbmNlcy9BbmFseXNlcy9Eb25uZWVzIGNhcnRvZ3JhcGhpcXVlcy9SX2NvdXJ0ZXNfZGlzdGFuY2VzL2RhdGEvbWV0cm9wb2xlX2FpeF9tYXJzZWlsbGUuZ3BrZyIpDQpgYGANCg0KKiAqKkFycm9uZGlzc2VtZW50cyBNYXJzZWlsbGUqKg0KYGBge3IsIGV2YWw9Rn0NCmFycl9tYXJzZWlsbGUgPC0gc2Y6OnN0X3JlYWQoIkM6L1VzZXJzL290aGV1cmVhdXgvRHJvcGJveCAoNnQpLzZ0L0FmZmFpcmVzIEZyYW5jZS9FTiBDT1VSUy82dCAtIEZpbmFuY2VyIGwnYW3DqW5hZ2VtZW50IGRlcyBjb3VydGVzIGRpc3RhbmNlcy9BbmFseXNlcy9Eb25uZWVzIGNhcnRvZ3JhcGhpcXVlcy9SX2NvdXJ0ZXNfZGlzdGFuY2VzL3Byb2Nlc3NlZF9kYXRhL2VtcHJpc2VfYXJyX21hcnNlaWxsZV9zZl8yMTU0Lmdwa2ciIikNCmBgYA0KDQoNCiogKipOVVRTKiogIA0KDQpMYSBub21lbmNsYXR1cmUgTlVUUyAoTm9tZW5jbGF0dXJlIGRlcyB1bml0w6lzIHRlcnJpdG9yaWFsZXMgc3RhdGlzdGlxdWVzKSBlc3QgdW4gc3lzdMOobWUgaGnDqXJhcmNoaXF1ZSBkZSBkw6ljb3VwYWdlIGR1IHRlcnJpdG9pcmUgw6ljb25vbWlxdWUgZGUgbCdVRSBldCBkdSBSb3lhdW1lIFVuaSBxdWkgc2VydCBkZSByw6lmw6lyZW5jZS4gRWxsZSByw6lwZXJ0b3JpZSA5MiByw6lnaW9ucyBhdSBuaXZlYXUgTlVUUyAxLCAyNDIgYXUgbml2ZWF1IE5VVFMgMiBldCAxMTY2IGF1IG5pdmVhdSBOVVRTIDMuICANCg0KYGBge3IsIGV2YWw9Rn0NCk5VVFMgPC0gc2Y6OnN0X3JlYWQoIkM6L1VzZXJzL290aGV1cmVhdXgvRHJvcGJveCAoNnQpLzZ0LzZUY29tbXVuL0xlIGJpZW4gY29tbXVuL0Jhc2UgZGUgZG9ubsOpZXMgUXVhbnRpIENhcnRvL0NhcnRvZ3JhcGhpZS9OVVRTX1JHXzIwTV8yMDIxXzMwMzUuc2hwL05VVFNfUkdfMjBNXzIwMjFfMzAzNS5zaHAiKQ0KYGBgDQoNCiMjIENMQw0KDQoqICoqQ29yaW5lIEV1cm9wZSAoICghKSAxNiBnbyAoISkgKSoqDQpgYGB7ciwgZXZhbD1GfQ0KQ0xDX2V1cm9wZSA8LSBzZjo6c3RfcmVhZCgnQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vQ2FydG9ncmFwaGllL0NvcmluZV9MYW5kX0NvdmVyL2NsYzIwMThfdjIwMThfMjBfZ2VvUGFja2FnZS9jbGMyMDE4X2NsYzIwMThfdjIwMThfMjBfZ2VvUGFja2FnZS9DTEMyMDE4X0NMQzIwMThfVjIwMThfMjAuZ3BrZycpDQpgYGANCg0KKiAqKkNMQyBBbGxlbWFnbmUqKg0KYGBge3IsIGV2YWw9Rn0NCkNMQ19hbGxlbWFnbmUgPC0gc2Y6OnN0X3JlYWQoJ0M6L1VzZXJzL290aGV1cmVhdXgvRHJvcGJveCAoNnQpLzZ0LzZUY29tbXVuL0xlIGJpZW4gY29tbXVuL0Jhc2UgZGUgZG9ubsOpZXMgUXVhbnRpIENhcnRvL0NhcnRvZ3JhcGhpZS9Db3JpbmVfTGFuZF9Db3Zlci9DTEMxOF9BTExFTUFHTkUuZ3BrZycpDQpgYGANCg0KKiAqKkNMQyBCZWxnaXF1ZSoqDQpgYGB7ciwgZXZhbD1GfQ0KQ0xDX2JlbGdpcXVlIDwtIHNmOjpzdF9yZWFkKCdDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC82VGNvbW11bi9MZSBiaWVuIGNvbW11bi9CYXNlIGRlIGRvbm7DqWVzIFF1YW50aSBDYXJ0by9DYXJ0b2dyYXBoaWUvQ29yaW5lX0xhbmRfQ292ZXIvQ0xDMThfQkVMR0lRVUUuZ3BrZycpDQpgYGANCg0KKiAqKkNMQyBFc3BhZ25lKioNCmBgYHtyLCBldmFsPUZ9DQpDTENfZXNwYWduZSA8LSBzZjo6c3RfcmVhZCgnQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vQ2FydG9ncmFwaGllL0NvcmluZV9MYW5kX0NvdmVyL0NMQzE4X0VTUEFHTkUuZ3BrZycpDQpgYGANCg0KKiAqKkNMQyBGcmFuY2UqKg0KYGBge3IsIGV2YWw9Rn0NCkNMQ19mcmFuY2UgPC0gc2Y6OnN0X3JlYWQoJ0M6L1VzZXJzL290aGV1cmVhdXgvRHJvcGJveCAoNnQpLzZ0LzZUY29tbXVuL0xlIGJpZW4gY29tbXVuL0Jhc2UgZGUgZG9ubsOpZXMgUXVhbnRpIENhcnRvL0NhcnRvZ3JhcGhpZS9Db3JpbmVfTGFuZF9Db3Zlci9DTEMxOF9mcmFuY2UuZ3BrZycpDQpgYGANCg0KKiAqKkNMQyBJdGFsaWUqKiAgDQpgYGB7ciwgZXZhbD1GfQ0KQ0xDX2l0YWxpZSA8LSBzZjo6c3RfcmVhZCgnQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vQ2FydG9ncmFwaGllL0NvcmluZV9MYW5kX0NvdmVyL0NMQzE4X0lUQUxJRS5ncGtnJykNCmBgYA0KDQoNCiogKipDTEMgU3Vpc3NlKiogDQpgYGB7ciwgZXZhbD1GfQ0KQ0xDX3N1aXNzZSA8LSBzZjo6c3RfcmVhZCgnQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vQ2FydG9ncmFwaGllL0NvcmluZV9MYW5kX0NvdmVyL0NMQzE4X1NVSVNTRS5ncGtnJykNCmBgYA0KDQoqICoqQ0xDIEFVUkEgMjAxMioqDQpgYGB7ciwgZXZhbD1GfQ0KQ0xDX1BBQ0FfMTIgPC0gc2Y6OnN0X3JlYWQoJ0M6L1VzZXJzL290aGV1cmVhdXgvRHJvcGJveCAoNnQpLzZ0LzZUY29tbXVuL0xlIGJpZW4gY29tbXVuL0Jhc2UgZGUgZG9ubsOpZXMgUXVhbnRpIENhcnRvL0NhcnRvZ3JhcGhpZS9Db3JpbmVfTGFuZF9Db3Zlci9DTENfUkFSQV9SR0ZfU0hQL0NMQ19SQVJBX1JHRl9TSFAvQ0xDMDAvQ0xDMDBfUkFSQV9SR0Yuc2hwJykNCmBgYA0KDQoqICoqQ0xDIFBBQ0EgMjAxMioqICANCmBgYHtyLCBldmFsPUZ9DQpDTENfUEFDQV8xMiA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vQ2FydG9ncmFwaGllL0NvcmluZV9MYW5kX0NvdmVyL0NMQ19SUEFDQV9SR0ZfU0hQL0NMQ19SUEFDQV9SR0ZfU0hQL0NMQzAwL0NMQzAwX1JQQUNBX1JHRi5zaHAiJyIpDQpgYGANCg0KIyMgUkVDRU5TRU1FTlQgMjAxOA0KDQpMYSBiYXNlIGZvdXJuaXQgZGVzIHLDqXN1bHRhdHMgc3VyIGwnw6l2b2x1dGlvbiBldCBsYSBzdHJ1Y3R1cmUgcGFyIMOiZ2UgZXQgcGFyIHNleGUgZGUgbGEgcG9wdWxhdGlvbiA7IGxlcyBpbmRpY2F0ZXVycyBkw6ltb2dyYXBoaXF1ZXMgZXNzZW50aWVscywgbGVzIGluZm9ybWF0aW9ucyBzdXIgbGEgc3RydWN0dXJlIGRlIGxhIHBvcHVsYXRpb24gcGFyIGNhdMOpZ29yaWUgc29jaW9wcm9mZXNzaW9ubmVsbGUuICAgDQoNCk5pdmVhdSBnw6lvZ3JhcGhpcXVlIDogZW5zZW1ibGUgZGVzIElSSVMgZGVzIGNvbW11bmVzIGTDqWNvdXDDqWVzIGVuIElSSVMsIGFpbnNpIHF1ZSBsZXMgZG9ubsOpZXMgYXUgbml2ZWF1IGNvbW11bmFsIHBvdXIgbGVzIGNvbW11bmVzIG5vbiBkw6ljb3Vww6llcyBlbiBJUklTLCBhZmluIGRlIGNvdXZyaXIgbCdlbnNlbWJsZSBkdSB0ZXJyaXRvaXJlLiAgDQoNCmBgYHtyLCBldmFsID0gRn0NCmJhc2VfaW5zZWUgPC0gcmVhZC5jc3YyKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC82VGNvbW11bi9MZSBiaWVuIGNvbW11bi9CYXNlIGRlIGRvbm7DqWVzIFF1YW50aSBDYXJ0by9JbnNlZS9iYXNlLWljLWV2b2wtc3RydWN0LXBvcC0yMDE4X2Nzdi9iYXNlLWljLWV2b2wtc3RydWN0LXBvcC0yMDE4LkNTViIpDQoNCmBgYA0KDQoNCiMjIEZJTE9TT0ZJIFJFVkVOVVMgDQoNCiogKipGaWxvc29maSAyMDE3IDIwMG0qKg0KYGBge3IsIGV2YWw9Rn0NCmZpbG9zb2ZpXzIwMG1fMjAxNyA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vSW5zZWUvRmlsb3NvZmkyMDE3X2NhcnJlYXV4XzIwMG1fZ3BrZy9GaWxvc29maTIwMTdfY2FycmVhdXhfMjAwbV9ncGtnL0ZpbG9zb2ZpMjAxN19jYXJyZWF1eF8yMDBtX21ldC5ncGtnIikgIA0KZmlsb3NvZmlfMjAwbV8yMDE3JHJldmVudXMgPC0gIGZpbG9zb2ZpXzIwMG1fMjAxNyRJbmRfc252IC8gZmlsb3NvZmlfMjAwbV8yMDE3JEluZCAgDQpgYGANCg0KKiAqKkZpbG9zb2ZpIDIwMTUgMjAwbSoqDQoNCkxlIGZpY2hpZXIgc2UgdHJvdXZlIFtpY2ldKGh0dHBzOi8vd3d3Lmluc2VlLmZyL2ZyL3N0YXRpc3RpcXVlcy80MTc2MjkwP3NvbW1haXJlPTQxNzYzMDUpDQoNCjxicj4NCjxicj4gIA0KDQoqICoqRmlsb3NvZmkgMjAxNSAxMDAwbSoqDQpgYGB7ciwgZXZhbD1GfQ0KZmlsb3NvZmlfMTAwMG1fMjAxNSA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vSW5zZWUvRmlsb3NvZmkyMDE1X2NhcnJlYXV4XzEwMDBtX3NocC9GaWxvc29maTIwMTVfY2FycmVhdXhfMTAwMG1fbWV0cm9wb2xlLnNocCIpICANCg0KIyBDcsOpYXRpb24gZCd1bmUgdmFyaWFibGUgcmV2ZW51cyAocmV2ZW51cyB3aW5zb3Jpc8OpcyAoc3VwcHJlc3Npb24gZGVzIHZhbGV1cnMgYWJlcnJhbnRlcykgLyBwb3B1bGF0aW9uKQ0KZmlsb3NvZmlfMTAwMG1fMjAxNSRyZXZlbnVzIDwtICBmaWxvc29maV8xMDAwbV8yMDE1JEluZF9zbnYgLyBmaWxvc29maV8xMDAwbV8yMDE1JEluZCAgDQpgYGANCg0KIyMgQkRUT1BPIChyb3V0ZXMpDQoNClZvaXIgYXVzc2kgcGx1cyBiYXMgRkxVWCBXRlMgSUdODQoNCiogKiphdXRvcm91dGVzIEZyYW5jZSoqDQpgYGB7ciwgZXZhbD1GfQ0KRlJfdHJhY2VfYXV0b3JvdXRlcyA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvQWZmYWlyZXMgRnJhbmNlL0VOIENPVVJTL0RyaXZlY28gLSBtb2RlbGUgdHJhZmljL0FuYWx5c2VzL0FuYWx5c2VzIGRlIGRvbm5lZXMvMl9WMl9ha2FfY29tcGxlbWVudHNfRnJhbmNlL03DqXRhLW1vZMOobGUgYmF0Y2gvUHJvamV0X0RyaXZlY29fYmF0Y2gvRG9ubmVlcy9Eb25uZWVzIGdlb2dyYXBoaXF1ZXMvdHJhY2UgYXV0b3JvdXRlcy90cmFjZV9hdXRvcm91dGVzLnNocCIpDQpgYGANCg0KKiAqKnJvdXRlcyBGcmFuY2UqKg0KYGBge3IsIGV2YWw9Rn0NCkZSX3RyYWNlX3JvdXRlc19uYXRpb25hbGVzIDwtIHNmOjpzdF9yZWFkKCJDOi9Vc2Vycy9vdGhldXJlYXV4L0Ryb3Bib3ggKDZ0KS82dC9BZmZhaXJlcyBGcmFuY2UvRU4gQ09VUlMvRHJpdmVjbyAtIG1vZGVsZSB0cmFmaWMvQW5hbHlzZXMvQW5hbHlzZXMgZGUgZG9ubmVlcy8yX1YyX2FrYV9jb21wbGVtZW50c19GcmFuY2UvTcOpdGEtbW9kw6hsZSBiYXRjaC9Qcm9qZXRfRHJpdmVjb19iYXRjaC9Eb25uZWVzL0Rvbm5lZXMgZ2VvZ3JhcGhpcXVlcy90cmFjZSBuYXQvdHJhY2VfbmF0LnNocCIpDQpgYGANCg0KIyMgQVJSw4pUUyBUQyAoR1RGUykNCg0KYGBge3IsIGV2YWw9Rn0NCnB1YmxpY190cmFuc2l0X3VuaXF1ZSA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vQ2FydG9ncmFwaGllL0dURlMvcHVibGljLXRyYW5zaXQtdW5pcXVlLmdwa2ciKQ0KYGBgDQoNCiMjIEJQRQ0KDQpgYGB7ciwgZXZhbD1GfQ0KQlBFIDwtIHJlYWQuY3N2MigiQzovVXNlcnMvb3RoZXVyZWF1eC9Ecm9wYm94ICg2dCkvNnQvNlRjb21tdW4vTGUgYmllbiBjb21tdW4vQmFzZSBkZSBkb25uw6llcyBRdWFudGkgQ2FydG8vSW5zZWUvQmFzZSBwZXJtYW5lbnRlIGRlcyDDqXF1aXBlbWVudHMvQmFzZV9wZXJtYW5lbnRlX0VxdWlwZW1lbnRzXzIwMjEvYnBlMjFfZW5zZW1ibGVfeHlfY3N2L2JwZTIxX2Vuc2VtYmxlX3h5LmNzdiIpDQpCUEVfY2xlYW4gPC0gQlBFICU+JQ0KICBkcGx5cjo6ZmlsdGVyKExBTUJFUlRfWCAhPSAiIiwgTEFNQkVSVF9ZICE9ICIiLCANCiAgICAgICAgICAgICAgICAhaXMubmEoTEFNQkVSVF9YKSwgIWlzLm5hKExBTUJFUlRfWSkpDQpCUEVfc2YgPC0gQlBFX2NsZWFuICU+JQ0KICBzZjo6c3RfYXNfc2YoY29vcmRzID0gYygiTEFNQkVSVF9YIiwgIkxBTUJFUlRfWSIpLCBjcnMgPSAyMTU0KQ0KYGBgDQoNCg0KDQoNCiMgQ2l0YXRpb24NCg0KUG91ciBjaXRlciBjZXMgdHJhdmF1eCA6DQoNCk9saXZpZXIgVGhldXJlYXV4LCAyMDIzLCDigJxDb2xsZWN0ZSBldCBhbmFseXNlIGRlIGRvbm7DqWVzIElHTiwgSU5TRUUgZXQgYXV0cmVzIGF2ZWMgUiBkYW5zIGxlIGNhZHJlIGQndW5lIG1pc3Npb24gZGUgZ8Opb21hdGljaWVuIGRhbnMgbGUgYnVyZWF1IGQnw6l0dWRlIDZ04oCd