AceTime  3.0.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/AceTimeSuite/compiler/src/acetimecompiler/tzcompiler.py
4 // --input_dir /home/brian/src/AceTimeSuite/libraries/AceTimeLib/src/testingzonedbx/tzfiles
5 // --output_dir /home/brian/src/AceTimeSuite/libraries/AceTimeLib/src/testingzonedbx
6 // --tz_version 2025b
7 // --action zonedb
8 // --language arduino
9 // --scope extended
10 // --db_namespace testingzonedbx
11 // --zi_namespace extended::Info
12 // --include_list include_list.txt
13 // --nocompress
14 // --start_year 1980
15 // --until_year 2200
16 //
17 // using the TZ Database files
18 //
19 // africa
20 // antarctica
21 // asia
22 // australasia
23 // backward
24 // etcetera
25 // europe
26 // northamerica
27 // southamerica
28 //
29 // from https://github.com/eggert/tz/releases/tag/2025b
30 //
31 // Supported Zones: 16 (15 zones, 1 links)
32 // Unsupported Zones: 581 (325 zones, 256 links)
33 //
34 // Requested Years: [1980,2200]
35 // Accurate Years: [1980,32767]
36 //
37 // Original Years: [1844,2087]
38 // Generated Years: [1945,2087]
39 // Lower/Upper Truncated: [True,False]
40 //
41 // Estimator Years: [1945,2090]
42 // Max Buffer Size: 7
43 //
44 // Records:
45 // Infos: 16
46 // Eras: 30
47 // Policies: 11
48 // Rules: 220
49 //
50 // Memory (8-bits):
51 // Context: 16
52 // Rules: 1980
53 // Policies: 33
54 // Eras: 330
55 // Zones: 195
56 // Links: 13
57 // Registry: 32
58 // Formats: 47
59 // Letters: 23
60 // Fragments: 0
61 // Names: 260 (original: 260)
62 // TOTAL: 2929
63 //
64 // Memory (32-bits):
65 // Context: 24
66 // Rules: 2640
67 // Policies: 88
68 // Eras: 480
69 // Zones: 360
70 // Links: 24
71 // Registry: 64
72 // Formats: 47
73 // Letters: 33
74 // Fragments: 0
75 // Names: 260 (original: 260)
76 // TOTAL: 4020
77 //
78 // DO NOT EDIT
79 
80 #include <zoneinfo/compat.h>
81 #include "zone_policies.h"
82 
83 namespace ace_time {
84 namespace testingzonedbx {
85 
86 //---------------------------------------------------------------------------
87 // Policies: 11
88 // Rules: 220
89 //---------------------------------------------------------------------------
90 
91 //---------------------------------------------------------------------------
92 // Policy name: Aus
93 // Rules: 1
94 //---------------------------------------------------------------------------
95 
96 static const extended::Info::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
97  // Anchor: Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
98  {
99  -127 /*fromYearTiny (-32767)*/,
100  -127 /*toYearTiny (-32767)*/,
101  1 /*inMonth*/,
102  0 /*onDayOfWeek*/,
103  1 /*onDayOfMonth*/,
104  0 /*atTimeCode*/,
105  0 /*atTimeModifier (kSuffixW + minute=0)*/,
106  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
107  3 /*letterIndex ("S")*/,
108  },
109 
110 };
111 
112 const extended::Info::ZonePolicy kZonePolicyAus ACE_TIME_PROGMEM = {
113  kZoneRulesAus /*rules*/,
114  1 /*numRules*/,
115 };
116 
117 //---------------------------------------------------------------------------
118 // Policy name: Canada
119 // Rules: 7
120 //---------------------------------------------------------------------------
121 
122 static const extended::Info::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
123  // Anchor: Rule Canada 1945 only - Sep 30 2:00 0 S
124  {
125  -127 /*fromYearTiny (-32767)*/,
126  -127 /*toYearTiny (-32767)*/,
127  1 /*inMonth*/,
128  0 /*onDayOfWeek*/,
129  1 /*onDayOfMonth*/,
130  0 /*atTimeCode*/,
131  0 /*atTimeModifier (kSuffixW + minute=0)*/,
132  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
133  3 /*letterIndex ("S")*/,
134  },
135  // Rule Canada 1945 only - Sep 30 2:00 0 S
136  {
137  -127 /*fromYearTiny (1945)*/,
138  -127 /*toYearTiny (1945)*/,
139  9 /*inMonth*/,
140  0 /*onDayOfWeek*/,
141  30 /*onDayOfMonth*/,
142  8 /*atTimeCode*/,
143  0 /*atTimeModifier (kSuffixW + minute=0)*/,
144  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
145  3 /*letterIndex ("S")*/,
146  },
147  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
148  {
149  -126 /*fromYearTiny (1974)*/,
150  -114 /*toYearTiny (1986)*/,
151  4 /*inMonth*/,
152  7 /*onDayOfWeek*/,
153  0 /*onDayOfMonth*/,
154  8 /*atTimeCode*/,
155  0 /*atTimeModifier (kSuffixW + minute=0)*/,
156  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
157  2 /*letterIndex ("D")*/,
158  },
159  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
160  {
161  -126 /*fromYearTiny (1974)*/,
162  -94 /*toYearTiny (2006)*/,
163  10 /*inMonth*/,
164  7 /*onDayOfWeek*/,
165  0 /*onDayOfMonth*/,
166  8 /*atTimeCode*/,
167  0 /*atTimeModifier (kSuffixW + minute=0)*/,
168  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
169  3 /*letterIndex ("S")*/,
170  },
171  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
172  {
173  -113 /*fromYearTiny (1987)*/,
174  -94 /*toYearTiny (2006)*/,
175  4 /*inMonth*/,
176  7 /*onDayOfWeek*/,
177  1 /*onDayOfMonth*/,
178  8 /*atTimeCode*/,
179  0 /*atTimeModifier (kSuffixW + minute=0)*/,
180  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
181  2 /*letterIndex ("D")*/,
182  },
183  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
184  {
185  -93 /*fromYearTiny (2007)*/,
186  126 /*toYearTiny (32766)*/,
187  3 /*inMonth*/,
188  7 /*onDayOfWeek*/,
189  8 /*onDayOfMonth*/,
190  8 /*atTimeCode*/,
191  0 /*atTimeModifier (kSuffixW + minute=0)*/,
192  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
193  2 /*letterIndex ("D")*/,
194  },
195  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
196  {
197  -93 /*fromYearTiny (2007)*/,
198  126 /*toYearTiny (32766)*/,
199  11 /*inMonth*/,
200  7 /*onDayOfWeek*/,
201  1 /*onDayOfMonth*/,
202  8 /*atTimeCode*/,
203  0 /*atTimeModifier (kSuffixW + minute=0)*/,
204  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
205  3 /*letterIndex ("S")*/,
206  },
207 
208 };
209 
210 const extended::Info::ZonePolicy kZonePolicyCanada ACE_TIME_PROGMEM = {
211  kZoneRulesCanada /*rules*/,
212  7 /*numRules*/,
213 };
214 
215 //---------------------------------------------------------------------------
216 // Policy name: EU
217 // Rules: 6
218 //---------------------------------------------------------------------------
219 
220 static const extended::Info::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
221  // Anchor: Rule EU 1978 only - Oct 1 1:00u 0 -
222  {
223  -127 /*fromYearTiny (-32767)*/,
224  -127 /*toYearTiny (-32767)*/,
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  0 /*letterIndex ("")*/,
232  },
233  // Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
234  {
235  -123 /*fromYearTiny (1977)*/,
236  -120 /*toYearTiny (1980)*/,
237  4 /*inMonth*/,
238  7 /*onDayOfWeek*/,
239  1 /*onDayOfMonth*/,
240  4 /*atTimeCode*/,
241  32 /*atTimeModifier (kSuffixU + minute=0)*/,
242  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
243  3 /*letterIndex ("S")*/,
244  },
245  // Rule EU 1978 only - Oct 1 1:00u 0 -
246  {
247  -122 /*fromYearTiny (1978)*/,
248  -122 /*toYearTiny (1978)*/,
249  10 /*inMonth*/,
250  0 /*onDayOfWeek*/,
251  1 /*onDayOfMonth*/,
252  4 /*atTimeCode*/,
253  32 /*atTimeModifier (kSuffixU + minute=0)*/,
254  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
255  0 /*letterIndex ("")*/,
256  },
257  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
258  {
259  -121 /*fromYearTiny (1979)*/,
260  -105 /*toYearTiny (1995)*/,
261  9 /*inMonth*/,
262  7 /*onDayOfWeek*/,
263  0 /*onDayOfMonth*/,
264  4 /*atTimeCode*/,
265  32 /*atTimeModifier (kSuffixU + minute=0)*/,
266  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
267  0 /*letterIndex ("")*/,
268  },
269  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
270  {
271  -119 /*fromYearTiny (1981)*/,
272  126 /*toYearTiny (32766)*/,
273  3 /*inMonth*/,
274  7 /*onDayOfWeek*/,
275  0 /*onDayOfMonth*/,
276  4 /*atTimeCode*/,
277  32 /*atTimeModifier (kSuffixU + minute=0)*/,
278  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
279  3 /*letterIndex ("S")*/,
280  },
281  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
282  {
283  -104 /*fromYearTiny (1996)*/,
284  126 /*toYearTiny (32766)*/,
285  10 /*inMonth*/,
286  7 /*onDayOfWeek*/,
287  0 /*onDayOfMonth*/,
288  4 /*atTimeCode*/,
289  32 /*atTimeModifier (kSuffixU + minute=0)*/,
290  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
291  0 /*letterIndex ("")*/,
292  },
293 
294 };
295 
296 const extended::Info::ZonePolicy kZonePolicyEU ACE_TIME_PROGMEM = {
297  kZoneRulesEU /*rules*/,
298  6 /*numRules*/,
299 };
300 
301 //---------------------------------------------------------------------------
302 // Policy name: Edm
303 // Rules: 4
304 //---------------------------------------------------------------------------
305 
306 static const extended::Info::ZoneRule kZoneRulesEdm[] ACE_TIME_PROGMEM = {
307  // Anchor: Rule Edm 1947 only - Sep lastSun 2:00 0 S
308  {
309  -127 /*fromYearTiny (-32767)*/,
310  -127 /*toYearTiny (-32767)*/,
311  1 /*inMonth*/,
312  0 /*onDayOfWeek*/,
313  1 /*onDayOfMonth*/,
314  0 /*atTimeCode*/,
315  0 /*atTimeModifier (kSuffixW + minute=0)*/,
316  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
317  3 /*letterIndex ("S")*/,
318  },
319  // Rule Edm 1947 only - Sep lastSun 2:00 0 S
320  {
321  -127 /*fromYearTiny (1947)*/,
322  -127 /*toYearTiny (1947)*/,
323  9 /*inMonth*/,
324  7 /*onDayOfWeek*/,
325  0 /*onDayOfMonth*/,
326  8 /*atTimeCode*/,
327  0 /*atTimeModifier (kSuffixW + minute=0)*/,
328  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
329  3 /*letterIndex ("S")*/,
330  },
331  // Rule Edm 1972 1986 - Apr lastSun 2:00 1:00 D
332  {
333  -127 /*fromYearTiny (1972)*/,
334  -114 /*toYearTiny (1986)*/,
335  4 /*inMonth*/,
336  7 /*onDayOfWeek*/,
337  0 /*onDayOfMonth*/,
338  8 /*atTimeCode*/,
339  0 /*atTimeModifier (kSuffixW + minute=0)*/,
340  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
341  2 /*letterIndex ("D")*/,
342  },
343  // Rule Edm 1972 2006 - Oct lastSun 2:00 0 S
344  {
345  -127 /*fromYearTiny (1972)*/,
346  -94 /*toYearTiny (2006)*/,
347  10 /*inMonth*/,
348  7 /*onDayOfWeek*/,
349  0 /*onDayOfMonth*/,
350  8 /*atTimeCode*/,
351  0 /*atTimeModifier (kSuffixW + minute=0)*/,
352  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
353  3 /*letterIndex ("S")*/,
354  },
355 
356 };
357 
358 const extended::Info::ZonePolicy kZonePolicyEdm ACE_TIME_PROGMEM = {
359  kZoneRulesEdm /*rules*/,
360  4 /*numRules*/,
361 };
362 
363 //---------------------------------------------------------------------------
364 // Policy name: Morocco
365 // Rules: 170
366 //---------------------------------------------------------------------------
367 
368 static const extended::Info::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = {
369  // Anchor: Rule Morocco 1978 only - Aug 4 0:00 0 -
370  {
371  -127 /*fromYearTiny (-32767)*/,
372  -127 /*toYearTiny (-32767)*/,
373  1 /*inMonth*/,
374  0 /*onDayOfWeek*/,
375  1 /*onDayOfMonth*/,
376  0 /*atTimeCode*/,
377  0 /*atTimeModifier (kSuffixW + minute=0)*/,
378  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
379  0 /*letterIndex ("")*/,
380  },
381  // Rule Morocco 1978 only - Aug 4 0:00 0 -
382  {
383  -122 /*fromYearTiny (1978)*/,
384  -122 /*toYearTiny (1978)*/,
385  8 /*inMonth*/,
386  0 /*onDayOfWeek*/,
387  4 /*onDayOfMonth*/,
388  0 /*atTimeCode*/,
389  0 /*atTimeModifier (kSuffixW + minute=0)*/,
390  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
391  0 /*letterIndex ("")*/,
392  },
393  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
394  {
395  -92 /*fromYearTiny (2008)*/,
396  -92 /*toYearTiny (2008)*/,
397  6 /*inMonth*/,
398  0 /*onDayOfWeek*/,
399  1 /*onDayOfMonth*/,
400  0 /*atTimeCode*/,
401  0 /*atTimeModifier (kSuffixW + minute=0)*/,
402  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
403  0 /*letterIndex ("")*/,
404  },
405  // Rule Morocco 2008 only - Sep 1 0:00 0 -
406  {
407  -92 /*fromYearTiny (2008)*/,
408  -92 /*toYearTiny (2008)*/,
409  9 /*inMonth*/,
410  0 /*onDayOfWeek*/,
411  1 /*onDayOfMonth*/,
412  0 /*atTimeCode*/,
413  0 /*atTimeModifier (kSuffixW + minute=0)*/,
414  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
415  0 /*letterIndex ("")*/,
416  },
417  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
418  {
419  -91 /*fromYearTiny (2009)*/,
420  -91 /*toYearTiny (2009)*/,
421  6 /*inMonth*/,
422  0 /*onDayOfWeek*/,
423  1 /*onDayOfMonth*/,
424  0 /*atTimeCode*/,
425  0 /*atTimeModifier (kSuffixW + minute=0)*/,
426  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
427  0 /*letterIndex ("")*/,
428  },
429  // Rule Morocco 2009 only - Aug 21 0:00 0 -
430  {
431  -91 /*fromYearTiny (2009)*/,
432  -91 /*toYearTiny (2009)*/,
433  8 /*inMonth*/,
434  0 /*onDayOfWeek*/,
435  21 /*onDayOfMonth*/,
436  0 /*atTimeCode*/,
437  0 /*atTimeModifier (kSuffixW + minute=0)*/,
438  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
439  0 /*letterIndex ("")*/,
440  },
441  // Rule Morocco 2010 only - May 2 0:00 1:00 -
442  {
443  -90 /*fromYearTiny (2010)*/,
444  -90 /*toYearTiny (2010)*/,
445  5 /*inMonth*/,
446  0 /*onDayOfWeek*/,
447  2 /*onDayOfMonth*/,
448  0 /*atTimeCode*/,
449  0 /*atTimeModifier (kSuffixW + minute=0)*/,
450  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
451  0 /*letterIndex ("")*/,
452  },
453  // Rule Morocco 2010 only - Aug 8 0:00 0 -
454  {
455  -90 /*fromYearTiny (2010)*/,
456  -90 /*toYearTiny (2010)*/,
457  8 /*inMonth*/,
458  0 /*onDayOfWeek*/,
459  8 /*onDayOfMonth*/,
460  0 /*atTimeCode*/,
461  0 /*atTimeModifier (kSuffixW + minute=0)*/,
462  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
463  0 /*letterIndex ("")*/,
464  },
465  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
466  {
467  -89 /*fromYearTiny (2011)*/,
468  -89 /*toYearTiny (2011)*/,
469  4 /*inMonth*/,
470  0 /*onDayOfWeek*/,
471  3 /*onDayOfMonth*/,
472  0 /*atTimeCode*/,
473  0 /*atTimeModifier (kSuffixW + minute=0)*/,
474  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
475  0 /*letterIndex ("")*/,
476  },
477  // Rule Morocco 2011 only - Jul 31 0:00 0 -
478  {
479  -89 /*fromYearTiny (2011)*/,
480  -89 /*toYearTiny (2011)*/,
481  7 /*inMonth*/,
482  0 /*onDayOfWeek*/,
483  31 /*onDayOfMonth*/,
484  0 /*atTimeCode*/,
485  0 /*atTimeModifier (kSuffixW + minute=0)*/,
486  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
487  0 /*letterIndex ("")*/,
488  },
489  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
490  {
491  -88 /*fromYearTiny (2012)*/,
492  -87 /*toYearTiny (2013)*/,
493  4 /*inMonth*/,
494  7 /*onDayOfWeek*/,
495  0 /*onDayOfMonth*/,
496  8 /*atTimeCode*/,
497  0 /*atTimeModifier (kSuffixW + minute=0)*/,
498  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
499  0 /*letterIndex ("")*/,
500  },
501  // Rule Morocco 2012 only - Jul 20 3:00 0 -
502  {
503  -88 /*fromYearTiny (2012)*/,
504  -88 /*toYearTiny (2012)*/,
505  7 /*inMonth*/,
506  0 /*onDayOfWeek*/,
507  20 /*onDayOfMonth*/,
508  12 /*atTimeCode*/,
509  0 /*atTimeModifier (kSuffixW + minute=0)*/,
510  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
511  0 /*letterIndex ("")*/,
512  },
513  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
514  {
515  -88 /*fromYearTiny (2012)*/,
516  -88 /*toYearTiny (2012)*/,
517  8 /*inMonth*/,
518  0 /*onDayOfWeek*/,
519  20 /*onDayOfMonth*/,
520  8 /*atTimeCode*/,
521  0 /*atTimeModifier (kSuffixW + minute=0)*/,
522  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
523  0 /*letterIndex ("")*/,
524  },
525  // Rule Morocco 2012 only - Sep 30 3:00 0 -
526  {
527  -88 /*fromYearTiny (2012)*/,
528  -88 /*toYearTiny (2012)*/,
529  9 /*inMonth*/,
530  0 /*onDayOfWeek*/,
531  30 /*onDayOfMonth*/,
532  12 /*atTimeCode*/,
533  0 /*atTimeModifier (kSuffixW + minute=0)*/,
534  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
535  0 /*letterIndex ("")*/,
536  },
537  // Rule Morocco 2013 only - Jul 7 3:00 0 -
538  {
539  -87 /*fromYearTiny (2013)*/,
540  -87 /*toYearTiny (2013)*/,
541  7 /*inMonth*/,
542  0 /*onDayOfWeek*/,
543  7 /*onDayOfMonth*/,
544  12 /*atTimeCode*/,
545  0 /*atTimeModifier (kSuffixW + minute=0)*/,
546  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
547  0 /*letterIndex ("")*/,
548  },
549  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
550  {
551  -87 /*fromYearTiny (2013)*/,
552  -87 /*toYearTiny (2013)*/,
553  8 /*inMonth*/,
554  0 /*onDayOfWeek*/,
555  10 /*onDayOfMonth*/,
556  8 /*atTimeCode*/,
557  0 /*atTimeModifier (kSuffixW + minute=0)*/,
558  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
559  0 /*letterIndex ("")*/,
560  },
561  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
562  {
563  -87 /*fromYearTiny (2013)*/,
564  -82 /*toYearTiny (2018)*/,
565  10 /*inMonth*/,
566  7 /*onDayOfWeek*/,
567  0 /*onDayOfMonth*/,
568  12 /*atTimeCode*/,
569  0 /*atTimeModifier (kSuffixW + minute=0)*/,
570  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
571  0 /*letterIndex ("")*/,
572  },
573  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
574  {
575  -86 /*fromYearTiny (2014)*/,
576  -82 /*toYearTiny (2018)*/,
577  3 /*inMonth*/,
578  7 /*onDayOfWeek*/,
579  0 /*onDayOfMonth*/,
580  8 /*atTimeCode*/,
581  0 /*atTimeModifier (kSuffixW + minute=0)*/,
582  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
583  0 /*letterIndex ("")*/,
584  },
585  // Rule Morocco 2014 only - Jun 28 3:00 0 -
586  {
587  -86 /*fromYearTiny (2014)*/,
588  -86 /*toYearTiny (2014)*/,
589  6 /*inMonth*/,
590  0 /*onDayOfWeek*/,
591  28 /*onDayOfMonth*/,
592  12 /*atTimeCode*/,
593  0 /*atTimeModifier (kSuffixW + minute=0)*/,
594  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
595  0 /*letterIndex ("")*/,
596  },
597  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
598  {
599  -86 /*fromYearTiny (2014)*/,
600  -86 /*toYearTiny (2014)*/,
601  8 /*inMonth*/,
602  0 /*onDayOfWeek*/,
603  2 /*onDayOfMonth*/,
604  8 /*atTimeCode*/,
605  0 /*atTimeModifier (kSuffixW + minute=0)*/,
606  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
607  0 /*letterIndex ("")*/,
608  },
609  // Rule Morocco 2015 only - Jun 14 3:00 0 -
610  {
611  -85 /*fromYearTiny (2015)*/,
612  -85 /*toYearTiny (2015)*/,
613  6 /*inMonth*/,
614  0 /*onDayOfWeek*/,
615  14 /*onDayOfMonth*/,
616  12 /*atTimeCode*/,
617  0 /*atTimeModifier (kSuffixW + minute=0)*/,
618  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
619  0 /*letterIndex ("")*/,
620  },
621  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
622  {
623  -85 /*fromYearTiny (2015)*/,
624  -85 /*toYearTiny (2015)*/,
625  7 /*inMonth*/,
626  0 /*onDayOfWeek*/,
627  19 /*onDayOfMonth*/,
628  8 /*atTimeCode*/,
629  0 /*atTimeModifier (kSuffixW + minute=0)*/,
630  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
631  0 /*letterIndex ("")*/,
632  },
633  // Rule Morocco 2016 only - Jun 5 3:00 0 -
634  {
635  -84 /*fromYearTiny (2016)*/,
636  -84 /*toYearTiny (2016)*/,
637  6 /*inMonth*/,
638  0 /*onDayOfWeek*/,
639  5 /*onDayOfMonth*/,
640  12 /*atTimeCode*/,
641  0 /*atTimeModifier (kSuffixW + minute=0)*/,
642  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
643  0 /*letterIndex ("")*/,
644  },
645  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
646  {
647  -84 /*fromYearTiny (2016)*/,
648  -84 /*toYearTiny (2016)*/,
649  7 /*inMonth*/,
650  0 /*onDayOfWeek*/,
651  10 /*onDayOfMonth*/,
652  8 /*atTimeCode*/,
653  0 /*atTimeModifier (kSuffixW + minute=0)*/,
654  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
655  0 /*letterIndex ("")*/,
656  },
657  // Rule Morocco 2017 only - May 21 3:00 0 -
658  {
659  -83 /*fromYearTiny (2017)*/,
660  -83 /*toYearTiny (2017)*/,
661  5 /*inMonth*/,
662  0 /*onDayOfWeek*/,
663  21 /*onDayOfMonth*/,
664  12 /*atTimeCode*/,
665  0 /*atTimeModifier (kSuffixW + minute=0)*/,
666  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
667  0 /*letterIndex ("")*/,
668  },
669  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
670  {
671  -83 /*fromYearTiny (2017)*/,
672  -83 /*toYearTiny (2017)*/,
673  7 /*inMonth*/,
674  0 /*onDayOfWeek*/,
675  2 /*onDayOfMonth*/,
676  8 /*atTimeCode*/,
677  0 /*atTimeModifier (kSuffixW + minute=0)*/,
678  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
679  0 /*letterIndex ("")*/,
680  },
681  // Rule Morocco 2018 only - May 13 3:00 0 -
682  {
683  -82 /*fromYearTiny (2018)*/,
684  -82 /*toYearTiny (2018)*/,
685  5 /*inMonth*/,
686  0 /*onDayOfWeek*/,
687  13 /*onDayOfMonth*/,
688  12 /*atTimeCode*/,
689  0 /*atTimeModifier (kSuffixW + minute=0)*/,
690  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
691  0 /*letterIndex ("")*/,
692  },
693  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
694  {
695  -82 /*fromYearTiny (2018)*/,
696  -82 /*toYearTiny (2018)*/,
697  6 /*inMonth*/,
698  0 /*onDayOfWeek*/,
699  17 /*onDayOfMonth*/,
700  8 /*atTimeCode*/,
701  0 /*atTimeModifier (kSuffixW + minute=0)*/,
702  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
703  0 /*letterIndex ("")*/,
704  },
705  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
706  {
707  -81 /*fromYearTiny (2019)*/,
708  -81 /*toYearTiny (2019)*/,
709  5 /*inMonth*/,
710  0 /*onDayOfWeek*/,
711  5 /*onDayOfMonth*/,
712  12 /*atTimeCode*/,
713  0 /*atTimeModifier (kSuffixW + minute=0)*/,
714  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
715  0 /*letterIndex ("")*/,
716  },
717  // Rule Morocco 2019 only - Jun 9 2:00 0 -
718  {
719  -81 /*fromYearTiny (2019)*/,
720  -81 /*toYearTiny (2019)*/,
721  6 /*inMonth*/,
722  0 /*onDayOfWeek*/,
723  9 /*onDayOfMonth*/,
724  8 /*atTimeCode*/,
725  0 /*atTimeModifier (kSuffixW + minute=0)*/,
726  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
727  0 /*letterIndex ("")*/,
728  },
729  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
730  {
731  -80 /*fromYearTiny (2020)*/,
732  -80 /*toYearTiny (2020)*/,
733  4 /*inMonth*/,
734  0 /*onDayOfWeek*/,
735  19 /*onDayOfMonth*/,
736  12 /*atTimeCode*/,
737  0 /*atTimeModifier (kSuffixW + minute=0)*/,
738  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
739  0 /*letterIndex ("")*/,
740  },
741  // Rule Morocco 2020 only - May 31 2:00 0 -
742  {
743  -80 /*fromYearTiny (2020)*/,
744  -80 /*toYearTiny (2020)*/,
745  5 /*inMonth*/,
746  0 /*onDayOfWeek*/,
747  31 /*onDayOfMonth*/,
748  8 /*atTimeCode*/,
749  0 /*atTimeModifier (kSuffixW + minute=0)*/,
750  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
751  0 /*letterIndex ("")*/,
752  },
753  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
754  {
755  -79 /*fromYearTiny (2021)*/,
756  -79 /*toYearTiny (2021)*/,
757  4 /*inMonth*/,
758  0 /*onDayOfWeek*/,
759  11 /*onDayOfMonth*/,
760  12 /*atTimeCode*/,
761  0 /*atTimeModifier (kSuffixW + minute=0)*/,
762  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
763  0 /*letterIndex ("")*/,
764  },
765  // Rule Morocco 2021 only - May 16 2:00 0 -
766  {
767  -79 /*fromYearTiny (2021)*/,
768  -79 /*toYearTiny (2021)*/,
769  5 /*inMonth*/,
770  0 /*onDayOfWeek*/,
771  16 /*onDayOfMonth*/,
772  8 /*atTimeCode*/,
773  0 /*atTimeModifier (kSuffixW + minute=0)*/,
774  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
775  0 /*letterIndex ("")*/,
776  },
777  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
778  {
779  -78 /*fromYearTiny (2022)*/,
780  -78 /*toYearTiny (2022)*/,
781  3 /*inMonth*/,
782  0 /*onDayOfWeek*/,
783  27 /*onDayOfMonth*/,
784  12 /*atTimeCode*/,
785  0 /*atTimeModifier (kSuffixW + minute=0)*/,
786  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
787  0 /*letterIndex ("")*/,
788  },
789  // Rule Morocco 2022 only - May 8 2:00 0 -
790  {
791  -78 /*fromYearTiny (2022)*/,
792  -78 /*toYearTiny (2022)*/,
793  5 /*inMonth*/,
794  0 /*onDayOfWeek*/,
795  8 /*onDayOfMonth*/,
796  8 /*atTimeCode*/,
797  0 /*atTimeModifier (kSuffixW + minute=0)*/,
798  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
799  0 /*letterIndex ("")*/,
800  },
801  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
802  {
803  -77 /*fromYearTiny (2023)*/,
804  -77 /*toYearTiny (2023)*/,
805  3 /*inMonth*/,
806  0 /*onDayOfWeek*/,
807  19 /*onDayOfMonth*/,
808  12 /*atTimeCode*/,
809  0 /*atTimeModifier (kSuffixW + minute=0)*/,
810  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
811  0 /*letterIndex ("")*/,
812  },
813  // Rule Morocco 2023 only - Apr 23 2:00 0 -
814  {
815  -77 /*fromYearTiny (2023)*/,
816  -77 /*toYearTiny (2023)*/,
817  4 /*inMonth*/,
818  0 /*onDayOfWeek*/,
819  23 /*onDayOfMonth*/,
820  8 /*atTimeCode*/,
821  0 /*atTimeModifier (kSuffixW + minute=0)*/,
822  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
823  0 /*letterIndex ("")*/,
824  },
825  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
826  {
827  -76 /*fromYearTiny (2024)*/,
828  -76 /*toYearTiny (2024)*/,
829  3 /*inMonth*/,
830  0 /*onDayOfWeek*/,
831  10 /*onDayOfMonth*/,
832  12 /*atTimeCode*/,
833  0 /*atTimeModifier (kSuffixW + minute=0)*/,
834  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
835  0 /*letterIndex ("")*/,
836  },
837  // Rule Morocco 2024 only - Apr 14 2:00 0 -
838  {
839  -76 /*fromYearTiny (2024)*/,
840  -76 /*toYearTiny (2024)*/,
841  4 /*inMonth*/,
842  0 /*onDayOfWeek*/,
843  14 /*onDayOfMonth*/,
844  8 /*atTimeCode*/,
845  0 /*atTimeModifier (kSuffixW + minute=0)*/,
846  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
847  0 /*letterIndex ("")*/,
848  },
849  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
850  {
851  -75 /*fromYearTiny (2025)*/,
852  -75 /*toYearTiny (2025)*/,
853  2 /*inMonth*/,
854  0 /*onDayOfWeek*/,
855  23 /*onDayOfMonth*/,
856  12 /*atTimeCode*/,
857  0 /*atTimeModifier (kSuffixW + minute=0)*/,
858  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
859  0 /*letterIndex ("")*/,
860  },
861  // Rule Morocco 2025 only - Apr 6 2:00 0 -
862  {
863  -75 /*fromYearTiny (2025)*/,
864  -75 /*toYearTiny (2025)*/,
865  4 /*inMonth*/,
866  0 /*onDayOfWeek*/,
867  6 /*onDayOfMonth*/,
868  8 /*atTimeCode*/,
869  0 /*atTimeModifier (kSuffixW + minute=0)*/,
870  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
871  0 /*letterIndex ("")*/,
872  },
873  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
874  {
875  -74 /*fromYearTiny (2026)*/,
876  -74 /*toYearTiny (2026)*/,
877  2 /*inMonth*/,
878  0 /*onDayOfWeek*/,
879  15 /*onDayOfMonth*/,
880  12 /*atTimeCode*/,
881  0 /*atTimeModifier (kSuffixW + minute=0)*/,
882  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
883  0 /*letterIndex ("")*/,
884  },
885  // Rule Morocco 2026 only - Mar 22 2:00 0 -
886  {
887  -74 /*fromYearTiny (2026)*/,
888  -74 /*toYearTiny (2026)*/,
889  3 /*inMonth*/,
890  0 /*onDayOfWeek*/,
891  22 /*onDayOfMonth*/,
892  8 /*atTimeCode*/,
893  0 /*atTimeModifier (kSuffixW + minute=0)*/,
894  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
895  0 /*letterIndex ("")*/,
896  },
897  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
898  {
899  -73 /*fromYearTiny (2027)*/,
900  -73 /*toYearTiny (2027)*/,
901  2 /*inMonth*/,
902  0 /*onDayOfWeek*/,
903  7 /*onDayOfMonth*/,
904  12 /*atTimeCode*/,
905  0 /*atTimeModifier (kSuffixW + minute=0)*/,
906  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
907  0 /*letterIndex ("")*/,
908  },
909  // Rule Morocco 2027 only - Mar 14 2:00 0 -
910  {
911  -73 /*fromYearTiny (2027)*/,
912  -73 /*toYearTiny (2027)*/,
913  3 /*inMonth*/,
914  0 /*onDayOfWeek*/,
915  14 /*onDayOfMonth*/,
916  8 /*atTimeCode*/,
917  0 /*atTimeModifier (kSuffixW + minute=0)*/,
918  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
919  0 /*letterIndex ("")*/,
920  },
921  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
922  {
923  -72 /*fromYearTiny (2028)*/,
924  -72 /*toYearTiny (2028)*/,
925  1 /*inMonth*/,
926  0 /*onDayOfWeek*/,
927  23 /*onDayOfMonth*/,
928  12 /*atTimeCode*/,
929  0 /*atTimeModifier (kSuffixW + minute=0)*/,
930  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
931  0 /*letterIndex ("")*/,
932  },
933  // Rule Morocco 2028 only - Mar 5 2:00 0 -
934  {
935  -72 /*fromYearTiny (2028)*/,
936  -72 /*toYearTiny (2028)*/,
937  3 /*inMonth*/,
938  0 /*onDayOfWeek*/,
939  5 /*onDayOfMonth*/,
940  8 /*atTimeCode*/,
941  0 /*atTimeModifier (kSuffixW + minute=0)*/,
942  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
943  0 /*letterIndex ("")*/,
944  },
945  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
946  {
947  -71 /*fromYearTiny (2029)*/,
948  -71 /*toYearTiny (2029)*/,
949  1 /*inMonth*/,
950  0 /*onDayOfWeek*/,
951  14 /*onDayOfMonth*/,
952  12 /*atTimeCode*/,
953  0 /*atTimeModifier (kSuffixW + minute=0)*/,
954  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
955  0 /*letterIndex ("")*/,
956  },
957  // Rule Morocco 2029 only - Feb 18 2:00 0 -
958  {
959  -71 /*fromYearTiny (2029)*/,
960  -71 /*toYearTiny (2029)*/,
961  2 /*inMonth*/,
962  0 /*onDayOfWeek*/,
963  18 /*onDayOfMonth*/,
964  8 /*atTimeCode*/,
965  0 /*atTimeModifier (kSuffixW + minute=0)*/,
966  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
967  0 /*letterIndex ("")*/,
968  },
969  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
970  {
971  -71 /*fromYearTiny (2029)*/,
972  -71 /*toYearTiny (2029)*/,
973  12 /*inMonth*/,
974  0 /*onDayOfWeek*/,
975  30 /*onDayOfMonth*/,
976  12 /*atTimeCode*/,
977  0 /*atTimeModifier (kSuffixW + minute=0)*/,
978  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
979  0 /*letterIndex ("")*/,
980  },
981  // Rule Morocco 2030 only - Feb 10 2:00 0 -
982  {
983  -70 /*fromYearTiny (2030)*/,
984  -70 /*toYearTiny (2030)*/,
985  2 /*inMonth*/,
986  0 /*onDayOfWeek*/,
987  10 /*onDayOfMonth*/,
988  8 /*atTimeCode*/,
989  0 /*atTimeModifier (kSuffixW + minute=0)*/,
990  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
991  0 /*letterIndex ("")*/,
992  },
993  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
994  {
995  -70 /*fromYearTiny (2030)*/,
996  -70 /*toYearTiny (2030)*/,
997  12 /*inMonth*/,
998  0 /*onDayOfWeek*/,
999  22 /*onDayOfMonth*/,
1000  12 /*atTimeCode*/,
1001  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1002  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1003  0 /*letterIndex ("")*/,
1004  },
1005  // Rule Morocco 2031 only - Jan 26 2:00 0 -
1006  {
1007  -69 /*fromYearTiny (2031)*/,
1008  -69 /*toYearTiny (2031)*/,
1009  1 /*inMonth*/,
1010  0 /*onDayOfWeek*/,
1011  26 /*onDayOfMonth*/,
1012  8 /*atTimeCode*/,
1013  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1014  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1015  0 /*letterIndex ("")*/,
1016  },
1017  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
1018  {
1019  -69 /*fromYearTiny (2031)*/,
1020  -69 /*toYearTiny (2031)*/,
1021  12 /*inMonth*/,
1022  0 /*onDayOfWeek*/,
1023  14 /*onDayOfMonth*/,
1024  12 /*atTimeCode*/,
1025  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1026  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1027  0 /*letterIndex ("")*/,
1028  },
1029  // Rule Morocco 2032 only - Jan 18 2:00 0 -
1030  {
1031  -68 /*fromYearTiny (2032)*/,
1032  -68 /*toYearTiny (2032)*/,
1033  1 /*inMonth*/,
1034  0 /*onDayOfWeek*/,
1035  18 /*onDayOfMonth*/,
1036  8 /*atTimeCode*/,
1037  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1038  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1039  0 /*letterIndex ("")*/,
1040  },
1041  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
1042  {
1043  -68 /*fromYearTiny (2032)*/,
1044  -68 /*toYearTiny (2032)*/,
1045  11 /*inMonth*/,
1046  0 /*onDayOfWeek*/,
1047  28 /*onDayOfMonth*/,
1048  12 /*atTimeCode*/,
1049  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1050  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1051  0 /*letterIndex ("")*/,
1052  },
1053  // Rule Morocco 2033 only - Jan 9 2:00 0 -
1054  {
1055  -67 /*fromYearTiny (2033)*/,
1056  -67 /*toYearTiny (2033)*/,
1057  1 /*inMonth*/,
1058  0 /*onDayOfWeek*/,
1059  9 /*onDayOfMonth*/,
1060  8 /*atTimeCode*/,
1061  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1062  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1063  0 /*letterIndex ("")*/,
1064  },
1065  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
1066  {
1067  -67 /*fromYearTiny (2033)*/,
1068  -67 /*toYearTiny (2033)*/,
1069  11 /*inMonth*/,
1070  0 /*onDayOfWeek*/,
1071  20 /*onDayOfMonth*/,
1072  12 /*atTimeCode*/,
1073  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1074  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1075  0 /*letterIndex ("")*/,
1076  },
1077  // Rule Morocco 2033 only - Dec 25 2:00 0 -
1078  {
1079  -67 /*fromYearTiny (2033)*/,
1080  -67 /*toYearTiny (2033)*/,
1081  12 /*inMonth*/,
1082  0 /*onDayOfWeek*/,
1083  25 /*onDayOfMonth*/,
1084  8 /*atTimeCode*/,
1085  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1086  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1087  0 /*letterIndex ("")*/,
1088  },
1089  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
1090  {
1091  -66 /*fromYearTiny (2034)*/,
1092  -66 /*toYearTiny (2034)*/,
1093  11 /*inMonth*/,
1094  0 /*onDayOfWeek*/,
1095  5 /*onDayOfMonth*/,
1096  12 /*atTimeCode*/,
1097  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1098  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1099  0 /*letterIndex ("")*/,
1100  },
1101  // Rule Morocco 2034 only - Dec 17 2:00 0 -
1102  {
1103  -66 /*fromYearTiny (2034)*/,
1104  -66 /*toYearTiny (2034)*/,
1105  12 /*inMonth*/,
1106  0 /*onDayOfWeek*/,
1107  17 /*onDayOfMonth*/,
1108  8 /*atTimeCode*/,
1109  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1110  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1111  0 /*letterIndex ("")*/,
1112  },
1113  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
1114  {
1115  -65 /*fromYearTiny (2035)*/,
1116  -65 /*toYearTiny (2035)*/,
1117  10 /*inMonth*/,
1118  0 /*onDayOfWeek*/,
1119  28 /*onDayOfMonth*/,
1120  12 /*atTimeCode*/,
1121  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1122  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1123  0 /*letterIndex ("")*/,
1124  },
1125  // Rule Morocco 2035 only - Dec 9 2:00 0 -
1126  {
1127  -65 /*fromYearTiny (2035)*/,
1128  -65 /*toYearTiny (2035)*/,
1129  12 /*inMonth*/,
1130  0 /*onDayOfWeek*/,
1131  9 /*onDayOfMonth*/,
1132  8 /*atTimeCode*/,
1133  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1134  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1135  0 /*letterIndex ("")*/,
1136  },
1137  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
1138  {
1139  -64 /*fromYearTiny (2036)*/,
1140  -64 /*toYearTiny (2036)*/,
1141  10 /*inMonth*/,
1142  0 /*onDayOfWeek*/,
1143  19 /*onDayOfMonth*/,
1144  12 /*atTimeCode*/,
1145  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1146  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1147  0 /*letterIndex ("")*/,
1148  },
1149  // Rule Morocco 2036 only - Nov 23 2:00 0 -
1150  {
1151  -64 /*fromYearTiny (2036)*/,
1152  -64 /*toYearTiny (2036)*/,
1153  11 /*inMonth*/,
1154  0 /*onDayOfWeek*/,
1155  23 /*onDayOfMonth*/,
1156  8 /*atTimeCode*/,
1157  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1158  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1159  0 /*letterIndex ("")*/,
1160  },
1161  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
1162  {
1163  -63 /*fromYearTiny (2037)*/,
1164  -63 /*toYearTiny (2037)*/,
1165  10 /*inMonth*/,
1166  0 /*onDayOfWeek*/,
1167  4 /*onDayOfMonth*/,
1168  12 /*atTimeCode*/,
1169  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1170  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1171  0 /*letterIndex ("")*/,
1172  },
1173  // Rule Morocco 2037 only - Nov 15 2:00 0 -
1174  {
1175  -63 /*fromYearTiny (2037)*/,
1176  -63 /*toYearTiny (2037)*/,
1177  11 /*inMonth*/,
1178  0 /*onDayOfWeek*/,
1179  15 /*onDayOfMonth*/,
1180  8 /*atTimeCode*/,
1181  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1182  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1183  0 /*letterIndex ("")*/,
1184  },
1185  // Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
1186  {
1187  -62 /*fromYearTiny (2038)*/,
1188  -62 /*toYearTiny (2038)*/,
1189  9 /*inMonth*/,
1190  0 /*onDayOfWeek*/,
1191  26 /*onDayOfMonth*/,
1192  12 /*atTimeCode*/,
1193  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1194  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1195  0 /*letterIndex ("")*/,
1196  },
1197  // Rule Morocco 2038 only - Oct 31 2:00 0 -
1198  {
1199  -62 /*fromYearTiny (2038)*/,
1200  -62 /*toYearTiny (2038)*/,
1201  10 /*inMonth*/,
1202  0 /*onDayOfWeek*/,
1203  31 /*onDayOfMonth*/,
1204  8 /*atTimeCode*/,
1205  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1206  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1207  0 /*letterIndex ("")*/,
1208  },
1209  // Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
1210  {
1211  -61 /*fromYearTiny (2039)*/,
1212  -61 /*toYearTiny (2039)*/,
1213  9 /*inMonth*/,
1214  0 /*onDayOfWeek*/,
1215  18 /*onDayOfMonth*/,
1216  12 /*atTimeCode*/,
1217  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1218  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1219  0 /*letterIndex ("")*/,
1220  },
1221  // Rule Morocco 2039 only - Oct 23 2:00 0 -
1222  {
1223  -61 /*fromYearTiny (2039)*/,
1224  -61 /*toYearTiny (2039)*/,
1225  10 /*inMonth*/,
1226  0 /*onDayOfWeek*/,
1227  23 /*onDayOfMonth*/,
1228  8 /*atTimeCode*/,
1229  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1230  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1231  0 /*letterIndex ("")*/,
1232  },
1233  // Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
1234  {
1235  -60 /*fromYearTiny (2040)*/,
1236  -60 /*toYearTiny (2040)*/,
1237  9 /*inMonth*/,
1238  0 /*onDayOfWeek*/,
1239  2 /*onDayOfMonth*/,
1240  12 /*atTimeCode*/,
1241  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1242  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1243  0 /*letterIndex ("")*/,
1244  },
1245  // Rule Morocco 2040 only - Oct 14 2:00 0 -
1246  {
1247  -60 /*fromYearTiny (2040)*/,
1248  -60 /*toYearTiny (2040)*/,
1249  10 /*inMonth*/,
1250  0 /*onDayOfWeek*/,
1251  14 /*onDayOfMonth*/,
1252  8 /*atTimeCode*/,
1253  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1254  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1255  0 /*letterIndex ("")*/,
1256  },
1257  // Rule Morocco 2041 only - Aug 25 3:00 -1:00 -
1258  {
1259  -59 /*fromYearTiny (2041)*/,
1260  -59 /*toYearTiny (2041)*/,
1261  8 /*inMonth*/,
1262  0 /*onDayOfWeek*/,
1263  25 /*onDayOfMonth*/,
1264  12 /*atTimeCode*/,
1265  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1266  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1267  0 /*letterIndex ("")*/,
1268  },
1269  // Rule Morocco 2041 only - Sep 29 2:00 0 -
1270  {
1271  -59 /*fromYearTiny (2041)*/,
1272  -59 /*toYearTiny (2041)*/,
1273  9 /*inMonth*/,
1274  0 /*onDayOfWeek*/,
1275  29 /*onDayOfMonth*/,
1276  8 /*atTimeCode*/,
1277  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1278  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1279  0 /*letterIndex ("")*/,
1280  },
1281  // Rule Morocco 2042 only - Aug 10 3:00 -1:00 -
1282  {
1283  -58 /*fromYearTiny (2042)*/,
1284  -58 /*toYearTiny (2042)*/,
1285  8 /*inMonth*/,
1286  0 /*onDayOfWeek*/,
1287  10 /*onDayOfMonth*/,
1288  12 /*atTimeCode*/,
1289  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1290  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1291  0 /*letterIndex ("")*/,
1292  },
1293  // Rule Morocco 2042 only - Sep 21 2:00 0 -
1294  {
1295  -58 /*fromYearTiny (2042)*/,
1296  -58 /*toYearTiny (2042)*/,
1297  9 /*inMonth*/,
1298  0 /*onDayOfWeek*/,
1299  21 /*onDayOfMonth*/,
1300  8 /*atTimeCode*/,
1301  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1302  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1303  0 /*letterIndex ("")*/,
1304  },
1305  // Rule Morocco 2043 only - Aug 2 3:00 -1:00 -
1306  {
1307  -57 /*fromYearTiny (2043)*/,
1308  -57 /*toYearTiny (2043)*/,
1309  8 /*inMonth*/,
1310  0 /*onDayOfWeek*/,
1311  2 /*onDayOfMonth*/,
1312  12 /*atTimeCode*/,
1313  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1314  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1315  0 /*letterIndex ("")*/,
1316  },
1317  // Rule Morocco 2043 only - Sep 13 2:00 0 -
1318  {
1319  -57 /*fromYearTiny (2043)*/,
1320  -57 /*toYearTiny (2043)*/,
1321  9 /*inMonth*/,
1322  0 /*onDayOfWeek*/,
1323  13 /*onDayOfMonth*/,
1324  8 /*atTimeCode*/,
1325  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1326  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1327  0 /*letterIndex ("")*/,
1328  },
1329  // Rule Morocco 2044 only - Jul 24 3:00 -1:00 -
1330  {
1331  -56 /*fromYearTiny (2044)*/,
1332  -56 /*toYearTiny (2044)*/,
1333  7 /*inMonth*/,
1334  0 /*onDayOfWeek*/,
1335  24 /*onDayOfMonth*/,
1336  12 /*atTimeCode*/,
1337  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1338  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1339  0 /*letterIndex ("")*/,
1340  },
1341  // Rule Morocco 2044 only - Aug 28 2:00 0 -
1342  {
1343  -56 /*fromYearTiny (2044)*/,
1344  -56 /*toYearTiny (2044)*/,
1345  8 /*inMonth*/,
1346  0 /*onDayOfWeek*/,
1347  28 /*onDayOfMonth*/,
1348  8 /*atTimeCode*/,
1349  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1350  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1351  0 /*letterIndex ("")*/,
1352  },
1353  // Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
1354  {
1355  -55 /*fromYearTiny (2045)*/,
1356  -55 /*toYearTiny (2045)*/,
1357  7 /*inMonth*/,
1358  0 /*onDayOfWeek*/,
1359  9 /*onDayOfMonth*/,
1360  12 /*atTimeCode*/,
1361  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1362  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1363  0 /*letterIndex ("")*/,
1364  },
1365  // Rule Morocco 2045 only - Aug 20 2:00 0 -
1366  {
1367  -55 /*fromYearTiny (2045)*/,
1368  -55 /*toYearTiny (2045)*/,
1369  8 /*inMonth*/,
1370  0 /*onDayOfWeek*/,
1371  20 /*onDayOfMonth*/,
1372  8 /*atTimeCode*/,
1373  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1374  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1375  0 /*letterIndex ("")*/,
1376  },
1377  // Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
1378  {
1379  -54 /*fromYearTiny (2046)*/,
1380  -54 /*toYearTiny (2046)*/,
1381  7 /*inMonth*/,
1382  0 /*onDayOfWeek*/,
1383  1 /*onDayOfMonth*/,
1384  12 /*atTimeCode*/,
1385  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1386  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1387  0 /*letterIndex ("")*/,
1388  },
1389  // Rule Morocco 2046 only - Aug 5 2:00 0 -
1390  {
1391  -54 /*fromYearTiny (2046)*/,
1392  -54 /*toYearTiny (2046)*/,
1393  8 /*inMonth*/,
1394  0 /*onDayOfWeek*/,
1395  5 /*onDayOfMonth*/,
1396  8 /*atTimeCode*/,
1397  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1398  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1399  0 /*letterIndex ("")*/,
1400  },
1401  // Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
1402  {
1403  -53 /*fromYearTiny (2047)*/,
1404  -53 /*toYearTiny (2047)*/,
1405  6 /*inMonth*/,
1406  0 /*onDayOfWeek*/,
1407  23 /*onDayOfMonth*/,
1408  12 /*atTimeCode*/,
1409  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1410  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1411  0 /*letterIndex ("")*/,
1412  },
1413  // Rule Morocco 2047 only - Jul 28 2:00 0 -
1414  {
1415  -53 /*fromYearTiny (2047)*/,
1416  -53 /*toYearTiny (2047)*/,
1417  7 /*inMonth*/,
1418  0 /*onDayOfWeek*/,
1419  28 /*onDayOfMonth*/,
1420  8 /*atTimeCode*/,
1421  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1422  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1423  0 /*letterIndex ("")*/,
1424  },
1425  // Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
1426  {
1427  -52 /*fromYearTiny (2048)*/,
1428  -52 /*toYearTiny (2048)*/,
1429  6 /*inMonth*/,
1430  0 /*onDayOfWeek*/,
1431  7 /*onDayOfMonth*/,
1432  12 /*atTimeCode*/,
1433  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1434  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1435  0 /*letterIndex ("")*/,
1436  },
1437  // Rule Morocco 2048 only - Jul 19 2:00 0 -
1438  {
1439  -52 /*fromYearTiny (2048)*/,
1440  -52 /*toYearTiny (2048)*/,
1441  7 /*inMonth*/,
1442  0 /*onDayOfWeek*/,
1443  19 /*onDayOfMonth*/,
1444  8 /*atTimeCode*/,
1445  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1446  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1447  0 /*letterIndex ("")*/,
1448  },
1449  // Rule Morocco 2049 only - May 30 3:00 -1:00 -
1450  {
1451  -51 /*fromYearTiny (2049)*/,
1452  -51 /*toYearTiny (2049)*/,
1453  5 /*inMonth*/,
1454  0 /*onDayOfWeek*/,
1455  30 /*onDayOfMonth*/,
1456  12 /*atTimeCode*/,
1457  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1458  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1459  0 /*letterIndex ("")*/,
1460  },
1461  // Rule Morocco 2049 only - Jul 4 2:00 0 -
1462  {
1463  -51 /*fromYearTiny (2049)*/,
1464  -51 /*toYearTiny (2049)*/,
1465  7 /*inMonth*/,
1466  0 /*onDayOfWeek*/,
1467  4 /*onDayOfMonth*/,
1468  8 /*atTimeCode*/,
1469  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1470  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1471  0 /*letterIndex ("")*/,
1472  },
1473  // Rule Morocco 2050 only - May 15 3:00 -1:00 -
1474  {
1475  -50 /*fromYearTiny (2050)*/,
1476  -50 /*toYearTiny (2050)*/,
1477  5 /*inMonth*/,
1478  0 /*onDayOfWeek*/,
1479  15 /*onDayOfMonth*/,
1480  12 /*atTimeCode*/,
1481  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1482  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1483  0 /*letterIndex ("")*/,
1484  },
1485  // Rule Morocco 2050 only - Jun 26 2:00 0 -
1486  {
1487  -50 /*fromYearTiny (2050)*/,
1488  -50 /*toYearTiny (2050)*/,
1489  6 /*inMonth*/,
1490  0 /*onDayOfWeek*/,
1491  26 /*onDayOfMonth*/,
1492  8 /*atTimeCode*/,
1493  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1494  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1495  0 /*letterIndex ("")*/,
1496  },
1497  // Rule Morocco 2051 only - May 7 3:00 -1:00 -
1498  {
1499  -49 /*fromYearTiny (2051)*/,
1500  -49 /*toYearTiny (2051)*/,
1501  5 /*inMonth*/,
1502  0 /*onDayOfWeek*/,
1503  7 /*onDayOfMonth*/,
1504  12 /*atTimeCode*/,
1505  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1506  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1507  0 /*letterIndex ("")*/,
1508  },
1509  // Rule Morocco 2051 only - Jun 18 2:00 0 -
1510  {
1511  -49 /*fromYearTiny (2051)*/,
1512  -49 /*toYearTiny (2051)*/,
1513  6 /*inMonth*/,
1514  0 /*onDayOfWeek*/,
1515  18 /*onDayOfMonth*/,
1516  8 /*atTimeCode*/,
1517  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1518  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1519  0 /*letterIndex ("")*/,
1520  },
1521  // Rule Morocco 2052 only - Apr 28 3:00 -1:00 -
1522  {
1523  -48 /*fromYearTiny (2052)*/,
1524  -48 /*toYearTiny (2052)*/,
1525  4 /*inMonth*/,
1526  0 /*onDayOfWeek*/,
1527  28 /*onDayOfMonth*/,
1528  12 /*atTimeCode*/,
1529  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1530  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1531  0 /*letterIndex ("")*/,
1532  },
1533  // Rule Morocco 2052 only - Jun 2 2:00 0 -
1534  {
1535  -48 /*fromYearTiny (2052)*/,
1536  -48 /*toYearTiny (2052)*/,
1537  6 /*inMonth*/,
1538  0 /*onDayOfWeek*/,
1539  2 /*onDayOfMonth*/,
1540  8 /*atTimeCode*/,
1541  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1542  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1543  0 /*letterIndex ("")*/,
1544  },
1545  // Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
1546  {
1547  -47 /*fromYearTiny (2053)*/,
1548  -47 /*toYearTiny (2053)*/,
1549  4 /*inMonth*/,
1550  0 /*onDayOfWeek*/,
1551  13 /*onDayOfMonth*/,
1552  12 /*atTimeCode*/,
1553  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1554  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1555  0 /*letterIndex ("")*/,
1556  },
1557  // Rule Morocco 2053 only - May 25 2:00 0 -
1558  {
1559  -47 /*fromYearTiny (2053)*/,
1560  -47 /*toYearTiny (2053)*/,
1561  5 /*inMonth*/,
1562  0 /*onDayOfWeek*/,
1563  25 /*onDayOfMonth*/,
1564  8 /*atTimeCode*/,
1565  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1566  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1567  0 /*letterIndex ("")*/,
1568  },
1569  // Rule Morocco 2054 only - Apr 5 3:00 -1:00 -
1570  {
1571  -46 /*fromYearTiny (2054)*/,
1572  -46 /*toYearTiny (2054)*/,
1573  4 /*inMonth*/,
1574  0 /*onDayOfWeek*/,
1575  5 /*onDayOfMonth*/,
1576  12 /*atTimeCode*/,
1577  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1578  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1579  0 /*letterIndex ("")*/,
1580  },
1581  // Rule Morocco 2054 only - May 10 2:00 0 -
1582  {
1583  -46 /*fromYearTiny (2054)*/,
1584  -46 /*toYearTiny (2054)*/,
1585  5 /*inMonth*/,
1586  0 /*onDayOfWeek*/,
1587  10 /*onDayOfMonth*/,
1588  8 /*atTimeCode*/,
1589  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1590  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1591  0 /*letterIndex ("")*/,
1592  },
1593  // Rule Morocco 2055 only - Mar 28 3:00 -1:00 -
1594  {
1595  -45 /*fromYearTiny (2055)*/,
1596  -45 /*toYearTiny (2055)*/,
1597  3 /*inMonth*/,
1598  0 /*onDayOfWeek*/,
1599  28 /*onDayOfMonth*/,
1600  12 /*atTimeCode*/,
1601  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1602  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1603  0 /*letterIndex ("")*/,
1604  },
1605  // Rule Morocco 2055 only - May 2 2:00 0 -
1606  {
1607  -45 /*fromYearTiny (2055)*/,
1608  -45 /*toYearTiny (2055)*/,
1609  5 /*inMonth*/,
1610  0 /*onDayOfWeek*/,
1611  2 /*onDayOfMonth*/,
1612  8 /*atTimeCode*/,
1613  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1614  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1615  0 /*letterIndex ("")*/,
1616  },
1617  // Rule Morocco 2056 only - Mar 12 3:00 -1:00 -
1618  {
1619  -44 /*fromYearTiny (2056)*/,
1620  -44 /*toYearTiny (2056)*/,
1621  3 /*inMonth*/,
1622  0 /*onDayOfWeek*/,
1623  12 /*onDayOfMonth*/,
1624  12 /*atTimeCode*/,
1625  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1626  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1627  0 /*letterIndex ("")*/,
1628  },
1629  // Rule Morocco 2056 only - Apr 23 2:00 0 -
1630  {
1631  -44 /*fromYearTiny (2056)*/,
1632  -44 /*toYearTiny (2056)*/,
1633  4 /*inMonth*/,
1634  0 /*onDayOfWeek*/,
1635  23 /*onDayOfMonth*/,
1636  8 /*atTimeCode*/,
1637  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1638  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1639  0 /*letterIndex ("")*/,
1640  },
1641  // Rule Morocco 2057 only - Mar 4 3:00 -1:00 -
1642  {
1643  -43 /*fromYearTiny (2057)*/,
1644  -43 /*toYearTiny (2057)*/,
1645  3 /*inMonth*/,
1646  0 /*onDayOfWeek*/,
1647  4 /*onDayOfMonth*/,
1648  12 /*atTimeCode*/,
1649  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1650  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1651  0 /*letterIndex ("")*/,
1652  },
1653  // Rule Morocco 2057 only - Apr 8 2:00 0 -
1654  {
1655  -43 /*fromYearTiny (2057)*/,
1656  -43 /*toYearTiny (2057)*/,
1657  4 /*inMonth*/,
1658  0 /*onDayOfWeek*/,
1659  8 /*onDayOfMonth*/,
1660  8 /*atTimeCode*/,
1661  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1662  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1663  0 /*letterIndex ("")*/,
1664  },
1665  // Rule Morocco 2058 only - Feb 17 3:00 -1:00 -
1666  {
1667  -42 /*fromYearTiny (2058)*/,
1668  -42 /*toYearTiny (2058)*/,
1669  2 /*inMonth*/,
1670  0 /*onDayOfWeek*/,
1671  17 /*onDayOfMonth*/,
1672  12 /*atTimeCode*/,
1673  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1674  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1675  0 /*letterIndex ("")*/,
1676  },
1677  // Rule Morocco 2058 only - Mar 31 2:00 0 -
1678  {
1679  -42 /*fromYearTiny (2058)*/,
1680  -42 /*toYearTiny (2058)*/,
1681  3 /*inMonth*/,
1682  0 /*onDayOfWeek*/,
1683  31 /*onDayOfMonth*/,
1684  8 /*atTimeCode*/,
1685  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1686  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1687  0 /*letterIndex ("")*/,
1688  },
1689  // Rule Morocco 2059 only - Feb 9 3:00 -1:00 -
1690  {
1691  -41 /*fromYearTiny (2059)*/,
1692  -41 /*toYearTiny (2059)*/,
1693  2 /*inMonth*/,
1694  0 /*onDayOfWeek*/,
1695  9 /*onDayOfMonth*/,
1696  12 /*atTimeCode*/,
1697  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1698  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1699  0 /*letterIndex ("")*/,
1700  },
1701  // Rule Morocco 2059 only - Mar 23 2:00 0 -
1702  {
1703  -41 /*fromYearTiny (2059)*/,
1704  -41 /*toYearTiny (2059)*/,
1705  3 /*inMonth*/,
1706  0 /*onDayOfWeek*/,
1707  23 /*onDayOfMonth*/,
1708  8 /*atTimeCode*/,
1709  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1710  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1711  0 /*letterIndex ("")*/,
1712  },
1713  // Rule Morocco 2060 only - Feb 1 3:00 -1:00 -
1714  {
1715  -40 /*fromYearTiny (2060)*/,
1716  -40 /*toYearTiny (2060)*/,
1717  2 /*inMonth*/,
1718  0 /*onDayOfWeek*/,
1719  1 /*onDayOfMonth*/,
1720  12 /*atTimeCode*/,
1721  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1722  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1723  0 /*letterIndex ("")*/,
1724  },
1725  // Rule Morocco 2060 only - Mar 7 2:00 0 -
1726  {
1727  -40 /*fromYearTiny (2060)*/,
1728  -40 /*toYearTiny (2060)*/,
1729  3 /*inMonth*/,
1730  0 /*onDayOfWeek*/,
1731  7 /*onDayOfMonth*/,
1732  8 /*atTimeCode*/,
1733  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1734  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1735  0 /*letterIndex ("")*/,
1736  },
1737  // Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
1738  {
1739  -39 /*fromYearTiny (2061)*/,
1740  -39 /*toYearTiny (2061)*/,
1741  1 /*inMonth*/,
1742  0 /*onDayOfWeek*/,
1743  16 /*onDayOfMonth*/,
1744  12 /*atTimeCode*/,
1745  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1746  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1747  0 /*letterIndex ("")*/,
1748  },
1749  // Rule Morocco 2061 only - Feb 27 2:00 0 -
1750  {
1751  -39 /*fromYearTiny (2061)*/,
1752  -39 /*toYearTiny (2061)*/,
1753  2 /*inMonth*/,
1754  0 /*onDayOfWeek*/,
1755  27 /*onDayOfMonth*/,
1756  8 /*atTimeCode*/,
1757  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1758  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1759  0 /*letterIndex ("")*/,
1760  },
1761  // Rule Morocco 2062 only - Jan 8 3:00 -1:00 -
1762  {
1763  -38 /*fromYearTiny (2062)*/,
1764  -38 /*toYearTiny (2062)*/,
1765  1 /*inMonth*/,
1766  0 /*onDayOfWeek*/,
1767  8 /*onDayOfMonth*/,
1768  12 /*atTimeCode*/,
1769  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1770  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1771  0 /*letterIndex ("")*/,
1772  },
1773  // Rule Morocco 2062 only - Feb 12 2:00 0 -
1774  {
1775  -38 /*fromYearTiny (2062)*/,
1776  -38 /*toYearTiny (2062)*/,
1777  2 /*inMonth*/,
1778  0 /*onDayOfWeek*/,
1779  12 /*onDayOfMonth*/,
1780  8 /*atTimeCode*/,
1781  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1782  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1783  0 /*letterIndex ("")*/,
1784  },
1785  // Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
1786  {
1787  -38 /*fromYearTiny (2062)*/,
1788  -38 /*toYearTiny (2062)*/,
1789  12 /*inMonth*/,
1790  0 /*onDayOfWeek*/,
1791  31 /*onDayOfMonth*/,
1792  12 /*atTimeCode*/,
1793  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1794  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1795  0 /*letterIndex ("")*/,
1796  },
1797  // Rule Morocco 2063 only - Feb 4 2:00 0 -
1798  {
1799  -37 /*fromYearTiny (2063)*/,
1800  -37 /*toYearTiny (2063)*/,
1801  2 /*inMonth*/,
1802  0 /*onDayOfWeek*/,
1803  4 /*onDayOfMonth*/,
1804  8 /*atTimeCode*/,
1805  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1806  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1807  0 /*letterIndex ("")*/,
1808  },
1809  // Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
1810  {
1811  -37 /*fromYearTiny (2063)*/,
1812  -37 /*toYearTiny (2063)*/,
1813  12 /*inMonth*/,
1814  0 /*onDayOfWeek*/,
1815  16 /*onDayOfMonth*/,
1816  12 /*atTimeCode*/,
1817  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1818  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1819  0 /*letterIndex ("")*/,
1820  },
1821  // Rule Morocco 2064 only - Jan 27 2:00 0 -
1822  {
1823  -36 /*fromYearTiny (2064)*/,
1824  -36 /*toYearTiny (2064)*/,
1825  1 /*inMonth*/,
1826  0 /*onDayOfWeek*/,
1827  27 /*onDayOfMonth*/,
1828  8 /*atTimeCode*/,
1829  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1830  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1831  0 /*letterIndex ("")*/,
1832  },
1833  // Rule Morocco 2064 only - Dec 7 3:00 -1:00 -
1834  {
1835  -36 /*fromYearTiny (2064)*/,
1836  -36 /*toYearTiny (2064)*/,
1837  12 /*inMonth*/,
1838  0 /*onDayOfWeek*/,
1839  7 /*onDayOfMonth*/,
1840  12 /*atTimeCode*/,
1841  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1842  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1843  0 /*letterIndex ("")*/,
1844  },
1845  // Rule Morocco 2065 only - Jan 11 2:00 0 -
1846  {
1847  -35 /*fromYearTiny (2065)*/,
1848  -35 /*toYearTiny (2065)*/,
1849  1 /*inMonth*/,
1850  0 /*onDayOfWeek*/,
1851  11 /*onDayOfMonth*/,
1852  8 /*atTimeCode*/,
1853  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1854  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1855  0 /*letterIndex ("")*/,
1856  },
1857  // Rule Morocco 2065 only - Nov 22 3:00 -1:00 -
1858  {
1859  -35 /*fromYearTiny (2065)*/,
1860  -35 /*toYearTiny (2065)*/,
1861  11 /*inMonth*/,
1862  0 /*onDayOfWeek*/,
1863  22 /*onDayOfMonth*/,
1864  12 /*atTimeCode*/,
1865  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1866  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1867  0 /*letterIndex ("")*/,
1868  },
1869  // Rule Morocco 2066 only - Jan 3 2:00 0 -
1870  {
1871  -34 /*fromYearTiny (2066)*/,
1872  -34 /*toYearTiny (2066)*/,
1873  1 /*inMonth*/,
1874  0 /*onDayOfWeek*/,
1875  3 /*onDayOfMonth*/,
1876  8 /*atTimeCode*/,
1877  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1878  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1879  0 /*letterIndex ("")*/,
1880  },
1881  // Rule Morocco 2066 only - Nov 14 3:00 -1:00 -
1882  {
1883  -34 /*fromYearTiny (2066)*/,
1884  -34 /*toYearTiny (2066)*/,
1885  11 /*inMonth*/,
1886  0 /*onDayOfWeek*/,
1887  14 /*onDayOfMonth*/,
1888  12 /*atTimeCode*/,
1889  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1890  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1891  0 /*letterIndex ("")*/,
1892  },
1893  // Rule Morocco 2066 only - Dec 26 2:00 0 -
1894  {
1895  -34 /*fromYearTiny (2066)*/,
1896  -34 /*toYearTiny (2066)*/,
1897  12 /*inMonth*/,
1898  0 /*onDayOfWeek*/,
1899  26 /*onDayOfMonth*/,
1900  8 /*atTimeCode*/,
1901  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1902  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1903  0 /*letterIndex ("")*/,
1904  },
1905  // Rule Morocco 2067 only - Nov 6 3:00 -1:00 -
1906  {
1907  -33 /*fromYearTiny (2067)*/,
1908  -33 /*toYearTiny (2067)*/,
1909  11 /*inMonth*/,
1910  0 /*onDayOfWeek*/,
1911  6 /*onDayOfMonth*/,
1912  12 /*atTimeCode*/,
1913  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1914  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1915  0 /*letterIndex ("")*/,
1916  },
1917  // Rule Morocco 2067 only - Dec 11 2:00 0 -
1918  {
1919  -33 /*fromYearTiny (2067)*/,
1920  -33 /*toYearTiny (2067)*/,
1921  12 /*inMonth*/,
1922  0 /*onDayOfWeek*/,
1923  11 /*onDayOfMonth*/,
1924  8 /*atTimeCode*/,
1925  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1926  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1927  0 /*letterIndex ("")*/,
1928  },
1929  // Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
1930  {
1931  -32 /*fromYearTiny (2068)*/,
1932  -32 /*toYearTiny (2068)*/,
1933  10 /*inMonth*/,
1934  0 /*onDayOfWeek*/,
1935  21 /*onDayOfMonth*/,
1936  12 /*atTimeCode*/,
1937  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1938  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1939  0 /*letterIndex ("")*/,
1940  },
1941  // Rule Morocco 2068 only - Dec 2 2:00 0 -
1942  {
1943  -32 /*fromYearTiny (2068)*/,
1944  -32 /*toYearTiny (2068)*/,
1945  12 /*inMonth*/,
1946  0 /*onDayOfWeek*/,
1947  2 /*onDayOfMonth*/,
1948  8 /*atTimeCode*/,
1949  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1950  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1951  0 /*letterIndex ("")*/,
1952  },
1953  // Rule Morocco 2069 only - Oct 13 3:00 -1:00 -
1954  {
1955  -31 /*fromYearTiny (2069)*/,
1956  -31 /*toYearTiny (2069)*/,
1957  10 /*inMonth*/,
1958  0 /*onDayOfWeek*/,
1959  13 /*onDayOfMonth*/,
1960  12 /*atTimeCode*/,
1961  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1962  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1963  0 /*letterIndex ("")*/,
1964  },
1965  // Rule Morocco 2069 only - Nov 17 2:00 0 -
1966  {
1967  -31 /*fromYearTiny (2069)*/,
1968  -31 /*toYearTiny (2069)*/,
1969  11 /*inMonth*/,
1970  0 /*onDayOfWeek*/,
1971  17 /*onDayOfMonth*/,
1972  8 /*atTimeCode*/,
1973  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1974  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1975  0 /*letterIndex ("")*/,
1976  },
1977  // Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
1978  {
1979  -30 /*fromYearTiny (2070)*/,
1980  -30 /*toYearTiny (2070)*/,
1981  10 /*inMonth*/,
1982  0 /*onDayOfWeek*/,
1983  5 /*onDayOfMonth*/,
1984  12 /*atTimeCode*/,
1985  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1986  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
1987  0 /*letterIndex ("")*/,
1988  },
1989  // Rule Morocco 2070 only - Nov 9 2:00 0 -
1990  {
1991  -30 /*fromYearTiny (2070)*/,
1992  -30 /*toYearTiny (2070)*/,
1993  11 /*inMonth*/,
1994  0 /*onDayOfWeek*/,
1995  9 /*onDayOfMonth*/,
1996  8 /*atTimeCode*/,
1997  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1998  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1999  0 /*letterIndex ("")*/,
2000  },
2001  // Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
2002  {
2003  -29 /*fromYearTiny (2071)*/,
2004  -29 /*toYearTiny (2071)*/,
2005  9 /*inMonth*/,
2006  0 /*onDayOfWeek*/,
2007  20 /*onDayOfMonth*/,
2008  12 /*atTimeCode*/,
2009  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2010  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2011  0 /*letterIndex ("")*/,
2012  },
2013  // Rule Morocco 2071 only - Nov 1 2:00 0 -
2014  {
2015  -29 /*fromYearTiny (2071)*/,
2016  -29 /*toYearTiny (2071)*/,
2017  11 /*inMonth*/,
2018  0 /*onDayOfWeek*/,
2019  1 /*onDayOfMonth*/,
2020  8 /*atTimeCode*/,
2021  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2022  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2023  0 /*letterIndex ("")*/,
2024  },
2025  // Rule Morocco 2072 only - Sep 11 3:00 -1:00 -
2026  {
2027  -28 /*fromYearTiny (2072)*/,
2028  -28 /*toYearTiny (2072)*/,
2029  9 /*inMonth*/,
2030  0 /*onDayOfWeek*/,
2031  11 /*onDayOfMonth*/,
2032  12 /*atTimeCode*/,
2033  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2034  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2035  0 /*letterIndex ("")*/,
2036  },
2037  // Rule Morocco 2072 only - Oct 16 2:00 0 -
2038  {
2039  -28 /*fromYearTiny (2072)*/,
2040  -28 /*toYearTiny (2072)*/,
2041  10 /*inMonth*/,
2042  0 /*onDayOfWeek*/,
2043  16 /*onDayOfMonth*/,
2044  8 /*atTimeCode*/,
2045  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2046  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2047  0 /*letterIndex ("")*/,
2048  },
2049  // Rule Morocco 2073 only - Aug 27 3:00 -1:00 -
2050  {
2051  -27 /*fromYearTiny (2073)*/,
2052  -27 /*toYearTiny (2073)*/,
2053  8 /*inMonth*/,
2054  0 /*onDayOfWeek*/,
2055  27 /*onDayOfMonth*/,
2056  12 /*atTimeCode*/,
2057  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2058  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2059  0 /*letterIndex ("")*/,
2060  },
2061  // Rule Morocco 2073 only - Oct 8 2:00 0 -
2062  {
2063  -27 /*fromYearTiny (2073)*/,
2064  -27 /*toYearTiny (2073)*/,
2065  10 /*inMonth*/,
2066  0 /*onDayOfWeek*/,
2067  8 /*onDayOfMonth*/,
2068  8 /*atTimeCode*/,
2069  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2070  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2071  0 /*letterIndex ("")*/,
2072  },
2073  // Rule Morocco 2074 only - Aug 19 3:00 -1:00 -
2074  {
2075  -26 /*fromYearTiny (2074)*/,
2076  -26 /*toYearTiny (2074)*/,
2077  8 /*inMonth*/,
2078  0 /*onDayOfWeek*/,
2079  19 /*onDayOfMonth*/,
2080  12 /*atTimeCode*/,
2081  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2082  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2083  0 /*letterIndex ("")*/,
2084  },
2085  // Rule Morocco 2074 only - Sep 30 2:00 0 -
2086  {
2087  -26 /*fromYearTiny (2074)*/,
2088  -26 /*toYearTiny (2074)*/,
2089  9 /*inMonth*/,
2090  0 /*onDayOfWeek*/,
2091  30 /*onDayOfMonth*/,
2092  8 /*atTimeCode*/,
2093  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2094  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2095  0 /*letterIndex ("")*/,
2096  },
2097  // Rule Morocco 2075 only - Aug 11 3:00 -1:00 -
2098  {
2099  -25 /*fromYearTiny (2075)*/,
2100  -25 /*toYearTiny (2075)*/,
2101  8 /*inMonth*/,
2102  0 /*onDayOfWeek*/,
2103  11 /*onDayOfMonth*/,
2104  12 /*atTimeCode*/,
2105  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2106  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2107  0 /*letterIndex ("")*/,
2108  },
2109  // Rule Morocco 2075 only - Sep 15 2:00 0 -
2110  {
2111  -25 /*fromYearTiny (2075)*/,
2112  -25 /*toYearTiny (2075)*/,
2113  9 /*inMonth*/,
2114  0 /*onDayOfWeek*/,
2115  15 /*onDayOfMonth*/,
2116  8 /*atTimeCode*/,
2117  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2118  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2119  0 /*letterIndex ("")*/,
2120  },
2121  // Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
2122  {
2123  -24 /*fromYearTiny (2076)*/,
2124  -24 /*toYearTiny (2076)*/,
2125  7 /*inMonth*/,
2126  0 /*onDayOfWeek*/,
2127  26 /*onDayOfMonth*/,
2128  12 /*atTimeCode*/,
2129  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2130  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2131  0 /*letterIndex ("")*/,
2132  },
2133  // Rule Morocco 2076 only - Sep 6 2:00 0 -
2134  {
2135  -24 /*fromYearTiny (2076)*/,
2136  -24 /*toYearTiny (2076)*/,
2137  9 /*inMonth*/,
2138  0 /*onDayOfWeek*/,
2139  6 /*onDayOfMonth*/,
2140  8 /*atTimeCode*/,
2141  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2142  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2143  0 /*letterIndex ("")*/,
2144  },
2145  // Rule Morocco 2077 only - Jul 18 3:00 -1:00 -
2146  {
2147  -23 /*fromYearTiny (2077)*/,
2148  -23 /*toYearTiny (2077)*/,
2149  7 /*inMonth*/,
2150  0 /*onDayOfWeek*/,
2151  18 /*onDayOfMonth*/,
2152  12 /*atTimeCode*/,
2153  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2154  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2155  0 /*letterIndex ("")*/,
2156  },
2157  // Rule Morocco 2077 only - Aug 22 2:00 0 -
2158  {
2159  -23 /*fromYearTiny (2077)*/,
2160  -23 /*toYearTiny (2077)*/,
2161  8 /*inMonth*/,
2162  0 /*onDayOfWeek*/,
2163  22 /*onDayOfMonth*/,
2164  8 /*atTimeCode*/,
2165  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2166  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2167  0 /*letterIndex ("")*/,
2168  },
2169  // Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
2170  {
2171  -22 /*fromYearTiny (2078)*/,
2172  -22 /*toYearTiny (2078)*/,
2173  7 /*inMonth*/,
2174  0 /*onDayOfWeek*/,
2175  10 /*onDayOfMonth*/,
2176  12 /*atTimeCode*/,
2177  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2178  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2179  0 /*letterIndex ("")*/,
2180  },
2181  // Rule Morocco 2078 only - Aug 14 2:00 0 -
2182  {
2183  -22 /*fromYearTiny (2078)*/,
2184  -22 /*toYearTiny (2078)*/,
2185  8 /*inMonth*/,
2186  0 /*onDayOfWeek*/,
2187  14 /*onDayOfMonth*/,
2188  8 /*atTimeCode*/,
2189  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2190  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2191  0 /*letterIndex ("")*/,
2192  },
2193  // Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
2194  {
2195  -21 /*fromYearTiny (2079)*/,
2196  -21 /*toYearTiny (2079)*/,
2197  6 /*inMonth*/,
2198  0 /*onDayOfWeek*/,
2199  25 /*onDayOfMonth*/,
2200  12 /*atTimeCode*/,
2201  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2202  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2203  0 /*letterIndex ("")*/,
2204  },
2205  // Rule Morocco 2079 only - Aug 6 2:00 0 -
2206  {
2207  -21 /*fromYearTiny (2079)*/,
2208  -21 /*toYearTiny (2079)*/,
2209  8 /*inMonth*/,
2210  0 /*onDayOfWeek*/,
2211  6 /*onDayOfMonth*/,
2212  8 /*atTimeCode*/,
2213  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2214  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2215  0 /*letterIndex ("")*/,
2216  },
2217  // Rule Morocco 2080 only - Jun 16 3:00 -1:00 -
2218  {
2219  -20 /*fromYearTiny (2080)*/,
2220  -20 /*toYearTiny (2080)*/,
2221  6 /*inMonth*/,
2222  0 /*onDayOfWeek*/,
2223  16 /*onDayOfMonth*/,
2224  12 /*atTimeCode*/,
2225  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2226  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2227  0 /*letterIndex ("")*/,
2228  },
2229  // Rule Morocco 2080 only - Jul 21 2:00 0 -
2230  {
2231  -20 /*fromYearTiny (2080)*/,
2232  -20 /*toYearTiny (2080)*/,
2233  7 /*inMonth*/,
2234  0 /*onDayOfWeek*/,
2235  21 /*onDayOfMonth*/,
2236  8 /*atTimeCode*/,
2237  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2238  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2239  0 /*letterIndex ("")*/,
2240  },
2241  // Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
2242  {
2243  -19 /*fromYearTiny (2081)*/,
2244  -19 /*toYearTiny (2081)*/,
2245  6 /*inMonth*/,
2246  0 /*onDayOfWeek*/,
2247  1 /*onDayOfMonth*/,
2248  12 /*atTimeCode*/,
2249  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2250  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2251  0 /*letterIndex ("")*/,
2252  },
2253  // Rule Morocco 2081 only - Jul 13 2:00 0 -
2254  {
2255  -19 /*fromYearTiny (2081)*/,
2256  -19 /*toYearTiny (2081)*/,
2257  7 /*inMonth*/,
2258  0 /*onDayOfWeek*/,
2259  13 /*onDayOfMonth*/,
2260  8 /*atTimeCode*/,
2261  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2262  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2263  0 /*letterIndex ("")*/,
2264  },
2265  // Rule Morocco 2082 only - May 24 3:00 -1:00 -
2266  {
2267  -18 /*fromYearTiny (2082)*/,
2268  -18 /*toYearTiny (2082)*/,
2269  5 /*inMonth*/,
2270  0 /*onDayOfWeek*/,
2271  24 /*onDayOfMonth*/,
2272  12 /*atTimeCode*/,
2273  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2274  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2275  0 /*letterIndex ("")*/,
2276  },
2277  // Rule Morocco 2082 only - Jun 28 2:00 0 -
2278  {
2279  -18 /*fromYearTiny (2082)*/,
2280  -18 /*toYearTiny (2082)*/,
2281  6 /*inMonth*/,
2282  0 /*onDayOfWeek*/,
2283  28 /*onDayOfMonth*/,
2284  8 /*atTimeCode*/,
2285  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2286  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2287  0 /*letterIndex ("")*/,
2288  },
2289  // Rule Morocco 2083 only - May 16 3:00 -1:00 -
2290  {
2291  -17 /*fromYearTiny (2083)*/,
2292  -17 /*toYearTiny (2083)*/,
2293  5 /*inMonth*/,
2294  0 /*onDayOfWeek*/,
2295  16 /*onDayOfMonth*/,
2296  12 /*atTimeCode*/,
2297  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2298  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2299  0 /*letterIndex ("")*/,
2300  },
2301  // Rule Morocco 2083 only - Jun 20 2:00 0 -
2302  {
2303  -17 /*fromYearTiny (2083)*/,
2304  -17 /*toYearTiny (2083)*/,
2305  6 /*inMonth*/,
2306  0 /*onDayOfWeek*/,
2307  20 /*onDayOfMonth*/,
2308  8 /*atTimeCode*/,
2309  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2310  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2311  0 /*letterIndex ("")*/,
2312  },
2313  // Rule Morocco 2084 only - Apr 30 3:00 -1:00 -
2314  {
2315  -16 /*fromYearTiny (2084)*/,
2316  -16 /*toYearTiny (2084)*/,
2317  4 /*inMonth*/,
2318  0 /*onDayOfWeek*/,
2319  30 /*onDayOfMonth*/,
2320  12 /*atTimeCode*/,
2321  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2322  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2323  0 /*letterIndex ("")*/,
2324  },
2325  // Rule Morocco 2084 only - Jun 11 2:00 0 -
2326  {
2327  -16 /*fromYearTiny (2084)*/,
2328  -16 /*toYearTiny (2084)*/,
2329  6 /*inMonth*/,
2330  0 /*onDayOfWeek*/,
2331  11 /*onDayOfMonth*/,
2332  8 /*atTimeCode*/,
2333  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2334  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2335  0 /*letterIndex ("")*/,
2336  },
2337  // Rule Morocco 2085 only - Apr 22 3:00 -1:00 -
2338  {
2339  -15 /*fromYearTiny (2085)*/,
2340  -15 /*toYearTiny (2085)*/,
2341  4 /*inMonth*/,
2342  0 /*onDayOfWeek*/,
2343  22 /*onDayOfMonth*/,
2344  12 /*atTimeCode*/,
2345  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2346  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2347  0 /*letterIndex ("")*/,
2348  },
2349  // Rule Morocco 2085 only - May 27 2:00 0 -
2350  {
2351  -15 /*fromYearTiny (2085)*/,
2352  -15 /*toYearTiny (2085)*/,
2353  5 /*inMonth*/,
2354  0 /*onDayOfWeek*/,
2355  27 /*onDayOfMonth*/,
2356  8 /*atTimeCode*/,
2357  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2358  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2359  0 /*letterIndex ("")*/,
2360  },
2361  // Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
2362  {
2363  -14 /*fromYearTiny (2086)*/,
2364  -14 /*toYearTiny (2086)*/,
2365  4 /*inMonth*/,
2366  0 /*onDayOfWeek*/,
2367  14 /*onDayOfMonth*/,
2368  12 /*atTimeCode*/,
2369  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2370  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2371  0 /*letterIndex ("")*/,
2372  },
2373  // Rule Morocco 2086 only - May 19 2:00 0 -
2374  {
2375  -14 /*fromYearTiny (2086)*/,
2376  -14 /*toYearTiny (2086)*/,
2377  5 /*inMonth*/,
2378  0 /*onDayOfWeek*/,
2379  19 /*onDayOfMonth*/,
2380  8 /*atTimeCode*/,
2381  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2382  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2383  0 /*letterIndex ("")*/,
2384  },
2385  // Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
2386  {
2387  -13 /*fromYearTiny (2087)*/,
2388  -13 /*toYearTiny (2087)*/,
2389  3 /*inMonth*/,
2390  0 /*onDayOfWeek*/,
2391  30 /*onDayOfMonth*/,
2392  12 /*atTimeCode*/,
2393  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2394  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2395  0 /*letterIndex ("")*/,
2396  },
2397  // Rule Morocco 2087 only - May 11 2:00 0 -
2398  {
2399  -13 /*fromYearTiny (2087)*/,
2400  -13 /*toYearTiny (2087)*/,
2401  5 /*inMonth*/,
2402  0 /*onDayOfWeek*/,
2403  11 /*onDayOfMonth*/,
2404  8 /*atTimeCode*/,
2405  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2406  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2407  0 /*letterIndex ("")*/,
2408  },
2409 
2410 };
2411 
2412 const extended::Info::ZonePolicy kZonePolicyMorocco ACE_TIME_PROGMEM = {
2413  kZoneRulesMorocco /*rules*/,
2414  170 /*numRules*/,
2415 };
2416 
2417 //---------------------------------------------------------------------------
2418 // Policy name: Namibia
2419 // Rules: 4
2420 //---------------------------------------------------------------------------
2421 
2422 static const extended::Info::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
2423  // Anchor: Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
2424  {
2425  -127 /*fromYearTiny (-32767)*/,
2426  -127 /*toYearTiny (-32767)*/,
2427  1 /*inMonth*/,
2428  0 /*onDayOfWeek*/,
2429  1 /*onDayOfMonth*/,
2430  0 /*atTimeCode*/,
2431  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2432  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2433  1 /*letterIndex ("CAT")*/,
2434  },
2435  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
2436  {
2437  -106 /*fromYearTiny (1994)*/,
2438  -106 /*toYearTiny (1994)*/,
2439  3 /*inMonth*/,
2440  0 /*onDayOfWeek*/,
2441  21 /*onDayOfMonth*/,
2442  0 /*atTimeCode*/,
2443  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2444  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2445  4 /*letterIndex ("WAT")*/,
2446  },
2447  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
2448  {
2449  -106 /*fromYearTiny (1994)*/,
2450  -83 /*toYearTiny (2017)*/,
2451  9 /*inMonth*/,
2452  7 /*onDayOfWeek*/,
2453  1 /*onDayOfMonth*/,
2454  8 /*atTimeCode*/,
2455  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2456  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2457  1 /*letterIndex ("CAT")*/,
2458  },
2459  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
2460  {
2461  -105 /*fromYearTiny (1995)*/,
2462  -83 /*toYearTiny (2017)*/,
2463  4 /*inMonth*/,
2464  7 /*onDayOfWeek*/,
2465  1 /*onDayOfMonth*/,
2466  8 /*atTimeCode*/,
2467  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2468  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2469  4 /*letterIndex ("WAT")*/,
2470  },
2471 
2472 };
2473 
2474 const extended::Info::ZonePolicy kZonePolicyNamibia ACE_TIME_PROGMEM = {
2475  kZoneRulesNamibia /*rules*/,
2476  4 /*numRules*/,
2477 };
2478 
2479 //---------------------------------------------------------------------------
2480 // Policy name: Port
2481 // Rules: 6
2482 //---------------------------------------------------------------------------
2483 
2484 static const extended::Info::ZoneRule kZoneRulesPort[] ACE_TIME_PROGMEM = {
2485  // Anchor: Rule Port 1978 only - Oct 1 1:00s 0 -
2486  {
2487  -127 /*fromYearTiny (-32767)*/,
2488  -127 /*toYearTiny (-32767)*/,
2489  1 /*inMonth*/,
2490  0 /*onDayOfWeek*/,
2491  1 /*onDayOfMonth*/,
2492  0 /*atTimeCode*/,
2493  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2494  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2495  0 /*letterIndex ("")*/,
2496  },
2497  // Rule Port 1978 1980 - Apr Sun>=1 1:00s 1:00 S
2498  {
2499  -122 /*fromYearTiny (1978)*/,
2500  -120 /*toYearTiny (1980)*/,
2501  4 /*inMonth*/,
2502  7 /*onDayOfWeek*/,
2503  1 /*onDayOfMonth*/,
2504  4 /*atTimeCode*/,
2505  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2506  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2507  3 /*letterIndex ("S")*/,
2508  },
2509  // Rule Port 1978 only - Oct 1 1:00s 0 -
2510  {
2511  -122 /*fromYearTiny (1978)*/,
2512  -122 /*toYearTiny (1978)*/,
2513  10 /*inMonth*/,
2514  0 /*onDayOfWeek*/,
2515  1 /*onDayOfMonth*/,
2516  4 /*atTimeCode*/,
2517  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2518  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2519  0 /*letterIndex ("")*/,
2520  },
2521  // Rule Port 1979 1980 - Sep lastSun 1:00s 0 -
2522  {
2523  -121 /*fromYearTiny (1979)*/,
2524  -120 /*toYearTiny (1980)*/,
2525  9 /*inMonth*/,
2526  7 /*onDayOfWeek*/,
2527  0 /*onDayOfMonth*/,
2528  4 /*atTimeCode*/,
2529  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2530  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2531  0 /*letterIndex ("")*/,
2532  },
2533  // Rule Port 1981 1986 - Mar lastSun 0:00s 1:00 S
2534  {
2535  -119 /*fromYearTiny (1981)*/,
2536  -114 /*toYearTiny (1986)*/,
2537  3 /*inMonth*/,
2538  7 /*onDayOfWeek*/,
2539  0 /*onDayOfMonth*/,
2540  0 /*atTimeCode*/,
2541  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2542  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2543  3 /*letterIndex ("S")*/,
2544  },
2545  // Rule Port 1981 1985 - Sep lastSun 0:00s 0 -
2546  {
2547  -119 /*fromYearTiny (1981)*/,
2548  -115 /*toYearTiny (1985)*/,
2549  9 /*inMonth*/,
2550  7 /*onDayOfWeek*/,
2551  0 /*onDayOfMonth*/,
2552  0 /*atTimeCode*/,
2553  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2554  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2555  0 /*letterIndex ("")*/,
2556  },
2557 
2558 };
2559 
2560 const extended::Info::ZonePolicy kZonePolicyPort ACE_TIME_PROGMEM = {
2561  kZoneRulesPort /*rules*/,
2562  6 /*numRules*/,
2563 };
2564 
2565 //---------------------------------------------------------------------------
2566 // Policy name: US
2567 // Rules: 7
2568 //---------------------------------------------------------------------------
2569 
2570 static const extended::Info::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
2571  // Anchor: Rule US 1967 2006 - Oct lastSun 2:00 0 S
2572  {
2573  -127 /*fromYearTiny (-32767)*/,
2574  -127 /*toYearTiny (-32767)*/,
2575  1 /*inMonth*/,
2576  0 /*onDayOfWeek*/,
2577  1 /*onDayOfMonth*/,
2578  0 /*atTimeCode*/,
2579  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2580  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2581  3 /*letterIndex ("S")*/,
2582  },
2583  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
2584  {
2585  -127 /*fromYearTiny (1967)*/,
2586  -94 /*toYearTiny (2006)*/,
2587  10 /*inMonth*/,
2588  7 /*onDayOfWeek*/,
2589  0 /*onDayOfMonth*/,
2590  8 /*atTimeCode*/,
2591  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2592  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2593  3 /*letterIndex ("S")*/,
2594  },
2595  // Rule US 1975 only - Feb lastSun 2:00 1:00 D
2596  {
2597  -125 /*fromYearTiny (1975)*/,
2598  -125 /*toYearTiny (1975)*/,
2599  2 /*inMonth*/,
2600  7 /*onDayOfWeek*/,
2601  0 /*onDayOfMonth*/,
2602  8 /*atTimeCode*/,
2603  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2604  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2605  2 /*letterIndex ("D")*/,
2606  },
2607  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
2608  {
2609  -124 /*fromYearTiny (1976)*/,
2610  -114 /*toYearTiny (1986)*/,
2611  4 /*inMonth*/,
2612  7 /*onDayOfWeek*/,
2613  0 /*onDayOfMonth*/,
2614  8 /*atTimeCode*/,
2615  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2616  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2617  2 /*letterIndex ("D")*/,
2618  },
2619  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
2620  {
2621  -113 /*fromYearTiny (1987)*/,
2622  -94 /*toYearTiny (2006)*/,
2623  4 /*inMonth*/,
2624  7 /*onDayOfWeek*/,
2625  1 /*onDayOfMonth*/,
2626  8 /*atTimeCode*/,
2627  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2628  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2629  2 /*letterIndex ("D")*/,
2630  },
2631  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
2632  {
2633  -93 /*fromYearTiny (2007)*/,
2634  126 /*toYearTiny (32766)*/,
2635  3 /*inMonth*/,
2636  7 /*onDayOfWeek*/,
2637  8 /*onDayOfMonth*/,
2638  8 /*atTimeCode*/,
2639  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2640  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2641  2 /*letterIndex ("D")*/,
2642  },
2643  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
2644  {
2645  -93 /*fromYearTiny (2007)*/,
2646  126 /*toYearTiny (32766)*/,
2647  11 /*inMonth*/,
2648  7 /*onDayOfWeek*/,
2649  1 /*onDayOfMonth*/,
2650  8 /*atTimeCode*/,
2651  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2652  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2653  3 /*letterIndex ("S")*/,
2654  },
2655 
2656 };
2657 
2658 const extended::Info::ZonePolicy kZonePolicyUS ACE_TIME_PROGMEM = {
2659  kZoneRulesUS /*rules*/,
2660  7 /*numRules*/,
2661 };
2662 
2663 //---------------------------------------------------------------------------
2664 // Policy name: Vanc
2665 // Rules: 4
2666 //---------------------------------------------------------------------------
2667 
2668 static const extended::Info::ZoneRule kZoneRulesVanc[] ACE_TIME_PROGMEM = {
2669  // Anchor: Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S
2670  {
2671  -127 /*fromYearTiny (-32767)*/,
2672  -127 /*toYearTiny (-32767)*/,
2673  1 /*inMonth*/,
2674  0 /*onDayOfWeek*/,
2675  1 /*onDayOfMonth*/,
2676  0 /*atTimeCode*/,
2677  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2678  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2679  3 /*letterIndex ("S")*/,
2680  },
2681  // Rule Vanc 1946 1986 - Apr lastSun 2:00 1:00 D
2682  {
2683  -127 /*fromYearTiny (1946)*/,
2684  -114 /*toYearTiny (1986)*/,
2685  4 /*inMonth*/,
2686  7 /*onDayOfWeek*/,
2687  0 /*onDayOfMonth*/,
2688  8 /*atTimeCode*/,
2689  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2690  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2691  2 /*letterIndex ("D")*/,
2692  },
2693  // Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S
2694  {
2695  -127 /*fromYearTiny (1947)*/,
2696  -127 /*toYearTiny (1961)*/,
2697  9 /*inMonth*/,
2698  7 /*onDayOfWeek*/,
2699  0 /*onDayOfMonth*/,
2700  8 /*atTimeCode*/,
2701  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2702  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2703  3 /*letterIndex ("S")*/,
2704  },
2705  // Rule Vanc 1962 2006 - Oct lastSun 2:00 0 S
2706  {
2707  -127 /*fromYearTiny (1962)*/,
2708  -94 /*toYearTiny (2006)*/,
2709  10 /*inMonth*/,
2710  7 /*onDayOfWeek*/,
2711  0 /*onDayOfMonth*/,
2712  8 /*atTimeCode*/,
2713  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2714  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2715  3 /*letterIndex ("S")*/,
2716  },
2717 
2718 };
2719 
2720 const extended::Info::ZonePolicy kZonePolicyVanc ACE_TIME_PROGMEM = {
2721  kZoneRulesVanc /*rules*/,
2722  4 /*numRules*/,
2723 };
2724 
2725 //---------------------------------------------------------------------------
2726 // Policy name: WS
2727 // Rules: 6
2728 //---------------------------------------------------------------------------
2729 
2730 static const extended::Info::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = {
2731  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
2732  {
2733  -127 /*fromYearTiny (-32767)*/,
2734  -127 /*toYearTiny (-32767)*/,
2735  1 /*inMonth*/,
2736  0 /*onDayOfWeek*/,
2737  1 /*onDayOfMonth*/,
2738  0 /*atTimeCode*/,
2739  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2740  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2741  0 /*letterIndex ("")*/,
2742  },
2743  // Rule WS 2010 only - Sep lastSun 0:00 1 -
2744  {
2745  -90 /*fromYearTiny (2010)*/,
2746  -90 /*toYearTiny (2010)*/,
2747  9 /*inMonth*/,
2748  7 /*onDayOfWeek*/,
2749  0 /*onDayOfMonth*/,
2750  0 /*atTimeCode*/,
2751  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2752  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2753  0 /*letterIndex ("")*/,
2754  },
2755  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
2756  {
2757  -89 /*fromYearTiny (2011)*/,
2758  -89 /*toYearTiny (2011)*/,
2759  4 /*inMonth*/,
2760  6 /*onDayOfWeek*/,
2761  1 /*onDayOfMonth*/,
2762  16 /*atTimeCode*/,
2763  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2764  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2765  0 /*letterIndex ("")*/,
2766  },
2767  // Rule WS 2011 only - Sep lastSat 3:00 1 -
2768  {
2769  -89 /*fromYearTiny (2011)*/,
2770  -89 /*toYearTiny (2011)*/,
2771  9 /*inMonth*/,
2772  6 /*onDayOfWeek*/,
2773  0 /*onDayOfMonth*/,
2774  12 /*atTimeCode*/,
2775  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2776  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2777  0 /*letterIndex ("")*/,
2778  },
2779  // Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
2780  {
2781  -88 /*fromYearTiny (2012)*/,
2782  -79 /*toYearTiny (2021)*/,
2783  4 /*inMonth*/,
2784  7 /*onDayOfWeek*/,
2785  1 /*onDayOfMonth*/,
2786  16 /*atTimeCode*/,
2787  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2788  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2789  0 /*letterIndex ("")*/,
2790  },
2791  // Rule WS 2012 2020 - Sep lastSun 3:00 1 -
2792  {
2793  -88 /*fromYearTiny (2012)*/,
2794  -80 /*toYearTiny (2020)*/,
2795  9 /*inMonth*/,
2796  7 /*onDayOfWeek*/,
2797  0 /*onDayOfMonth*/,
2798  12 /*atTimeCode*/,
2799  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2800  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2801  0 /*letterIndex ("")*/,
2802  },
2803 
2804 };
2805 
2806 const extended::Info::ZonePolicy kZonePolicyWS ACE_TIME_PROGMEM = {
2807  kZoneRulesWS /*rules*/,
2808  6 /*numRules*/,
2809 };
2810 
2811 //---------------------------------------------------------------------------
2812 // Policy name: Winn
2813 // Rules: 5
2814 //---------------------------------------------------------------------------
2815 
2816 static const extended::Info::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
2817  // Anchor: Rule Winn 1963 only - Sep 22 2:00 0 S
2818  {
2819  -127 /*fromYearTiny (-32767)*/,
2820  -127 /*toYearTiny (-32767)*/,
2821  1 /*inMonth*/,
2822  0 /*onDayOfWeek*/,
2823  1 /*onDayOfMonth*/,
2824  0 /*atTimeCode*/,
2825  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2826  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2827  3 /*letterIndex ("S")*/,
2828  },
2829  // Rule Winn 1963 only - Sep 22 2:00 0 S
2830  {
2831  -127 /*fromYearTiny (1963)*/,
2832  -127 /*toYearTiny (1963)*/,
2833  9 /*inMonth*/,
2834  0 /*onDayOfWeek*/,
2835  22 /*onDayOfMonth*/,
2836  8 /*atTimeCode*/,
2837  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2838  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2839  3 /*letterIndex ("S")*/,
2840  },
2841  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
2842  {
2843  -127 /*fromYearTiny (1966)*/,
2844  -114 /*toYearTiny (1986)*/,
2845  4 /*inMonth*/,
2846  7 /*onDayOfWeek*/,
2847  0 /*onDayOfMonth*/,
2848  8 /*atTimeCode*/,
2849  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2850  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2851  2 /*letterIndex ("D")*/,
2852  },
2853  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
2854  {
2855  -127 /*fromYearTiny (1966)*/,
2856  -95 /*toYearTiny (2005)*/,
2857  10 /*inMonth*/,
2858  7 /*onDayOfWeek*/,
2859  0 /*onDayOfMonth*/,
2860  8 /*atTimeCode*/,
2861  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2862  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2863  3 /*letterIndex ("S")*/,
2864  },
2865  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
2866  {
2867  -113 /*fromYearTiny (1987)*/,
2868  -95 /*toYearTiny (2005)*/,
2869  4 /*inMonth*/,
2870  7 /*onDayOfWeek*/,
2871  1 /*onDayOfMonth*/,
2872  8 /*atTimeCode*/,
2873  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2874  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2875  2 /*letterIndex ("D")*/,
2876  },
2877 
2878 };
2879 
2880 const extended::Info::ZonePolicy kZonePolicyWinn ACE_TIME_PROGMEM = {
2881  kZoneRulesWinn /*rules*/,
2882  5 /*numRules*/,
2883 };
2884 
2885 
2886 
2887 }
2888 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...