AceTime  0.1
Date and time classes for Arduino that supports the TZ DAtabase, and a system clock synchronized from an NTP server or an RTC chip.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ ../../../tools/tzcompiler.py --input_dir /home/brian/dev/tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --zonedb --arduino_extended
4 //
5 // using the TZ Database files from
6 // https://github.com/eggert/tz/releases/tag/2019a
7 //
8 // Policy count: 83
9 // Rule count: 512
10 // Memory (8-bit): 5141
11 // Memory (32-bit): 5517
12 //
13 // DO NOT EDIT
14 
15 #include "zone_policies.h"
16 
17 namespace ace_time {
18 namespace zonedbx {
19 
20 //---------------------------------------------------------------------------
21 // Policy name: AN
22 // Rule count: 9
23 // Memory (8-bit): 87
24 // Memory (32-bit): 91
25 //---------------------------------------------------------------------------
26 
27 static const extended::ZoneRule kZoneRulesAN[] = {
28  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
29  {
30  -13 /*fromYearTiny*/,
31  -1 /*toYearTiny*/,
32  10 /*inMonth*/,
33  7 /*onDayOfWeek*/,
34  0 /*onDayOfMonth*/,
35  8 /*atTimeCode*/,
36  's' /*atTimeModifier*/,
37  4 /*deltaCode*/,
38  'D' /*letter*/,
39  },
40  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
41  {
42  -10 /*fromYearTiny*/,
43  -5 /*toYearTiny*/,
44  3 /*inMonth*/,
45  7 /*onDayOfWeek*/,
46  1 /*onDayOfMonth*/,
47  8 /*atTimeCode*/,
48  's' /*atTimeModifier*/,
49  0 /*deltaCode*/,
50  'S' /*letter*/,
51  },
52  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
53  {
54  -4 /*fromYearTiny*/,
55  5 /*toYearTiny*/,
56  3 /*inMonth*/,
57  7 /*onDayOfWeek*/,
58  0 /*onDayOfMonth*/,
59  8 /*atTimeCode*/,
60  's' /*atTimeModifier*/,
61  0 /*deltaCode*/,
62  'S' /*letter*/,
63  },
64  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
65  {
66  0 /*fromYearTiny*/,
67  0 /*toYearTiny*/,
68  8 /*inMonth*/,
69  7 /*onDayOfWeek*/,
70  0 /*onDayOfMonth*/,
71  8 /*atTimeCode*/,
72  's' /*atTimeModifier*/,
73  4 /*deltaCode*/,
74  'D' /*letter*/,
75  },
76  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
77  {
78  1 /*fromYearTiny*/,
79  7 /*toYearTiny*/,
80  10 /*inMonth*/,
81  7 /*onDayOfWeek*/,
82  0 /*onDayOfMonth*/,
83  8 /*atTimeCode*/,
84  's' /*atTimeModifier*/,
85  4 /*deltaCode*/,
86  'D' /*letter*/,
87  },
88  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
89  {
90  6 /*fromYearTiny*/,
91  6 /*toYearTiny*/,
92  4 /*inMonth*/,
93  7 /*onDayOfWeek*/,
94  1 /*onDayOfMonth*/,
95  8 /*atTimeCode*/,
96  's' /*atTimeModifier*/,
97  0 /*deltaCode*/,
98  'S' /*letter*/,
99  },
100  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
101  {
102  7 /*fromYearTiny*/,
103  7 /*toYearTiny*/,
104  3 /*inMonth*/,
105  7 /*onDayOfWeek*/,
106  0 /*onDayOfMonth*/,
107  8 /*atTimeCode*/,
108  's' /*atTimeModifier*/,
109  0 /*deltaCode*/,
110  'S' /*letter*/,
111  },
112  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
113  {
114  8 /*fromYearTiny*/,
115  126 /*toYearTiny*/,
116  4 /*inMonth*/,
117  7 /*onDayOfWeek*/,
118  1 /*onDayOfMonth*/,
119  8 /*atTimeCode*/,
120  's' /*atTimeModifier*/,
121  0 /*deltaCode*/,
122  'S' /*letter*/,
123  },
124  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
125  {
126  8 /*fromYearTiny*/,
127  126 /*toYearTiny*/,
128  10 /*inMonth*/,
129  7 /*onDayOfWeek*/,
130  1 /*onDayOfMonth*/,
131  8 /*atTimeCode*/,
132  's' /*atTimeModifier*/,
133  4 /*deltaCode*/,
134  'D' /*letter*/,
135  },
136 
137 };
138 
139 
140 
141 const extended::ZonePolicy kPolicyAN = {
142  9 /*numRules*/,
143  kZoneRulesAN /*rules*/,
144  0 /* numLetters */,
145  nullptr /* letters */,
146 };
147 
148 //---------------------------------------------------------------------------
149 // Policy name: AQ
150 // Rule count: 1
151 // Memory (8-bit): 15
152 // Memory (32-bit): 19
153 //---------------------------------------------------------------------------
154 
155 static const extended::ZoneRule kZoneRulesAQ[] = {
156  // Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
157  {
158  -10 /*fromYearTiny*/,
159  -8 /*toYearTiny*/,
160  3 /*inMonth*/,
161  7 /*onDayOfWeek*/,
162  1 /*onDayOfMonth*/,
163  8 /*atTimeCode*/,
164  's' /*atTimeModifier*/,
165  0 /*deltaCode*/,
166  'S' /*letter*/,
167  },
168 
169 };
170 
171 
172 
173 const extended::ZonePolicy kPolicyAQ = {
174  1 /*numRules*/,
175  kZoneRulesAQ /*rules*/,
176  0 /* numLetters */,
177  nullptr /* letters */,
178 };
179 
180 //---------------------------------------------------------------------------
181 // Policy name: AS
182 // Rule count: 7
183 // Memory (8-bit): 69
184 // Memory (32-bit): 73
185 //---------------------------------------------------------------------------
186 
187 static const extended::ZoneRule kZoneRulesAS[] = {
188  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
189  {
190  -13 /*fromYearTiny*/,
191  7 /*toYearTiny*/,
192  10 /*inMonth*/,
193  7 /*onDayOfWeek*/,
194  0 /*onDayOfMonth*/,
195  8 /*atTimeCode*/,
196  's' /*atTimeModifier*/,
197  4 /*deltaCode*/,
198  'D' /*letter*/,
199  },
200  // Rule AS 1994 only - Mar 20 2:00s 0 S
201  {
202  -6 /*fromYearTiny*/,
203  -6 /*toYearTiny*/,
204  3 /*inMonth*/,
205  0 /*onDayOfWeek*/,
206  20 /*onDayOfMonth*/,
207  8 /*atTimeCode*/,
208  's' /*atTimeModifier*/,
209  0 /*deltaCode*/,
210  'S' /*letter*/,
211  },
212  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
213  {
214  -5 /*fromYearTiny*/,
215  5 /*toYearTiny*/,
216  3 /*inMonth*/,
217  7 /*onDayOfWeek*/,
218  0 /*onDayOfMonth*/,
219  8 /*atTimeCode*/,
220  's' /*atTimeModifier*/,
221  0 /*deltaCode*/,
222  'S' /*letter*/,
223  },
224  // Rule AS 2006 only - Apr 2 2:00s 0 S
225  {
226  6 /*fromYearTiny*/,
227  6 /*toYearTiny*/,
228  4 /*inMonth*/,
229  0 /*onDayOfWeek*/,
230  2 /*onDayOfMonth*/,
231  8 /*atTimeCode*/,
232  's' /*atTimeModifier*/,
233  0 /*deltaCode*/,
234  'S' /*letter*/,
235  },
236  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
237  {
238  7 /*fromYearTiny*/,
239  7 /*toYearTiny*/,
240  3 /*inMonth*/,
241  7 /*onDayOfWeek*/,
242  0 /*onDayOfMonth*/,
243  8 /*atTimeCode*/,
244  's' /*atTimeModifier*/,
245  0 /*deltaCode*/,
246  'S' /*letter*/,
247  },
248  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
249  {
250  8 /*fromYearTiny*/,
251  126 /*toYearTiny*/,
252  4 /*inMonth*/,
253  7 /*onDayOfWeek*/,
254  1 /*onDayOfMonth*/,
255  8 /*atTimeCode*/,
256  's' /*atTimeModifier*/,
257  0 /*deltaCode*/,
258  'S' /*letter*/,
259  },
260  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
261  {
262  8 /*fromYearTiny*/,
263  126 /*toYearTiny*/,
264  10 /*inMonth*/,
265  7 /*onDayOfWeek*/,
266  1 /*onDayOfMonth*/,
267  8 /*atTimeCode*/,
268  's' /*atTimeModifier*/,
269  4 /*deltaCode*/,
270  'D' /*letter*/,
271  },
272 
273 };
274 
275 
276 
277 const extended::ZonePolicy kPolicyAS = {
278  7 /*numRules*/,
279  kZoneRulesAS /*rules*/,
280  0 /* numLetters */,
281  nullptr /* letters */,
282 };
283 
284 //---------------------------------------------------------------------------
285 // Policy name: AT
286 // Rule count: 8
287 // Memory (8-bit): 78
288 // Memory (32-bit): 82
289 //---------------------------------------------------------------------------
290 
291 static const extended::ZoneRule kZoneRulesAT[] = {
292  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
293  {
294  -12 /*fromYearTiny*/,
295  -10 /*toYearTiny*/,
296  10 /*inMonth*/,
297  7 /*onDayOfWeek*/,
298  0 /*onDayOfMonth*/,
299  8 /*atTimeCode*/,
300  's' /*atTimeModifier*/,
301  4 /*deltaCode*/,
302  'D' /*letter*/,
303  },
304  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
305  {
306  -9 /*fromYearTiny*/,
307  -1 /*toYearTiny*/,
308  10 /*inMonth*/,
309  7 /*onDayOfWeek*/,
310  1 /*onDayOfMonth*/,
311  8 /*atTimeCode*/,
312  's' /*atTimeModifier*/,
313  4 /*deltaCode*/,
314  'D' /*letter*/,
315  },
316  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
317  {
318  -9 /*fromYearTiny*/,
319  5 /*toYearTiny*/,
320  3 /*inMonth*/,
321  7 /*onDayOfWeek*/,
322  0 /*onDayOfMonth*/,
323  8 /*atTimeCode*/,
324  's' /*atTimeModifier*/,
325  0 /*deltaCode*/,
326  'S' /*letter*/,
327  },
328  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
329  {
330  0 /*fromYearTiny*/,
331  0 /*toYearTiny*/,
332  8 /*inMonth*/,
333  7 /*onDayOfWeek*/,
334  0 /*onDayOfMonth*/,
335  8 /*atTimeCode*/,
336  's' /*atTimeModifier*/,
337  4 /*deltaCode*/,
338  'D' /*letter*/,
339  },
340  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
341  {
342  1 /*fromYearTiny*/,
343  126 /*toYearTiny*/,
344  10 /*inMonth*/,
345  7 /*onDayOfWeek*/,
346  1 /*onDayOfMonth*/,
347  8 /*atTimeCode*/,
348  's' /*atTimeModifier*/,
349  4 /*deltaCode*/,
350  'D' /*letter*/,
351  },
352  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
353  {
354  6 /*fromYearTiny*/,
355  6 /*toYearTiny*/,
356  4 /*inMonth*/,
357  7 /*onDayOfWeek*/,
358  1 /*onDayOfMonth*/,
359  8 /*atTimeCode*/,
360  's' /*atTimeModifier*/,
361  0 /*deltaCode*/,
362  'S' /*letter*/,
363  },
364  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
365  {
366  7 /*fromYearTiny*/,
367  7 /*toYearTiny*/,
368  3 /*inMonth*/,
369  7 /*onDayOfWeek*/,
370  0 /*onDayOfMonth*/,
371  8 /*atTimeCode*/,
372  's' /*atTimeModifier*/,
373  0 /*deltaCode*/,
374  'S' /*letter*/,
375  },
376  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
377  {
378  8 /*fromYearTiny*/,
379  126 /*toYearTiny*/,
380  4 /*inMonth*/,
381  7 /*onDayOfWeek*/,
382  1 /*onDayOfMonth*/,
383  8 /*atTimeCode*/,
384  's' /*atTimeModifier*/,
385  0 /*deltaCode*/,
386  'S' /*letter*/,
387  },
388 
389 };
390 
391 
392 
393 const extended::ZonePolicy kPolicyAT = {
394  8 /*numRules*/,
395  kZoneRulesAT /*rules*/,
396  0 /* numLetters */,
397  nullptr /* letters */,
398 };
399 
400 //---------------------------------------------------------------------------
401 // Policy name: AV
402 // Rule count: 9
403 // Memory (8-bit): 87
404 // Memory (32-bit): 91
405 //---------------------------------------------------------------------------
406 
407 static const extended::ZoneRule kZoneRulesAV[] = {
408  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
409  {
410  -12 /*fromYearTiny*/,
411  -1 /*toYearTiny*/,
412  10 /*inMonth*/,
413  7 /*onDayOfWeek*/,
414  0 /*onDayOfMonth*/,
415  8 /*atTimeCode*/,
416  's' /*atTimeModifier*/,
417  4 /*deltaCode*/,
418  'D' /*letter*/,
419  },
420  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
421  {
422  -9 /*fromYearTiny*/,
423  -6 /*toYearTiny*/,
424  3 /*inMonth*/,
425  7 /*onDayOfWeek*/,
426  1 /*onDayOfMonth*/,
427  8 /*atTimeCode*/,
428  's' /*atTimeModifier*/,
429  0 /*deltaCode*/,
430  'S' /*letter*/,
431  },
432  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
433  {
434  -5 /*fromYearTiny*/,
435  5 /*toYearTiny*/,
436  3 /*inMonth*/,
437  7 /*onDayOfWeek*/,
438  0 /*onDayOfMonth*/,
439  8 /*atTimeCode*/,
440  's' /*atTimeModifier*/,
441  0 /*deltaCode*/,
442  'S' /*letter*/,
443  },
444  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
445  {
446  0 /*fromYearTiny*/,
447  0 /*toYearTiny*/,
448  8 /*inMonth*/,
449  7 /*onDayOfWeek*/,
450  0 /*onDayOfMonth*/,
451  8 /*atTimeCode*/,
452  's' /*atTimeModifier*/,
453  4 /*deltaCode*/,
454  'D' /*letter*/,
455  },
456  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
457  {
458  1 /*fromYearTiny*/,
459  7 /*toYearTiny*/,
460  10 /*inMonth*/,
461  7 /*onDayOfWeek*/,
462  0 /*onDayOfMonth*/,
463  8 /*atTimeCode*/,
464  's' /*atTimeModifier*/,
465  4 /*deltaCode*/,
466  'D' /*letter*/,
467  },
468  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
469  {
470  6 /*fromYearTiny*/,
471  6 /*toYearTiny*/,
472  4 /*inMonth*/,
473  7 /*onDayOfWeek*/,
474  1 /*onDayOfMonth*/,
475  8 /*atTimeCode*/,
476  's' /*atTimeModifier*/,
477  0 /*deltaCode*/,
478  'S' /*letter*/,
479  },
480  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
481  {
482  7 /*fromYearTiny*/,
483  7 /*toYearTiny*/,
484  3 /*inMonth*/,
485  7 /*onDayOfWeek*/,
486  0 /*onDayOfMonth*/,
487  8 /*atTimeCode*/,
488  's' /*atTimeModifier*/,
489  0 /*deltaCode*/,
490  'S' /*letter*/,
491  },
492  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
493  {
494  8 /*fromYearTiny*/,
495  126 /*toYearTiny*/,
496  4 /*inMonth*/,
497  7 /*onDayOfWeek*/,
498  1 /*onDayOfMonth*/,
499  8 /*atTimeCode*/,
500  's' /*atTimeModifier*/,
501  0 /*deltaCode*/,
502  'S' /*letter*/,
503  },
504  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
505  {
506  8 /*fromYearTiny*/,
507  126 /*toYearTiny*/,
508  10 /*inMonth*/,
509  7 /*onDayOfWeek*/,
510  1 /*onDayOfMonth*/,
511  8 /*atTimeCode*/,
512  's' /*atTimeModifier*/,
513  4 /*deltaCode*/,
514  'D' /*letter*/,
515  },
516 
517 };
518 
519 
520 
521 const extended::ZonePolicy kPolicyAV = {
522  9 /*numRules*/,
523  kZoneRulesAV /*rules*/,
524  0 /* numLetters */,
525  nullptr /* letters */,
526 };
527 
528 //---------------------------------------------------------------------------
529 // Policy name: AW
530 // Rule count: 4
531 // Memory (8-bit): 42
532 // Memory (32-bit): 46
533 //---------------------------------------------------------------------------
534 
535 static const extended::ZoneRule kZoneRulesAW[] = {
536  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
537  {
538  -8 /*fromYearTiny*/,
539  -8 /*toYearTiny*/,
540  3 /*inMonth*/,
541  7 /*onDayOfWeek*/,
542  1 /*onDayOfMonth*/,
543  8 /*atTimeCode*/,
544  's' /*atTimeModifier*/,
545  0 /*deltaCode*/,
546  'S' /*letter*/,
547  },
548  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
549  {
550  6 /*fromYearTiny*/,
551  6 /*toYearTiny*/,
552  12 /*inMonth*/,
553  0 /*onDayOfWeek*/,
554  3 /*onDayOfMonth*/,
555  8 /*atTimeCode*/,
556  's' /*atTimeModifier*/,
557  4 /*deltaCode*/,
558  'D' /*letter*/,
559  },
560  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
561  {
562  7 /*fromYearTiny*/,
563  9 /*toYearTiny*/,
564  3 /*inMonth*/,
565  7 /*onDayOfWeek*/,
566  0 /*onDayOfMonth*/,
567  8 /*atTimeCode*/,
568  's' /*atTimeModifier*/,
569  0 /*deltaCode*/,
570  'S' /*letter*/,
571  },
572  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
573  {
574  7 /*fromYearTiny*/,
575  8 /*toYearTiny*/,
576  10 /*inMonth*/,
577  7 /*onDayOfWeek*/,
578  0 /*onDayOfMonth*/,
579  8 /*atTimeCode*/,
580  's' /*atTimeModifier*/,
581  4 /*deltaCode*/,
582  'D' /*letter*/,
583  },
584 
585 };
586 
587 
588 
589 const extended::ZonePolicy kPolicyAW = {
590  4 /*numRules*/,
591  kZoneRulesAW /*rules*/,
592  0 /* numLetters */,
593  nullptr /* letters */,
594 };
595 
596 //---------------------------------------------------------------------------
597 // Policy name: Arg
598 // Rule count: 6
599 // Memory (8-bit): 60
600 // Memory (32-bit): 64
601 //---------------------------------------------------------------------------
602 
603 static const extended::ZoneRule kZoneRulesArg[] = {
604  // Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
605  {
606  -11 /*fromYearTiny*/,
607  -7 /*toYearTiny*/,
608  3 /*inMonth*/,
609  7 /*onDayOfWeek*/,
610  1 /*onDayOfMonth*/,
611  0 /*atTimeCode*/,
612  'w' /*atTimeModifier*/,
613  0 /*deltaCode*/,
614  '-' /*letter*/,
615  },
616  // Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 -
617  {
618  -1 /*fromYearTiny*/,
619  -1 /*toYearTiny*/,
620  10 /*inMonth*/,
621  7 /*onDayOfWeek*/,
622  1 /*onDayOfMonth*/,
623  0 /*atTimeCode*/,
624  'w' /*atTimeModifier*/,
625  4 /*deltaCode*/,
626  '-' /*letter*/,
627  },
628  // Rule Arg 2000 only - Mar 3 0:00 0 -
629  {
630  0 /*fromYearTiny*/,
631  0 /*toYearTiny*/,
632  3 /*inMonth*/,
633  0 /*onDayOfWeek*/,
634  3 /*onDayOfMonth*/,
635  0 /*atTimeCode*/,
636  'w' /*atTimeModifier*/,
637  0 /*deltaCode*/,
638  '-' /*letter*/,
639  },
640  // Rule Arg 2007 only - Dec 30 0:00 1:00 -
641  {
642  7 /*fromYearTiny*/,
643  7 /*toYearTiny*/,
644  12 /*inMonth*/,
645  0 /*onDayOfWeek*/,
646  30 /*onDayOfMonth*/,
647  0 /*atTimeCode*/,
648  'w' /*atTimeModifier*/,
649  4 /*deltaCode*/,
650  '-' /*letter*/,
651  },
652  // Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
653  {
654  8 /*fromYearTiny*/,
655  9 /*toYearTiny*/,
656  3 /*inMonth*/,
657  7 /*onDayOfWeek*/,
658  15 /*onDayOfMonth*/,
659  0 /*atTimeCode*/,
660  'w' /*atTimeModifier*/,
661  0 /*deltaCode*/,
662  '-' /*letter*/,
663  },
664  // Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
665  {
666  8 /*fromYearTiny*/,
667  8 /*toYearTiny*/,
668  10 /*inMonth*/,
669  7 /*onDayOfWeek*/,
670  15 /*onDayOfMonth*/,
671  0 /*atTimeCode*/,
672  'w' /*atTimeModifier*/,
673  4 /*deltaCode*/,
674  '-' /*letter*/,
675  },
676 
677 };
678 
679 
680 
681 const extended::ZonePolicy kPolicyArg = {
682  6 /*numRules*/,
683  kZoneRulesArg /*rules*/,
684  0 /* numLetters */,
685  nullptr /* letters */,
686 };
687 
688 //---------------------------------------------------------------------------
689 // Policy name: Armenia
690 // Rule count: 3
691 // Memory (8-bit): 33
692 // Memory (32-bit): 37
693 //---------------------------------------------------------------------------
694 
695 static const extended::ZoneRule kZoneRulesArmenia[] = {
696  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
697  {
698  -127 /*fromYearTiny*/,
699  -127 /*toYearTiny*/,
700  1 /*inMonth*/,
701  0 /*onDayOfWeek*/,
702  1 /*onDayOfMonth*/,
703  0 /*atTimeCode*/,
704  'w' /*atTimeModifier*/,
705  0 /*deltaCode*/,
706  '-' /*letter*/,
707  },
708  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
709  {
710  11 /*fromYearTiny*/,
711  11 /*toYearTiny*/,
712  3 /*inMonth*/,
713  7 /*onDayOfWeek*/,
714  0 /*onDayOfMonth*/,
715  8 /*atTimeCode*/,
716  's' /*atTimeModifier*/,
717  4 /*deltaCode*/,
718  '-' /*letter*/,
719  },
720  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
721  {
722  11 /*fromYearTiny*/,
723  11 /*toYearTiny*/,
724  10 /*inMonth*/,
725  7 /*onDayOfWeek*/,
726  0 /*onDayOfMonth*/,
727  8 /*atTimeCode*/,
728  's' /*atTimeModifier*/,
729  0 /*deltaCode*/,
730  '-' /*letter*/,
731  },
732 
733 };
734 
735 
736 
737 const extended::ZonePolicy kPolicyArmenia = {
738  3 /*numRules*/,
739  kZoneRulesArmenia /*rules*/,
740  0 /* numLetters */,
741  nullptr /* letters */,
742 };
743 
744 //---------------------------------------------------------------------------
745 // Policy name: Aus
746 // Rule count: 1
747 // Memory (8-bit): 15
748 // Memory (32-bit): 19
749 //---------------------------------------------------------------------------
750 
751 static const extended::ZoneRule kZoneRulesAus[] = {
752  // Rule Aus 1943 1944 - Mar lastSun 2:00 0 S
753  {
754  -57 /*fromYearTiny*/,
755  -56 /*toYearTiny*/,
756  3 /*inMonth*/,
757  7 /*onDayOfWeek*/,
758  0 /*onDayOfMonth*/,
759  8 /*atTimeCode*/,
760  'w' /*atTimeModifier*/,
761  0 /*deltaCode*/,
762  'S' /*letter*/,
763  },
764 
765 };
766 
767 
768 
769 const extended::ZonePolicy kPolicyAus = {
770  1 /*numRules*/,
771  kZoneRulesAus /*rules*/,
772  0 /* numLetters */,
773  nullptr /* letters */,
774 };
775 
776 //---------------------------------------------------------------------------
777 // Policy name: Azer
778 // Rule count: 2
779 // Memory (8-bit): 24
780 // Memory (32-bit): 28
781 //---------------------------------------------------------------------------
782 
783 static const extended::ZoneRule kZoneRulesAzer[] = {
784  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
785  {
786  -3 /*fromYearTiny*/,
787  15 /*toYearTiny*/,
788  3 /*inMonth*/,
789  7 /*onDayOfWeek*/,
790  0 /*onDayOfMonth*/,
791  16 /*atTimeCode*/,
792  'w' /*atTimeModifier*/,
793  4 /*deltaCode*/,
794  '-' /*letter*/,
795  },
796  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
797  {
798  -3 /*fromYearTiny*/,
799  15 /*toYearTiny*/,
800  10 /*inMonth*/,
801  7 /*onDayOfWeek*/,
802  0 /*onDayOfMonth*/,
803  20 /*atTimeCode*/,
804  'w' /*atTimeModifier*/,
805  0 /*deltaCode*/,
806  '-' /*letter*/,
807  },
808 
809 };
810 
811 
812 
813 const extended::ZonePolicy kPolicyAzer = {
814  2 /*numRules*/,
815  kZoneRulesAzer /*rules*/,
816  0 /* numLetters */,
817  nullptr /* letters */,
818 };
819 
820 //---------------------------------------------------------------------------
821 // Policy name: Barb
822 // Rule count: 1
823 // Memory (8-bit): 15
824 // Memory (32-bit): 19
825 //---------------------------------------------------------------------------
826 
827 static const extended::ZoneRule kZoneRulesBarb[] = {
828  // Rule Barb 1980 only - Sep 25 2:00 0 S
829  {
830  -20 /*fromYearTiny*/,
831  -20 /*toYearTiny*/,
832  9 /*inMonth*/,
833  0 /*onDayOfWeek*/,
834  25 /*onDayOfMonth*/,
835  8 /*atTimeCode*/,
836  'w' /*atTimeModifier*/,
837  0 /*deltaCode*/,
838  'S' /*letter*/,
839  },
840 
841 };
842 
843 
844 
845 const extended::ZonePolicy kPolicyBarb = {
846  1 /*numRules*/,
847  kZoneRulesBarb /*rules*/,
848  0 /* numLetters */,
849  nullptr /* letters */,
850 };
851 
852 //---------------------------------------------------------------------------
853 // Policy name: Belize
854 // Rule count: 1
855 // Memory (8-bit): 21
856 // Memory (32-bit): 27
857 //---------------------------------------------------------------------------
858 
859 static const extended::ZoneRule kZoneRulesBelize[] = {
860  // Rule Belize 1983 only - Feb 12 0:00 0 CST
861  {
862  -17 /*fromYearTiny*/,
863  -17 /*toYearTiny*/,
864  2 /*inMonth*/,
865  0 /*onDayOfWeek*/,
866  12 /*onDayOfMonth*/,
867  0 /*atTimeCode*/,
868  'w' /*atTimeModifier*/,
869  0 /*deltaCode*/,
870  0 /*letter; "CST"*/,
871  },
872 
873 };
874 
875 static const char* const kLettersBelize[] = {
876  /*0*/ "CST",
877 
878 };
879 
880 
881 const extended::ZonePolicy kPolicyBelize = {
882  1 /*numRules*/,
883  kZoneRulesBelize /*rules*/,
884  1 /* numLetters */,
885  kLettersBelize /* letters */,
886 };
887 
888 //---------------------------------------------------------------------------
889 // Policy name: Brazil
890 // Rule count: 28
891 // Memory (8-bit): 258
892 // Memory (32-bit): 262
893 //---------------------------------------------------------------------------
894 
895 static const extended::ZoneRule kZoneRulesBrazil[] = {
896  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
897  {
898  -2 /*fromYearTiny*/,
899  -2 /*toYearTiny*/,
900  10 /*inMonth*/,
901  0 /*onDayOfWeek*/,
902  11 /*onDayOfMonth*/,
903  0 /*atTimeCode*/,
904  'w' /*atTimeModifier*/,
905  4 /*deltaCode*/,
906  '-' /*letter*/,
907  },
908  // Rule Brazil 1999 only - Feb 21 0:00 0 -
909  {
910  -1 /*fromYearTiny*/,
911  -1 /*toYearTiny*/,
912  2 /*inMonth*/,
913  0 /*onDayOfWeek*/,
914  21 /*onDayOfMonth*/,
915  0 /*atTimeCode*/,
916  'w' /*atTimeModifier*/,
917  0 /*deltaCode*/,
918  '-' /*letter*/,
919  },
920  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
921  {
922  -1 /*fromYearTiny*/,
923  -1 /*toYearTiny*/,
924  10 /*inMonth*/,
925  0 /*onDayOfWeek*/,
926  3 /*onDayOfMonth*/,
927  0 /*atTimeCode*/,
928  'w' /*atTimeModifier*/,
929  4 /*deltaCode*/,
930  '-' /*letter*/,
931  },
932  // Rule Brazil 2000 only - Feb 27 0:00 0 -
933  {
934  0 /*fromYearTiny*/,
935  0 /*toYearTiny*/,
936  2 /*inMonth*/,
937  0 /*onDayOfWeek*/,
938  27 /*onDayOfMonth*/,
939  0 /*atTimeCode*/,
940  'w' /*atTimeModifier*/,
941  0 /*deltaCode*/,
942  '-' /*letter*/,
943  },
944  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
945  {
946  0 /*fromYearTiny*/,
947  1 /*toYearTiny*/,
948  10 /*inMonth*/,
949  7 /*onDayOfWeek*/,
950  8 /*onDayOfMonth*/,
951  0 /*atTimeCode*/,
952  'w' /*atTimeModifier*/,
953  4 /*deltaCode*/,
954  '-' /*letter*/,
955  },
956  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
957  {
958  1 /*fromYearTiny*/,
959  6 /*toYearTiny*/,
960  2 /*inMonth*/,
961  7 /*onDayOfWeek*/,
962  15 /*onDayOfMonth*/,
963  0 /*atTimeCode*/,
964  'w' /*atTimeModifier*/,
965  0 /*deltaCode*/,
966  '-' /*letter*/,
967  },
968  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
969  {
970  2 /*fromYearTiny*/,
971  2 /*toYearTiny*/,
972  11 /*inMonth*/,
973  0 /*onDayOfWeek*/,
974  3 /*onDayOfMonth*/,
975  0 /*atTimeCode*/,
976  'w' /*atTimeModifier*/,
977  4 /*deltaCode*/,
978  '-' /*letter*/,
979  },
980  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
981  {
982  3 /*fromYearTiny*/,
983  3 /*toYearTiny*/,
984  10 /*inMonth*/,
985  0 /*onDayOfWeek*/,
986  19 /*onDayOfMonth*/,
987  0 /*atTimeCode*/,
988  'w' /*atTimeModifier*/,
989  4 /*deltaCode*/,
990  '-' /*letter*/,
991  },
992  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
993  {
994  4 /*fromYearTiny*/,
995  4 /*toYearTiny*/,
996  11 /*inMonth*/,
997  0 /*onDayOfWeek*/,
998  2 /*onDayOfMonth*/,
999  0 /*atTimeCode*/,
1000  'w' /*atTimeModifier*/,
1001  4 /*deltaCode*/,
1002  '-' /*letter*/,
1003  },
1004  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
1005  {
1006  5 /*fromYearTiny*/,
1007  5 /*toYearTiny*/,
1008  10 /*inMonth*/,
1009  0 /*onDayOfWeek*/,
1010  16 /*onDayOfMonth*/,
1011  0 /*atTimeCode*/,
1012  'w' /*atTimeModifier*/,
1013  4 /*deltaCode*/,
1014  '-' /*letter*/,
1015  },
1016  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
1017  {
1018  6 /*fromYearTiny*/,
1019  6 /*toYearTiny*/,
1020  11 /*inMonth*/,
1021  0 /*onDayOfWeek*/,
1022  5 /*onDayOfMonth*/,
1023  0 /*atTimeCode*/,
1024  'w' /*atTimeModifier*/,
1025  4 /*deltaCode*/,
1026  '-' /*letter*/,
1027  },
1028  // Rule Brazil 2007 only - Feb 25 0:00 0 -
1029  {
1030  7 /*fromYearTiny*/,
1031  7 /*toYearTiny*/,
1032  2 /*inMonth*/,
1033  0 /*onDayOfWeek*/,
1034  25 /*onDayOfMonth*/,
1035  0 /*atTimeCode*/,
1036  'w' /*atTimeModifier*/,
1037  0 /*deltaCode*/,
1038  '-' /*letter*/,
1039  },
1040  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
1041  {
1042  7 /*fromYearTiny*/,
1043  7 /*toYearTiny*/,
1044  10 /*inMonth*/,
1045  7 /*onDayOfWeek*/,
1046  8 /*onDayOfMonth*/,
1047  0 /*atTimeCode*/,
1048  'w' /*atTimeModifier*/,
1049  4 /*deltaCode*/,
1050  '-' /*letter*/,
1051  },
1052  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1053  {
1054  8 /*fromYearTiny*/,
1055  17 /*toYearTiny*/,
1056  10 /*inMonth*/,
1057  7 /*onDayOfWeek*/,
1058  15 /*onDayOfMonth*/,
1059  0 /*atTimeCode*/,
1060  'w' /*atTimeModifier*/,
1061  4 /*deltaCode*/,
1062  '-' /*letter*/,
1063  },
1064  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1065  {
1066  8 /*fromYearTiny*/,
1067  11 /*toYearTiny*/,
1068  2 /*inMonth*/,
1069  7 /*onDayOfWeek*/,
1070  15 /*onDayOfMonth*/,
1071  0 /*atTimeCode*/,
1072  'w' /*atTimeModifier*/,
1073  0 /*deltaCode*/,
1074  '-' /*letter*/,
1075  },
1076  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1077  {
1078  12 /*fromYearTiny*/,
1079  12 /*toYearTiny*/,
1080  2 /*inMonth*/,
1081  7 /*onDayOfWeek*/,
1082  22 /*onDayOfMonth*/,
1083  0 /*atTimeCode*/,
1084  'w' /*atTimeModifier*/,
1085  0 /*deltaCode*/,
1086  '-' /*letter*/,
1087  },
1088  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1089  {
1090  13 /*fromYearTiny*/,
1091  14 /*toYearTiny*/,
1092  2 /*inMonth*/,
1093  7 /*onDayOfWeek*/,
1094  15 /*onDayOfMonth*/,
1095  0 /*atTimeCode*/,
1096  'w' /*atTimeModifier*/,
1097  0 /*deltaCode*/,
1098  '-' /*letter*/,
1099  },
1100  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1101  {
1102  15 /*fromYearTiny*/,
1103  15 /*toYearTiny*/,
1104  2 /*inMonth*/,
1105  7 /*onDayOfWeek*/,
1106  22 /*onDayOfMonth*/,
1107  0 /*atTimeCode*/,
1108  'w' /*atTimeModifier*/,
1109  0 /*deltaCode*/,
1110  '-' /*letter*/,
1111  },
1112  // Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
1113  {
1114  16 /*fromYearTiny*/,
1115  22 /*toYearTiny*/,
1116  2 /*inMonth*/,
1117  7 /*onDayOfWeek*/,
1118  15 /*onDayOfMonth*/,
1119  0 /*atTimeCode*/,
1120  'w' /*atTimeModifier*/,
1121  0 /*deltaCode*/,
1122  '-' /*letter*/,
1123  },
1124  // Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 -
1125  {
1126  18 /*fromYearTiny*/,
1127  126 /*toYearTiny*/,
1128  11 /*inMonth*/,
1129  7 /*onDayOfWeek*/,
1130  1 /*onDayOfMonth*/,
1131  0 /*atTimeCode*/,
1132  'w' /*atTimeModifier*/,
1133  4 /*deltaCode*/,
1134  '-' /*letter*/,
1135  },
1136  // Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
1137  {
1138  23 /*fromYearTiny*/,
1139  23 /*toYearTiny*/,
1140  2 /*inMonth*/,
1141  7 /*onDayOfWeek*/,
1142  22 /*onDayOfMonth*/,
1143  0 /*atTimeCode*/,
1144  'w' /*atTimeModifier*/,
1145  0 /*deltaCode*/,
1146  '-' /*letter*/,
1147  },
1148  // Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
1149  {
1150  24 /*fromYearTiny*/,
1151  25 /*toYearTiny*/,
1152  2 /*inMonth*/,
1153  7 /*onDayOfWeek*/,
1154  15 /*onDayOfMonth*/,
1155  0 /*atTimeCode*/,
1156  'w' /*atTimeModifier*/,
1157  0 /*deltaCode*/,
1158  '-' /*letter*/,
1159  },
1160  // Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
1161  {
1162  26 /*fromYearTiny*/,
1163  26 /*toYearTiny*/,
1164  2 /*inMonth*/,
1165  7 /*onDayOfWeek*/,
1166  22 /*onDayOfMonth*/,
1167  0 /*atTimeCode*/,
1168  'w' /*atTimeModifier*/,
1169  0 /*deltaCode*/,
1170  '-' /*letter*/,
1171  },
1172  // Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 -
1173  {
1174  27 /*fromYearTiny*/,
1175  33 /*toYearTiny*/,
1176  2 /*inMonth*/,
1177  7 /*onDayOfWeek*/,
1178  15 /*onDayOfMonth*/,
1179  0 /*atTimeCode*/,
1180  'w' /*atTimeModifier*/,
1181  0 /*deltaCode*/,
1182  '-' /*letter*/,
1183  },
1184  // Rule Brazil 2034 only - Feb Sun>=22 0:00 0 -
1185  {
1186  34 /*fromYearTiny*/,
1187  34 /*toYearTiny*/,
1188  2 /*inMonth*/,
1189  7 /*onDayOfWeek*/,
1190  22 /*onDayOfMonth*/,
1191  0 /*atTimeCode*/,
1192  'w' /*atTimeModifier*/,
1193  0 /*deltaCode*/,
1194  '-' /*letter*/,
1195  },
1196  // Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 -
1197  {
1198  35 /*fromYearTiny*/,
1199  36 /*toYearTiny*/,
1200  2 /*inMonth*/,
1201  7 /*onDayOfWeek*/,
1202  15 /*onDayOfMonth*/,
1203  0 /*atTimeCode*/,
1204  'w' /*atTimeModifier*/,
1205  0 /*deltaCode*/,
1206  '-' /*letter*/,
1207  },
1208  // Rule Brazil 2037 only - Feb Sun>=22 0:00 0 -
1209  {
1210  37 /*fromYearTiny*/,
1211  37 /*toYearTiny*/,
1212  2 /*inMonth*/,
1213  7 /*onDayOfWeek*/,
1214  22 /*onDayOfMonth*/,
1215  0 /*atTimeCode*/,
1216  'w' /*atTimeModifier*/,
1217  0 /*deltaCode*/,
1218  '-' /*letter*/,
1219  },
1220  // Rule Brazil 2038 max - Feb Sun>=15 0:00 0 -
1221  {
1222  38 /*fromYearTiny*/,
1223  126 /*toYearTiny*/,
1224  2 /*inMonth*/,
1225  7 /*onDayOfWeek*/,
1226  15 /*onDayOfMonth*/,
1227  0 /*atTimeCode*/,
1228  'w' /*atTimeModifier*/,
1229  0 /*deltaCode*/,
1230  '-' /*letter*/,
1231  },
1232 
1233 };
1234 
1235 
1236 
1237 const extended::ZonePolicy kPolicyBrazil = {
1238  28 /*numRules*/,
1239  kZoneRulesBrazil /*rules*/,
1240  0 /* numLetters */,
1241  nullptr /* letters */,
1242 };
1243 
1244 //---------------------------------------------------------------------------
1245 // Policy name: CO
1246 // Rule count: 1
1247 // Memory (8-bit): 15
1248 // Memory (32-bit): 19
1249 //---------------------------------------------------------------------------
1250 
1251 static const extended::ZoneRule kZoneRulesCO[] = {
1252  // Rule CO 1993 only - Apr 4 0:00 0 -
1253  {
1254  -7 /*fromYearTiny*/,
1255  -7 /*toYearTiny*/,
1256  4 /*inMonth*/,
1257  0 /*onDayOfWeek*/,
1258  4 /*onDayOfMonth*/,
1259  0 /*atTimeCode*/,
1260  'w' /*atTimeModifier*/,
1261  0 /*deltaCode*/,
1262  '-' /*letter*/,
1263  },
1264 
1265 };
1266 
1267 
1268 
1269 const extended::ZonePolicy kPolicyCO = {
1270  1 /*numRules*/,
1271  kZoneRulesCO /*rules*/,
1272  0 /* numLetters */,
1273  nullptr /* letters */,
1274 };
1275 
1276 //---------------------------------------------------------------------------
1277 // Policy name: CR
1278 // Rule count: 1
1279 // Memory (8-bit): 15
1280 // Memory (32-bit): 19
1281 //---------------------------------------------------------------------------
1282 
1283 static const extended::ZoneRule kZoneRulesCR[] = {
1284  // Rule CR 1992 only - Mar 15 0:00 0 S
1285  {
1286  -8 /*fromYearTiny*/,
1287  -8 /*toYearTiny*/,
1288  3 /*inMonth*/,
1289  0 /*onDayOfWeek*/,
1290  15 /*onDayOfMonth*/,
1291  0 /*atTimeCode*/,
1292  'w' /*atTimeModifier*/,
1293  0 /*deltaCode*/,
1294  'S' /*letter*/,
1295  },
1296 
1297 };
1298 
1299 
1300 
1301 const extended::ZonePolicy kPolicyCR = {
1302  1 /*numRules*/,
1303  kZoneRulesCR /*rules*/,
1304  0 /* numLetters */,
1305  nullptr /* letters */,
1306 };
1307 
1308 //---------------------------------------------------------------------------
1309 // Policy name: Canada
1310 // Rule count: 5
1311 // Memory (8-bit): 51
1312 // Memory (32-bit): 55
1313 //---------------------------------------------------------------------------
1314 
1315 static const extended::ZoneRule kZoneRulesCanada[] = {
1316  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1317  {
1318  -26 /*fromYearTiny*/,
1319  -14 /*toYearTiny*/,
1320  4 /*inMonth*/,
1321  7 /*onDayOfWeek*/,
1322  0 /*onDayOfMonth*/,
1323  8 /*atTimeCode*/,
1324  'w' /*atTimeModifier*/,
1325  4 /*deltaCode*/,
1326  'D' /*letter*/,
1327  },
1328  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1329  {
1330  -26 /*fromYearTiny*/,
1331  6 /*toYearTiny*/,
1332  10 /*inMonth*/,
1333  7 /*onDayOfWeek*/,
1334  0 /*onDayOfMonth*/,
1335  8 /*atTimeCode*/,
1336  'w' /*atTimeModifier*/,
1337  0 /*deltaCode*/,
1338  'S' /*letter*/,
1339  },
1340  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1341  {
1342  -13 /*fromYearTiny*/,
1343  6 /*toYearTiny*/,
1344  4 /*inMonth*/,
1345  7 /*onDayOfWeek*/,
1346  1 /*onDayOfMonth*/,
1347  8 /*atTimeCode*/,
1348  'w' /*atTimeModifier*/,
1349  4 /*deltaCode*/,
1350  'D' /*letter*/,
1351  },
1352  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1353  {
1354  7 /*fromYearTiny*/,
1355  126 /*toYearTiny*/,
1356  3 /*inMonth*/,
1357  7 /*onDayOfWeek*/,
1358  8 /*onDayOfMonth*/,
1359  8 /*atTimeCode*/,
1360  'w' /*atTimeModifier*/,
1361  4 /*deltaCode*/,
1362  'D' /*letter*/,
1363  },
1364  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1365  {
1366  7 /*fromYearTiny*/,
1367  126 /*toYearTiny*/,
1368  11 /*inMonth*/,
1369  7 /*onDayOfWeek*/,
1370  1 /*onDayOfMonth*/,
1371  8 /*atTimeCode*/,
1372  'w' /*atTimeModifier*/,
1373  0 /*deltaCode*/,
1374  'S' /*letter*/,
1375  },
1376 
1377 };
1378 
1379 
1380 
1381 const extended::ZonePolicy kPolicyCanada = {
1382  5 /*numRules*/,
1383  kZoneRulesCanada /*rules*/,
1384  0 /* numLetters */,
1385  nullptr /* letters */,
1386 };
1387 
1388 //---------------------------------------------------------------------------
1389 // Policy name: Chatham
1390 // Rule count: 5
1391 // Memory (8-bit): 51
1392 // Memory (32-bit): 55
1393 //---------------------------------------------------------------------------
1394 
1395 static const extended::ZoneRule kZoneRulesChatham[] = {
1396  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1397  {
1398  -11 /*fromYearTiny*/,
1399  -11 /*toYearTiny*/,
1400  10 /*inMonth*/,
1401  7 /*onDayOfWeek*/,
1402  8 /*onDayOfMonth*/,
1403  11 /*atTimeCode*/,
1404  's' /*atTimeModifier*/,
1405  4 /*deltaCode*/,
1406  '-' /*letter*/,
1407  },
1408  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1409  {
1410  -10 /*fromYearTiny*/,
1411  6 /*toYearTiny*/,
1412  10 /*inMonth*/,
1413  7 /*onDayOfWeek*/,
1414  1 /*onDayOfMonth*/,
1415  11 /*atTimeCode*/,
1416  's' /*atTimeModifier*/,
1417  4 /*deltaCode*/,
1418  '-' /*letter*/,
1419  },
1420  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1421  {
1422  -10 /*fromYearTiny*/,
1423  7 /*toYearTiny*/,
1424  3 /*inMonth*/,
1425  7 /*onDayOfWeek*/,
1426  15 /*onDayOfMonth*/,
1427  11 /*atTimeCode*/,
1428  's' /*atTimeModifier*/,
1429  0 /*deltaCode*/,
1430  '-' /*letter*/,
1431  },
1432  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1433  {
1434  7 /*fromYearTiny*/,
1435  126 /*toYearTiny*/,
1436  9 /*inMonth*/,
1437  7 /*onDayOfWeek*/,
1438  0 /*onDayOfMonth*/,
1439  11 /*atTimeCode*/,
1440  's' /*atTimeModifier*/,
1441  4 /*deltaCode*/,
1442  '-' /*letter*/,
1443  },
1444  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1445  {
1446  8 /*fromYearTiny*/,
1447  126 /*toYearTiny*/,
1448  4 /*inMonth*/,
1449  7 /*onDayOfWeek*/,
1450  1 /*onDayOfMonth*/,
1451  11 /*atTimeCode*/,
1452  's' /*atTimeModifier*/,
1453  0 /*deltaCode*/,
1454  '-' /*letter*/,
1455  },
1456 
1457 };
1458 
1459 
1460 
1461 const extended::ZonePolicy kPolicyChatham = {
1462  5 /*numRules*/,
1463  kZoneRulesChatham /*rules*/,
1464  0 /* numLetters */,
1465  nullptr /* letters */,
1466 };
1467 
1468 //---------------------------------------------------------------------------
1469 // Policy name: Chile
1470 // Rule count: 15
1471 // Memory (8-bit): 141
1472 // Memory (32-bit): 145
1473 //---------------------------------------------------------------------------
1474 
1475 static const extended::ZoneRule kZoneRulesChile[] = {
1476  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1477  {
1478  -2 /*fromYearTiny*/,
1479  -2 /*toYearTiny*/,
1480  9 /*inMonth*/,
1481  0 /*onDayOfWeek*/,
1482  27 /*onDayOfMonth*/,
1483  16 /*atTimeCode*/,
1484  'u' /*atTimeModifier*/,
1485  4 /*deltaCode*/,
1486  '-' /*letter*/,
1487  },
1488  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1489  {
1490  -1 /*fromYearTiny*/,
1491  -1 /*toYearTiny*/,
1492  4 /*inMonth*/,
1493  0 /*onDayOfWeek*/,
1494  4 /*onDayOfMonth*/,
1495  12 /*atTimeCode*/,
1496  'u' /*atTimeModifier*/,
1497  0 /*deltaCode*/,
1498  '-' /*letter*/,
1499  },
1500  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1501  {
1502  -1 /*fromYearTiny*/,
1503  10 /*toYearTiny*/,
1504  10 /*inMonth*/,
1505  7 /*onDayOfWeek*/,
1506  9 /*onDayOfMonth*/,
1507  16 /*atTimeCode*/,
1508  'u' /*atTimeModifier*/,
1509  4 /*deltaCode*/,
1510  '-' /*letter*/,
1511  },
1512  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1513  {
1514  0 /*fromYearTiny*/,
1515  7 /*toYearTiny*/,
1516  3 /*inMonth*/,
1517  7 /*onDayOfWeek*/,
1518  9 /*onDayOfMonth*/,
1519  12 /*atTimeCode*/,
1520  'u' /*atTimeModifier*/,
1521  0 /*deltaCode*/,
1522  '-' /*letter*/,
1523  },
1524  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1525  {
1526  8 /*fromYearTiny*/,
1527  8 /*toYearTiny*/,
1528  3 /*inMonth*/,
1529  0 /*onDayOfWeek*/,
1530  30 /*onDayOfMonth*/,
1531  12 /*atTimeCode*/,
1532  'u' /*atTimeModifier*/,
1533  0 /*deltaCode*/,
1534  '-' /*letter*/,
1535  },
1536  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1537  {
1538  9 /*fromYearTiny*/,
1539  9 /*toYearTiny*/,
1540  3 /*inMonth*/,
1541  7 /*onDayOfWeek*/,
1542  9 /*onDayOfMonth*/,
1543  12 /*atTimeCode*/,
1544  'u' /*atTimeModifier*/,
1545  0 /*deltaCode*/,
1546  '-' /*letter*/,
1547  },
1548  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1549  {
1550  10 /*fromYearTiny*/,
1551  10 /*toYearTiny*/,
1552  4 /*inMonth*/,
1553  7 /*onDayOfWeek*/,
1554  1 /*onDayOfMonth*/,
1555  12 /*atTimeCode*/,
1556  'u' /*atTimeModifier*/,
1557  0 /*deltaCode*/,
1558  '-' /*letter*/,
1559  },
1560  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1561  {
1562  11 /*fromYearTiny*/,
1563  11 /*toYearTiny*/,
1564  5 /*inMonth*/,
1565  7 /*onDayOfWeek*/,
1566  2 /*onDayOfMonth*/,
1567  12 /*atTimeCode*/,
1568  'u' /*atTimeModifier*/,
1569  0 /*deltaCode*/,
1570  '-' /*letter*/,
1571  },
1572  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1573  {
1574  11 /*fromYearTiny*/,
1575  11 /*toYearTiny*/,
1576  8 /*inMonth*/,
1577  7 /*onDayOfWeek*/,
1578  16 /*onDayOfMonth*/,
1579  16 /*atTimeCode*/,
1580  'u' /*atTimeModifier*/,
1581  4 /*deltaCode*/,
1582  '-' /*letter*/,
1583  },
1584  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1585  {
1586  12 /*fromYearTiny*/,
1587  14 /*toYearTiny*/,
1588  4 /*inMonth*/,
1589  7 /*onDayOfWeek*/,
1590  23 /*onDayOfMonth*/,
1591  12 /*atTimeCode*/,
1592  'u' /*atTimeModifier*/,
1593  0 /*deltaCode*/,
1594  '-' /*letter*/,
1595  },
1596  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1597  {
1598  12 /*fromYearTiny*/,
1599  14 /*toYearTiny*/,
1600  9 /*inMonth*/,
1601  7 /*onDayOfWeek*/,
1602  2 /*onDayOfMonth*/,
1603  16 /*atTimeCode*/,
1604  'u' /*atTimeModifier*/,
1605  4 /*deltaCode*/,
1606  '-' /*letter*/,
1607  },
1608  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1609  {
1610  16 /*fromYearTiny*/,
1611  18 /*toYearTiny*/,
1612  5 /*inMonth*/,
1613  7 /*onDayOfWeek*/,
1614  9 /*onDayOfMonth*/,
1615  12 /*atTimeCode*/,
1616  'u' /*atTimeModifier*/,
1617  0 /*deltaCode*/,
1618  '-' /*letter*/,
1619  },
1620  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1621  {
1622  16 /*fromYearTiny*/,
1623  18 /*toYearTiny*/,
1624  8 /*inMonth*/,
1625  7 /*onDayOfWeek*/,
1626  9 /*onDayOfMonth*/,
1627  16 /*atTimeCode*/,
1628  'u' /*atTimeModifier*/,
1629  4 /*deltaCode*/,
1630  '-' /*letter*/,
1631  },
1632  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1633  {
1634  19 /*fromYearTiny*/,
1635  126 /*toYearTiny*/,
1636  4 /*inMonth*/,
1637  7 /*onDayOfWeek*/,
1638  2 /*onDayOfMonth*/,
1639  12 /*atTimeCode*/,
1640  'u' /*atTimeModifier*/,
1641  0 /*deltaCode*/,
1642  '-' /*letter*/,
1643  },
1644  // Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
1645  {
1646  19 /*fromYearTiny*/,
1647  126 /*toYearTiny*/,
1648  9 /*inMonth*/,
1649  7 /*onDayOfWeek*/,
1650  2 /*onDayOfMonth*/,
1651  16 /*atTimeCode*/,
1652  'u' /*atTimeModifier*/,
1653  4 /*deltaCode*/,
1654  '-' /*letter*/,
1655  },
1656 
1657 };
1658 
1659 
1660 
1661 const extended::ZonePolicy kPolicyChile = {
1662  15 /*numRules*/,
1663  kZoneRulesChile /*rules*/,
1664  0 /* numLetters */,
1665  nullptr /* letters */,
1666 };
1667 
1668 //---------------------------------------------------------------------------
1669 // Policy name: Cook
1670 // Rule count: 1
1671 // Memory (8-bit): 15
1672 // Memory (32-bit): 19
1673 //---------------------------------------------------------------------------
1674 
1675 static const extended::ZoneRule kZoneRulesCook[] = {
1676  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1677  {
1678  -21 /*fromYearTiny*/,
1679  -9 /*toYearTiny*/,
1680  3 /*inMonth*/,
1681  7 /*onDayOfWeek*/,
1682  1 /*onDayOfMonth*/,
1683  0 /*atTimeCode*/,
1684  'w' /*atTimeModifier*/,
1685  0 /*deltaCode*/,
1686  '-' /*letter*/,
1687  },
1688 
1689 };
1690 
1691 
1692 
1693 const extended::ZonePolicy kPolicyCook = {
1694  1 /*numRules*/,
1695  kZoneRulesCook /*rules*/,
1696  0 /* numLetters */,
1697  nullptr /* letters */,
1698 };
1699 
1700 //---------------------------------------------------------------------------
1701 // Policy name: Cuba
1702 // Rule count: 14
1703 // Memory (8-bit): 132
1704 // Memory (32-bit): 136
1705 //---------------------------------------------------------------------------
1706 
1707 static const extended::ZoneRule kZoneRulesCuba[] = {
1708  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1709  {
1710  -3 /*fromYearTiny*/,
1711  -3 /*toYearTiny*/,
1712  10 /*inMonth*/,
1713  0 /*onDayOfWeek*/,
1714  12 /*onDayOfMonth*/,
1715  0 /*atTimeCode*/,
1716  's' /*atTimeModifier*/,
1717  0 /*deltaCode*/,
1718  'S' /*letter*/,
1719  },
1720  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1721  {
1722  -2 /*fromYearTiny*/,
1723  -1 /*toYearTiny*/,
1724  3 /*inMonth*/,
1725  7 /*onDayOfWeek*/,
1726  0 /*onDayOfMonth*/,
1727  0 /*atTimeCode*/,
1728  's' /*atTimeModifier*/,
1729  4 /*deltaCode*/,
1730  'D' /*letter*/,
1731  },
1732  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1733  {
1734  -2 /*fromYearTiny*/,
1735  3 /*toYearTiny*/,
1736  10 /*inMonth*/,
1737  7 /*onDayOfWeek*/,
1738  0 /*onDayOfMonth*/,
1739  0 /*atTimeCode*/,
1740  's' /*atTimeModifier*/,
1741  0 /*deltaCode*/,
1742  'S' /*letter*/,
1743  },
1744  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1745  {
1746  0 /*fromYearTiny*/,
1747  3 /*toYearTiny*/,
1748  4 /*inMonth*/,
1749  7 /*onDayOfWeek*/,
1750  1 /*onDayOfMonth*/,
1751  0 /*atTimeCode*/,
1752  's' /*atTimeModifier*/,
1753  4 /*deltaCode*/,
1754  'D' /*letter*/,
1755  },
1756  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1757  {
1758  4 /*fromYearTiny*/,
1759  4 /*toYearTiny*/,
1760  3 /*inMonth*/,
1761  7 /*onDayOfWeek*/,
1762  0 /*onDayOfMonth*/,
1763  0 /*atTimeCode*/,
1764  's' /*atTimeModifier*/,
1765  4 /*deltaCode*/,
1766  'D' /*letter*/,
1767  },
1768  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1769  {
1770  6 /*fromYearTiny*/,
1771  10 /*toYearTiny*/,
1772  10 /*inMonth*/,
1773  7 /*onDayOfWeek*/,
1774  0 /*onDayOfMonth*/,
1775  0 /*atTimeCode*/,
1776  's' /*atTimeModifier*/,
1777  0 /*deltaCode*/,
1778  'S' /*letter*/,
1779  },
1780  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1781  {
1782  7 /*fromYearTiny*/,
1783  7 /*toYearTiny*/,
1784  3 /*inMonth*/,
1785  7 /*onDayOfWeek*/,
1786  8 /*onDayOfMonth*/,
1787  0 /*atTimeCode*/,
1788  's' /*atTimeModifier*/,
1789  4 /*deltaCode*/,
1790  'D' /*letter*/,
1791  },
1792  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1793  {
1794  8 /*fromYearTiny*/,
1795  8 /*toYearTiny*/,
1796  3 /*inMonth*/,
1797  7 /*onDayOfWeek*/,
1798  15 /*onDayOfMonth*/,
1799  0 /*atTimeCode*/,
1800  's' /*atTimeModifier*/,
1801  4 /*deltaCode*/,
1802  'D' /*letter*/,
1803  },
1804  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1805  {
1806  9 /*fromYearTiny*/,
1807  10 /*toYearTiny*/,
1808  3 /*inMonth*/,
1809  7 /*onDayOfWeek*/,
1810  8 /*onDayOfMonth*/,
1811  0 /*atTimeCode*/,
1812  's' /*atTimeModifier*/,
1813  4 /*deltaCode*/,
1814  'D' /*letter*/,
1815  },
1816  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1817  {
1818  11 /*fromYearTiny*/,
1819  11 /*toYearTiny*/,
1820  3 /*inMonth*/,
1821  7 /*onDayOfWeek*/,
1822  15 /*onDayOfMonth*/,
1823  0 /*atTimeCode*/,
1824  's' /*atTimeModifier*/,
1825  4 /*deltaCode*/,
1826  'D' /*letter*/,
1827  },
1828  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1829  {
1830  11 /*fromYearTiny*/,
1831  11 /*toYearTiny*/,
1832  11 /*inMonth*/,
1833  0 /*onDayOfWeek*/,
1834  13 /*onDayOfMonth*/,
1835  0 /*atTimeCode*/,
1836  's' /*atTimeModifier*/,
1837  0 /*deltaCode*/,
1838  'S' /*letter*/,
1839  },
1840  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1841  {
1842  12 /*fromYearTiny*/,
1843  12 /*toYearTiny*/,
1844  4 /*inMonth*/,
1845  0 /*onDayOfWeek*/,
1846  1 /*onDayOfMonth*/,
1847  0 /*atTimeCode*/,
1848  's' /*atTimeModifier*/,
1849  4 /*deltaCode*/,
1850  'D' /*letter*/,
1851  },
1852  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1853  {
1854  12 /*fromYearTiny*/,
1855  126 /*toYearTiny*/,
1856  11 /*inMonth*/,
1857  7 /*onDayOfWeek*/,
1858  1 /*onDayOfMonth*/,
1859  0 /*atTimeCode*/,
1860  's' /*atTimeModifier*/,
1861  0 /*deltaCode*/,
1862  'S' /*letter*/,
1863  },
1864  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1865  {
1866  13 /*fromYearTiny*/,
1867  126 /*toYearTiny*/,
1868  3 /*inMonth*/,
1869  7 /*onDayOfWeek*/,
1870  8 /*onDayOfMonth*/,
1871  0 /*atTimeCode*/,
1872  's' /*atTimeModifier*/,
1873  4 /*deltaCode*/,
1874  'D' /*letter*/,
1875  },
1876 
1877 };
1878 
1879 
1880 
1881 const extended::ZonePolicy kPolicyCuba = {
1882  14 /*numRules*/,
1883  kZoneRulesCuba /*rules*/,
1884  0 /* numLetters */,
1885  nullptr /* letters */,
1886 };
1887 
1888 //---------------------------------------------------------------------------
1889 // Policy name: Dhaka
1890 // Rule count: 3
1891 // Memory (8-bit): 33
1892 // Memory (32-bit): 37
1893 //---------------------------------------------------------------------------
1894 
1895 static const extended::ZoneRule kZoneRulesDhaka[] = {
1896  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1897  {
1898  -127 /*fromYearTiny*/,
1899  -127 /*toYearTiny*/,
1900  1 /*inMonth*/,
1901  0 /*onDayOfWeek*/,
1902  1 /*onDayOfMonth*/,
1903  0 /*atTimeCode*/,
1904  'w' /*atTimeModifier*/,
1905  0 /*deltaCode*/,
1906  '-' /*letter*/,
1907  },
1908  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1909  {
1910  9 /*fromYearTiny*/,
1911  9 /*toYearTiny*/,
1912  6 /*inMonth*/,
1913  0 /*onDayOfWeek*/,
1914  19 /*onDayOfMonth*/,
1915  92 /*atTimeCode*/,
1916  'w' /*atTimeModifier*/,
1917  4 /*deltaCode*/,
1918  '-' /*letter*/,
1919  },
1920  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1921  {
1922  9 /*fromYearTiny*/,
1923  9 /*toYearTiny*/,
1924  12 /*inMonth*/,
1925  0 /*onDayOfWeek*/,
1926  31 /*onDayOfMonth*/,
1927  96 /*atTimeCode*/,
1928  'w' /*atTimeModifier*/,
1929  0 /*deltaCode*/,
1930  '-' /*letter*/,
1931  },
1932 
1933 };
1934 
1935 
1936 
1937 const extended::ZonePolicy kPolicyDhaka = {
1938  3 /*numRules*/,
1939  kZoneRulesDhaka /*rules*/,
1940  0 /* numLetters */,
1941  nullptr /* letters */,
1942 };
1943 
1944 //---------------------------------------------------------------------------
1945 // Policy name: E_EurAsia
1946 // Rule count: 3
1947 // Memory (8-bit): 33
1948 // Memory (32-bit): 37
1949 //---------------------------------------------------------------------------
1950 
1951 static const extended::ZoneRule kZoneRulesE_EurAsia[] = {
1952  // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 -
1953  {
1954  -19 /*fromYearTiny*/,
1955  126 /*toYearTiny*/,
1956  3 /*inMonth*/,
1957  7 /*onDayOfWeek*/,
1958  0 /*onDayOfMonth*/,
1959  0 /*atTimeCode*/,
1960  'w' /*atTimeModifier*/,
1961  4 /*deltaCode*/,
1962  '-' /*letter*/,
1963  },
1964  // Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
1965  {
1966  -21 /*fromYearTiny*/,
1967  -5 /*toYearTiny*/,
1968  9 /*inMonth*/,
1969  7 /*onDayOfWeek*/,
1970  0 /*onDayOfMonth*/,
1971  0 /*atTimeCode*/,
1972  'w' /*atTimeModifier*/,
1973  0 /*deltaCode*/,
1974  '-' /*letter*/,
1975  },
1976  // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
1977  {
1978  -4 /*fromYearTiny*/,
1979  126 /*toYearTiny*/,
1980  10 /*inMonth*/,
1981  7 /*onDayOfWeek*/,
1982  0 /*onDayOfMonth*/,
1983  0 /*atTimeCode*/,
1984  'w' /*atTimeModifier*/,
1985  0 /*deltaCode*/,
1986  '-' /*letter*/,
1987  },
1988 
1989 };
1990 
1991 
1992 
1993 const extended::ZonePolicy kPolicyE_EurAsia = {
1994  3 /*numRules*/,
1995  kZoneRulesE_EurAsia /*rules*/,
1996  0 /* numLetters */,
1997  nullptr /* letters */,
1998 };
1999 
2000 //---------------------------------------------------------------------------
2001 // Policy name: EU
2002 // Rule count: 3
2003 // Memory (8-bit): 33
2004 // Memory (32-bit): 37
2005 //---------------------------------------------------------------------------
2006 
2007 static const extended::ZoneRule kZoneRulesEU[] = {
2008  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
2009  {
2010  -21 /*fromYearTiny*/,
2011  -5 /*toYearTiny*/,
2012  9 /*inMonth*/,
2013  7 /*onDayOfWeek*/,
2014  0 /*onDayOfMonth*/,
2015  4 /*atTimeCode*/,
2016  'u' /*atTimeModifier*/,
2017  0 /*deltaCode*/,
2018  '-' /*letter*/,
2019  },
2020  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
2021  {
2022  -19 /*fromYearTiny*/,
2023  126 /*toYearTiny*/,
2024  3 /*inMonth*/,
2025  7 /*onDayOfWeek*/,
2026  0 /*onDayOfMonth*/,
2027  4 /*atTimeCode*/,
2028  'u' /*atTimeModifier*/,
2029  4 /*deltaCode*/,
2030  'S' /*letter*/,
2031  },
2032  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
2033  {
2034  -4 /*fromYearTiny*/,
2035  126 /*toYearTiny*/,
2036  10 /*inMonth*/,
2037  7 /*onDayOfWeek*/,
2038  0 /*onDayOfMonth*/,
2039  4 /*atTimeCode*/,
2040  'u' /*atTimeModifier*/,
2041  0 /*deltaCode*/,
2042  '-' /*letter*/,
2043  },
2044 
2045 };
2046 
2047 
2048 
2049 const extended::ZonePolicy kPolicyEU = {
2050  3 /*numRules*/,
2051  kZoneRulesEU /*rules*/,
2052  0 /* numLetters */,
2053  nullptr /* letters */,
2054 };
2055 
2056 //---------------------------------------------------------------------------
2057 // Policy name: EUAsia
2058 // Rule count: 3
2059 // Memory (8-bit): 33
2060 // Memory (32-bit): 37
2061 //---------------------------------------------------------------------------
2062 
2063 static const extended::ZoneRule kZoneRulesEUAsia[] = {
2064  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
2065  {
2066  -19 /*fromYearTiny*/,
2067  126 /*toYearTiny*/,
2068  3 /*inMonth*/,
2069  7 /*onDayOfWeek*/,
2070  0 /*onDayOfMonth*/,
2071  4 /*atTimeCode*/,
2072  'u' /*atTimeModifier*/,
2073  4 /*deltaCode*/,
2074  'S' /*letter*/,
2075  },
2076  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2077  {
2078  -21 /*fromYearTiny*/,
2079  -5 /*toYearTiny*/,
2080  9 /*inMonth*/,
2081  7 /*onDayOfWeek*/,
2082  0 /*onDayOfMonth*/,
2083  4 /*atTimeCode*/,
2084  'u' /*atTimeModifier*/,
2085  0 /*deltaCode*/,
2086  '-' /*letter*/,
2087  },
2088  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
2089  {
2090  -4 /*fromYearTiny*/,
2091  126 /*toYearTiny*/,
2092  10 /*inMonth*/,
2093  7 /*onDayOfWeek*/,
2094  0 /*onDayOfMonth*/,
2095  4 /*atTimeCode*/,
2096  'u' /*atTimeModifier*/,
2097  0 /*deltaCode*/,
2098  '-' /*letter*/,
2099  },
2100 
2101 };
2102 
2103 
2104 
2105 const extended::ZonePolicy kPolicyEUAsia = {
2106  3 /*numRules*/,
2107  kZoneRulesEUAsia /*rules*/,
2108  0 /* numLetters */,
2109  nullptr /* letters */,
2110 };
2111 
2112 //---------------------------------------------------------------------------
2113 // Policy name: Ecuador
2114 // Rule count: 1
2115 // Memory (8-bit): 15
2116 // Memory (32-bit): 19
2117 //---------------------------------------------------------------------------
2118 
2119 static const extended::ZoneRule kZoneRulesEcuador[] = {
2120  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
2121  {
2122  -7 /*fromYearTiny*/,
2123  -7 /*toYearTiny*/,
2124  2 /*inMonth*/,
2125  0 /*onDayOfWeek*/,
2126  5 /*onDayOfMonth*/,
2127  0 /*atTimeCode*/,
2128  'w' /*atTimeModifier*/,
2129  0 /*deltaCode*/,
2130  '-' /*letter*/,
2131  },
2132 
2133 };
2134 
2135 
2136 
2137 const extended::ZonePolicy kPolicyEcuador = {
2138  1 /*numRules*/,
2139  kZoneRulesEcuador /*rules*/,
2140  0 /* numLetters */,
2141  nullptr /* letters */,
2142 };
2143 
2144 //---------------------------------------------------------------------------
2145 // Policy name: Egypt
2146 // Rule count: 14
2147 // Memory (8-bit): 132
2148 // Memory (32-bit): 136
2149 //---------------------------------------------------------------------------
2150 
2151 static const extended::ZoneRule kZoneRulesEgypt[] = {
2152  // Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2153  {
2154  -34 /*fromYearTiny*/,
2155  -6 /*toYearTiny*/,
2156  10 /*inMonth*/,
2157  0 /*onDayOfWeek*/,
2158  1 /*onDayOfMonth*/,
2159  12 /*atTimeCode*/,
2160  'w' /*atTimeModifier*/,
2161  0 /*deltaCode*/,
2162  '-' /*letter*/,
2163  },
2164  // Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
2165  {
2166  -5 /*fromYearTiny*/,
2167  10 /*toYearTiny*/,
2168  4 /*inMonth*/,
2169  5 /*onDayOfWeek*/,
2170  0 /*onDayOfMonth*/,
2171  0 /*atTimeCode*/,
2172  's' /*atTimeModifier*/,
2173  4 /*deltaCode*/,
2174  'S' /*letter*/,
2175  },
2176  // Rule Egypt 1995 2005 - Sep lastThu 24:00 0 -
2177  {
2178  -5 /*fromYearTiny*/,
2179  5 /*toYearTiny*/,
2180  9 /*inMonth*/,
2181  4 /*onDayOfWeek*/,
2182  0 /*onDayOfMonth*/,
2183  96 /*atTimeCode*/,
2184  'w' /*atTimeModifier*/,
2185  0 /*deltaCode*/,
2186  '-' /*letter*/,
2187  },
2188  // Rule Egypt 2006 only - Sep 21 24:00 0 -
2189  {
2190  6 /*fromYearTiny*/,
2191  6 /*toYearTiny*/,
2192  9 /*inMonth*/,
2193  0 /*onDayOfWeek*/,
2194  21 /*onDayOfMonth*/,
2195  96 /*atTimeCode*/,
2196  'w' /*atTimeModifier*/,
2197  0 /*deltaCode*/,
2198  '-' /*letter*/,
2199  },
2200  // Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
2201  {
2202  7 /*fromYearTiny*/,
2203  7 /*toYearTiny*/,
2204  9 /*inMonth*/,
2205  4 /*onDayOfWeek*/,
2206  1 /*onDayOfMonth*/,
2207  96 /*atTimeCode*/,
2208  'w' /*atTimeModifier*/,
2209  0 /*deltaCode*/,
2210  '-' /*letter*/,
2211  },
2212  // Rule Egypt 2008 only - Aug lastThu 24:00 0 -
2213  {
2214  8 /*fromYearTiny*/,
2215  8 /*toYearTiny*/,
2216  8 /*inMonth*/,
2217  4 /*onDayOfWeek*/,
2218  0 /*onDayOfMonth*/,
2219  96 /*atTimeCode*/,
2220  'w' /*atTimeModifier*/,
2221  0 /*deltaCode*/,
2222  '-' /*letter*/,
2223  },
2224  // Rule Egypt 2009 only - Aug 20 24:00 0 -
2225  {
2226  9 /*fromYearTiny*/,
2227  9 /*toYearTiny*/,
2228  8 /*inMonth*/,
2229  0 /*onDayOfWeek*/,
2230  20 /*onDayOfMonth*/,
2231  96 /*atTimeCode*/,
2232  'w' /*atTimeModifier*/,
2233  0 /*deltaCode*/,
2234  '-' /*letter*/,
2235  },
2236  // Rule Egypt 2010 only - Aug 10 24:00 0 -
2237  {
2238  10 /*fromYearTiny*/,
2239  10 /*toYearTiny*/,
2240  8 /*inMonth*/,
2241  0 /*onDayOfWeek*/,
2242  10 /*onDayOfMonth*/,
2243  96 /*atTimeCode*/,
2244  'w' /*atTimeModifier*/,
2245  0 /*deltaCode*/,
2246  '-' /*letter*/,
2247  },
2248  // Rule Egypt 2010 only - Sep 9 24:00 1:00 S
2249  {
2250  10 /*fromYearTiny*/,
2251  10 /*toYearTiny*/,
2252  9 /*inMonth*/,
2253  0 /*onDayOfWeek*/,
2254  9 /*onDayOfMonth*/,
2255  96 /*atTimeCode*/,
2256  'w' /*atTimeModifier*/,
2257  4 /*deltaCode*/,
2258  'S' /*letter*/,
2259  },
2260  // Rule Egypt 2010 only - Sep lastThu 24:00 0 -
2261  {
2262  10 /*fromYearTiny*/,
2263  10 /*toYearTiny*/,
2264  9 /*inMonth*/,
2265  4 /*onDayOfWeek*/,
2266  0 /*onDayOfMonth*/,
2267  96 /*atTimeCode*/,
2268  'w' /*atTimeModifier*/,
2269  0 /*deltaCode*/,
2270  '-' /*letter*/,
2271  },
2272  // Rule Egypt 2014 only - May 15 24:00 1:00 S
2273  {
2274  14 /*fromYearTiny*/,
2275  14 /*toYearTiny*/,
2276  5 /*inMonth*/,
2277  0 /*onDayOfWeek*/,
2278  15 /*onDayOfMonth*/,
2279  96 /*atTimeCode*/,
2280  'w' /*atTimeModifier*/,
2281  4 /*deltaCode*/,
2282  'S' /*letter*/,
2283  },
2284  // Rule Egypt 2014 only - Jun 26 24:00 0 -
2285  {
2286  14 /*fromYearTiny*/,
2287  14 /*toYearTiny*/,
2288  6 /*inMonth*/,
2289  0 /*onDayOfWeek*/,
2290  26 /*onDayOfMonth*/,
2291  96 /*atTimeCode*/,
2292  'w' /*atTimeModifier*/,
2293  0 /*deltaCode*/,
2294  '-' /*letter*/,
2295  },
2296  // Rule Egypt 2014 only - Jul 31 24:00 1:00 S
2297  {
2298  14 /*fromYearTiny*/,
2299  14 /*toYearTiny*/,
2300  7 /*inMonth*/,
2301  0 /*onDayOfWeek*/,
2302  31 /*onDayOfMonth*/,
2303  96 /*atTimeCode*/,
2304  'w' /*atTimeModifier*/,
2305  4 /*deltaCode*/,
2306  'S' /*letter*/,
2307  },
2308  // Rule Egypt 2014 only - Sep lastThu 24:00 0 -
2309  {
2310  14 /*fromYearTiny*/,
2311  14 /*toYearTiny*/,
2312  9 /*inMonth*/,
2313  4 /*onDayOfWeek*/,
2314  0 /*onDayOfMonth*/,
2315  96 /*atTimeCode*/,
2316  'w' /*atTimeModifier*/,
2317  0 /*deltaCode*/,
2318  '-' /*letter*/,
2319  },
2320 
2321 };
2322 
2323 
2324 
2325 const extended::ZonePolicy kPolicyEgypt = {
2326  14 /*numRules*/,
2327  kZoneRulesEgypt /*rules*/,
2328  0 /* numLetters */,
2329  nullptr /* letters */,
2330 };
2331 
2332 //---------------------------------------------------------------------------
2333 // Policy name: Eire
2334 // Rule count: 3
2335 // Memory (8-bit): 33
2336 // Memory (32-bit): 37
2337 //---------------------------------------------------------------------------
2338 
2339 static const extended::ZoneRule kZoneRulesEire[] = {
2340  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2341  {
2342  -19 /*fromYearTiny*/,
2343  126 /*toYearTiny*/,
2344  3 /*inMonth*/,
2345  7 /*onDayOfWeek*/,
2346  0 /*onDayOfMonth*/,
2347  4 /*atTimeCode*/,
2348  'u' /*atTimeModifier*/,
2349  0 /*deltaCode*/,
2350  '-' /*letter*/,
2351  },
2352  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2353  {
2354  -10 /*fromYearTiny*/,
2355  -5 /*toYearTiny*/,
2356  10 /*inMonth*/,
2357  7 /*onDayOfWeek*/,
2358  22 /*onDayOfMonth*/,
2359  4 /*atTimeCode*/,
2360  'u' /*atTimeModifier*/,
2361  -4 /*deltaCode*/,
2362  '-' /*letter*/,
2363  },
2364  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2365  {
2366  -4 /*fromYearTiny*/,
2367  126 /*toYearTiny*/,
2368  10 /*inMonth*/,
2369  7 /*onDayOfWeek*/,
2370  0 /*onDayOfMonth*/,
2371  4 /*atTimeCode*/,
2372  'u' /*atTimeModifier*/,
2373  -4 /*deltaCode*/,
2374  '-' /*letter*/,
2375  },
2376 
2377 };
2378 
2379 
2380 
2381 const extended::ZonePolicy kPolicyEire = {
2382  3 /*numRules*/,
2383  kZoneRulesEire /*rules*/,
2384  0 /* numLetters */,
2385  nullptr /* letters */,
2386 };
2387 
2388 //---------------------------------------------------------------------------
2389 // Policy name: Falk
2390 // Rule count: 5
2391 // Memory (8-bit): 51
2392 // Memory (32-bit): 55
2393 //---------------------------------------------------------------------------
2394 
2395 static const extended::ZoneRule kZoneRulesFalk[] = {
2396  // Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2397  {
2398  -16 /*fromYearTiny*/,
2399  -15 /*toYearTiny*/,
2400  4 /*inMonth*/,
2401  7 /*onDayOfWeek*/,
2402  0 /*onDayOfMonth*/,
2403  0 /*atTimeCode*/,
2404  'w' /*atTimeModifier*/,
2405  0 /*deltaCode*/,
2406  '-' /*letter*/,
2407  },
2408  // Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 -
2409  {
2410  -15 /*fromYearTiny*/,
2411  0 /*toYearTiny*/,
2412  9 /*inMonth*/,
2413  7 /*onDayOfWeek*/,
2414  9 /*onDayOfMonth*/,
2415  0 /*atTimeCode*/,
2416  'w' /*atTimeModifier*/,
2417  4 /*deltaCode*/,
2418  '-' /*letter*/,
2419  },
2420  // Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
2421  {
2422  -14 /*fromYearTiny*/,
2423  0 /*toYearTiny*/,
2424  4 /*inMonth*/,
2425  7 /*onDayOfWeek*/,
2426  16 /*onDayOfMonth*/,
2427  0 /*atTimeCode*/,
2428  'w' /*atTimeModifier*/,
2429  0 /*deltaCode*/,
2430  '-' /*letter*/,
2431  },
2432  // Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
2433  {
2434  1 /*fromYearTiny*/,
2435  10 /*toYearTiny*/,
2436  4 /*inMonth*/,
2437  7 /*onDayOfWeek*/,
2438  15 /*onDayOfMonth*/,
2439  8 /*atTimeCode*/,
2440  'w' /*atTimeModifier*/,
2441  0 /*deltaCode*/,
2442  '-' /*letter*/,
2443  },
2444  // Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
2445  {
2446  1 /*fromYearTiny*/,
2447  10 /*toYearTiny*/,
2448  9 /*inMonth*/,
2449  7 /*onDayOfWeek*/,
2450  1 /*onDayOfMonth*/,
2451  8 /*atTimeCode*/,
2452  'w' /*atTimeModifier*/,
2453  4 /*deltaCode*/,
2454  '-' /*letter*/,
2455  },
2456 
2457 };
2458 
2459 
2460 
2461 const extended::ZonePolicy kPolicyFalk = {
2462  5 /*numRules*/,
2463  kZoneRulesFalk /*rules*/,
2464  0 /* numLetters */,
2465  nullptr /* letters */,
2466 };
2467 
2468 //---------------------------------------------------------------------------
2469 // Policy name: Fiji
2470 // Rule count: 10
2471 // Memory (8-bit): 96
2472 // Memory (32-bit): 100
2473 //---------------------------------------------------------------------------
2474 
2475 static const extended::ZoneRule kZoneRulesFiji[] = {
2476  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2477  {
2478  -2 /*fromYearTiny*/,
2479  -1 /*toYearTiny*/,
2480  11 /*inMonth*/,
2481  7 /*onDayOfWeek*/,
2482  1 /*onDayOfMonth*/,
2483  8 /*atTimeCode*/,
2484  'w' /*atTimeModifier*/,
2485  4 /*deltaCode*/,
2486  '-' /*letter*/,
2487  },
2488  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2489  {
2490  -1 /*fromYearTiny*/,
2491  0 /*toYearTiny*/,
2492  2 /*inMonth*/,
2493  7 /*onDayOfWeek*/,
2494  0 /*onDayOfMonth*/,
2495  12 /*atTimeCode*/,
2496  'w' /*atTimeModifier*/,
2497  0 /*deltaCode*/,
2498  '-' /*letter*/,
2499  },
2500  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2501  {
2502  9 /*fromYearTiny*/,
2503  9 /*toYearTiny*/,
2504  11 /*inMonth*/,
2505  0 /*onDayOfWeek*/,
2506  29 /*onDayOfMonth*/,
2507  8 /*atTimeCode*/,
2508  'w' /*atTimeModifier*/,
2509  4 /*deltaCode*/,
2510  '-' /*letter*/,
2511  },
2512  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2513  {
2514  10 /*fromYearTiny*/,
2515  10 /*toYearTiny*/,
2516  3 /*inMonth*/,
2517  7 /*onDayOfWeek*/,
2518  0 /*onDayOfMonth*/,
2519  12 /*atTimeCode*/,
2520  'w' /*atTimeModifier*/,
2521  0 /*deltaCode*/,
2522  '-' /*letter*/,
2523  },
2524  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2525  {
2526  10 /*fromYearTiny*/,
2527  13 /*toYearTiny*/,
2528  10 /*inMonth*/,
2529  7 /*onDayOfWeek*/,
2530  21 /*onDayOfMonth*/,
2531  8 /*atTimeCode*/,
2532  'w' /*atTimeModifier*/,
2533  4 /*deltaCode*/,
2534  '-' /*letter*/,
2535  },
2536  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2537  {
2538  11 /*fromYearTiny*/,
2539  11 /*toYearTiny*/,
2540  3 /*inMonth*/,
2541  7 /*onDayOfWeek*/,
2542  1 /*onDayOfMonth*/,
2543  12 /*atTimeCode*/,
2544  'w' /*atTimeModifier*/,
2545  0 /*deltaCode*/,
2546  '-' /*letter*/,
2547  },
2548  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2549  {
2550  12 /*fromYearTiny*/,
2551  13 /*toYearTiny*/,
2552  1 /*inMonth*/,
2553  7 /*onDayOfWeek*/,
2554  18 /*onDayOfMonth*/,
2555  12 /*atTimeCode*/,
2556  'w' /*atTimeModifier*/,
2557  0 /*deltaCode*/,
2558  '-' /*letter*/,
2559  },
2560  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2561  {
2562  14 /*fromYearTiny*/,
2563  14 /*toYearTiny*/,
2564  1 /*inMonth*/,
2565  7 /*onDayOfWeek*/,
2566  18 /*onDayOfMonth*/,
2567  8 /*atTimeCode*/,
2568  'w' /*atTimeModifier*/,
2569  0 /*deltaCode*/,
2570  '-' /*letter*/,
2571  },
2572  // Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
2573  {
2574  14 /*fromYearTiny*/,
2575  126 /*toYearTiny*/,
2576  11 /*inMonth*/,
2577  7 /*onDayOfWeek*/,
2578  1 /*onDayOfMonth*/,
2579  8 /*atTimeCode*/,
2580  'w' /*atTimeModifier*/,
2581  4 /*deltaCode*/,
2582  '-' /*letter*/,
2583  },
2584  // Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
2585  {
2586  15 /*fromYearTiny*/,
2587  126 /*toYearTiny*/,
2588  1 /*inMonth*/,
2589  7 /*onDayOfWeek*/,
2590  13 /*onDayOfMonth*/,
2591  12 /*atTimeCode*/,
2592  'w' /*atTimeModifier*/,
2593  0 /*deltaCode*/,
2594  '-' /*letter*/,
2595  },
2596 
2597 };
2598 
2599 
2600 
2601 const extended::ZonePolicy kPolicyFiji = {
2602  10 /*numRules*/,
2603  kZoneRulesFiji /*rules*/,
2604  0 /* numLetters */,
2605  nullptr /* letters */,
2606 };
2607 
2608 //---------------------------------------------------------------------------
2609 // Policy name: Ghana
2610 // Rule count: 1
2611 // Memory (8-bit): 15
2612 // Memory (32-bit): 19
2613 //---------------------------------------------------------------------------
2614 
2615 static const extended::ZoneRule kZoneRulesGhana[] = {
2616  // Rule Ghana 1920 1942 - Dec 31 0:00 0 -
2617  {
2618  -80 /*fromYearTiny*/,
2619  -58 /*toYearTiny*/,
2620  12 /*inMonth*/,
2621  0 /*onDayOfWeek*/,
2622  31 /*onDayOfMonth*/,
2623  0 /*atTimeCode*/,
2624  'w' /*atTimeModifier*/,
2625  0 /*deltaCode*/,
2626  '-' /*letter*/,
2627  },
2628 
2629 };
2630 
2631 
2632 
2633 const extended::ZonePolicy kPolicyGhana = {
2634  1 /*numRules*/,
2635  kZoneRulesGhana /*rules*/,
2636  0 /* numLetters */,
2637  nullptr /* letters */,
2638 };
2639 
2640 //---------------------------------------------------------------------------
2641 // Policy name: Guam
2642 // Rule count: 1
2643 // Memory (8-bit): 15
2644 // Memory (32-bit): 19
2645 //---------------------------------------------------------------------------
2646 
2647 static const extended::ZoneRule kZoneRulesGuam[] = {
2648  // Rule Guam 1977 only - Aug 28 2:00 0 S
2649  {
2650  -23 /*fromYearTiny*/,
2651  -23 /*toYearTiny*/,
2652  8 /*inMonth*/,
2653  0 /*onDayOfWeek*/,
2654  28 /*onDayOfMonth*/,
2655  8 /*atTimeCode*/,
2656  'w' /*atTimeModifier*/,
2657  0 /*deltaCode*/,
2658  'S' /*letter*/,
2659  },
2660 
2661 };
2662 
2663 
2664 
2665 const extended::ZonePolicy kPolicyGuam = {
2666  1 /*numRules*/,
2667  kZoneRulesGuam /*rules*/,
2668  0 /* numLetters */,
2669  nullptr /* letters */,
2670 };
2671 
2672 //---------------------------------------------------------------------------
2673 // Policy name: Guat
2674 // Rule count: 3
2675 // Memory (8-bit): 33
2676 // Memory (32-bit): 37
2677 //---------------------------------------------------------------------------
2678 
2679 static const extended::ZoneRule kZoneRulesGuat[] = {
2680  // Rule Guat 1991 only - Sep 7 0:00 0 S
2681  {
2682  -9 /*fromYearTiny*/,
2683  -9 /*toYearTiny*/,
2684  9 /*inMonth*/,
2685  0 /*onDayOfWeek*/,
2686  7 /*onDayOfMonth*/,
2687  0 /*atTimeCode*/,
2688  'w' /*atTimeModifier*/,
2689  0 /*deltaCode*/,
2690  'S' /*letter*/,
2691  },
2692  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2693  {
2694  6 /*fromYearTiny*/,
2695  6 /*toYearTiny*/,
2696  4 /*inMonth*/,
2697  0 /*onDayOfWeek*/,
2698  30 /*onDayOfMonth*/,
2699  0 /*atTimeCode*/,
2700  'w' /*atTimeModifier*/,
2701  4 /*deltaCode*/,
2702  'D' /*letter*/,
2703  },
2704  // Rule Guat 2006 only - Oct 1 0:00 0 S
2705  {
2706  6 /*fromYearTiny*/,
2707  6 /*toYearTiny*/,
2708  10 /*inMonth*/,
2709  0 /*onDayOfWeek*/,
2710  1 /*onDayOfMonth*/,
2711  0 /*atTimeCode*/,
2712  'w' /*atTimeModifier*/,
2713  0 /*deltaCode*/,
2714  'S' /*letter*/,
2715  },
2716 
2717 };
2718 
2719 
2720 
2721 const extended::ZonePolicy kPolicyGuat = {
2722  3 /*numRules*/,
2723  kZoneRulesGuat /*rules*/,
2724  0 /* numLetters */,
2725  nullptr /* letters */,
2726 };
2727 
2728 //---------------------------------------------------------------------------
2729 // Policy name: HK
2730 // Rule count: 1
2731 // Memory (8-bit): 15
2732 // Memory (32-bit): 19
2733 //---------------------------------------------------------------------------
2734 
2735 static const extended::ZoneRule kZoneRulesHK[] = {
2736  // Rule HK 1979 only - Oct Sun>=16 3:30 0 -
2737  {
2738  -21 /*fromYearTiny*/,
2739  -21 /*toYearTiny*/,
2740  10 /*inMonth*/,
2741  7 /*onDayOfWeek*/,
2742  16 /*onDayOfMonth*/,
2743  14 /*atTimeCode*/,
2744  'w' /*atTimeModifier*/,
2745  0 /*deltaCode*/,
2746  '-' /*letter*/,
2747  },
2748 
2749 };
2750 
2751 
2752 
2753 const extended::ZonePolicy kPolicyHK = {
2754  1 /*numRules*/,
2755  kZoneRulesHK /*rules*/,
2756  0 /* numLetters */,
2757  nullptr /* letters */,
2758 };
2759 
2760 //---------------------------------------------------------------------------
2761 // Policy name: Haiti
2762 // Rule count: 7
2763 // Memory (8-bit): 69
2764 // Memory (32-bit): 73
2765 //---------------------------------------------------------------------------
2766 
2767 static const extended::ZoneRule kZoneRulesHaiti[] = {
2768  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2769  {
2770  -12 /*fromYearTiny*/,
2771  -3 /*toYearTiny*/,
2772  10 /*inMonth*/,
2773  7 /*onDayOfWeek*/,
2774  0 /*onDayOfMonth*/,
2775  4 /*atTimeCode*/,
2776  's' /*atTimeModifier*/,
2777  0 /*deltaCode*/,
2778  'S' /*letter*/,
2779  },
2780  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2781  {
2782  5 /*fromYearTiny*/,
2783  6 /*toYearTiny*/,
2784  4 /*inMonth*/,
2785  7 /*onDayOfWeek*/,
2786  1 /*onDayOfMonth*/,
2787  0 /*atTimeCode*/,
2788  'w' /*atTimeModifier*/,
2789  4 /*deltaCode*/,
2790  'D' /*letter*/,
2791  },
2792  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2793  {
2794  5 /*fromYearTiny*/,
2795  6 /*toYearTiny*/,
2796  10 /*inMonth*/,
2797  7 /*onDayOfWeek*/,
2798  0 /*onDayOfMonth*/,
2799  0 /*atTimeCode*/,
2800  'w' /*atTimeModifier*/,
2801  0 /*deltaCode*/,
2802  'S' /*letter*/,
2803  },
2804  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2805  {
2806  12 /*fromYearTiny*/,
2807  15 /*toYearTiny*/,
2808  3 /*inMonth*/,
2809  7 /*onDayOfWeek*/,
2810  8 /*onDayOfMonth*/,
2811  8 /*atTimeCode*/,
2812  'w' /*atTimeModifier*/,
2813  4 /*deltaCode*/,
2814  'D' /*letter*/,
2815  },
2816  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2817  {
2818  12 /*fromYearTiny*/,
2819  15 /*toYearTiny*/,
2820  11 /*inMonth*/,
2821  7 /*onDayOfWeek*/,
2822  1 /*onDayOfMonth*/,
2823  8 /*atTimeCode*/,
2824  'w' /*atTimeModifier*/,
2825  0 /*deltaCode*/,
2826  'S' /*letter*/,
2827  },
2828  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2829  {
2830  17 /*fromYearTiny*/,
2831  126 /*toYearTiny*/,
2832  3 /*inMonth*/,
2833  7 /*onDayOfWeek*/,
2834  8 /*onDayOfMonth*/,
2835  8 /*atTimeCode*/,
2836  'w' /*atTimeModifier*/,
2837  4 /*deltaCode*/,
2838  'D' /*letter*/,
2839  },
2840  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2841  {
2842  17 /*fromYearTiny*/,
2843  126 /*toYearTiny*/,
2844  11 /*inMonth*/,
2845  7 /*onDayOfWeek*/,
2846  1 /*onDayOfMonth*/,
2847  8 /*atTimeCode*/,
2848  'w' /*atTimeModifier*/,
2849  0 /*deltaCode*/,
2850  'S' /*letter*/,
2851  },
2852 
2853 };
2854 
2855 
2856 
2857 const extended::ZonePolicy kPolicyHaiti = {
2858  7 /*numRules*/,
2859  kZoneRulesHaiti /*rules*/,
2860  0 /* numLetters */,
2861  nullptr /* letters */,
2862 };
2863 
2864 //---------------------------------------------------------------------------
2865 // Policy name: Holiday
2866 // Rule count: 1
2867 // Memory (8-bit): 15
2868 // Memory (32-bit): 19
2869 //---------------------------------------------------------------------------
2870 
2871 static const extended::ZoneRule kZoneRulesHoliday[] = {
2872  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2873  {
2874  -7 /*fromYearTiny*/,
2875  -6 /*toYearTiny*/,
2876  3 /*inMonth*/,
2877  7 /*onDayOfWeek*/,
2878  1 /*onDayOfMonth*/,
2879  8 /*atTimeCode*/,
2880  's' /*atTimeModifier*/,
2881  0 /*deltaCode*/,
2882  'S' /*letter*/,
2883  },
2884 
2885 };
2886 
2887 
2888 
2889 const extended::ZonePolicy kPolicyHoliday = {
2890  1 /*numRules*/,
2891  kZoneRulesHoliday /*rules*/,
2892  0 /* numLetters */,
2893  nullptr /* letters */,
2894 };
2895 
2896 //---------------------------------------------------------------------------
2897 // Policy name: Hond
2898 // Rule count: 3
2899 // Memory (8-bit): 33
2900 // Memory (32-bit): 37
2901 //---------------------------------------------------------------------------
2902 
2903 static const extended::ZoneRule kZoneRulesHond[] = {
2904  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2905  {
2906  -13 /*fromYearTiny*/,
2907  -12 /*toYearTiny*/,
2908  9 /*inMonth*/,
2909  7 /*onDayOfWeek*/,
2910  0 /*onDayOfMonth*/,
2911  0 /*atTimeCode*/,
2912  'w' /*atTimeModifier*/,
2913  0 /*deltaCode*/,
2914  'S' /*letter*/,
2915  },
2916  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2917  {
2918  6 /*fromYearTiny*/,
2919  6 /*toYearTiny*/,
2920  5 /*inMonth*/,
2921  7 /*onDayOfWeek*/,
2922  1 /*onDayOfMonth*/,
2923  0 /*atTimeCode*/,
2924  'w' /*atTimeModifier*/,
2925  4 /*deltaCode*/,
2926  'D' /*letter*/,
2927  },
2928  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2929  {
2930  6 /*fromYearTiny*/,
2931  6 /*toYearTiny*/,
2932  8 /*inMonth*/,
2933  1 /*onDayOfWeek*/,
2934  1 /*onDayOfMonth*/,
2935  0 /*atTimeCode*/,
2936  'w' /*atTimeModifier*/,
2937  0 /*deltaCode*/,
2938  'S' /*letter*/,
2939  },
2940 
2941 };
2942 
2943 
2944 
2945 const extended::ZonePolicy kPolicyHond = {
2946  3 /*numRules*/,
2947  kZoneRulesHond /*rules*/,
2948  0 /* numLetters */,
2949  nullptr /* letters */,
2950 };
2951 
2952 //---------------------------------------------------------------------------
2953 // Policy name: Iran
2954 // Rule count: 43
2955 // Memory (8-bit): 393
2956 // Memory (32-bit): 397
2957 //---------------------------------------------------------------------------
2958 
2959 static const extended::ZoneRule kZoneRulesIran[] = {
2960  // Rule Iran 1996 only - Sep 20 24:00 0 -
2961  {
2962  -4 /*fromYearTiny*/,
2963  -4 /*toYearTiny*/,
2964  9 /*inMonth*/,
2965  0 /*onDayOfWeek*/,
2966  20 /*onDayOfMonth*/,
2967  96 /*atTimeCode*/,
2968  'w' /*atTimeModifier*/,
2969  0 /*deltaCode*/,
2970  '-' /*letter*/,
2971  },
2972  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2973  {
2974  -3 /*fromYearTiny*/,
2975  -1 /*toYearTiny*/,
2976  3 /*inMonth*/,
2977  0 /*onDayOfWeek*/,
2978  21 /*onDayOfMonth*/,
2979  96 /*atTimeCode*/,
2980  'w' /*atTimeModifier*/,
2981  4 /*deltaCode*/,
2982  '-' /*letter*/,
2983  },
2984  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2985  {
2986  -3 /*fromYearTiny*/,
2987  -1 /*toYearTiny*/,
2988  9 /*inMonth*/,
2989  0 /*onDayOfWeek*/,
2990  21 /*onDayOfMonth*/,
2991  96 /*atTimeCode*/,
2992  'w' /*atTimeModifier*/,
2993  0 /*deltaCode*/,
2994  '-' /*letter*/,
2995  },
2996  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2997  {
2998  0 /*fromYearTiny*/,
2999  0 /*toYearTiny*/,
3000  3 /*inMonth*/,
3001  0 /*onDayOfWeek*/,
3002  20 /*onDayOfMonth*/,
3003  96 /*atTimeCode*/,
3004  'w' /*atTimeModifier*/,
3005  4 /*deltaCode*/,
3006  '-' /*letter*/,
3007  },
3008  // Rule Iran 2000 only - Sep 20 24:00 0 -
3009  {
3010  0 /*fromYearTiny*/,
3011  0 /*toYearTiny*/,
3012  9 /*inMonth*/,
3013  0 /*onDayOfWeek*/,
3014  20 /*onDayOfMonth*/,
3015  96 /*atTimeCode*/,
3016  'w' /*atTimeModifier*/,
3017  0 /*deltaCode*/,
3018  '-' /*letter*/,
3019  },
3020  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
3021  {
3022  1 /*fromYearTiny*/,
3023  3 /*toYearTiny*/,
3024  3 /*inMonth*/,
3025  0 /*onDayOfWeek*/,
3026  21 /*onDayOfMonth*/,
3027  96 /*atTimeCode*/,
3028  'w' /*atTimeModifier*/,
3029  4 /*deltaCode*/,
3030  '-' /*letter*/,
3031  },
3032  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
3033  {
3034  1 /*fromYearTiny*/,
3035  3 /*toYearTiny*/,
3036  9 /*inMonth*/,
3037  0 /*onDayOfWeek*/,
3038  21 /*onDayOfMonth*/,
3039  96 /*atTimeCode*/,
3040  'w' /*atTimeModifier*/,
3041  0 /*deltaCode*/,
3042  '-' /*letter*/,
3043  },
3044  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
3045  {
3046  4 /*fromYearTiny*/,
3047  4 /*toYearTiny*/,
3048  3 /*inMonth*/,
3049  0 /*onDayOfWeek*/,
3050  20 /*onDayOfMonth*/,
3051  96 /*atTimeCode*/,
3052  'w' /*atTimeModifier*/,
3053  4 /*deltaCode*/,
3054  '-' /*letter*/,
3055  },
3056  // Rule Iran 2004 only - Sep 20 24:00 0 -
3057  {
3058  4 /*fromYearTiny*/,
3059  4 /*toYearTiny*/,
3060  9 /*inMonth*/,
3061  0 /*onDayOfWeek*/,
3062  20 /*onDayOfMonth*/,
3063  96 /*atTimeCode*/,
3064  'w' /*atTimeModifier*/,
3065  0 /*deltaCode*/,
3066  '-' /*letter*/,
3067  },
3068  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
3069  {
3070  5 /*fromYearTiny*/,
3071  5 /*toYearTiny*/,
3072  3 /*inMonth*/,
3073  0 /*onDayOfWeek*/,
3074  21 /*onDayOfMonth*/,
3075  96 /*atTimeCode*/,
3076  'w' /*atTimeModifier*/,
3077  4 /*deltaCode*/,
3078  '-' /*letter*/,
3079  },
3080  // Rule Iran 2005 only - Sep 21 24:00 0 -
3081  {
3082  5 /*fromYearTiny*/,
3083  5 /*toYearTiny*/,
3084  9 /*inMonth*/,
3085  0 /*onDayOfWeek*/,
3086  21 /*onDayOfMonth*/,
3087  96 /*atTimeCode*/,
3088  'w' /*atTimeModifier*/,
3089  0 /*deltaCode*/,
3090  '-' /*letter*/,
3091  },
3092  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
3093  {
3094  8 /*fromYearTiny*/,
3095  8 /*toYearTiny*/,
3096  3 /*inMonth*/,
3097  0 /*onDayOfWeek*/,
3098  20 /*onDayOfMonth*/,
3099  96 /*atTimeCode*/,
3100  'w' /*atTimeModifier*/,
3101  4 /*deltaCode*/,
3102  '-' /*letter*/,
3103  },
3104  // Rule Iran 2008 only - Sep 20 24:00 0 -
3105  {
3106  8 /*fromYearTiny*/,
3107  8 /*toYearTiny*/,
3108  9 /*inMonth*/,
3109  0 /*onDayOfWeek*/,
3110  20 /*onDayOfMonth*/,
3111  96 /*atTimeCode*/,
3112  'w' /*atTimeModifier*/,
3113  0 /*deltaCode*/,
3114  '-' /*letter*/,
3115  },
3116  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
3117  {
3118  9 /*fromYearTiny*/,
3119  11 /*toYearTiny*/,
3120  3 /*inMonth*/,
3121  0 /*onDayOfWeek*/,
3122  21 /*onDayOfMonth*/,
3123  96 /*atTimeCode*/,
3124  'w' /*atTimeModifier*/,
3125  4 /*deltaCode*/,
3126  '-' /*letter*/,
3127  },
3128  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
3129  {
3130  9 /*fromYearTiny*/,
3131  11 /*toYearTiny*/,
3132  9 /*inMonth*/,
3133  0 /*onDayOfWeek*/,
3134  21 /*onDayOfMonth*/,
3135  96 /*atTimeCode*/,
3136  'w' /*atTimeModifier*/,
3137  0 /*deltaCode*/,
3138  '-' /*letter*/,
3139  },
3140  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
3141  {
3142  12 /*fromYearTiny*/,
3143  12 /*toYearTiny*/,
3144  3 /*inMonth*/,
3145  0 /*onDayOfWeek*/,
3146  20 /*onDayOfMonth*/,
3147  96 /*atTimeCode*/,
3148  'w' /*atTimeModifier*/,
3149  4 /*deltaCode*/,
3150  '-' /*letter*/,
3151  },
3152  // Rule Iran 2012 only - Sep 20 24:00 0 -
3153  {
3154  12 /*fromYearTiny*/,
3155  12 /*toYearTiny*/,
3156  9 /*inMonth*/,
3157  0 /*onDayOfWeek*/,
3158  20 /*onDayOfMonth*/,
3159  96 /*atTimeCode*/,
3160  'w' /*atTimeModifier*/,
3161  0 /*deltaCode*/,
3162  '-' /*letter*/,
3163  },
3164  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
3165  {
3166  13 /*fromYearTiny*/,
3167  15 /*toYearTiny*/,
3168  3 /*inMonth*/,
3169  0 /*onDayOfWeek*/,
3170  21 /*onDayOfMonth*/,
3171  96 /*atTimeCode*/,
3172  'w' /*atTimeModifier*/,
3173  4 /*deltaCode*/,
3174  '-' /*letter*/,
3175  },
3176  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
3177  {
3178  13 /*fromYearTiny*/,
3179  15 /*toYearTiny*/,
3180  9 /*inMonth*/,
3181  0 /*onDayOfWeek*/,
3182  21 /*onDayOfMonth*/,
3183  96 /*atTimeCode*/,
3184  'w' /*atTimeModifier*/,
3185  0 /*deltaCode*/,
3186  '-' /*letter*/,
3187  },
3188  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
3189  {
3190  16 /*fromYearTiny*/,
3191  16 /*toYearTiny*/,
3192  3 /*inMonth*/,
3193  0 /*onDayOfWeek*/,
3194  20 /*onDayOfMonth*/,
3195  96 /*atTimeCode*/,
3196  'w' /*atTimeModifier*/,
3197  4 /*deltaCode*/,
3198  '-' /*letter*/,
3199  },
3200  // Rule Iran 2016 only - Sep 20 24:00 0 -
3201  {
3202  16 /*fromYearTiny*/,
3203  16 /*toYearTiny*/,
3204  9 /*inMonth*/,
3205  0 /*onDayOfWeek*/,
3206  20 /*onDayOfMonth*/,
3207  96 /*atTimeCode*/,
3208  'w' /*atTimeModifier*/,
3209  0 /*deltaCode*/,
3210  '-' /*letter*/,
3211  },
3212  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
3213  {
3214  17 /*fromYearTiny*/,
3215  19 /*toYearTiny*/,
3216  3 /*inMonth*/,
3217  0 /*onDayOfWeek*/,
3218  21 /*onDayOfMonth*/,
3219  96 /*atTimeCode*/,
3220  'w' /*atTimeModifier*/,
3221  4 /*deltaCode*/,
3222  '-' /*letter*/,
3223  },
3224  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
3225  {
3226  17 /*fromYearTiny*/,
3227  19 /*toYearTiny*/,
3228  9 /*inMonth*/,
3229  0 /*onDayOfWeek*/,
3230  21 /*onDayOfMonth*/,
3231  96 /*atTimeCode*/,
3232  'w' /*atTimeModifier*/,
3233  0 /*deltaCode*/,
3234  '-' /*letter*/,
3235  },
3236  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
3237  {
3238  20 /*fromYearTiny*/,
3239  20 /*toYearTiny*/,
3240  3 /*inMonth*/,
3241  0 /*onDayOfWeek*/,
3242  20 /*onDayOfMonth*/,
3243  96 /*atTimeCode*/,
3244  'w' /*atTimeModifier*/,
3245  4 /*deltaCode*/,
3246  '-' /*letter*/,
3247  },
3248  // Rule Iran 2020 only - Sep 20 24:00 0 -
3249  {
3250  20 /*fromYearTiny*/,
3251  20 /*toYearTiny*/,
3252  9 /*inMonth*/,
3253  0 /*onDayOfWeek*/,
3254  20 /*onDayOfMonth*/,
3255  96 /*atTimeCode*/,
3256  'w' /*atTimeModifier*/,
3257  0 /*deltaCode*/,
3258  '-' /*letter*/,
3259  },
3260  // Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
3261  {
3262  21 /*fromYearTiny*/,
3263  23 /*toYearTiny*/,
3264  3 /*inMonth*/,
3265  0 /*onDayOfWeek*/,
3266  21 /*onDayOfMonth*/,
3267  96 /*atTimeCode*/,
3268  'w' /*atTimeModifier*/,
3269  4 /*deltaCode*/,
3270  '-' /*letter*/,
3271  },
3272  // Rule Iran 2021 2023 - Sep 21 24:00 0 -
3273  {
3274  21 /*fromYearTiny*/,
3275  23 /*toYearTiny*/,
3276  9 /*inMonth*/,
3277  0 /*onDayOfWeek*/,
3278  21 /*onDayOfMonth*/,
3279  96 /*atTimeCode*/,
3280  'w' /*atTimeModifier*/,
3281  0 /*deltaCode*/,
3282  '-' /*letter*/,
3283  },
3284  // Rule Iran 2024 only - Mar 20 24:00 1:00 -
3285  {
3286  24 /*fromYearTiny*/,
3287  24 /*toYearTiny*/,
3288  3 /*inMonth*/,
3289  0 /*onDayOfWeek*/,
3290  20 /*onDayOfMonth*/,
3291  96 /*atTimeCode*/,
3292  'w' /*atTimeModifier*/,
3293  4 /*deltaCode*/,
3294  '-' /*letter*/,
3295  },
3296  // Rule Iran 2024 only - Sep 20 24:00 0 -
3297  {
3298  24 /*fromYearTiny*/,
3299  24 /*toYearTiny*/,
3300  9 /*inMonth*/,
3301  0 /*onDayOfWeek*/,
3302  20 /*onDayOfMonth*/,
3303  96 /*atTimeCode*/,
3304  'w' /*atTimeModifier*/,
3305  0 /*deltaCode*/,
3306  '-' /*letter*/,
3307  },
3308  // Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
3309  {
3310  25 /*fromYearTiny*/,
3311  27 /*toYearTiny*/,
3312  3 /*inMonth*/,
3313  0 /*onDayOfWeek*/,
3314  21 /*onDayOfMonth*/,
3315  96 /*atTimeCode*/,
3316  'w' /*atTimeModifier*/,
3317  4 /*deltaCode*/,
3318  '-' /*letter*/,
3319  },
3320  // Rule Iran 2025 2027 - Sep 21 24:00 0 -
3321  {
3322  25 /*fromYearTiny*/,
3323  27 /*toYearTiny*/,
3324  9 /*inMonth*/,
3325  0 /*onDayOfWeek*/,
3326  21 /*onDayOfMonth*/,
3327  96 /*atTimeCode*/,
3328  'w' /*atTimeModifier*/,
3329  0 /*deltaCode*/,
3330  '-' /*letter*/,
3331  },
3332  // Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
3333  {
3334  28 /*fromYearTiny*/,
3335  29 /*toYearTiny*/,
3336  3 /*inMonth*/,
3337  0 /*onDayOfWeek*/,
3338  20 /*onDayOfMonth*/,
3339  96 /*atTimeCode*/,
3340  'w' /*atTimeModifier*/,
3341  4 /*deltaCode*/,
3342  '-' /*letter*/,
3343  },
3344  // Rule Iran 2028 2029 - Sep 20 24:00 0 -
3345  {
3346  28 /*fromYearTiny*/,
3347  29 /*toYearTiny*/,
3348  9 /*inMonth*/,
3349  0 /*onDayOfWeek*/,
3350  20 /*onDayOfMonth*/,
3351  96 /*atTimeCode*/,
3352  'w' /*atTimeModifier*/,
3353  0 /*deltaCode*/,
3354  '-' /*letter*/,
3355  },
3356  // Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
3357  {
3358  30 /*fromYearTiny*/,
3359  31 /*toYearTiny*/,
3360  3 /*inMonth*/,
3361  0 /*onDayOfWeek*/,
3362  21 /*onDayOfMonth*/,
3363  96 /*atTimeCode*/,
3364  'w' /*atTimeModifier*/,
3365  4 /*deltaCode*/,
3366  '-' /*letter*/,
3367  },
3368  // Rule Iran 2030 2031 - Sep 21 24:00 0 -
3369  {
3370  30 /*fromYearTiny*/,
3371  31 /*toYearTiny*/,
3372  9 /*inMonth*/,
3373  0 /*onDayOfWeek*/,
3374  21 /*onDayOfMonth*/,
3375  96 /*atTimeCode*/,
3376  'w' /*atTimeModifier*/,
3377  0 /*deltaCode*/,
3378  '-' /*letter*/,
3379  },
3380  // Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
3381  {
3382  32 /*fromYearTiny*/,
3383  33 /*toYearTiny*/,
3384  3 /*inMonth*/,
3385  0 /*onDayOfWeek*/,
3386  20 /*onDayOfMonth*/,
3387  96 /*atTimeCode*/,
3388  'w' /*atTimeModifier*/,
3389  4 /*deltaCode*/,
3390  '-' /*letter*/,
3391  },
3392  // Rule Iran 2032 2033 - Sep 20 24:00 0 -
3393  {
3394  32 /*fromYearTiny*/,
3395  33 /*toYearTiny*/,
3396  9 /*inMonth*/,
3397  0 /*onDayOfWeek*/,
3398  20 /*onDayOfMonth*/,
3399  96 /*atTimeCode*/,
3400  'w' /*atTimeModifier*/,
3401  0 /*deltaCode*/,
3402  '-' /*letter*/,
3403  },
3404  // Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
3405  {
3406  34 /*fromYearTiny*/,
3407  35 /*toYearTiny*/,
3408  3 /*inMonth*/,
3409  0 /*onDayOfWeek*/,
3410  21 /*onDayOfMonth*/,
3411  96 /*atTimeCode*/,
3412  'w' /*atTimeModifier*/,
3413  4 /*deltaCode*/,
3414  '-' /*letter*/,
3415  },
3416  // Rule Iran 2034 2035 - Sep 21 24:00 0 -
3417  {
3418  34 /*fromYearTiny*/,
3419  35 /*toYearTiny*/,
3420  9 /*inMonth*/,
3421  0 /*onDayOfWeek*/,
3422  21 /*onDayOfMonth*/,
3423  96 /*atTimeCode*/,
3424  'w' /*atTimeModifier*/,
3425  0 /*deltaCode*/,
3426  '-' /*letter*/,
3427  },
3428  // Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
3429  {
3430  36 /*fromYearTiny*/,
3431  37 /*toYearTiny*/,
3432  3 /*inMonth*/,
3433  0 /*onDayOfWeek*/,
3434  20 /*onDayOfMonth*/,
3435  96 /*atTimeCode*/,
3436  'w' /*atTimeModifier*/,
3437  4 /*deltaCode*/,
3438  '-' /*letter*/,
3439  },
3440  // Rule Iran 2036 2037 - Sep 20 24:00 0 -
3441  {
3442  36 /*fromYearTiny*/,
3443  37 /*toYearTiny*/,
3444  9 /*inMonth*/,
3445  0 /*onDayOfWeek*/,
3446  20 /*onDayOfMonth*/,
3447  96 /*atTimeCode*/,
3448  'w' /*atTimeModifier*/,
3449  0 /*deltaCode*/,
3450  '-' /*letter*/,
3451  },
3452  // Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
3453  {
3454  38 /*fromYearTiny*/,
3455  39 /*toYearTiny*/,
3456  3 /*inMonth*/,
3457  0 /*onDayOfWeek*/,
3458  21 /*onDayOfMonth*/,
3459  96 /*atTimeCode*/,
3460  'w' /*atTimeModifier*/,
3461  4 /*deltaCode*/,
3462  '-' /*letter*/,
3463  },
3464  // Rule Iran 2038 2039 - Sep 21 24:00 0 -
3465  {
3466  38 /*fromYearTiny*/,
3467  39 /*toYearTiny*/,
3468  9 /*inMonth*/,
3469  0 /*onDayOfWeek*/,
3470  21 /*onDayOfMonth*/,
3471  96 /*atTimeCode*/,
3472  'w' /*atTimeModifier*/,
3473  0 /*deltaCode*/,
3474  '-' /*letter*/,
3475  },
3476 
3477 };
3478 
3479 
3480 
3481 const extended::ZonePolicy kPolicyIran = {
3482  43 /*numRules*/,
3483  kZoneRulesIran /*rules*/,
3484  0 /* numLetters */,
3485  nullptr /* letters */,
3486 };
3487 
3488 //---------------------------------------------------------------------------
3489 // Policy name: Iraq
3490 // Rule count: 3
3491 // Memory (8-bit): 33
3492 // Memory (32-bit): 37
3493 //---------------------------------------------------------------------------
3494 
3495 static const extended::ZoneRule kZoneRulesIraq[] = {
3496  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3497  {
3498  -15 /*fromYearTiny*/,
3499  -10 /*toYearTiny*/,
3500  9 /*inMonth*/,
3501  7 /*onDayOfWeek*/,
3502  0 /*onDayOfMonth*/,
3503  4 /*atTimeCode*/,
3504  's' /*atTimeModifier*/,
3505  0 /*deltaCode*/,
3506  '-' /*letter*/,
3507  },
3508  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3509  {
3510  -9 /*fromYearTiny*/,
3511  7 /*toYearTiny*/,
3512  4 /*inMonth*/,
3513  0 /*onDayOfWeek*/,
3514  1 /*onDayOfMonth*/,
3515  12 /*atTimeCode*/,
3516  's' /*atTimeModifier*/,
3517  4 /*deltaCode*/,
3518  '-' /*letter*/,
3519  },
3520  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3521  {
3522  -9 /*fromYearTiny*/,
3523  7 /*toYearTiny*/,
3524  10 /*inMonth*/,
3525  0 /*onDayOfWeek*/,
3526  1 /*onDayOfMonth*/,
3527  12 /*atTimeCode*/,
3528  's' /*atTimeModifier*/,
3529  0 /*deltaCode*/,
3530  '-' /*letter*/,
3531  },
3532 
3533 };
3534 
3535 
3536 
3537 const extended::ZonePolicy kPolicyIraq = {
3538  3 /*numRules*/,
3539  kZoneRulesIraq /*rules*/,
3540  0 /* numLetters */,
3541  nullptr /* letters */,
3542 };
3543 
3544 //---------------------------------------------------------------------------
3545 // Policy name: Japan
3546 // Rule count: 1
3547 // Memory (8-bit): 15
3548 // Memory (32-bit): 19
3549 //---------------------------------------------------------------------------
3550 
3551 static const extended::ZoneRule kZoneRulesJapan[] = {
3552  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3553  {
3554  -52 /*fromYearTiny*/,
3555  -49 /*toYearTiny*/,
3556  9 /*inMonth*/,
3557  6 /*onDayOfWeek*/,
3558  8 /*onDayOfMonth*/,
3559  100 /*atTimeCode*/,
3560  'w' /*atTimeModifier*/,
3561  0 /*deltaCode*/,
3562  'S' /*letter*/,
3563  },
3564 
3565 };
3566 
3567 
3568 
3569 const extended::ZonePolicy kPolicyJapan = {
3570  1 /*numRules*/,
3571  kZoneRulesJapan /*rules*/,
3572  0 /* numLetters */,
3573  nullptr /* letters */,
3574 };
3575 
3576 //---------------------------------------------------------------------------
3577 // Policy name: Jordan
3578 // Rule count: 12
3579 // Memory (8-bit): 114
3580 // Memory (32-bit): 118
3581 //---------------------------------------------------------------------------
3582 
3583 static const extended::ZoneRule kZoneRulesJordan[] = {
3584  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3585  {
3586  -5 /*fromYearTiny*/,
3587  -2 /*toYearTiny*/,
3588  9 /*inMonth*/,
3589  5 /*onDayOfWeek*/,
3590  15 /*onDayOfMonth*/,
3591  0 /*atTimeCode*/,
3592  's' /*atTimeModifier*/,
3593  0 /*deltaCode*/,
3594  '-' /*letter*/,
3595  },
3596  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3597  {
3598  -1 /*fromYearTiny*/,
3599  -1 /*toYearTiny*/,
3600  7 /*inMonth*/,
3601  0 /*onDayOfWeek*/,
3602  1 /*onDayOfMonth*/,
3603  0 /*atTimeCode*/,
3604  's' /*atTimeModifier*/,
3605  4 /*deltaCode*/,
3606  'S' /*letter*/,
3607  },
3608  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3609  {
3610  -1 /*fromYearTiny*/,
3611  2 /*toYearTiny*/,
3612  9 /*inMonth*/,
3613  5 /*onDayOfWeek*/,
3614  0 /*onDayOfMonth*/,
3615  0 /*atTimeCode*/,
3616  's' /*atTimeModifier*/,
3617  0 /*deltaCode*/,
3618  '-' /*letter*/,
3619  },
3620  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3621  {
3622  0 /*fromYearTiny*/,
3623  1 /*toYearTiny*/,
3624  3 /*inMonth*/,
3625  4 /*onDayOfWeek*/,
3626  0 /*onDayOfMonth*/,
3627  0 /*atTimeCode*/,
3628  's' /*atTimeModifier*/,
3629  4 /*deltaCode*/,
3630  'S' /*letter*/,
3631  },
3632  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3633  {
3634  2 /*fromYearTiny*/,
3635  12 /*toYearTiny*/,
3636  3 /*inMonth*/,
3637  4 /*onDayOfWeek*/,
3638  0 /*onDayOfMonth*/,
3639  96 /*atTimeCode*/,
3640  'w' /*atTimeModifier*/,
3641  4 /*deltaCode*/,
3642  'S' /*letter*/,
3643  },
3644  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3645  {
3646  3 /*fromYearTiny*/,
3647  3 /*toYearTiny*/,
3648  10 /*inMonth*/,
3649  0 /*onDayOfWeek*/,
3650  24 /*onDayOfMonth*/,
3651  0 /*atTimeCode*/,
3652  's' /*atTimeModifier*/,
3653  0 /*deltaCode*/,
3654  '-' /*letter*/,
3655  },
3656  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3657  {
3658  4 /*fromYearTiny*/,
3659  4 /*toYearTiny*/,
3660  10 /*inMonth*/,
3661  0 /*onDayOfWeek*/,
3662  15 /*onDayOfMonth*/,
3663  0 /*atTimeCode*/,
3664  's' /*atTimeModifier*/,
3665  0 /*deltaCode*/,
3666  '-' /*letter*/,
3667  },
3668  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3669  {
3670  5 /*fromYearTiny*/,
3671  5 /*toYearTiny*/,
3672  9 /*inMonth*/,
3673  5 /*onDayOfWeek*/,
3674  0 /*onDayOfMonth*/,
3675  0 /*atTimeCode*/,
3676  's' /*atTimeModifier*/,
3677  0 /*deltaCode*/,
3678  '-' /*letter*/,
3679  },
3680  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3681  {
3682  6 /*fromYearTiny*/,
3683  11 /*toYearTiny*/,
3684  10 /*inMonth*/,
3685  5 /*onDayOfWeek*/,
3686  0 /*onDayOfMonth*/,
3687  0 /*atTimeCode*/,
3688  's' /*atTimeModifier*/,
3689  0 /*deltaCode*/,
3690  '-' /*letter*/,
3691  },
3692  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3693  {
3694  13 /*fromYearTiny*/,
3695  13 /*toYearTiny*/,
3696  12 /*inMonth*/,
3697  0 /*onDayOfWeek*/,
3698  20 /*onDayOfMonth*/,
3699  0 /*atTimeCode*/,
3700  'w' /*atTimeModifier*/,
3701  0 /*deltaCode*/,
3702  '-' /*letter*/,
3703  },
3704  // Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
3705  {
3706  14 /*fromYearTiny*/,
3707  126 /*toYearTiny*/,
3708  3 /*inMonth*/,
3709  4 /*onDayOfWeek*/,
3710  0 /*onDayOfMonth*/,
3711  96 /*atTimeCode*/,
3712  'w' /*atTimeModifier*/,
3713  4 /*deltaCode*/,
3714  'S' /*letter*/,
3715  },
3716  // Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
3717  {
3718  14 /*fromYearTiny*/,
3719  126 /*toYearTiny*/,
3720  10 /*inMonth*/,
3721  5 /*onDayOfWeek*/,
3722  0 /*onDayOfMonth*/,
3723  0 /*atTimeCode*/,
3724  's' /*atTimeModifier*/,
3725  0 /*deltaCode*/,
3726  '-' /*letter*/,
3727  },
3728 
3729 };
3730 
3731 
3732 
3733 const extended::ZonePolicy kPolicyJordan = {
3734  12 /*numRules*/,
3735  kZoneRulesJordan /*rules*/,
3736  0 /* numLetters */,
3737  nullptr /* letters */,
3738 };
3739 
3740 //---------------------------------------------------------------------------
3741 // Policy name: Kyrgyz
3742 // Rule count: 3
3743 // Memory (8-bit): 33
3744 // Memory (32-bit): 37
3745 //---------------------------------------------------------------------------
3746 
3747 static const extended::ZoneRule kZoneRulesKyrgyz[] = {
3748  // Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3749  {
3750  -8 /*fromYearTiny*/,
3751  -4 /*toYearTiny*/,
3752  9 /*inMonth*/,
3753  7 /*onDayOfWeek*/,
3754  0 /*onDayOfMonth*/,
3755  0 /*atTimeCode*/,
3756  'w' /*atTimeModifier*/,
3757  0 /*deltaCode*/,
3758  '-' /*letter*/,
3759  },
3760  // Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
3761  {
3762  -3 /*fromYearTiny*/,
3763  5 /*toYearTiny*/,
3764  3 /*inMonth*/,
3765  7 /*onDayOfWeek*/,
3766  0 /*onDayOfMonth*/,
3767  10 /*atTimeCode*/,
3768  'w' /*atTimeModifier*/,
3769  4 /*deltaCode*/,
3770  '-' /*letter*/,
3771  },
3772  // Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
3773  {
3774  -3 /*fromYearTiny*/,
3775  4 /*toYearTiny*/,
3776  10 /*inMonth*/,
3777  7 /*onDayOfWeek*/,
3778  0 /*onDayOfMonth*/,
3779  10 /*atTimeCode*/,
3780  'w' /*atTimeModifier*/,
3781  0 /*deltaCode*/,
3782  '-' /*letter*/,
3783  },
3784 
3785 };
3786 
3787 
3788 
3789 const extended::ZonePolicy kPolicyKyrgyz = {
3790  3 /*numRules*/,
3791  kZoneRulesKyrgyz /*rules*/,
3792  0 /* numLetters */,
3793  nullptr /* letters */,
3794 };
3795 
3796 //---------------------------------------------------------------------------
3797 // Policy name: LH
3798 // Rule count: 9
3799 // Memory (8-bit): 87
3800 // Memory (32-bit): 91
3801 //---------------------------------------------------------------------------
3802 
3803 static const extended::ZoneRule kZoneRulesLH[] = {
3804  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3805  {
3806  -13 /*fromYearTiny*/,
3807  -1 /*toYearTiny*/,
3808  10 /*inMonth*/,
3809  7 /*onDayOfWeek*/,
3810  0 /*onDayOfMonth*/,
3811  8 /*atTimeCode*/,
3812  'w' /*atTimeModifier*/,
3813  2 /*deltaCode*/,
3814  '-' /*letter*/,
3815  },
3816  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3817  {
3818  -10 /*fromYearTiny*/,
3819  -5 /*toYearTiny*/,
3820  3 /*inMonth*/,
3821  7 /*onDayOfWeek*/,
3822  1 /*onDayOfMonth*/,
3823  8 /*atTimeCode*/,
3824  'w' /*atTimeModifier*/,
3825  0 /*deltaCode*/,
3826  '-' /*letter*/,
3827  },
3828  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3829  {
3830  -4 /*fromYearTiny*/,
3831  5 /*toYearTiny*/,
3832  3 /*inMonth*/,
3833  7 /*onDayOfWeek*/,
3834  0 /*onDayOfMonth*/,
3835  8 /*atTimeCode*/,
3836  'w' /*atTimeModifier*/,
3837  0 /*deltaCode*/,
3838  '-' /*letter*/,
3839  },
3840  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3841  {
3842  0 /*fromYearTiny*/,
3843  0 /*toYearTiny*/,
3844  8 /*inMonth*/,
3845  7 /*onDayOfWeek*/,
3846  0 /*onDayOfMonth*/,
3847  8 /*atTimeCode*/,
3848  'w' /*atTimeModifier*/,
3849  2 /*deltaCode*/,
3850  '-' /*letter*/,
3851  },
3852  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3853  {
3854  1 /*fromYearTiny*/,
3855  7 /*toYearTiny*/,
3856  10 /*inMonth*/,
3857  7 /*onDayOfWeek*/,
3858  0 /*onDayOfMonth*/,
3859  8 /*atTimeCode*/,
3860  'w' /*atTimeModifier*/,
3861  2 /*deltaCode*/,
3862  '-' /*letter*/,
3863  },
3864  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3865  {
3866  6 /*fromYearTiny*/,
3867  6 /*toYearTiny*/,
3868  4 /*inMonth*/,
3869  7 /*onDayOfWeek*/,
3870  1 /*onDayOfMonth*/,
3871  8 /*atTimeCode*/,
3872  'w' /*atTimeModifier*/,
3873  0 /*deltaCode*/,
3874  '-' /*letter*/,
3875  },
3876  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3877  {
3878  7 /*fromYearTiny*/,
3879  7 /*toYearTiny*/,
3880  3 /*inMonth*/,
3881  7 /*onDayOfWeek*/,
3882  0 /*onDayOfMonth*/,
3883  8 /*atTimeCode*/,
3884  'w' /*atTimeModifier*/,
3885  0 /*deltaCode*/,
3886  '-' /*letter*/,
3887  },
3888  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3889  {
3890  8 /*fromYearTiny*/,
3891  126 /*toYearTiny*/,
3892  4 /*inMonth*/,
3893  7 /*onDayOfWeek*/,
3894  1 /*onDayOfMonth*/,
3895  8 /*atTimeCode*/,
3896  'w' /*atTimeModifier*/,
3897  0 /*deltaCode*/,
3898  '-' /*letter*/,
3899  },
3900  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3901  {
3902  8 /*fromYearTiny*/,
3903  126 /*toYearTiny*/,
3904  10 /*inMonth*/,
3905  7 /*onDayOfWeek*/,
3906  1 /*onDayOfMonth*/,
3907  8 /*atTimeCode*/,
3908  'w' /*atTimeModifier*/,
3909  2 /*deltaCode*/,
3910  '-' /*letter*/,
3911  },
3912 
3913 };
3914 
3915 
3916 
3917 const extended::ZonePolicy kPolicyLH = {
3918  9 /*numRules*/,
3919  kZoneRulesLH /*rules*/,
3920  0 /* numLetters */,
3921  nullptr /* letters */,
3922 };
3923 
3924 //---------------------------------------------------------------------------
3925 // Policy name: Lebanon
3926 // Rule count: 3
3927 // Memory (8-bit): 33
3928 // Memory (32-bit): 37
3929 //---------------------------------------------------------------------------
3930 
3931 static const extended::ZoneRule kZoneRulesLebanon[] = {
3932  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3933  {
3934  -7 /*fromYearTiny*/,
3935  126 /*toYearTiny*/,
3936  3 /*inMonth*/,
3937  7 /*onDayOfWeek*/,
3938  0 /*onDayOfMonth*/,
3939  0 /*atTimeCode*/,
3940  'w' /*atTimeModifier*/,
3941  4 /*deltaCode*/,
3942  'S' /*letter*/,
3943  },
3944  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3945  {
3946  -7 /*fromYearTiny*/,
3947  -2 /*toYearTiny*/,
3948  9 /*inMonth*/,
3949  7 /*onDayOfWeek*/,
3950  0 /*onDayOfMonth*/,
3951  0 /*atTimeCode*/,
3952  'w' /*atTimeModifier*/,
3953  0 /*deltaCode*/,
3954  '-' /*letter*/,
3955  },
3956  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3957  {
3958  -1 /*fromYearTiny*/,
3959  126 /*toYearTiny*/,
3960  10 /*inMonth*/,
3961  7 /*onDayOfWeek*/,
3962  0 /*onDayOfMonth*/,
3963  0 /*atTimeCode*/,
3964  'w' /*atTimeModifier*/,
3965  0 /*deltaCode*/,
3966  '-' /*letter*/,
3967  },
3968 
3969 };
3970 
3971 
3972 
3973 const extended::ZonePolicy kPolicyLebanon = {
3974  3 /*numRules*/,
3975  kZoneRulesLebanon /*rules*/,
3976  0 /* numLetters */,
3977  nullptr /* letters */,
3978 };
3979 
3980 //---------------------------------------------------------------------------
3981 // Policy name: Libya
3982 // Rule count: 3
3983 // Memory (8-bit): 33
3984 // Memory (32-bit): 37
3985 //---------------------------------------------------------------------------
3986 
3987 static const extended::ZoneRule kZoneRulesLibya[] = {
3988  // Rule Libya 1997 only - Oct 4 0:00 0 -
3989  {
3990  -3 /*fromYearTiny*/,
3991  -3 /*toYearTiny*/,
3992  10 /*inMonth*/,
3993  0 /*onDayOfWeek*/,
3994  4 /*onDayOfMonth*/,
3995  0 /*atTimeCode*/,
3996  'w' /*atTimeModifier*/,
3997  0 /*deltaCode*/,
3998  '-' /*letter*/,
3999  },
4000  // Rule Libya 2013 only - Mar lastFri 1:00 1:00 S
4001  {
4002  13 /*fromYearTiny*/,
4003  13 /*toYearTiny*/,
4004  3 /*inMonth*/,
4005  5 /*onDayOfWeek*/,
4006  0 /*onDayOfMonth*/,
4007  4 /*atTimeCode*/,
4008  'w' /*atTimeModifier*/,
4009  4 /*deltaCode*/,
4010  'S' /*letter*/,
4011  },
4012  // Rule Libya 2013 only - Oct lastFri 2:00 0 -
4013  {
4014  13 /*fromYearTiny*/,
4015  13 /*toYearTiny*/,
4016  10 /*inMonth*/,
4017  5 /*onDayOfWeek*/,
4018  0 /*onDayOfMonth*/,
4019  8 /*atTimeCode*/,
4020  'w' /*atTimeModifier*/,
4021  0 /*deltaCode*/,
4022  '-' /*letter*/,
4023  },
4024 
4025 };
4026 
4027 
4028 
4029 const extended::ZonePolicy kPolicyLibya = {
4030  3 /*numRules*/,
4031  kZoneRulesLibya /*rules*/,
4032  0 /* numLetters */,
4033  nullptr /* letters */,
4034 };
4035 
4036 //---------------------------------------------------------------------------
4037 // Policy name: Macau
4038 // Rule count: 1
4039 // Memory (8-bit): 15
4040 // Memory (32-bit): 19
4041 //---------------------------------------------------------------------------
4042 
4043 static const extended::ZoneRule kZoneRulesMacau[] = {
4044  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
4045  {
4046  -21 /*fromYearTiny*/,
4047  -21 /*toYearTiny*/,
4048  10 /*inMonth*/,
4049  7 /*onDayOfWeek*/,
4050  16 /*onDayOfMonth*/,
4051  14 /*atTimeCode*/,
4052  'w' /*atTimeModifier*/,
4053  0 /*deltaCode*/,
4054  'S' /*letter*/,
4055  },
4056 
4057 };
4058 
4059 
4060 
4061 const extended::ZonePolicy kPolicyMacau = {
4062  1 /*numRules*/,
4063  kZoneRulesMacau /*rules*/,
4064  0 /* numLetters */,
4065  nullptr /* letters */,
4066 };
4067 
4068 //---------------------------------------------------------------------------
4069 // Policy name: Mauritius
4070 // Rule count: 3
4071 // Memory (8-bit): 33
4072 // Memory (32-bit): 37
4073 //---------------------------------------------------------------------------
4074 
4075 static const extended::ZoneRule kZoneRulesMauritius[] = {
4076  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
4077  {
4078  -17 /*fromYearTiny*/,
4079  -17 /*toYearTiny*/,
4080  3 /*inMonth*/,
4081  0 /*onDayOfWeek*/,
4082  21 /*onDayOfMonth*/,
4083  0 /*atTimeCode*/,
4084  'w' /*atTimeModifier*/,
4085  0 /*deltaCode*/,
4086  '-' /*letter*/,
4087  },
4088  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
4089  {
4090  8 /*fromYearTiny*/,
4091  8 /*toYearTiny*/,
4092  10 /*inMonth*/,
4093  7 /*onDayOfWeek*/,
4094  0 /*onDayOfMonth*/,
4095  8 /*atTimeCode*/,
4096  'w' /*atTimeModifier*/,
4097  4 /*deltaCode*/,
4098  '-' /*letter*/,
4099  },
4100  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
4101  {
4102  9 /*fromYearTiny*/,
4103  9 /*toYearTiny*/,
4104  3 /*inMonth*/,
4105  7 /*onDayOfWeek*/,
4106  0 /*onDayOfMonth*/,
4107  8 /*atTimeCode*/,
4108  'w' /*atTimeModifier*/,
4109  0 /*deltaCode*/,
4110  '-' /*letter*/,
4111  },
4112 
4113 };
4114 
4115 
4116 
4117 const extended::ZonePolicy kPolicyMauritius = {
4118  3 /*numRules*/,
4119  kZoneRulesMauritius /*rules*/,
4120  0 /* numLetters */,
4121  nullptr /* letters */,
4122 };
4123 
4124 //---------------------------------------------------------------------------
4125 // Policy name: Mexico
4126 // Rule count: 7
4127 // Memory (8-bit): 69
4128 // Memory (32-bit): 73
4129 //---------------------------------------------------------------------------
4130 
4131 static const extended::ZoneRule kZoneRulesMexico[] = {
4132  // Rule Mexico 1950 only - Jul 30 0:00 0 S
4133  {
4134  -50 /*fromYearTiny*/,
4135  -50 /*toYearTiny*/,
4136  7 /*inMonth*/,
4137  0 /*onDayOfWeek*/,
4138  30 /*onDayOfMonth*/,
4139  0 /*atTimeCode*/,
4140  'w' /*atTimeModifier*/,
4141  0 /*deltaCode*/,
4142  'S' /*letter*/,
4143  },
4144  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
4145  {
4146  -4 /*fromYearTiny*/,
4147  0 /*toYearTiny*/,
4148  4 /*inMonth*/,
4149  7 /*onDayOfWeek*/,
4150  1 /*onDayOfMonth*/,
4151  8 /*atTimeCode*/,
4152  'w' /*atTimeModifier*/,
4153  4 /*deltaCode*/,
4154  'D' /*letter*/,
4155  },
4156  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
4157  {
4158  -4 /*fromYearTiny*/,
4159  0 /*toYearTiny*/,
4160  10 /*inMonth*/,
4161  7 /*onDayOfWeek*/,
4162  0 /*onDayOfMonth*/,
4163  8 /*atTimeCode*/,
4164  'w' /*atTimeModifier*/,
4165  0 /*deltaCode*/,
4166  'S' /*letter*/,
4167  },
4168  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
4169  {
4170  1 /*fromYearTiny*/,
4171  1 /*toYearTiny*/,
4172  5 /*inMonth*/,
4173  7 /*onDayOfWeek*/,
4174  1 /*onDayOfMonth*/,
4175  8 /*atTimeCode*/,
4176  'w' /*atTimeModifier*/,
4177  4 /*deltaCode*/,
4178  'D' /*letter*/,
4179  },
4180  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
4181  {
4182  1 /*fromYearTiny*/,
4183  1 /*toYearTiny*/,
4184  9 /*inMonth*/,
4185  7 /*onDayOfWeek*/,
4186  0 /*onDayOfMonth*/,
4187  8 /*atTimeCode*/,
4188  'w' /*atTimeModifier*/,
4189  0 /*deltaCode*/,
4190  'S' /*letter*/,
4191  },
4192  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
4193  {
4194  2 /*fromYearTiny*/,
4195  126 /*toYearTiny*/,
4196  4 /*inMonth*/,
4197  7 /*onDayOfWeek*/,
4198  1 /*onDayOfMonth*/,
4199  8 /*atTimeCode*/,
4200  'w' /*atTimeModifier*/,
4201  4 /*deltaCode*/,
4202  'D' /*letter*/,
4203  },
4204  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
4205  {
4206  2 /*fromYearTiny*/,
4207  126 /*toYearTiny*/,
4208  10 /*inMonth*/,
4209  7 /*onDayOfWeek*/,
4210  0 /*onDayOfMonth*/,
4211  8 /*atTimeCode*/,
4212  'w' /*atTimeModifier*/,
4213  0 /*deltaCode*/,
4214  'S' /*letter*/,
4215  },
4216 
4217 };
4218 
4219 
4220 
4221 const extended::ZonePolicy kPolicyMexico = {
4222  7 /*numRules*/,
4223  kZoneRulesMexico /*rules*/,
4224  0 /* numLetters */,
4225  nullptr /* letters */,
4226 };
4227 
4228 //---------------------------------------------------------------------------
4229 // Policy name: Moldova
4230 // Rule count: 2
4231 // Memory (8-bit): 24
4232 // Memory (32-bit): 28
4233 //---------------------------------------------------------------------------
4234 
4235 static const extended::ZoneRule kZoneRulesMoldova[] = {
4236  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
4237  {
4238  -3 /*fromYearTiny*/,
4239  126 /*toYearTiny*/,
4240  3 /*inMonth*/,
4241  7 /*onDayOfWeek*/,
4242  0 /*onDayOfMonth*/,
4243  8 /*atTimeCode*/,
4244  'w' /*atTimeModifier*/,
4245  4 /*deltaCode*/,
4246  'S' /*letter*/,
4247  },
4248  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4249  {
4250  -3 /*fromYearTiny*/,
4251  126 /*toYearTiny*/,
4252  10 /*inMonth*/,
4253  7 /*onDayOfWeek*/,
4254  0 /*onDayOfMonth*/,
4255  12 /*atTimeCode*/,
4256  'w' /*atTimeModifier*/,
4257  0 /*deltaCode*/,
4258  '-' /*letter*/,
4259  },
4260 
4261 };
4262 
4263 
4264 
4265 const extended::ZonePolicy kPolicyMoldova = {
4266  2 /*numRules*/,
4267  kZoneRulesMoldova /*rules*/,
4268  0 /* numLetters */,
4269  nullptr /* letters */,
4270 };
4271 
4272 //---------------------------------------------------------------------------
4273 // Policy name: Moncton
4274 // Rule count: 3
4275 // Memory (8-bit): 33
4276 // Memory (32-bit): 37
4277 //---------------------------------------------------------------------------
4278 
4279 static const extended::ZoneRule kZoneRulesMoncton[] = {
4280  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4281  {
4282  -43 /*fromYearTiny*/,
4283  -28 /*toYearTiny*/,
4284  10 /*inMonth*/,
4285  7 /*onDayOfWeek*/,
4286  0 /*onDayOfMonth*/,
4287  8 /*atTimeCode*/,
4288  'w' /*atTimeModifier*/,
4289  0 /*deltaCode*/,
4290  'S' /*letter*/,
4291  },
4292  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
4293  {
4294  -7 /*fromYearTiny*/,
4295  6 /*toYearTiny*/,
4296  4 /*inMonth*/,
4297  7 /*onDayOfWeek*/,
4298  1 /*onDayOfMonth*/,
4299  0 /*atTimeCode*/,
4300  'w' /*atTimeModifier*/,
4301  4 /*deltaCode*/,
4302  'D' /*letter*/,
4303  },
4304  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
4305  {
4306  -7 /*fromYearTiny*/,
4307  6 /*toYearTiny*/,
4308  10 /*inMonth*/,
4309  7 /*onDayOfWeek*/,
4310  0 /*onDayOfMonth*/,
4311  0 /*atTimeCode*/,
4312  'w' /*atTimeModifier*/,
4313  0 /*deltaCode*/,
4314  'S' /*letter*/,
4315  },
4316 
4317 };
4318 
4319 
4320 
4321 const extended::ZonePolicy kPolicyMoncton = {
4322  3 /*numRules*/,
4323  kZoneRulesMoncton /*rules*/,
4324  0 /* numLetters */,
4325  nullptr /* letters */,
4326 };
4327 
4328 //---------------------------------------------------------------------------
4329 // Policy name: Mongol
4330 // Rule count: 6
4331 // Memory (8-bit): 60
4332 // Memory (32-bit): 64
4333 //---------------------------------------------------------------------------
4334 
4335 static const extended::ZoneRule kZoneRulesMongol[] = {
4336  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4337  {
4338  -16 /*fromYearTiny*/,
4339  -2 /*toYearTiny*/,
4340  9 /*inMonth*/,
4341  7 /*onDayOfWeek*/,
4342  0 /*onDayOfMonth*/,
4343  0 /*atTimeCode*/,
4344  'w' /*atTimeModifier*/,
4345  0 /*deltaCode*/,
4346  '-' /*letter*/,
4347  },
4348  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
4349  {
4350  1 /*fromYearTiny*/,
4351  1 /*toYearTiny*/,
4352  4 /*inMonth*/,
4353  6 /*onDayOfWeek*/,
4354  0 /*onDayOfMonth*/,
4355  8 /*atTimeCode*/,
4356  'w' /*atTimeModifier*/,
4357  4 /*deltaCode*/,
4358  '-' /*letter*/,
4359  },
4360  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
4361  {
4362  1 /*fromYearTiny*/,
4363  6 /*toYearTiny*/,
4364  9 /*inMonth*/,
4365  6 /*onDayOfWeek*/,
4366  0 /*onDayOfMonth*/,
4367  8 /*atTimeCode*/,
4368  'w' /*atTimeModifier*/,
4369  0 /*deltaCode*/,
4370  '-' /*letter*/,
4371  },
4372  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
4373  {
4374  2 /*fromYearTiny*/,
4375  6 /*toYearTiny*/,
4376  3 /*inMonth*/,
4377  6 /*onDayOfWeek*/,
4378  0 /*onDayOfMonth*/,
4379  8 /*atTimeCode*/,
4380  'w' /*atTimeModifier*/,
4381  4 /*deltaCode*/,
4382  '-' /*letter*/,
4383  },
4384  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
4385  {
4386  15 /*fromYearTiny*/,
4387  16 /*toYearTiny*/,
4388  3 /*inMonth*/,
4389  6 /*onDayOfWeek*/,
4390  0 /*onDayOfMonth*/,
4391  8 /*atTimeCode*/,
4392  'w' /*atTimeModifier*/,
4393  4 /*deltaCode*/,
4394  '-' /*letter*/,
4395  },
4396  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4397  {
4398  15 /*fromYearTiny*/,
4399  16 /*toYearTiny*/,
4400  9 /*inMonth*/,
4401  6 /*onDayOfWeek*/,
4402  0 /*onDayOfMonth*/,
4403  0 /*atTimeCode*/,
4404  'w' /*atTimeModifier*/,
4405  0 /*deltaCode*/,
4406  '-' /*letter*/,
4407  },
4408 
4409 };
4410 
4411 
4412 
4413 const extended::ZonePolicy kPolicyMongol = {
4414  6 /*numRules*/,
4415  kZoneRulesMongol /*rules*/,
4416  0 /* numLetters */,
4417  nullptr /* letters */,
4418 };
4419 
4420 //---------------------------------------------------------------------------
4421 // Policy name: Morocco
4422 // Rule count: 67
4423 // Memory (8-bit): 609
4424 // Memory (32-bit): 613
4425 //---------------------------------------------------------------------------
4426 
4427 static const extended::ZoneRule kZoneRulesMorocco[] = {
4428  // Rule Morocco 1978 only - Aug 4 0:00 0 -
4429  {
4430  -22 /*fromYearTiny*/,
4431  -22 /*toYearTiny*/,
4432  8 /*inMonth*/,
4433  0 /*onDayOfWeek*/,
4434  4 /*onDayOfMonth*/,
4435  0 /*atTimeCode*/,
4436  'w' /*atTimeModifier*/,
4437  0 /*deltaCode*/,
4438  '-' /*letter*/,
4439  },
4440  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
4441  {
4442  8 /*fromYearTiny*/,
4443  8 /*toYearTiny*/,
4444  6 /*inMonth*/,
4445  0 /*onDayOfWeek*/,
4446  1 /*onDayOfMonth*/,
4447  0 /*atTimeCode*/,
4448  'w' /*atTimeModifier*/,
4449  4 /*deltaCode*/,
4450  '-' /*letter*/,
4451  },
4452  // Rule Morocco 2008 only - Sep 1 0:00 0 -
4453  {
4454  8 /*fromYearTiny*/,
4455  8 /*toYearTiny*/,
4456  9 /*inMonth*/,
4457  0 /*onDayOfWeek*/,
4458  1 /*onDayOfMonth*/,
4459  0 /*atTimeCode*/,
4460  'w' /*atTimeModifier*/,
4461  0 /*deltaCode*/,
4462  '-' /*letter*/,
4463  },
4464  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
4465  {
4466  9 /*fromYearTiny*/,
4467  9 /*toYearTiny*/,
4468  6 /*inMonth*/,
4469  0 /*onDayOfWeek*/,
4470  1 /*onDayOfMonth*/,
4471  0 /*atTimeCode*/,
4472  'w' /*atTimeModifier*/,
4473  4 /*deltaCode*/,
4474  '-' /*letter*/,
4475  },
4476  // Rule Morocco 2009 only - Aug 21 0:00 0 -
4477  {
4478  9 /*fromYearTiny*/,
4479  9 /*toYearTiny*/,
4480  8 /*inMonth*/,
4481  0 /*onDayOfWeek*/,
4482  21 /*onDayOfMonth*/,
4483  0 /*atTimeCode*/,
4484  'w' /*atTimeModifier*/,
4485  0 /*deltaCode*/,
4486  '-' /*letter*/,
4487  },
4488  // Rule Morocco 2010 only - May 2 0:00 1:00 -
4489  {
4490  10 /*fromYearTiny*/,
4491  10 /*toYearTiny*/,
4492  5 /*inMonth*/,
4493  0 /*onDayOfWeek*/,
4494  2 /*onDayOfMonth*/,
4495  0 /*atTimeCode*/,
4496  'w' /*atTimeModifier*/,
4497  4 /*deltaCode*/,
4498  '-' /*letter*/,
4499  },
4500  // Rule Morocco 2010 only - Aug 8 0:00 0 -
4501  {
4502  10 /*fromYearTiny*/,
4503  10 /*toYearTiny*/,
4504  8 /*inMonth*/,
4505  0 /*onDayOfWeek*/,
4506  8 /*onDayOfMonth*/,
4507  0 /*atTimeCode*/,
4508  'w' /*atTimeModifier*/,
4509  0 /*deltaCode*/,
4510  '-' /*letter*/,
4511  },
4512  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
4513  {
4514  11 /*fromYearTiny*/,
4515  11 /*toYearTiny*/,
4516  4 /*inMonth*/,
4517  0 /*onDayOfWeek*/,
4518  3 /*onDayOfMonth*/,
4519  0 /*atTimeCode*/,
4520  'w' /*atTimeModifier*/,
4521  4 /*deltaCode*/,
4522  '-' /*letter*/,
4523  },
4524  // Rule Morocco 2011 only - Jul 31 0:00 0 -
4525  {
4526  11 /*fromYearTiny*/,
4527  11 /*toYearTiny*/,
4528  7 /*inMonth*/,
4529  0 /*onDayOfWeek*/,
4530  31 /*onDayOfMonth*/,
4531  0 /*atTimeCode*/,
4532  'w' /*atTimeModifier*/,
4533  0 /*deltaCode*/,
4534  '-' /*letter*/,
4535  },
4536  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
4537  {
4538  12 /*fromYearTiny*/,
4539  13 /*toYearTiny*/,
4540  4 /*inMonth*/,
4541  7 /*onDayOfWeek*/,
4542  0 /*onDayOfMonth*/,
4543  8 /*atTimeCode*/,
4544  'w' /*atTimeModifier*/,
4545  4 /*deltaCode*/,
4546  '-' /*letter*/,
4547  },
4548  // Rule Morocco 2012 only - Jul 20 3:00 0 -
4549  {
4550  12 /*fromYearTiny*/,
4551  12 /*toYearTiny*/,
4552  7 /*inMonth*/,
4553  0 /*onDayOfWeek*/,
4554  20 /*onDayOfMonth*/,
4555  12 /*atTimeCode*/,
4556  'w' /*atTimeModifier*/,
4557  0 /*deltaCode*/,
4558  '-' /*letter*/,
4559  },
4560  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
4561  {
4562  12 /*fromYearTiny*/,
4563  12 /*toYearTiny*/,
4564  8 /*inMonth*/,
4565  0 /*onDayOfWeek*/,
4566  20 /*onDayOfMonth*/,
4567  8 /*atTimeCode*/,
4568  'w' /*atTimeModifier*/,
4569  4 /*deltaCode*/,
4570  '-' /*letter*/,
4571  },
4572  // Rule Morocco 2012 only - Sep 30 3:00 0 -
4573  {
4574  12 /*fromYearTiny*/,
4575  12 /*toYearTiny*/,
4576  9 /*inMonth*/,
4577  0 /*onDayOfWeek*/,
4578  30 /*onDayOfMonth*/,
4579  12 /*atTimeCode*/,
4580  'w' /*atTimeModifier*/,
4581  0 /*deltaCode*/,
4582  '-' /*letter*/,
4583  },
4584  // Rule Morocco 2013 only - Jul 7 3:00 0 -
4585  {
4586  13 /*fromYearTiny*/,
4587  13 /*toYearTiny*/,
4588  7 /*inMonth*/,
4589  0 /*onDayOfWeek*/,
4590  7 /*onDayOfMonth*/,
4591  12 /*atTimeCode*/,
4592  'w' /*atTimeModifier*/,
4593  0 /*deltaCode*/,
4594  '-' /*letter*/,
4595  },
4596  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
4597  {
4598  13 /*fromYearTiny*/,
4599  13 /*toYearTiny*/,
4600  8 /*inMonth*/,
4601  0 /*onDayOfWeek*/,
4602  10 /*onDayOfMonth*/,
4603  8 /*atTimeCode*/,
4604  'w' /*atTimeModifier*/,
4605  4 /*deltaCode*/,
4606  '-' /*letter*/,
4607  },
4608  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
4609  {
4610  13 /*fromYearTiny*/,
4611  18 /*toYearTiny*/,
4612  10 /*inMonth*/,
4613  7 /*onDayOfWeek*/,
4614  0 /*onDayOfMonth*/,
4615  12 /*atTimeCode*/,
4616  'w' /*atTimeModifier*/,
4617  0 /*deltaCode*/,
4618  '-' /*letter*/,
4619  },
4620  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
4621  {
4622  14 /*fromYearTiny*/,
4623  18 /*toYearTiny*/,
4624  3 /*inMonth*/,
4625  7 /*onDayOfWeek*/,
4626  0 /*onDayOfMonth*/,
4627  8 /*atTimeCode*/,
4628  'w' /*atTimeModifier*/,
4629  4 /*deltaCode*/,
4630  '-' /*letter*/,
4631  },
4632  // Rule Morocco 2014 only - Jun 28 3:00 0 -
4633  {
4634  14 /*fromYearTiny*/,
4635  14 /*toYearTiny*/,
4636  6 /*inMonth*/,
4637  0 /*onDayOfWeek*/,
4638  28 /*onDayOfMonth*/,
4639  12 /*atTimeCode*/,
4640  'w' /*atTimeModifier*/,
4641  0 /*deltaCode*/,
4642  '-' /*letter*/,
4643  },
4644  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
4645  {
4646  14 /*fromYearTiny*/,
4647  14 /*toYearTiny*/,
4648  8 /*inMonth*/,
4649  0 /*onDayOfWeek*/,
4650  2 /*onDayOfMonth*/,
4651  8 /*atTimeCode*/,
4652  'w' /*atTimeModifier*/,
4653  4 /*deltaCode*/,
4654  '-' /*letter*/,
4655  },
4656  // Rule Morocco 2015 only - Jun 14 3:00 0 -
4657  {
4658  15 /*fromYearTiny*/,
4659  15 /*toYearTiny*/,
4660  6 /*inMonth*/,
4661  0 /*onDayOfWeek*/,
4662  14 /*onDayOfMonth*/,
4663  12 /*atTimeCode*/,
4664  'w' /*atTimeModifier*/,
4665  0 /*deltaCode*/,
4666  '-' /*letter*/,
4667  },
4668  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
4669  {
4670  15 /*fromYearTiny*/,
4671  15 /*toYearTiny*/,
4672  7 /*inMonth*/,
4673  0 /*onDayOfWeek*/,
4674  19 /*onDayOfMonth*/,
4675  8 /*atTimeCode*/,
4676  'w' /*atTimeModifier*/,
4677  4 /*deltaCode*/,
4678  '-' /*letter*/,
4679  },
4680  // Rule Morocco 2016 only - Jun 5 3:00 0 -
4681  {
4682  16 /*fromYearTiny*/,
4683  16 /*toYearTiny*/,
4684  6 /*inMonth*/,
4685  0 /*onDayOfWeek*/,
4686  5 /*onDayOfMonth*/,
4687  12 /*atTimeCode*/,
4688  'w' /*atTimeModifier*/,
4689  0 /*deltaCode*/,
4690  '-' /*letter*/,
4691  },
4692  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
4693  {
4694  16 /*fromYearTiny*/,
4695  16 /*toYearTiny*/,
4696  7 /*inMonth*/,
4697  0 /*onDayOfWeek*/,
4698  10 /*onDayOfMonth*/,
4699  8 /*atTimeCode*/,
4700  'w' /*atTimeModifier*/,
4701  4 /*deltaCode*/,
4702  '-' /*letter*/,
4703  },
4704  // Rule Morocco 2017 only - May 21 3:00 0 -
4705  {
4706  17 /*fromYearTiny*/,
4707  17 /*toYearTiny*/,
4708  5 /*inMonth*/,
4709  0 /*onDayOfWeek*/,
4710  21 /*onDayOfMonth*/,
4711  12 /*atTimeCode*/,
4712  'w' /*atTimeModifier*/,
4713  0 /*deltaCode*/,
4714  '-' /*letter*/,
4715  },
4716  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
4717  {
4718  17 /*fromYearTiny*/,
4719  17 /*toYearTiny*/,
4720  7 /*inMonth*/,
4721  0 /*onDayOfWeek*/,
4722  2 /*onDayOfMonth*/,
4723  8 /*atTimeCode*/,
4724  'w' /*atTimeModifier*/,
4725  4 /*deltaCode*/,
4726  '-' /*letter*/,
4727  },
4728  // Rule Morocco 2018 only - May 13 3:00 0 -
4729  {
4730  18 /*fromYearTiny*/,
4731  18 /*toYearTiny*/,
4732  5 /*inMonth*/,
4733  0 /*onDayOfWeek*/,
4734  13 /*onDayOfMonth*/,
4735  12 /*atTimeCode*/,
4736  'w' /*atTimeModifier*/,
4737  0 /*deltaCode*/,
4738  '-' /*letter*/,
4739  },
4740  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
4741  {
4742  18 /*fromYearTiny*/,
4743  18 /*toYearTiny*/,
4744  6 /*inMonth*/,
4745  0 /*onDayOfWeek*/,
4746  17 /*onDayOfMonth*/,
4747  8 /*atTimeCode*/,
4748  'w' /*atTimeModifier*/,
4749  4 /*deltaCode*/,
4750  '-' /*letter*/,
4751  },
4752  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
4753  {
4754  19 /*fromYearTiny*/,
4755  19 /*toYearTiny*/,
4756  5 /*inMonth*/,
4757  0 /*onDayOfWeek*/,
4758  5 /*onDayOfMonth*/,
4759  12 /*atTimeCode*/,
4760  'w' /*atTimeModifier*/,
4761  -4 /*deltaCode*/,
4762  '-' /*letter*/,
4763  },
4764  // Rule Morocco 2019 only - Jun 9 2:00 0 -
4765  {
4766  19 /*fromYearTiny*/,
4767  19 /*toYearTiny*/,
4768  6 /*inMonth*/,
4769  0 /*onDayOfWeek*/,
4770  9 /*onDayOfMonth*/,
4771  8 /*atTimeCode*/,
4772  'w' /*atTimeModifier*/,
4773  0 /*deltaCode*/,
4774  '-' /*letter*/,
4775  },
4776  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
4777  {
4778  20 /*fromYearTiny*/,
4779  20 /*toYearTiny*/,
4780  4 /*inMonth*/,
4781  0 /*onDayOfWeek*/,
4782  19 /*onDayOfMonth*/,
4783  12 /*atTimeCode*/,
4784  'w' /*atTimeModifier*/,
4785  -4 /*deltaCode*/,
4786  '-' /*letter*/,
4787  },
4788  // Rule Morocco 2020 only - May 24 2:00 0 -
4789  {
4790  20 /*fromYearTiny*/,
4791  20 /*toYearTiny*/,
4792  5 /*inMonth*/,
4793  0 /*onDayOfWeek*/,
4794  24 /*onDayOfMonth*/,
4795  8 /*atTimeCode*/,
4796  'w' /*atTimeModifier*/,
4797  0 /*deltaCode*/,
4798  '-' /*letter*/,
4799  },
4800  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
4801  {
4802  21 /*fromYearTiny*/,
4803  21 /*toYearTiny*/,
4804  4 /*inMonth*/,
4805  0 /*onDayOfWeek*/,
4806  11 /*onDayOfMonth*/,
4807  12 /*atTimeCode*/,
4808  'w' /*atTimeModifier*/,
4809  -4 /*deltaCode*/,
4810  '-' /*letter*/,
4811  },
4812  // Rule Morocco 2021 only - May 16 2:00 0 -
4813  {
4814  21 /*fromYearTiny*/,
4815  21 /*toYearTiny*/,
4816  5 /*inMonth*/,
4817  0 /*onDayOfWeek*/,
4818  16 /*onDayOfMonth*/,
4819  8 /*atTimeCode*/,
4820  'w' /*atTimeModifier*/,
4821  0 /*deltaCode*/,
4822  '-' /*letter*/,
4823  },
4824  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
4825  {
4826  22 /*fromYearTiny*/,
4827  22 /*toYearTiny*/,
4828  3 /*inMonth*/,
4829  0 /*onDayOfWeek*/,
4830  27 /*onDayOfMonth*/,
4831  12 /*atTimeCode*/,
4832  'w' /*atTimeModifier*/,
4833  -4 /*deltaCode*/,
4834  '-' /*letter*/,
4835  },
4836  // Rule Morocco 2022 only - May 8 2:00 0 -
4837  {
4838  22 /*fromYearTiny*/,
4839  22 /*toYearTiny*/,
4840  5 /*inMonth*/,
4841  0 /*onDayOfWeek*/,
4842  8 /*onDayOfMonth*/,
4843  8 /*atTimeCode*/,
4844  'w' /*atTimeModifier*/,
4845  0 /*deltaCode*/,
4846  '-' /*letter*/,
4847  },
4848  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
4849  {
4850  23 /*fromYearTiny*/,
4851  23 /*toYearTiny*/,
4852  3 /*inMonth*/,
4853  0 /*onDayOfWeek*/,
4854  19 /*onDayOfMonth*/,
4855  12 /*atTimeCode*/,
4856  'w' /*atTimeModifier*/,
4857  -4 /*deltaCode*/,
4858  '-' /*letter*/,
4859  },
4860  // Rule Morocco 2023 only - Apr 23 2:00 0 -
4861  {
4862  23 /*fromYearTiny*/,
4863  23 /*toYearTiny*/,
4864  4 /*inMonth*/,
4865  0 /*onDayOfWeek*/,
4866  23 /*onDayOfMonth*/,
4867  8 /*atTimeCode*/,
4868  'w' /*atTimeModifier*/,
4869  0 /*deltaCode*/,
4870  '-' /*letter*/,
4871  },
4872  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
4873  {
4874  24 /*fromYearTiny*/,
4875  24 /*toYearTiny*/,
4876  3 /*inMonth*/,
4877  0 /*onDayOfWeek*/,
4878  10 /*onDayOfMonth*/,
4879  12 /*atTimeCode*/,
4880  'w' /*atTimeModifier*/,
4881  -4 /*deltaCode*/,
4882  '-' /*letter*/,
4883  },
4884  // Rule Morocco 2024 only - Apr 14 2:00 0 -
4885  {
4886  24 /*fromYearTiny*/,
4887  24 /*toYearTiny*/,
4888  4 /*inMonth*/,
4889  0 /*onDayOfWeek*/,
4890  14 /*onDayOfMonth*/,
4891  8 /*atTimeCode*/,
4892  'w' /*atTimeModifier*/,
4893  0 /*deltaCode*/,
4894  '-' /*letter*/,
4895  },
4896  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
4897  {
4898  25 /*fromYearTiny*/,
4899  25 /*toYearTiny*/,
4900  2 /*inMonth*/,
4901  0 /*onDayOfWeek*/,
4902  23 /*onDayOfMonth*/,
4903  12 /*atTimeCode*/,
4904  'w' /*atTimeModifier*/,
4905  -4 /*deltaCode*/,
4906  '-' /*letter*/,
4907  },
4908  // Rule Morocco 2025 only - Apr 6 2:00 0 -
4909  {
4910  25 /*fromYearTiny*/,
4911  25 /*toYearTiny*/,
4912  4 /*inMonth*/,
4913  0 /*onDayOfWeek*/,
4914  6 /*onDayOfMonth*/,
4915  8 /*atTimeCode*/,
4916  'w' /*atTimeModifier*/,
4917  0 /*deltaCode*/,
4918  '-' /*letter*/,
4919  },
4920  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
4921  {
4922  26 /*fromYearTiny*/,
4923  26 /*toYearTiny*/,
4924  2 /*inMonth*/,
4925  0 /*onDayOfWeek*/,
4926  15 /*onDayOfMonth*/,
4927  12 /*atTimeCode*/,
4928  'w' /*atTimeModifier*/,
4929  -4 /*deltaCode*/,
4930  '-' /*letter*/,
4931  },
4932  // Rule Morocco 2026 only - Mar 22 2:00 0 -
4933  {
4934  26 /*fromYearTiny*/,
4935  26 /*toYearTiny*/,
4936  3 /*inMonth*/,
4937  0 /*onDayOfWeek*/,
4938  22 /*onDayOfMonth*/,
4939  8 /*atTimeCode*/,
4940  'w' /*atTimeModifier*/,
4941  0 /*deltaCode*/,
4942  '-' /*letter*/,
4943  },
4944  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
4945  {
4946  27 /*fromYearTiny*/,
4947  27 /*toYearTiny*/,
4948  2 /*inMonth*/,
4949  0 /*onDayOfWeek*/,
4950  7 /*onDayOfMonth*/,
4951  12 /*atTimeCode*/,
4952  'w' /*atTimeModifier*/,
4953  -4 /*deltaCode*/,
4954  '-' /*letter*/,
4955  },
4956  // Rule Morocco 2027 only - Mar 14 2:00 0 -
4957  {
4958  27 /*fromYearTiny*/,
4959  27 /*toYearTiny*/,
4960  3 /*inMonth*/,
4961  0 /*onDayOfWeek*/,
4962  14 /*onDayOfMonth*/,
4963  8 /*atTimeCode*/,
4964  'w' /*atTimeModifier*/,
4965  0 /*deltaCode*/,
4966  '-' /*letter*/,
4967  },
4968  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
4969  {
4970  28 /*fromYearTiny*/,
4971  28 /*toYearTiny*/,
4972  1 /*inMonth*/,
4973  0 /*onDayOfWeek*/,
4974  23 /*onDayOfMonth*/,
4975  12 /*atTimeCode*/,
4976  'w' /*atTimeModifier*/,
4977  -4 /*deltaCode*/,
4978  '-' /*letter*/,
4979  },
4980  // Rule Morocco 2028 only - Feb 27 2:00 0 -
4981  {
4982  28 /*fromYearTiny*/,
4983  28 /*toYearTiny*/,
4984  2 /*inMonth*/,
4985  0 /*onDayOfWeek*/,
4986  27 /*onDayOfMonth*/,
4987  8 /*atTimeCode*/,
4988  'w' /*atTimeModifier*/,
4989  0 /*deltaCode*/,
4990  '-' /*letter*/,
4991  },
4992  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
4993  {
4994  29 /*fromYearTiny*/,
4995  29 /*toYearTiny*/,
4996  1 /*inMonth*/,
4997  0 /*onDayOfWeek*/,
4998  14 /*onDayOfMonth*/,
4999  12 /*atTimeCode*/,
5000  'w' /*atTimeModifier*/,
5001  -4 /*deltaCode*/,
5002  '-' /*letter*/,
5003  },
5004  // Rule Morocco 2029 only - Feb 18 2:00 0 -
5005  {
5006  29 /*fromYearTiny*/,
5007  29 /*toYearTiny*/,
5008  2 /*inMonth*/,
5009  0 /*onDayOfWeek*/,
5010  18 /*onDayOfMonth*/,
5011  8 /*atTimeCode*/,
5012  'w' /*atTimeModifier*/,
5013  0 /*deltaCode*/,
5014  '-' /*letter*/,
5015  },
5016  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
5017  {
5018  29 /*fromYearTiny*/,
5019  29 /*toYearTiny*/,
5020  12 /*inMonth*/,
5021  0 /*onDayOfWeek*/,
5022  30 /*onDayOfMonth*/,
5023  12 /*atTimeCode*/,
5024  'w' /*atTimeModifier*/,
5025  -4 /*deltaCode*/,
5026  '-' /*letter*/,
5027  },
5028  // Rule Morocco 2030 only - Feb 10 2:00 0 -
5029  {
5030  30 /*fromYearTiny*/,
5031  30 /*toYearTiny*/,
5032  2 /*inMonth*/,
5033  0 /*onDayOfWeek*/,
5034  10 /*onDayOfMonth*/,
5035  8 /*atTimeCode*/,
5036  'w' /*atTimeModifier*/,
5037  0 /*deltaCode*/,
5038  '-' /*letter*/,
5039  },
5040  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
5041  {
5042  30 /*fromYearTiny*/,
5043  30 /*toYearTiny*/,
5044  12 /*inMonth*/,
5045  0 /*onDayOfWeek*/,
5046  22 /*onDayOfMonth*/,
5047  12 /*atTimeCode*/,
5048  'w' /*atTimeModifier*/,
5049  -4 /*deltaCode*/,
5050  '-' /*letter*/,
5051  },
5052  // Rule Morocco 2031 only - Jan 26 2:00 0 -
5053  {
5054  31 /*fromYearTiny*/,
5055  31 /*toYearTiny*/,
5056  1 /*inMonth*/,
5057  0 /*onDayOfWeek*/,
5058  26 /*onDayOfMonth*/,
5059  8 /*atTimeCode*/,
5060  'w' /*atTimeModifier*/,
5061  0 /*deltaCode*/,
5062  '-' /*letter*/,
5063  },
5064  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
5065  {
5066  31 /*fromYearTiny*/,
5067  31 /*toYearTiny*/,
5068  12 /*inMonth*/,
5069  0 /*onDayOfWeek*/,
5070  14 /*onDayOfMonth*/,
5071  12 /*atTimeCode*/,
5072  'w' /*atTimeModifier*/,
5073  -4 /*deltaCode*/,
5074  '-' /*letter*/,
5075  },
5076  // Rule Morocco 2032 only - Jan 18 2:00 0 -
5077  {
5078  32 /*fromYearTiny*/,
5079  32 /*toYearTiny*/,
5080  1 /*inMonth*/,
5081  0 /*onDayOfWeek*/,
5082  18 /*onDayOfMonth*/,
5083  8 /*atTimeCode*/,
5084  'w' /*atTimeModifier*/,
5085  0 /*deltaCode*/,
5086  '-' /*letter*/,
5087  },
5088  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
5089  {
5090  32 /*fromYearTiny*/,
5091  32 /*toYearTiny*/,
5092  11 /*inMonth*/,
5093  0 /*onDayOfWeek*/,
5094  28 /*onDayOfMonth*/,
5095  12 /*atTimeCode*/,
5096  'w' /*atTimeModifier*/,
5097  -4 /*deltaCode*/,
5098  '-' /*letter*/,
5099  },
5100  // Rule Morocco 2033 only - Jan 9 2:00 0 -
5101  {
5102  33 /*fromYearTiny*/,
5103  33 /*toYearTiny*/,
5104  1 /*inMonth*/,
5105  0 /*onDayOfWeek*/,
5106  9 /*onDayOfMonth*/,
5107  8 /*atTimeCode*/,
5108  'w' /*atTimeModifier*/,
5109  0 /*deltaCode*/,
5110  '-' /*letter*/,
5111  },
5112  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
5113  {
5114  33 /*fromYearTiny*/,
5115  33 /*toYearTiny*/,
5116  11 /*inMonth*/,
5117  0 /*onDayOfWeek*/,
5118  20 /*onDayOfMonth*/,
5119  12 /*atTimeCode*/,
5120  'w' /*atTimeModifier*/,
5121  -4 /*deltaCode*/,
5122  '-' /*letter*/,
5123  },
5124  // Rule Morocco 2033 only - Dec 25 2:00 0 -
5125  {
5126  33 /*fromYearTiny*/,
5127  33 /*toYearTiny*/,
5128  12 /*inMonth*/,
5129  0 /*onDayOfWeek*/,
5130  25 /*onDayOfMonth*/,
5131  8 /*atTimeCode*/,
5132  'w' /*atTimeModifier*/,
5133  0 /*deltaCode*/,
5134  '-' /*letter*/,
5135  },
5136  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
5137  {
5138  34 /*fromYearTiny*/,
5139  34 /*toYearTiny*/,
5140  11 /*inMonth*/,
5141  0 /*onDayOfWeek*/,
5142  5 /*onDayOfMonth*/,
5143  12 /*atTimeCode*/,
5144  'w' /*atTimeModifier*/,
5145  -4 /*deltaCode*/,
5146  '-' /*letter*/,
5147  },
5148  // Rule Morocco 2034 only - Dec 17 2:00 0 -
5149  {
5150  34 /*fromYearTiny*/,
5151  34 /*toYearTiny*/,
5152  12 /*inMonth*/,
5153  0 /*onDayOfWeek*/,
5154  17 /*onDayOfMonth*/,
5155  8 /*atTimeCode*/,
5156  'w' /*atTimeModifier*/,
5157  0 /*deltaCode*/,
5158  '-' /*letter*/,
5159  },
5160  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
5161  {
5162  35 /*fromYearTiny*/,
5163  35 /*toYearTiny*/,
5164  10 /*inMonth*/,
5165  0 /*onDayOfWeek*/,
5166  28 /*onDayOfMonth*/,
5167  12 /*atTimeCode*/,
5168  'w' /*atTimeModifier*/,
5169  -4 /*deltaCode*/,
5170  '-' /*letter*/,
5171  },
5172  // Rule Morocco 2035 only - Dec 2 2:00 0 -
5173  {
5174  35 /*fromYearTiny*/,
5175  35 /*toYearTiny*/,
5176  12 /*inMonth*/,
5177  0 /*onDayOfWeek*/,
5178  2 /*onDayOfMonth*/,
5179  8 /*atTimeCode*/,
5180  'w' /*atTimeModifier*/,
5181  0 /*deltaCode*/,
5182  '-' /*letter*/,
5183  },
5184  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
5185  {
5186  36 /*fromYearTiny*/,
5187  36 /*toYearTiny*/,
5188  10 /*inMonth*/,
5189  0 /*onDayOfWeek*/,
5190  19 /*onDayOfMonth*/,
5191  12 /*atTimeCode*/,
5192  'w' /*atTimeModifier*/,
5193  -4 /*deltaCode*/,
5194  '-' /*letter*/,
5195  },
5196  // Rule Morocco 2036 only - Nov 23 2:00 0 -
5197  {
5198  36 /*fromYearTiny*/,
5199  36 /*toYearTiny*/,
5200  11 /*inMonth*/,
5201  0 /*onDayOfWeek*/,
5202  23 /*onDayOfMonth*/,
5203  8 /*atTimeCode*/,
5204  'w' /*atTimeModifier*/,
5205  0 /*deltaCode*/,
5206  '-' /*letter*/,
5207  },
5208  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
5209  {
5210  37 /*fromYearTiny*/,
5211  37 /*toYearTiny*/,
5212  10 /*inMonth*/,
5213  0 /*onDayOfWeek*/,
5214  4 /*onDayOfMonth*/,
5215  12 /*atTimeCode*/,
5216  'w' /*atTimeModifier*/,
5217  -4 /*deltaCode*/,
5218  '-' /*letter*/,
5219  },
5220  // Rule Morocco 2037 only - Nov 15 2:00 0 -
5221  {
5222  37 /*fromYearTiny*/,
5223  37 /*toYearTiny*/,
5224  11 /*inMonth*/,
5225  0 /*onDayOfWeek*/,
5226  15 /*onDayOfMonth*/,
5227  8 /*atTimeCode*/,
5228  'w' /*atTimeModifier*/,
5229  0 /*deltaCode*/,
5230  '-' /*letter*/,
5231  },
5232 
5233 };
5234 
5235 
5236 
5237 const extended::ZonePolicy kPolicyMorocco = {
5238  67 /*numRules*/,
5239  kZoneRulesMorocco /*rules*/,
5240  0 /* numLetters */,
5241  nullptr /* letters */,
5242 };
5243 
5244 //---------------------------------------------------------------------------
5245 // Policy name: NC
5246 // Rule count: 1
5247 // Memory (8-bit): 15
5248 // Memory (32-bit): 19
5249 //---------------------------------------------------------------------------
5250 
5251 static const extended::ZoneRule kZoneRulesNC[] = {
5252  // Rule NC 1997 only - Mar 2 2:00s 0 -
5253  {
5254  -3 /*fromYearTiny*/,
5255  -3 /*toYearTiny*/,
5256  3 /*inMonth*/,
5257  0 /*onDayOfWeek*/,
5258  2 /*onDayOfMonth*/,
5259  8 /*atTimeCode*/,
5260  's' /*atTimeModifier*/,
5261  0 /*deltaCode*/,
5262  '-' /*letter*/,
5263  },
5264 
5265 };
5266 
5267 
5268 
5269 const extended::ZonePolicy kPolicyNC = {
5270  1 /*numRules*/,
5271  kZoneRulesNC /*rules*/,
5272  0 /* numLetters */,
5273  nullptr /* letters */,
5274 };
5275 
5276 //---------------------------------------------------------------------------
5277 // Policy name: NT_YK
5278 // Rule count: 3
5279 // Memory (8-bit): 33
5280 // Memory (32-bit): 37
5281 //---------------------------------------------------------------------------
5282 
5283 static const extended::ZoneRule kZoneRulesNT_YK[] = {
5284  // Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D
5285  {
5286  -20 /*fromYearTiny*/,
5287  -14 /*toYearTiny*/,
5288  4 /*inMonth*/,
5289  7 /*onDayOfWeek*/,
5290  0 /*onDayOfMonth*/,
5291  8 /*atTimeCode*/,
5292  'w' /*atTimeModifier*/,
5293  4 /*deltaCode*/,
5294  'D' /*letter*/,
5295  },
5296  // Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S
5297  {
5298  -20 /*fromYearTiny*/,
5299  6 /*toYearTiny*/,
5300  10 /*inMonth*/,
5301  7 /*onDayOfWeek*/,
5302  0 /*onDayOfMonth*/,
5303  8 /*atTimeCode*/,
5304  'w' /*atTimeModifier*/,
5305  0 /*deltaCode*/,
5306  'S' /*letter*/,
5307  },
5308  // Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
5309  {
5310  -13 /*fromYearTiny*/,
5311  6 /*toYearTiny*/,
5312  4 /*inMonth*/,
5313  7 /*onDayOfWeek*/,
5314  1 /*onDayOfMonth*/,
5315  8 /*atTimeCode*/,
5316  'w' /*atTimeModifier*/,
5317  4 /*deltaCode*/,
5318  'D' /*letter*/,
5319  },
5320 
5321 };
5322 
5323 
5324 
5325 const extended::ZonePolicy kPolicyNT_YK = {
5326  3 /*numRules*/,
5327  kZoneRulesNT_YK /*rules*/,
5328  0 /* numLetters */,
5329  nullptr /* letters */,
5330 };
5331 
5332 //---------------------------------------------------------------------------
5333 // Policy name: NZ
5334 // Rule count: 5
5335 // Memory (8-bit): 51
5336 // Memory (32-bit): 55
5337 //---------------------------------------------------------------------------
5338 
5339 static const extended::ZoneRule kZoneRulesNZ[] = {
5340  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
5341  {
5342  -11 /*fromYearTiny*/,
5343  -11 /*toYearTiny*/,
5344  10 /*inMonth*/,
5345  7 /*onDayOfWeek*/,
5346  8 /*onDayOfMonth*/,
5347  8 /*atTimeCode*/,
5348  's' /*atTimeModifier*/,
5349  4 /*deltaCode*/,
5350  'D' /*letter*/,
5351  },
5352  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
5353  {
5354  -10 /*fromYearTiny*/,
5355  6 /*toYearTiny*/,
5356  10 /*inMonth*/,
5357  7 /*onDayOfWeek*/,
5358  1 /*onDayOfMonth*/,
5359  8 /*atTimeCode*/,
5360  's' /*atTimeModifier*/,
5361  4 /*deltaCode*/,
5362  'D' /*letter*/,
5363  },
5364  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
5365  {
5366  -10 /*fromYearTiny*/,
5367  7 /*toYearTiny*/,
5368  3 /*inMonth*/,
5369  7 /*onDayOfWeek*/,
5370  15 /*onDayOfMonth*/,
5371  8 /*atTimeCode*/,
5372  's' /*atTimeModifier*/,
5373  0 /*deltaCode*/,
5374  'S' /*letter*/,
5375  },
5376  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
5377  {
5378  7 /*fromYearTiny*/,
5379  126 /*toYearTiny*/,
5380  9 /*inMonth*/,
5381  7 /*onDayOfWeek*/,
5382  0 /*onDayOfMonth*/,
5383  8 /*atTimeCode*/,
5384  's' /*atTimeModifier*/,
5385  4 /*deltaCode*/,
5386  'D' /*letter*/,
5387  },
5388  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
5389  {
5390  8 /*fromYearTiny*/,
5391  126 /*toYearTiny*/,
5392  4 /*inMonth*/,
5393  7 /*onDayOfWeek*/,
5394  1 /*onDayOfMonth*/,
5395  8 /*atTimeCode*/,
5396  's' /*atTimeModifier*/,
5397  0 /*deltaCode*/,
5398  'S' /*letter*/,
5399  },
5400 
5401 };
5402 
5403 
5404 
5405 const extended::ZonePolicy kPolicyNZ = {
5406  5 /*numRules*/,
5407  kZoneRulesNZ /*rules*/,
5408  0 /* numLetters */,
5409  nullptr /* letters */,
5410 };
5411 
5412 //---------------------------------------------------------------------------
5413 // Policy name: Namibia
5414 // Rule count: 3
5415 // Memory (8-bit): 45
5416 // Memory (32-bit): 53
5417 //---------------------------------------------------------------------------
5418 
5419 static const extended::ZoneRule kZoneRulesNamibia[] = {
5420  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
5421  {
5422  -6 /*fromYearTiny*/,
5423  -6 /*toYearTiny*/,
5424  3 /*inMonth*/,
5425  0 /*onDayOfWeek*/,
5426  21 /*onDayOfMonth*/,
5427  0 /*atTimeCode*/,
5428  'w' /*atTimeModifier*/,
5429  -4 /*deltaCode*/,
5430  1 /*letter; "WAT"*/,
5431  },
5432  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
5433  {
5434  -6 /*fromYearTiny*/,
5435  17 /*toYearTiny*/,
5436  9 /*inMonth*/,
5437  7 /*onDayOfWeek*/,
5438  1 /*onDayOfMonth*/,
5439  8 /*atTimeCode*/,
5440  'w' /*atTimeModifier*/,
5441  0 /*deltaCode*/,
5442  0 /*letter; "CAT"*/,
5443  },
5444  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
5445  {
5446  -5 /*fromYearTiny*/,
5447  17 /*toYearTiny*/,
5448  4 /*inMonth*/,
5449  7 /*onDayOfWeek*/,
5450  1 /*onDayOfMonth*/,
5451  8 /*atTimeCode*/,
5452  'w' /*atTimeModifier*/,
5453  -4 /*deltaCode*/,
5454  1 /*letter; "WAT"*/,
5455  },
5456 
5457 };
5458 
5459 static const char* const kLettersNamibia[] = {
5460  /*0*/ "CAT",
5461  /*1*/ "WAT",
5462 
5463 };
5464 
5465 
5466 const extended::ZonePolicy kPolicyNamibia = {
5467  3 /*numRules*/,
5468  kZoneRulesNamibia /*rules*/,
5469  2 /* numLetters */,
5470  kLettersNamibia /* letters */,
5471 };
5472 
5473 //---------------------------------------------------------------------------
5474 // Policy name: Nic
5475 // Rule count: 5
5476 // Memory (8-bit): 51
5477 // Memory (32-bit): 55
5478 //---------------------------------------------------------------------------
5479 
5480 static const extended::ZoneRule kZoneRulesNic[] = {
5481  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
5482  {
5483  -21 /*fromYearTiny*/,
5484  -20 /*toYearTiny*/,
5485  6 /*inMonth*/,
5486  1 /*onDayOfWeek*/,
5487  23 /*onDayOfMonth*/,
5488  0 /*atTimeCode*/,
5489  'w' /*atTimeModifier*/,
5490  0 /*deltaCode*/,
5491  'S' /*letter*/,
5492  },
5493  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
5494  {
5495  5 /*fromYearTiny*/,
5496  5 /*toYearTiny*/,
5497  4 /*inMonth*/,
5498  0 /*onDayOfWeek*/,
5499  10 /*onDayOfMonth*/,
5500  0 /*atTimeCode*/,
5501  'w' /*atTimeModifier*/,
5502  4 /*deltaCode*/,
5503  'D' /*letter*/,
5504  },
5505  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
5506  {
5507  5 /*fromYearTiny*/,
5508  5 /*toYearTiny*/,
5509  10 /*inMonth*/,
5510  7 /*onDayOfWeek*/,
5511  1 /*onDayOfMonth*/,
5512  0 /*atTimeCode*/,
5513  'w' /*atTimeModifier*/,
5514  0 /*deltaCode*/,
5515  'S' /*letter*/,
5516  },
5517  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
5518  {
5519  6 /*fromYearTiny*/,
5520  6 /*toYearTiny*/,
5521  4 /*inMonth*/,
5522  0 /*onDayOfWeek*/,
5523  30 /*onDayOfMonth*/,
5524  8 /*atTimeCode*/,
5525  'w' /*atTimeModifier*/,
5526  4 /*deltaCode*/,
5527  'D' /*letter*/,
5528  },
5529  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
5530  {
5531  6 /*fromYearTiny*/,
5532  6 /*toYearTiny*/,
5533  10 /*inMonth*/,
5534  7 /*onDayOfWeek*/,
5535  1 /*onDayOfMonth*/,
5536  4 /*atTimeCode*/,
5537  'w' /*atTimeModifier*/,
5538  0 /*deltaCode*/,
5539  'S' /*letter*/,
5540  },
5541 
5542 };
5543 
5544 
5545 
5546 const extended::ZonePolicy kPolicyNic = {
5547  5 /*numRules*/,
5548  kZoneRulesNic /*rules*/,
5549  0 /* numLetters */,
5550  nullptr /* letters */,
5551 };
5552 
5553 //---------------------------------------------------------------------------
5554 // Policy name: PRC
5555 // Rule count: 1
5556 // Memory (8-bit): 15
5557 // Memory (32-bit): 19
5558 //---------------------------------------------------------------------------
5559 
5560 static const extended::ZoneRule kZoneRulesPRC[] = {
5561  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
5562  {
5563  -14 /*fromYearTiny*/,
5564  -9 /*toYearTiny*/,
5565  9 /*inMonth*/,
5566  7 /*onDayOfWeek*/,
5567  11 /*onDayOfMonth*/,
5568  8 /*atTimeCode*/,
5569  'w' /*atTimeModifier*/,
5570  0 /*deltaCode*/,
5571  'S' /*letter*/,
5572  },
5573 
5574 };
5575 
5576 
5577 
5578 const extended::ZonePolicy kPolicyPRC = {
5579  1 /*numRules*/,
5580  kZoneRulesPRC /*rules*/,
5581  0 /* numLetters */,
5582  nullptr /* letters */,
5583 };
5584 
5585 //---------------------------------------------------------------------------
5586 // Policy name: Pakistan
5587 // Rule count: 6
5588 // Memory (8-bit): 60
5589 // Memory (32-bit): 64
5590 //---------------------------------------------------------------------------
5591 
5592 static const extended::ZoneRule kZoneRulesPakistan[] = {
5593  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
5594  {
5595  -127 /*fromYearTiny*/,
5596  -127 /*toYearTiny*/,
5597  1 /*inMonth*/,
5598  0 /*onDayOfWeek*/,
5599  1 /*onDayOfMonth*/,
5600  0 /*atTimeCode*/,
5601  'w' /*atTimeModifier*/,
5602  0 /*deltaCode*/,
5603  '-' /*letter*/,
5604  },
5605  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
5606  {
5607  2 /*fromYearTiny*/,
5608  2 /*toYearTiny*/,
5609  4 /*inMonth*/,
5610  7 /*onDayOfWeek*/,
5611  2 /*onDayOfMonth*/,
5612  0 /*atTimeCode*/,
5613  'w' /*atTimeModifier*/,
5614  4 /*deltaCode*/,
5615  'S' /*letter*/,
5616  },
5617  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
5618  {
5619  2 /*fromYearTiny*/,
5620  2 /*toYearTiny*/,
5621  10 /*inMonth*/,
5622  7 /*onDayOfWeek*/,
5623  2 /*onDayOfMonth*/,
5624  0 /*atTimeCode*/,
5625  'w' /*atTimeModifier*/,
5626  0 /*deltaCode*/,
5627  '-' /*letter*/,
5628  },
5629  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
5630  {
5631  8 /*fromYearTiny*/,
5632  8 /*toYearTiny*/,
5633  6 /*inMonth*/,
5634  0 /*onDayOfWeek*/,
5635  1 /*onDayOfMonth*/,
5636  0 /*atTimeCode*/,
5637  'w' /*atTimeModifier*/,
5638  4 /*deltaCode*/,
5639  'S' /*letter*/,
5640  },
5641  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
5642  {
5643  8 /*fromYearTiny*/,
5644  9 /*toYearTiny*/,
5645  11 /*inMonth*/,
5646  0 /*onDayOfWeek*/,
5647  1 /*onDayOfMonth*/,
5648  0 /*atTimeCode*/,
5649  'w' /*atTimeModifier*/,
5650  0 /*deltaCode*/,
5651  '-' /*letter*/,
5652  },
5653  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
5654  {
5655  9 /*fromYearTiny*/,
5656  9 /*toYearTiny*/,
5657  4 /*inMonth*/,
5658  0 /*onDayOfWeek*/,
5659  15 /*onDayOfMonth*/,
5660  0 /*atTimeCode*/,
5661  'w' /*atTimeModifier*/,
5662  4 /*deltaCode*/,
5663  'S' /*letter*/,
5664  },
5665 
5666 };
5667 
5668 
5669 
5670 const extended::ZonePolicy kPolicyPakistan = {
5671  6 /*numRules*/,
5672  kZoneRulesPakistan /*rules*/,
5673  0 /* numLetters */,
5674  nullptr /* letters */,
5675 };
5676 
5677 //---------------------------------------------------------------------------
5678 // Policy name: Palestine
5679 // Rule count: 24
5680 // Memory (8-bit): 222
5681 // Memory (32-bit): 226
5682 //---------------------------------------------------------------------------
5683 
5684 static const extended::ZoneRule kZoneRulesPalestine[] = {
5685  // Anchor: Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
5686  {
5687  -127 /*fromYearTiny*/,
5688  -127 /*toYearTiny*/,
5689  1 /*inMonth*/,
5690  0 /*onDayOfWeek*/,
5691  1 /*onDayOfMonth*/,
5692  0 /*atTimeCode*/,
5693  'w' /*atTimeModifier*/,
5694  0 /*deltaCode*/,
5695  '-' /*letter*/,
5696  },
5697  // Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
5698  {
5699  -1 /*fromYearTiny*/,
5700  5 /*toYearTiny*/,
5701  4 /*inMonth*/,
5702  5 /*onDayOfWeek*/,
5703  15 /*onDayOfMonth*/,
5704  0 /*atTimeCode*/,
5705  'w' /*atTimeModifier*/,
5706  4 /*deltaCode*/,
5707  'S' /*letter*/,
5708  },
5709  // Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
5710  {
5711  -1 /*fromYearTiny*/,
5712  3 /*toYearTiny*/,
5713  10 /*inMonth*/,
5714  5 /*onDayOfWeek*/,
5715  15 /*onDayOfMonth*/,
5716  0 /*atTimeCode*/,
5717  'w' /*atTimeModifier*/,
5718  0 /*deltaCode*/,
5719  '-' /*letter*/,
5720  },
5721  // Rule Palestine 2004 only - Oct 1 1:00 0 -
5722  {
5723  4 /*fromYearTiny*/,
5724  4 /*toYearTiny*/,
5725  10 /*inMonth*/,
5726  0 /*onDayOfWeek*/,
5727  1 /*onDayOfMonth*/,
5728  4 /*atTimeCode*/,
5729  'w' /*atTimeModifier*/,
5730  0 /*deltaCode*/,
5731  '-' /*letter*/,
5732  },
5733  // Rule Palestine 2005 only - Oct 4 2:00 0 -
5734  {
5735  5 /*fromYearTiny*/,
5736  5 /*toYearTiny*/,
5737  10 /*inMonth*/,
5738  0 /*onDayOfWeek*/,
5739  4 /*onDayOfMonth*/,
5740  8 /*atTimeCode*/,
5741  'w' /*atTimeModifier*/,
5742  0 /*deltaCode*/,
5743  '-' /*letter*/,
5744  },
5745  // Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
5746  {
5747  6 /*fromYearTiny*/,
5748  7 /*toYearTiny*/,
5749  4 /*inMonth*/,
5750  0 /*onDayOfWeek*/,
5751  1 /*onDayOfMonth*/,
5752  0 /*atTimeCode*/,
5753  'w' /*atTimeModifier*/,
5754  4 /*deltaCode*/,
5755  'S' /*letter*/,
5756  },
5757  // Rule Palestine 2006 only - Sep 22 0:00 0 -
5758  {
5759  6 /*fromYearTiny*/,
5760  6 /*toYearTiny*/,
5761  9 /*inMonth*/,
5762  0 /*onDayOfWeek*/,
5763  22 /*onDayOfMonth*/,
5764  0 /*atTimeCode*/,
5765  'w' /*atTimeModifier*/,
5766  0 /*deltaCode*/,
5767  '-' /*letter*/,
5768  },
5769  // Rule Palestine 2007 only - Sep Thu>=8 2:00 0 -
5770  {
5771  7 /*fromYearTiny*/,
5772  7 /*toYearTiny*/,
5773  9 /*inMonth*/,
5774  4 /*onDayOfWeek*/,
5775  8 /*onDayOfMonth*/,
5776  8 /*atTimeCode*/,
5777  'w' /*atTimeModifier*/,
5778  0 /*deltaCode*/,
5779  '-' /*letter*/,
5780  },
5781  // Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
5782  {
5783  8 /*fromYearTiny*/,
5784  9 /*toYearTiny*/,
5785  3 /*inMonth*/,
5786  5 /*onDayOfWeek*/,
5787  0 /*onDayOfMonth*/,
5788  0 /*atTimeCode*/,
5789  'w' /*atTimeModifier*/,
5790  4 /*deltaCode*/,
5791  'S' /*letter*/,
5792  },
5793  // Rule Palestine 2008 only - Sep 1 0:00 0 -
5794  {
5795  8 /*fromYearTiny*/,
5796  8 /*toYearTiny*/,
5797  9 /*inMonth*/,
5798  0 /*onDayOfWeek*/,
5799  1 /*onDayOfMonth*/,
5800  0 /*atTimeCode*/,
5801  'w' /*atTimeModifier*/,
5802  0 /*deltaCode*/,
5803  '-' /*letter*/,
5804  },
5805  // Rule Palestine 2009 only - Sep Fri>=1 1:00 0 -
5806  {
5807  9 /*fromYearTiny*/,
5808  9 /*toYearTiny*/,
5809  9 /*inMonth*/,
5810  5 /*onDayOfWeek*/,
5811  1 /*onDayOfMonth*/,
5812  4 /*atTimeCode*/,
5813  'w' /*atTimeModifier*/,
5814  0 /*deltaCode*/,
5815  '-' /*letter*/,
5816  },
5817  // Rule Palestine 2010 only - Mar 26 0:00 1:00 S
5818  {
5819  10 /*fromYearTiny*/,
5820  10 /*toYearTiny*/,
5821  3 /*inMonth*/,
5822  0 /*onDayOfWeek*/,
5823  26 /*onDayOfMonth*/,
5824  0 /*atTimeCode*/,
5825  'w' /*atTimeModifier*/,
5826  4 /*deltaCode*/,
5827  'S' /*letter*/,
5828  },
5829  // Rule Palestine 2010 only - Aug 11 0:00 0 -
5830  {
5831  10 /*fromYearTiny*/,
5832  10 /*toYearTiny*/,
5833  8 /*inMonth*/,
5834  0 /*onDayOfWeek*/,
5835  11 /*onDayOfMonth*/,
5836  0 /*atTimeCode*/,
5837  'w' /*atTimeModifier*/,
5838  0 /*deltaCode*/,
5839  '-' /*letter*/,
5840  },
5841  // Rule Palestine 2011 only - Apr 1 0:01 1:00 S
5842  {
5843  11 /*fromYearTiny*/,
5844  11 /*toYearTiny*/,
5845  4 /*inMonth*/,
5846  0 /*onDayOfWeek*/,
5847  1 /*onDayOfMonth*/,
5848  0 /*atTimeCode*/,
5849  'w' /*atTimeModifier*/,
5850  4 /*deltaCode*/,
5851  'S' /*letter*/,
5852  },
5853  // Rule Palestine 2011 only - Aug 1 0:00 0 -
5854  {
5855  11 /*fromYearTiny*/,
5856  11 /*toYearTiny*/,
5857  8 /*inMonth*/,
5858  0 /*onDayOfWeek*/,
5859  1 /*onDayOfMonth*/,
5860  0 /*atTimeCode*/,
5861  'w' /*atTimeModifier*/,
5862  0 /*deltaCode*/,
5863  '-' /*letter*/,
5864  },
5865  // Rule Palestine 2011 only - Aug 30 0:00 1:00 S
5866  {
5867  11 /*fromYearTiny*/,
5868  11 /*toYearTiny*/,
5869  8 /*inMonth*/,
5870  0 /*onDayOfWeek*/,
5871  30 /*onDayOfMonth*/,
5872  0 /*atTimeCode*/,
5873  'w' /*atTimeModifier*/,
5874  4 /*deltaCode*/,
5875  'S' /*letter*/,
5876  },
5877  // Rule Palestine 2011 only - Sep 30 0:00 0 -
5878  {
5879  11 /*fromYearTiny*/,
5880  11 /*toYearTiny*/,
5881  9 /*inMonth*/,
5882  0 /*onDayOfWeek*/,
5883  30 /*onDayOfMonth*/,
5884  0 /*atTimeCode*/,
5885  'w' /*atTimeModifier*/,
5886  0 /*deltaCode*/,
5887  '-' /*letter*/,
5888  },
5889  // Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
5890  {
5891  12 /*fromYearTiny*/,
5892  14 /*toYearTiny*/,
5893  3 /*inMonth*/,
5894  4 /*onDayOfWeek*/,
5895  0 /*onDayOfMonth*/,
5896  96 /*atTimeCode*/,
5897  'w' /*atTimeModifier*/,
5898  4 /*deltaCode*/,
5899  'S' /*letter*/,
5900  },
5901  // Rule Palestine 2012 only - Sep 21 1:00 0 -
5902  {
5903  12 /*fromYearTiny*/,
5904  12 /*toYearTiny*/,
5905  9 /*inMonth*/,
5906  0 /*onDayOfWeek*/,
5907  21 /*onDayOfMonth*/,
5908  4 /*atTimeCode*/,
5909  'w' /*atTimeModifier*/,
5910  0 /*deltaCode*/,
5911  '-' /*letter*/,
5912  },
5913  // Rule Palestine 2013 only - Sep Fri>=21 0:00 0 -
5914  {
5915  13 /*fromYearTiny*/,
5916  13 /*toYearTiny*/,
5917  9 /*inMonth*/,
5918  5 /*onDayOfWeek*/,
5919  21 /*onDayOfMonth*/,
5920  0 /*atTimeCode*/,
5921  'w' /*atTimeModifier*/,
5922  0 /*deltaCode*/,
5923  '-' /*letter*/,
5924  },
5925  // Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 -
5926  {
5927  14 /*fromYearTiny*/,
5928  15 /*toYearTiny*/,
5929  10 /*inMonth*/,
5930  5 /*onDayOfWeek*/,
5931  21 /*onDayOfMonth*/,
5932  0 /*atTimeCode*/,
5933  'w' /*atTimeModifier*/,
5934  0 /*deltaCode*/,
5935  '-' /*letter*/,
5936  },
5937  // Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S
5938  {
5939  15 /*fromYearTiny*/,
5940  15 /*toYearTiny*/,
5941  3 /*inMonth*/,
5942  5 /*onDayOfWeek*/,
5943  0 /*onDayOfMonth*/,
5944  96 /*atTimeCode*/,
5945  'w' /*atTimeModifier*/,
5946  4 /*deltaCode*/,
5947  'S' /*letter*/,
5948  },
5949  // Rule Palestine 2016 max - Mar Sat>=24 1:00 1:00 S
5950  {
5951  16 /*fromYearTiny*/,
5952  126 /*toYearTiny*/,
5953  3 /*inMonth*/,
5954  6 /*onDayOfWeek*/,
5955  24 /*onDayOfMonth*/,
5956  4 /*atTimeCode*/,
5957  'w' /*atTimeModifier*/,
5958  4 /*deltaCode*/,
5959  'S' /*letter*/,
5960  },
5961  // Rule Palestine 2016 max - Oct lastSat 1:00 0 -
5962  {
5963  16 /*fromYearTiny*/,
5964  126 /*toYearTiny*/,
5965  10 /*inMonth*/,
5966  6 /*onDayOfWeek*/,
5967  0 /*onDayOfMonth*/,
5968  4 /*atTimeCode*/,
5969  'w' /*atTimeModifier*/,
5970  0 /*deltaCode*/,
5971  '-' /*letter*/,
5972  },
5973 
5974 };
5975 
5976 
5977 
5978 const extended::ZonePolicy kPolicyPalestine = {
5979  24 /*numRules*/,
5980  kZoneRulesPalestine /*rules*/,
5981  0 /* numLetters */,
5982  nullptr /* letters */,
5983 };
5984 
5985 //---------------------------------------------------------------------------
5986 // Policy name: Para
5987 // Rule count: 10
5988 // Memory (8-bit): 96
5989 // Memory (32-bit): 100
5990 //---------------------------------------------------------------------------
5991 
5992 static const extended::ZoneRule kZoneRulesPara[] = {
5993  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
5994  {
5995  -4 /*fromYearTiny*/,
5996  1 /*toYearTiny*/,
5997  10 /*inMonth*/,
5998  7 /*onDayOfWeek*/,
5999  1 /*onDayOfMonth*/,
6000  0 /*atTimeCode*/,
6001  'w' /*atTimeModifier*/,
6002  4 /*deltaCode*/,
6003  '-' /*letter*/,
6004  },
6005  // Rule Para 1997 only - Feb lastSun 0:00 0 -
6006  {
6007  -3 /*fromYearTiny*/,
6008  -3 /*toYearTiny*/,
6009  2 /*inMonth*/,
6010  7 /*onDayOfWeek*/,
6011  0 /*onDayOfMonth*/,
6012  0 /*atTimeCode*/,
6013  'w' /*atTimeModifier*/,
6014  0 /*deltaCode*/,
6015  '-' /*letter*/,
6016  },
6017  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
6018  {
6019  -2 /*fromYearTiny*/,
6020  1 /*toYearTiny*/,
6021  3 /*inMonth*/,
6022  7 /*onDayOfWeek*/,
6023  1 /*onDayOfMonth*/,
6024  0 /*atTimeCode*/,
6025  'w' /*atTimeModifier*/,
6026  0 /*deltaCode*/,
6027  '-' /*letter*/,
6028  },
6029  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
6030  {
6031  2 /*fromYearTiny*/,
6032  4 /*toYearTiny*/,
6033  4 /*inMonth*/,
6034  7 /*onDayOfWeek*/,
6035  1 /*onDayOfMonth*/,
6036  0 /*atTimeCode*/,
6037  'w' /*atTimeModifier*/,
6038  0 /*deltaCode*/,
6039  '-' /*letter*/,
6040  },
6041  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
6042  {
6043  2 /*fromYearTiny*/,
6044  3 /*toYearTiny*/,
6045  9 /*inMonth*/,
6046  7 /*onDayOfWeek*/,
6047  1 /*onDayOfMonth*/,
6048  0 /*atTimeCode*/,
6049  'w' /*atTimeModifier*/,
6050  4 /*deltaCode*/,
6051  '-' /*letter*/,
6052  },
6053  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
6054  {
6055  4 /*fromYearTiny*/,
6056  9 /*toYearTiny*/,
6057  10 /*inMonth*/,
6058  7 /*onDayOfWeek*/,
6059  15 /*onDayOfMonth*/,
6060  0 /*atTimeCode*/,
6061  'w' /*atTimeModifier*/,
6062  4 /*deltaCode*/,
6063  '-' /*letter*/,
6064  },
6065  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
6066  {
6067  5 /*fromYearTiny*/,
6068  9 /*toYearTiny*/,
6069  3 /*inMonth*/,
6070  7 /*onDayOfWeek*/,
6071  8 /*onDayOfMonth*/,
6072  0 /*atTimeCode*/,
6073  'w' /*atTimeModifier*/,
6074  0 /*deltaCode*/,
6075  '-' /*letter*/,
6076  },
6077  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
6078  {
6079  10 /*fromYearTiny*/,
6080  126 /*toYearTiny*/,
6081  10 /*inMonth*/,
6082  7 /*onDayOfWeek*/,
6083  1 /*onDayOfMonth*/,
6084  0 /*atTimeCode*/,
6085  'w' /*atTimeModifier*/,
6086  4 /*deltaCode*/,
6087  '-' /*letter*/,
6088  },
6089  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
6090  {
6091  10 /*fromYearTiny*/,
6092  12 /*toYearTiny*/,
6093  4 /*inMonth*/,
6094  7 /*onDayOfWeek*/,
6095  8 /*onDayOfMonth*/,
6096  0 /*atTimeCode*/,
6097  'w' /*atTimeModifier*/,
6098  0 /*deltaCode*/,
6099  '-' /*letter*/,
6100  },
6101  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
6102  {
6103  13 /*fromYearTiny*/,
6104  126 /*toYearTiny*/,
6105  3 /*inMonth*/,
6106  7 /*onDayOfWeek*/,
6107  22 /*onDayOfMonth*/,
6108  0 /*atTimeCode*/,
6109  'w' /*atTimeModifier*/,
6110  0 /*deltaCode*/,
6111  '-' /*letter*/,
6112  },
6113 
6114 };
6115 
6116 
6117 
6118 const extended::ZonePolicy kPolicyPara = {
6119  10 /*numRules*/,
6120  kZoneRulesPara /*rules*/,
6121  0 /* numLetters */,
6122  nullptr /* letters */,
6123 };
6124 
6125 //---------------------------------------------------------------------------
6126 // Policy name: Peru
6127 // Rule count: 1
6128 // Memory (8-bit): 15
6129 // Memory (32-bit): 19
6130 //---------------------------------------------------------------------------
6131 
6132 static const extended::ZoneRule kZoneRulesPeru[] = {
6133  // Rule Peru 1994 only - Apr 1 0:00 0 -
6134  {
6135  -6 /*fromYearTiny*/,
6136  -6 /*toYearTiny*/,
6137  4 /*inMonth*/,
6138  0 /*onDayOfWeek*/,
6139  1 /*onDayOfMonth*/,
6140  0 /*atTimeCode*/,
6141  'w' /*atTimeModifier*/,
6142  0 /*deltaCode*/,
6143  '-' /*letter*/,
6144  },
6145 
6146 };
6147 
6148 
6149 
6150 const extended::ZonePolicy kPolicyPeru = {
6151  1 /*numRules*/,
6152  kZoneRulesPeru /*rules*/,
6153  0 /* numLetters */,
6154  nullptr /* letters */,
6155 };
6156 
6157 //---------------------------------------------------------------------------
6158 // Policy name: Phil
6159 // Rule count: 1
6160 // Memory (8-bit): 15
6161 // Memory (32-bit): 19
6162 //---------------------------------------------------------------------------
6163 
6164 static const extended::ZoneRule kZoneRulesPhil[] = {
6165  // Rule Phil 1978 only - Sep 21 0:00 0 S
6166  {
6167  -22 /*fromYearTiny*/,
6168  -22 /*toYearTiny*/,
6169  9 /*inMonth*/,
6170  0 /*onDayOfWeek*/,
6171  21 /*onDayOfMonth*/,
6172  0 /*atTimeCode*/,
6173  'w' /*atTimeModifier*/,
6174  0 /*deltaCode*/,
6175  'S' /*letter*/,
6176  },
6177 
6178 };
6179 
6180 
6181 
6182 const extended::ZonePolicy kPolicyPhil = {
6183  1 /*numRules*/,
6184  kZoneRulesPhil /*rules*/,
6185  0 /* numLetters */,
6186  nullptr /* letters */,
6187 };
6188 
6189 //---------------------------------------------------------------------------
6190 // Policy name: ROK
6191 // Rule count: 1
6192 // Memory (8-bit): 15
6193 // Memory (32-bit): 19
6194 //---------------------------------------------------------------------------
6195 
6196 static const extended::ZoneRule kZoneRulesROK[] = {
6197  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
6198  {
6199  -13 /*fromYearTiny*/,
6200  -12 /*toYearTiny*/,
6201  10 /*inMonth*/,
6202  7 /*onDayOfWeek*/,
6203  8 /*onDayOfMonth*/,
6204  12 /*atTimeCode*/,
6205  'w' /*atTimeModifier*/,
6206  0 /*deltaCode*/,
6207  'S' /*letter*/,
6208  },
6209 
6210 };
6211 
6212 
6213 
6214 const extended::ZonePolicy kPolicyROK = {
6215  1 /*numRules*/,
6216  kZoneRulesROK /*rules*/,
6217  0 /* numLetters */,
6218  nullptr /* letters */,
6219 };
6220 
6221 //---------------------------------------------------------------------------
6222 // Policy name: Russia
6223 // Rule count: 3
6224 // Memory (8-bit): 33
6225 // Memory (32-bit): 37
6226 //---------------------------------------------------------------------------
6227 
6228 static const extended::ZoneRule kZoneRulesRussia[] = {
6229  // Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
6230  {
6231  -16 /*fromYearTiny*/,
6232  -5 /*toYearTiny*/,
6233  9 /*inMonth*/,
6234  7 /*onDayOfWeek*/,
6235  0 /*onDayOfMonth*/,
6236  8 /*atTimeCode*/,
6237  's' /*atTimeModifier*/,
6238  0 /*deltaCode*/,
6239  '-' /*letter*/,
6240  },
6241  // Rule Russia 1985 2010 - Mar lastSun 2:00s 1:00 S
6242  {
6243  -15 /*fromYearTiny*/,
6244  10 /*toYearTiny*/,
6245  3 /*inMonth*/,
6246  7 /*onDayOfWeek*/,
6247  0 /*onDayOfMonth*/,
6248  8 /*atTimeCode*/,
6249  's' /*atTimeModifier*/,
6250  4 /*deltaCode*/,
6251  'S' /*letter*/,
6252  },
6253  // Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
6254  {
6255  -4 /*fromYearTiny*/,
6256  10 /*toYearTiny*/,
6257  10 /*inMonth*/,
6258  7 /*onDayOfWeek*/,
6259  0 /*onDayOfMonth*/,
6260  8 /*atTimeCode*/,
6261  's' /*atTimeModifier*/,
6262  0 /*deltaCode*/,
6263  '-' /*letter*/,
6264  },
6265 
6266 };
6267 
6268 
6269 
6270 const extended::ZonePolicy kPolicyRussia = {
6271  3 /*numRules*/,
6272  kZoneRulesRussia /*rules*/,
6273  0 /* numLetters */,
6274  nullptr /* letters */,
6275 };
6276 
6277 //---------------------------------------------------------------------------
6278 // Policy name: RussiaAsia
6279 // Rule count: 3
6280 // Memory (8-bit): 33
6281 // Memory (32-bit): 37
6282 //---------------------------------------------------------------------------
6283 
6284 static const extended::ZoneRule kZoneRulesRussiaAsia[] = {
6285  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
6286  {
6287  -16 /*fromYearTiny*/,
6288  -5 /*toYearTiny*/,
6289  9 /*inMonth*/,
6290  7 /*onDayOfWeek*/,
6291  0 /*onDayOfMonth*/,
6292  8 /*atTimeCode*/,
6293  's' /*atTimeModifier*/,
6294  0 /*deltaCode*/,
6295  '-' /*letter*/,
6296  },
6297  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
6298  {
6299  -15 /*fromYearTiny*/,
6300  10 /*toYearTiny*/,
6301  3 /*inMonth*/,
6302  7 /*onDayOfWeek*/,
6303  0 /*onDayOfMonth*/,
6304  8 /*atTimeCode*/,
6305  's' /*atTimeModifier*/,
6306  4 /*deltaCode*/,
6307  '-' /*letter*/,
6308  },
6309  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
6310  {
6311  -4 /*fromYearTiny*/,
6312  10 /*toYearTiny*/,
6313  10 /*inMonth*/,
6314  7 /*onDayOfWeek*/,
6315  0 /*onDayOfMonth*/,
6316  8 /*atTimeCode*/,
6317  's' /*atTimeModifier*/,
6318  0 /*deltaCode*/,
6319  '-' /*letter*/,
6320  },
6321 
6322 };
6323 
6324 
6325 
6326 const extended::ZonePolicy kPolicyRussiaAsia = {
6327  3 /*numRules*/,
6328  kZoneRulesRussiaAsia /*rules*/,
6329  0 /* numLetters */,
6330  nullptr /* letters */,
6331 };
6332 
6333 //---------------------------------------------------------------------------
6334 // Policy name: SA
6335 // Rule count: 1
6336 // Memory (8-bit): 15
6337 // Memory (32-bit): 19
6338 //---------------------------------------------------------------------------
6339 
6340 static const extended::ZoneRule kZoneRulesSA[] = {
6341  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
6342  {
6343  -57 /*fromYearTiny*/,
6344  -56 /*toYearTiny*/,
6345  3 /*inMonth*/,
6346  7 /*onDayOfWeek*/,
6347  15 /*onDayOfMonth*/,
6348  8 /*atTimeCode*/,
6349  'w' /*atTimeModifier*/,
6350  0 /*deltaCode*/,
6351  '-' /*letter*/,
6352  },
6353 
6354 };
6355 
6356 
6357 
6358 const extended::ZonePolicy kPolicySA = {
6359  1 /*numRules*/,
6360  kZoneRulesSA /*rules*/,
6361  0 /* numLetters */,
6362  nullptr /* letters */,
6363 };
6364 
6365 //---------------------------------------------------------------------------
6366 // Policy name: Salv
6367 // Rule count: 1
6368 // Memory (8-bit): 15
6369 // Memory (32-bit): 19
6370 //---------------------------------------------------------------------------
6371 
6372 static const extended::ZoneRule kZoneRulesSalv[] = {
6373  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
6374  {
6375  -13 /*fromYearTiny*/,
6376  -12 /*toYearTiny*/,
6377  9 /*inMonth*/,
6378  7 /*onDayOfWeek*/,
6379  0 /*onDayOfMonth*/,
6380  0 /*atTimeCode*/,
6381  'w' /*atTimeModifier*/,
6382  0 /*deltaCode*/,
6383  'S' /*letter*/,
6384  },
6385 
6386 };
6387 
6388 
6389 
6390 const extended::ZonePolicy kPolicySalv = {
6391  1 /*numRules*/,
6392  kZoneRulesSalv /*rules*/,
6393  0 /* numLetters */,
6394  nullptr /* letters */,
6395 };
6396 
6397 //---------------------------------------------------------------------------
6398 // Policy name: SanLuis
6399 // Rule count: 3
6400 // Memory (8-bit): 33
6401 // Memory (32-bit): 37
6402 //---------------------------------------------------------------------------
6403 
6404 static const extended::ZoneRule kZoneRulesSanLuis[] = {
6405  // Anchor: Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6406  {
6407  -127 /*fromYearTiny*/,
6408  -127 /*toYearTiny*/,
6409  1 /*inMonth*/,
6410  0 /*onDayOfWeek*/,
6411  1 /*onDayOfMonth*/,
6412  0 /*atTimeCode*/,
6413  'w' /*atTimeModifier*/,
6414  0 /*deltaCode*/,
6415  '-' /*letter*/,
6416  },
6417  // Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6418  {
6419  8 /*fromYearTiny*/,
6420  9 /*toYearTiny*/,
6421  3 /*inMonth*/,
6422  7 /*onDayOfWeek*/,
6423  8 /*onDayOfMonth*/,
6424  0 /*atTimeCode*/,
6425  'w' /*atTimeModifier*/,
6426  0 /*deltaCode*/,
6427  '-' /*letter*/,
6428  },
6429  // Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
6430  {
6431  7 /*fromYearTiny*/,
6432  8 /*toYearTiny*/,
6433  10 /*inMonth*/,
6434  7 /*onDayOfWeek*/,
6435  8 /*onDayOfMonth*/,
6436  0 /*atTimeCode*/,
6437  'w' /*atTimeModifier*/,
6438  4 /*deltaCode*/,
6439  '-' /*letter*/,
6440  },
6441 
6442 };
6443 
6444 
6445 
6446 const extended::ZonePolicy kPolicySanLuis = {
6447  3 /*numRules*/,
6448  kZoneRulesSanLuis /*rules*/,
6449  0 /* numLetters */,
6450  nullptr /* letters */,
6451 };
6452 
6453 //---------------------------------------------------------------------------
6454 // Policy name: StJohns
6455 // Rule count: 5
6456 // Memory (8-bit): 56
6457 // Memory (32-bit): 62
6458 //---------------------------------------------------------------------------
6459 
6460 static const extended::ZoneRule kZoneRulesStJohns[] = {
6461  // Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
6462  {
6463  -13 /*fromYearTiny*/,
6464  6 /*toYearTiny*/,
6465  10 /*inMonth*/,
6466  7 /*onDayOfWeek*/,
6467  0 /*onDayOfMonth*/,
6468  0 /*atTimeCode*/,
6469  'w' /*atTimeModifier*/,
6470  0 /*deltaCode*/,
6471  'S' /*letter*/,
6472  },
6473  // Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
6474  {
6475  -12 /*fromYearTiny*/,
6476  -12 /*toYearTiny*/,
6477  4 /*inMonth*/,
6478  7 /*onDayOfWeek*/,
6479  1 /*onDayOfMonth*/,
6480  0 /*atTimeCode*/,
6481  'w' /*atTimeModifier*/,
6482  8 /*deltaCode*/,
6483  0 /*letter; "DD"*/,
6484  },
6485  // Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
6486  {
6487  -11 /*fromYearTiny*/,
6488  6 /*toYearTiny*/,
6489  4 /*inMonth*/,
6490  7 /*onDayOfWeek*/,
6491  1 /*onDayOfMonth*/,
6492  0 /*atTimeCode*/,
6493  'w' /*atTimeModifier*/,
6494  4 /*deltaCode*/,
6495  'D' /*letter*/,
6496  },
6497  // Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
6498  {
6499  7 /*fromYearTiny*/,
6500  11 /*toYearTiny*/,
6501  3 /*inMonth*/,
6502  7 /*onDayOfWeek*/,
6503  8 /*onDayOfMonth*/,
6504  0 /*atTimeCode*/,
6505  'w' /*atTimeModifier*/,
6506  4 /*deltaCode*/,
6507  'D' /*letter*/,
6508  },
6509  // Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
6510  {
6511  7 /*fromYearTiny*/,
6512  10 /*toYearTiny*/,
6513  11 /*inMonth*/,
6514  7 /*onDayOfWeek*/,
6515  1 /*onDayOfMonth*/,
6516  0 /*atTimeCode*/,
6517  'w' /*atTimeModifier*/,
6518  0 /*deltaCode*/,
6519  'S' /*letter*/,
6520  },
6521 
6522 };
6523 
6524 static const char* const kLettersStJohns[] = {
6525  /*0*/ "DD",
6526 
6527 };
6528 
6529 
6530 const extended::ZonePolicy kPolicyStJohns = {
6531  5 /*numRules*/,
6532  kZoneRulesStJohns /*rules*/,
6533  1 /* numLetters */,
6534  kLettersStJohns /* letters */,
6535 };
6536 
6537 //---------------------------------------------------------------------------
6538 // Policy name: Sudan
6539 // Rule count: 1
6540 // Memory (8-bit): 15
6541 // Memory (32-bit): 19
6542 //---------------------------------------------------------------------------
6543 
6544 static const extended::ZoneRule kZoneRulesSudan[] = {
6545  // Rule Sudan 1970 1985 - Oct 15 0:00 0 -
6546  {
6547  -30 /*fromYearTiny*/,
6548  -15 /*toYearTiny*/,
6549  10 /*inMonth*/,
6550  0 /*onDayOfWeek*/,
6551  15 /*onDayOfMonth*/,
6552  0 /*atTimeCode*/,
6553  'w' /*atTimeModifier*/,
6554  0 /*deltaCode*/,
6555  '-' /*letter*/,
6556  },
6557 
6558 };
6559 
6560 
6561 
6562 const extended::ZonePolicy kPolicySudan = {
6563  1 /*numRules*/,
6564  kZoneRulesSudan /*rules*/,
6565  0 /* numLetters */,
6566  nullptr /* letters */,
6567 };
6568 
6569 //---------------------------------------------------------------------------
6570 // Policy name: Syria
6571 // Rule count: 12
6572 // Memory (8-bit): 114
6573 // Memory (32-bit): 118
6574 //---------------------------------------------------------------------------
6575 
6576 static const extended::ZoneRule kZoneRulesSyria[] = {
6577  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
6578  {
6579  -6 /*fromYearTiny*/,
6580  5 /*toYearTiny*/,
6581  10 /*inMonth*/,
6582  0 /*onDayOfWeek*/,
6583  1 /*onDayOfMonth*/,
6584  0 /*atTimeCode*/,
6585  'w' /*atTimeModifier*/,
6586  0 /*deltaCode*/,
6587  '-' /*letter*/,
6588  },
6589  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
6590  {
6591  -3 /*fromYearTiny*/,
6592  -2 /*toYearTiny*/,
6593  3 /*inMonth*/,
6594  1 /*onDayOfWeek*/,
6595  0 /*onDayOfMonth*/,
6596  0 /*atTimeCode*/,
6597  'w' /*atTimeModifier*/,
6598  4 /*deltaCode*/,
6599  'S' /*letter*/,
6600  },
6601  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
6602  {
6603  -1 /*fromYearTiny*/,
6604  6 /*toYearTiny*/,
6605  4 /*inMonth*/,
6606  0 /*onDayOfWeek*/,
6607  1 /*onDayOfMonth*/,
6608  0 /*atTimeCode*/,
6609  'w' /*atTimeModifier*/,
6610  4 /*deltaCode*/,
6611  'S' /*letter*/,
6612  },
6613  // Rule Syria 2006 only - Sep 22 0:00 0 -
6614  {
6615  6 /*fromYearTiny*/,
6616  6 /*toYearTiny*/,
6617  9 /*inMonth*/,
6618  0 /*onDayOfWeek*/,
6619  22 /*onDayOfMonth*/,
6620  0 /*atTimeCode*/,
6621  'w' /*atTimeModifier*/,
6622  0 /*deltaCode*/,
6623  '-' /*letter*/,
6624  },
6625  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
6626  {
6627  7 /*fromYearTiny*/,
6628  7 /*toYearTiny*/,
6629  3 /*inMonth*/,
6630  5 /*onDayOfWeek*/,
6631  0 /*onDayOfMonth*/,
6632  0 /*atTimeCode*/,
6633  'w' /*atTimeModifier*/,
6634  4 /*deltaCode*/,
6635  'S' /*letter*/,
6636  },
6637  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
6638  {
6639  7 /*fromYearTiny*/,
6640  7 /*toYearTiny*/,
6641  11 /*inMonth*/,
6642  5 /*onDayOfWeek*/,
6643  1 /*onDayOfMonth*/,
6644  0 /*atTimeCode*/,
6645  'w' /*atTimeModifier*/,
6646  0 /*deltaCode*/,
6647  '-' /*letter*/,
6648  },
6649  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
6650  {
6651  8 /*fromYearTiny*/,
6652  8 /*toYearTiny*/,
6653  4 /*inMonth*/,
6654  5 /*onDayOfWeek*/,
6655  1 /*onDayOfMonth*/,
6656  0 /*atTimeCode*/,
6657  'w' /*atTimeModifier*/,
6658  4 /*deltaCode*/,
6659  'S' /*letter*/,
6660  },
6661  // Rule Syria 2008 only - Nov 1 0:00 0 -
6662  {
6663  8 /*fromYearTiny*/,
6664  8 /*toYearTiny*/,
6665  11 /*inMonth*/,
6666  0 /*onDayOfWeek*/,
6667  1 /*onDayOfMonth*/,
6668  0 /*atTimeCode*/,
6669  'w' /*atTimeModifier*/,
6670  0 /*deltaCode*/,
6671  '-' /*letter*/,
6672  },
6673  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
6674  {
6675  9 /*fromYearTiny*/,
6676  9 /*toYearTiny*/,
6677  3 /*inMonth*/,
6678  5 /*onDayOfWeek*/,
6679  0 /*onDayOfMonth*/,
6680  0 /*atTimeCode*/,
6681  'w' /*atTimeModifier*/,
6682  4 /*deltaCode*/,
6683  'S' /*letter*/,
6684  },
6685  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
6686  {
6687  10 /*fromYearTiny*/,
6688  11 /*toYearTiny*/,
6689  4 /*inMonth*/,
6690  5 /*onDayOfWeek*/,
6691  1 /*onDayOfMonth*/,
6692  0 /*atTimeCode*/,
6693  'w' /*atTimeModifier*/,
6694  4 /*deltaCode*/,
6695  'S' /*letter*/,
6696  },
6697  // Rule Syria 2012 max - Mar lastFri 0:00 1:00 S
6698  {
6699  12 /*fromYearTiny*/,
6700  126 /*toYearTiny*/,
6701  3 /*inMonth*/,
6702  5 /*onDayOfWeek*/,
6703  0 /*onDayOfMonth*/,
6704  0 /*atTimeCode*/,
6705  'w' /*atTimeModifier*/,
6706  4 /*deltaCode*/,
6707  'S' /*letter*/,
6708  },
6709  // Rule Syria 2009 max - Oct lastFri 0:00 0 -
6710  {
6711  9 /*fromYearTiny*/,
6712  126 /*toYearTiny*/,
6713  10 /*inMonth*/,
6714  5 /*onDayOfWeek*/,
6715  0 /*onDayOfMonth*/,
6716  0 /*atTimeCode*/,
6717  'w' /*atTimeModifier*/,
6718  0 /*deltaCode*/,
6719  '-' /*letter*/,
6720  },
6721 
6722 };
6723 
6724 
6725 
6726 const extended::ZonePolicy kPolicySyria = {
6727  12 /*numRules*/,
6728  kZoneRulesSyria /*rules*/,
6729  0 /* numLetters */,
6730  nullptr /* letters */,
6731 };
6732 
6733 //---------------------------------------------------------------------------
6734 // Policy name: Taiwan
6735 // Rule count: 1
6736 // Memory (8-bit): 15
6737 // Memory (32-bit): 19
6738 //---------------------------------------------------------------------------
6739 
6740 static const extended::ZoneRule kZoneRulesTaiwan[] = {
6741  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
6742  {
6743  -21 /*fromYearTiny*/,
6744  -21 /*toYearTiny*/,
6745  10 /*inMonth*/,
6746  0 /*onDayOfWeek*/,
6747  1 /*onDayOfMonth*/,
6748  0 /*atTimeCode*/,
6749  'w' /*atTimeModifier*/,
6750  0 /*deltaCode*/,
6751  'S' /*letter*/,
6752  },
6753 
6754 };
6755 
6756 
6757 
6758 const extended::ZonePolicy kPolicyTaiwan = {
6759  1 /*numRules*/,
6760  kZoneRulesTaiwan /*rules*/,
6761  0 /* numLetters */,
6762  nullptr /* letters */,
6763 };
6764 
6765 //---------------------------------------------------------------------------
6766 // Policy name: Thule
6767 // Rule count: 5
6768 // Memory (8-bit): 51
6769 // Memory (32-bit): 55
6770 //---------------------------------------------------------------------------
6771 
6772 static const extended::ZoneRule kZoneRulesThule[] = {
6773  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
6774  {
6775  -9 /*fromYearTiny*/,
6776  -8 /*toYearTiny*/,
6777  9 /*inMonth*/,
6778  7 /*onDayOfWeek*/,
6779  0 /*onDayOfMonth*/,
6780  8 /*atTimeCode*/,
6781  'w' /*atTimeModifier*/,
6782  0 /*deltaCode*/,
6783  'S' /*letter*/,
6784  },
6785  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
6786  {
6787  -7 /*fromYearTiny*/,
6788  6 /*toYearTiny*/,
6789  4 /*inMonth*/,
6790  7 /*onDayOfWeek*/,
6791  1 /*onDayOfMonth*/,
6792  8 /*atTimeCode*/,
6793  'w' /*atTimeModifier*/,
6794  4 /*deltaCode*/,
6795  'D' /*letter*/,
6796  },
6797  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
6798  {
6799  -7 /*fromYearTiny*/,
6800  6 /*toYearTiny*/,
6801  10 /*inMonth*/,
6802  7 /*onDayOfWeek*/,
6803  0 /*onDayOfMonth*/,
6804  8 /*atTimeCode*/,
6805  'w' /*atTimeModifier*/,
6806  0 /*deltaCode*/,
6807  'S' /*letter*/,
6808  },
6809  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
6810  {
6811  7 /*fromYearTiny*/,
6812  126 /*toYearTiny*/,
6813  3 /*inMonth*/,
6814  7 /*onDayOfWeek*/,
6815  8 /*onDayOfMonth*/,
6816  8 /*atTimeCode*/,
6817  'w' /*atTimeModifier*/,
6818  4 /*deltaCode*/,
6819  'D' /*letter*/,
6820  },
6821  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
6822  {
6823  7 /*fromYearTiny*/,
6824  126 /*toYearTiny*/,
6825  11 /*inMonth*/,
6826  7 /*onDayOfWeek*/,
6827  1 /*onDayOfMonth*/,
6828  8 /*atTimeCode*/,
6829  'w' /*atTimeModifier*/,
6830  0 /*deltaCode*/,
6831  'S' /*letter*/,
6832  },
6833 
6834 };
6835 
6836 
6837 
6838 const extended::ZonePolicy kPolicyThule = {
6839  5 /*numRules*/,
6840  kZoneRulesThule /*rules*/,
6841  0 /* numLetters */,
6842  nullptr /* letters */,
6843 };
6844 
6845 //---------------------------------------------------------------------------
6846 // Policy name: Tonga
6847 // Rule count: 7
6848 // Memory (8-bit): 69
6849 // Memory (32-bit): 73
6850 //---------------------------------------------------------------------------
6851 
6852 static const extended::ZoneRule kZoneRulesTonga[] = {
6853  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
6854  {
6855  -127 /*fromYearTiny*/,
6856  -127 /*toYearTiny*/,
6857  1 /*inMonth*/,
6858  0 /*onDayOfWeek*/,
6859  1 /*onDayOfMonth*/,
6860  0 /*atTimeCode*/,
6861  'w' /*atTimeModifier*/,
6862  0 /*deltaCode*/,
6863  '-' /*letter*/,
6864  },
6865  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
6866  {
6867  -1 /*fromYearTiny*/,
6868  -1 /*toYearTiny*/,
6869  10 /*inMonth*/,
6870  0 /*onDayOfWeek*/,
6871  7 /*onDayOfMonth*/,
6872  8 /*atTimeCode*/,
6873  's' /*atTimeModifier*/,
6874  4 /*deltaCode*/,
6875  '-' /*letter*/,
6876  },
6877  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
6878  {
6879  0 /*fromYearTiny*/,
6880  0 /*toYearTiny*/,
6881  3 /*inMonth*/,
6882  0 /*onDayOfWeek*/,
6883  19 /*onDayOfMonth*/,
6884  8 /*atTimeCode*/,
6885  's' /*atTimeModifier*/,
6886  0 /*deltaCode*/,
6887  '-' /*letter*/,
6888  },
6889  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
6890  {
6891  0 /*fromYearTiny*/,
6892  1 /*toYearTiny*/,
6893  11 /*inMonth*/,
6894  7 /*onDayOfWeek*/,
6895  1 /*onDayOfMonth*/,
6896  8 /*atTimeCode*/,
6897  'w' /*atTimeModifier*/,
6898  4 /*deltaCode*/,
6899  '-' /*letter*/,
6900  },
6901  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
6902  {
6903  1 /*fromYearTiny*/,
6904  2 /*toYearTiny*/,
6905  1 /*inMonth*/,
6906  7 /*onDayOfWeek*/,
6907  0 /*onDayOfMonth*/,
6908  8 /*atTimeCode*/,
6909  'w' /*atTimeModifier*/,
6910  0 /*deltaCode*/,
6911  '-' /*letter*/,
6912  },
6913  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
6914  {
6915  16 /*fromYearTiny*/,
6916  16 /*toYearTiny*/,
6917  11 /*inMonth*/,
6918  7 /*onDayOfWeek*/,
6919  1 /*onDayOfMonth*/,
6920  8 /*atTimeCode*/,
6921  'w' /*atTimeModifier*/,
6922  4 /*deltaCode*/,
6923  '-' /*letter*/,
6924  },
6925  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
6926  {
6927  17 /*fromYearTiny*/,
6928  17 /*toYearTiny*/,
6929  1 /*inMonth*/,
6930  7 /*onDayOfWeek*/,
6931  15 /*onDayOfMonth*/,
6932  12 /*atTimeCode*/,
6933  'w' /*atTimeModifier*/,
6934  0 /*deltaCode*/,
6935  '-' /*letter*/,
6936  },
6937 
6938 };
6939 
6940 
6941 
6942 const extended::ZonePolicy kPolicyTonga = {
6943  7 /*numRules*/,
6944  kZoneRulesTonga /*rules*/,
6945  0 /* numLetters */,
6946  nullptr /* letters */,
6947 };
6948 
6949 //---------------------------------------------------------------------------
6950 // Policy name: Troll
6951 // Rule count: 3
6952 // Memory (8-bit): 45
6953 // Memory (32-bit): 53
6954 //---------------------------------------------------------------------------
6955 
6956 static const extended::ZoneRule kZoneRulesTroll[] = {
6957  // Anchor: Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
6958  {
6959  -127 /*fromYearTiny*/,
6960  -127 /*toYearTiny*/,
6961  1 /*inMonth*/,
6962  0 /*onDayOfWeek*/,
6963  1 /*onDayOfMonth*/,
6964  0 /*atTimeCode*/,
6965  'w' /*atTimeModifier*/,
6966  0 /*deltaCode*/,
6967  0 /*letter; "+00"*/,
6968  },
6969  // Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
6970  {
6971  5 /*fromYearTiny*/,
6972  126 /*toYearTiny*/,
6973  3 /*inMonth*/,
6974  7 /*onDayOfWeek*/,
6975  0 /*onDayOfMonth*/,
6976  4 /*atTimeCode*/,
6977  'u' /*atTimeModifier*/,
6978  8 /*deltaCode*/,
6979  1 /*letter; "+02"*/,
6980  },
6981  // Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
6982  {
6983  4 /*fromYearTiny*/,
6984  126 /*toYearTiny*/,
6985  10 /*inMonth*/,
6986  7 /*onDayOfWeek*/,
6987  0 /*onDayOfMonth*/,
6988  4 /*atTimeCode*/,
6989  'u' /*atTimeModifier*/,
6990  0 /*deltaCode*/,
6991  0 /*letter; "+00"*/,
6992  },
6993 
6994 };
6995 
6996 static const char* const kLettersTroll[] = {
6997  /*0*/ "+00",
6998  /*1*/ "+02",
6999 
7000 };
7001 
7002 
7003 const extended::ZonePolicy kPolicyTroll = {
7004  3 /*numRules*/,
7005  kZoneRulesTroll /*rules*/,
7006  2 /* numLetters */,
7007  kLettersTroll /* letters */,
7008 };
7009 
7010 //---------------------------------------------------------------------------
7011 // Policy name: Tunisia
7012 // Rule count: 5
7013 // Memory (8-bit): 51
7014 // Memory (32-bit): 55
7015 //---------------------------------------------------------------------------
7016 
7017 static const extended::ZoneRule kZoneRulesTunisia[] = {
7018  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
7019  {
7020  -12 /*fromYearTiny*/,
7021  -10 /*toYearTiny*/,
7022  9 /*inMonth*/,
7023  7 /*onDayOfWeek*/,
7024  0 /*onDayOfMonth*/,
7025  0 /*atTimeCode*/,
7026  's' /*atTimeModifier*/,
7027  0 /*deltaCode*/,
7028  '-' /*letter*/,
7029  },
7030  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
7031  {
7032  5 /*fromYearTiny*/,
7033  5 /*toYearTiny*/,
7034  5 /*inMonth*/,
7035  0 /*onDayOfWeek*/,
7036  1 /*onDayOfMonth*/,
7037  0 /*atTimeCode*/,
7038  's' /*atTimeModifier*/,
7039  4 /*deltaCode*/,
7040  'S' /*letter*/,
7041  },
7042  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
7043  {
7044  5 /*fromYearTiny*/,
7045  5 /*toYearTiny*/,
7046  9 /*inMonth*/,
7047  0 /*onDayOfWeek*/,
7048  30 /*onDayOfMonth*/,
7049  4 /*atTimeCode*/,
7050  's' /*atTimeModifier*/,
7051  0 /*deltaCode*/,
7052  '-' /*letter*/,
7053  },
7054  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
7055  {
7056  6 /*fromYearTiny*/,
7057  8 /*toYearTiny*/,
7058  3 /*inMonth*/,
7059  7 /*onDayOfWeek*/,
7060  0 /*onDayOfMonth*/,
7061  8 /*atTimeCode*/,
7062  's' /*atTimeModifier*/,
7063  4 /*deltaCode*/,
7064  'S' /*letter*/,
7065  },
7066  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
7067  {
7068  6 /*fromYearTiny*/,
7069  8 /*toYearTiny*/,
7070  10 /*inMonth*/,
7071  7 /*onDayOfWeek*/,
7072  0 /*onDayOfMonth*/,
7073  8 /*atTimeCode*/,
7074  's' /*atTimeModifier*/,
7075  0 /*deltaCode*/,
7076  '-' /*letter*/,
7077  },
7078 
7079 };
7080 
7081 
7082 
7083 const extended::ZonePolicy kPolicyTunisia = {
7084  5 /*numRules*/,
7085  kZoneRulesTunisia /*rules*/,
7086  0 /* numLetters */,
7087  nullptr /* letters */,
7088 };
7089 
7090 //---------------------------------------------------------------------------
7091 // Policy name: Turkey
7092 // Rule count: 3
7093 // Memory (8-bit): 33
7094 // Memory (32-bit): 37
7095 //---------------------------------------------------------------------------
7096 
7097 static const extended::ZoneRule kZoneRulesTurkey[] = {
7098  // Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
7099  {
7100  -14 /*fromYearTiny*/,
7101  -5 /*toYearTiny*/,
7102  9 /*inMonth*/,
7103  7 /*onDayOfWeek*/,
7104  0 /*onDayOfMonth*/,
7105  4 /*atTimeCode*/,
7106  's' /*atTimeModifier*/,
7107  0 /*deltaCode*/,
7108  '-' /*letter*/,
7109  },
7110  // Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S
7111  {
7112  -5 /*fromYearTiny*/,
7113  6 /*toYearTiny*/,
7114  3 /*inMonth*/,
7115  7 /*onDayOfWeek*/,
7116  0 /*onDayOfMonth*/,
7117  4 /*atTimeCode*/,
7118  's' /*atTimeModifier*/,
7119  4 /*deltaCode*/,
7120  'S' /*letter*/,
7121  },
7122  // Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
7123  {
7124  -4 /*fromYearTiny*/,
7125  6 /*toYearTiny*/,
7126  10 /*inMonth*/,
7127  7 /*onDayOfWeek*/,
7128  0 /*onDayOfMonth*/,
7129  4 /*atTimeCode*/,
7130  's' /*atTimeModifier*/,
7131  0 /*deltaCode*/,
7132  '-' /*letter*/,
7133  },
7134 
7135 };
7136 
7137 
7138 
7139 const extended::ZonePolicy kPolicyTurkey = {
7140  3 /*numRules*/,
7141  kZoneRulesTurkey /*rules*/,
7142  0 /* numLetters */,
7143  nullptr /* letters */,
7144 };
7145 
7146 //---------------------------------------------------------------------------
7147 // Policy name: US
7148 // Rule count: 5
7149 // Memory (8-bit): 51
7150 // Memory (32-bit): 55
7151 //---------------------------------------------------------------------------
7152 
7153 static const extended::ZoneRule kZoneRulesUS[] = {
7154  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
7155  {
7156  -33 /*fromYearTiny*/,
7157  6 /*toYearTiny*/,
7158  10 /*inMonth*/,
7159  7 /*onDayOfWeek*/,
7160  0 /*onDayOfMonth*/,
7161  8 /*atTimeCode*/,
7162  'w' /*atTimeModifier*/,
7163  0 /*deltaCode*/,
7164  'S' /*letter*/,
7165  },
7166  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
7167  {
7168  -24 /*fromYearTiny*/,
7169  -14 /*toYearTiny*/,
7170  4 /*inMonth*/,
7171  7 /*onDayOfWeek*/,
7172  0 /*onDayOfMonth*/,
7173  8 /*atTimeCode*/,
7174  'w' /*atTimeModifier*/,
7175  4 /*deltaCode*/,
7176  'D' /*letter*/,
7177  },
7178  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
7179  {
7180  -13 /*fromYearTiny*/,
7181  6 /*toYearTiny*/,
7182  4 /*inMonth*/,
7183  7 /*onDayOfWeek*/,
7184  1 /*onDayOfMonth*/,
7185  8 /*atTimeCode*/,
7186  'w' /*atTimeModifier*/,
7187  4 /*deltaCode*/,
7188  'D' /*letter*/,
7189  },
7190  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
7191  {
7192  7 /*fromYearTiny*/,
7193  126 /*toYearTiny*/,
7194  3 /*inMonth*/,
7195  7 /*onDayOfWeek*/,
7196  8 /*onDayOfMonth*/,
7197  8 /*atTimeCode*/,
7198  'w' /*atTimeModifier*/,
7199  4 /*deltaCode*/,
7200  'D' /*letter*/,
7201  },
7202  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
7203  {
7204  7 /*fromYearTiny*/,
7205  126 /*toYearTiny*/,
7206  11 /*inMonth*/,
7207  7 /*onDayOfWeek*/,
7208  1 /*onDayOfMonth*/,
7209  8 /*atTimeCode*/,
7210  'w' /*atTimeModifier*/,
7211  0 /*deltaCode*/,
7212  'S' /*letter*/,
7213  },
7214 
7215 };
7216 
7217 
7218 
7219 const extended::ZonePolicy kPolicyUS = {
7220  5 /*numRules*/,
7221  kZoneRulesUS /*rules*/,
7222  0 /* numLetters */,
7223  nullptr /* letters */,
7224 };
7225 
7226 //---------------------------------------------------------------------------
7227 // Policy name: Uruguay
7228 // Rule count: 6
7229 // Memory (8-bit): 60
7230 // Memory (32-bit): 64
7231 //---------------------------------------------------------------------------
7232 
7233 static const extended::ZoneRule kZoneRulesUruguay[] = {
7234  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
7235  {
7236  -7 /*fromYearTiny*/,
7237  -7 /*toYearTiny*/,
7238  2 /*inMonth*/,
7239  0 /*onDayOfWeek*/,
7240  28 /*onDayOfMonth*/,
7241  0 /*atTimeCode*/,
7242  'w' /*atTimeModifier*/,
7243  0 /*deltaCode*/,
7244  '-' /*letter*/,
7245  },
7246  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
7247  {
7248  4 /*fromYearTiny*/,
7249  4 /*toYearTiny*/,
7250  9 /*inMonth*/,
7251  0 /*onDayOfWeek*/,
7252  19 /*onDayOfMonth*/,
7253  0 /*atTimeCode*/,
7254  'w' /*atTimeModifier*/,
7255  4 /*deltaCode*/,
7256  '-' /*letter*/,
7257  },
7258  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
7259  {
7260  5 /*fromYearTiny*/,
7261  5 /*toYearTiny*/,
7262  3 /*inMonth*/,
7263  0 /*onDayOfWeek*/,
7264  27 /*onDayOfMonth*/,
7265  8 /*atTimeCode*/,
7266  'w' /*atTimeModifier*/,
7267  0 /*deltaCode*/,
7268  '-' /*letter*/,
7269  },
7270  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
7271  {
7272  5 /*fromYearTiny*/,
7273  5 /*toYearTiny*/,
7274  10 /*inMonth*/,
7275  0 /*onDayOfWeek*/,
7276  9 /*onDayOfMonth*/,
7277  8 /*atTimeCode*/,
7278  'w' /*atTimeModifier*/,
7279  4 /*deltaCode*/,
7280  '-' /*letter*/,
7281  },
7282  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
7283  {
7284  6 /*fromYearTiny*/,
7285  15 /*toYearTiny*/,
7286  3 /*inMonth*/,
7287  7 /*onDayOfWeek*/,
7288  8 /*onDayOfMonth*/,
7289  8 /*atTimeCode*/,
7290  'w' /*atTimeModifier*/,
7291  0 /*deltaCode*/,
7292  '-' /*letter*/,
7293  },
7294  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
7295  {
7296  6 /*fromYearTiny*/,
7297  14 /*toYearTiny*/,
7298  10 /*inMonth*/,
7299  7 /*onDayOfWeek*/,
7300  1 /*onDayOfMonth*/,
7301  8 /*atTimeCode*/,
7302  'w' /*atTimeModifier*/,
7303  4 /*deltaCode*/,
7304  '-' /*letter*/,
7305  },
7306 
7307 };
7308 
7309 
7310 
7311 const extended::ZonePolicy kPolicyUruguay = {
7312  6 /*numRules*/,
7313  kZoneRulesUruguay /*rules*/,
7314  0 /* numLetters */,
7315  nullptr /* letters */,
7316 };
7317 
7318 //---------------------------------------------------------------------------
7319 // Policy name: Vanuatu
7320 // Rule count: 1
7321 // Memory (8-bit): 15
7322 // Memory (32-bit): 19
7323 //---------------------------------------------------------------------------
7324 
7325 static const extended::ZoneRule kZoneRulesVanuatu[] = {
7326  // Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
7327  {
7328  -8 /*fromYearTiny*/,
7329  -7 /*toYearTiny*/,
7330  1 /*inMonth*/,
7331  7 /*onDayOfWeek*/,
7332  23 /*onDayOfMonth*/,
7333  0 /*atTimeCode*/,
7334  'w' /*atTimeModifier*/,
7335  0 /*deltaCode*/,
7336  '-' /*letter*/,
7337  },
7338 
7339 };
7340 
7341 
7342 
7343 const extended::ZonePolicy kPolicyVanuatu = {
7344  1 /*numRules*/,
7345  kZoneRulesVanuatu /*rules*/,
7346  0 /* numLetters */,
7347  nullptr /* letters */,
7348 };
7349 
7350 //---------------------------------------------------------------------------
7351 // Policy name: WS
7352 // Rule count: 6
7353 // Memory (8-bit): 60
7354 // Memory (32-bit): 64
7355 //---------------------------------------------------------------------------
7356 
7357 static const extended::ZoneRule kZoneRulesWS[] = {
7358  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7359  {
7360  -127 /*fromYearTiny*/,
7361  -127 /*toYearTiny*/,
7362  1 /*inMonth*/,
7363  0 /*onDayOfWeek*/,
7364  1 /*onDayOfMonth*/,
7365  0 /*atTimeCode*/,
7366  'w' /*atTimeModifier*/,
7367  0 /*deltaCode*/,
7368  '-' /*letter*/,
7369  },
7370  // Rule WS 2010 only - Sep lastSun 0:00 1 -
7371  {
7372  10 /*fromYearTiny*/,
7373  10 /*toYearTiny*/,
7374  9 /*inMonth*/,
7375  7 /*onDayOfWeek*/,
7376  0 /*onDayOfMonth*/,
7377  0 /*atTimeCode*/,
7378  'w' /*atTimeModifier*/,
7379  4 /*deltaCode*/,
7380  '-' /*letter*/,
7381  },
7382  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7383  {
7384  11 /*fromYearTiny*/,
7385  11 /*toYearTiny*/,
7386  4 /*inMonth*/,
7387  6 /*onDayOfWeek*/,
7388  1 /*onDayOfMonth*/,
7389  16 /*atTimeCode*/,
7390  'w' /*atTimeModifier*/,
7391  0 /*deltaCode*/,
7392  '-' /*letter*/,
7393  },
7394  // Rule WS 2011 only - Sep lastSat 3:00 1 -
7395  {
7396  11 /*fromYearTiny*/,
7397  11 /*toYearTiny*/,
7398  9 /*inMonth*/,
7399  6 /*onDayOfWeek*/,
7400  0 /*onDayOfMonth*/,
7401  12 /*atTimeCode*/,
7402  'w' /*atTimeModifier*/,
7403  4 /*deltaCode*/,
7404  '-' /*letter*/,
7405  },
7406  // Rule WS 2012 max - Apr Sun>=1 4:00 0 -
7407  {
7408  12 /*fromYearTiny*/,
7409  126 /*toYearTiny*/,
7410  4 /*inMonth*/,
7411  7 /*onDayOfWeek*/,
7412  1 /*onDayOfMonth*/,
7413  16 /*atTimeCode*/,
7414  'w' /*atTimeModifier*/,
7415  0 /*deltaCode*/,
7416  '-' /*letter*/,
7417  },
7418  // Rule WS 2012 max - Sep lastSun 3:00 1 -
7419  {
7420  12 /*fromYearTiny*/,
7421  126 /*toYearTiny*/,
7422  9 /*inMonth*/,
7423  7 /*onDayOfWeek*/,
7424  0 /*onDayOfMonth*/,
7425  12 /*atTimeCode*/,
7426  'w' /*atTimeModifier*/,
7427  4 /*deltaCode*/,
7428  '-' /*letter*/,
7429  },
7430 
7431 };
7432 
7433 
7434 
7435 const extended::ZonePolicy kPolicyWS = {
7436  6 /*numRules*/,
7437  kZoneRulesWS /*rules*/,
7438  0 /* numLetters */,
7439  nullptr /* letters */,
7440 };
7441 
7442 //---------------------------------------------------------------------------
7443 // Policy name: Winn
7444 // Rule count: 3
7445 // Memory (8-bit): 33
7446 // Memory (32-bit): 37
7447 //---------------------------------------------------------------------------
7448 
7449 static const extended::ZoneRule kZoneRulesWinn[] = {
7450  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
7451  {
7452  -34 /*fromYearTiny*/,
7453  -14 /*toYearTiny*/,
7454  4 /*inMonth*/,
7455  7 /*onDayOfWeek*/,
7456  0 /*onDayOfMonth*/,
7457  8 /*atTimeCode*/,
7458  's' /*atTimeModifier*/,
7459  4 /*deltaCode*/,
7460  'D' /*letter*/,
7461  },
7462  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
7463  {
7464  -34 /*fromYearTiny*/,
7465  5 /*toYearTiny*/,
7466  10 /*inMonth*/,
7467  7 /*onDayOfWeek*/,
7468  0 /*onDayOfMonth*/,
7469  8 /*atTimeCode*/,
7470  's' /*atTimeModifier*/,
7471  0 /*deltaCode*/,
7472  'S' /*letter*/,
7473  },
7474  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
7475  {
7476  -13 /*fromYearTiny*/,
7477  5 /*toYearTiny*/,
7478  4 /*inMonth*/,
7479  7 /*onDayOfWeek*/,
7480  1 /*onDayOfMonth*/,
7481  8 /*atTimeCode*/,
7482  's' /*atTimeModifier*/,
7483  4 /*deltaCode*/,
7484  'D' /*letter*/,
7485  },
7486 
7487 };
7488 
7489 
7490 
7491 const extended::ZonePolicy kPolicyWinn = {
7492  3 /*numRules*/,
7493  kZoneRulesWinn /*rules*/,
7494  0 /* numLetters */,
7495  nullptr /* letters */,
7496 };
7497 
7498 //---------------------------------------------------------------------------
7499 // Policy name: Zion
7500 // Rule count: 27
7501 // Memory (8-bit): 249
7502 // Memory (32-bit): 253
7503 //---------------------------------------------------------------------------
7504 
7505 static const extended::ZoneRule kZoneRulesZion[] = {
7506  // Rule Zion 1998 only - Sep 6 0:00 0 S
7507  {
7508  -2 /*fromYearTiny*/,
7509  -2 /*toYearTiny*/,
7510  9 /*inMonth*/,
7511  0 /*onDayOfWeek*/,
7512  6 /*onDayOfMonth*/,
7513  0 /*atTimeCode*/,
7514  'w' /*atTimeModifier*/,
7515  0 /*deltaCode*/,
7516  'S' /*letter*/,
7517  },
7518  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
7519  {
7520  -1 /*fromYearTiny*/,
7521  -1 /*toYearTiny*/,
7522  4 /*inMonth*/,
7523  0 /*onDayOfWeek*/,
7524  2 /*onDayOfMonth*/,
7525  8 /*atTimeCode*/,
7526  'w' /*atTimeModifier*/,
7527  4 /*deltaCode*/,
7528  'D' /*letter*/,
7529  },
7530  // Rule Zion 1999 only - Sep 3 2:00 0 S
7531  {
7532  -1 /*fromYearTiny*/,
7533  -1 /*toYearTiny*/,
7534  9 /*inMonth*/,
7535  0 /*onDayOfWeek*/,
7536  3 /*onDayOfMonth*/,
7537  8 /*atTimeCode*/,
7538  'w' /*atTimeModifier*/,
7539  0 /*deltaCode*/,
7540  'S' /*letter*/,
7541  },
7542  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
7543  {
7544  0 /*fromYearTiny*/,
7545  0 /*toYearTiny*/,
7546  4 /*inMonth*/,
7547  0 /*onDayOfWeek*/,
7548  14 /*onDayOfMonth*/,
7549  8 /*atTimeCode*/,
7550  'w' /*atTimeModifier*/,
7551  4 /*deltaCode*/,
7552  'D' /*letter*/,
7553  },
7554  // Rule Zion 2000 only - Oct 6 1:00 0 S
7555  {
7556  0 /*fromYearTiny*/,
7557  0 /*toYearTiny*/,
7558  10 /*inMonth*/,
7559  0 /*onDayOfWeek*/,
7560  6 /*onDayOfMonth*/,
7561  4 /*atTimeCode*/,
7562  'w' /*atTimeModifier*/,
7563  0 /*deltaCode*/,
7564  'S' /*letter*/,
7565  },
7566  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
7567  {
7568  1 /*fromYearTiny*/,
7569  1 /*toYearTiny*/,
7570  4 /*inMonth*/,
7571  0 /*onDayOfWeek*/,
7572  9 /*onDayOfMonth*/,
7573  4 /*atTimeCode*/,
7574  'w' /*atTimeModifier*/,
7575  4 /*deltaCode*/,
7576  'D' /*letter*/,
7577  },
7578  // Rule Zion 2001 only - Sep 24 1:00 0 S
7579  {
7580  1 /*fromYearTiny*/,
7581  1 /*toYearTiny*/,
7582  9 /*inMonth*/,
7583  0 /*onDayOfWeek*/,
7584  24 /*onDayOfMonth*/,
7585  4 /*atTimeCode*/,
7586  'w' /*atTimeModifier*/,
7587  0 /*deltaCode*/,
7588  'S' /*letter*/,
7589  },
7590  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
7591  {
7592  2 /*fromYearTiny*/,
7593  2 /*toYearTiny*/,
7594  3 /*inMonth*/,
7595  0 /*onDayOfWeek*/,
7596  29 /*onDayOfMonth*/,
7597  4 /*atTimeCode*/,
7598  'w' /*atTimeModifier*/,
7599  4 /*deltaCode*/,
7600  'D' /*letter*/,
7601  },
7602  // Rule Zion 2002 only - Oct 7 1:00 0 S
7603  {
7604  2 /*fromYearTiny*/,
7605  2 /*toYearTiny*/,
7606  10 /*inMonth*/,
7607  0 /*onDayOfWeek*/,
7608  7 /*onDayOfMonth*/,
7609  4 /*atTimeCode*/,
7610  'w' /*atTimeModifier*/,
7611  0 /*deltaCode*/,
7612  'S' /*letter*/,
7613  },
7614  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
7615  {
7616  3 /*fromYearTiny*/,
7617  3 /*toYearTiny*/,
7618  3 /*inMonth*/,
7619  0 /*onDayOfWeek*/,
7620  28 /*onDayOfMonth*/,
7621  4 /*atTimeCode*/,
7622  'w' /*atTimeModifier*/,
7623  4 /*deltaCode*/,
7624  'D' /*letter*/,
7625  },
7626  // Rule Zion 2003 only - Oct 3 1:00 0 S
7627  {
7628  3 /*fromYearTiny*/,
7629  3 /*toYearTiny*/,
7630  10 /*inMonth*/,
7631  0 /*onDayOfWeek*/,
7632  3 /*onDayOfMonth*/,
7633  4 /*atTimeCode*/,
7634  'w' /*atTimeModifier*/,
7635  0 /*deltaCode*/,
7636  'S' /*letter*/,
7637  },
7638  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
7639  {
7640  4 /*fromYearTiny*/,
7641  4 /*toYearTiny*/,
7642  4 /*inMonth*/,
7643  0 /*onDayOfWeek*/,
7644  7 /*onDayOfMonth*/,
7645  4 /*atTimeCode*/,
7646  'w' /*atTimeModifier*/,
7647  4 /*deltaCode*/,
7648  'D' /*letter*/,
7649  },
7650  // Rule Zion 2004 only - Sep 22 1:00 0 S
7651  {
7652  4 /*fromYearTiny*/,
7653  4 /*toYearTiny*/,
7654  9 /*inMonth*/,
7655  0 /*onDayOfWeek*/,
7656  22 /*onDayOfMonth*/,
7657  4 /*atTimeCode*/,
7658  'w' /*atTimeModifier*/,
7659  0 /*deltaCode*/,
7660  'S' /*letter*/,
7661  },
7662  // Rule Zion 2005 only - Apr 1 2:00 1:00 D
7663  {
7664  5 /*fromYearTiny*/,
7665  5 /*toYearTiny*/,
7666  4 /*inMonth*/,
7667  0 /*onDayOfWeek*/,
7668  1 /*onDayOfMonth*/,
7669  8 /*atTimeCode*/,
7670  'w' /*atTimeModifier*/,
7671  4 /*deltaCode*/,
7672  'D' /*letter*/,
7673  },
7674  // Rule Zion 2005 only - Oct 9 2:00 0 S
7675  {
7676  5 /*fromYearTiny*/,
7677  5 /*toYearTiny*/,
7678  10 /*inMonth*/,
7679  0 /*onDayOfWeek*/,
7680  9 /*onDayOfMonth*/,
7681  8 /*atTimeCode*/,
7682  'w' /*atTimeModifier*/,
7683  0 /*deltaCode*/,
7684  'S' /*letter*/,
7685  },
7686  // Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D
7687  {
7688  6 /*fromYearTiny*/,
7689  10 /*toYearTiny*/,
7690  3 /*inMonth*/,
7691  5 /*onDayOfWeek*/,
7692  26 /*onDayOfMonth*/,
7693  8 /*atTimeCode*/,
7694  'w' /*atTimeModifier*/,
7695  4 /*deltaCode*/,
7696  'D' /*letter*/,
7697  },
7698  // Rule Zion 2006 only - Oct 1 2:00 0 S
7699  {
7700  6 /*fromYearTiny*/,
7701  6 /*toYearTiny*/,
7702  10 /*inMonth*/,
7703  0 /*onDayOfWeek*/,
7704  1 /*onDayOfMonth*/,
7705  8 /*atTimeCode*/,
7706  'w' /*atTimeModifier*/,
7707  0 /*deltaCode*/,
7708  'S' /*letter*/,
7709  },
7710  // Rule Zion 2007 only - Sep 16 2:00 0 S
7711  {
7712  7 /*fromYearTiny*/,
7713  7 /*toYearTiny*/,
7714  9 /*inMonth*/,
7715  0 /*onDayOfWeek*/,
7716  16 /*onDayOfMonth*/,
7717  8 /*atTimeCode*/,
7718  'w' /*atTimeModifier*/,
7719  0 /*deltaCode*/,
7720  'S' /*letter*/,
7721  },
7722  // Rule Zion 2008 only - Oct 5 2:00 0 S
7723  {
7724  8 /*fromYearTiny*/,
7725  8 /*toYearTiny*/,
7726  10 /*inMonth*/,
7727  0 /*onDayOfWeek*/,
7728  5 /*onDayOfMonth*/,
7729  8 /*atTimeCode*/,
7730  'w' /*atTimeModifier*/,
7731  0 /*deltaCode*/,
7732  'S' /*letter*/,
7733  },
7734  // Rule Zion 2009 only - Sep 27 2:00 0 S
7735  {
7736  9 /*fromYearTiny*/,
7737  9 /*toYearTiny*/,
7738  9 /*inMonth*/,
7739  0 /*onDayOfWeek*/,
7740  27 /*onDayOfMonth*/,
7741  8 /*atTimeCode*/,
7742  'w' /*atTimeModifier*/,
7743  0 /*deltaCode*/,
7744  'S' /*letter*/,
7745  },
7746  // Rule Zion 2010 only - Sep 12 2:00 0 S
7747  {
7748  10 /*fromYearTiny*/,
7749  10 /*toYearTiny*/,
7750  9 /*inMonth*/,
7751  0 /*onDayOfWeek*/,
7752  12 /*onDayOfMonth*/,
7753  8 /*atTimeCode*/,
7754  'w' /*atTimeModifier*/,
7755  0 /*deltaCode*/,
7756  'S' /*letter*/,
7757  },
7758  // Rule Zion 2011 only - Apr 1 2:00 1:00 D
7759  {
7760  11 /*fromYearTiny*/,
7761  11 /*toYearTiny*/,
7762  4 /*inMonth*/,
7763  0 /*onDayOfWeek*/,
7764  1 /*onDayOfMonth*/,
7765  8 /*atTimeCode*/,
7766  'w' /*atTimeModifier*/,
7767  4 /*deltaCode*/,
7768  'D' /*letter*/,
7769  },
7770  // Rule Zion 2011 only - Oct 2 2:00 0 S
7771  {
7772  11 /*fromYearTiny*/,
7773  11 /*toYearTiny*/,
7774  10 /*inMonth*/,
7775  0 /*onDayOfWeek*/,
7776  2 /*onDayOfMonth*/,
7777  8 /*atTimeCode*/,
7778  'w' /*atTimeModifier*/,
7779  0 /*deltaCode*/,
7780  'S' /*letter*/,
7781  },
7782  // Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D
7783  {
7784  12 /*fromYearTiny*/,
7785  12 /*toYearTiny*/,
7786  3 /*inMonth*/,
7787  5 /*onDayOfWeek*/,
7788  26 /*onDayOfMonth*/,
7789  8 /*atTimeCode*/,
7790  'w' /*atTimeModifier*/,
7791  4 /*deltaCode*/,
7792  'D' /*letter*/,
7793  },
7794  // Rule Zion 2012 only - Sep 23 2:00 0 S
7795  {
7796  12 /*fromYearTiny*/,
7797  12 /*toYearTiny*/,
7798  9 /*inMonth*/,
7799  0 /*onDayOfWeek*/,
7800  23 /*onDayOfMonth*/,
7801  8 /*atTimeCode*/,
7802  'w' /*atTimeModifier*/,
7803  0 /*deltaCode*/,
7804  'S' /*letter*/,
7805  },
7806  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
7807  {
7808  13 /*fromYearTiny*/,
7809  126 /*toYearTiny*/,
7810  3 /*inMonth*/,
7811  5 /*onDayOfWeek*/,
7812  23 /*onDayOfMonth*/,
7813  8 /*atTimeCode*/,
7814  'w' /*atTimeModifier*/,
7815  4 /*deltaCode*/,
7816  'D' /*letter*/,
7817  },
7818  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
7819  {
7820  13 /*fromYearTiny*/,
7821  126 /*toYearTiny*/,
7822  10 /*inMonth*/,
7823  7 /*onDayOfWeek*/,
7824  0 /*onDayOfMonth*/,
7825  8 /*atTimeCode*/,
7826  'w' /*atTimeModifier*/,
7827  0 /*deltaCode*/,
7828  'S' /*letter*/,
7829  },
7830 
7831 };
7832 
7833 
7834 
7835 const extended::ZonePolicy kPolicyZion = {
7836  27 /*numRules*/,
7837  kZoneRulesZion /*rules*/,
7838  0 /* numLetters */,
7839  nullptr /* letters */,
7840 };
7841 
7842 
7843 
7844 }
7845 }