navigo.h 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802
  1. #include "../metroflip_i.h"
  2. #include "../api/calypso/calypso_util.h"
  3. #include "../api/calypso/cards/navigo.h"
  4. #include <datetime.h>
  5. #include <stdbool.h>
  6. #ifndef METRO_LIST_H
  7. #define METRO_LIST_H
  8. #ifndef NAVIGO_H
  9. #define NAVIGO_H
  10. void metroflip_back_button_widget_callback(GuiButtonType result, InputType type, void* context);
  11. void metroflip_next_button_widget_callback(GuiButtonType result, InputType type, void* context);
  12. typedef struct {
  13. int transport_type;
  14. int transition;
  15. int service_provider;
  16. int station_group_id;
  17. int station_id;
  18. int location_gate;
  19. bool location_gate_available;
  20. int device;
  21. int door;
  22. int side;
  23. bool device_available;
  24. int route_number;
  25. bool route_number_available;
  26. int mission;
  27. bool mission_available;
  28. int vehicle_id;
  29. bool vehicle_id_available;
  30. int used_contract;
  31. bool used_contract_available;
  32. DateTime date;
  33. } NavigoCardEvent;
  34. typedef struct {
  35. int app_version;
  36. int country_num;
  37. int network_num;
  38. DateTime end_dt;
  39. } NavigoCardEnv;
  40. typedef struct {
  41. int card_status;
  42. int commercial_id;
  43. } NavigoCardHolder;
  44. typedef struct {
  45. int tariff;
  46. int serial_number;
  47. bool serial_number_available;
  48. int pay_method;
  49. bool pay_method_available;
  50. double price_amount;
  51. bool price_amount_available;
  52. DateTime start_date;
  53. DateTime end_date;
  54. bool end_date_available;
  55. int zones[5];
  56. bool zones_available;
  57. DateTime sale_date;
  58. int sale_agent;
  59. int sale_device;
  60. int status;
  61. int authenticator;
  62. } NavigoCardContract;
  63. typedef struct {
  64. NavigoCardEnv environment;
  65. NavigoCardHolder holder;
  66. NavigoCardContract* contracts;
  67. NavigoCardEvent* events;
  68. int ticket_count;
  69. } NavigoCardData;
  70. typedef struct {
  71. Metroflip* app;
  72. NavigoCardData* card;
  73. int page_id;
  74. // mutex
  75. FuriMutex* mutex;
  76. } NavigoContext;
  77. // Service Providers
  78. static const char* SERVICE_PROVIDERS[] = {
  79. [2] = "SNCF",
  80. [3] = "RATP",
  81. [115] = "CSO (VEOLIA)",
  82. [116] = "R'Bus (VEOLIA)",
  83. [156] = "Phebus",
  84. [175] = "RATP (Veolia Transport Nanterre)"};
  85. // Transport Types
  86. static const char* TRANSPORT_LIST[] = {
  87. [1] = "Bus Urbain",
  88. [2] = "Bus Interurbain",
  89. [3] = "Metro",
  90. [4] = "Tram",
  91. [5] = "Train",
  92. [8] = "Parking"};
  93. typedef enum {
  94. BUS_URBAIN = 1,
  95. BUS_INTERURBAIN = 2,
  96. METRO = 3,
  97. TRAM = 4,
  98. TRAIN = 5,
  99. PARKING = 8
  100. } TRANSPORT_TYPE;
  101. typedef enum {
  102. NAVIGO_EASY = 0,
  103. NAVIGO_DECOUVERTE = 1,
  104. NAVIGO_STANDARD = 2,
  105. NAVIGO_INTEGRAL = 6,
  106. IMAGINE_R = 14
  107. } CARD_STATUS;
  108. // Transition Types
  109. static const char* TRANSITION_LIST[] = {
  110. [1] = "Validation en entree",
  111. [2] = "Validation en sortie",
  112. [4] = "Controle volant (a bord)",
  113. [5] = "Validation de test",
  114. [6] = "Validation en correspondance (entree)",
  115. [7] = "Validation en correspondance (sortie)",
  116. [9] = "Annulation de validation",
  117. [10] = "Validation en entree",
  118. [13] = "Distribution",
  119. [15] = "Invalidation"};
  120. #endif // NAVIGO_H
  121. static const char* METRO_STATION_LIST[32][16] =
  122. {[1] =
  123. {[0] = "Cite",
  124. [1] = "Saint-Michel",
  125. [4] = "Odeon",
  126. [5] = "Cluny - La Sorbonne",
  127. [6] = "Maubert - Mutualite",
  128. [7] = "Luxembourg",
  129. [8] = "Châtelet",
  130. [9] = "Les Halles",
  131. [10] = "Les Halles",
  132. [12] = "Louvre - Rivoli",
  133. [13] = "Pont Neuf",
  134. [14] = "Cite",
  135. [15] = "Hotel de Ville"},
  136. [2] =
  137. {[0] = "Rennes",
  138. [2] = "Cambronne",
  139. [3] = "Sevres - Lecourbe",
  140. [4] = "Segur",
  141. [6] = "Saint-François-Xavier",
  142. [7] = "Duroc",
  143. [8] = "Vaneau",
  144. [9] = "Sevres - Babylone",
  145. [10] = "Rue du Bac",
  146. [11] = "Rennes",
  147. [12] = "Saint-Sulpice",
  148. [14] = "Mabillon",
  149. [15] = "Saint-Germain-des-Pres"},
  150. [3] =
  151. {[0] = "Villette",
  152. [4] = "Porte de la Villette",
  153. [5] = "Aubervilliers - Pantin - Quatre Chemins",
  154. [6] = "Fort d'Aubervilliers",
  155. [7] = "La Courneuve - 8 Mai 1945",
  156. [9] = "Hoche",
  157. [10] = "Eglise de Pantin",
  158. [11] = "Bobigny - Pantin - Raymond Queneau",
  159. [12] = "Bobigny - Pablo Picasso"},
  160. [4] =
  161. {[0] = "Montparnasse",
  162. [2] = "Pernety",
  163. [3] = "Plaisance",
  164. [4] = "Gaite",
  165. [6] = "Edgar Quinet",
  166. [7] = "Vavin",
  167. [8] = "Montparnasse - Bienvenue",
  168. [12] = "Saint-Placide",
  169. [14] = "Notre-Dame-des-Champs"},
  170. [5] =
  171. {[0] = "Nation",
  172. [2] = "Robespierre",
  173. [3] = "Porte de Montreuil",
  174. [4] = "Maraichers",
  175. [5] = "Buzenval",
  176. [6] = "Rue des Boulets",
  177. [7] = "Porte de Vincennes",
  178. [9] = "Picpus",
  179. [10] = "Nation",
  180. [12] = "Avron",
  181. [13] = "Alexandre Dumas"},
  182. [6] =
  183. {[0] = "Saint-Lazare",
  184. [1] = "Malesherbes",
  185. [2] = "Monceau",
  186. [3] = "Villiers",
  187. [4] = "Quatre-Septembre",
  188. [5] = "Opera",
  189. [6] = "Auber",
  190. [7] = "Havre - Caumartin",
  191. [8] = "Saint-Lazare",
  192. [9] = "Saint-Lazare",
  193. [10] = "Saint-Augustin",
  194. [12] = "Europe",
  195. [13] = "Liege"},
  196. [7] =
  197. {[0] = "Auteuil",
  198. [3] = "Porte de Saint-Cloud",
  199. [7] = "Porte d'Auteuil",
  200. [8] = "eglise d'Auteuil",
  201. [9] = "Michel-Ange - Auteuil",
  202. [10] = "Michel-Ange - Molitor",
  203. [11] = "Chardon-Lagache",
  204. [12] = "Mirabeau",
  205. [14] = "Exelmans",
  206. [15] = "Jasmin"},
  207. [8] =
  208. {[0] = "Republique",
  209. [1] = "Rambuteau",
  210. [3] = "Arts et Metiers",
  211. [4] = "Jacques Bonsergent",
  212. [5] = "Goncourt",
  213. [6] = "Temple",
  214. [7] = "Republique",
  215. [10] = "Oberkampf",
  216. [11] = "Parmentier",
  217. [12] = "Filles du Calvaire",
  218. [13] = "Saint-Sebastien - Froissart",
  219. [14] = "Richard-Lenoir",
  220. [15] = "Saint-Ambroise"},
  221. [9] =
  222. {[0] = "Austerlitz",
  223. [1] = "Quai de la Gare",
  224. [2] = "Chevaleret",
  225. [4] = "Saint-Marcel",
  226. [7] = "Gare d'Austerlitz",
  227. [8] = "Gare de Lyon",
  228. [10] = "Quai de la Rapee"},
  229. [10] =
  230. {[0] = "Invalides",
  231. [1] = "Champs-elysees - Clemenceau",
  232. [2] = "Concorde",
  233. [3] = "Madeleine",
  234. [4] = "Bir-Hakeim",
  235. [7] = "ecole Militaire",
  236. [8] = "La Tour-Maubourg",
  237. [9] = "Invalides",
  238. [11] = "Saint-Denis - Universite",
  239. [12] = "Varenne",
  240. [13] = "Assemblee nationale",
  241. [14] = "Solferino"},
  242. [11] =
  243. {[0] = "Sentier",
  244. [1] = "Tuileries",
  245. [2] = "Palais Royal - Musee du Louvre",
  246. [3] = "Pyramides",
  247. [4] = "Bourse",
  248. [6] = "Grands Boulevards",
  249. [7] = "Richelieu - Drouot",
  250. [8] = "Bonne Nouvelle",
  251. [10] = "Strasbourg - Saint-Denis",
  252. [11] = "Château d'Eau",
  253. [13] = "Sentier",
  254. [14] = "Reaumur - Sebastopol",
  255. [15] = "etienne Marcel"},
  256. [12] =
  257. {[0] = "ile Saint-Louis",
  258. [1] = "Faidherbe - Chaligny",
  259. [2] = "Reuilly - Diderot",
  260. [3] = "Montgallet",
  261. [4] = "Censier - Daubenton",
  262. [5] = "Place Monge",
  263. [6] = "Cardinal Lemoine",
  264. [7] = "Jussieu",
  265. [8] = "Sully - Morland",
  266. [9] = "Pont Marie",
  267. [10] = "Saint-Paul",
  268. [12] = "Bastille",
  269. [13] = "Chemin Vert",
  270. [14] = "Breguet - Sabin",
  271. [15] = "Ledru-Rollin"},
  272. [13] =
  273. {[0] = "Daumesnil",
  274. [1] = "Porte Doree",
  275. [3] = "Porte de Charenton",
  276. [7] = "Bercy",
  277. [8] = "Dugommier",
  278. [10] = "Michel Bizot",
  279. [11] = "Daumesnil",
  280. [12] = "Bel-Air"},
  281. [14] =
  282. {[0] = "Italie",
  283. [2] = "Porte de Choisy",
  284. [3] = "Porte d'Italie",
  285. [4] = "Cite universitaire",
  286. [9] = "Maison Blanche",
  287. [10] = "Tolbiac",
  288. [11] = "Nationale",
  289. [12] = "Campo-Formio",
  290. [13] = "Les Gobelins",
  291. [14] = "Place d'Italie",
  292. [15] = "Corvisart"},
  293. [15] =
  294. {[0] = "Denfert",
  295. [1] = "Cour Saint-Emilion",
  296. [2] = "Porte d'Orleans",
  297. [3] = "Bibliotheque François Mitterrand",
  298. [4] = "Mouton-Duvernet",
  299. [5] = "Alesia",
  300. [6] = "Olympiades",
  301. [8] = "Glaciere",
  302. [9] = "Saint-Jacques",
  303. [10] = "Raspail",
  304. [14] = "Denfert-Rochereau"},
  305. [16] =
  306. {[0] = "Felix Faure",
  307. [1] = "Falguiere",
  308. [2] = "Pasteur",
  309. [3] = "Volontaires",
  310. [4] = "Vaugirard",
  311. [5] = "Convention",
  312. [6] = "Porte de Versailles",
  313. [9] = "Balard",
  314. [10] = "Lourmel",
  315. [11] = "Boucicaut",
  316. [12] = "Felix Faure",
  317. [13] = "Charles Michels",
  318. [14] = "Javel - Andre Citroen"},
  319. [17] =
  320. {[0] = "Passy",
  321. [2] = "Porte Dauphine",
  322. [4] = "La Motte-Picquet - Grenelle",
  323. [5] = "Commerce",
  324. [6] = "Avenue emile Zola",
  325. [7] = "Dupleix",
  326. [8] = "Passy",
  327. [9] = "Ranelagh",
  328. [11] = "La Muette",
  329. [13] = "Rue de la Pompe",
  330. [14] = "Boissiere",
  331. [15] = "Trocadero"},
  332. [18] =
  333. {[0] = "Etoile",
  334. [1] = "Iena",
  335. [3] = "Alma - Marceau",
  336. [4] = "Miromesnil",
  337. [5] = "Saint-Philippe du Roule",
  338. [7] = "Franklin D. Roosevelt",
  339. [8] = "George V",
  340. [9] = "Kleber",
  341. [10] = "Victor Hugo",
  342. [11] = "Argentine",
  343. [12] = "Charles de Gaulle - Itoile",
  344. [14] = "Ternes",
  345. [15] = "Courcelles"},
  346. [19] =
  347. {[0] = "Clichy - Saint Ouen",
  348. [1] = "Mairie de Clichy",
  349. [2] = "Gabriel Peri",
  350. [3] = "Les Agnettes",
  351. [4] = "Asnieres - Gennevilliers - Les Courtilles",
  352. [9] = "La Chapelle)",
  353. [10] = "Garibaldi",
  354. [11] = "Mairie de Saint-Ouen",
  355. [13] = "Carrefour Pleyel",
  356. [14] = "Saint-Denis - Porte de Paris",
  357. [15] = "Basilique de Saint-Denis"},
  358. [20] =
  359. {[0] = "Montmartre",
  360. [1] = "Porte de Clignancourt",
  361. [6] = "Porte de la Chapelle",
  362. [7] = "Marx Dormoy",
  363. [9] = "Marcadet - Poissonniers",
  364. [10] = "Simplon",
  365. [11] = "Jules Joffrin",
  366. [12] = "Lamarck - Caulaincourt"},
  367. [21] =
  368. {[0] = "Lafayette",
  369. [1] = "Chaussee d'Antin - La Fayette",
  370. [2] = "Le Peletier",
  371. [3] = "Cadet",
  372. [4] = "Château Rouge",
  373. [7] = "Barbes - Rochechouart",
  374. [8] = "Gare du Nord",
  375. [9] = "Gare de l'Est",
  376. [10] = "Poissonniere",
  377. [11] = "Château-Landon"},
  378. [22] =
  379. {[0] = "Buttes Chaumont",
  380. [1] = "Porte de Pantin",
  381. [2] = "Ourcq",
  382. [4] = "Corentin Cariou",
  383. [6] = "Crimee",
  384. [8] = "Riquet",
  385. [9] = "La Chapelle",
  386. [10] = "Louis Blanc",
  387. [11] = "Stalingrad",
  388. [12] = "Jaures",
  389. [13] = "Laumiere",
  390. [14] = "Bolivar",
  391. [15] = "Colonel Fabien"},
  392. [23] =
  393. {[0] = "Belleville",
  394. [2] = "Porte des Lilas",
  395. [3] = "Mairie des Lilas",
  396. [4] = "Porte de Bagnolet",
  397. [5] = "Gallieni",
  398. [8] = "Place des Fetes",
  399. [9] = "Botzaris",
  400. [10] = "Danube",
  401. [11] = "Pre Saint-Gervais",
  402. [13] = "Buttes Chaumont",
  403. [14] = "Jourdain",
  404. [15] = "Telegraphe"},
  405. [24] =
  406. {[0] = "Pere Lachaise",
  407. [1] = "Voltaire",
  408. [2] = "Charonne",
  409. [4] = "Pere Lachaise",
  410. [5] = "Menilmontant",
  411. [6] = "Rue Saint-Maur",
  412. [7] = "Philippe Auguste",
  413. [8] = "Saint-Fargeau",
  414. [9] = "Pelleport",
  415. [10] = "Gambetta",
  416. [12] = "Belleville",
  417. [13] = "Couronnes",
  418. [14] = "Pyrenees"},
  419. [25] =
  420. {[0] = "Charenton",
  421. [2] = "Croix de Chavaux",
  422. [3] = "Mairie de Montreuil",
  423. [4] = "Maisons-Alfort - Les Juilliottes",
  424. [5] = "Creteil - L'echat",
  425. [6] = "Creteil - Universite",
  426. [7] = "Creteil - Prefecture",
  427. [8] = "Saint-Mande",
  428. [10] = "Berault",
  429. [11] = "Château de Vincennes",
  430. [12] = "Liberte",
  431. [13] = "Charenton - ecoles",
  432. [14] = "ecole veterinaire de Maisons-Alfort",
  433. [15] = "Maisons-Alfort - Stade"},
  434. [26] =
  435. {[0] = "Ivry - Villejuif",
  436. [3] = "Porte d'Ivry",
  437. [4] = "Pierre et Marie Curie",
  438. [5] = "Mairie d'Ivry",
  439. [6] = "Le Kremlin-Bicetre",
  440. [7] = "Villejuif - Leo Lagrange",
  441. [8] = "Villejuif - Paul Vaillant-Couturier",
  442. [9] = "Villejuif - Louis Aragon"},
  443. [27] =
  444. {[0] = "Vanves",
  445. [2] = "Porte de Vanves",
  446. [7] = "Malakoff - Plateau de Vanves",
  447. [8] = "Malakoff - Rue etienne Dolet",
  448. [9] = "Châtillon - Montrouge"},
  449. [28] =
  450. {[0] = "Issy",
  451. [2] = "Corentin Celton",
  452. [3] = "Mairie d'Issy",
  453. [8] = "Marcel Sembat",
  454. [9] = "Billancourt",
  455. [10] = "Pont de Sevres"},
  456. [29] =
  457. {[0] = "Levallois",
  458. [4] = "Boulogne - Jean Jaures",
  459. [5] = "Boulogne - Pont de Saint-Cloud",
  460. [8] = "Les Sablons",
  461. [9] = "Pont de Neuilly",
  462. [10] = "Esplanade de la Defense",
  463. [11] = "La Defense",
  464. [12] = "Porte de Champerret",
  465. [13] = "Louise Michel",
  466. [14] = "Anatole France",
  467. [15] = "Pont de Levallois - Becon"},
  468. [30] =
  469. {[0] = "Pereire",
  470. [1] = "Porte Maillot",
  471. [4] = "Wagram",
  472. [5] = "Pereire",
  473. [8] = "Brochant",
  474. [9] = "Porte de Clichy",
  475. [12] = "Guy Moquet",
  476. [13] = "Porte de Saint-Ouen"},
  477. [31] = {
  478. [0] = "Pigalle",
  479. [2] = "Funiculaire de Montmartre (station inferieure)",
  480. [3] = "Funiculaire de Montmartre (station superieure)",
  481. [4] = "Anvers",
  482. [5] = "Abbesses",
  483. [6] = "Pigalle",
  484. [7] = "Blanche",
  485. [8] = "Trinite - d'Estienne d'Orves",
  486. [9] = "Notre-Dame-de-Lorette",
  487. [10] = "Saint-Georges",
  488. [12] = "Rome",
  489. [13] = "Place de Clichy",
  490. [14] = "La Fourche"}};
  491. static const char* TRAIN_LINES_LIST[77] = {
  492. [1] = "RER B", [3] = "RER B", [6] = "RER A", [14] = "RER B",
  493. [15] = "RER B", [16] = "RER A", [17] = "RER A", [18] = "RER B",
  494. [20] = "Transilien P", [21] = "Transilien P", [22] = "T4", [23] = "Transilien P",
  495. [26] = "RER A", [28] = "RER B", [30] = "Transilien L", [31] = "Transilien L",
  496. [32] = "Transilien J", [33] = "RER A", [35] = "Transilien J", [40] = "RER D",
  497. [41] = "RER C", [42] = "RER C", [43] = "Transilien R", [44] = "Transilien R",
  498. [45] = "RER D", [50] = "Transilien H", [51] = "Transilien K", [52] = "RER D",
  499. [53] = "Transilien H", [54] = "Transilien J", [55] = "RER C", [56] = "Transilien H",
  500. [57] = "Transilien H", [60] = "Transilien N", [61] = "Transilien N", [63] = "RER C",
  501. [64] = "RER C", [65] = "Transilien V", [70] = "RER B", [72] = "Transilien J",
  502. [73] = "Transilien J", [75] = "RER C", [76] = "RER C"};
  503. static const char* TRAIN_STATION_LIST[77][19] = {
  504. [1] = {[0] = "Châtelet-Les Halles", [1] = "Châtelet-Les Halles", [7] = "Luxembourg"},
  505. [3] = {[0] = "Saint-Michel Notre-Dame"},
  506. [6] = {[0] = "Auber", [6] = "Auber"},
  507. [14] = {[4] = "Cite Universitaire"},
  508. [15] = {[12] = "Port Royal"},
  509. [16] =
  510. {[1] = "Nation",
  511. [2] = "Fontenay-sous-Bois | Vincennes",
  512. [3] = "Joinville-le-Pont | Nogent-sur-Marne",
  513. [4] = "Saint-Maur Creteil",
  514. [5] = "Le Parc de Saint-Maur",
  515. [6] = "Champigny",
  516. [7] = "La Varenne-Chennevieres",
  517. [8] = "Boissy-Saint-Leger | Sucy Bonneuil"},
  518. [17] =
  519. {[1] = "Charles de Gaulle-Etoile",
  520. [4] = "La Defense (Grande Arche)",
  521. [5] = "Nanterre-Ville",
  522. [6] = "Rueil-Malmaison",
  523. [8] = "Chatou-Croissy",
  524. [9] = "Le Vesinet-Centre | Le Vesinet-Le Pecq | Saint-Germain-en-Laye"},
  525. [18] =
  526. {[0] = "Denfert-Rochereau",
  527. [1] = "Gentilly",
  528. [2] = "Arcueil-Cachan | Laplace",
  529. [3] = "Bagneux | Bourg-la-Reine",
  530. [4] = "La Croix-de-Berny | Parc de Sceaux",
  531. [5] = "Antony | Fontaine-Michalon | Les Baconnets",
  532. [6] = "Massy-Palaiseau | Massy-Verrieres",
  533. [7] = "Palaiseau Villebon | Palaiseau",
  534. [8] = "Lozere",
  535. [9] = "Le Guichet | Orsay-Ville",
  536. [10] =
  537. "Bures-sur-Yvette | Courcelle-sur-Yvette | Gif-sur-Yvette | La Hacquiniere | Saint-Remy-les-Chevreuse"},
  538. [20] =
  539. {[1] = "Gare de l'Est",
  540. [4] = "Pantin",
  541. [5] = "Noisy-le-Sec",
  542. [6] = "Bondy",
  543. [7] = "Gagny | Le Raincy Villemomble Montfermeil",
  544. [9] = "Chelles Gournay | Le Chenay Gagny",
  545. [10] = "Vaires Torcy",
  546. [11] = "Lagny-Thorigny",
  547. [13] = "Esbly",
  548. [14] = "Meaux",
  549. [15] = "Changis-Saint-Jean | Isles-Armentieres Congis | Lizy-sur-Ourcq | Trilport",
  550. [16] = "Crouy-sur-Ourcq | La Ferte-sous-Jouarre | Nanteuil Saacy"},
  551. [21] =
  552. {[5] = "Rosny-Bois-Perrier | Rosny-sous-Bois | Val de Fontenay",
  553. [6] = "Nogent Le-Perreux",
  554. [7] = "Les Boullereaux Champigny",
  555. [8] = "Villiers-sur-Marne Plessis-Trevise",
  556. [9] = "Les Yvris Noisy-le-Grand",
  557. [10] = "Emerainville Pontault-Combault | Roissy-en-Brie",
  558. [11] = "Ozoir-la-Ferriere",
  559. [12] = "Gretz-Armainvilliers | Tournan",
  560. [15] =
  561. "Courquetaine | Faremoutiers Pommeuse | Guerard La-Celle-sur-Morin | Liverdy en Brie | Marles-en-Brie | Mormant | Mortcerf | Mouroux | Ozouer le voulgis | Verneuil-l'Etang | Villepatour - Presles | Yebles - Guignes | Yebles",
  562. [16] =
  563. "Chailly Boissy-le-Châtel | Chauffry | Coulommiers | Jouy-sur-Morin Le-Marais | Nangis | Saint-Remy-la-Vanne | Saint-Simeon",
  564. [17] =
  565. "Champbenoist-Poigny | La Ferte-Gaucher | Longueville | Provins | Sainte-Colombe-Septveilles",
  566. [18] = "Flamboin | Meilleray | Villiers St Georges"},
  567. [22] =
  568. {[7] =
  569. "Allee de la Tour-Rendez-Vous | La Remise-a-Jorelle | Les Coquetiers | Les Pavillons-sous-Bois",
  570. [8] = "Gargan",
  571. [9] = "Freinville Sevran | L'Abbaye"},
  572. [23] =
  573. {[13] = "Couilly Saint-Germain Quincy | Les Champs-Forts | Montry Conde",
  574. [14] = "Crecy-en-Brie La Chapelle | Villiers-Montbarbin"},
  575. [26] =
  576. {[5] = "Val de Fontenay",
  577. [6] = "Bry-sur-Marne | Neuilly-Plaisance",
  578. [7] = "Noisy-le-Grand (Mont d'Est)",
  579. [8] = "Noisy-Champs",
  580. [10] = "Lognes | Noisiel | Torcy",
  581. [11] = "Bussy-Saint-Georges",
  582. [12] = "Val d'europe",
  583. [13] = "Marne-la-Vallee Chessy"},
  584. [28] = {[4] = "Fontenay-aux-Roses | Robinson | Sceaux"},
  585. [30] =
  586. {[1] = "Gare Saint-Lazare",
  587. [3] = "Pont Cardinet",
  588. [4] =
  589. "Asnieres | Becon-les-Bruyeres | Clichy Levallois | Courbevoie | La Defense (Grande Arche)",
  590. [5] = "Puteaux | Suresnes Mont-Valerien",
  591. [7] = "Garches Marne-la-Coquette | Le Val d'Or | Saint-Cloud",
  592. [8] = "Vaucresson",
  593. [9] = "Bougival | La Celle-Saint-Cloud | Louveciennes | Marly-le-Roi",
  594. [10] = "L'Etang-la-Ville | Saint-Nom-la-Breteche Foret de Marly"},
  595. [31] =
  596. {[7] = "Chaville-Rive Droite | Sevres Ville-d'Avray | Viroflay-Rive Droite",
  597. [8] = "Montreuil | Versailles-Rive Droite"},
  598. [32] =
  599. {[5] = "La Garenne-Colombes | Les Vallees | Nanterre-Universite",
  600. [7] = "Houilles Carrieres-sur-Seine | Sartrouville",
  601. [9] = "Maisons-Laffitte",
  602. [10] = "Poissy",
  603. [11] = "Villennes-sur-Seine",
  604. [12] = "Les Clairieres de Verneuil | Vernouillet Verneuil",
  605. [13] = "Aubergenville-Elisabethville | Les Mureaux",
  606. [14] = "Epone Mezieres",
  607. [16] = "Bonnieres | Mantes-Station | Mantes-la-Jolie | Port-Villez | Rosny-sur-Seine"},
  608. [33] =
  609. {[10] = "Acheres-Grand-Cormier | Acheres-Ville",
  610. [11] = "Cergy-Prefecture | Neuville-Universite",
  611. [12] = "Cergy-Saint-Christophe | Cergy-le-Haut"},
  612. [35] =
  613. {[4] = "Bois-Colombes",
  614. [5] = "Colombes | Le Stade",
  615. [6] = "Argenteuil | Argenteuil",
  616. [8] = "Cormeilles-en-Parisis | Val d'Argenteuil | Val d'Argenteuil",
  617. [9] = "Herblay | La Frette Montigny",
  618. [10] = "Conflans-Fin d'Oise | Conflans-Sainte-Honorine",
  619. [11] = "Andresy | Chanteloup-les-Vignes | Maurecourt",
  620. [12] = "Triel-sur-Seine | Vaux-sur-Seine",
  621. [13] = "Meulan Hadricourt | Thun-le-Paradis",
  622. [14] = "Gargenville | Juziers",
  623. [15] = "Issou Porcheville | Limay",
  624. [16] = "Breval | Menerville"},
  625. [40] =
  626. {[1] = "Gare de Lyon",
  627. [5] = "Le Vert de Maisons | Maisons-Alfort Alfortville",
  628. [6] = "Villeneuve-Prairie",
  629. [7] = "Villeneuve-Triage",
  630. [8] = "Villeneuve-Saint-Georges",
  631. [9] = "Juvisy | Vigneux-sur-Seine",
  632. [10] = "Ris-Orangis | Viry-Châtillon",
  633. [11] = "Evry Val de Seine | Grand-Bourg",
  634. [12] = "Corbeil-Essonnes | Mennecy | Moulin-Galant",
  635. [13] = "Ballancourt | Fontenay le Vicomte",
  636. [14] = "La Ferte-Alais",
  637. [16] = "Boutigny | Maisse",
  638. [17] = "Boigneville | Buno-Gironville"},
  639. [41] =
  640. {[0] = "Musee d'Orsay | Saint-Michel Notre-Dame",
  641. [1] = "Gare d'Austerlitz",
  642. [2] = "Bibliotheque-Francois Mitterrand",
  643. [4] = "Ivry-sur-Seine | Vitry-sur-Seine",
  644. [5] = "Choisy-le-Roi | Les Ardoines",
  645. [7] = "Villeneuve-le-Roi",
  646. [8] = "Ablon",
  647. [9] = "Athis-Mons"},
  648. [42] =
  649. {[9] = "Epinay-sur-Orge | Savigny-sur-Orge",
  650. [10] = "Sainte-Genevieve-des-Bois",
  651. [11] = "Saint-Michel-sur-Orge",
  652. [12] = "Bretigny-sur-Orge | Marolles-en-Hurepoix",
  653. [13] = "Bouray | Lardy",
  654. [14] = "Chamarande | Etampes | Etrechy",
  655. [16] = "Saint-Martin d'Etampes",
  656. [17] = "Guillerval"},
  657. [43] =
  658. {[9] = "Montgeron Crosne | Yerres",
  659. [10] = "Brunoy",
  660. [11] = "Boussy-Saint-Antoine | Combs-la-Ville Quincy",
  661. [12] = "Lieusaint Moissy",
  662. [13] = "Cesson | Savigny-le-Temple Nandy",
  663. [15] = "Le Mee | Melun",
  664. [16] = "Chartrettes | Fontaine-le-Port | Livry-sur-Seine",
  665. [17] =
  666. "Champagne-sur-Seine | Hericy | La Grande Paroisse | Vernou-sur-Seine | Vulaines-sur-Seine Samoreau"},
  667. [44] =
  668. {[12] = "Essonnes-Robinson | Villabe",
  669. [13] = "Coudray-Montceaux | Le Plessis-Chenet-IBM | Saint-Fargeau",
  670. [14] = "Boissise-le-Roi | Ponthierry Pringy",
  671. [15] = "Vosves",
  672. [16] = "Bois-le-Roi",
  673. [17] =
  674. "Bagneaux-sur-Loing | Bourron-Marlotte Grez | Fontainebleau-Avon | Montereau | Montigny-sur-Loing | Moret Veneux-les-Sablons | Nemours Saint-Pierre | Saint-Mammes | Souppes | Thomery"},
  675. [45] =
  676. {[10] = "Grigny-Centre",
  677. [11] = "Evry Courcouronnes | Orangis Bois de l'Epine",
  678. [12] = "Le Bras-de-Fer - Evry Genopole"},
  679. [50] =
  680. {[0] = "Haussmann-Saint-Lazare",
  681. [1] = "Gare du Nord | Magenta | Paris-Nord",
  682. [5] = "Epinay-Villetaneuse | Saint-Denis | Sevres-Rive Gauche",
  683. [6] = "La Barre-Ormesson",
  684. [7] = "Champ de Courses d'Enghien | Enghien-les-Bains",
  685. [8] = "Ermont-Eaubonne | Ermont-Halte | Gros-Noyer Saint-Prix",
  686. [9] = "Saint-Leu-La-Foret | Taverny | Vaucelles",
  687. [10] = "Bessancourt | Frepillon | Mery",
  688. [11] = "Meriel | Valmondois",
  689. [12] = "Bruyeres-sur-Oise | Champagne-sur-Oise | L'Isle-Adam Parmain | Persan Beaumont"},
  690. [51] =
  691. {[4] = "La Courneuve-Aubervilliers | La Plaine-Stade de France",
  692. [5] = "Le Bourget",
  693. [7] = "Blanc-Mesnil | Drancy",
  694. [8] = "Aulnay-sous-Bois",
  695. [9] = "Sevran Livry | Vert-Galant",
  696. [10] = "Villeparisis",
  697. [11] = "Compans | Mitry-Claye",
  698. [12] = "Dammartin Juilly Saint-Mard | Thieux Nantouillet"},
  699. [52] =
  700. {[5] = "Stade de France-Saint-Denis",
  701. [6] = "Pierrefitte Stains",
  702. [7] = "Garges-Sarcelles",
  703. [8] = "Villiers-le-Bel (Gonesse - Arnouville)",
  704. [10] = "Goussainville | Les Noues | Louvres",
  705. [11] = "La Borne-Blanche | Survilliers-Fosses"},
  706. [53] =
  707. {[6] = "Deuil Montmagny",
  708. [7] = "Groslay",
  709. [8] = "Sarcelles Saint-Brice",
  710. [9] = "Domont | Ecouen Ezanville",
  711. [10] = "Bouffemont Moisselles | Montsoult Maffliers",
  712. [11] = "Belloy-Saint-Martin | Luzarches | Seugy | Viarmes | Villaines"},
  713. [54] =
  714. {[8] = "Cernay",
  715. [9] = "Franconville Plessis-Bouchard | Montigny-Beauchamp",
  716. [10] = "Pierrelaye",
  717. [11] = "Pontoise | Saint-Ouen-l'Aumone-Liesse",
  718. [12] = "Boissy-l'Aillerie | Osny",
  719. [15] = "Chars | Montgeroult Courcelles | Santeuil Le Perchay | Us"},
  720. [55] =
  721. {[0] =
  722. "Avenue Foch | Avenue Henri-Martin | Boulainvilliers | Kennedy Radio-France | Neuilly-Porte Maillot (Palais des congres)",
  723. [1] = "Pereire-Levallois",
  724. [2] = "Porte de Clichy",
  725. [3] = "Saint-Ouen",
  726. [4] = "Les Gresillons",
  727. [5] = "Gennevilliers",
  728. [6] = "Epinay-sur-Seine",
  729. [7] = "Saint-Gratien"},
  730. [56] = {[11] = "Auvers-sur-Oise | Chaponval | Epluches | Pont Petit"},
  731. [57] = {[11] = "Presles Courcelles", [12] = "Nointel Mours"},
  732. [60] =
  733. {[1] = "Gare Montparnasse",
  734. [4] = "Clamart | Vanves Malakoff",
  735. [5] = "Bellevue | Bievres | Meudon",
  736. [6] = "Chaville-Rive Gauche | Chaville-Velizy | Viroflay-Rive Gauche",
  737. [7] = "Versailles-Chantiers",
  738. [10] = "Saint-Cyr",
  739. [11] = "Saint-Quentin-en-Yvelines - Montigny le Bretonneux | Trappes",
  740. [12] = "Coignieres | La Verriere",
  741. [13] = "Les Essarts-le-Roi",
  742. [14] = "Le Perray | Rambouillet",
  743. [15] = "Gazeran"},
  744. [61] =
  745. {[10] = "Fontenay-le-Fleury",
  746. [11] = "Villepreux Les-Clayes",
  747. [12] = "Plaisir Grignon | Plaisir Les-Clayes",
  748. [13] = "Beynes | Mareil-sur-Mauldre | Maule | Nezel Aulnay",
  749. [15] =
  750. "Garancieres La-Queue | Montfort-l'Amaury Mere | Orgerus Behoust | Tacoigneres Richebourg | Villiers Neauphle Pontchartrain",
  751. [16] = "Houdan"},
  752. [63] = {[7] = "Porchefontaine | Versailles-Rive Gauche"},
  753. [64] =
  754. {[0] = "Invalides | Pont de l'alma",
  755. [1] = "Champ de Mars-Tour Eiffel",
  756. [2] = "Javel",
  757. [3] = "Boulevard Victor - Pont du Garigliano | Issy-Val de Seine | Issy",
  758. [5] = "Meudon-Val-Fleury"},
  759. [65] =
  760. {[8] = "Jouy-en-Josas | Petit-Jouy-les-Loges",
  761. [9] = "Vauboyen",
  762. [10] = "Igny",
  763. [11] = "Massy-Palaiseau",
  764. [12] = "Longjumeau",
  765. [13] = "Chilly-Mazarin",
  766. [14] = "Gravigny-Balizy | Petit-Vaux"},
  767. [70] =
  768. {[9] = "Parc des Expositions | Sevran-Beaudottes | Villepinte",
  769. [10] = "Aeroport Charles de Gaulle"},
  770. [72] = {[7] = "Sannois"},
  771. [73] = {[11] = "Eragny Neuville | Saint-Ouen-l'Aumone (Eglise)"},
  772. [75] =
  773. {[7] = "Les Saules | Orly-Ville",
  774. [9] = "Pont de Rungis Aeroport d'Orly | Rungis-La Fraternelle",
  775. [10] = "Chemin d'Antony",
  776. [12] = "Massy-Verrieres | Arpajon"},
  777. [76] =
  778. {[12] = "Egly | La Norville Saint-Germain-les-Arpajon",
  779. [13] = "Breuillet Bruyeres-le-Châtel | Breuillet-Village | Saint-Cheron",
  780. [14] = "Sermaise",
  781. [15] = "Dourdan | Dourdan-la-Foret"},
  782. };
  783. #endif // METRO_LIST_H