AceTime  2.2.0
Date and time classes for Arduino that support timezones from the TZ Database.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ /home/brian/src/AceTimeTools/src/acetimetools/tzcompiler.py
4 // --input_dir /home/brian/src/AceTime/src/zonedb/tzfiles
5 // --output_dir /home/brian/src/AceTime/src/zonedb
6 // --tz_version 2022g
7 // --action zonedb
8 // --language arduino
9 // --scope basic
10 // --generate_int16_years
11 // --start_year 2000
12 // --until_year 10000
13 //
14 // using the TZ Database files
15 //
16 // africa
17 // antarctica
18 // asia
19 // australasia
20 // backward
21 // etcetera
22 // europe
23 // northamerica
24 // southamerica
25 //
26 // from https://github.com/eggert/tz/releases/tag/2022g
27 //
28 // Supported Zones: 446 (227 zones, 219 links)
29 // Unsupported Zones: 150 (124 zones, 26 links)
30 //
31 // Original Years: [1844,2087]
32 // Generated Years: [1950,2023]
33 // Estimator Years: [1950,2025]
34 // Max Buffer Size: 6
35 //
36 // Records:
37 // Infos: 446
38 // Eras: 239
39 // Policies: 63
40 // Rules: 362
41 //
42 // Memory (8-bits):
43 // Rules: 3982
44 // Policies: 189
45 // Eras: 2868
46 // Zones: 2951
47 // Links: 2847
48 // Registry: 892
49 // Formats: 465
50 // Letters: 11
51 // Fragments: 116
52 // Names: 4144 (original: 6503)
53 // TOTAL: 18465
54 //
55 // Memory (32-bits):
56 // Rules: 4344
57 // Policies: 504
58 // Eras: 3824
59 // Zones: 5448
60 // Links: 5256
61 // Registry: 1784
62 // Formats: 465
63 // Letters: 17
64 // Fragments: 138
65 // Names: 4144 (original: 6503)
66 // TOTAL: 25924
67 //
68 // DO NOT EDIT
69 
70 #include <zoneinfo/compat.h>
71 #include "zone_policies.h"
72 
73 namespace ace_time {
74 namespace zonedb {
75 
76 //---------------------------------------------------------------------------
77 // Policies: 63
78 // Rules: 362
79 //---------------------------------------------------------------------------
80 
81 //---------------------------------------------------------------------------
82 // Policy name: AN
83 // Rules: 10
84 //---------------------------------------------------------------------------
85 
86 static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
87  // Anchor: Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
88  {
89  -32767 /*fromYear*/,
90  -32767 /*toYear*/,
91  1 /*inMonth*/,
92  0 /*onDayOfWeek*/,
93  1 /*onDayOfMonth*/,
94  0 /*atTimeCode*/,
95  0 /*atTimeModifier (kSuffixW + minute=0)*/,
96  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
97  2 /*letterIndex ("S")*/,
98  },
99  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
100  {
101  1987 /*fromYear*/,
102  1999 /*toYear*/,
103  10 /*inMonth*/,
104  7 /*onDayOfWeek*/,
105  0 /*onDayOfMonth*/,
106  8 /*atTimeCode*/,
107  16 /*atTimeModifier (kSuffixS + minute=0)*/,
108  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
109  1 /*letterIndex ("D")*/,
110  },
111  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
112  {
113  1990 /*fromYear*/,
114  1995 /*toYear*/,
115  3 /*inMonth*/,
116  7 /*onDayOfWeek*/,
117  1 /*onDayOfMonth*/,
118  8 /*atTimeCode*/,
119  16 /*atTimeModifier (kSuffixS + minute=0)*/,
120  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
121  2 /*letterIndex ("S")*/,
122  },
123  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
124  {
125  1996 /*fromYear*/,
126  2005 /*toYear*/,
127  3 /*inMonth*/,
128  7 /*onDayOfWeek*/,
129  0 /*onDayOfMonth*/,
130  8 /*atTimeCode*/,
131  16 /*atTimeModifier (kSuffixS + minute=0)*/,
132  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
133  2 /*letterIndex ("S")*/,
134  },
135  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
136  {
137  2000 /*fromYear*/,
138  2000 /*toYear*/,
139  8 /*inMonth*/,
140  7 /*onDayOfWeek*/,
141  0 /*onDayOfMonth*/,
142  8 /*atTimeCode*/,
143  16 /*atTimeModifier (kSuffixS + minute=0)*/,
144  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
145  1 /*letterIndex ("D")*/,
146  },
147  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
148  {
149  2001 /*fromYear*/,
150  2007 /*toYear*/,
151  10 /*inMonth*/,
152  7 /*onDayOfWeek*/,
153  0 /*onDayOfMonth*/,
154  8 /*atTimeCode*/,
155  16 /*atTimeModifier (kSuffixS + minute=0)*/,
156  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
157  1 /*letterIndex ("D")*/,
158  },
159  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
160  {
161  2006 /*fromYear*/,
162  2006 /*toYear*/,
163  4 /*inMonth*/,
164  7 /*onDayOfWeek*/,
165  1 /*onDayOfMonth*/,
166  8 /*atTimeCode*/,
167  16 /*atTimeModifier (kSuffixS + minute=0)*/,
168  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
169  2 /*letterIndex ("S")*/,
170  },
171  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
172  {
173  2007 /*fromYear*/,
174  2007 /*toYear*/,
175  3 /*inMonth*/,
176  7 /*onDayOfWeek*/,
177  0 /*onDayOfMonth*/,
178  8 /*atTimeCode*/,
179  16 /*atTimeModifier (kSuffixS + minute=0)*/,
180  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
181  2 /*letterIndex ("S")*/,
182  },
183  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
184  {
185  2008 /*fromYear*/,
186  32766 /*toYear*/,
187  4 /*inMonth*/,
188  7 /*onDayOfWeek*/,
189  1 /*onDayOfMonth*/,
190  8 /*atTimeCode*/,
191  16 /*atTimeModifier (kSuffixS + minute=0)*/,
192  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
193  2 /*letterIndex ("S")*/,
194  },
195  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
196  {
197  2008 /*fromYear*/,
198  32766 /*toYear*/,
199  10 /*inMonth*/,
200  7 /*onDayOfWeek*/,
201  1 /*onDayOfMonth*/,
202  8 /*atTimeCode*/,
203  16 /*atTimeModifier (kSuffixS + minute=0)*/,
204  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
205  1 /*letterIndex ("D")*/,
206  },
207 
208 };
209 
210 const basic::ZonePolicy kZonePolicyAN ACE_TIME_PROGMEM = {
211  kZoneRulesAN /*rules*/,
212  10 /*numRules*/,
213 };
214 
215 //---------------------------------------------------------------------------
216 // Policy name: AQ
217 // Rules: 1
218 //---------------------------------------------------------------------------
219 
220 static const basic::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
221  // Anchor: Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
222  {
223  -32767 /*fromYear*/,
224  -32767 /*toYear*/,
225  1 /*inMonth*/,
226  0 /*onDayOfWeek*/,
227  1 /*onDayOfMonth*/,
228  0 /*atTimeCode*/,
229  0 /*atTimeModifier (kSuffixW + minute=0)*/,
230  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
231  2 /*letterIndex ("S")*/,
232  },
233 
234 };
235 
236 const basic::ZonePolicy kZonePolicyAQ ACE_TIME_PROGMEM = {
237  kZoneRulesAQ /*rules*/,
238  1 /*numRules*/,
239 };
240 
241 //---------------------------------------------------------------------------
242 // Policy name: AS
243 // Rules: 8
244 //---------------------------------------------------------------------------
245 
246 static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
247  // Anchor: Rule AS 1994 only - Mar 20 2:00s 0 S
248  {
249  -32767 /*fromYear*/,
250  -32767 /*toYear*/,
251  1 /*inMonth*/,
252  0 /*onDayOfWeek*/,
253  1 /*onDayOfMonth*/,
254  0 /*atTimeCode*/,
255  0 /*atTimeModifier (kSuffixW + minute=0)*/,
256  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
257  2 /*letterIndex ("S")*/,
258  },
259  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
260  {
261  1987 /*fromYear*/,
262  2007 /*toYear*/,
263  10 /*inMonth*/,
264  7 /*onDayOfWeek*/,
265  0 /*onDayOfMonth*/,
266  8 /*atTimeCode*/,
267  16 /*atTimeModifier (kSuffixS + minute=0)*/,
268  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
269  1 /*letterIndex ("D")*/,
270  },
271  // Rule AS 1994 only - Mar 20 2:00s 0 S
272  {
273  1994 /*fromYear*/,
274  1994 /*toYear*/,
275  3 /*inMonth*/,
276  0 /*onDayOfWeek*/,
277  20 /*onDayOfMonth*/,
278  8 /*atTimeCode*/,
279  16 /*atTimeModifier (kSuffixS + minute=0)*/,
280  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
281  2 /*letterIndex ("S")*/,
282  },
283  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
284  {
285  1995 /*fromYear*/,
286  2005 /*toYear*/,
287  3 /*inMonth*/,
288  7 /*onDayOfWeek*/,
289  0 /*onDayOfMonth*/,
290  8 /*atTimeCode*/,
291  16 /*atTimeModifier (kSuffixS + minute=0)*/,
292  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
293  2 /*letterIndex ("S")*/,
294  },
295  // Rule AS 2006 only - Apr 2 2:00s 0 S
296  {
297  2006 /*fromYear*/,
298  2006 /*toYear*/,
299  4 /*inMonth*/,
300  0 /*onDayOfWeek*/,
301  2 /*onDayOfMonth*/,
302  8 /*atTimeCode*/,
303  16 /*atTimeModifier (kSuffixS + minute=0)*/,
304  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
305  2 /*letterIndex ("S")*/,
306  },
307  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
308  {
309  2007 /*fromYear*/,
310  2007 /*toYear*/,
311  3 /*inMonth*/,
312  7 /*onDayOfWeek*/,
313  0 /*onDayOfMonth*/,
314  8 /*atTimeCode*/,
315  16 /*atTimeModifier (kSuffixS + minute=0)*/,
316  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
317  2 /*letterIndex ("S")*/,
318  },
319  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
320  {
321  2008 /*fromYear*/,
322  32766 /*toYear*/,
323  4 /*inMonth*/,
324  7 /*onDayOfWeek*/,
325  1 /*onDayOfMonth*/,
326  8 /*atTimeCode*/,
327  16 /*atTimeModifier (kSuffixS + minute=0)*/,
328  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
329  2 /*letterIndex ("S")*/,
330  },
331  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
332  {
333  2008 /*fromYear*/,
334  32766 /*toYear*/,
335  10 /*inMonth*/,
336  7 /*onDayOfWeek*/,
337  1 /*onDayOfMonth*/,
338  8 /*atTimeCode*/,
339  16 /*atTimeModifier (kSuffixS + minute=0)*/,
340  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
341  1 /*letterIndex ("D")*/,
342  },
343 
344 };
345 
346 const basic::ZonePolicy kZonePolicyAS ACE_TIME_PROGMEM = {
347  kZoneRulesAS /*rules*/,
348  8 /*numRules*/,
349 };
350 
351 //---------------------------------------------------------------------------
352 // Policy name: AT
353 // Rules: 9
354 //---------------------------------------------------------------------------
355 
356 static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
357  // Anchor: Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
358  {
359  -32767 /*fromYear*/,
360  -32767 /*toYear*/,
361  1 /*inMonth*/,
362  0 /*onDayOfWeek*/,
363  1 /*onDayOfMonth*/,
364  0 /*atTimeCode*/,
365  0 /*atTimeModifier (kSuffixW + minute=0)*/,
366  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
367  2 /*letterIndex ("S")*/,
368  },
369  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
370  {
371  1988 /*fromYear*/,
372  1990 /*toYear*/,
373  10 /*inMonth*/,
374  7 /*onDayOfWeek*/,
375  0 /*onDayOfMonth*/,
376  8 /*atTimeCode*/,
377  16 /*atTimeModifier (kSuffixS + minute=0)*/,
378  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
379  1 /*letterIndex ("D")*/,
380  },
381  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
382  {
383  1991 /*fromYear*/,
384  1999 /*toYear*/,
385  10 /*inMonth*/,
386  7 /*onDayOfWeek*/,
387  1 /*onDayOfMonth*/,
388  8 /*atTimeCode*/,
389  16 /*atTimeModifier (kSuffixS + minute=0)*/,
390  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
391  1 /*letterIndex ("D")*/,
392  },
393  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
394  {
395  1991 /*fromYear*/,
396  2005 /*toYear*/,
397  3 /*inMonth*/,
398  7 /*onDayOfWeek*/,
399  0 /*onDayOfMonth*/,
400  8 /*atTimeCode*/,
401  16 /*atTimeModifier (kSuffixS + minute=0)*/,
402  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
403  2 /*letterIndex ("S")*/,
404  },
405  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
406  {
407  2000 /*fromYear*/,
408  2000 /*toYear*/,
409  8 /*inMonth*/,
410  7 /*onDayOfWeek*/,
411  0 /*onDayOfMonth*/,
412  8 /*atTimeCode*/,
413  16 /*atTimeModifier (kSuffixS + minute=0)*/,
414  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
415  1 /*letterIndex ("D")*/,
416  },
417  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
418  {
419  2001 /*fromYear*/,
420  32766 /*toYear*/,
421  10 /*inMonth*/,
422  7 /*onDayOfWeek*/,
423  1 /*onDayOfMonth*/,
424  8 /*atTimeCode*/,
425  16 /*atTimeModifier (kSuffixS + minute=0)*/,
426  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
427  1 /*letterIndex ("D")*/,
428  },
429  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
430  {
431  2006 /*fromYear*/,
432  2006 /*toYear*/,
433  4 /*inMonth*/,
434  7 /*onDayOfWeek*/,
435  1 /*onDayOfMonth*/,
436  8 /*atTimeCode*/,
437  16 /*atTimeModifier (kSuffixS + minute=0)*/,
438  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
439  2 /*letterIndex ("S")*/,
440  },
441  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
442  {
443  2007 /*fromYear*/,
444  2007 /*toYear*/,
445  3 /*inMonth*/,
446  7 /*onDayOfWeek*/,
447  0 /*onDayOfMonth*/,
448  8 /*atTimeCode*/,
449  16 /*atTimeModifier (kSuffixS + minute=0)*/,
450  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
451  2 /*letterIndex ("S")*/,
452  },
453  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
454  {
455  2008 /*fromYear*/,
456  32766 /*toYear*/,
457  4 /*inMonth*/,
458  7 /*onDayOfWeek*/,
459  1 /*onDayOfMonth*/,
460  8 /*atTimeCode*/,
461  16 /*atTimeModifier (kSuffixS + minute=0)*/,
462  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
463  2 /*letterIndex ("S")*/,
464  },
465 
466 };
467 
468 const basic::ZonePolicy kZonePolicyAT ACE_TIME_PROGMEM = {
469  kZoneRulesAT /*rules*/,
470  9 /*numRules*/,
471 };
472 
473 //---------------------------------------------------------------------------
474 // Policy name: AV
475 // Rules: 10
476 //---------------------------------------------------------------------------
477 
478 static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
479  // Anchor: Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
480  {
481  -32767 /*fromYear*/,
482  -32767 /*toYear*/,
483  1 /*inMonth*/,
484  0 /*onDayOfWeek*/,
485  1 /*onDayOfMonth*/,
486  0 /*atTimeCode*/,
487  0 /*atTimeModifier (kSuffixW + minute=0)*/,
488  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
489  2 /*letterIndex ("S")*/,
490  },
491  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
492  {
493  1988 /*fromYear*/,
494  1999 /*toYear*/,
495  10 /*inMonth*/,
496  7 /*onDayOfWeek*/,
497  0 /*onDayOfMonth*/,
498  8 /*atTimeCode*/,
499  16 /*atTimeModifier (kSuffixS + minute=0)*/,
500  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
501  1 /*letterIndex ("D")*/,
502  },
503  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
504  {
505  1991 /*fromYear*/,
506  1994 /*toYear*/,
507  3 /*inMonth*/,
508  7 /*onDayOfWeek*/,
509  1 /*onDayOfMonth*/,
510  8 /*atTimeCode*/,
511  16 /*atTimeModifier (kSuffixS + minute=0)*/,
512  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
513  2 /*letterIndex ("S")*/,
514  },
515  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
516  {
517  1995 /*fromYear*/,
518  2005 /*toYear*/,
519  3 /*inMonth*/,
520  7 /*onDayOfWeek*/,
521  0 /*onDayOfMonth*/,
522  8 /*atTimeCode*/,
523  16 /*atTimeModifier (kSuffixS + minute=0)*/,
524  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
525  2 /*letterIndex ("S")*/,
526  },
527  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
528  {
529  2000 /*fromYear*/,
530  2000 /*toYear*/,
531  8 /*inMonth*/,
532  7 /*onDayOfWeek*/,
533  0 /*onDayOfMonth*/,
534  8 /*atTimeCode*/,
535  16 /*atTimeModifier (kSuffixS + minute=0)*/,
536  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
537  1 /*letterIndex ("D")*/,
538  },
539  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
540  {
541  2001 /*fromYear*/,
542  2007 /*toYear*/,
543  10 /*inMonth*/,
544  7 /*onDayOfWeek*/,
545  0 /*onDayOfMonth*/,
546  8 /*atTimeCode*/,
547  16 /*atTimeModifier (kSuffixS + minute=0)*/,
548  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
549  1 /*letterIndex ("D")*/,
550  },
551  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
552  {
553  2006 /*fromYear*/,
554  2006 /*toYear*/,
555  4 /*inMonth*/,
556  7 /*onDayOfWeek*/,
557  1 /*onDayOfMonth*/,
558  8 /*atTimeCode*/,
559  16 /*atTimeModifier (kSuffixS + minute=0)*/,
560  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
561  2 /*letterIndex ("S")*/,
562  },
563  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
564  {
565  2007 /*fromYear*/,
566  2007 /*toYear*/,
567  3 /*inMonth*/,
568  7 /*onDayOfWeek*/,
569  0 /*onDayOfMonth*/,
570  8 /*atTimeCode*/,
571  16 /*atTimeModifier (kSuffixS + minute=0)*/,
572  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
573  2 /*letterIndex ("S")*/,
574  },
575  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
576  {
577  2008 /*fromYear*/,
578  32766 /*toYear*/,
579  4 /*inMonth*/,
580  7 /*onDayOfWeek*/,
581  1 /*onDayOfMonth*/,
582  8 /*atTimeCode*/,
583  16 /*atTimeModifier (kSuffixS + minute=0)*/,
584  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
585  2 /*letterIndex ("S")*/,
586  },
587  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
588  {
589  2008 /*fromYear*/,
590  32766 /*toYear*/,
591  10 /*inMonth*/,
592  7 /*onDayOfWeek*/,
593  1 /*onDayOfMonth*/,
594  8 /*atTimeCode*/,
595  16 /*atTimeModifier (kSuffixS + minute=0)*/,
596  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
597  1 /*letterIndex ("D")*/,
598  },
599 
600 };
601 
602 const basic::ZonePolicy kZonePolicyAV ACE_TIME_PROGMEM = {
603  kZoneRulesAV /*rules*/,
604  10 /*numRules*/,
605 };
606 
607 //---------------------------------------------------------------------------
608 // Policy name: AW
609 // Rules: 5
610 //---------------------------------------------------------------------------
611 
612 static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
613  // Anchor: Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
614  {
615  -32767 /*fromYear*/,
616  -32767 /*toYear*/,
617  1 /*inMonth*/,
618  0 /*onDayOfWeek*/,
619  1 /*onDayOfMonth*/,
620  0 /*atTimeCode*/,
621  0 /*atTimeModifier (kSuffixW + minute=0)*/,
622  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
623  2 /*letterIndex ("S")*/,
624  },
625  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
626  {
627  1992 /*fromYear*/,
628  1992 /*toYear*/,
629  3 /*inMonth*/,
630  7 /*onDayOfWeek*/,
631  1 /*onDayOfMonth*/,
632  8 /*atTimeCode*/,
633  16 /*atTimeModifier (kSuffixS + minute=0)*/,
634  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
635  2 /*letterIndex ("S")*/,
636  },
637  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
638  {
639  2006 /*fromYear*/,
640  2006 /*toYear*/,
641  12 /*inMonth*/,
642  0 /*onDayOfWeek*/,
643  3 /*onDayOfMonth*/,
644  8 /*atTimeCode*/,
645  16 /*atTimeModifier (kSuffixS + minute=0)*/,
646  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
647  1 /*letterIndex ("D")*/,
648  },
649  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
650  {
651  2007 /*fromYear*/,
652  2009 /*toYear*/,
653  3 /*inMonth*/,
654  7 /*onDayOfWeek*/,
655  0 /*onDayOfMonth*/,
656  8 /*atTimeCode*/,
657  16 /*atTimeModifier (kSuffixS + minute=0)*/,
658  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
659  2 /*letterIndex ("S")*/,
660  },
661  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
662  {
663  2007 /*fromYear*/,
664  2008 /*toYear*/,
665  10 /*inMonth*/,
666  7 /*onDayOfWeek*/,
667  0 /*onDayOfMonth*/,
668  8 /*atTimeCode*/,
669  16 /*atTimeModifier (kSuffixS + minute=0)*/,
670  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
671  1 /*letterIndex ("D")*/,
672  },
673 
674 };
675 
676 const basic::ZonePolicy kZonePolicyAW ACE_TIME_PROGMEM = {
677  kZoneRulesAW /*rules*/,
678  5 /*numRules*/,
679 };
680 
681 //---------------------------------------------------------------------------
682 // Policy name: Armenia
683 // Rules: 3
684 //---------------------------------------------------------------------------
685 
686 static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
687  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
688  {
689  -32767 /*fromYear*/,
690  -32767 /*toYear*/,
691  1 /*inMonth*/,
692  0 /*onDayOfWeek*/,
693  1 /*onDayOfMonth*/,
694  0 /*atTimeCode*/,
695  0 /*atTimeModifier (kSuffixW + minute=0)*/,
696  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
697  0 /*letterIndex ("")*/,
698  },
699  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
700  {
701  2011 /*fromYear*/,
702  2011 /*toYear*/,
703  3 /*inMonth*/,
704  7 /*onDayOfWeek*/,
705  0 /*onDayOfMonth*/,
706  8 /*atTimeCode*/,
707  16 /*atTimeModifier (kSuffixS + minute=0)*/,
708  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
709  0 /*letterIndex ("")*/,
710  },
711  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
712  {
713  2011 /*fromYear*/,
714  2011 /*toYear*/,
715  10 /*inMonth*/,
716  7 /*onDayOfWeek*/,
717  0 /*onDayOfMonth*/,
718  8 /*atTimeCode*/,
719  16 /*atTimeModifier (kSuffixS + minute=0)*/,
720  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
721  0 /*letterIndex ("")*/,
722  },
723 
724 };
725 
726 const basic::ZonePolicy kZonePolicyArmenia ACE_TIME_PROGMEM = {
727  kZoneRulesArmenia /*rules*/,
728  3 /*numRules*/,
729 };
730 
731 //---------------------------------------------------------------------------
732 // Policy name: Aus
733 // Rules: 1
734 //---------------------------------------------------------------------------
735 
736 static const basic::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
737  // Anchor: Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
738  {
739  -32767 /*fromYear*/,
740  -32767 /*toYear*/,
741  1 /*inMonth*/,
742  0 /*onDayOfWeek*/,
743  1 /*onDayOfMonth*/,
744  0 /*atTimeCode*/,
745  0 /*atTimeModifier (kSuffixW + minute=0)*/,
746  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
747  2 /*letterIndex ("S")*/,
748  },
749 
750 };
751 
752 const basic::ZonePolicy kZonePolicyAus ACE_TIME_PROGMEM = {
753  kZoneRulesAus /*rules*/,
754  1 /*numRules*/,
755 };
756 
757 //---------------------------------------------------------------------------
758 // Policy name: Azer
759 // Rules: 3
760 //---------------------------------------------------------------------------
761 
762 static const basic::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
763  // Anchor: Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
764  {
765  -32767 /*fromYear*/,
766  -32767 /*toYear*/,
767  1 /*inMonth*/,
768  0 /*onDayOfWeek*/,
769  1 /*onDayOfMonth*/,
770  0 /*atTimeCode*/,
771  0 /*atTimeModifier (kSuffixW + minute=0)*/,
772  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
773  0 /*letterIndex ("")*/,
774  },
775  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
776  {
777  1997 /*fromYear*/,
778  2015 /*toYear*/,
779  3 /*inMonth*/,
780  7 /*onDayOfWeek*/,
781  0 /*onDayOfMonth*/,
782  16 /*atTimeCode*/,
783  0 /*atTimeModifier (kSuffixW + minute=0)*/,
784  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
785  0 /*letterIndex ("")*/,
786  },
787  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
788  {
789  1997 /*fromYear*/,
790  2015 /*toYear*/,
791  10 /*inMonth*/,
792  7 /*onDayOfWeek*/,
793  0 /*onDayOfMonth*/,
794  20 /*atTimeCode*/,
795  0 /*atTimeModifier (kSuffixW + minute=0)*/,
796  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
797  0 /*letterIndex ("")*/,
798  },
799 
800 };
801 
802 const basic::ZonePolicy kZonePolicyAzer ACE_TIME_PROGMEM = {
803  kZoneRulesAzer /*rules*/,
804  3 /*numRules*/,
805 };
806 
807 //---------------------------------------------------------------------------
808 // Policy name: Barb
809 // Rules: 1
810 //---------------------------------------------------------------------------
811 
812 static const basic::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
813  // Anchor: Rule Barb 1980 only - Sep 25 2:00 0 S
814  {
815  -32767 /*fromYear*/,
816  -32767 /*toYear*/,
817  1 /*inMonth*/,
818  0 /*onDayOfWeek*/,
819  1 /*onDayOfMonth*/,
820  0 /*atTimeCode*/,
821  0 /*atTimeModifier (kSuffixW + minute=0)*/,
822  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
823  2 /*letterIndex ("S")*/,
824  },
825 
826 };
827 
828 const basic::ZonePolicy kZonePolicyBarb ACE_TIME_PROGMEM = {
829  kZoneRulesBarb /*rules*/,
830  1 /*numRules*/,
831 };
832 
833 //---------------------------------------------------------------------------
834 // Policy name: Brazil
835 // Rules: 21
836 //---------------------------------------------------------------------------
837 
838 static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
839  // Anchor: Rule Brazil 1999 only - Feb 21 0:00 0 -
840  {
841  -32767 /*fromYear*/,
842  -32767 /*toYear*/,
843  1 /*inMonth*/,
844  0 /*onDayOfWeek*/,
845  1 /*onDayOfMonth*/,
846  0 /*atTimeCode*/,
847  0 /*atTimeModifier (kSuffixW + minute=0)*/,
848  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
849  0 /*letterIndex ("")*/,
850  },
851  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
852  {
853  1998 /*fromYear*/,
854  1998 /*toYear*/,
855  10 /*inMonth*/,
856  0 /*onDayOfWeek*/,
857  11 /*onDayOfMonth*/,
858  0 /*atTimeCode*/,
859  0 /*atTimeModifier (kSuffixW + minute=0)*/,
860  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
861  0 /*letterIndex ("")*/,
862  },
863  // Rule Brazil 1999 only - Feb 21 0:00 0 -
864  {
865  1999 /*fromYear*/,
866  1999 /*toYear*/,
867  2 /*inMonth*/,
868  0 /*onDayOfWeek*/,
869  21 /*onDayOfMonth*/,
870  0 /*atTimeCode*/,
871  0 /*atTimeModifier (kSuffixW + minute=0)*/,
872  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
873  0 /*letterIndex ("")*/,
874  },
875  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
876  {
877  1999 /*fromYear*/,
878  1999 /*toYear*/,
879  10 /*inMonth*/,
880  0 /*onDayOfWeek*/,
881  3 /*onDayOfMonth*/,
882  0 /*atTimeCode*/,
883  0 /*atTimeModifier (kSuffixW + minute=0)*/,
884  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
885  0 /*letterIndex ("")*/,
886  },
887  // Rule Brazil 2000 only - Feb 27 0:00 0 -
888  {
889  2000 /*fromYear*/,
890  2000 /*toYear*/,
891  2 /*inMonth*/,
892  0 /*onDayOfWeek*/,
893  27 /*onDayOfMonth*/,
894  0 /*atTimeCode*/,
895  0 /*atTimeModifier (kSuffixW + minute=0)*/,
896  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
897  0 /*letterIndex ("")*/,
898  },
899  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
900  {
901  2000 /*fromYear*/,
902  2001 /*toYear*/,
903  10 /*inMonth*/,
904  7 /*onDayOfWeek*/,
905  8 /*onDayOfMonth*/,
906  0 /*atTimeCode*/,
907  0 /*atTimeModifier (kSuffixW + minute=0)*/,
908  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
909  0 /*letterIndex ("")*/,
910  },
911  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
912  {
913  2001 /*fromYear*/,
914  2006 /*toYear*/,
915  2 /*inMonth*/,
916  7 /*onDayOfWeek*/,
917  15 /*onDayOfMonth*/,
918  0 /*atTimeCode*/,
919  0 /*atTimeModifier (kSuffixW + minute=0)*/,
920  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
921  0 /*letterIndex ("")*/,
922  },
923  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
924  {
925  2002 /*fromYear*/,
926  2002 /*toYear*/,
927  11 /*inMonth*/,
928  0 /*onDayOfWeek*/,
929  3 /*onDayOfMonth*/,
930  0 /*atTimeCode*/,
931  0 /*atTimeModifier (kSuffixW + minute=0)*/,
932  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
933  0 /*letterIndex ("")*/,
934  },
935  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
936  {
937  2003 /*fromYear*/,
938  2003 /*toYear*/,
939  10 /*inMonth*/,
940  0 /*onDayOfWeek*/,
941  19 /*onDayOfMonth*/,
942  0 /*atTimeCode*/,
943  0 /*atTimeModifier (kSuffixW + minute=0)*/,
944  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
945  0 /*letterIndex ("")*/,
946  },
947  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
948  {
949  2004 /*fromYear*/,
950  2004 /*toYear*/,
951  11 /*inMonth*/,
952  0 /*onDayOfWeek*/,
953  2 /*onDayOfMonth*/,
954  0 /*atTimeCode*/,
955  0 /*atTimeModifier (kSuffixW + minute=0)*/,
956  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
957  0 /*letterIndex ("")*/,
958  },
959  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
960  {
961  2005 /*fromYear*/,
962  2005 /*toYear*/,
963  10 /*inMonth*/,
964  0 /*onDayOfWeek*/,
965  16 /*onDayOfMonth*/,
966  0 /*atTimeCode*/,
967  0 /*atTimeModifier (kSuffixW + minute=0)*/,
968  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
969  0 /*letterIndex ("")*/,
970  },
971  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
972  {
973  2006 /*fromYear*/,
974  2006 /*toYear*/,
975  11 /*inMonth*/,
976  0 /*onDayOfWeek*/,
977  5 /*onDayOfMonth*/,
978  0 /*atTimeCode*/,
979  0 /*atTimeModifier (kSuffixW + minute=0)*/,
980  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
981  0 /*letterIndex ("")*/,
982  },
983  // Rule Brazil 2007 only - Feb 25 0:00 0 -
984  {
985  2007 /*fromYear*/,
986  2007 /*toYear*/,
987  2 /*inMonth*/,
988  0 /*onDayOfWeek*/,
989  25 /*onDayOfMonth*/,
990  0 /*atTimeCode*/,
991  0 /*atTimeModifier (kSuffixW + minute=0)*/,
992  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
993  0 /*letterIndex ("")*/,
994  },
995  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
996  {
997  2007 /*fromYear*/,
998  2007 /*toYear*/,
999  10 /*inMonth*/,
1000  7 /*onDayOfWeek*/,
1001  8 /*onDayOfMonth*/,
1002  0 /*atTimeCode*/,
1003  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1004  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1005  0 /*letterIndex ("")*/,
1006  },
1007  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1008  {
1009  2008 /*fromYear*/,
1010  2017 /*toYear*/,
1011  10 /*inMonth*/,
1012  7 /*onDayOfWeek*/,
1013  15 /*onDayOfMonth*/,
1014  0 /*atTimeCode*/,
1015  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1016  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1017  0 /*letterIndex ("")*/,
1018  },
1019  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1020  {
1021  2008 /*fromYear*/,
1022  2011 /*toYear*/,
1023  2 /*inMonth*/,
1024  7 /*onDayOfWeek*/,
1025  15 /*onDayOfMonth*/,
1026  0 /*atTimeCode*/,
1027  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1028  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1029  0 /*letterIndex ("")*/,
1030  },
1031  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1032  {
1033  2012 /*fromYear*/,
1034  2012 /*toYear*/,
1035  2 /*inMonth*/,
1036  7 /*onDayOfWeek*/,
1037  22 /*onDayOfMonth*/,
1038  0 /*atTimeCode*/,
1039  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1040  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1041  0 /*letterIndex ("")*/,
1042  },
1043  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1044  {
1045  2013 /*fromYear*/,
1046  2014 /*toYear*/,
1047  2 /*inMonth*/,
1048  7 /*onDayOfWeek*/,
1049  15 /*onDayOfMonth*/,
1050  0 /*atTimeCode*/,
1051  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1052  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1053  0 /*letterIndex ("")*/,
1054  },
1055  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1056  {
1057  2015 /*fromYear*/,
1058  2015 /*toYear*/,
1059  2 /*inMonth*/,
1060  7 /*onDayOfWeek*/,
1061  22 /*onDayOfMonth*/,
1062  0 /*atTimeCode*/,
1063  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1064  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1065  0 /*letterIndex ("")*/,
1066  },
1067  // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 -
1068  {
1069  2016 /*fromYear*/,
1070  2019 /*toYear*/,
1071  2 /*inMonth*/,
1072  7 /*onDayOfWeek*/,
1073  15 /*onDayOfMonth*/,
1074  0 /*atTimeCode*/,
1075  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1076  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1077  0 /*letterIndex ("")*/,
1078  },
1079  // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
1080  {
1081  2018 /*fromYear*/,
1082  2018 /*toYear*/,
1083  11 /*inMonth*/,
1084  7 /*onDayOfWeek*/,
1085  1 /*onDayOfMonth*/,
1086  0 /*atTimeCode*/,
1087  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1088  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1089  0 /*letterIndex ("")*/,
1090  },
1091 
1092 };
1093 
1094 const basic::ZonePolicy kZonePolicyBrazil ACE_TIME_PROGMEM = {
1095  kZoneRulesBrazil /*rules*/,
1096  21 /*numRules*/,
1097 };
1098 
1099 //---------------------------------------------------------------------------
1100 // Policy name: C-Eur
1101 // Rules: 4
1102 //---------------------------------------------------------------------------
1103 
1104 static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
1105  // Anchor: Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1106  {
1107  -32767 /*fromYear*/,
1108  -32767 /*toYear*/,
1109  1 /*inMonth*/,
1110  0 /*onDayOfWeek*/,
1111  1 /*onDayOfMonth*/,
1112  0 /*atTimeCode*/,
1113  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1114  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1115  0 /*letterIndex ("")*/,
1116  },
1117  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1118  {
1119  1979 /*fromYear*/,
1120  1995 /*toYear*/,
1121  9 /*inMonth*/,
1122  7 /*onDayOfWeek*/,
1123  0 /*onDayOfMonth*/,
1124  8 /*atTimeCode*/,
1125  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1126  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1127  0 /*letterIndex ("")*/,
1128  },
1129  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1130  {
1131  1981 /*fromYear*/,
1132  32766 /*toYear*/,
1133  3 /*inMonth*/,
1134  7 /*onDayOfWeek*/,
1135  0 /*onDayOfMonth*/,
1136  8 /*atTimeCode*/,
1137  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1138  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1139  2 /*letterIndex ("S")*/,
1140  },
1141  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1142  {
1143  1996 /*fromYear*/,
1144  32766 /*toYear*/,
1145  10 /*inMonth*/,
1146  7 /*onDayOfWeek*/,
1147  0 /*onDayOfMonth*/,
1148  8 /*atTimeCode*/,
1149  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1150  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1151  0 /*letterIndex ("")*/,
1152  },
1153 
1154 };
1155 
1156 const basic::ZonePolicy kZonePolicyC_Eur ACE_TIME_PROGMEM = {
1157  kZoneRulesC_Eur /*rules*/,
1158  4 /*numRules*/,
1159 };
1160 
1161 //---------------------------------------------------------------------------
1162 // Policy name: CO
1163 // Rules: 1
1164 //---------------------------------------------------------------------------
1165 
1166 static const basic::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1167  // Anchor: Rule CO 1993 only - Feb 6 24:00 0 -
1168  {
1169  -32767 /*fromYear*/,
1170  -32767 /*toYear*/,
1171  1 /*inMonth*/,
1172  0 /*onDayOfWeek*/,
1173  1 /*onDayOfMonth*/,
1174  0 /*atTimeCode*/,
1175  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1176  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1177  0 /*letterIndex ("")*/,
1178  },
1179 
1180 };
1181 
1182 const basic::ZonePolicy kZonePolicyCO ACE_TIME_PROGMEM = {
1183  kZoneRulesCO /*rules*/,
1184  1 /*numRules*/,
1185 };
1186 
1187 //---------------------------------------------------------------------------
1188 // Policy name: CR
1189 // Rules: 1
1190 //---------------------------------------------------------------------------
1191 
1192 static const basic::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1193  // Anchor: Rule CR 1992 only - Mar 15 0:00 0 S
1194  {
1195  -32767 /*fromYear*/,
1196  -32767 /*toYear*/,
1197  1 /*inMonth*/,
1198  0 /*onDayOfWeek*/,
1199  1 /*onDayOfMonth*/,
1200  0 /*atTimeCode*/,
1201  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1202  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1203  2 /*letterIndex ("S")*/,
1204  },
1205 
1206 };
1207 
1208 const basic::ZonePolicy kZonePolicyCR ACE_TIME_PROGMEM = {
1209  kZoneRulesCR /*rules*/,
1210  1 /*numRules*/,
1211 };
1212 
1213 //---------------------------------------------------------------------------
1214 // Policy name: Canada
1215 // Rules: 6
1216 //---------------------------------------------------------------------------
1217 
1218 static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1219  // Anchor: Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1220  {
1221  -32767 /*fromYear*/,
1222  -32767 /*toYear*/,
1223  1 /*inMonth*/,
1224  0 /*onDayOfWeek*/,
1225  1 /*onDayOfMonth*/,
1226  0 /*atTimeCode*/,
1227  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1228  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1229  2 /*letterIndex ("S")*/,
1230  },
1231  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1232  {
1233  1974 /*fromYear*/,
1234  1986 /*toYear*/,
1235  4 /*inMonth*/,
1236  7 /*onDayOfWeek*/,
1237  0 /*onDayOfMonth*/,
1238  8 /*atTimeCode*/,
1239  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1240  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1241  1 /*letterIndex ("D")*/,
1242  },
1243  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1244  {
1245  1974 /*fromYear*/,
1246  2006 /*toYear*/,
1247  10 /*inMonth*/,
1248  7 /*onDayOfWeek*/,
1249  0 /*onDayOfMonth*/,
1250  8 /*atTimeCode*/,
1251  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1252  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1253  2 /*letterIndex ("S")*/,
1254  },
1255  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1256  {
1257  1987 /*fromYear*/,
1258  2006 /*toYear*/,
1259  4 /*inMonth*/,
1260  7 /*onDayOfWeek*/,
1261  1 /*onDayOfMonth*/,
1262  8 /*atTimeCode*/,
1263  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1264  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1265  1 /*letterIndex ("D")*/,
1266  },
1267  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1268  {
1269  2007 /*fromYear*/,
1270  32766 /*toYear*/,
1271  3 /*inMonth*/,
1272  7 /*onDayOfWeek*/,
1273  8 /*onDayOfMonth*/,
1274  8 /*atTimeCode*/,
1275  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1276  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1277  1 /*letterIndex ("D")*/,
1278  },
1279  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1280  {
1281  2007 /*fromYear*/,
1282  32766 /*toYear*/,
1283  11 /*inMonth*/,
1284  7 /*onDayOfWeek*/,
1285  1 /*onDayOfMonth*/,
1286  8 /*atTimeCode*/,
1287  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1288  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1289  2 /*letterIndex ("S")*/,
1290  },
1291 
1292 };
1293 
1294 const basic::ZonePolicy kZonePolicyCanada ACE_TIME_PROGMEM = {
1295  kZoneRulesCanada /*rules*/,
1296  6 /*numRules*/,
1297 };
1298 
1299 //---------------------------------------------------------------------------
1300 // Policy name: Chatham
1301 // Rules: 6
1302 //---------------------------------------------------------------------------
1303 
1304 static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1305  // Anchor: Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1306  {
1307  -32767 /*fromYear*/,
1308  -32767 /*toYear*/,
1309  1 /*inMonth*/,
1310  0 /*onDayOfWeek*/,
1311  1 /*onDayOfMonth*/,
1312  0 /*atTimeCode*/,
1313  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1314  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1315  0 /*letterIndex ("")*/,
1316  },
1317  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1318  {
1319  1989 /*fromYear*/,
1320  1989 /*toYear*/,
1321  10 /*inMonth*/,
1322  7 /*onDayOfWeek*/,
1323  8 /*onDayOfMonth*/,
1324  11 /*atTimeCode*/,
1325  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1326  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1327  0 /*letterIndex ("")*/,
1328  },
1329  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1330  {
1331  1990 /*fromYear*/,
1332  2006 /*toYear*/,
1333  10 /*inMonth*/,
1334  7 /*onDayOfWeek*/,
1335  1 /*onDayOfMonth*/,
1336  11 /*atTimeCode*/,
1337  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1338  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1339  0 /*letterIndex ("")*/,
1340  },
1341  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1342  {
1343  1990 /*fromYear*/,
1344  2007 /*toYear*/,
1345  3 /*inMonth*/,
1346  7 /*onDayOfWeek*/,
1347  15 /*onDayOfMonth*/,
1348  11 /*atTimeCode*/,
1349  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1350  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1351  0 /*letterIndex ("")*/,
1352  },
1353  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1354  {
1355  2007 /*fromYear*/,
1356  32766 /*toYear*/,
1357  9 /*inMonth*/,
1358  7 /*onDayOfWeek*/,
1359  0 /*onDayOfMonth*/,
1360  11 /*atTimeCode*/,
1361  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1362  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1363  0 /*letterIndex ("")*/,
1364  },
1365  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1366  {
1367  2008 /*fromYear*/,
1368  32766 /*toYear*/,
1369  4 /*inMonth*/,
1370  7 /*onDayOfWeek*/,
1371  1 /*onDayOfMonth*/,
1372  11 /*atTimeCode*/,
1373  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1374  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1375  0 /*letterIndex ("")*/,
1376  },
1377 
1378 };
1379 
1380 const basic::ZonePolicy kZonePolicyChatham ACE_TIME_PROGMEM = {
1381  kZoneRulesChatham /*rules*/,
1382  6 /*numRules*/,
1383 };
1384 
1385 //---------------------------------------------------------------------------
1386 // Policy name: Chile
1387 // Rules: 18
1388 //---------------------------------------------------------------------------
1389 
1390 static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1391  // Anchor: Rule Chile 1999 only - Apr 4 3:00u 0 -
1392  {
1393  -32767 /*fromYear*/,
1394  -32767 /*toYear*/,
1395  1 /*inMonth*/,
1396  0 /*onDayOfWeek*/,
1397  1 /*onDayOfMonth*/,
1398  0 /*atTimeCode*/,
1399  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1400  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1401  0 /*letterIndex ("")*/,
1402  },
1403  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1404  {
1405  1998 /*fromYear*/,
1406  1998 /*toYear*/,
1407  9 /*inMonth*/,
1408  0 /*onDayOfWeek*/,
1409  27 /*onDayOfMonth*/,
1410  16 /*atTimeCode*/,
1411  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1412  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1413  0 /*letterIndex ("")*/,
1414  },
1415  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1416  {
1417  1999 /*fromYear*/,
1418  1999 /*toYear*/,
1419  4 /*inMonth*/,
1420  0 /*onDayOfWeek*/,
1421  4 /*onDayOfMonth*/,
1422  12 /*atTimeCode*/,
1423  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1424  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1425  0 /*letterIndex ("")*/,
1426  },
1427  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1428  {
1429  1999 /*fromYear*/,
1430  2010 /*toYear*/,
1431  10 /*inMonth*/,
1432  7 /*onDayOfWeek*/,
1433  9 /*onDayOfMonth*/,
1434  16 /*atTimeCode*/,
1435  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1436  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1437  0 /*letterIndex ("")*/,
1438  },
1439  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1440  {
1441  2000 /*fromYear*/,
1442  2007 /*toYear*/,
1443  3 /*inMonth*/,
1444  7 /*onDayOfWeek*/,
1445  9 /*onDayOfMonth*/,
1446  12 /*atTimeCode*/,
1447  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1448  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1449  0 /*letterIndex ("")*/,
1450  },
1451  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1452  {
1453  2008 /*fromYear*/,
1454  2008 /*toYear*/,
1455  3 /*inMonth*/,
1456  0 /*onDayOfWeek*/,
1457  30 /*onDayOfMonth*/,
1458  12 /*atTimeCode*/,
1459  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1460  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1461  0 /*letterIndex ("")*/,
1462  },
1463  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1464  {
1465  2009 /*fromYear*/,
1466  2009 /*toYear*/,
1467  3 /*inMonth*/,
1468  7 /*onDayOfWeek*/,
1469  9 /*onDayOfMonth*/,
1470  12 /*atTimeCode*/,
1471  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1472  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1473  0 /*letterIndex ("")*/,
1474  },
1475  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1476  {
1477  2010 /*fromYear*/,
1478  2010 /*toYear*/,
1479  4 /*inMonth*/,
1480  7 /*onDayOfWeek*/,
1481  1 /*onDayOfMonth*/,
1482  12 /*atTimeCode*/,
1483  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1484  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1485  0 /*letterIndex ("")*/,
1486  },
1487  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1488  {
1489  2011 /*fromYear*/,
1490  2011 /*toYear*/,
1491  5 /*inMonth*/,
1492  7 /*onDayOfWeek*/,
1493  2 /*onDayOfMonth*/,
1494  12 /*atTimeCode*/,
1495  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1496  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1497  0 /*letterIndex ("")*/,
1498  },
1499  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1500  {
1501  2011 /*fromYear*/,
1502  2011 /*toYear*/,
1503  8 /*inMonth*/,
1504  7 /*onDayOfWeek*/,
1505  16 /*onDayOfMonth*/,
1506  16 /*atTimeCode*/,
1507  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1508  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1509  0 /*letterIndex ("")*/,
1510  },
1511  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1512  {
1513  2012 /*fromYear*/,
1514  2014 /*toYear*/,
1515  4 /*inMonth*/,
1516  7 /*onDayOfWeek*/,
1517  23 /*onDayOfMonth*/,
1518  12 /*atTimeCode*/,
1519  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1520  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1521  0 /*letterIndex ("")*/,
1522  },
1523  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1524  {
1525  2012 /*fromYear*/,
1526  2014 /*toYear*/,
1527  9 /*inMonth*/,
1528  7 /*onDayOfWeek*/,
1529  2 /*onDayOfMonth*/,
1530  16 /*atTimeCode*/,
1531  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1532  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1533  0 /*letterIndex ("")*/,
1534  },
1535  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1536  {
1537  2016 /*fromYear*/,
1538  2018 /*toYear*/,
1539  5 /*inMonth*/,
1540  7 /*onDayOfWeek*/,
1541  9 /*onDayOfMonth*/,
1542  12 /*atTimeCode*/,
1543  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1544  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1545  0 /*letterIndex ("")*/,
1546  },
1547  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1548  {
1549  2016 /*fromYear*/,
1550  2018 /*toYear*/,
1551  8 /*inMonth*/,
1552  7 /*onDayOfWeek*/,
1553  9 /*onDayOfMonth*/,
1554  16 /*atTimeCode*/,
1555  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1556  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1557  0 /*letterIndex ("")*/,
1558  },
1559  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1560  {
1561  2019 /*fromYear*/,
1562  32766 /*toYear*/,
1563  4 /*inMonth*/,
1564  7 /*onDayOfWeek*/,
1565  2 /*onDayOfMonth*/,
1566  12 /*atTimeCode*/,
1567  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1568  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1569  0 /*letterIndex ("")*/,
1570  },
1571  // Rule Chile 2019 2021 - Sep Sun>=2 4:00u 1:00 -
1572  {
1573  2019 /*fromYear*/,
1574  2021 /*toYear*/,
1575  9 /*inMonth*/,
1576  7 /*onDayOfWeek*/,
1577  2 /*onDayOfMonth*/,
1578  16 /*atTimeCode*/,
1579  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1580  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1581  0 /*letterIndex ("")*/,
1582  },
1583  // Rule Chile 2022 only - Sep Sun>=9 4:00u 1:00 -
1584  {
1585  2022 /*fromYear*/,
1586  2022 /*toYear*/,
1587  9 /*inMonth*/,
1588  7 /*onDayOfWeek*/,
1589  9 /*onDayOfMonth*/,
1590  16 /*atTimeCode*/,
1591  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1592  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1593  0 /*letterIndex ("")*/,
1594  },
1595  // Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
1596  {
1597  2023 /*fromYear*/,
1598  32766 /*toYear*/,
1599  9 /*inMonth*/,
1600  7 /*onDayOfWeek*/,
1601  2 /*onDayOfMonth*/,
1602  16 /*atTimeCode*/,
1603  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1604  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1605  0 /*letterIndex ("")*/,
1606  },
1607 
1608 };
1609 
1610 const basic::ZonePolicy kZonePolicyChile ACE_TIME_PROGMEM = {
1611  kZoneRulesChile /*rules*/,
1612  18 /*numRules*/,
1613 };
1614 
1615 //---------------------------------------------------------------------------
1616 // Policy name: Cook
1617 // Rules: 1
1618 //---------------------------------------------------------------------------
1619 
1620 static const basic::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1621  // Anchor: Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1622  {
1623  -32767 /*fromYear*/,
1624  -32767 /*toYear*/,
1625  1 /*inMonth*/,
1626  0 /*onDayOfWeek*/,
1627  1 /*onDayOfMonth*/,
1628  0 /*atTimeCode*/,
1629  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1630  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1631  0 /*letterIndex ("")*/,
1632  },
1633 
1634 };
1635 
1636 const basic::ZonePolicy kZonePolicyCook ACE_TIME_PROGMEM = {
1637  kZoneRulesCook /*rules*/,
1638  1 /*numRules*/,
1639 };
1640 
1641 //---------------------------------------------------------------------------
1642 // Policy name: Cuba
1643 // Rules: 15
1644 //---------------------------------------------------------------------------
1645 
1646 static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1647  // Anchor: Rule Cuba 1997 only - Oct 12 0:00s 0 S
1648  {
1649  -32767 /*fromYear*/,
1650  -32767 /*toYear*/,
1651  1 /*inMonth*/,
1652  0 /*onDayOfWeek*/,
1653  1 /*onDayOfMonth*/,
1654  0 /*atTimeCode*/,
1655  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1656  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1657  2 /*letterIndex ("S")*/,
1658  },
1659  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1660  {
1661  1997 /*fromYear*/,
1662  1997 /*toYear*/,
1663  10 /*inMonth*/,
1664  0 /*onDayOfWeek*/,
1665  12 /*onDayOfMonth*/,
1666  0 /*atTimeCode*/,
1667  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1668  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1669  2 /*letterIndex ("S")*/,
1670  },
1671  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1672  {
1673  1998 /*fromYear*/,
1674  1999 /*toYear*/,
1675  3 /*inMonth*/,
1676  7 /*onDayOfWeek*/,
1677  0 /*onDayOfMonth*/,
1678  0 /*atTimeCode*/,
1679  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1680  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1681  1 /*letterIndex ("D")*/,
1682  },
1683  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1684  {
1685  1998 /*fromYear*/,
1686  2003 /*toYear*/,
1687  10 /*inMonth*/,
1688  7 /*onDayOfWeek*/,
1689  0 /*onDayOfMonth*/,
1690  0 /*atTimeCode*/,
1691  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1692  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1693  2 /*letterIndex ("S")*/,
1694  },
1695  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1696  {
1697  2000 /*fromYear*/,
1698  2003 /*toYear*/,
1699  4 /*inMonth*/,
1700  7 /*onDayOfWeek*/,
1701  1 /*onDayOfMonth*/,
1702  0 /*atTimeCode*/,
1703  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1704  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1705  1 /*letterIndex ("D")*/,
1706  },
1707  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1708  {
1709  2004 /*fromYear*/,
1710  2004 /*toYear*/,
1711  3 /*inMonth*/,
1712  7 /*onDayOfWeek*/,
1713  0 /*onDayOfMonth*/,
1714  0 /*atTimeCode*/,
1715  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1716  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1717  1 /*letterIndex ("D")*/,
1718  },
1719  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1720  {
1721  2006 /*fromYear*/,
1722  2010 /*toYear*/,
1723  10 /*inMonth*/,
1724  7 /*onDayOfWeek*/,
1725  0 /*onDayOfMonth*/,
1726  0 /*atTimeCode*/,
1727  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1728  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1729  2 /*letterIndex ("S")*/,
1730  },
1731  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1732  {
1733  2007 /*fromYear*/,
1734  2007 /*toYear*/,
1735  3 /*inMonth*/,
1736  7 /*onDayOfWeek*/,
1737  8 /*onDayOfMonth*/,
1738  0 /*atTimeCode*/,
1739  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1740  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1741  1 /*letterIndex ("D")*/,
1742  },
1743  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1744  {
1745  2008 /*fromYear*/,
1746  2008 /*toYear*/,
1747  3 /*inMonth*/,
1748  7 /*onDayOfWeek*/,
1749  15 /*onDayOfMonth*/,
1750  0 /*atTimeCode*/,
1751  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1752  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1753  1 /*letterIndex ("D")*/,
1754  },
1755  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1756  {
1757  2009 /*fromYear*/,
1758  2010 /*toYear*/,
1759  3 /*inMonth*/,
1760  7 /*onDayOfWeek*/,
1761  8 /*onDayOfMonth*/,
1762  0 /*atTimeCode*/,
1763  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1764  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1765  1 /*letterIndex ("D")*/,
1766  },
1767  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1768  {
1769  2011 /*fromYear*/,
1770  2011 /*toYear*/,
1771  3 /*inMonth*/,
1772  7 /*onDayOfWeek*/,
1773  15 /*onDayOfMonth*/,
1774  0 /*atTimeCode*/,
1775  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1776  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1777  1 /*letterIndex ("D")*/,
1778  },
1779  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1780  {
1781  2011 /*fromYear*/,
1782  2011 /*toYear*/,
1783  11 /*inMonth*/,
1784  0 /*onDayOfWeek*/,
1785  13 /*onDayOfMonth*/,
1786  0 /*atTimeCode*/,
1787  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1788  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1789  2 /*letterIndex ("S")*/,
1790  },
1791  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1792  {
1793  2012 /*fromYear*/,
1794  2012 /*toYear*/,
1795  4 /*inMonth*/,
1796  0 /*onDayOfWeek*/,
1797  1 /*onDayOfMonth*/,
1798  0 /*atTimeCode*/,
1799  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1800  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1801  1 /*letterIndex ("D")*/,
1802  },
1803  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1804  {
1805  2012 /*fromYear*/,
1806  32766 /*toYear*/,
1807  11 /*inMonth*/,
1808  7 /*onDayOfWeek*/,
1809  1 /*onDayOfMonth*/,
1810  0 /*atTimeCode*/,
1811  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1812  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1813  2 /*letterIndex ("S")*/,
1814  },
1815  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1816  {
1817  2013 /*fromYear*/,
1818  32766 /*toYear*/,
1819  3 /*inMonth*/,
1820  7 /*onDayOfWeek*/,
1821  8 /*onDayOfMonth*/,
1822  0 /*atTimeCode*/,
1823  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1824  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1825  1 /*letterIndex ("D")*/,
1826  },
1827 
1828 };
1829 
1830 const basic::ZonePolicy kZonePolicyCuba ACE_TIME_PROGMEM = {
1831  kZoneRulesCuba /*rules*/,
1832  15 /*numRules*/,
1833 };
1834 
1835 //---------------------------------------------------------------------------
1836 // Policy name: Dhaka
1837 // Rules: 3
1838 //---------------------------------------------------------------------------
1839 
1840 static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1841  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1842  {
1843  -32767 /*fromYear*/,
1844  -32767 /*toYear*/,
1845  1 /*inMonth*/,
1846  0 /*onDayOfWeek*/,
1847  1 /*onDayOfMonth*/,
1848  0 /*atTimeCode*/,
1849  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1850  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1851  0 /*letterIndex ("")*/,
1852  },
1853  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1854  {
1855  2009 /*fromYear*/,
1856  2009 /*toYear*/,
1857  6 /*inMonth*/,
1858  0 /*onDayOfWeek*/,
1859  19 /*onDayOfMonth*/,
1860  92 /*atTimeCode*/,
1861  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1862  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1863  0 /*letterIndex ("")*/,
1864  },
1865  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1866  {
1867  2009 /*fromYear*/,
1868  2009 /*toYear*/,
1869  12 /*inMonth*/,
1870  0 /*onDayOfWeek*/,
1871  31 /*onDayOfMonth*/,
1872  96 /*atTimeCode*/,
1873  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1874  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1875  0 /*letterIndex ("")*/,
1876  },
1877 
1878 };
1879 
1880 const basic::ZonePolicy kZonePolicyDhaka ACE_TIME_PROGMEM = {
1881  kZoneRulesDhaka /*rules*/,
1882  3 /*numRules*/,
1883 };
1884 
1885 //---------------------------------------------------------------------------
1886 // Policy name: EU
1887 // Rules: 4
1888 //---------------------------------------------------------------------------
1889 
1890 static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
1891  // Anchor: Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
1892  {
1893  -32767 /*fromYear*/,
1894  -32767 /*toYear*/,
1895  1 /*inMonth*/,
1896  0 /*onDayOfWeek*/,
1897  1 /*onDayOfMonth*/,
1898  0 /*atTimeCode*/,
1899  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1900  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1901  0 /*letterIndex ("")*/,
1902  },
1903  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
1904  {
1905  1979 /*fromYear*/,
1906  1995 /*toYear*/,
1907  9 /*inMonth*/,
1908  7 /*onDayOfWeek*/,
1909  0 /*onDayOfMonth*/,
1910  4 /*atTimeCode*/,
1911  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1912  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1913  0 /*letterIndex ("")*/,
1914  },
1915  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
1916  {
1917  1981 /*fromYear*/,
1918  32766 /*toYear*/,
1919  3 /*inMonth*/,
1920  7 /*onDayOfWeek*/,
1921  0 /*onDayOfMonth*/,
1922  4 /*atTimeCode*/,
1923  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1924  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1925  2 /*letterIndex ("S")*/,
1926  },
1927  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
1928  {
1929  1996 /*fromYear*/,
1930  32766 /*toYear*/,
1931  10 /*inMonth*/,
1932  7 /*onDayOfWeek*/,
1933  0 /*onDayOfMonth*/,
1934  4 /*atTimeCode*/,
1935  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1936  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1937  0 /*letterIndex ("")*/,
1938  },
1939 
1940 };
1941 
1942 const basic::ZonePolicy kZonePolicyEU ACE_TIME_PROGMEM = {
1943  kZoneRulesEU /*rules*/,
1944  4 /*numRules*/,
1945 };
1946 
1947 //---------------------------------------------------------------------------
1948 // Policy name: EUAsia
1949 // Rules: 4
1950 //---------------------------------------------------------------------------
1951 
1952 static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
1953  // Anchor: Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
1954  {
1955  -32767 /*fromYear*/,
1956  -32767 /*toYear*/,
1957  1 /*inMonth*/,
1958  0 /*onDayOfWeek*/,
1959  1 /*onDayOfMonth*/,
1960  0 /*atTimeCode*/,
1961  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1962  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1963  0 /*letterIndex ("")*/,
1964  },
1965  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
1966  {
1967  1981 /*fromYear*/,
1968  32766 /*toYear*/,
1969  3 /*inMonth*/,
1970  7 /*onDayOfWeek*/,
1971  0 /*onDayOfMonth*/,
1972  4 /*atTimeCode*/,
1973  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1974  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1975  2 /*letterIndex ("S")*/,
1976  },
1977  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
1978  {
1979  1979 /*fromYear*/,
1980  1995 /*toYear*/,
1981  9 /*inMonth*/,
1982  7 /*onDayOfWeek*/,
1983  0 /*onDayOfMonth*/,
1984  4 /*atTimeCode*/,
1985  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1986  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1987  0 /*letterIndex ("")*/,
1988  },
1989  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
1990  {
1991  1996 /*fromYear*/,
1992  32766 /*toYear*/,
1993  10 /*inMonth*/,
1994  7 /*onDayOfWeek*/,
1995  0 /*onDayOfMonth*/,
1996  4 /*atTimeCode*/,
1997  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1998  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1999  0 /*letterIndex ("")*/,
2000  },
2001 
2002 };
2003 
2004 const basic::ZonePolicy kZonePolicyEUAsia ACE_TIME_PROGMEM = {
2005  kZoneRulesEUAsia /*rules*/,
2006  4 /*numRules*/,
2007 };
2008 
2009 //---------------------------------------------------------------------------
2010 // Policy name: Ecuador
2011 // Rules: 1
2012 //---------------------------------------------------------------------------
2013 
2014 static const basic::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
2015  // Anchor: Rule Ecuador 1993 only - Feb 5 0:00 0 -
2016  {
2017  -32767 /*fromYear*/,
2018  -32767 /*toYear*/,
2019  1 /*inMonth*/,
2020  0 /*onDayOfWeek*/,
2021  1 /*onDayOfMonth*/,
2022  0 /*atTimeCode*/,
2023  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2024  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2025  0 /*letterIndex ("")*/,
2026  },
2027 
2028 };
2029 
2030 const basic::ZonePolicy kZonePolicyEcuador ACE_TIME_PROGMEM = {
2031  kZoneRulesEcuador /*rules*/,
2032  1 /*numRules*/,
2033 };
2034 
2035 //---------------------------------------------------------------------------
2036 // Policy name: Eire
2037 // Rules: 4
2038 //---------------------------------------------------------------------------
2039 
2040 static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2041  // Anchor: Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2042  {
2043  -32767 /*fromYear*/,
2044  -32767 /*toYear*/,
2045  1 /*inMonth*/,
2046  0 /*onDayOfWeek*/,
2047  1 /*onDayOfMonth*/,
2048  0 /*atTimeCode*/,
2049  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2050  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2051  0 /*letterIndex ("")*/,
2052  },
2053  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2054  {
2055  1981 /*fromYear*/,
2056  32766 /*toYear*/,
2057  3 /*inMonth*/,
2058  7 /*onDayOfWeek*/,
2059  0 /*onDayOfMonth*/,
2060  4 /*atTimeCode*/,
2061  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2062  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2063  0 /*letterIndex ("")*/,
2064  },
2065  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2066  {
2067  1990 /*fromYear*/,
2068  1995 /*toYear*/,
2069  10 /*inMonth*/,
2070  7 /*onDayOfWeek*/,
2071  22 /*onDayOfMonth*/,
2072  4 /*atTimeCode*/,
2073  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2074  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2075  0 /*letterIndex ("")*/,
2076  },
2077  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2078  {
2079  1996 /*fromYear*/,
2080  32766 /*toYear*/,
2081  10 /*inMonth*/,
2082  7 /*onDayOfWeek*/,
2083  0 /*onDayOfMonth*/,
2084  4 /*atTimeCode*/,
2085  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2086  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2087  0 /*letterIndex ("")*/,
2088  },
2089 
2090 };
2091 
2092 const basic::ZonePolicy kZonePolicyEire ACE_TIME_PROGMEM = {
2093  kZoneRulesEire /*rules*/,
2094  4 /*numRules*/,
2095 };
2096 
2097 //---------------------------------------------------------------------------
2098 // Policy name: Fiji
2099 // Rules: 13
2100 //---------------------------------------------------------------------------
2101 
2102 static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2103  // Anchor: Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2104  {
2105  -32767 /*fromYear*/,
2106  -32767 /*toYear*/,
2107  1 /*inMonth*/,
2108  0 /*onDayOfWeek*/,
2109  1 /*onDayOfMonth*/,
2110  0 /*atTimeCode*/,
2111  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2112  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2113  0 /*letterIndex ("")*/,
2114  },
2115  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2116  {
2117  1998 /*fromYear*/,
2118  1999 /*toYear*/,
2119  11 /*inMonth*/,
2120  7 /*onDayOfWeek*/,
2121  1 /*onDayOfMonth*/,
2122  8 /*atTimeCode*/,
2123  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2124  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2125  0 /*letterIndex ("")*/,
2126  },
2127  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2128  {
2129  1999 /*fromYear*/,
2130  2000 /*toYear*/,
2131  2 /*inMonth*/,
2132  7 /*onDayOfWeek*/,
2133  0 /*onDayOfMonth*/,
2134  12 /*atTimeCode*/,
2135  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2136  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2137  0 /*letterIndex ("")*/,
2138  },
2139  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2140  {
2141  2009 /*fromYear*/,
2142  2009 /*toYear*/,
2143  11 /*inMonth*/,
2144  0 /*onDayOfWeek*/,
2145  29 /*onDayOfMonth*/,
2146  8 /*atTimeCode*/,
2147  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2148  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2149  0 /*letterIndex ("")*/,
2150  },
2151  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2152  {
2153  2010 /*fromYear*/,
2154  2010 /*toYear*/,
2155  3 /*inMonth*/,
2156  7 /*onDayOfWeek*/,
2157  0 /*onDayOfMonth*/,
2158  12 /*atTimeCode*/,
2159  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2160  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2161  0 /*letterIndex ("")*/,
2162  },
2163  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2164  {
2165  2010 /*fromYear*/,
2166  2013 /*toYear*/,
2167  10 /*inMonth*/,
2168  7 /*onDayOfWeek*/,
2169  21 /*onDayOfMonth*/,
2170  8 /*atTimeCode*/,
2171  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2172  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2173  0 /*letterIndex ("")*/,
2174  },
2175  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2176  {
2177  2011 /*fromYear*/,
2178  2011 /*toYear*/,
2179  3 /*inMonth*/,
2180  7 /*onDayOfWeek*/,
2181  1 /*onDayOfMonth*/,
2182  12 /*atTimeCode*/,
2183  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2184  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2185  0 /*letterIndex ("")*/,
2186  },
2187  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2188  {
2189  2012 /*fromYear*/,
2190  2013 /*toYear*/,
2191  1 /*inMonth*/,
2192  7 /*onDayOfWeek*/,
2193  18 /*onDayOfMonth*/,
2194  12 /*atTimeCode*/,
2195  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2196  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2197  0 /*letterIndex ("")*/,
2198  },
2199  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2200  {
2201  2014 /*fromYear*/,
2202  2014 /*toYear*/,
2203  1 /*inMonth*/,
2204  7 /*onDayOfWeek*/,
2205  18 /*onDayOfMonth*/,
2206  8 /*atTimeCode*/,
2207  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2208  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2209  0 /*letterIndex ("")*/,
2210  },
2211  // Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
2212  {
2213  2014 /*fromYear*/,
2214  2018 /*toYear*/,
2215  11 /*inMonth*/,
2216  7 /*onDayOfWeek*/,
2217  1 /*onDayOfMonth*/,
2218  8 /*atTimeCode*/,
2219  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2220  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2221  0 /*letterIndex ("")*/,
2222  },
2223  // Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
2224  {
2225  2015 /*fromYear*/,
2226  2021 /*toYear*/,
2227  1 /*inMonth*/,
2228  7 /*onDayOfWeek*/,
2229  12 /*onDayOfMonth*/,
2230  12 /*atTimeCode*/,
2231  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2232  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2233  0 /*letterIndex ("")*/,
2234  },
2235  // Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
2236  {
2237  2019 /*fromYear*/,
2238  2019 /*toYear*/,
2239  11 /*inMonth*/,
2240  7 /*onDayOfWeek*/,
2241  8 /*onDayOfMonth*/,
2242  8 /*atTimeCode*/,
2243  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2244  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2245  0 /*letterIndex ("")*/,
2246  },
2247  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
2248  {
2249  2020 /*fromYear*/,
2250  2020 /*toYear*/,
2251  12 /*inMonth*/,
2252  0 /*onDayOfWeek*/,
2253  20 /*onDayOfMonth*/,
2254  8 /*atTimeCode*/,
2255  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2256  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2257  0 /*letterIndex ("")*/,
2258  },
2259 
2260 };
2261 
2262 const basic::ZonePolicy kZonePolicyFiji ACE_TIME_PROGMEM = {
2263  kZoneRulesFiji /*rules*/,
2264  13 /*numRules*/,
2265 };
2266 
2267 //---------------------------------------------------------------------------
2268 // Policy name: Guat
2269 // Rules: 4
2270 //---------------------------------------------------------------------------
2271 
2272 static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2273  // Anchor: Rule Guat 1991 only - Sep 7 0:00 0 S
2274  {
2275  -32767 /*fromYear*/,
2276  -32767 /*toYear*/,
2277  1 /*inMonth*/,
2278  0 /*onDayOfWeek*/,
2279  1 /*onDayOfMonth*/,
2280  0 /*atTimeCode*/,
2281  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2282  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2283  2 /*letterIndex ("S")*/,
2284  },
2285  // Rule Guat 1991 only - Sep 7 0:00 0 S
2286  {
2287  1991 /*fromYear*/,
2288  1991 /*toYear*/,
2289  9 /*inMonth*/,
2290  0 /*onDayOfWeek*/,
2291  7 /*onDayOfMonth*/,
2292  0 /*atTimeCode*/,
2293  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2294  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2295  2 /*letterIndex ("S")*/,
2296  },
2297  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2298  {
2299  2006 /*fromYear*/,
2300  2006 /*toYear*/,
2301  4 /*inMonth*/,
2302  0 /*onDayOfWeek*/,
2303  30 /*onDayOfMonth*/,
2304  0 /*atTimeCode*/,
2305  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2306  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2307  1 /*letterIndex ("D")*/,
2308  },
2309  // Rule Guat 2006 only - Oct 1 0:00 0 S
2310  {
2311  2006 /*fromYear*/,
2312  2006 /*toYear*/,
2313  10 /*inMonth*/,
2314  0 /*onDayOfWeek*/,
2315  1 /*onDayOfMonth*/,
2316  0 /*atTimeCode*/,
2317  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2318  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2319  2 /*letterIndex ("S")*/,
2320  },
2321 
2322 };
2323 
2324 const basic::ZonePolicy kZonePolicyGuat ACE_TIME_PROGMEM = {
2325  kZoneRulesGuat /*rules*/,
2326  4 /*numRules*/,
2327 };
2328 
2329 //---------------------------------------------------------------------------
2330 // Policy name: HK
2331 // Rules: 1
2332 //---------------------------------------------------------------------------
2333 
2334 static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2335  // Anchor: Rule HK 1979 only - Oct 21 3:30 0 -
2336  {
2337  -32767 /*fromYear*/,
2338  -32767 /*toYear*/,
2339  1 /*inMonth*/,
2340  0 /*onDayOfWeek*/,
2341  1 /*onDayOfMonth*/,
2342  0 /*atTimeCode*/,
2343  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2344  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2345  0 /*letterIndex ("")*/,
2346  },
2347 
2348 };
2349 
2350 const basic::ZonePolicy kZonePolicyHK ACE_TIME_PROGMEM = {
2351  kZoneRulesHK /*rules*/,
2352  1 /*numRules*/,
2353 };
2354 
2355 //---------------------------------------------------------------------------
2356 // Policy name: Haiti
2357 // Rules: 8
2358 //---------------------------------------------------------------------------
2359 
2360 static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2361  // Anchor: Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2362  {
2363  -32767 /*fromYear*/,
2364  -32767 /*toYear*/,
2365  1 /*inMonth*/,
2366  0 /*onDayOfWeek*/,
2367  1 /*onDayOfMonth*/,
2368  0 /*atTimeCode*/,
2369  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2370  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2371  2 /*letterIndex ("S")*/,
2372  },
2373  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2374  {
2375  1988 /*fromYear*/,
2376  1997 /*toYear*/,
2377  10 /*inMonth*/,
2378  7 /*onDayOfWeek*/,
2379  0 /*onDayOfMonth*/,
2380  4 /*atTimeCode*/,
2381  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2382  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2383  2 /*letterIndex ("S")*/,
2384  },
2385  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2386  {
2387  2005 /*fromYear*/,
2388  2006 /*toYear*/,
2389  4 /*inMonth*/,
2390  7 /*onDayOfWeek*/,
2391  1 /*onDayOfMonth*/,
2392  0 /*atTimeCode*/,
2393  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2394  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2395  1 /*letterIndex ("D")*/,
2396  },
2397  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2398  {
2399  2005 /*fromYear*/,
2400  2006 /*toYear*/,
2401  10 /*inMonth*/,
2402  7 /*onDayOfWeek*/,
2403  0 /*onDayOfMonth*/,
2404  0 /*atTimeCode*/,
2405  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2406  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2407  2 /*letterIndex ("S")*/,
2408  },
2409  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2410  {
2411  2012 /*fromYear*/,
2412  2015 /*toYear*/,
2413  3 /*inMonth*/,
2414  7 /*onDayOfWeek*/,
2415  8 /*onDayOfMonth*/,
2416  8 /*atTimeCode*/,
2417  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2418  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2419  1 /*letterIndex ("D")*/,
2420  },
2421  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2422  {
2423  2012 /*fromYear*/,
2424  2015 /*toYear*/,
2425  11 /*inMonth*/,
2426  7 /*onDayOfWeek*/,
2427  1 /*onDayOfMonth*/,
2428  8 /*atTimeCode*/,
2429  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2430  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2431  2 /*letterIndex ("S")*/,
2432  },
2433  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2434  {
2435  2017 /*fromYear*/,
2436  32766 /*toYear*/,
2437  3 /*inMonth*/,
2438  7 /*onDayOfWeek*/,
2439  8 /*onDayOfMonth*/,
2440  8 /*atTimeCode*/,
2441  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2442  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2443  1 /*letterIndex ("D")*/,
2444  },
2445  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2446  {
2447  2017 /*fromYear*/,
2448  32766 /*toYear*/,
2449  11 /*inMonth*/,
2450  7 /*onDayOfWeek*/,
2451  1 /*onDayOfMonth*/,
2452  8 /*atTimeCode*/,
2453  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2454  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2455  2 /*letterIndex ("S")*/,
2456  },
2457 
2458 };
2459 
2460 const basic::ZonePolicy kZonePolicyHaiti ACE_TIME_PROGMEM = {
2461  kZoneRulesHaiti /*rules*/,
2462  8 /*numRules*/,
2463 };
2464 
2465 //---------------------------------------------------------------------------
2466 // Policy name: Holiday
2467 // Rules: 1
2468 //---------------------------------------------------------------------------
2469 
2470 static const basic::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2471  // Anchor: Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2472  {
2473  -32767 /*fromYear*/,
2474  -32767 /*toYear*/,
2475  1 /*inMonth*/,
2476  0 /*onDayOfWeek*/,
2477  1 /*onDayOfMonth*/,
2478  0 /*atTimeCode*/,
2479  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2480  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2481  2 /*letterIndex ("S")*/,
2482  },
2483 
2484 };
2485 
2486 const basic::ZonePolicy kZonePolicyHoliday ACE_TIME_PROGMEM = {
2487  kZoneRulesHoliday /*rules*/,
2488  1 /*numRules*/,
2489 };
2490 
2491 //---------------------------------------------------------------------------
2492 // Policy name: Hond
2493 // Rules: 4
2494 //---------------------------------------------------------------------------
2495 
2496 static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2497  // Anchor: Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2498  {
2499  -32767 /*fromYear*/,
2500  -32767 /*toYear*/,
2501  1 /*inMonth*/,
2502  0 /*onDayOfWeek*/,
2503  1 /*onDayOfMonth*/,
2504  0 /*atTimeCode*/,
2505  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2506  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2507  2 /*letterIndex ("S")*/,
2508  },
2509  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2510  {
2511  1987 /*fromYear*/,
2512  1988 /*toYear*/,
2513  9 /*inMonth*/,
2514  7 /*onDayOfWeek*/,
2515  0 /*onDayOfMonth*/,
2516  0 /*atTimeCode*/,
2517  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2518  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2519  2 /*letterIndex ("S")*/,
2520  },
2521  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2522  {
2523  2006 /*fromYear*/,
2524  2006 /*toYear*/,
2525  5 /*inMonth*/,
2526  7 /*onDayOfWeek*/,
2527  1 /*onDayOfMonth*/,
2528  0 /*atTimeCode*/,
2529  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2530  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2531  1 /*letterIndex ("D")*/,
2532  },
2533  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2534  {
2535  2006 /*fromYear*/,
2536  2006 /*toYear*/,
2537  8 /*inMonth*/,
2538  1 /*onDayOfWeek*/,
2539  1 /*onDayOfMonth*/,
2540  0 /*atTimeCode*/,
2541  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2542  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2543  2 /*letterIndex ("S")*/,
2544  },
2545 
2546 };
2547 
2548 const basic::ZonePolicy kZonePolicyHond ACE_TIME_PROGMEM = {
2549  kZoneRulesHond /*rules*/,
2550  4 /*numRules*/,
2551 };
2552 
2553 //---------------------------------------------------------------------------
2554 // Policy name: Iran
2555 // Rules: 28
2556 //---------------------------------------------------------------------------
2557 
2558 static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
2559  // Anchor: Rule Iran 1996 only - Sep 20 24:00 0 -
2560  {
2561  -32767 /*fromYear*/,
2562  -32767 /*toYear*/,
2563  1 /*inMonth*/,
2564  0 /*onDayOfWeek*/,
2565  1 /*onDayOfMonth*/,
2566  0 /*atTimeCode*/,
2567  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2568  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2569  0 /*letterIndex ("")*/,
2570  },
2571  // Rule Iran 1996 only - Sep 20 24:00 0 -
2572  {
2573  1996 /*fromYear*/,
2574  1996 /*toYear*/,
2575  9 /*inMonth*/,
2576  0 /*onDayOfWeek*/,
2577  20 /*onDayOfMonth*/,
2578  96 /*atTimeCode*/,
2579  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2580  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2581  0 /*letterIndex ("")*/,
2582  },
2583  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2584  {
2585  1997 /*fromYear*/,
2586  1999 /*toYear*/,
2587  3 /*inMonth*/,
2588  0 /*onDayOfWeek*/,
2589  21 /*onDayOfMonth*/,
2590  96 /*atTimeCode*/,
2591  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2592  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2593  0 /*letterIndex ("")*/,
2594  },
2595  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2596  {
2597  1997 /*fromYear*/,
2598  1999 /*toYear*/,
2599  9 /*inMonth*/,
2600  0 /*onDayOfWeek*/,
2601  21 /*onDayOfMonth*/,
2602  96 /*atTimeCode*/,
2603  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2604  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2605  0 /*letterIndex ("")*/,
2606  },
2607  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2608  {
2609  2000 /*fromYear*/,
2610  2000 /*toYear*/,
2611  3 /*inMonth*/,
2612  0 /*onDayOfWeek*/,
2613  20 /*onDayOfMonth*/,
2614  96 /*atTimeCode*/,
2615  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2616  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2617  0 /*letterIndex ("")*/,
2618  },
2619  // Rule Iran 2000 only - Sep 20 24:00 0 -
2620  {
2621  2000 /*fromYear*/,
2622  2000 /*toYear*/,
2623  9 /*inMonth*/,
2624  0 /*onDayOfWeek*/,
2625  20 /*onDayOfMonth*/,
2626  96 /*atTimeCode*/,
2627  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2628  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2629  0 /*letterIndex ("")*/,
2630  },
2631  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
2632  {
2633  2001 /*fromYear*/,
2634  2003 /*toYear*/,
2635  3 /*inMonth*/,
2636  0 /*onDayOfWeek*/,
2637  21 /*onDayOfMonth*/,
2638  96 /*atTimeCode*/,
2639  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2640  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2641  0 /*letterIndex ("")*/,
2642  },
2643  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
2644  {
2645  2001 /*fromYear*/,
2646  2003 /*toYear*/,
2647  9 /*inMonth*/,
2648  0 /*onDayOfWeek*/,
2649  21 /*onDayOfMonth*/,
2650  96 /*atTimeCode*/,
2651  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2652  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2653  0 /*letterIndex ("")*/,
2654  },
2655  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
2656  {
2657  2004 /*fromYear*/,
2658  2004 /*toYear*/,
2659  3 /*inMonth*/,
2660  0 /*onDayOfWeek*/,
2661  20 /*onDayOfMonth*/,
2662  96 /*atTimeCode*/,
2663  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2664  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2665  0 /*letterIndex ("")*/,
2666  },
2667  // Rule Iran 2004 only - Sep 20 24:00 0 -
2668  {
2669  2004 /*fromYear*/,
2670  2004 /*toYear*/,
2671  9 /*inMonth*/,
2672  0 /*onDayOfWeek*/,
2673  20 /*onDayOfMonth*/,
2674  96 /*atTimeCode*/,
2675  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2676  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2677  0 /*letterIndex ("")*/,
2678  },
2679  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
2680  {
2681  2005 /*fromYear*/,
2682  2005 /*toYear*/,
2683  3 /*inMonth*/,
2684  0 /*onDayOfWeek*/,
2685  21 /*onDayOfMonth*/,
2686  96 /*atTimeCode*/,
2687  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2688  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2689  0 /*letterIndex ("")*/,
2690  },
2691  // Rule Iran 2005 only - Sep 21 24:00 0 -
2692  {
2693  2005 /*fromYear*/,
2694  2005 /*toYear*/,
2695  9 /*inMonth*/,
2696  0 /*onDayOfWeek*/,
2697  21 /*onDayOfMonth*/,
2698  96 /*atTimeCode*/,
2699  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2700  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2701  0 /*letterIndex ("")*/,
2702  },
2703  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
2704  {
2705  2008 /*fromYear*/,
2706  2008 /*toYear*/,
2707  3 /*inMonth*/,
2708  0 /*onDayOfWeek*/,
2709  20 /*onDayOfMonth*/,
2710  96 /*atTimeCode*/,
2711  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2712  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2713  0 /*letterIndex ("")*/,
2714  },
2715  // Rule Iran 2008 only - Sep 20 24:00 0 -
2716  {
2717  2008 /*fromYear*/,
2718  2008 /*toYear*/,
2719  9 /*inMonth*/,
2720  0 /*onDayOfWeek*/,
2721  20 /*onDayOfMonth*/,
2722  96 /*atTimeCode*/,
2723  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2724  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2725  0 /*letterIndex ("")*/,
2726  },
2727  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
2728  {
2729  2009 /*fromYear*/,
2730  2011 /*toYear*/,
2731  3 /*inMonth*/,
2732  0 /*onDayOfWeek*/,
2733  21 /*onDayOfMonth*/,
2734  96 /*atTimeCode*/,
2735  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2736  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2737  0 /*letterIndex ("")*/,
2738  },
2739  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
2740  {
2741  2009 /*fromYear*/,
2742  2011 /*toYear*/,
2743  9 /*inMonth*/,
2744  0 /*onDayOfWeek*/,
2745  21 /*onDayOfMonth*/,
2746  96 /*atTimeCode*/,
2747  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2748  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2749  0 /*letterIndex ("")*/,
2750  },
2751  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
2752  {
2753  2012 /*fromYear*/,
2754  2012 /*toYear*/,
2755  3 /*inMonth*/,
2756  0 /*onDayOfWeek*/,
2757  20 /*onDayOfMonth*/,
2758  96 /*atTimeCode*/,
2759  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2760  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2761  0 /*letterIndex ("")*/,
2762  },
2763  // Rule Iran 2012 only - Sep 20 24:00 0 -
2764  {
2765  2012 /*fromYear*/,
2766  2012 /*toYear*/,
2767  9 /*inMonth*/,
2768  0 /*onDayOfWeek*/,
2769  20 /*onDayOfMonth*/,
2770  96 /*atTimeCode*/,
2771  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2772  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2773  0 /*letterIndex ("")*/,
2774  },
2775  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
2776  {
2777  2013 /*fromYear*/,
2778  2015 /*toYear*/,
2779  3 /*inMonth*/,
2780  0 /*onDayOfWeek*/,
2781  21 /*onDayOfMonth*/,
2782  96 /*atTimeCode*/,
2783  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2784  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2785  0 /*letterIndex ("")*/,
2786  },
2787  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
2788  {
2789  2013 /*fromYear*/,
2790  2015 /*toYear*/,
2791  9 /*inMonth*/,
2792  0 /*onDayOfWeek*/,
2793  21 /*onDayOfMonth*/,
2794  96 /*atTimeCode*/,
2795  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2796  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2797  0 /*letterIndex ("")*/,
2798  },
2799  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
2800  {
2801  2016 /*fromYear*/,
2802  2016 /*toYear*/,
2803  3 /*inMonth*/,
2804  0 /*onDayOfWeek*/,
2805  20 /*onDayOfMonth*/,
2806  96 /*atTimeCode*/,
2807  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2808  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2809  0 /*letterIndex ("")*/,
2810  },
2811  // Rule Iran 2016 only - Sep 20 24:00 0 -
2812  {
2813  2016 /*fromYear*/,
2814  2016 /*toYear*/,
2815  9 /*inMonth*/,
2816  0 /*onDayOfWeek*/,
2817  20 /*onDayOfMonth*/,
2818  96 /*atTimeCode*/,
2819  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2820  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2821  0 /*letterIndex ("")*/,
2822  },
2823  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
2824  {
2825  2017 /*fromYear*/,
2826  2019 /*toYear*/,
2827  3 /*inMonth*/,
2828  0 /*onDayOfWeek*/,
2829  21 /*onDayOfMonth*/,
2830  96 /*atTimeCode*/,
2831  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2832  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2833  0 /*letterIndex ("")*/,
2834  },
2835  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
2836  {
2837  2017 /*fromYear*/,
2838  2019 /*toYear*/,
2839  9 /*inMonth*/,
2840  0 /*onDayOfWeek*/,
2841  21 /*onDayOfMonth*/,
2842  96 /*atTimeCode*/,
2843  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2844  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2845  0 /*letterIndex ("")*/,
2846  },
2847  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
2848  {
2849  2020 /*fromYear*/,
2850  2020 /*toYear*/,
2851  3 /*inMonth*/,
2852  0 /*onDayOfWeek*/,
2853  20 /*onDayOfMonth*/,
2854  96 /*atTimeCode*/,
2855  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2856  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2857  0 /*letterIndex ("")*/,
2858  },
2859  // Rule Iran 2020 only - Sep 20 24:00 0 -
2860  {
2861  2020 /*fromYear*/,
2862  2020 /*toYear*/,
2863  9 /*inMonth*/,
2864  0 /*onDayOfWeek*/,
2865  20 /*onDayOfMonth*/,
2866  96 /*atTimeCode*/,
2867  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2868  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2869  0 /*letterIndex ("")*/,
2870  },
2871  // Rule Iran 2021 2022 - Mar 21 24:00 1:00 -
2872  {
2873  2021 /*fromYear*/,
2874  2022 /*toYear*/,
2875  3 /*inMonth*/,
2876  0 /*onDayOfWeek*/,
2877  21 /*onDayOfMonth*/,
2878  96 /*atTimeCode*/,
2879  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2880  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2881  0 /*letterIndex ("")*/,
2882  },
2883  // Rule Iran 2021 2022 - Sep 21 24:00 0 -
2884  {
2885  2021 /*fromYear*/,
2886  2022 /*toYear*/,
2887  9 /*inMonth*/,
2888  0 /*onDayOfWeek*/,
2889  21 /*onDayOfMonth*/,
2890  96 /*atTimeCode*/,
2891  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2892  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2893  0 /*letterIndex ("")*/,
2894  },
2895 
2896 };
2897 
2898 const basic::ZonePolicy kZonePolicyIran ACE_TIME_PROGMEM = {
2899  kZoneRulesIran /*rules*/,
2900  28 /*numRules*/,
2901 };
2902 
2903 //---------------------------------------------------------------------------
2904 // Policy name: Iraq
2905 // Rules: 4
2906 //---------------------------------------------------------------------------
2907 
2908 static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
2909  // Anchor: Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
2910  {
2911  -32767 /*fromYear*/,
2912  -32767 /*toYear*/,
2913  1 /*inMonth*/,
2914  0 /*onDayOfWeek*/,
2915  1 /*onDayOfMonth*/,
2916  0 /*atTimeCode*/,
2917  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2918  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2919  0 /*letterIndex ("")*/,
2920  },
2921  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
2922  {
2923  1985 /*fromYear*/,
2924  1990 /*toYear*/,
2925  9 /*inMonth*/,
2926  7 /*onDayOfWeek*/,
2927  0 /*onDayOfMonth*/,
2928  4 /*atTimeCode*/,
2929  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2930  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2931  0 /*letterIndex ("")*/,
2932  },
2933  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
2934  {
2935  1991 /*fromYear*/,
2936  2007 /*toYear*/,
2937  4 /*inMonth*/,
2938  0 /*onDayOfWeek*/,
2939  1 /*onDayOfMonth*/,
2940  12 /*atTimeCode*/,
2941  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2942  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2943  0 /*letterIndex ("")*/,
2944  },
2945  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
2946  {
2947  1991 /*fromYear*/,
2948  2007 /*toYear*/,
2949  10 /*inMonth*/,
2950  0 /*onDayOfWeek*/,
2951  1 /*onDayOfMonth*/,
2952  12 /*atTimeCode*/,
2953  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2954  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2955  0 /*letterIndex ("")*/,
2956  },
2957 
2958 };
2959 
2960 const basic::ZonePolicy kZonePolicyIraq ACE_TIME_PROGMEM = {
2961  kZoneRulesIraq /*rules*/,
2962  4 /*numRules*/,
2963 };
2964 
2965 //---------------------------------------------------------------------------
2966 // Policy name: Japan
2967 // Rules: 1
2968 //---------------------------------------------------------------------------
2969 
2970 static const basic::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
2971  // Anchor: Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
2972  {
2973  -32767 /*fromYear*/,
2974  -32767 /*toYear*/,
2975  1 /*inMonth*/,
2976  0 /*onDayOfWeek*/,
2977  1 /*onDayOfMonth*/,
2978  0 /*atTimeCode*/,
2979  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2980  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2981  2 /*letterIndex ("S")*/,
2982  },
2983 
2984 };
2985 
2986 const basic::ZonePolicy kZonePolicyJapan ACE_TIME_PROGMEM = {
2987  kZoneRulesJapan /*rules*/,
2988  1 /*numRules*/,
2989 };
2990 
2991 //---------------------------------------------------------------------------
2992 // Policy name: Jordan
2993 // Rules: 14
2994 //---------------------------------------------------------------------------
2995 
2996 static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
2997  // Anchor: Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
2998  {
2999  -32767 /*fromYear*/,
3000  -32767 /*toYear*/,
3001  1 /*inMonth*/,
3002  0 /*onDayOfWeek*/,
3003  1 /*onDayOfMonth*/,
3004  0 /*atTimeCode*/,
3005  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3006  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3007  0 /*letterIndex ("")*/,
3008  },
3009  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3010  {
3011  1995 /*fromYear*/,
3012  1998 /*toYear*/,
3013  9 /*inMonth*/,
3014  5 /*onDayOfWeek*/,
3015  15 /*onDayOfMonth*/,
3016  0 /*atTimeCode*/,
3017  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3018  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3019  0 /*letterIndex ("")*/,
3020  },
3021  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3022  {
3023  1999 /*fromYear*/,
3024  1999 /*toYear*/,
3025  7 /*inMonth*/,
3026  0 /*onDayOfWeek*/,
3027  1 /*onDayOfMonth*/,
3028  0 /*atTimeCode*/,
3029  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3030  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3031  2 /*letterIndex ("S")*/,
3032  },
3033  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3034  {
3035  1999 /*fromYear*/,
3036  2002 /*toYear*/,
3037  9 /*inMonth*/,
3038  5 /*onDayOfWeek*/,
3039  0 /*onDayOfMonth*/,
3040  0 /*atTimeCode*/,
3041  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3042  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3043  0 /*letterIndex ("")*/,
3044  },
3045  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3046  {
3047  2000 /*fromYear*/,
3048  2001 /*toYear*/,
3049  3 /*inMonth*/,
3050  4 /*onDayOfWeek*/,
3051  0 /*onDayOfMonth*/,
3052  0 /*atTimeCode*/,
3053  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3054  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3055  2 /*letterIndex ("S")*/,
3056  },
3057  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3058  {
3059  2002 /*fromYear*/,
3060  2012 /*toYear*/,
3061  3 /*inMonth*/,
3062  4 /*onDayOfWeek*/,
3063  0 /*onDayOfMonth*/,
3064  96 /*atTimeCode*/,
3065  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3066  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3067  2 /*letterIndex ("S")*/,
3068  },
3069  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3070  {
3071  2003 /*fromYear*/,
3072  2003 /*toYear*/,
3073  10 /*inMonth*/,
3074  0 /*onDayOfWeek*/,
3075  24 /*onDayOfMonth*/,
3076  0 /*atTimeCode*/,
3077  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3078  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3079  0 /*letterIndex ("")*/,
3080  },
3081  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3082  {
3083  2004 /*fromYear*/,
3084  2004 /*toYear*/,
3085  10 /*inMonth*/,
3086  0 /*onDayOfWeek*/,
3087  15 /*onDayOfMonth*/,
3088  0 /*atTimeCode*/,
3089  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3090  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3091  0 /*letterIndex ("")*/,
3092  },
3093  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3094  {
3095  2005 /*fromYear*/,
3096  2005 /*toYear*/,
3097  9 /*inMonth*/,
3098  5 /*onDayOfWeek*/,
3099  0 /*onDayOfMonth*/,
3100  0 /*atTimeCode*/,
3101  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3102  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3103  0 /*letterIndex ("")*/,
3104  },
3105  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3106  {
3107  2006 /*fromYear*/,
3108  2011 /*toYear*/,
3109  10 /*inMonth*/,
3110  5 /*onDayOfWeek*/,
3111  0 /*onDayOfMonth*/,
3112  0 /*atTimeCode*/,
3113  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3114  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3115  0 /*letterIndex ("")*/,
3116  },
3117  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3118  {
3119  2013 /*fromYear*/,
3120  2013 /*toYear*/,
3121  12 /*inMonth*/,
3122  0 /*onDayOfWeek*/,
3123  20 /*onDayOfMonth*/,
3124  0 /*atTimeCode*/,
3125  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3126  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3127  0 /*letterIndex ("")*/,
3128  },
3129  // Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
3130  {
3131  2014 /*fromYear*/,
3132  2021 /*toYear*/,
3133  3 /*inMonth*/,
3134  4 /*onDayOfWeek*/,
3135  0 /*onDayOfMonth*/,
3136  96 /*atTimeCode*/,
3137  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3138  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3139  2 /*letterIndex ("S")*/,
3140  },
3141  // Rule Jordan 2014 2022 - Oct lastFri 0:00s 0 -
3142  {
3143  2014 /*fromYear*/,
3144  2022 /*toYear*/,
3145  10 /*inMonth*/,
3146  5 /*onDayOfWeek*/,
3147  0 /*onDayOfMonth*/,
3148  0 /*atTimeCode*/,
3149  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3150  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3151  0 /*letterIndex ("")*/,
3152  },
3153  // Rule Jordan 2022 only - Feb lastThu 24:00 1:00 S
3154  {
3155  2022 /*fromYear*/,
3156  2022 /*toYear*/,
3157  2 /*inMonth*/,
3158  4 /*onDayOfWeek*/,
3159  0 /*onDayOfMonth*/,
3160  96 /*atTimeCode*/,
3161  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3162  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3163  2 /*letterIndex ("S")*/,
3164  },
3165 
3166 };
3167 
3168 const basic::ZonePolicy kZonePolicyJordan ACE_TIME_PROGMEM = {
3169  kZoneRulesJordan /*rules*/,
3170  14 /*numRules*/,
3171 };
3172 
3173 //---------------------------------------------------------------------------
3174 // Policy name: LH
3175 // Rules: 10
3176 //---------------------------------------------------------------------------
3177 
3178 static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3179  // Anchor: Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3180  {
3181  -32767 /*fromYear*/,
3182  -32767 /*toYear*/,
3183  1 /*inMonth*/,
3184  0 /*onDayOfWeek*/,
3185  1 /*onDayOfMonth*/,
3186  0 /*atTimeCode*/,
3187  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3188  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3189  0 /*letterIndex ("")*/,
3190  },
3191  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3192  {
3193  1987 /*fromYear*/,
3194  1999 /*toYear*/,
3195  10 /*inMonth*/,
3196  7 /*onDayOfWeek*/,
3197  0 /*onDayOfMonth*/,
3198  8 /*atTimeCode*/,
3199  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3200  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3201  0 /*letterIndex ("")*/,
3202  },
3203  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3204  {
3205  1990 /*fromYear*/,
3206  1995 /*toYear*/,
3207  3 /*inMonth*/,
3208  7 /*onDayOfWeek*/,
3209  1 /*onDayOfMonth*/,
3210  8 /*atTimeCode*/,
3211  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3212  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3213  0 /*letterIndex ("")*/,
3214  },
3215  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3216  {
3217  1996 /*fromYear*/,
3218  2005 /*toYear*/,
3219  3 /*inMonth*/,
3220  7 /*onDayOfWeek*/,
3221  0 /*onDayOfMonth*/,
3222  8 /*atTimeCode*/,
3223  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3224  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3225  0 /*letterIndex ("")*/,
3226  },
3227  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3228  {
3229  2000 /*fromYear*/,
3230  2000 /*toYear*/,
3231  8 /*inMonth*/,
3232  7 /*onDayOfWeek*/,
3233  0 /*onDayOfMonth*/,
3234  8 /*atTimeCode*/,
3235  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3236  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3237  0 /*letterIndex ("")*/,
3238  },
3239  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3240  {
3241  2001 /*fromYear*/,
3242  2007 /*toYear*/,
3243  10 /*inMonth*/,
3244  7 /*onDayOfWeek*/,
3245  0 /*onDayOfMonth*/,
3246  8 /*atTimeCode*/,
3247  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3248  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3249  0 /*letterIndex ("")*/,
3250  },
3251  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3252  {
3253  2006 /*fromYear*/,
3254  2006 /*toYear*/,
3255  4 /*inMonth*/,
3256  7 /*onDayOfWeek*/,
3257  1 /*onDayOfMonth*/,
3258  8 /*atTimeCode*/,
3259  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3260  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3261  0 /*letterIndex ("")*/,
3262  },
3263  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3264  {
3265  2007 /*fromYear*/,
3266  2007 /*toYear*/,
3267  3 /*inMonth*/,
3268  7 /*onDayOfWeek*/,
3269  0 /*onDayOfMonth*/,
3270  8 /*atTimeCode*/,
3271  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3272  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3273  0 /*letterIndex ("")*/,
3274  },
3275  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3276  {
3277  2008 /*fromYear*/,
3278  32766 /*toYear*/,
3279  4 /*inMonth*/,
3280  7 /*onDayOfWeek*/,
3281  1 /*onDayOfMonth*/,
3282  8 /*atTimeCode*/,
3283  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3284  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3285  0 /*letterIndex ("")*/,
3286  },
3287  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3288  {
3289  2008 /*fromYear*/,
3290  32766 /*toYear*/,
3291  10 /*inMonth*/,
3292  7 /*onDayOfWeek*/,
3293  1 /*onDayOfMonth*/,
3294  8 /*atTimeCode*/,
3295  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3296  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3297  0 /*letterIndex ("")*/,
3298  },
3299 
3300 };
3301 
3302 const basic::ZonePolicy kZonePolicyLH ACE_TIME_PROGMEM = {
3303  kZoneRulesLH /*rules*/,
3304  10 /*numRules*/,
3305 };
3306 
3307 //---------------------------------------------------------------------------
3308 // Policy name: Lebanon
3309 // Rules: 4
3310 //---------------------------------------------------------------------------
3311 
3312 static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3313  // Anchor: Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3314  {
3315  -32767 /*fromYear*/,
3316  -32767 /*toYear*/,
3317  1 /*inMonth*/,
3318  0 /*onDayOfWeek*/,
3319  1 /*onDayOfMonth*/,
3320  0 /*atTimeCode*/,
3321  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3322  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3323  0 /*letterIndex ("")*/,
3324  },
3325  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3326  {
3327  1993 /*fromYear*/,
3328  32766 /*toYear*/,
3329  3 /*inMonth*/,
3330  7 /*onDayOfWeek*/,
3331  0 /*onDayOfMonth*/,
3332  0 /*atTimeCode*/,
3333  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3334  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3335  2 /*letterIndex ("S")*/,
3336  },
3337  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3338  {
3339  1993 /*fromYear*/,
3340  1998 /*toYear*/,
3341  9 /*inMonth*/,
3342  7 /*onDayOfWeek*/,
3343  0 /*onDayOfMonth*/,
3344  0 /*atTimeCode*/,
3345  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3346  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3347  0 /*letterIndex ("")*/,
3348  },
3349  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3350  {
3351  1999 /*fromYear*/,
3352  32766 /*toYear*/,
3353  10 /*inMonth*/,
3354  7 /*onDayOfWeek*/,
3355  0 /*onDayOfMonth*/,
3356  0 /*atTimeCode*/,
3357  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3358  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3359  0 /*letterIndex ("")*/,
3360  },
3361 
3362 };
3363 
3364 const basic::ZonePolicy kZonePolicyLebanon ACE_TIME_PROGMEM = {
3365  kZoneRulesLebanon /*rules*/,
3366  4 /*numRules*/,
3367 };
3368 
3369 //---------------------------------------------------------------------------
3370 // Policy name: Macau
3371 // Rules: 1
3372 //---------------------------------------------------------------------------
3373 
3374 static const basic::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
3375  // Anchor: Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3376  {
3377  -32767 /*fromYear*/,
3378  -32767 /*toYear*/,
3379  1 /*inMonth*/,
3380  0 /*onDayOfWeek*/,
3381  1 /*onDayOfMonth*/,
3382  0 /*atTimeCode*/,
3383  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3384  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3385  2 /*letterIndex ("S")*/,
3386  },
3387 
3388 };
3389 
3390 const basic::ZonePolicy kZonePolicyMacau ACE_TIME_PROGMEM = {
3391  kZoneRulesMacau /*rules*/,
3392  1 /*numRules*/,
3393 };
3394 
3395 //---------------------------------------------------------------------------
3396 // Policy name: Mauritius
3397 // Rules: 4
3398 //---------------------------------------------------------------------------
3399 
3400 static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
3401  // Anchor: Rule Mauritius 1983 only - Mar 21 0:00 0 -
3402  {
3403  -32767 /*fromYear*/,
3404  -32767 /*toYear*/,
3405  1 /*inMonth*/,
3406  0 /*onDayOfWeek*/,
3407  1 /*onDayOfMonth*/,
3408  0 /*atTimeCode*/,
3409  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3410  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3411  0 /*letterIndex ("")*/,
3412  },
3413  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3414  {
3415  1983 /*fromYear*/,
3416  1983 /*toYear*/,
3417  3 /*inMonth*/,
3418  0 /*onDayOfWeek*/,
3419  21 /*onDayOfMonth*/,
3420  0 /*atTimeCode*/,
3421  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3422  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3423  0 /*letterIndex ("")*/,
3424  },
3425  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
3426  {
3427  2008 /*fromYear*/,
3428  2008 /*toYear*/,
3429  10 /*inMonth*/,
3430  7 /*onDayOfWeek*/,
3431  0 /*onDayOfMonth*/,
3432  8 /*atTimeCode*/,
3433  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3434  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3435  0 /*letterIndex ("")*/,
3436  },
3437  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
3438  {
3439  2009 /*fromYear*/,
3440  2009 /*toYear*/,
3441  3 /*inMonth*/,
3442  7 /*onDayOfWeek*/,
3443  0 /*onDayOfMonth*/,
3444  8 /*atTimeCode*/,
3445  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3446  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3447  0 /*letterIndex ("")*/,
3448  },
3449 
3450 };
3451 
3452 const basic::ZonePolicy kZonePolicyMauritius ACE_TIME_PROGMEM = {
3453  kZoneRulesMauritius /*rules*/,
3454  4 /*numRules*/,
3455 };
3456 
3457 //---------------------------------------------------------------------------
3458 // Policy name: Mexico
3459 // Rules: 8
3460 //---------------------------------------------------------------------------
3461 
3462 static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
3463  // Anchor: Rule Mexico 1950 only - Jul 30 0:00 0 S
3464  {
3465  -32767 /*fromYear*/,
3466  -32767 /*toYear*/,
3467  1 /*inMonth*/,
3468  0 /*onDayOfWeek*/,
3469  1 /*onDayOfMonth*/,
3470  0 /*atTimeCode*/,
3471  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3472  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3473  2 /*letterIndex ("S")*/,
3474  },
3475  // Rule Mexico 1950 only - Jul 30 0:00 0 S
3476  {
3477  1950 /*fromYear*/,
3478  1950 /*toYear*/,
3479  7 /*inMonth*/,
3480  0 /*onDayOfWeek*/,
3481  30 /*onDayOfMonth*/,
3482  0 /*atTimeCode*/,
3483  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3484  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3485  2 /*letterIndex ("S")*/,
3486  },
3487  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
3488  {
3489  1996 /*fromYear*/,
3490  2000 /*toYear*/,
3491  4 /*inMonth*/,
3492  7 /*onDayOfWeek*/,
3493  1 /*onDayOfMonth*/,
3494  8 /*atTimeCode*/,
3495  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3496  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3497  1 /*letterIndex ("D")*/,
3498  },
3499  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
3500  {
3501  1996 /*fromYear*/,
3502  2000 /*toYear*/,
3503  10 /*inMonth*/,
3504  7 /*onDayOfWeek*/,
3505  0 /*onDayOfMonth*/,
3506  8 /*atTimeCode*/,
3507  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3508  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3509  2 /*letterIndex ("S")*/,
3510  },
3511  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
3512  {
3513  2001 /*fromYear*/,
3514  2001 /*toYear*/,
3515  5 /*inMonth*/,
3516  7 /*onDayOfWeek*/,
3517  1 /*onDayOfMonth*/,
3518  8 /*atTimeCode*/,
3519  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3520  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3521  1 /*letterIndex ("D")*/,
3522  },
3523  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
3524  {
3525  2001 /*fromYear*/,
3526  2001 /*toYear*/,
3527  9 /*inMonth*/,
3528  7 /*onDayOfWeek*/,
3529  0 /*onDayOfMonth*/,
3530  8 /*atTimeCode*/,
3531  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3532  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3533  2 /*letterIndex ("S")*/,
3534  },
3535  // Rule Mexico 2002 2022 - Apr Sun>=1 2:00 1:00 D
3536  {
3537  2002 /*fromYear*/,
3538  2022 /*toYear*/,
3539  4 /*inMonth*/,
3540  7 /*onDayOfWeek*/,
3541  1 /*onDayOfMonth*/,
3542  8 /*atTimeCode*/,
3543  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3544  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3545  1 /*letterIndex ("D")*/,
3546  },
3547  // Rule Mexico 2002 2022 - Oct lastSun 2:00 0 S
3548  {
3549  2002 /*fromYear*/,
3550  2022 /*toYear*/,
3551  10 /*inMonth*/,
3552  7 /*onDayOfWeek*/,
3553  0 /*onDayOfMonth*/,
3554  8 /*atTimeCode*/,
3555  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3556  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3557  2 /*letterIndex ("S")*/,
3558  },
3559 
3560 };
3561 
3562 const basic::ZonePolicy kZonePolicyMexico ACE_TIME_PROGMEM = {
3563  kZoneRulesMexico /*rules*/,
3564  8 /*numRules*/,
3565 };
3566 
3567 //---------------------------------------------------------------------------
3568 // Policy name: Moldova
3569 // Rules: 3
3570 //---------------------------------------------------------------------------
3571 
3572 static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
3573  // Anchor: Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3574  {
3575  -32767 /*fromYear*/,
3576  -32767 /*toYear*/,
3577  1 /*inMonth*/,
3578  0 /*onDayOfWeek*/,
3579  1 /*onDayOfMonth*/,
3580  0 /*atTimeCode*/,
3581  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3582  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3583  0 /*letterIndex ("")*/,
3584  },
3585  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
3586  {
3587  1997 /*fromYear*/,
3588  32766 /*toYear*/,
3589  3 /*inMonth*/,
3590  7 /*onDayOfWeek*/,
3591  0 /*onDayOfMonth*/,
3592  8 /*atTimeCode*/,
3593  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3594  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3595  2 /*letterIndex ("S")*/,
3596  },
3597  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3598  {
3599  1997 /*fromYear*/,
3600  32766 /*toYear*/,
3601  10 /*inMonth*/,
3602  7 /*onDayOfWeek*/,
3603  0 /*onDayOfMonth*/,
3604  12 /*atTimeCode*/,
3605  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3606  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3607  0 /*letterIndex ("")*/,
3608  },
3609 
3610 };
3611 
3612 const basic::ZonePolicy kZonePolicyMoldova ACE_TIME_PROGMEM = {
3613  kZoneRulesMoldova /*rules*/,
3614  3 /*numRules*/,
3615 };
3616 
3617 //---------------------------------------------------------------------------
3618 // Policy name: Moncton
3619 // Rules: 4
3620 //---------------------------------------------------------------------------
3621 
3622 static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
3623  // Anchor: Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3624  {
3625  -32767 /*fromYear*/,
3626  -32767 /*toYear*/,
3627  1 /*inMonth*/,
3628  0 /*onDayOfWeek*/,
3629  1 /*onDayOfMonth*/,
3630  0 /*atTimeCode*/,
3631  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3632  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3633  2 /*letterIndex ("S")*/,
3634  },
3635  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3636  {
3637  1957 /*fromYear*/,
3638  1972 /*toYear*/,
3639  10 /*inMonth*/,
3640  7 /*onDayOfWeek*/,
3641  0 /*onDayOfMonth*/,
3642  8 /*atTimeCode*/,
3643  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3644  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3645  2 /*letterIndex ("S")*/,
3646  },
3647  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
3648  {
3649  1993 /*fromYear*/,
3650  2006 /*toYear*/,
3651  4 /*inMonth*/,
3652  7 /*onDayOfWeek*/,
3653  1 /*onDayOfMonth*/,
3654  0 /*atTimeCode*/,
3655  1 /*atTimeModifier (kSuffixW + minute=1)*/,
3656  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3657  1 /*letterIndex ("D")*/,
3658  },
3659  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
3660  {
3661  1993 /*fromYear*/,
3662  2006 /*toYear*/,
3663  10 /*inMonth*/,
3664  7 /*onDayOfWeek*/,
3665  0 /*onDayOfMonth*/,
3666  0 /*atTimeCode*/,
3667  1 /*atTimeModifier (kSuffixW + minute=1)*/,
3668  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3669  2 /*letterIndex ("S")*/,
3670  },
3671 
3672 };
3673 
3674 const basic::ZonePolicy kZonePolicyMoncton ACE_TIME_PROGMEM = {
3675  kZoneRulesMoncton /*rules*/,
3676  4 /*numRules*/,
3677 };
3678 
3679 //---------------------------------------------------------------------------
3680 // Policy name: Mongol
3681 // Rules: 7
3682 //---------------------------------------------------------------------------
3683 
3684 static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
3685  // Anchor: Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3686  {
3687  -32767 /*fromYear*/,
3688  -32767 /*toYear*/,
3689  1 /*inMonth*/,
3690  0 /*onDayOfWeek*/,
3691  1 /*onDayOfMonth*/,
3692  0 /*atTimeCode*/,
3693  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3694  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3695  0 /*letterIndex ("")*/,
3696  },
3697  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3698  {
3699  1984 /*fromYear*/,
3700  1998 /*toYear*/,
3701  9 /*inMonth*/,
3702  7 /*onDayOfWeek*/,
3703  0 /*onDayOfMonth*/,
3704  0 /*atTimeCode*/,
3705  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3706  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3707  0 /*letterIndex ("")*/,
3708  },
3709  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
3710  {
3711  2001 /*fromYear*/,
3712  2001 /*toYear*/,
3713  4 /*inMonth*/,
3714  6 /*onDayOfWeek*/,
3715  0 /*onDayOfMonth*/,
3716  8 /*atTimeCode*/,
3717  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3718  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3719  0 /*letterIndex ("")*/,
3720  },
3721  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
3722  {
3723  2001 /*fromYear*/,
3724  2006 /*toYear*/,
3725  9 /*inMonth*/,
3726  6 /*onDayOfWeek*/,
3727  0 /*onDayOfMonth*/,
3728  8 /*atTimeCode*/,
3729  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3730  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3731  0 /*letterIndex ("")*/,
3732  },
3733  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
3734  {
3735  2002 /*fromYear*/,
3736  2006 /*toYear*/,
3737  3 /*inMonth*/,
3738  6 /*onDayOfWeek*/,
3739  0 /*onDayOfMonth*/,
3740  8 /*atTimeCode*/,
3741  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3742  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3743  0 /*letterIndex ("")*/,
3744  },
3745  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
3746  {
3747  2015 /*fromYear*/,
3748  2016 /*toYear*/,
3749  3 /*inMonth*/,
3750  6 /*onDayOfWeek*/,
3751  0 /*onDayOfMonth*/,
3752  8 /*atTimeCode*/,
3753  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3754  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3755  0 /*letterIndex ("")*/,
3756  },
3757  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
3758  {
3759  2015 /*fromYear*/,
3760  2016 /*toYear*/,
3761  9 /*inMonth*/,
3762  6 /*onDayOfWeek*/,
3763  0 /*onDayOfMonth*/,
3764  0 /*atTimeCode*/,
3765  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3766  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3767  0 /*letterIndex ("")*/,
3768  },
3769 
3770 };
3771 
3772 const basic::ZonePolicy kZonePolicyMongol ACE_TIME_PROGMEM = {
3773  kZoneRulesMongol /*rules*/,
3774  7 /*numRules*/,
3775 };
3776 
3777 //---------------------------------------------------------------------------
3778 // Policy name: NC
3779 // Rules: 1
3780 //---------------------------------------------------------------------------
3781 
3782 static const basic::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
3783  // Anchor: Rule NC 1997 only - Mar 2 2:00s 0 -
3784  {
3785  -32767 /*fromYear*/,
3786  -32767 /*toYear*/,
3787  1 /*inMonth*/,
3788  0 /*onDayOfWeek*/,
3789  1 /*onDayOfMonth*/,
3790  0 /*atTimeCode*/,
3791  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3792  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3793  0 /*letterIndex ("")*/,
3794  },
3795 
3796 };
3797 
3798 const basic::ZonePolicy kZonePolicyNC ACE_TIME_PROGMEM = {
3799  kZoneRulesNC /*rules*/,
3800  1 /*numRules*/,
3801 };
3802 
3803 //---------------------------------------------------------------------------
3804 // Policy name: NZ
3805 // Rules: 6
3806 //---------------------------------------------------------------------------
3807 
3808 static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
3809  // Anchor: Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
3810  {
3811  -32767 /*fromYear*/,
3812  -32767 /*toYear*/,
3813  1 /*inMonth*/,
3814  0 /*onDayOfWeek*/,
3815  1 /*onDayOfMonth*/,
3816  0 /*atTimeCode*/,
3817  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3818  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3819  2 /*letterIndex ("S")*/,
3820  },
3821  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
3822  {
3823  1989 /*fromYear*/,
3824  1989 /*toYear*/,
3825  10 /*inMonth*/,
3826  7 /*onDayOfWeek*/,
3827  8 /*onDayOfMonth*/,
3828  8 /*atTimeCode*/,
3829  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3830  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3831  1 /*letterIndex ("D")*/,
3832  },
3833  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
3834  {
3835  1990 /*fromYear*/,
3836  2006 /*toYear*/,
3837  10 /*inMonth*/,
3838  7 /*onDayOfWeek*/,
3839  1 /*onDayOfMonth*/,
3840  8 /*atTimeCode*/,
3841  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3842  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3843  1 /*letterIndex ("D")*/,
3844  },
3845  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
3846  {
3847  1990 /*fromYear*/,
3848  2007 /*toYear*/,
3849  3 /*inMonth*/,
3850  7 /*onDayOfWeek*/,
3851  15 /*onDayOfMonth*/,
3852  8 /*atTimeCode*/,
3853  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3854  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3855  2 /*letterIndex ("S")*/,
3856  },
3857  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
3858  {
3859  2007 /*fromYear*/,
3860  32766 /*toYear*/,
3861  9 /*inMonth*/,
3862  7 /*onDayOfWeek*/,
3863  0 /*onDayOfMonth*/,
3864  8 /*atTimeCode*/,
3865  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3866  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3867  1 /*letterIndex ("D")*/,
3868  },
3869  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
3870  {
3871  2008 /*fromYear*/,
3872  32766 /*toYear*/,
3873  4 /*inMonth*/,
3874  7 /*onDayOfWeek*/,
3875  1 /*onDayOfMonth*/,
3876  8 /*atTimeCode*/,
3877  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3878  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3879  2 /*letterIndex ("S")*/,
3880  },
3881 
3882 };
3883 
3884 const basic::ZonePolicy kZonePolicyNZ ACE_TIME_PROGMEM = {
3885  kZoneRulesNZ /*rules*/,
3886  6 /*numRules*/,
3887 };
3888 
3889 //---------------------------------------------------------------------------
3890 // Policy name: Nic
3891 // Rules: 6
3892 //---------------------------------------------------------------------------
3893 
3894 static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
3895  // Anchor: Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
3896  {
3897  -32767 /*fromYear*/,
3898  -32767 /*toYear*/,
3899  1 /*inMonth*/,
3900  0 /*onDayOfWeek*/,
3901  1 /*onDayOfMonth*/,
3902  0 /*atTimeCode*/,
3903  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3904  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3905  2 /*letterIndex ("S")*/,
3906  },
3907  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
3908  {
3909  1979 /*fromYear*/,
3910  1980 /*toYear*/,
3911  6 /*inMonth*/,
3912  1 /*onDayOfWeek*/,
3913  23 /*onDayOfMonth*/,
3914  0 /*atTimeCode*/,
3915  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3916  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3917  2 /*letterIndex ("S")*/,
3918  },
3919  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
3920  {
3921  2005 /*fromYear*/,
3922  2005 /*toYear*/,
3923  4 /*inMonth*/,
3924  0 /*onDayOfWeek*/,
3925  10 /*onDayOfMonth*/,
3926  0 /*atTimeCode*/,
3927  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3928  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3929  1 /*letterIndex ("D")*/,
3930  },
3931  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
3932  {
3933  2005 /*fromYear*/,
3934  2005 /*toYear*/,
3935  10 /*inMonth*/,
3936  7 /*onDayOfWeek*/,
3937  1 /*onDayOfMonth*/,
3938  0 /*atTimeCode*/,
3939  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3940  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3941  2 /*letterIndex ("S")*/,
3942  },
3943  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
3944  {
3945  2006 /*fromYear*/,
3946  2006 /*toYear*/,
3947  4 /*inMonth*/,
3948  0 /*onDayOfWeek*/,
3949  30 /*onDayOfMonth*/,
3950  8 /*atTimeCode*/,
3951  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3952  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3953  1 /*letterIndex ("D")*/,
3954  },
3955  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
3956  {
3957  2006 /*fromYear*/,
3958  2006 /*toYear*/,
3959  10 /*inMonth*/,
3960  7 /*onDayOfWeek*/,
3961  1 /*onDayOfMonth*/,
3962  4 /*atTimeCode*/,
3963  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3964  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3965  2 /*letterIndex ("S")*/,
3966  },
3967 
3968 };
3969 
3970 const basic::ZonePolicy kZonePolicyNic ACE_TIME_PROGMEM = {
3971  kZoneRulesNic /*rules*/,
3972  6 /*numRules*/,
3973 };
3974 
3975 //---------------------------------------------------------------------------
3976 // Policy name: PRC
3977 // Rules: 1
3978 //---------------------------------------------------------------------------
3979 
3980 static const basic::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
3981  // Anchor: Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
3982  {
3983  -32767 /*fromYear*/,
3984  -32767 /*toYear*/,
3985  1 /*inMonth*/,
3986  0 /*onDayOfWeek*/,
3987  1 /*onDayOfMonth*/,
3988  0 /*atTimeCode*/,
3989  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3990  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3991  2 /*letterIndex ("S")*/,
3992  },
3993 
3994 };
3995 
3996 const basic::ZonePolicy kZonePolicyPRC ACE_TIME_PROGMEM = {
3997  kZoneRulesPRC /*rules*/,
3998  1 /*numRules*/,
3999 };
4000 
4001 //---------------------------------------------------------------------------
4002 // Policy name: Pakistan
4003 // Rules: 6
4004 //---------------------------------------------------------------------------
4005 
4006 static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
4007  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4008  {
4009  -32767 /*fromYear*/,
4010  -32767 /*toYear*/,
4011  1 /*inMonth*/,
4012  0 /*onDayOfWeek*/,
4013  1 /*onDayOfMonth*/,
4014  0 /*atTimeCode*/,
4015  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4016  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4017  0 /*letterIndex ("")*/,
4018  },
4019  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
4020  {
4021  2002 /*fromYear*/,
4022  2002 /*toYear*/,
4023  4 /*inMonth*/,
4024  7 /*onDayOfWeek*/,
4025  2 /*onDayOfMonth*/,
4026  0 /*atTimeCode*/,
4027  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4028  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4029  2 /*letterIndex ("S")*/,
4030  },
4031  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4032  {
4033  2002 /*fromYear*/,
4034  2002 /*toYear*/,
4035  10 /*inMonth*/,
4036  7 /*onDayOfWeek*/,
4037  2 /*onDayOfMonth*/,
4038  0 /*atTimeCode*/,
4039  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4040  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4041  0 /*letterIndex ("")*/,
4042  },
4043  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
4044  {
4045  2008 /*fromYear*/,
4046  2008 /*toYear*/,
4047  6 /*inMonth*/,
4048  0 /*onDayOfWeek*/,
4049  1 /*onDayOfMonth*/,
4050  0 /*atTimeCode*/,
4051  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4052  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4053  2 /*letterIndex ("S")*/,
4054  },
4055  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
4056  {
4057  2008 /*fromYear*/,
4058  2009 /*toYear*/,
4059  11 /*inMonth*/,
4060  0 /*onDayOfWeek*/,
4061  1 /*onDayOfMonth*/,
4062  0 /*atTimeCode*/,
4063  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4064  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4065  0 /*letterIndex ("")*/,
4066  },
4067  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
4068  {
4069  2009 /*fromYear*/,
4070  2009 /*toYear*/,
4071  4 /*inMonth*/,
4072  0 /*onDayOfWeek*/,
4073  15 /*onDayOfMonth*/,
4074  0 /*atTimeCode*/,
4075  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4076  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4077  2 /*letterIndex ("S")*/,
4078  },
4079 
4080 };
4081 
4082 const basic::ZonePolicy kZonePolicyPakistan ACE_TIME_PROGMEM = {
4083  kZoneRulesPakistan /*rules*/,
4084  6 /*numRules*/,
4085 };
4086 
4087 //---------------------------------------------------------------------------
4088 // Policy name: Para
4089 // Rules: 11
4090 //---------------------------------------------------------------------------
4091 
4092 static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
4093  // Anchor: Rule Para 1997 only - Feb lastSun 0:00 0 -
4094  {
4095  -32767 /*fromYear*/,
4096  -32767 /*toYear*/,
4097  1 /*inMonth*/,
4098  0 /*onDayOfWeek*/,
4099  1 /*onDayOfMonth*/,
4100  0 /*atTimeCode*/,
4101  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4102  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4103  0 /*letterIndex ("")*/,
4104  },
4105  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
4106  {
4107  1996 /*fromYear*/,
4108  2001 /*toYear*/,
4109  10 /*inMonth*/,
4110  7 /*onDayOfWeek*/,
4111  1 /*onDayOfMonth*/,
4112  0 /*atTimeCode*/,
4113  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4114  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4115  0 /*letterIndex ("")*/,
4116  },
4117  // Rule Para 1997 only - Feb lastSun 0:00 0 -
4118  {
4119  1997 /*fromYear*/,
4120  1997 /*toYear*/,
4121  2 /*inMonth*/,
4122  7 /*onDayOfWeek*/,
4123  0 /*onDayOfMonth*/,
4124  0 /*atTimeCode*/,
4125  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4126  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4127  0 /*letterIndex ("")*/,
4128  },
4129  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
4130  {
4131  1998 /*fromYear*/,
4132  2001 /*toYear*/,
4133  3 /*inMonth*/,
4134  7 /*onDayOfWeek*/,
4135  1 /*onDayOfMonth*/,
4136  0 /*atTimeCode*/,
4137  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4138  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4139  0 /*letterIndex ("")*/,
4140  },
4141  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
4142  {
4143  2002 /*fromYear*/,
4144  2004 /*toYear*/,
4145  4 /*inMonth*/,
4146  7 /*onDayOfWeek*/,
4147  1 /*onDayOfMonth*/,
4148  0 /*atTimeCode*/,
4149  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4150  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4151  0 /*letterIndex ("")*/,
4152  },
4153  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
4154  {
4155  2002 /*fromYear*/,
4156  2003 /*toYear*/,
4157  9 /*inMonth*/,
4158  7 /*onDayOfWeek*/,
4159  1 /*onDayOfMonth*/,
4160  0 /*atTimeCode*/,
4161  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4162  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4163  0 /*letterIndex ("")*/,
4164  },
4165  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
4166  {
4167  2004 /*fromYear*/,
4168  2009 /*toYear*/,
4169  10 /*inMonth*/,
4170  7 /*onDayOfWeek*/,
4171  15 /*onDayOfMonth*/,
4172  0 /*atTimeCode*/,
4173  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4174  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4175  0 /*letterIndex ("")*/,
4176  },
4177  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
4178  {
4179  2005 /*fromYear*/,
4180  2009 /*toYear*/,
4181  3 /*inMonth*/,
4182  7 /*onDayOfWeek*/,
4183  8 /*onDayOfMonth*/,
4184  0 /*atTimeCode*/,
4185  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4186  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4187  0 /*letterIndex ("")*/,
4188  },
4189  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
4190  {
4191  2010 /*fromYear*/,
4192  32766 /*toYear*/,
4193  10 /*inMonth*/,
4194  7 /*onDayOfWeek*/,
4195  1 /*onDayOfMonth*/,
4196  0 /*atTimeCode*/,
4197  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4198  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4199  0 /*letterIndex ("")*/,
4200  },
4201  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
4202  {
4203  2010 /*fromYear*/,
4204  2012 /*toYear*/,
4205  4 /*inMonth*/,
4206  7 /*onDayOfWeek*/,
4207  8 /*onDayOfMonth*/,
4208  0 /*atTimeCode*/,
4209  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4210  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4211  0 /*letterIndex ("")*/,
4212  },
4213  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
4214  {
4215  2013 /*fromYear*/,
4216  32766 /*toYear*/,
4217  3 /*inMonth*/,
4218  7 /*onDayOfWeek*/,
4219  22 /*onDayOfMonth*/,
4220  0 /*atTimeCode*/,
4221  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4222  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4223  0 /*letterIndex ("")*/,
4224  },
4225 
4226 };
4227 
4228 const basic::ZonePolicy kZonePolicyPara ACE_TIME_PROGMEM = {
4229  kZoneRulesPara /*rules*/,
4230  11 /*numRules*/,
4231 };
4232 
4233 //---------------------------------------------------------------------------
4234 // Policy name: Peru
4235 // Rules: 1
4236 //---------------------------------------------------------------------------
4237 
4238 static const basic::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
4239  // Anchor: Rule Peru 1994 only - Apr 1 0:00 0 -
4240  {
4241  -32767 /*fromYear*/,
4242  -32767 /*toYear*/,
4243  1 /*inMonth*/,
4244  0 /*onDayOfWeek*/,
4245  1 /*onDayOfMonth*/,
4246  0 /*atTimeCode*/,
4247  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4248  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4249  0 /*letterIndex ("")*/,
4250  },
4251 
4252 };
4253 
4254 const basic::ZonePolicy kZonePolicyPeru ACE_TIME_PROGMEM = {
4255  kZoneRulesPeru /*rules*/,
4256  1 /*numRules*/,
4257 };
4258 
4259 //---------------------------------------------------------------------------
4260 // Policy name: Phil
4261 // Rules: 1
4262 //---------------------------------------------------------------------------
4263 
4264 static const basic::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
4265  // Anchor: Rule Phil 1978 only - Sep 21 0:00 0 S
4266  {
4267  -32767 /*fromYear*/,
4268  -32767 /*toYear*/,
4269  1 /*inMonth*/,
4270  0 /*onDayOfWeek*/,
4271  1 /*onDayOfMonth*/,
4272  0 /*atTimeCode*/,
4273  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4274  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4275  2 /*letterIndex ("S")*/,
4276  },
4277 
4278 };
4279 
4280 const basic::ZonePolicy kZonePolicyPhil ACE_TIME_PROGMEM = {
4281  kZoneRulesPhil /*rules*/,
4282  1 /*numRules*/,
4283 };
4284 
4285 //---------------------------------------------------------------------------
4286 // Policy name: ROK
4287 // Rules: 1
4288 //---------------------------------------------------------------------------
4289 
4290 static const basic::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
4291  // Anchor: Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
4292  {
4293  -32767 /*fromYear*/,
4294  -32767 /*toYear*/,
4295  1 /*inMonth*/,
4296  0 /*onDayOfWeek*/,
4297  1 /*onDayOfMonth*/,
4298  0 /*atTimeCode*/,
4299  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4300  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4301  2 /*letterIndex ("S")*/,
4302  },
4303 
4304 };
4305 
4306 const basic::ZonePolicy kZonePolicyROK ACE_TIME_PROGMEM = {
4307  kZoneRulesROK /*rules*/,
4308  1 /*numRules*/,
4309 };
4310 
4311 //---------------------------------------------------------------------------
4312 // Policy name: RussiaAsia
4313 // Rules: 4
4314 //---------------------------------------------------------------------------
4315 
4316 static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
4317  // Anchor: Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4318  {
4319  -32767 /*fromYear*/,
4320  -32767 /*toYear*/,
4321  1 /*inMonth*/,
4322  0 /*onDayOfWeek*/,
4323  1 /*onDayOfMonth*/,
4324  0 /*atTimeCode*/,
4325  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4326  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4327  0 /*letterIndex ("")*/,
4328  },
4329  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4330  {
4331  1984 /*fromYear*/,
4332  1995 /*toYear*/,
4333  9 /*inMonth*/,
4334  7 /*onDayOfWeek*/,
4335  0 /*onDayOfMonth*/,
4336  8 /*atTimeCode*/,
4337  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4338  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4339  0 /*letterIndex ("")*/,
4340  },
4341  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
4342  {
4343  1985 /*fromYear*/,
4344  2010 /*toYear*/,
4345  3 /*inMonth*/,
4346  7 /*onDayOfWeek*/,
4347  0 /*onDayOfMonth*/,
4348  8 /*atTimeCode*/,
4349  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4350  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4351  0 /*letterIndex ("")*/,
4352  },
4353  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
4354  {
4355  1996 /*fromYear*/,
4356  2010 /*toYear*/,
4357  10 /*inMonth*/,
4358  7 /*onDayOfWeek*/,
4359  0 /*onDayOfMonth*/,
4360  8 /*atTimeCode*/,
4361  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4362  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4363  0 /*letterIndex ("")*/,
4364  },
4365 
4366 };
4367 
4368 const basic::ZonePolicy kZonePolicyRussiaAsia ACE_TIME_PROGMEM = {
4369  kZoneRulesRussiaAsia /*rules*/,
4370  4 /*numRules*/,
4371 };
4372 
4373 //---------------------------------------------------------------------------
4374 // Policy name: SA
4375 // Rules: 1
4376 //---------------------------------------------------------------------------
4377 
4378 static const basic::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
4379  // Anchor: Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
4380  {
4381  -32767 /*fromYear*/,
4382  -32767 /*toYear*/,
4383  1 /*inMonth*/,
4384  0 /*onDayOfWeek*/,
4385  1 /*onDayOfMonth*/,
4386  0 /*atTimeCode*/,
4387  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4388  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4389  0 /*letterIndex ("")*/,
4390  },
4391 
4392 };
4393 
4394 const basic::ZonePolicy kZonePolicySA ACE_TIME_PROGMEM = {
4395  kZoneRulesSA /*rules*/,
4396  1 /*numRules*/,
4397 };
4398 
4399 //---------------------------------------------------------------------------
4400 // Policy name: Salv
4401 // Rules: 1
4402 //---------------------------------------------------------------------------
4403 
4404 static const basic::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
4405  // Anchor: Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
4406  {
4407  -32767 /*fromYear*/,
4408  -32767 /*toYear*/,
4409  1 /*inMonth*/,
4410  0 /*onDayOfWeek*/,
4411  1 /*onDayOfMonth*/,
4412  0 /*atTimeCode*/,
4413  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4414  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4415  2 /*letterIndex ("S")*/,
4416  },
4417 
4418 };
4419 
4420 const basic::ZonePolicy kZonePolicySalv ACE_TIME_PROGMEM = {
4421  kZoneRulesSalv /*rules*/,
4422  1 /*numRules*/,
4423 };
4424 
4425 //---------------------------------------------------------------------------
4426 // Policy name: Taiwan
4427 // Rules: 1
4428 //---------------------------------------------------------------------------
4429 
4430 static const basic::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
4431  // Anchor: Rule Taiwan 1979 only - Oct 1 0:00 0 S
4432  {
4433  -32767 /*fromYear*/,
4434  -32767 /*toYear*/,
4435  1 /*inMonth*/,
4436  0 /*onDayOfWeek*/,
4437  1 /*onDayOfMonth*/,
4438  0 /*atTimeCode*/,
4439  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4440  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4441  2 /*letterIndex ("S")*/,
4442  },
4443 
4444 };
4445 
4446 const basic::ZonePolicy kZonePolicyTaiwan ACE_TIME_PROGMEM = {
4447  kZoneRulesTaiwan /*rules*/,
4448  1 /*numRules*/,
4449 };
4450 
4451 //---------------------------------------------------------------------------
4452 // Policy name: Thule
4453 // Rules: 6
4454 //---------------------------------------------------------------------------
4455 
4456 static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
4457  // Anchor: Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4458  {
4459  -32767 /*fromYear*/,
4460  -32767 /*toYear*/,
4461  1 /*inMonth*/,
4462  0 /*onDayOfWeek*/,
4463  1 /*onDayOfMonth*/,
4464  0 /*atTimeCode*/,
4465  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4466  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4467  2 /*letterIndex ("S")*/,
4468  },
4469  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4470  {
4471  1991 /*fromYear*/,
4472  1992 /*toYear*/,
4473  9 /*inMonth*/,
4474  7 /*onDayOfWeek*/,
4475  0 /*onDayOfMonth*/,
4476  8 /*atTimeCode*/,
4477  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4478  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4479  2 /*letterIndex ("S")*/,
4480  },
4481  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
4482  {
4483  1993 /*fromYear*/,
4484  2006 /*toYear*/,
4485  4 /*inMonth*/,
4486  7 /*onDayOfWeek*/,
4487  1 /*onDayOfMonth*/,
4488  8 /*atTimeCode*/,
4489  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4490  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4491  1 /*letterIndex ("D")*/,
4492  },
4493  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
4494  {
4495  1993 /*fromYear*/,
4496  2006 /*toYear*/,
4497  10 /*inMonth*/,
4498  7 /*onDayOfWeek*/,
4499  0 /*onDayOfMonth*/,
4500  8 /*atTimeCode*/,
4501  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4502  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4503  2 /*letterIndex ("S")*/,
4504  },
4505  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
4506  {
4507  2007 /*fromYear*/,
4508  32766 /*toYear*/,
4509  3 /*inMonth*/,
4510  7 /*onDayOfWeek*/,
4511  8 /*onDayOfMonth*/,
4512  8 /*atTimeCode*/,
4513  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4514  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4515  1 /*letterIndex ("D")*/,
4516  },
4517  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
4518  {
4519  2007 /*fromYear*/,
4520  32766 /*toYear*/,
4521  11 /*inMonth*/,
4522  7 /*onDayOfWeek*/,
4523  1 /*onDayOfMonth*/,
4524  8 /*atTimeCode*/,
4525  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4526  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4527  2 /*letterIndex ("S")*/,
4528  },
4529 
4530 };
4531 
4532 const basic::ZonePolicy kZonePolicyThule ACE_TIME_PROGMEM = {
4533  kZoneRulesThule /*rules*/,
4534  6 /*numRules*/,
4535 };
4536 
4537 //---------------------------------------------------------------------------
4538 // Policy name: Tonga
4539 // Rules: 7
4540 //---------------------------------------------------------------------------
4541 
4542 static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
4543  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
4544  {
4545  -32767 /*fromYear*/,
4546  -32767 /*toYear*/,
4547  1 /*inMonth*/,
4548  0 /*onDayOfWeek*/,
4549  1 /*onDayOfMonth*/,
4550  0 /*atTimeCode*/,
4551  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4552  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4553  0 /*letterIndex ("")*/,
4554  },
4555  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
4556  {
4557  1999 /*fromYear*/,
4558  1999 /*toYear*/,
4559  10 /*inMonth*/,
4560  0 /*onDayOfWeek*/,
4561  7 /*onDayOfMonth*/,
4562  8 /*atTimeCode*/,
4563  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4564  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4565  0 /*letterIndex ("")*/,
4566  },
4567  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
4568  {
4569  2000 /*fromYear*/,
4570  2000 /*toYear*/,
4571  3 /*inMonth*/,
4572  0 /*onDayOfWeek*/,
4573  19 /*onDayOfMonth*/,
4574  8 /*atTimeCode*/,
4575  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4576  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4577  0 /*letterIndex ("")*/,
4578  },
4579  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
4580  {
4581  2000 /*fromYear*/,
4582  2001 /*toYear*/,
4583  11 /*inMonth*/,
4584  7 /*onDayOfWeek*/,
4585  1 /*onDayOfMonth*/,
4586  8 /*atTimeCode*/,
4587  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4588  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4589  0 /*letterIndex ("")*/,
4590  },
4591  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
4592  {
4593  2001 /*fromYear*/,
4594  2002 /*toYear*/,
4595  1 /*inMonth*/,
4596  7 /*onDayOfWeek*/,
4597  0 /*onDayOfMonth*/,
4598  8 /*atTimeCode*/,
4599  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4600  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4601  0 /*letterIndex ("")*/,
4602  },
4603  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
4604  {
4605  2016 /*fromYear*/,
4606  2016 /*toYear*/,
4607  11 /*inMonth*/,
4608  7 /*onDayOfWeek*/,
4609  1 /*onDayOfMonth*/,
4610  8 /*atTimeCode*/,
4611  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4612  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4613  0 /*letterIndex ("")*/,
4614  },
4615  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
4616  {
4617  2017 /*fromYear*/,
4618  2017 /*toYear*/,
4619  1 /*inMonth*/,
4620  7 /*onDayOfWeek*/,
4621  15 /*onDayOfMonth*/,
4622  12 /*atTimeCode*/,
4623  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4624  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4625  0 /*letterIndex ("")*/,
4626  },
4627 
4628 };
4629 
4630 const basic::ZonePolicy kZonePolicyTonga ACE_TIME_PROGMEM = {
4631  kZoneRulesTonga /*rules*/,
4632  7 /*numRules*/,
4633 };
4634 
4635 //---------------------------------------------------------------------------
4636 // Policy name: Tunisia
4637 // Rules: 6
4638 //---------------------------------------------------------------------------
4639 
4640 static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
4641  // Anchor: Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
4642  {
4643  -32767 /*fromYear*/,
4644  -32767 /*toYear*/,
4645  1 /*inMonth*/,
4646  0 /*onDayOfWeek*/,
4647  1 /*onDayOfMonth*/,
4648  0 /*atTimeCode*/,
4649  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4650  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4651  0 /*letterIndex ("")*/,
4652  },
4653  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
4654  {
4655  1988 /*fromYear*/,
4656  1990 /*toYear*/,
4657  9 /*inMonth*/,
4658  7 /*onDayOfWeek*/,
4659  0 /*onDayOfMonth*/,
4660  0 /*atTimeCode*/,
4661  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4662  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4663  0 /*letterIndex ("")*/,
4664  },
4665  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
4666  {
4667  2005 /*fromYear*/,
4668  2005 /*toYear*/,
4669  5 /*inMonth*/,
4670  0 /*onDayOfWeek*/,
4671  1 /*onDayOfMonth*/,
4672  0 /*atTimeCode*/,
4673  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4674  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4675  2 /*letterIndex ("S")*/,
4676  },
4677  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
4678  {
4679  2005 /*fromYear*/,
4680  2005 /*toYear*/,
4681  9 /*inMonth*/,
4682  0 /*onDayOfWeek*/,
4683  30 /*onDayOfMonth*/,
4684  4 /*atTimeCode*/,
4685  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4686  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4687  0 /*letterIndex ("")*/,
4688  },
4689  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
4690  {
4691  2006 /*fromYear*/,
4692  2008 /*toYear*/,
4693  3 /*inMonth*/,
4694  7 /*onDayOfWeek*/,
4695  0 /*onDayOfMonth*/,
4696  8 /*atTimeCode*/,
4697  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4698  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4699  2 /*letterIndex ("S")*/,
4700  },
4701  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
4702  {
4703  2006 /*fromYear*/,
4704  2008 /*toYear*/,
4705  10 /*inMonth*/,
4706  7 /*onDayOfWeek*/,
4707  0 /*onDayOfMonth*/,
4708  8 /*atTimeCode*/,
4709  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4710  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4711  0 /*letterIndex ("")*/,
4712  },
4713 
4714 };
4715 
4716 const basic::ZonePolicy kZonePolicyTunisia ACE_TIME_PROGMEM = {
4717  kZoneRulesTunisia /*rules*/,
4718  6 /*numRules*/,
4719 };
4720 
4721 //---------------------------------------------------------------------------
4722 // Policy name: US
4723 // Rules: 6
4724 //---------------------------------------------------------------------------
4725 
4726 static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
4727  // Anchor: Rule US 1967 2006 - Oct lastSun 2:00 0 S
4728  {
4729  -32767 /*fromYear*/,
4730  -32767 /*toYear*/,
4731  1 /*inMonth*/,
4732  0 /*onDayOfWeek*/,
4733  1 /*onDayOfMonth*/,
4734  0 /*atTimeCode*/,
4735  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4736  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4737  2 /*letterIndex ("S")*/,
4738  },
4739  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
4740  {
4741  1967 /*fromYear*/,
4742  2006 /*toYear*/,
4743  10 /*inMonth*/,
4744  7 /*onDayOfWeek*/,
4745  0 /*onDayOfMonth*/,
4746  8 /*atTimeCode*/,
4747  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4748  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4749  2 /*letterIndex ("S")*/,
4750  },
4751  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
4752  {
4753  1976 /*fromYear*/,
4754  1986 /*toYear*/,
4755  4 /*inMonth*/,
4756  7 /*onDayOfWeek*/,
4757  0 /*onDayOfMonth*/,
4758  8 /*atTimeCode*/,
4759  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4760  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4761  1 /*letterIndex ("D")*/,
4762  },
4763  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
4764  {
4765  1987 /*fromYear*/,
4766  2006 /*toYear*/,
4767  4 /*inMonth*/,
4768  7 /*onDayOfWeek*/,
4769  1 /*onDayOfMonth*/,
4770  8 /*atTimeCode*/,
4771  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4772  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4773  1 /*letterIndex ("D")*/,
4774  },
4775  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
4776  {
4777  2007 /*fromYear*/,
4778  32766 /*toYear*/,
4779  3 /*inMonth*/,
4780  7 /*onDayOfWeek*/,
4781  8 /*onDayOfMonth*/,
4782  8 /*atTimeCode*/,
4783  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4784  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4785  1 /*letterIndex ("D")*/,
4786  },
4787  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
4788  {
4789  2007 /*fromYear*/,
4790  32766 /*toYear*/,
4791  11 /*inMonth*/,
4792  7 /*onDayOfWeek*/,
4793  1 /*onDayOfMonth*/,
4794  8 /*atTimeCode*/,
4795  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4796  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4797  2 /*letterIndex ("S")*/,
4798  },
4799 
4800 };
4801 
4802 const basic::ZonePolicy kZonePolicyUS ACE_TIME_PROGMEM = {
4803  kZoneRulesUS /*rules*/,
4804  6 /*numRules*/,
4805 };
4806 
4807 //---------------------------------------------------------------------------
4808 // Policy name: Uruguay
4809 // Rules: 7
4810 //---------------------------------------------------------------------------
4811 
4812 static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
4813  // Anchor: Rule Uruguay 1993 only - Feb 28 0:00 0 -
4814  {
4815  -32767 /*fromYear*/,
4816  -32767 /*toYear*/,
4817  1 /*inMonth*/,
4818  0 /*onDayOfWeek*/,
4819  1 /*onDayOfMonth*/,
4820  0 /*atTimeCode*/,
4821  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4822  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4823  0 /*letterIndex ("")*/,
4824  },
4825  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
4826  {
4827  1993 /*fromYear*/,
4828  1993 /*toYear*/,
4829  2 /*inMonth*/,
4830  0 /*onDayOfWeek*/,
4831  28 /*onDayOfMonth*/,
4832  0 /*atTimeCode*/,
4833  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4834  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4835  0 /*letterIndex ("")*/,
4836  },
4837  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
4838  {
4839  2004 /*fromYear*/,
4840  2004 /*toYear*/,
4841  9 /*inMonth*/,
4842  0 /*onDayOfWeek*/,
4843  19 /*onDayOfMonth*/,
4844  0 /*atTimeCode*/,
4845  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4846  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4847  0 /*letterIndex ("")*/,
4848  },
4849  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
4850  {
4851  2005 /*fromYear*/,
4852  2005 /*toYear*/,
4853  3 /*inMonth*/,
4854  0 /*onDayOfWeek*/,
4855  27 /*onDayOfMonth*/,
4856  8 /*atTimeCode*/,
4857  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4858  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4859  0 /*letterIndex ("")*/,
4860  },
4861  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
4862  {
4863  2005 /*fromYear*/,
4864  2005 /*toYear*/,
4865  10 /*inMonth*/,
4866  0 /*onDayOfWeek*/,
4867  9 /*onDayOfMonth*/,
4868  8 /*atTimeCode*/,
4869  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4870  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4871  0 /*letterIndex ("")*/,
4872  },
4873  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
4874  {
4875  2006 /*fromYear*/,
4876  2015 /*toYear*/,
4877  3 /*inMonth*/,
4878  7 /*onDayOfWeek*/,
4879  8 /*onDayOfMonth*/,
4880  8 /*atTimeCode*/,
4881  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4882  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4883  0 /*letterIndex ("")*/,
4884  },
4885  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
4886  {
4887  2006 /*fromYear*/,
4888  2014 /*toYear*/,
4889  10 /*inMonth*/,
4890  7 /*onDayOfWeek*/,
4891  1 /*onDayOfMonth*/,
4892  8 /*atTimeCode*/,
4893  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4894  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4895  0 /*letterIndex ("")*/,
4896  },
4897 
4898 };
4899 
4900 const basic::ZonePolicy kZonePolicyUruguay ACE_TIME_PROGMEM = {
4901  kZoneRulesUruguay /*rules*/,
4902  7 /*numRules*/,
4903 };
4904 
4905 //---------------------------------------------------------------------------
4906 // Policy name: Vanuatu
4907 // Rules: 1
4908 //---------------------------------------------------------------------------
4909 
4910 static const basic::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
4911  // Anchor: Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
4912  {
4913  -32767 /*fromYear*/,
4914  -32767 /*toYear*/,
4915  1 /*inMonth*/,
4916  0 /*onDayOfWeek*/,
4917  1 /*onDayOfMonth*/,
4918  0 /*atTimeCode*/,
4919  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4920  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4921  0 /*letterIndex ("")*/,
4922  },
4923 
4924 };
4925 
4926 const basic::ZonePolicy kZonePolicyVanuatu ACE_TIME_PROGMEM = {
4927  kZoneRulesVanuatu /*rules*/,
4928  1 /*numRules*/,
4929 };
4930 
4931 //---------------------------------------------------------------------------
4932 // Policy name: Winn
4933 // Rules: 4
4934 //---------------------------------------------------------------------------
4935 
4936 static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
4937  // Anchor: Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
4938  {
4939  -32767 /*fromYear*/,
4940  -32767 /*toYear*/,
4941  1 /*inMonth*/,
4942  0 /*onDayOfWeek*/,
4943  1 /*onDayOfMonth*/,
4944  0 /*atTimeCode*/,
4945  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4946  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4947  2 /*letterIndex ("S")*/,
4948  },
4949  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
4950  {
4951  1966 /*fromYear*/,
4952  1986 /*toYear*/,
4953  4 /*inMonth*/,
4954  7 /*onDayOfWeek*/,
4955  0 /*onDayOfMonth*/,
4956  8 /*atTimeCode*/,
4957  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4958  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4959  1 /*letterIndex ("D")*/,
4960  },
4961  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
4962  {
4963  1966 /*fromYear*/,
4964  2005 /*toYear*/,
4965  10 /*inMonth*/,
4966  7 /*onDayOfWeek*/,
4967  0 /*onDayOfMonth*/,
4968  8 /*atTimeCode*/,
4969  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4970  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4971  2 /*letterIndex ("S")*/,
4972  },
4973  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
4974  {
4975  1987 /*fromYear*/,
4976  2005 /*toYear*/,
4977  4 /*inMonth*/,
4978  7 /*onDayOfWeek*/,
4979  1 /*onDayOfMonth*/,
4980  8 /*atTimeCode*/,
4981  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4982  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4983  1 /*letterIndex ("D")*/,
4984  },
4985 
4986 };
4987 
4988 const basic::ZonePolicy kZonePolicyWinn ACE_TIME_PROGMEM = {
4989  kZoneRulesWinn /*rules*/,
4990  4 /*numRules*/,
4991 };
4992 
4993 //---------------------------------------------------------------------------
4994 // Policy name: Zion
4995 // Rules: 25
4996 //---------------------------------------------------------------------------
4997 
4998 static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
4999  // Anchor: Rule Zion 1998 only - Sep 6 0:00 0 S
5000  {
5001  -32767 /*fromYear*/,
5002  -32767 /*toYear*/,
5003  1 /*inMonth*/,
5004  0 /*onDayOfWeek*/,
5005  1 /*onDayOfMonth*/,
5006  0 /*atTimeCode*/,
5007  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5008  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5009  2 /*letterIndex ("S")*/,
5010  },
5011  // Rule Zion 1998 only - Sep 6 0:00 0 S
5012  {
5013  1998 /*fromYear*/,
5014  1998 /*toYear*/,
5015  9 /*inMonth*/,
5016  0 /*onDayOfWeek*/,
5017  6 /*onDayOfMonth*/,
5018  0 /*atTimeCode*/,
5019  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5020  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5021  2 /*letterIndex ("S")*/,
5022  },
5023  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
5024  {
5025  1999 /*fromYear*/,
5026  1999 /*toYear*/,
5027  4 /*inMonth*/,
5028  0 /*onDayOfWeek*/,
5029  2 /*onDayOfMonth*/,
5030  8 /*atTimeCode*/,
5031  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5032  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5033  1 /*letterIndex ("D")*/,
5034  },
5035  // Rule Zion 1999 only - Sep 3 2:00 0 S
5036  {
5037  1999 /*fromYear*/,
5038  1999 /*toYear*/,
5039  9 /*inMonth*/,
5040  0 /*onDayOfWeek*/,
5041  3 /*onDayOfMonth*/,
5042  8 /*atTimeCode*/,
5043  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5044  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5045  2 /*letterIndex ("S")*/,
5046  },
5047  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
5048  {
5049  2000 /*fromYear*/,
5050  2000 /*toYear*/,
5051  4 /*inMonth*/,
5052  0 /*onDayOfWeek*/,
5053  14 /*onDayOfMonth*/,
5054  8 /*atTimeCode*/,
5055  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5056  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5057  1 /*letterIndex ("D")*/,
5058  },
5059  // Rule Zion 2000 only - Oct 6 1:00 0 S
5060  {
5061  2000 /*fromYear*/,
5062  2000 /*toYear*/,
5063  10 /*inMonth*/,
5064  0 /*onDayOfWeek*/,
5065  6 /*onDayOfMonth*/,
5066  4 /*atTimeCode*/,
5067  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5068  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5069  2 /*letterIndex ("S")*/,
5070  },
5071  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
5072  {
5073  2001 /*fromYear*/,
5074  2001 /*toYear*/,
5075  4 /*inMonth*/,
5076  0 /*onDayOfWeek*/,
5077  9 /*onDayOfMonth*/,
5078  4 /*atTimeCode*/,
5079  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5080  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5081  1 /*letterIndex ("D")*/,
5082  },
5083  // Rule Zion 2001 only - Sep 24 1:00 0 S
5084  {
5085  2001 /*fromYear*/,
5086  2001 /*toYear*/,
5087  9 /*inMonth*/,
5088  0 /*onDayOfWeek*/,
5089  24 /*onDayOfMonth*/,
5090  4 /*atTimeCode*/,
5091  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5092  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5093  2 /*letterIndex ("S")*/,
5094  },
5095  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
5096  {
5097  2002 /*fromYear*/,
5098  2002 /*toYear*/,
5099  3 /*inMonth*/,
5100  0 /*onDayOfWeek*/,
5101  29 /*onDayOfMonth*/,
5102  4 /*atTimeCode*/,
5103  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5104  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5105  1 /*letterIndex ("D")*/,
5106  },
5107  // Rule Zion 2002 only - Oct 7 1:00 0 S
5108  {
5109  2002 /*fromYear*/,
5110  2002 /*toYear*/,
5111  10 /*inMonth*/,
5112  0 /*onDayOfWeek*/,
5113  7 /*onDayOfMonth*/,
5114  4 /*atTimeCode*/,
5115  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5116  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5117  2 /*letterIndex ("S")*/,
5118  },
5119  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
5120  {
5121  2003 /*fromYear*/,
5122  2003 /*toYear*/,
5123  3 /*inMonth*/,
5124  0 /*onDayOfWeek*/,
5125  28 /*onDayOfMonth*/,
5126  4 /*atTimeCode*/,
5127  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5128  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5129  1 /*letterIndex ("D")*/,
5130  },
5131  // Rule Zion 2003 only - Oct 3 1:00 0 S
5132  {
5133  2003 /*fromYear*/,
5134  2003 /*toYear*/,
5135  10 /*inMonth*/,
5136  0 /*onDayOfWeek*/,
5137  3 /*onDayOfMonth*/,
5138  4 /*atTimeCode*/,
5139  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5140  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5141  2 /*letterIndex ("S")*/,
5142  },
5143  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
5144  {
5145  2004 /*fromYear*/,
5146  2004 /*toYear*/,
5147  4 /*inMonth*/,
5148  0 /*onDayOfWeek*/,
5149  7 /*onDayOfMonth*/,
5150  4 /*atTimeCode*/,
5151  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5152  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5153  1 /*letterIndex ("D")*/,
5154  },
5155  // Rule Zion 2004 only - Sep 22 1:00 0 S
5156  {
5157  2004 /*fromYear*/,
5158  2004 /*toYear*/,
5159  9 /*inMonth*/,
5160  0 /*onDayOfWeek*/,
5161  22 /*onDayOfMonth*/,
5162  4 /*atTimeCode*/,
5163  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5164  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5165  2 /*letterIndex ("S")*/,
5166  },
5167  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
5168  {
5169  2005 /*fromYear*/,
5170  2012 /*toYear*/,
5171  4 /*inMonth*/,
5172  5 /*onDayOfWeek*/,
5173  -1 /*onDayOfMonth*/,
5174  8 /*atTimeCode*/,
5175  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5176  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5177  1 /*letterIndex ("D")*/,
5178  },
5179  // Rule Zion 2005 only - Oct 9 2:00 0 S
5180  {
5181  2005 /*fromYear*/,
5182  2005 /*toYear*/,
5183  10 /*inMonth*/,
5184  0 /*onDayOfWeek*/,
5185  9 /*onDayOfMonth*/,
5186  8 /*atTimeCode*/,
5187  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5188  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5189  2 /*letterIndex ("S")*/,
5190  },
5191  // Rule Zion 2006 only - Oct 1 2:00 0 S
5192  {
5193  2006 /*fromYear*/,
5194  2006 /*toYear*/,
5195  10 /*inMonth*/,
5196  0 /*onDayOfWeek*/,
5197  1 /*onDayOfMonth*/,
5198  8 /*atTimeCode*/,
5199  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5200  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5201  2 /*letterIndex ("S")*/,
5202  },
5203  // Rule Zion 2007 only - Sep 16 2:00 0 S
5204  {
5205  2007 /*fromYear*/,
5206  2007 /*toYear*/,
5207  9 /*inMonth*/,
5208  0 /*onDayOfWeek*/,
5209  16 /*onDayOfMonth*/,
5210  8 /*atTimeCode*/,
5211  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5212  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5213  2 /*letterIndex ("S")*/,
5214  },
5215  // Rule Zion 2008 only - Oct 5 2:00 0 S
5216  {
5217  2008 /*fromYear*/,
5218  2008 /*toYear*/,
5219  10 /*inMonth*/,
5220  0 /*onDayOfWeek*/,
5221  5 /*onDayOfMonth*/,
5222  8 /*atTimeCode*/,
5223  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5224  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5225  2 /*letterIndex ("S")*/,
5226  },
5227  // Rule Zion 2009 only - Sep 27 2:00 0 S
5228  {
5229  2009 /*fromYear*/,
5230  2009 /*toYear*/,
5231  9 /*inMonth*/,
5232  0 /*onDayOfWeek*/,
5233  27 /*onDayOfMonth*/,
5234  8 /*atTimeCode*/,
5235  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5236  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5237  2 /*letterIndex ("S")*/,
5238  },
5239  // Rule Zion 2010 only - Sep 12 2:00 0 S
5240  {
5241  2010 /*fromYear*/,
5242  2010 /*toYear*/,
5243  9 /*inMonth*/,
5244  0 /*onDayOfWeek*/,
5245  12 /*onDayOfMonth*/,
5246  8 /*atTimeCode*/,
5247  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5248  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5249  2 /*letterIndex ("S")*/,
5250  },
5251  // Rule Zion 2011 only - Oct 2 2:00 0 S
5252  {
5253  2011 /*fromYear*/,
5254  2011 /*toYear*/,
5255  10 /*inMonth*/,
5256  0 /*onDayOfWeek*/,
5257  2 /*onDayOfMonth*/,
5258  8 /*atTimeCode*/,
5259  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5260  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5261  2 /*letterIndex ("S")*/,
5262  },
5263  // Rule Zion 2012 only - Sep 23 2:00 0 S
5264  {
5265  2012 /*fromYear*/,
5266  2012 /*toYear*/,
5267  9 /*inMonth*/,
5268  0 /*onDayOfWeek*/,
5269  23 /*onDayOfMonth*/,
5270  8 /*atTimeCode*/,
5271  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5272  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5273  2 /*letterIndex ("S")*/,
5274  },
5275  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
5276  {
5277  2013 /*fromYear*/,
5278  32766 /*toYear*/,
5279  3 /*inMonth*/,
5280  5 /*onDayOfWeek*/,
5281  23 /*onDayOfMonth*/,
5282  8 /*atTimeCode*/,
5283  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5284  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5285  1 /*letterIndex ("D")*/,
5286  },
5287  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
5288  {
5289  2013 /*fromYear*/,
5290  32766 /*toYear*/,
5291  10 /*inMonth*/,
5292  7 /*onDayOfWeek*/,
5293  0 /*onDayOfMonth*/,
5294  8 /*atTimeCode*/,
5295  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5296  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5297  2 /*letterIndex ("S")*/,
5298  },
5299 
5300 };
5301 
5302 const basic::ZonePolicy kZonePolicyZion ACE_TIME_PROGMEM = {
5303  kZoneRulesZion /*rules*/,
5304  25 /*numRules*/,
5305 };
5306 
5307 
5308 
5309 }
5310 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...