MailChimp for WordPress - Version 4.4

Version Description

Download this release

Release Info

Developer DvanKooten
Plugin Icon 128x128 MailChimp for WordPress
Version 4.4
Comparing to
See all releases

Code changes from version 4.3.3 to 4.4

CHANGELOG.md CHANGED
@@ -1,6 +1,27 @@
1
  Changelog
2
  =========
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  #### 4.3.3 - December 31, 2018
5
 
6
  **Fixes**
@@ -31,8 +52,8 @@ Changelog
31
 
32
  **Additions**
33
 
34
- - Added `MC4WP_API_KEY` PHP constant which can be used to set your MailChimp API key.
35
- - Add `mc4wp_mailchimp_list_limit` filter hook to modify the maximum number of MailChimp lists to fetch. Defaults to 200.
36
 
37
  **Improvements**
38
 
@@ -45,8 +66,8 @@ Changelog
45
  **Improvements**
46
 
47
  - Only re-add subscriber to list if we want to re-trigger a double opt-in confirmation email.
48
- - Change Gravity Forms field name to "MailChimp for WordPress"
49
- - Get rid of cached result of MailChimp API connection.
50
 
51
 
52
  #### 4.2.4 - July 9, 2018
@@ -55,12 +76,12 @@ Changelog
55
 
56
  - Ensure type-safety on some global variables.
57
  - Stop showing trashed forms immediately.
58
- - Pre-check MailChimp list when creating a new form if there is only 1 list.
59
  - Send `null` for unknown values in usage tracking data (only when opted-in).
60
 
61
  **Additions**
62
 
63
- - Add methods for accessing MailChimp's e-commerce promo code endpoints to API class.
64
 
65
 
66
  #### 4.2.3 - June 11, 2018
@@ -118,12 +139,12 @@ Changelog
118
  - Improved [conditional fields logic](https://kb.mc4wp.com/conditional-fields-elements/).
119
  - Debug log now includes request & response data.
120
  - [Form JavaScript events](https://kb.mc4wp.com/javascript-form-events/) are fired in an isolated thread now, to prevent errors in event callbacks from breaking form functionality.
121
- - Don't send empty field values to MailChimp when updating subscribers.
122
  - Show interest grouping ID in list overview on settings page.
123
 
124
  **Fixes**
125
 
126
- - Ninja Forms export checkbox would always state "checked" when form contained a MailChimp sign-up checkbox.
127
 
128
 
129
 
@@ -131,8 +152,8 @@ Changelog
131
 
132
  **Fixes**
133
 
134
- - Dropdown fields with special characters were not properly passed to MailChimp.
135
- - Interest groups with an all-numeric ID were not properly passed to MailChimp.
136
 
137
  **Improvements**
138
 
@@ -186,7 +207,7 @@ Changelog
186
 
187
  **Fixes**
188
 
189
- - Filter out empty array values when overriding selected MailChimp lists via `_mc4wp_lists`.
190
 
191
  **Improvements**
192
 
@@ -202,11 +223,11 @@ Changelog
202
  **Improvements**
203
 
204
  - Remove unused options from Ninja Forms integration.
205
- - Now logging all sign-ups from Ninja Forms integrations when using [MailChimp for WordPress Premium](https://mc4wp.com/premium-features/).
206
 
207
  **Additions**
208
 
209
- - Added Gravity Forms integration. You can now integrate with Gravity Forms by adding the "MailChimp" field to your forms.
210
 
211
 
212
  #### 4.1.9 - September 19, 2017
@@ -242,7 +263,7 @@ Changelog
242
 
243
  **Improvements**
244
 
245
- - Show Akamai reference number when an API request is blocked by MailChimp's firewall.
246
  - Minor output buffering improvements in form previewer.
247
 
248
 
@@ -256,8 +277,8 @@ Changelog
256
 
257
  **Improvements**
258
 
259
- - Fire action hook `mc4wp_form_updated_subscriber` whenever a form was used to update a subscriber in MailChimp.
260
- - Increase browser timeout for AJAX request when fetching MailChimp lists.
261
 
262
  **Additions**
263
 
@@ -278,8 +299,8 @@ Changelog
278
 
279
  **Improvements**
280
 
281
- - Randomise time of cron event that renews MailChimp lists.
282
- - Always try to show MailChimp list info when API key is given.
283
 
284
 
285
  #### 4.1.2 - May 8, 2017
@@ -290,7 +311,7 @@ Changelog
290
 
291
  **Improvements**
292
 
293
- - Improved MailChimp list fetching & memory usage for accounts with many lists.
294
  - Show error message when fetching lists fails.
295
  - Updated plugin translations.
296
 
@@ -326,7 +347,7 @@ Changelog
326
 
327
  **Improvements**
328
 
329
- - Ensure fields are HTML decoded before sending to MailChimp.
330
  - Better OptimizePress compatibility.
331
  - Show all address-type fields as required when form contains 1 or more fields of the same address group.
332
 
@@ -358,7 +379,7 @@ Changelog
358
 
359
  **Improvements**
360
 
361
- - Add `$args` parameter to `API::get_lists_activity` method. Relates to the [MailChimp Activity](https://wordpress.org/plugins/mc4wp-activity/) plugin.
362
 
363
 
364
  #### 4.0.10 - December 6, 2016
@@ -383,7 +404,7 @@ Changelog
383
 
384
  - Improved handling of large debug logs.
385
  - Improved error messages when writing exceptions to debug log.
386
- - Show notice when form is missing required MailChimp fields.
387
  - Custom form integration now handles arrays with 1-level depth. Thanks to [Mardari Igor](https://github.com/GarryOne).
388
  - You can now use nested tags in your form code, eg `{data key="utm_source" default="{current_path}"}`
389
 
@@ -432,8 +453,8 @@ Changelog
432
 
433
  **Improvements**
434
 
435
- - Fetch MailChimp lists over AJAX, to speed up perceived performance (especially when your account has many lists).
436
- - Periodically fetch MailChimp lists, so cache is always fresh.
437
  - Improved `<label>` element accessibility for checkbox integrations.
438
  - Stop using double underscore prefix in function names, as these are reserved in PHP 7.
439
  - `{post}` and `{user}` shortcodes now accept a `default` parameter.
@@ -441,7 +462,7 @@ Changelog
441
  **Additions**
442
 
443
  - Add [MemberPress](https://www.memberpress.com/) integration.
444
- - Add missing e-commerce related API methods for next week's [WooCommerce MailChimp e-commerce integration](https://mc4wp.com/kb/what-is-ecommerce360/) release.
445
 
446
 
447
  #### 4.0.4 - September 7, 2016
@@ -450,10 +471,10 @@ Changelog
450
 
451
  - Allow re-running previous migrations by visiting a certain admin URL.
452
  - Do not show checkboxes option for fields that only accept a single value.
453
- - Write field specific errors to debug log when MailChimp denies a sign-up request.
454
  - Write to debug log when custom integrations can not find an EMAIL field.
455
- - Differentiate between connection & authorization errors when testing connection to MailChimp.
456
- - Bump limit of number of MailChimp lists to fetch from 100 to 500.
457
 
458
 
459
  #### 4.0.3 - August 24, 2016
@@ -464,7 +485,7 @@ Changelog
464
 
465
  **Improvements**
466
 
467
- - Show connection errors on MailChimp settings page.
468
 
469
  **Additions**
470
 
@@ -476,7 +497,7 @@ Changelog
476
 
477
  **Fixes**
478
 
479
- - Hidden fields which referenced interest groups by name were not sent to MailChimp.
480
  - Adding hidden field to form would reset value on every change.
481
 
482
  **Improvements**
@@ -486,11 +507,11 @@ Changelog
486
 
487
  #### 4.0 & 4.0.1 - August 9, 2016
488
 
489
- This release updates the plugin to version 3 of the MailChimp API. Please [read through the upgrade guide](https://mc4wp.com/kb/upgrading-to-4-0/) before updating to make sure things keep working as expected for you.
490
 
491
  **Changes**
492
 
493
- - "Send welcome email" is now handled from your list settings in MailChimp.
494
  - Filter `mc4wp_form_merge_vars` is now called `mc4wp_form_data`.
495
  - Filter `mc4wp_integration_merge_vars` is now called `mc4wp_integration_data`.
496
  - New format for GROUPING fields in forms & filter hooks.
@@ -504,7 +525,7 @@ This release updates the plugin to version 3 of the MailChimp API. Please [read
504
 
505
  **Improvements**
506
 
507
- - The plugin now communicates with the latest & greatest MailChimp API.
508
  - Previously unsubscribed subscribers can now be re-added without errors.
509
  - Add `User-Agent` header to all API requests.
510
  - Available fields in form editor are now split-up by category.
@@ -512,7 +533,7 @@ This release updates the plugin to version 3 of the MailChimp API. Please [read
512
 
513
  **Fixes**
514
 
515
- - Issue with only 10 MailChimp lists / fields / interests being returned.
516
  - Incorrect form message showing when double opt-in is disabled.
517
  - Error in upgrade routine when API request fails.
518
  - List fields not fetched when list has just 1 non-default merge field.
@@ -525,8 +546,8 @@ This release updates the plugin to version 3 of the MailChimp API. Please [read
525
  - Smarter scrolling after submitting form & reloading page.
526
  - Format output of `{subscriber_count}` tag.
527
  - You can now use `<img>` in your form messages.
528
- - Add MailChimp API error code to debug log lines.
529
- - Add plugin name + version to User-Agent header for all MailChimp API requests.
530
  - Make sure value of MC_LANGUAGE field is limited to 2 characters.
531
 
532
 
@@ -612,7 +633,7 @@ This release updates the plugin to version 3 of the MailChimp API. Please [read
612
 
613
  **Improvements**
614
 
615
- - Some preparations for the upcoming migration to the new MailChimp API (version 3).
616
  - Consistent hook parameters for `mc4wp_form_subscribed` action.
617
  - Improved logic for rendering form response.
618
 
@@ -631,7 +652,7 @@ This release updates the plugin to version 3 of the MailChimp API. Please [read
631
 
632
  - Scroll to form after form submission now uses native browser method `scrollIntoView()`.
633
  - Various improvements for right-to-left (RTL) sites.
634
- - The MailChimp API key is now obfuscated on the settings page.
635
  - Contact Form 7 integration now uses an early hook priority to ensure we run before any page redirects.
636
 
637
  **Additions**
@@ -656,7 +677,7 @@ This release updates the plugin to version 3 of the MailChimp API. Please [read
656
 
657
  **Fixes**
658
 
659
- - Issue with API array responses (for the [MailChimp Activity add-on](https://wordpress.org/plugins/mc4wp-activity/), for example).
660
 
661
  **Improvements**
662
 
@@ -670,13 +691,13 @@ This release updates the plugin to version 3 of the MailChimp API. Please [read
670
  - Form JavaScript not working when another plugins loads Dojo framework.
671
  - [ENTER] not submitting form settings or creating new-line.
672
  - Internal fields marked as required not passing form validation.
673
- - Deselecting all MailChimp lists wouldn't persist after saving form settings.
674
  - No sign-up request firing for lists with only an `EMAIL` field.
675
 
676
  **Improvements**
677
 
678
  - Show accepted choice values for dropdown and radio fields in lists overview.
679
- - Use all MailChimp lists for Lists Choice field, instead of just the selected ones.
680
  - Failsafed JavaScript for when any other script loads RequireJS globally.
681
 
682
  **Additions**
@@ -709,15 +730,15 @@ This release updates the plugin to version 3 of the MailChimp API. Please [read
709
  **Improvements**
710
 
711
  - Show Akamai firewall reference number when site's IP address is blocked
712
- - Make sure integrations have a MailChimp list selected before trying to subscribe.
713
  - Move less important settings to "Other" page.
714
- - When a field is required in MailChimp, it has to be required in forms as well now.
715
  - Allow including a `_mc4wp_email_type` field in forms to set an explicit email type.
716
  - Miscellaneous overall performance improvements.
717
 
718
  **Additions**
719
 
720
- - Added [debug logging](https://mc4wp.com/kb/how-to-enable-log-debugging/), which shows all warnings & errors the plugin encountered in communicating with MailChimp.
721
  - Add `get_lists_for_email( $email )` method to API class.
722
  - Add `MC4WP_Queue` class for better background processing of expensive operations.
723
 
@@ -793,7 +814,7 @@ Added `mc4wp_use_sslverify` filter to disable or explicitly enable SSL certifica
793
 
794
  **Improvements**
795
 
796
- - Now using group ID's for interest grouping fields, so changing the group in MailChimp does not require updating your form code.
797
  - Never load enabled integrations which are not installed.
798
  - Reintroduce support for automatically sending `OPTIN_IP`
799
 
@@ -813,8 +834,8 @@ Added `mc4wp_use_sslverify` filter to disable or explicitly enable SSL certifica
813
  - Prevented notice when saving Form widget settings for the first time.
814
  - Add `autofill="off"` to honeypot field.
815
  - Remove nonces from forms as they're not really useful for publicly available features.
816
- - Errors returned by MailChimp are now logged for Forms as well.
817
- - Pre-select MailChimp list if there's just one list in the connected account.
818
  - Added missing translation calls for Form Editor.
819
 
820
  #### 3.0.2 - November 25, 2015
@@ -847,9 +868,9 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
847
  **Improvements**
848
 
849
  - New form editor with syntax highlighting, more advanced field options & better visual feedback.
850
- - Better support for MailChimp `address` fields.
851
  - Better support for choice fields (eg groupings, list choice & country fields).
852
- - All fields marked as `required` are now validated server-side as well (instead of just MailChimp required fields).
853
  - All integrations have their own settings page now.
854
  - Events Manager: checkbox is now automatically added to booking forms.
855
  - Tons of usability & accessibility improvements.
@@ -873,7 +894,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
873
  **Improvements**
874
 
875
  - Usage tracking is now scheduled once a week (instead of daily).
876
- - Preparations for [the upcoming MailChimp for WordPress version 3.0 release](https://mc4wp.com/blog/breaking-backwards-compatibility-in-version-3-0/).
877
  - Tested compatibility with WordPress 4.4
878
 
879
  #### 2.3.17 - October 22, 2015
@@ -891,13 +912,13 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
891
 
892
  **Fixes**
893
 
894
- - Error in Russian translation, causing a broken link on the MailChimp settings page.
895
 
896
  **Improvements**
897
 
898
- - Textual improvements to MailChimp settings page.
899
- - Connectivity issues with MailChimp will now _always_ show an error message.
900
- - Renewing MailChimp lists will now also update the output of the `{subscriber_count}` tag.
901
 
902
  #### 2.3.15 - October 9, 2015
903
 
@@ -911,7 +932,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
911
  - Updated Spanish & Catalan translations, thanks to [Xavier Gimeno Torrent](http://www.xaviergimeno.net/).
912
  - Fix `mc4wp_form_before_fields` being applied twice.
913
  - Position honeypot field to the right for Right-To-Left sites.
914
- - `_mc4wp_lists` can now be a comma-separated string of MailChimp list ID's to subscribe to (or an array).
915
  - Minor other defensive coding improvements to prevent clashes with other plugins.
916
 
917
  **Additions**
@@ -934,7 +955,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
934
  **Improvements**
935
 
936
  - Minor styling improvements for RTL sites.
937
- - MailChimp list fields of type "website" will now become HTML5 `url` type fields.
938
  - Auto-prefix fields of type `url` with `http://`
939
 
940
  #### 2.3.12 - September 21, 2015
@@ -949,11 +970,11 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
949
 
950
  - Honeypot field being filled by browser's autocomplete.
951
  - Styling issue for submit buttons in Mobile Safari.
952
- - Empty response from MailChimp API
953
 
954
  **Improvements**
955
 
956
- - Do not query MailChimp API for interest groupings if list has none.
957
  - Integration errors are now logged to PHP's error log for easier debugging.
958
 
959
  **Additions**
@@ -964,13 +985,13 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
964
 
965
  **Fixes**
966
 
967
- - Showing "not connected" when the plugin was actually connected to MailChimp.
968
  - Issue with `address` fields when `addr1` was not given.
969
  - Comment form checkbox not outputted for some older themes.
970
 
971
  **Improvements**
972
 
973
- - Do not flush MailChimp cache on every settings save.
974
  - Add default CSS styles for `number` fields.
975
  - Placeholders will now work in older version of IE as well.
976
 
@@ -978,14 +999,14 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
978
 
979
  **Improvements**
980
 
981
- - MailChimp lists cache is now automatically flushed after changing your API key setting.
982
  - Better field population after submitting a form with errors.
983
  - More helpful error message when no list is selected.
984
  - Translate options when installing plugin from a language other than English.
985
  - Add form mark-up to WPML configuration file.
986
  - Sign-up checkbox in comment form is now shown before the "submit comment" button.
987
  - URL-encode variables in "Redirect URL" setting.
988
- - Better error message when connected to MailChimp but account has no lists.
989
 
990
  **Additions**
991
 
@@ -1005,7 +1026,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
1005
  - Better way to hide the honeypot field, which stops bots from subscribing to your lists.
1006
  - role="form" is no longer needed, thanks [XhmikosR](https://github.com/XhmikosR)!
1007
  - Filter `mc4wp_form_animate_scroll` now disables just the scroll animation, not the scroll itself.
1008
- - Revamped UI for MailChimp lists overview
1009
  - Updated German & Greek translations.
1010
 
1011
  **Additions**
@@ -1016,7 +1037,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
1016
 
1017
  **Improvements**
1018
 
1019
- - Use the same order as MailChimp.com, which is useful when you have over 100 MailChimp lists.
1020
  - Use `/* ... */` for inline JavaScript comments to prevent errors with minified HTML - props [Ed Gifford](https://github.com/egifford)
1021
 
1022
  **Additions**
@@ -1033,7 +1054,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
1033
 
1034
  **Improvements**
1035
 
1036
- - Relayed the browser's Accept-Language header to MailChimp for auto-detecting a subscriber's language.
1037
  - Better CSS for form reset
1038
  - Updated HTML5 placeholder polyfill
1039
 
@@ -1052,7 +1073,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
1052
 
1053
  **Fixes**
1054
 
1055
- - Issue with GROUPINGS not being sent to MailChimp
1056
 
1057
  **Improvements**
1058
 
@@ -1074,7 +1095,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
1074
 
1075
  **Fixes**
1076
 
1077
- - Groupings not being sent to MailChimp
1078
  - Issue when using more than one `{data_xx}` replacement
1079
 
1080
  **Improvements**
@@ -1134,7 +1155,7 @@ Before upgrading, please go through the [upgrade guide](https://mc4wp.com/kb/upg
1134
 
1135
  - Added `mc4wp_before_checkbox` and `mc4wp_after_checkbox` filters to easily add more fields to sign-up checkbox integrations.
1136
  - Added some helper methods related to interest groupings to `MC4WP_MailChimp` class.
1137
- - Allow setting custom MailChimp lists to subscribe to using `lists` attribute on shortcode.
1138
 
1139
  #### 2.2.7 - March 11, 2015
1140
 
@@ -1210,19 +1231,19 @@ A huge thank you to [Stefan Oderbolz](http://metaodi.ch/) for various fixed and
1210
 
1211
  **Additions**
1212
 
1213
- - Now showing a heads up when at limit of 100 MailChimp lists. ([#71](https://github.com/ibericode/mailchimp-for-wordpress/issues/71))
1214
  - Added `wpml-config.xml` file for better WPML compatibility
1215
  - Added filter `mc4wp_menu_items` for adding & removing menu items from add-ons
1216
 
1217
  #### 2.2.3 - January 24, 2015
1218
 
1219
- Minor improvements and additions for compatibility with the [MailChimp Sync plugin](https://wordpress.org/plugins/mailchimp-sync/).
1220
 
1221
  #### 2.2.2 - January 13, 2015
1222
 
1223
  **Fixes**
1224
 
1225
- - Plugin wasn't connecting to MailChimp for users on MailChimp server `us10` (API keys ending in `-us10`)
1226
 
1227
  #### 2.2.1 - January 12, 2015
1228
 
@@ -1243,7 +1264,7 @@ Minor improvements and additions for compatibility with the [MailChimp Sync plug
1243
 
1244
  **Fixes**
1245
 
1246
- - "Select at least one list" notice appearing when unselecting any MailChimp list in Form settings
1247
  - If an error occurs, textareas will no longer lose their value
1248
 
1249
  **Improvements**
1
  Changelog
2
  =========
3
 
4
+ #### 4.4 - March 1, 2018
5
+
6
+ **Fixes**
7
+
8
+ - AffiliateWP integration subscribing the wrong user if affiliate ID differs from user ID.
9
+
10
+ **Improvements**
11
+
12
+ - Renamed "MailChimp" to "Mailchimp" to match Mailchimp's new branding.
13
+ - More accurate handling of timeouts for accounts with many MailChimp lists.
14
+ - UX improvements for integrations overview page.
15
+ - Validate MailChimp API key format when it's entered.
16
+ - Improved compatibility with Klarna Checkout in the WooCommerce checkout integration.
17
+ - Bumped required PHP version to 5.3 (soft requirement for now).
18
+
19
+ **Additions**
20
+
21
+ - Added Gutenberg block for easily adding a form to a post or page.
22
+ - Added subscriber tags setting to forms.
23
+
24
+
25
  #### 4.3.3 - December 31, 2018
26
 
27
  **Fixes**
52
 
53
  **Additions**
54
 
55
+ - Added `MC4WP_API_KEY` PHP constant which can be used to set your Mailchimp API key.
56
+ - Add `mc4wp_mailchimp_list_limit` filter hook to modify the maximum number of Mailchimp lists to fetch. Defaults to 200.
57
 
58
  **Improvements**
59
 
66
  **Improvements**
67
 
68
  - Only re-add subscriber to list if we want to re-trigger a double opt-in confirmation email.
69
+ - Change Gravity Forms field name to "Mailchimp for WordPress"
70
+ - Get rid of cached result of Mailchimp API connection.
71
 
72
 
73
  #### 4.2.4 - July 9, 2018
76
 
77
  - Ensure type-safety on some global variables.
78
  - Stop showing trashed forms immediately.
79
+ - Pre-check Mailchimp list when creating a new form if there is only 1 list.
80
  - Send `null` for unknown values in usage tracking data (only when opted-in).
81
 
82
  **Additions**
83
 
84
+ - Add methods for accessing Mailchimp's e-commerce promo code endpoints to API class.
85
 
86
 
87
  #### 4.2.3 - June 11, 2018
139
  - Improved [conditional fields logic](https://kb.mc4wp.com/conditional-fields-elements/).
140
  - Debug log now includes request & response data.
141
  - [Form JavaScript events](https://kb.mc4wp.com/javascript-form-events/) are fired in an isolated thread now, to prevent errors in event callbacks from breaking form functionality.
142
+ - Don't send empty field values to Mailchimp when updating subscribers.
143
  - Show interest grouping ID in list overview on settings page.
144
 
145
  **Fixes**
146
 
147
+ - Ninja Forms export checkbox would always state "checked" when form contained a Mailchimp sign-up checkbox.
148
 
149
 
150
 
152
 
153
  **Fixes**
154
 
155
+ - Dropdown fields with special characters were not properly passed to Mailchimp.
156
+ - Interest groups with an all-numeric ID were not properly passed to Mailchimp.
157
 
158
  **Improvements**
159
 
207
 
208
  **Fixes**
209
 
210
+ - Filter out empty array values when overriding selected Mailchimp lists via `_mc4wp_lists`.
211
 
212
  **Improvements**
213
 
223
  **Improvements**
224
 
225
  - Remove unused options from Ninja Forms integration.
226
+ - Now logging all sign-ups from Ninja Forms integrations when using [Mailchimp for WordPress Premium](https://mc4wp.com/premium-features/).
227
 
228
  **Additions**
229
 
230
+ - Added Gravity Forms integration. You can now integrate with Gravity Forms by adding the "Mailchimp" field to your forms.
231
 
232
 
233
  #### 4.1.9 - September 19, 2017
263
 
264
  **Improvements**
265
 
266
+ - Show Akamai reference number when an API request is blocked by Mailchimp's firewall.
267
  - Minor output buffering improvements in form previewer.
268
 
269
 
277
 
278
  **Improvements**
279
 
280
+ - Fire action hook `mc4wp_form_updated_subscriber` whenever a form was used to update a subscriber in Mailchimp.
281
+ - Increase browser timeout for AJAX request when fetching Mailchimp lists.
282
 
283
  **Additions**
284
 
299
 
300
  **Improvements**
301
 
302
+ - Randomise time of cron event that renews Mailchimp lists.
303
+ - Always try to show Mailchimp list info when API key is given.
304
 
305
 
306
  #### 4.1.2 - May 8, 2017
311
 
312
  **Improvements**
313
 
314
+ - Improved Mailchimp list fetching & memory usage for accounts with many lists.
315
  - Show error message when fetching lists fails.
316
  - Updated plugin translations.
317
 
347
 
348
  **Improvements**
349
 
350
+ - Ensure fields are HTML decoded before sending to Mailchimp.
351
  - Better OptimizePress compatibility.
352
  - Show all address-type fields as required when form contains 1 or more fields of the same address group.
353
 
379
 
380
  **Improvements**
381
 
382
+ - Add `$args` parameter to `API::get_lists_activity` method. Relates to the [Mailchimp Activity](https://wordpress.org/plugins/mc4wp-activity/) plugin.
383
 
384
 
385
  #### 4.0.10 - December 6, 2016
404
 
405
  - Improved handling of large debug logs.
406
  - Improved error messages when writing exceptions to debug log.
407
+ - Show notice when form is missing required Mailchimp fields.
408
  - Custom form integration now handles arrays with 1-level depth. Thanks to [Mardari Igor](https://github.com/GarryOne).
409
  - You can now use nested tags in your form code, eg `{data key="utm_source" default="{current_path}"}`
410
 
453
 
454
  **Improvements**
455
 
456
+ - Fetch Mailchimp lists over AJAX, to speed up perceived performance (especially when your account has many lists).
457
+ - Periodically fetch Mailchimp lists, so cache is always fresh.
458
  - Improved `<label>` element accessibility for checkbox integrations.
459
  - Stop using double underscore prefix in function names, as these are reserved in PHP 7.
460
  - `{post}` and `{user}` shortcodes now accept a `default` parameter.
462
  **Additions**
463
 
464
  - Add [MemberPress](https://www.memberpress.com/) integration.
465
+ - Add missing e-commerce related API methods for next week's [WooCommerce Mailchimp e-commerce integration](https://mc4wp.com/kb/what-is-ecommerce360/) release.
466
 
467
 
468
  #### 4.0.4 - September 7, 2016
471
 
472
  - Allow re-running previous migrations by visiting a certain admin URL.
473
  - Do not show checkboxes option for fields that only accept a single value.
474
+ - Write field specific errors to debug log when Mailchimp denies a sign-up request.
475
  - Write to debug log when custom integrations can not find an EMAIL field.
476
+ - Differentiate between connection & authorization errors when testing connection to Mailchimp.
477
+ - Bump limit of number of Mailchimp lists to fetch from 100 to 500.
478
 
479
 
480
  #### 4.0.3 - August 24, 2016
485
 
486
  **Improvements**
487
 
488
+ - Show connection errors on Mailchimp settings page.
489
 
490
  **Additions**
491
 
497
 
498
  **Fixes**
499
 
500
+ - Hidden fields which referenced interest groups by name were not sent to Mailchimp.
501
  - Adding hidden field to form would reset value on every change.
502
 
503
  **Improvements**
507
 
508
  #### 4.0 & 4.0.1 - August 9, 2016
509
 
510
+ This release updates the plugin to version 3 of the Mailchimp API. Please [read through the upgrade guide](https://mc4wp.com/kb/upgrading-to-4-0/) before updating to make sure things keep working as expected for you.
511
 
512
  **Changes**
513
 
514
+ - "Send welcome email" is now handled from your list settings in Mailchimp.
515
  - Filter `mc4wp_form_merge_vars` is now called `mc4wp_form_data`.
516
  - Filter `mc4wp_integration_merge_vars` is now called `mc4wp_integration_data`.
517
  - New format for GROUPING fields in forms & filter hooks.
525
 
526
  **Improvements**
527
 
528
+ - The plugin now communicates with the latest & greatest Mailchimp API.
529
  - Previously unsubscribed subscribers can now be re-added without errors.
530
  - Add `User-Agent` header to all API requests.
531
  - Available fields in form editor are now split-up by category.
533
 
534
  **Fixes**
535
 
536
+ - Issue with only 10 Mailchimp lists / fields / interests being returned.
537
  - Incorrect form message showing when double opt-in is disabled.
538
  - Error in upgrade routine when API request fails.
539
  - List fields not fetched when list has just 1 non-default merge field.
546
  - Smarter scrolling after submitting form & reloading page.
547
  - Format output of `{subscriber_count}` tag.
548
  - You can now use `<img>` in your form messages.
549
+ - Add Mailchimp API error code to debug log lines.
550
+ - Add plugin name + version to User-Agent header for all Mailchimp API requests.
551
  - Make sure value of MC_LANGUAGE field is limited to 2 characters.
552
 
553
 
633
 
634
  **Improvements**
635
 
636
+ - Some preparations for the upcoming migration to the new Mailchimp API (version 3).
637
  - Consistent hook parameters for `mc4wp_form_subscribed` action.
638
  - Improved logic for rendering form response.
639
 
652
 
653
  - Scroll to form after form submission now uses native browser method `scrollIntoView()`.
654
  - Various improvements for right-to-left (RTL) sites.
655
+ - The Mailchimp API key is now obfuscated on the settings page.
656
  - Contact Form 7 integration now uses an early hook priority to ensure we run before any page redirects.
657
 
658
  **Additions**
677
 
678
  **Fixes**
679
 
680
+ - Issue with API array responses (for the [Mailchimp Activity add-on](https://wordpress.org/plugins/mc4wp-activity/), for example).
681
 
682
  **Improvements**
683
 
691
  - Form JavaScript not working when another plugins loads Dojo framework.
692
  - [ENTER] not submitting form settings or creating new-line.
693
  - Internal fields marked as required not passing form validation.
694
+ - Deselecting all Mailchimp lists wouldn't persist after saving form settings.
695
  - No sign-up request firing for lists with only an `EMAIL` field.
696
 
697
  **Improvements**
698
 
699
  - Show accepted choice values for dropdown and radio fields in lists overview.
700
+ - Use all Mailchimp lists for Lists Choice field, instead of just the selected ones.
701
  - Failsafed JavaScript for when any other script loads RequireJS globally.
702
 
703
  **Additions**
730
  **Improvements**
731
 
732
  - Show Akamai firewall reference number when site's IP address is blocked
733
+ - Make sure integrations have a Mailchimp list selected before trying to subscribe.
734
  - Move less important settings to "Other" page.
735
+ - When a field is required in Mailchimp, it has to be required in forms as well now.
736
  - Allow including a `_mc4wp_email_type` field in forms to set an explicit email type.
737
  - Miscellaneous overall performance improvements.
738
 
739
  **Additions**
740
 
741
+ - Added [debug logging](https://mc4wp.com/kb/how-to-enable-log-debugging/), which shows all warnings & errors the plugin encountered in communicating with Mailchimp.
742
  - Add `get_lists_for_email( $email )` method to API class.
743
  - Add `MC4WP_Queue` class for better background processing of expensive operations.
744
 
814
 
815
  **Improvements**
816
 
817
+ - Now using group ID's for interest grouping fields, so changing the group in Mailchimp does not require updating your form code.
818
  - Never load enabled integrations which are not installed.
819
  - Reintroduce support for automatically sending `OPTIN_IP`
820
 
834
  - Prevented notice when saving Form widget settings for the first time.
835
  - Add `autofill="off"` to honeypot field.
836
  - Remove nonces from forms as they're not really useful for publicly available features.
837
+ - Errors returned by Mailchimp are now logged for Forms as well.
838
+ - Pre-select Mailchimp list if there's just one list in the connected account.
839
  - Added missing translation calls for Form Editor.
840
 
841
  #### 3.0.2 - November 25, 2015
868
  **Improvements**
869
 
870
  - New form editor with syntax highlighting, more advanced field options & better visual feedback.
871
+ - Better support for Mailchimp `address` fields.
872
  - Better support for choice fields (eg groupings, list choice & country fields).
873
+ - All fields marked as `required` are now validated server-side as well (instead of just Mailchimp required fields).
874
  - All integrations have their own settings page now.
875
  - Events Manager: checkbox is now automatically added to booking forms.
876
  - Tons of usability & accessibility improvements.
894
  **Improvements**
895
 
896
  - Usage tracking is now scheduled once a week (instead of daily).
897
+ - Preparations for [the upcoming Mailchimp for WordPress version 3.0 release](https://mc4wp.com/blog/breaking-backwards-compatibility-in-version-3-0/).
898
  - Tested compatibility with WordPress 4.4
899
 
900
  #### 2.3.17 - October 22, 2015
912
 
913
  **Fixes**
914
 
915
+ - Error in Russian translation, causing a broken link on the Mailchimp settings page.
916
 
917
  **Improvements**
918
 
919
+ - Textual improvements to Mailchimp settings page.
920
+ - Connectivity issues with Mailchimp will now _always_ show an error message.
921
+ - Renewing Mailchimp lists will now also update the output of the `{subscriber_count}` tag.
922
 
923
  #### 2.3.15 - October 9, 2015
924
 
932
  - Updated Spanish & Catalan translations, thanks to [Xavier Gimeno Torrent](http://www.xaviergimeno.net/).
933
  - Fix `mc4wp_form_before_fields` being applied twice.
934
  - Position honeypot field to the right for Right-To-Left sites.
935
+ - `_mc4wp_lists` can now be a comma-separated string of Mailchimp list ID's to subscribe to (or an array).
936
  - Minor other defensive coding improvements to prevent clashes with other plugins.
937
 
938
  **Additions**
955
  **Improvements**
956
 
957
  - Minor styling improvements for RTL sites.
958
+ - Mailchimp list fields of type "website" will now become HTML5 `url` type fields.
959
  - Auto-prefix fields of type `url` with `http://`
960
 
961
  #### 2.3.12 - September 21, 2015
970
 
971
  - Honeypot field being filled by browser's autocomplete.
972
  - Styling issue for submit buttons in Mobile Safari.
973
+ - Empty response from Mailchimp API
974
 
975
  **Improvements**
976
 
977
+ - Do not query Mailchimp API for interest groupings if list has none.
978
  - Integration errors are now logged to PHP's error log for easier debugging.
979
 
980
  **Additions**
985
 
986
  **Fixes**
987
 
988
+ - Showing "not connected" when the plugin was actually connected to Mailchimp.
989
  - Issue with `address` fields when `addr1` was not given.
990
  - Comment form checkbox not outputted for some older themes.
991
 
992
  **Improvements**
993
 
994
+ - Do not flush Mailchimp cache on every settings save.
995
  - Add default CSS styles for `number` fields.
996
  - Placeholders will now work in older version of IE as well.
997
 
999
 
1000
  **Improvements**
1001
 
1002
+ - Mailchimp lists cache is now automatically flushed after changing your API key setting.
1003
  - Better field population after submitting a form with errors.
1004
  - More helpful error message when no list is selected.
1005
  - Translate options when installing plugin from a language other than English.
1006
  - Add form mark-up to WPML configuration file.
1007
  - Sign-up checkbox in comment form is now shown before the "submit comment" button.
1008
  - URL-encode variables in "Redirect URL" setting.
1009
+ - Better error message when connected to Mailchimp but account has no lists.
1010
 
1011
  **Additions**
1012
 
1026
  - Better way to hide the honeypot field, which stops bots from subscribing to your lists.
1027
  - role="form" is no longer needed, thanks [XhmikosR](https://github.com/XhmikosR)!
1028
  - Filter `mc4wp_form_animate_scroll` now disables just the scroll animation, not the scroll itself.
1029
+ - Revamped UI for Mailchimp lists overview
1030
  - Updated German & Greek translations.
1031
 
1032
  **Additions**
1037
 
1038
  **Improvements**
1039
 
1040
+ - Use the same order as Mailchimp.com, which is useful when you have over 100 Mailchimp lists.
1041
  - Use `/* ... */` for inline JavaScript comments to prevent errors with minified HTML - props [Ed Gifford](https://github.com/egifford)
1042
 
1043
  **Additions**
1054
 
1055
  **Improvements**
1056
 
1057
+ - Relayed the browser's Accept-Language header to Mailchimp for auto-detecting a subscriber's language.
1058
  - Better CSS for form reset
1059
  - Updated HTML5 placeholder polyfill
1060
 
1073
 
1074
  **Fixes**
1075
 
1076
+ - Issue with GROUPINGS not being sent to Mailchimp
1077
 
1078
  **Improvements**
1079
 
1095
 
1096
  **Fixes**
1097
 
1098
+ - Groupings not being sent to Mailchimp
1099
  - Issue when using more than one `{data_xx}` replacement
1100
 
1101
  **Improvements**
1155
 
1156
  - Added `mc4wp_before_checkbox` and `mc4wp_after_checkbox` filters to easily add more fields to sign-up checkbox integrations.
1157
  - Added some helper methods related to interest groupings to `MC4WP_MailChimp` class.
1158
+ - Allow setting custom Mailchimp lists to subscribe to using `lists` attribute on shortcode.
1159
 
1160
  #### 2.2.7 - March 11, 2015
1161
 
1231
 
1232
  **Additions**
1233
 
1234
+ - Now showing a heads up when at limit of 100 Mailchimp lists. ([#71](https://github.com/ibericode/mailchimp-for-wordpress/issues/71))
1235
  - Added `wpml-config.xml` file for better WPML compatibility
1236
  - Added filter `mc4wp_menu_items` for adding & removing menu items from add-ons
1237
 
1238
  #### 2.2.3 - January 24, 2015
1239
 
1240
+ Minor improvements and additions for compatibility with the [Mailchimp Sync plugin](https://wordpress.org/plugins/mailchimp-sync/).
1241
 
1242
  #### 2.2.2 - January 13, 2015
1243
 
1244
  **Fixes**
1245
 
1246
+ - Plugin wasn't connecting to Mailchimp for users on Mailchimp server `us10` (API keys ending in `-us10`)
1247
 
1248
  #### 2.2.1 - January 12, 2015
1249
 
1264
 
1265
  **Fixes**
1266
 
1267
+ - "Select at least one list" notice appearing when unselecting any Mailchimp list in Form settings
1268
  - If an error occurs, textareas will no longer lose their value
1269
 
1270
  **Improvements**
assets/css/checkbox-reset.css CHANGED
@@ -1,4 +1,4 @@
1
- /* MailChimp for WP - Checkbox Styles */
2
  .mc4wp-checkbox-__INTEGRATION_SLUG__ {
3
  clear: both;
4
  display: block;
1
+ /* Mailchimp for WP - Checkbox Styles */
2
  .mc4wp-checkbox-__INTEGRATION_SLUG__ {
3
  clear: both;
4
  display: block;
assets/css/form-basic.css CHANGED
@@ -1,7 +1,7 @@
1
  .mc4wp-form input[name^="_mc4wp_honey"] {
2
  display: none !important; }
3
 
4
- /* MailChimp for WP - Default Form Styles */
5
  .mc4wp-form-basic,
6
  .mc4wp-form-theme {
7
  margin: 1em 0;
1
  .mc4wp-form input[name^="_mc4wp_honey"] {
2
  display: none !important; }
3
 
4
+ /* Mailchimp for WP - Default Form Styles */
5
  .mc4wp-form-basic,
6
  .mc4wp-form-theme {
7
  margin: 1em 0;
assets/css/form-themes.css CHANGED
@@ -1,7 +1,7 @@
1
  .mc4wp-form input[name^="_mc4wp_honey"] {
2
  display: none !important; }
3
 
4
- /* MailChimp for WP - Default Form Styles */
5
  .mc4wp-form-basic,
6
  .mc4wp-form-theme {
7
  margin: 1em 0;
1
  .mc4wp-form input[name^="_mc4wp_honey"] {
2
  display: none !important; }
3
 
4
+ /* Mailchimp for WP - Default Form Styles */
5
  .mc4wp-form-basic,
6
  .mc4wp-form-theme {
7
  margin: 1em 0;
assets/js/admin.js CHANGED
@@ -29,7 +29,9 @@ var mount = document.getElementById('mc4wp-list-fetcher');
29
 
30
  if (mount) {
31
  m.mount(mount, new ListFetcher());
32
- } // expose some things
 
 
33
 
34
 
35
  window.mc4wp = window.mc4wp || {};
@@ -40,7 +42,36 @@ window.mc4wp.events = events;
40
  window.mc4wp.settings = settings;
41
  window.mc4wp.tabs = tabs;
42
 
43
- },{"./admin/helpers.js":2,"./admin/list-fetcher.js":3,"./admin/settings.js":4,"./admin/tabs.js":5,"mithril":7,"tlite":10,"wolfy87-eventemitter":11}],2:[function(require,module,exports){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  'use strict';
45
 
46
  var helpers = {};
@@ -133,7 +164,7 @@ helpers.debounce = function (func, wait, immediate) {
133
 
134
  module.exports = helpers;
135
 
136
- },{}],3:[function(require,module,exports){
137
  'use strict';
138
 
139
  var $ = window.jQuery;
@@ -155,7 +186,8 @@ ListFetcher.prototype.fetch = function (e) {
155
  this.done = false;
156
  $.post(ajaxurl, {
157
  action: "mc4wp_renew_mailchimp_lists",
158
- timeout: 180000
 
159
  }).done(function (data) {
160
  this.success = true;
161
 
@@ -187,7 +219,7 @@ ListFetcher.prototype.view = function () {
187
 
188
  module.exports = ListFetcher;
189
 
190
- },{}],4:[function(require,module,exports){
191
  "use strict";
192
 
193
  function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
@@ -250,7 +282,7 @@ var Settings = function Settings(context, helpers, events) {
250
 
251
  module.exports = Settings;
252
 
253
- },{}],5:[function(require,module,exports){
254
  'use strict';
255
 
256
  var URL = require('./url.js'); // Tabs
@@ -422,7 +454,7 @@ var Tabs = function Tabs(context) {
422
 
423
  module.exports = Tabs;
424
 
425
- },{"./url.js":6}],6:[function(require,module,exports){
426
  'use strict';
427
 
428
  var URL = {
@@ -458,7 +490,7 @@ var URL = {
458
  };
459
  module.exports = URL;
460
 
461
- },{}],7:[function(require,module,exports){
462
  (function (global,setImmediate){
463
  ;(function() {
464
  "use strict"
@@ -1718,7 +1750,7 @@ if (typeof module !== "undefined") module["exports"] = m
1718
  else window.m = m
1719
  }());
1720
  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
1721
- },{"timers":9}],8:[function(require,module,exports){
1722
  // shim for using process in browser
1723
  var process = module.exports = {};
1724
 
@@ -1904,7 +1936,7 @@ process.chdir = function (dir) {
1904
  };
1905
  process.umask = function() { return 0; };
1906
 
1907
- },{}],9:[function(require,module,exports){
1908
  (function (setImmediate,clearImmediate){
1909
  var nextTick = require('process/browser.js').nextTick;
1910
  var apply = Function.prototype.apply;
@@ -1983,7 +2015,7 @@ exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate :
1983
  delete immediateIds[id];
1984
  };
1985
  }).call(this,require("timers").setImmediate,require("timers").clearImmediate)
1986
- },{"process/browser.js":8,"timers":9}],10:[function(require,module,exports){
1987
  function tlite(getTooltipOpts) {
1988
  document.addEventListener('mouseover', function (e) {
1989
  var el = e.target;
@@ -2119,7 +2151,7 @@ if (typeof module !== 'undefined' && module.exports) {
2119
  module.exports = tlite;
2120
  }
2121
 
2122
- },{}],11:[function(require,module,exports){
2123
  /*!
2124
  * EventEmitter v5.2.5 - git.io/ee
2125
  * Unlicense - http://unlicense.org/
29
 
30
  if (mount) {
31
  m.mount(mount, new ListFetcher());
32
+ }
33
+
34
+ require('./admin/fields/mailchimp-api-key.js'); // expose some things
35
 
36
 
37
  window.mc4wp = window.mc4wp || {};
42
  window.mc4wp.settings = settings;
43
  window.mc4wp.tabs = tabs;
44
 
45
+ },{"./admin/fields/mailchimp-api-key.js":2,"./admin/helpers.js":3,"./admin/list-fetcher.js":4,"./admin/settings.js":5,"./admin/tabs.js":6,"mithril":8,"tlite":11,"wolfy87-eventemitter":12}],2:[function(require,module,exports){
46
+ 'use strict';
47
+
48
+ var field;
49
+
50
+ function validate(evt) {
51
+ var node = document.createElement('p');
52
+ node.className = 'help red';
53
+ node.innerText = window.mc4wp_vars.i18n.invalid_api_key;
54
+
55
+ if (field.nextElementSibling.innerText === node.innerText) {
56
+ field.nextElementSibling.parentElement.removeChild(field.nextElementSibling);
57
+ }
58
+
59
+ if (!field.value.match(/^[0-9a-zA-Z*]{32}-[a-z]{2}[0-9]{1,2}$/)) {
60
+ field.parentElement.insertBefore(node, field.nextElementSibling);
61
+ }
62
+ }
63
+
64
+ (function () {
65
+ field = document.getElementById('mailchimp_api_key');
66
+
67
+ if (!field) {
68
+ return;
69
+ }
70
+
71
+ field.addEventListener('change', validate);
72
+ })();
73
+
74
+ },{}],3:[function(require,module,exports){
75
  'use strict';
76
 
77
  var helpers = {};
164
 
165
  module.exports = helpers;
166
 
167
+ },{}],4:[function(require,module,exports){
168
  'use strict';
169
 
170
  var $ = window.jQuery;
186
  this.done = false;
187
  $.post(ajaxurl, {
188
  action: "mc4wp_renew_mailchimp_lists",
189
+ timeout: 600000 // 10 minutes, matching max_execution_time
190
+
191
  }).done(function (data) {
192
  this.success = true;
193
 
219
 
220
  module.exports = ListFetcher;
221
 
222
+ },{}],5:[function(require,module,exports){
223
  "use strict";
224
 
225
  function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
282
 
283
  module.exports = Settings;
284
 
285
+ },{}],6:[function(require,module,exports){
286
  'use strict';
287
 
288
  var URL = require('./url.js'); // Tabs
454
 
455
  module.exports = Tabs;
456
 
457
+ },{"./url.js":7}],7:[function(require,module,exports){
458
  'use strict';
459
 
460
  var URL = {
490
  };
491
  module.exports = URL;
492
 
493
+ },{}],8:[function(require,module,exports){
494
  (function (global,setImmediate){
495
  ;(function() {
496
  "use strict"
1750
  else window.m = m
1751
  }());
1752
  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
1753
+ },{"timers":10}],9:[function(require,module,exports){
1754
  // shim for using process in browser
1755
  var process = module.exports = {};
1756
 
1936
  };
1937
  process.umask = function() { return 0; };
1938
 
1939
+ },{}],10:[function(require,module,exports){
1940
  (function (setImmediate,clearImmediate){
1941
  var nextTick = require('process/browser.js').nextTick;
1942
  var apply = Function.prototype.apply;
2015
  delete immediateIds[id];
2016
  };
2017
  }).call(this,require("timers").setImmediate,require("timers").clearImmediate)
2018
+ },{"process/browser.js":9,"timers":10}],11:[function(require,module,exports){
2019
  function tlite(getTooltipOpts) {
2020
  document.addEventListener('mouseover', function (e) {
2021
  var el = e.target;
2151
  module.exports = tlite;
2152
  }
2153
 
2154
+ },{}],12:[function(require,module,exports){
2155
  /*!
2156
  * EventEmitter v5.2.5 - git.io/ee
2157
  * Unlicense - http://unlicense.org/
assets/js/admin.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(){var l=void 0;!function o(a,l,s){function u(t,e){if(!l[t]){if(!a[t]){var n=!1;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var i=l[t]={exports:{}};a[t][0].call(i.exports,function(e){return u(a[t][1][e]||e)},i,i.exports,o,a,l,s)}return l[t].exports}for(var c=!1,e=0;e<s.length;e++)u(s[e]);return u}({1:[function(e,t,n){"use strict";var r,i=(r=e("tlite"))&&r.__esModule?r:{default:r};var o=window.m=e("mithril"),a=e("wolfy87-eventemitter"),l=document.getElementById("mc4wp-admin"),s=new a,u=e("./admin/tabs.js")(l),c=e("./admin/helpers.js"),f=e("./admin/settings.js")(l,c,s);(0,i.default)(function(e){return-1<e.className.indexOf("mc4wp-tooltip")});var d=e("./admin/list-fetcher.js"),h=document.getElementById("mc4wp-list-fetcher");h&&o.mount(h,new d),window.mc4wp=window.mc4wp||{},window.mc4wp.deps=window.mc4wp.deps||{},window.mc4wp.deps.mithril=o,window.mc4wp.helpers=c,window.mc4wp.events=s,window.mc4wp.settings=f,window.mc4wp.tabs=u},{"./admin/helpers.js":2,"./admin/list-fetcher.js":3,"./admin/settings.js":4,"./admin/tabs.js":5,mithril:7,tlite:10,"wolfy87-eventemitter":11}],2:[function(e,t,n){"use strict";var r,a={};a.toggleElement=function(e){for(var t=document.querySelectorAll(e),n=0;n<t.length;n++){var r=t[n].clientHeight<=0;t[n].style.display=r?"":"none"}},a.bindEventToElement=function(e,t,n){e.addEventListener?e.addEventListener(t,n):e.attachEvent&&e.attachEvent("on"+t,n)},a.bindEventToElements=function(e,t,n){Array.prototype.forEach.call(e,function(e){a.bindEventToElement(e,t,n)})},a.debounce=function(r,i,o){var a;return function(){var e=this,t=arguments,n=o&&!a;clearTimeout(a),a=setTimeout(function(){a=null,o||r.apply(e,t)},i),n&&r.apply(e,t)}},r=document.querySelectorAll("[data-showif]"),Array.prototype.forEach.call(r,function(e){var n=JSON.parse(e.getAttribute("data-showif")),t=document.querySelectorAll('[name="'+n.element+'"]'),r=e.querySelectorAll("input,select,textarea:not([readonly])"),i=void 0===n.hide||n.hide;function o(){if("radio"!==this.getAttribute("type")||this.checked){var t=("checkbox"===this.getAttribute("type")?this.checked:this.value)==n.value;i?(e.style.display=t?"":"none",e.style.visibility=t?"":"hidden"):e.style.opacity=t?"":"0.4",Array.prototype.forEach.call(r,function(e){t?e.removeAttribute("readonly"):e.setAttribute("readonly","readonly")})}}Array.prototype.forEach.call(t,function(e){o.call(e)}),a.bindEventToElements(t,"change",o)}),t.exports=a},{}],3:[function(e,t,n){"use strict";var r=window.jQuery,i=mc4wp_vars,o=i.i18n;function a(){this.working=!1,this.done=!1,i.mailchimp.api_connected&&0===i.mailchimp.lists.length&&this.fetch()}a.prototype.fetch=function(e){e&&e.preventDefault(),this.working=!0,this.done=!1,r.post(ajaxurl,{action:"mc4wp_renew_mailchimp_lists",timeout:18e4}).done(function(e){this.success=!0,e&&window.setTimeout(function(){window.location.reload()},3e3)}.bind(this)).fail(function(e){this.success=!1}.bind(this)).always(function(e){this.working=!1,this.done=!0,m.redraw()}.bind(this))},a.prototype.view=function(){return m("form",{method:"POST",onsubmit:this.fetch.bind(this)},[m("p",[m("input",{type:"submit",value:this.working?o.fetching_mailchimp_lists:o.renew_mailchimp_lists,className:"button",disabled:!!this.working}),m.trust(" &nbsp; "),this.working?[m("span.mc4wp-loader","Loading..."),m.trust(" &nbsp; "),m("em.help",o.fetching_mailchimp_lists_can_take_a_while)]:"",this.done?[this.success?m("em.help.green",o.fetching_mailchimp_lists_done):m("em.help.red",o.fetching_mailchimp_lists_error)]:""])])},t.exports=a},{}],4:[function(e,t,n){"use strict";function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.exports=function(e,t,n){e.querySelector("form");var r=e.querySelectorAll(".mc4wp-list-input"),i=mc4wp_vars.mailchimp.lists,o=[];function a(){return o=[],Array.prototype.forEach.call(r,function(e){("boolean"!=typeof e.checked||e.checked)&&"object"===l(i[e.value])&&o.push(i[e.value])}),n.trigger("selectedLists.change",[o]),o}return n.on("selectedLists.change",function(){var e=document.querySelectorAll(".lists--only-selected > *");Array.prototype.forEach.call(e,function(e){var t,n,r=e.getAttribute("data-list-id");0<(t="id",n=r,o.filter(function(e){return e[t]===n})).length?e.setAttribute("class",e.getAttribute("class").replace("hidden","")):e.setAttribute("class",e.getAttribute("class")+" hidden")})}),t.bindEventToElements(r,"change",a),a(),{getSelectedLists:function(){return o}}}},{}],5:[function(e,t,n){"use strict";var d=e("./url.js");t.exports=function(i){var o=window.jQuery,e=o(i),r=e.find(".tab"),a=e.find(".nav-tab"),l=i.querySelector('input[name="_wp_http_referer"]'),s=[];function u(e){for(var t=0;t<s.length;t++)if(s[t].id===e)return s[t]}function c(e,t){if("string"==typeof e&&(e=u(e)),!e)return!1;null==t&&(t=!0),r.removeClass("tab-active").css("display","none"),a.removeClass("nav-tab-active"),Array.prototype.forEach.call(e.nav,function(e){e.className+=" nav-tab-active",e.blur()}),e.element.style.display="block",e.element.className+=" tab-active";var n=d.setParameter(window.location.href,"tab",e.id);return history.pushState&&t&&history.pushState(e.id,"",n),f(e),l.value=n,"function"==typeof tb_remove&&tb_remove(),"fields"===e.id&&window.mc4wp&&window.mc4wp.forms&&window.mc4wp.forms.editor&&mc4wp.forms.editor.refresh(),!0}function f(e){var t=document.title.split("-");document.title=document.title.replace(t[0],e.title+" ")}function t(e){e=e||window.event;var t=this.getAttribute("data-tab");if(!t){var n=this.className.match(/nav-tab-(\w+)?/);n&&(t=n[1])}if(!t){var r=d.parse(this.href);if(!r.tab)return;t=r.tab}return!c(t)||(e.preventDefault(),e.returnValue=!1)}return o.each(r,function(e,t){var n=t.id.substring(4),r=o(t).find("h2").first().text();s.push({id:n,title:r,element:t,nav:i.querySelectorAll(".nav-tab-"+n),open:function(){return c(n)}})}),a.click(t),o(document.body).on("click",".tab-link",t),function(){if(history.pushState){var e=r.filter(":visible").get(0);if(e){var t=u(e.id.substring(4));t&&(history.replaceState&&null===history.state&&history.replaceState(t.id,""),f(t))}}}(),window.addEventListener&&history.pushState&&window.addEventListener("popstate",function(e){return!e.state||c(e.state,!1)}),{open:c,get:u}}},{"./url.js":6}],6:[function(e,t,n){"use strict";var i={parse:function(e){var t={},n=e.split("&");for(var r in n)if(n.hasOwnProperty(r)){var i=n[r].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t},build:function(e){var t=[];for(var n in e)t.push(n+"="+encodeURIComponent(e[n]));return t.join("&")},setParameter:function(e,t,n){var r=i.parse(e);return r[t]=n,i.build(r)}};t.exports=i},{}],7:[function(e,L,t){(function(k,S){!function(){"use strict";function z(e,t,n,r,i,o){return{tag:e,key:t,attrs:n,children:r,text:i,dom:o,domSize:void 0,state:void 0,_state:void 0,events:void 0,instance:void 0,skip:!1}}z.normalize=function(e){return Array.isArray(e)?z("[",void 0,void 0,z.normalizeChildren(e),void 0,void 0):null!=e&&"object"!=typeof e?z("#",void 0,void 0,!1===e?"":e,void 0,void 0):e},z.normalizeChildren=function(e){for(var t=0;t<e.length;t++)e[t]=z.normalize(e[t]);return e};var s=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,u={},c={}.hasOwnProperty;function f(e){for(var t in e)if(c.call(e,t))return!1;return!0}function e(e){var t,n=arguments[1],r=2;if(null==e||"string"!=typeof e&&"function"!=typeof e&&"function"!=typeof e.view)throw Error("The selector must be either a string or a component.");if("string"==typeof e)var i=u[e]||function(e){for(var t,n="div",r=[],i={};t=s.exec(e);){var o=t[1],a=t[2];if(""===o&&""!==a)n=a;else if("#"===o)i.id=a;else if("."===o)r.push(a);else if("["===t[3][0]){var l=t[6];l&&(l=l.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),"class"===t[4]?r.push(l):i[t[4]]=""===l?l:l||!0}}return 0<r.length&&(i.className=r.join(" ")),u[e]={tag:n,attrs:i}}(e);if(null==n?n={}:("object"!=typeof n||null!=n.tag||Array.isArray(n))&&(n={},r=1),arguments.length===r+1)t=arguments[r],Array.isArray(t)||(t=[t]);else for(t=[];r<arguments.length;)t.push(arguments[r++]);var o=z.normalizeChildren(t);return"string"==typeof e?function(e,t,n){var r,i,o=!1,a=t.className||t.class;if(!f(e.attrs)&&!f(t)){var l={};for(var s in t)c.call(t,s)&&(l[s]=t[s]);t=l}for(var s in e.attrs)c.call(e.attrs,s)&&(t[s]=e.attrs[s]);for(var s in void 0!==a&&(void 0!==t.class&&(t.class=void 0,t.className=a),null!=e.attrs.className&&(t.className=e.attrs.className+" "+a)),t)if(c.call(t,s)&&"key"!==s){o=!0;break}return Array.isArray(n)&&1===n.length&&null!=n[0]&&"#"===n[0].tag?i=n[0].children:r=n,z(e.tag,t.key,o?t:void 0,r,i)}(i,n,o):z(e,n.key,n,o)}e.trust=function(e){return null==e&&(e=""),z("<",void 0,void 0,e,void 0,void 0)},e.fragment=function(e,t){return z("[",e.key,e,z.normalizeChildren(t),void 0,void 0)};var t=e;if((d=function(e){if(!(this instanceof d))throw new Error("Promise must be called with `new`");if("function"!=typeof e)throw new TypeError("executor must be a function");var o=this,a=[],l=[],i=t(a,!0),s=t(l,!1),u=o._instance={resolvers:a,rejectors:l},c="function"==typeof S?S:setTimeout;function t(r,i){return function t(n){var e;try{if(!i||null==n||"object"!=typeof n&&"function"!=typeof n||"function"!=typeof(e=n.then))c(function(){i||0!==r.length||console.error("Possible unhandled promise rejection:",n);for(var e=0;e<r.length;e++)r[e](n);a.length=0,l.length=0,u.state=i,u.retry=function(){t(n)}});else{if(n===o)throw new TypeError("Promise can't be resolved w/ itself");f(e.bind(n))}}catch(e){s(e)}}}function f(e){var n=0;function t(t){return function(e){0<n++||t(e)}}var r=t(s);try{e(t(i),r)}catch(e){r(e)}}f(e)}).prototype.then=function(e,t){var i,o,a=this._instance;function n(t,e,n,r){e.push(function(e){if("function"!=typeof t)n(e);else try{i(t(e))}catch(e){o&&o(e)}}),"function"==typeof a.retry&&r===a.state&&a.retry()}var r=new d(function(e,t){i=e,o=t});return n(e,a.resolvers,i,!0),n(t,a.rejectors,o,!1),r},d.prototype.catch=function(e){return this.then(null,e)},d.resolve=function(t){return t instanceof d?t:new d(function(e){e(t)})},d.reject=function(n){return new d(function(e,t){t(n)})},d.all=function(l){return new d(function(n,r){var i=l.length,o=0,a=[];if(0===l.length)n([]);else for(var e=0;e<l.length;e++)!function(t){function e(e){o++,a[t]=e,o===i&&n(a)}null==l[t]||"object"!=typeof l[t]&&"function"!=typeof l[t]||"function"!=typeof l[t].then?e(l[t]):l[t].then(e,r)}(e)})},d.race=function(r){return new d(function(e,t){for(var n=0;n<r.length;n++)r[n].then(e,t)})},"undefined"!=typeof window){void 0===window.Promise&&(window.Promise=d);var d=window.Promise}else if(void 0!==k){void 0===k.Promise&&(k.Promise=d);d=k.Promise}var p=function(e){if("[object Object]"!==Object.prototype.toString.call(e))return"";var r=[];for(var t in e)i(t,e[t]);return r.join("&");function i(e,t){if(Array.isArray(t))for(var n=0;n<t.length;n++)i(e+"["+n+"]",t[n]);else if("[object Object]"===Object.prototype.toString.call(t))for(var n in t)i(e+"["+n+"]",t[n]);else r.push(encodeURIComponent(e)+(null!=t&&""!==t?"="+encodeURIComponent(t):""))}},m=new RegExp("^file://","i"),n=function(s,r){var t,o=0;function a(){var i=0;function o(){0==--i&&"function"==typeof t&&t()}return function t(n){var r=n.then;return n.then=function(){i++;var e=r.apply(n,arguments);return e.then(o,function(e){if(o(),0===i)throw e}),t(e)},n}}function u(e,t){if("string"==typeof e){var n=e;null==(e=t||{}).url&&(e.url=n)}return e}function c(e,t){if(null==t)return e;for(var n=e.match(/:[^\/]+/gi)||[],r=0;r<n.length;r++){var i=n[r].slice(1);null!=t[i]&&(e=e.replace(n[r],t[i]))}return e}function f(e,t){var n=p(t);if(""!==n){var r=e.indexOf("?")<0?"?":"&";e+=r+n}return e}function d(t){try{return""!==t?JSON.parse(t):null}catch(e){throw new Error(t)}}function h(e){return e.responseText}function v(e,t){if("function"==typeof e){if(!Array.isArray(t))return new e(t);for(var n=0;n<t.length;n++)t[n]=new e(t[n])}return t}return{request:function(l,e){var t=a();l=u(l,e);var n=new r(function(r,i){null==l.method&&(l.method="GET"),l.method=l.method.toUpperCase();var e="GET"!==l.method&&"TRACE"!==l.method&&("boolean"!=typeof l.useBody||l.useBody);"function"!=typeof l.serialize&&(l.serialize="undefined"!=typeof FormData&&l.data instanceof FormData?function(e){return e}:JSON.stringify),"function"!=typeof l.deserialize&&(l.deserialize=d),"function"!=typeof l.extract&&(l.extract=h),l.url=c(l.url,l.data),e?l.data=l.serialize(l.data):l.url=f(l.url,l.data);var o=new s.XMLHttpRequest,a=!1,t=o.abort;for(var n in o.abort=function(){a=!0,t.call(o)},o.open(l.method,l.url,"boolean"!=typeof l.async||l.async,"string"==typeof l.user?l.user:void 0,"string"==typeof l.password?l.password:void 0),l.serialize!==JSON.stringify||!e||l.headers&&l.headers.hasOwnProperty("Content-Type")||o.setRequestHeader("Content-Type","application/json; charset=utf-8"),l.deserialize!==d||l.headers&&l.headers.hasOwnProperty("Accept")||o.setRequestHeader("Accept","application/json, text/*"),l.withCredentials&&(o.withCredentials=l.withCredentials),l.headers)({}).hasOwnProperty.call(l.headers,n)&&o.setRequestHeader(n,l.headers[n]);"function"==typeof l.config&&(o=l.config(o,l)||o),o.onreadystatechange=function(){if(!a&&4===o.readyState)try{var e=l.extract!==h?l.extract(o,l):l.deserialize(l.extract(o,l));if(200<=o.status&&o.status<300||304===o.status||m.test(l.url))r(v(l.type,e));else{var t=new Error(o.responseText);for(var n in e)t[n]=e[n];i(t)}}catch(e){i(e)}},e&&null!=l.data?o.send(l.data):o.send()});return!0===l.background?n:t(n)},jsonp:function(i,e){var t=a();i=u(i,e);var n=new r(function(t,e){var n=i.callbackName||"_mithril_"+Math.round(1e16*Math.random())+"_"+o++,r=s.document.createElement("script");s[n]=function(e){r.parentNode.removeChild(r),t(v(i.type,e)),delete s[n]},r.onerror=function(){r.parentNode.removeChild(r),e(new Error("JSONP request failed")),delete s[n]},null==i.data&&(i.data={}),i.url=c(i.url,i.data),i.data[i.callbackKey||"callback"]=n,r.src=f(i.url,i.data),s.document.documentElement.appendChild(r)});return!0===i.background?n:t(n)},setCompletionCallback:function(e){t=e}}}(window,d),r=function(e){var a,d=e.document,u=d.createDocumentFragment(),t={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"};function h(e){return e.attrs&&e.attrs.xmlns||t[e.tag]}function b(e,t,n,r,i,o,a){for(var l=n;l<r;l++){var s=t[l];null!=s&&x(e,s,i,a,o)}}function x(e,t,n,r,i){var o,a,l,s=t.tag;if("string"!=typeof s)return function(e,t,n,r,i){{if(p(t,n),null==t.instance)return t.domSize=0,u;var o=x(e,t.instance,n,r,i);return t.dom=t.instance.dom,t.domSize=null!=t.dom?t.instance.domSize:0,k(e,o,i),o}}(e,t,n,r,i);switch(t.state={},null!=t.attrs&&j(t.attrs,t,n),s){case"#":return o=e,l=i,(a=t).dom=d.createTextNode(a.children),k(o,a.dom,l),a.dom;case"<":return v(e,t,i);case"[":return function(e,t,n,r,i){var o=d.createDocumentFragment();if(null!=t.children){var a=t.children;b(o,a,0,a.length,n,null,r)}return t.dom=o.firstChild,t.domSize=o.childNodes.length,k(e,o,i),o}(e,t,n,r,i);default:return function(e,t,n,r,i){var o=t.tag,a=t.attrs,l=a&&a.is,s=(r=h(t)||r)?l?d.createElementNS(r,o,{is:l}):d.createElementNS(r,o):l?d.createElement(o,{is:l}):d.createElement(o);t.dom=s,null!=a&&function(e,t,n){for(var r in t)w(e,r,null,t[r],n)}(t,a,r);if(k(e,s,i),null!=t.attrs&&null!=t.attrs.contenteditable)y(t);else if(null!=t.text&&(""!==t.text?s.textContent=t.text:t.children=[z("#",void 0,void 0,t.text,void 0,void 0)]),null!=t.children){var u=t.children;b(s,u,0,u.length,n,null,r),f=(c=t).attrs,"select"===c.tag&&null!=f&&("value"in f&&w(c,"value",null,f.value,void 0),"selectedIndex"in f&&w(c,"selectedIndex",null,f.selectedIndex,void 0))}var c,f;return s}(e,t,n,r,i)}}function v(e,t,n){var r={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[(t.children.match(/^\s*?<(\w+)/im)||[])[1]]||"div",i=d.createElement(r);i.innerHTML=t.children,t.dom=i.firstChild,t.domSize=i.childNodes.length;for(var o,a=d.createDocumentFragment();o=i.firstChild;)a.appendChild(o);return k(e,a,n),a}function p(e,t){var n;if("function"==typeof e.tag.view){if(e.state=Object.create(e.tag),null!=(n=e.state.view).$$reentrantLock$$)return u;n.$$reentrantLock$$=!0}else{if(e.state=void 0,null!=(n=e.tag).$$reentrantLock$$)return u;n.$$reentrantLock$$=!0,e.state=null!=e.tag.prototype&&"function"==typeof e.tag.prototype.view?new e.tag(e):e.tag(e)}if(e._state=e.state,null!=e.attrs&&j(e.attrs,e,t),j(e._state,e,t),e.instance=z.normalize(e._state.view.call(e.state,e)),e.instance===e)throw Error("A view cannot return the vnode it received as argument");n.$$reentrantLock$$=null}function m(e,t,n,r,i,o,a){if(t!==n&&(null!=t||null!=n))if(null==t)b(e,n,0,n.length,i,o,a);else if(null==n)S(t,0,t.length,n);else{if(t.length===n.length){for(var l=!1,s=0;s<n.length;s++)if(null!=n[s]&&null!=t[s]){l=null==n[s].key&&null==t[s].key;break}if(l){for(s=0;s<t.length;s++)t[s]!==n[s]&&(null==t[s]&&null!=n[s]?x(e,n[s],i,a,T(t,s+1,o)):null==n[s]?S(t,s,s+1,n):E(e,t[s],n[s],i,T(t,s+1,o),r,a));return}}if(r=r||function(e,t){if(null!=e.pool&&Math.abs(e.pool.length-t.length)<=Math.abs(e.length-t.length)){var n=e[0]&&e[0].children&&e[0].children.length||0,r=e.pool[0]&&e.pool[0].children&&e.pool[0].children.length||0,i=t[0]&&t[0].children&&t[0].children.length||0;if(Math.abs(r-i)<=Math.abs(n-i))return!0}return!1}(t,n)){var u=t.pool;t=t.concat(t.pool)}for(var c,f=0,d=0,h=t.length-1,v=n.length-1;f<=h&&d<=v;){if((m=t[f])!==(y=n[d])||r)if(null==m)f++;else if(null==y)d++;else if(m.key===y.key){var p=null!=u&&f>=t.length-u.length||null==u&&r;d++,E(e,m,y,i,T(t,++f,o),p,a),r&&m.tag===y.tag&&k(e,_(m),o)}else{if((m=t[h])!==y||r)if(null==m)h--;else if(null==y)d++;else{if(m.key!==y.key)break;p=null!=u&&h>=t.length-u.length||null==u&&r;E(e,m,y,i,T(t,h+1,o),p,a),(r||d<v)&&k(e,_(m),T(t,f,o)),h--,d++}else h--,d++}else f++,d++}for(;f<=h&&d<=v;){var m,y;if((m=t[h])!==(y=n[v])||r)if(null==m)h--;else if(null==y)v--;else if(m.key===y.key){p=null!=u&&h>=t.length-u.length||null==u&&r;E(e,m,y,i,T(t,h+1,o),p,a),r&&m.tag===y.tag&&k(e,_(m),o),null!=m.dom&&(o=m.dom),h--,v--}else{if(c||(c=A(t,h)),null!=y){var g=c[y.key];if(null!=g){var w=t[g];p=null!=u&&g>=t.length-u.length||null==u&&r;E(e,w,y,i,T(t,h+1,o),r,a),k(e,_(w),o),t[g].skip=!0,null!=w.dom&&(o=w.dom)}else{o=x(e,y,i,a,o)}}v--}else h--,v--;if(v<d)break}b(e,n,d,v+1,i,o,a),S(t,f,h+1,n)}}function E(e,t,n,r,i,o,a){var l,s,u,c,f=t.tag;if(f===n.tag){if(n.state=t.state,n._state=t._state,n.events=t.events,!o&&function(e,t){var n,r;null!=e.attrs&&"function"==typeof e.attrs.onbeforeupdate&&(n=e.attrs.onbeforeupdate.call(e.state,e,t));"string"!=typeof e.tag&&"function"==typeof e._state.onbeforeupdate&&(r=e._state.onbeforeupdate.call(e.state,e,t));return!(void 0===n&&void 0===r||n||r||(e.dom=t.dom,e.domSize=t.domSize,e.instance=t.instance,0))}(n,t))return;if("string"==typeof f)switch(null!=n.attrs&&(o?(n.state={},j(n.attrs,n,r)):O(n.attrs,n,r)),f){case"#":!function(e,t){e.children.toString()!==t.children.toString()&&(e.dom.nodeValue=t.children);t.dom=e.dom}(t,n);break;case"<":l=e,u=n,c=i,(s=t).children!==u.children?(_(s),v(l,u,c)):(u.dom=s.dom,u.domSize=s.domSize);break;case"[":!function(e,t,n,r,i,o,a){m(e,t.children,n.children,r,i,o,a);var l=0,s=n.children;if((n.dom=null)!=s){for(var u=0;u<s.length;u++){var c=s[u];null!=c&&null!=c.dom&&(null==n.dom&&(n.dom=c.dom),l+=c.domSize||1)}1!==l&&(n.domSize=l)}}(e,t,n,o,r,i,a);break;default:!function(e,t,n,r,i){var o=t.dom=e.dom;i=h(t)||i,"textarea"===t.tag&&(null==t.attrs&&(t.attrs={}),null!=t.text&&(t.attrs.value=t.text,t.text=void 0));(function(e,t,n,r){if(null!=n)for(var i in n)w(e,i,t&&t[i],n[i],r);if(null!=t)for(var i in t)null!=n&&i in n||("className"===i&&(i="class"),"o"!==i[0]||"n"!==i[1]||L(i)?"key"!==i&&e.dom.removeAttribute(i):C(e,i,void 0))})(t,e.attrs,t.attrs,i),null!=t.attrs&&null!=t.attrs.contenteditable?y(t):null!=e.text&&null!=t.text&&""!==t.text?e.text.toString()!==t.text.toString()&&(e.dom.firstChild.nodeValue=t.text):(null!=e.text&&(e.children=[z("#",void 0,void 0,e.text,void 0,e.dom.firstChild)]),null!=t.text&&(t.children=[z("#",void 0,void 0,t.text,void 0,void 0)]),m(o,e.children,t.children,n,r,null,i))}(t,n,o,r,a)}else!function(e,t,n,r,i,o,a){if(o)p(n,r);else{if(n.instance=z.normalize(n._state.view.call(n.state,n)),n.instance===n)throw Error("A view cannot return the vnode it received as argument");null!=n.attrs&&O(n.attrs,n,r),O(n._state,n,r)}null!=n.instance?(null==t.instance?x(e,n.instance,r,a,i):E(e,t.instance,n.instance,r,i,o,a),n.dom=n.instance.dom,n.domSize=n.instance.domSize):null!=t.instance?(g(t.instance,null),n.dom=void 0,n.domSize=0):(n.dom=t.dom,n.domSize=t.domSize)}(e,t,n,r,i,o,a)}else g(t,null),x(e,n,r,a,i)}function A(e,t){var n={},r=0;for(r=0;r<t;r++){var i=e[r];if(null!=i){var o=i.key;null!=o&&(n[o]=r)}}return n}function _(e){var t=e.domSize;if(null==t&&null!=e.dom)return e.dom;var n=d.createDocumentFragment();if(0<t){for(var r=e.dom;--t;)n.appendChild(r.nextSibling);n.insertBefore(r,n.firstChild)}return n}function T(e,t,n){for(;t<e.length;t++)if(null!=e[t]&&null!=e[t].dom)return e[t].dom;return n}function k(e,t,n){n&&n.parentNode?e.insertBefore(t,n):e.appendChild(t)}function y(e){var t=e.children;if(null!=t&&1===t.length&&"<"===t[0].tag){var n=t[0].children;e.dom.innerHTML!==n&&(e.dom.innerHTML=n)}else if(null!=e.text||null!=t&&0!==t.length)throw new Error("Child node of a contenteditable must be trusted")}function S(e,t,n,r){for(var i=t;i<n;i++){var o=e[i];null!=o&&(o.skip?o.skip=!1:g(o,r))}}function g(r,i){var e,o=1,a=0;r.attrs&&"function"==typeof r.attrs.onbeforeremove&&(null!=(e=r.attrs.onbeforeremove.call(r.state,r))&&"function"==typeof e.then&&(o++,e.then(t,t)));"string"!=typeof r.tag&&"function"==typeof r._state.onbeforeremove&&(null!=(e=r._state.onbeforeremove.call(r.state,r))&&"function"==typeof e.then&&(o++,e.then(t,t)));function t(){if(++a===o&&(function e(t){t.attrs&&"function"==typeof t.attrs.onremove&&t.attrs.onremove.call(t.state,t);if("string"!=typeof t.tag)"function"==typeof t._state.onremove&&t._state.onremove.call(t.state,t),null!=t.instance&&e(t.instance);else{var n=t.children;if(Array.isArray(n))for(var r=0;r<n.length;r++){var i=n[r];null!=i&&e(i)}}}(r),r.dom)){var e=r.domSize||1;if(1<e)for(var t=r.dom;--e;)l(t.nextSibling);l(r.dom),null==i||null!=r.domSize||null!=(n=r.attrs)&&(n.oncreate||n.onupdate||n.onbeforeremove||n.onremove)||"string"!=typeof r.tag||(i.pool?i.pool.push(r):i.pool=[r])}var n}t()}function l(e){var t=e.parentNode;null!=t&&t.removeChild(e)}function w(e,t,n,r,i){var o=e.dom;if("key"!==t&&"is"!==t&&(n!==r||(a=e,"value"===(l=t)||"checked"===l||"selectedIndex"===l||"selected"===l&&a.dom===d.activeElement)||"object"==typeof r)&&void 0!==r&&!L(t)){var a,l,s,u,c=t.indexOf(":");if(-1<c&&"xlink"===t.substr(0,c))o.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(c+1),r);else if("o"===t[0]&&"n"===t[1]&&"function"==typeof r)C(e,t,r);else if("style"===t)!function(e,t,n){t===n&&(e.style.cssText="",t=null);if(null==n)e.style.cssText="";else if("string"==typeof n)e.style.cssText=n;else{for(var r in"string"==typeof t&&(e.style.cssText=""),n)e.style[r]=n[r];if(null!=t&&"string"!=typeof t)for(var r in t)r in n||(e.style[r]="")}}(o,n,r);else if(t in o&&("href"!==(u=t)&&"list"!==u&&"form"!==u&&"width"!==u&&"height"!==u)&&void 0===i&&!((s=e).attrs.is||-1<s.tag.indexOf("-"))){if("value"===t){var f=""+r;if(("input"===e.tag||"textarea"===e.tag)&&e.dom.value===f&&e.dom===d.activeElement)return;if("select"===e.tag)if(null===r){if(-1===e.dom.selectedIndex&&e.dom===d.activeElement)return}else if(null!==n&&e.dom.value===f&&e.dom===d.activeElement)return;if("option"===e.tag&&null!=n&&e.dom.value===f)return}if("input"===e.tag&&"type"===t)return void o.setAttribute(t,r);o[t]=r}else"boolean"==typeof r?r?o.setAttribute(t,""):o.removeAttribute(t):o.setAttribute("className"===t?"class":t,r)}}function L(e){return"oninit"===e||"oncreate"===e||"onupdate"===e||"onremove"===e||"onbeforeremove"===e||"onbeforeupdate"===e}function C(e,t,n){var r=e.dom,i="function"!=typeof a?n:function(e){var t=n.call(r,e);return a.call(r,e),t};if(t in r)r[t]="function"==typeof n?i:null;else{var o=t.slice(2);if(void 0===e.events&&(e.events={}),e.events[t]===i)return;null!=e.events[t]&&r.removeEventListener(o,e.events[t],!1),"function"==typeof n&&(e.events[t]=i,r.addEventListener(o,e.events[t],!1))}}function j(e,t,n){"function"==typeof e.oninit&&e.oninit.call(t.state,t),"function"==typeof e.oncreate&&n.push(e.oncreate.bind(t.state,t))}function O(e,t,n){"function"==typeof e.onupdate&&n.push(e.onupdate.bind(t.state,t))}return{render:function(e,t){if(!e)throw new Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.");var n=[],r=d.activeElement,i=e.namespaceURI;null==e.vnodes&&(e.textContent=""),Array.isArray(t)||(t=[t]),m(e,e.vnodes,z.normalizeChildren(t),!1,n,null,"http://www.w3.org/1999/xhtml"===i?void 0:i),e.vnodes=t,null!=r&&d.activeElement!==r&&r.focus();for(var o=0;o<n.length;o++)n[o]()},setEventCallback:function(e){return a=e}}};var i=function(e){var t=r(e);t.setEventCallback(function(e){!1===e.redraw?e.redraw=void 0:n()});var a=[];function l(e){var t=a.indexOf(e);-1<t&&a.splice(t,2)}function n(){for(var e=1;e<a.length;e+=2)a[e]()}return{subscribe:function(e,t){var n,r,i,o;l(e),a.push(e,(n=t,r=0,i=null,o="function"==typeof requestAnimationFrame?requestAnimationFrame:setTimeout,function(){var e=Date.now();0===r||16<=e-r?(r=e,n()):null===i&&(i=o(function(){i=null,n(),r=Date.now()},16-(e-r)))}))},unsubscribe:l,redraw:n,render:t.render}}(window);n.setCompletionCallback(i.redraw);var o;t.mount=(o=i,function(e,t){if(null===t)return o.render(e,[]),void o.unsubscribe(e);if(null==t.view&&"function"!=typeof t)throw new Error("m.mount(element, component) expects a component, not a vnode");o.subscribe(e,function(){o.render(e,z(t))}),o.redraw()});var a,l,h,v,y,g,w,b,x,E=d,A=function(e){if(""===e||null==e)return{};"?"===e.charAt(0)&&(e=e.slice(1));for(var t=e.split("&"),n={},r={},i=0;i<t.length;i++){var o=t[i].split("="),a=decodeURIComponent(o[0]),l=2===o.length?decodeURIComponent(o[1]):"";"true"===l?l=!0:"false"===l&&(l=!1);var s=a.split(/\]\[?|\[/),u=n;-1<a.indexOf("[")&&s.pop();for(var c=0;c<s.length;c++){var f=s[c],d=s[c+1],h=""==d||!isNaN(parseInt(d,10)),v=c===s.length-1;if(""===f)null==r[a=s.slice(0,c).join()]&&(r[a]=0),f=r[a]++;null==u[f]&&(u[f]=v?l:h?[]:{}),u=u[f]}}return n},_=function(c){var n,f="function"==typeof c.history.pushState,r="function"==typeof S?S:setTimeout;function e(e){var t=c.location[e].replace(/(?:%[a-f89][a-f0-9])+/gim,decodeURIComponent);return"pathname"===e&&"/"!==t[0]&&(t="/"+t),t}function d(e,t,n){var r=e.indexOf("?"),i=e.indexOf("#"),o=-1<r?r:-1<i?i:e.length;if(-1<r){var a=-1<i?i:e.length,l=A(e.slice(r+1,a));for(var s in l)t[s]=l[s]}if(-1<i){var u=A(e.slice(i+1));for(var s in u)n[s]=u[s]}return e.slice(0,o)}var h={prefix:"#!",getPath:function(){switch(h.prefix.charAt(0)){case"#":return e("hash").slice(h.prefix.length);case"?":return e("search").slice(h.prefix.length)+e("hash");default:return e("pathname").slice(h.prefix.length)+e("search")+e("hash")}},setPath:function(e,n,t){var r={},i={};if(e=d(e,r,i),null!=n){for(var o in n)r[o]=n[o];e=e.replace(/:([^\/]+)/g,function(e,t){return delete r[t],n[t]})}var a=p(r);a&&(e+="?"+a);var l=p(i);if(l&&(e+="#"+l),f){var s=t?t.state:null,u=t?t.title:null;c.onpopstate(),t&&t.replace?c.history.replaceState(s,u,h.prefix+e):c.history.pushState(s,u,h.prefix+e)}else c.location.href=h.prefix+e}};return h.defineRoutes=function(l,s,u){function e(){var r=h.getPath(),i={},e=d(r,i,i),t=c.history.state;if(null!=t)for(var n in t)i[n]=t[n];for(var o in l){var a=new RegExp("^"+o.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(a.test(e))return void e.replace(a,function(){for(var e=o.match(/:[^\/]+/g)||[],t=[].slice.call(arguments,1,-2),n=0;n<e.length;n++)i[e[n].replace(/:|\./g,"")]=decodeURIComponent(t[n]);s(l[o],i,r,o)})}u(r,i)}var t;f?c.onpopstate=(t=e,function(){null==n&&(n=r(function(){n=null,t()}))}):"#"===h.prefix.charAt(0)&&(c.onhashchange=e),e()},h};t.route=(a=window,l=i,b=_(a),(x=function(e,t,n){if(null==e)throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined");var o=function(){null!=h&&l.render(e,h(z(v,y.key,y)))},a=function(e){if(e===t)throw new Error("Could not resolve default route "+t);b.setPath(t,null,{replace:!0})};b.defineRoutes(n,function(t,n,r){var i=w=function(e,t){i===w&&(v=null==t||"function"!=typeof t.view&&"function"!=typeof t?"div":t,y=n,g=r,w=null,h=(e.render||function(e){return e}).bind(e),o())};t.view||"function"==typeof t?i({},t):t.onmatch?E.resolve(t.onmatch(n,r)).then(function(e){i(t,e)},a):i(t,"div")},a),l.subscribe(e,o)}).set=function(e,t,n){null!=w&&((n=n||{}).replace=!0),w=null,b.setPath(e,t,n)},x.get=function(){return g},x.prefix=function(e){b.prefix=e},x.link=function(e){e.dom.setAttribute("href",b.prefix+e.attrs.href),e.dom.onclick=function(e){if(!(e.ctrlKey||e.metaKey||e.shiftKey||2===e.which)){e.preventDefault(),e.redraw=!1;var t=this.getAttribute("href");0===t.indexOf(b.prefix)&&(t=t.slice(b.prefix.length)),x.set(t,void 0,void 0)}}},x.param=function(e){return void 0!==y&&void 0!==e?y[e]:y},x),t.withAttr=function(t,n,r){return function(e){n.call(r||this,t in e.currentTarget?e.currentTarget[t]:e.currentTarget.getAttribute(t))}};var T=r(window);t.render=T.render,t.redraw=i.redraw,t.request=n.request,t.jsonp=n.jsonp,t.parseQueryString=A,t.buildQueryString=p,t.version="1.1.6",t.vnode=z,void 0!==L?L.exports=t:window.m=t}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("timers").setImmediate)},{timers:9}],8:[function(e,t,n){var r,i,o=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function l(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{i="function"==typeof clearTimeout?clearTimeout:l}catch(e){i=l}}();var u,c=[],f=!1,d=-1;function h(){f&&u&&(f=!1,u.length?c=u.concat(c):d=-1,c.length&&v())}function v(){if(!f){var e=s(h);f=!0;for(var t=c.length;t;){for(u=c,c=[];++d<t;)u&&u[d].run();d=-1,t=c.length}u=null,f=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===l||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function m(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new p(e,t)),1!==c.length||f||s(v)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],9:[function(s,e,u){(function(e,t){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,i=Array.prototype.slice,o={},a=0;function l(e,t){this._id=e,this._clearFn=t}u.setTimeout=function(){return new l(n.call(setTimeout,window,arguments),clearTimeout)},u.setInterval=function(){return new l(n.call(setInterval,window,arguments),clearInterval)},u.clearTimeout=u.clearInterval=function(e){e.close()},l.prototype.unref=l.prototype.ref=function(){},l.prototype.close=function(){this._clearFn.call(window,this._id)},u.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},u.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},u._unrefActive=u.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},u.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&i.call(arguments,1);return o[t]=!0,r(function(){o[t]&&(n?e.apply(null,n):e.call(null),u.clearImmediate(t))}),t},u.clearImmediate="function"==typeof t?t:function(e){delete o[e]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":8,timers:9}],10:[function(e,t,n){function u(r){document.addEventListener("mouseover",function(e){var t=e.target,n=r(t);n||(n=(t=t.parentElement)&&r(t)),n&&u.show(t,n,!0)})}u.show=function(e,t,l){var s="data-tlite";t=t||{},(e.tooltip||function(e,t){var n,r,i;function o(){u.hide(e,!0)}function a(){n||(n=function(l,e,t){var s=document.createElement("span"),n=t.grav||l.getAttribute("data-tlite")||"n";s.innerHTML=e,l.appendChild(s);var u=n[0]||"",c=n[1]||"";function r(){s.className="tlite tlite-"+u+c;var e=l.offsetTop,t=l.offsetLeft;s.offsetParent===l&&(e=t=0);var n=l.offsetWidth,r=l.offsetHeight,i=s.offsetHeight,o=s.offsetWidth,a=t+n/2;s.style.top=("s"===u?e-i-10:"n"===u?e+r+10:e+r/2-i/2)+"px",s.style.left=("w"===c?t:"e"===c?t+n-o:"w"===u?t+n+10:"e"===u?t-o-10:a-o/2)+"px"}r();var i=s.getBoundingClientRect();"s"===u&&i.top<0?(u="n",r()):"n"===u&&i.bottom>window.innerHeight?(u="s",r()):"e"===u&&i.left<0?(u="w",r()):"w"===u&&i.right>window.innerWidth&&(u="e",r());return s.className+=" tlite-visible",s}(e,i,t))}return e.addEventListener("mousedown",o),e.addEventListener("mouseleave",o),e.tooltip={show:function(){i=e.title||e.getAttribute(s)||i,e.title="",e.setAttribute(s,""),i&&!r&&(r=setTimeout(a,l?150:1))},hide:function(e){if(l===e){r=clearTimeout(r);var t=n&&n.parentNode;t&&t.removeChild(n),n=void 0}}}}(e,t)).show()},u.hide=function(e,t){e.tooltip&&e.tooltip.hide(t)},void 0!==t&&t.exports&&(t.exports=u)},{}],11:[function(e,a,t){!function(e){"use strict";function t(){}var n=t.prototype,r=e.EventEmitter;function o(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function i(e){return function(){return this[e].apply(this,arguments)}}n.getListeners=function(e){var t,n,r=this._getEvents();if(e instanceof RegExp)for(n in t={},r)r.hasOwnProperty(n)&&e.test(n)&&(t[n]=r[n]);else t=r[e]||(r[e]=[]);return t},n.flattenListeners=function(e){var t,n=[];for(t=0;t<e.length;t+=1)n.push(e[t].listener);return n},n.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&((t={})[e]=n),t||n},n.addListener=function(e,t){if(!function e(t){return"function"==typeof t||t instanceof RegExp||!(!t||"object"!=typeof t)&&e(t.listener)}(t))throw new TypeError("listener must be a function");var n,r=this.getListenersAsObject(e),i="object"==typeof t;for(n in r)r.hasOwnProperty(n)&&-1===o(r[n],t)&&r[n].push(i?t:{listener:t,once:!1});return this},n.on=i("addListener"),n.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},n.once=i("addOnceListener"),n.defineEvent=function(e){return this.getListeners(e),this},n.defineEvents=function(e){for(var t=0;t<e.length;t+=1)this.defineEvent(e[t]);return this},n.removeListener=function(e,t){var n,r,i=this.getListenersAsObject(e);for(r in i)i.hasOwnProperty(r)&&-1!==(n=o(i[r],t))&&i[r].splice(n,1);return this},n.off=i("removeListener"),n.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},n.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},n.manipulateListeners=function(e,t,n){var r,i,o=e?this.removeListener:this.addListener,a=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(r=n.length;r--;)o.call(this,t,n[r]);else for(r in t)t.hasOwnProperty(r)&&(i=t[r])&&("function"==typeof i?o.call(this,r,i):a.call(this,r,i));return this},n.removeEvent=function(e){var t,n=typeof e,r=this._getEvents();if("string"===n)delete r[e];else if(e instanceof RegExp)for(t in r)r.hasOwnProperty(t)&&e.test(t)&&delete r[t];else delete this._events;return this},n.removeAllListeners=i("removeEvent"),n.emitEvent=function(e,t){var n,r,i,o,a=this.getListenersAsObject(e);for(o in a)if(a.hasOwnProperty(o))for(n=a[o].slice(0),i=0;i<n.length;i++)!0===(r=n[i]).once&&this.removeListener(e,r.listener),r.listener.apply(this,t||[])===this._getOnceReturnValue()&&this.removeListener(e,r.listener);return this},n.trigger=i("emitEvent"),n.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},n.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},n._getOnceReturnValue=function(){return!this.hasOwnProperty("_onceReturnValue")||this._onceReturnValue},n._getEvents=function(){return this._events||(this._events={})},t.noConflict=function(){return e.EventEmitter=r,t},"function"==typeof l&&l.amd?l(function(){return t}):"object"==typeof a&&a.exports?a.exports=t:e.EventEmitter=t}("undefined"!=typeof window?window:this||{})},{}]},{},[1])}();
2
  //# sourceMappingURL=admin.min.js.map
1
+ !function(){var l=void 0;!function o(a,l,s){function u(t,e){if(!l[t]){if(!a[t]){var n=!1;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var i=l[t]={exports:{}};a[t][0].call(i.exports,function(e){return u(a[t][1][e]||e)},i,i.exports,o,a,l,s)}return l[t].exports}for(var c=!1,e=0;e<s.length;e++)u(s[e]);return u}({1:[function(e,t,n){"use strict";var r,i=(r=e("tlite"))&&r.__esModule?r:{default:r};var o=window.m=e("mithril"),a=e("wolfy87-eventemitter"),l=document.getElementById("mc4wp-admin"),s=new a,u=e("./admin/tabs.js")(l),c=e("./admin/helpers.js"),f=e("./admin/settings.js")(l,c,s);(0,i.default)(function(e){return-1<e.className.indexOf("mc4wp-tooltip")});var d=e("./admin/list-fetcher.js"),h=document.getElementById("mc4wp-list-fetcher");h&&o.mount(h,new d),e("./admin/fields/mailchimp-api-key.js"),window.mc4wp=window.mc4wp||{},window.mc4wp.deps=window.mc4wp.deps||{},window.mc4wp.deps.mithril=o,window.mc4wp.helpers=c,window.mc4wp.events=s,window.mc4wp.settings=f,window.mc4wp.tabs=u},{"./admin/fields/mailchimp-api-key.js":2,"./admin/helpers.js":3,"./admin/list-fetcher.js":4,"./admin/settings.js":5,"./admin/tabs.js":6,mithril:8,tlite:11,"wolfy87-eventemitter":12}],2:[function(e,t,n){"use strict";var r;function i(e){var t=document.createElement("p");t.className="help red",t.innerText=window.mc4wp_vars.i18n.invalid_api_key,r.nextElementSibling.innerText===t.innerText&&r.nextElementSibling.parentElement.removeChild(r.nextElementSibling),r.value.match(/^[0-9a-zA-Z*]{32}-[a-z]{2}[0-9]{1,2}$/)||r.parentElement.insertBefore(t,r.nextElementSibling)}(r=document.getElementById("mailchimp_api_key"))&&r.addEventListener("change",i)},{}],3:[function(e,t,n){"use strict";var r,a={};a.toggleElement=function(e){for(var t=document.querySelectorAll(e),n=0;n<t.length;n++){var r=t[n].clientHeight<=0;t[n].style.display=r?"":"none"}},a.bindEventToElement=function(e,t,n){e.addEventListener?e.addEventListener(t,n):e.attachEvent&&e.attachEvent("on"+t,n)},a.bindEventToElements=function(e,t,n){Array.prototype.forEach.call(e,function(e){a.bindEventToElement(e,t,n)})},a.debounce=function(r,i,o){var a;return function(){var e=this,t=arguments,n=o&&!a;clearTimeout(a),a=setTimeout(function(){a=null,o||r.apply(e,t)},i),n&&r.apply(e,t)}},r=document.querySelectorAll("[data-showif]"),Array.prototype.forEach.call(r,function(e){var n=JSON.parse(e.getAttribute("data-showif")),t=document.querySelectorAll('[name="'+n.element+'"]'),r=e.querySelectorAll("input,select,textarea:not([readonly])"),i=void 0===n.hide||n.hide;function o(){if("radio"!==this.getAttribute("type")||this.checked){var t=("checkbox"===this.getAttribute("type")?this.checked:this.value)==n.value;i?(e.style.display=t?"":"none",e.style.visibility=t?"":"hidden"):e.style.opacity=t?"":"0.4",Array.prototype.forEach.call(r,function(e){t?e.removeAttribute("readonly"):e.setAttribute("readonly","readonly")})}}Array.prototype.forEach.call(t,function(e){o.call(e)}),a.bindEventToElements(t,"change",o)}),t.exports=a},{}],4:[function(e,t,n){"use strict";var r=window.jQuery,i=mc4wp_vars,o=i.i18n;function a(){this.working=!1,this.done=!1,i.mailchimp.api_connected&&0===i.mailchimp.lists.length&&this.fetch()}a.prototype.fetch=function(e){e&&e.preventDefault(),this.working=!0,this.done=!1,r.post(ajaxurl,{action:"mc4wp_renew_mailchimp_lists",timeout:6e5}).done(function(e){this.success=!0,e&&window.setTimeout(function(){window.location.reload()},3e3)}.bind(this)).fail(function(e){this.success=!1}.bind(this)).always(function(e){this.working=!1,this.done=!0,m.redraw()}.bind(this))},a.prototype.view=function(){return m("form",{method:"POST",onsubmit:this.fetch.bind(this)},[m("p",[m("input",{type:"submit",value:this.working?o.fetching_mailchimp_lists:o.renew_mailchimp_lists,className:"button",disabled:!!this.working}),m.trust(" &nbsp; "),this.working?[m("span.mc4wp-loader","Loading..."),m.trust(" &nbsp; "),m("em.help",o.fetching_mailchimp_lists_can_take_a_while)]:"",this.done?[this.success?m("em.help.green",o.fetching_mailchimp_lists_done):m("em.help.red",o.fetching_mailchimp_lists_error)]:""])])},t.exports=a},{}],5:[function(e,t,n){"use strict";function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.exports=function(e,t,n){e.querySelector("form");var r=e.querySelectorAll(".mc4wp-list-input"),i=mc4wp_vars.mailchimp.lists,o=[];function a(){return o=[],Array.prototype.forEach.call(r,function(e){("boolean"!=typeof e.checked||e.checked)&&"object"===l(i[e.value])&&o.push(i[e.value])}),n.trigger("selectedLists.change",[o]),o}return n.on("selectedLists.change",function(){var e=document.querySelectorAll(".lists--only-selected > *");Array.prototype.forEach.call(e,function(e){var t,n,r=e.getAttribute("data-list-id");0<(t="id",n=r,o.filter(function(e){return e[t]===n})).length?e.setAttribute("class",e.getAttribute("class").replace("hidden","")):e.setAttribute("class",e.getAttribute("class")+" hidden")})}),t.bindEventToElements(r,"change",a),a(),{getSelectedLists:function(){return o}}}},{}],6:[function(e,t,n){"use strict";var d=e("./url.js");t.exports=function(i){var o=window.jQuery,e=o(i),r=e.find(".tab"),a=e.find(".nav-tab"),l=i.querySelector('input[name="_wp_http_referer"]'),s=[];function u(e){for(var t=0;t<s.length;t++)if(s[t].id===e)return s[t]}function c(e,t){if("string"==typeof e&&(e=u(e)),!e)return!1;null==t&&(t=!0),r.removeClass("tab-active").css("display","none"),a.removeClass("nav-tab-active"),Array.prototype.forEach.call(e.nav,function(e){e.className+=" nav-tab-active",e.blur()}),e.element.style.display="block",e.element.className+=" tab-active";var n=d.setParameter(window.location.href,"tab",e.id);return history.pushState&&t&&history.pushState(e.id,"",n),f(e),l.value=n,"function"==typeof tb_remove&&tb_remove(),"fields"===e.id&&window.mc4wp&&window.mc4wp.forms&&window.mc4wp.forms.editor&&mc4wp.forms.editor.refresh(),!0}function f(e){var t=document.title.split("-");document.title=document.title.replace(t[0],e.title+" ")}function t(e){e=e||window.event;var t=this.getAttribute("data-tab");if(!t){var n=this.className.match(/nav-tab-(\w+)?/);n&&(t=n[1])}if(!t){var r=d.parse(this.href);if(!r.tab)return;t=r.tab}return!c(t)||(e.preventDefault(),e.returnValue=!1)}return o.each(r,function(e,t){var n=t.id.substring(4),r=o(t).find("h2").first().text();s.push({id:n,title:r,element:t,nav:i.querySelectorAll(".nav-tab-"+n),open:function(){return c(n)}})}),a.click(t),o(document.body).on("click",".tab-link",t),function(){if(history.pushState){var e=r.filter(":visible").get(0);if(e){var t=u(e.id.substring(4));t&&(history.replaceState&&null===history.state&&history.replaceState(t.id,""),f(t))}}}(),window.addEventListener&&history.pushState&&window.addEventListener("popstate",function(e){return!e.state||c(e.state,!1)}),{open:c,get:u}}},{"./url.js":7}],7:[function(e,t,n){"use strict";var i={parse:function(e){var t={},n=e.split("&");for(var r in n)if(n.hasOwnProperty(r)){var i=n[r].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t},build:function(e){var t=[];for(var n in e)t.push(n+"="+encodeURIComponent(e[n]));return t.join("&")},setParameter:function(e,t,n){var r=i.parse(e);return r[t]=n,i.build(r)}};t.exports=i},{}],8:[function(e,L,t){(function(k,S){!function(){"use strict";function z(e,t,n,r,i,o){return{tag:e,key:t,attrs:n,children:r,text:i,dom:o,domSize:void 0,state:void 0,_state:void 0,events:void 0,instance:void 0,skip:!1}}z.normalize=function(e){return Array.isArray(e)?z("[",void 0,void 0,z.normalizeChildren(e),void 0,void 0):null!=e&&"object"!=typeof e?z("#",void 0,void 0,!1===e?"":e,void 0,void 0):e},z.normalizeChildren=function(e){for(var t=0;t<e.length;t++)e[t]=z.normalize(e[t]);return e};var s=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,u={},c={}.hasOwnProperty;function f(e){for(var t in e)if(c.call(e,t))return!1;return!0}function e(e){var t,n=arguments[1],r=2;if(null==e||"string"!=typeof e&&"function"!=typeof e&&"function"!=typeof e.view)throw Error("The selector must be either a string or a component.");if("string"==typeof e)var i=u[e]||function(e){for(var t,n="div",r=[],i={};t=s.exec(e);){var o=t[1],a=t[2];if(""===o&&""!==a)n=a;else if("#"===o)i.id=a;else if("."===o)r.push(a);else if("["===t[3][0]){var l=t[6];l&&(l=l.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),"class"===t[4]?r.push(l):i[t[4]]=""===l?l:l||!0}}return 0<r.length&&(i.className=r.join(" ")),u[e]={tag:n,attrs:i}}(e);if(null==n?n={}:("object"!=typeof n||null!=n.tag||Array.isArray(n))&&(n={},r=1),arguments.length===r+1)t=arguments[r],Array.isArray(t)||(t=[t]);else for(t=[];r<arguments.length;)t.push(arguments[r++]);var o=z.normalizeChildren(t);return"string"==typeof e?function(e,t,n){var r,i,o=!1,a=t.className||t.class;if(!f(e.attrs)&&!f(t)){var l={};for(var s in t)c.call(t,s)&&(l[s]=t[s]);t=l}for(var s in e.attrs)c.call(e.attrs,s)&&(t[s]=e.attrs[s]);for(var s in void 0!==a&&(void 0!==t.class&&(t.class=void 0,t.className=a),null!=e.attrs.className&&(t.className=e.attrs.className+" "+a)),t)if(c.call(t,s)&&"key"!==s){o=!0;break}return Array.isArray(n)&&1===n.length&&null!=n[0]&&"#"===n[0].tag?i=n[0].children:r=n,z(e.tag,t.key,o?t:void 0,r,i)}(i,n,o):z(e,n.key,n,o)}e.trust=function(e){return null==e&&(e=""),z("<",void 0,void 0,e,void 0,void 0)},e.fragment=function(e,t){return z("[",e.key,e,z.normalizeChildren(t),void 0,void 0)};var t=e;if((d=function(e){if(!(this instanceof d))throw new Error("Promise must be called with `new`");if("function"!=typeof e)throw new TypeError("executor must be a function");var o=this,a=[],l=[],i=t(a,!0),s=t(l,!1),u=o._instance={resolvers:a,rejectors:l},c="function"==typeof S?S:setTimeout;function t(r,i){return function t(n){var e;try{if(!i||null==n||"object"!=typeof n&&"function"!=typeof n||"function"!=typeof(e=n.then))c(function(){i||0!==r.length||console.error("Possible unhandled promise rejection:",n);for(var e=0;e<r.length;e++)r[e](n);a.length=0,l.length=0,u.state=i,u.retry=function(){t(n)}});else{if(n===o)throw new TypeError("Promise can't be resolved w/ itself");f(e.bind(n))}}catch(e){s(e)}}}function f(e){var n=0;function t(t){return function(e){0<n++||t(e)}}var r=t(s);try{e(t(i),r)}catch(e){r(e)}}f(e)}).prototype.then=function(e,t){var i,o,a=this._instance;function n(t,e,n,r){e.push(function(e){if("function"!=typeof t)n(e);else try{i(t(e))}catch(e){o&&o(e)}}),"function"==typeof a.retry&&r===a.state&&a.retry()}var r=new d(function(e,t){i=e,o=t});return n(e,a.resolvers,i,!0),n(t,a.rejectors,o,!1),r},d.prototype.catch=function(e){return this.then(null,e)},d.resolve=function(t){return t instanceof d?t:new d(function(e){e(t)})},d.reject=function(n){return new d(function(e,t){t(n)})},d.all=function(l){return new d(function(n,r){var i=l.length,o=0,a=[];if(0===l.length)n([]);else for(var e=0;e<l.length;e++)!function(t){function e(e){o++,a[t]=e,o===i&&n(a)}null==l[t]||"object"!=typeof l[t]&&"function"!=typeof l[t]||"function"!=typeof l[t].then?e(l[t]):l[t].then(e,r)}(e)})},d.race=function(r){return new d(function(e,t){for(var n=0;n<r.length;n++)r[n].then(e,t)})},"undefined"!=typeof window){void 0===window.Promise&&(window.Promise=d);var d=window.Promise}else if(void 0!==k){void 0===k.Promise&&(k.Promise=d);d=k.Promise}var v=function(e){if("[object Object]"!==Object.prototype.toString.call(e))return"";var r=[];for(var t in e)i(t,e[t]);return r.join("&");function i(e,t){if(Array.isArray(t))for(var n=0;n<t.length;n++)i(e+"["+n+"]",t[n]);else if("[object Object]"===Object.prototype.toString.call(t))for(var n in t)i(e+"["+n+"]",t[n]);else r.push(encodeURIComponent(e)+(null!=t&&""!==t?"="+encodeURIComponent(t):""))}},m=new RegExp("^file://","i"),n=function(s,r){var t,o=0;function a(){var i=0;function o(){0==--i&&"function"==typeof t&&t()}return function t(n){var r=n.then;return n.then=function(){i++;var e=r.apply(n,arguments);return e.then(o,function(e){if(o(),0===i)throw e}),t(e)},n}}function u(e,t){if("string"==typeof e){var n=e;null==(e=t||{}).url&&(e.url=n)}return e}function c(e,t){if(null==t)return e;for(var n=e.match(/:[^\/]+/gi)||[],r=0;r<n.length;r++){var i=n[r].slice(1);null!=t[i]&&(e=e.replace(n[r],t[i]))}return e}function f(e,t){var n=v(t);if(""!==n){var r=e.indexOf("?")<0?"?":"&";e+=r+n}return e}function d(t){try{return""!==t?JSON.parse(t):null}catch(e){throw new Error(t)}}function h(e){return e.responseText}function p(e,t){if("function"==typeof e){if(!Array.isArray(t))return new e(t);for(var n=0;n<t.length;n++)t[n]=new e(t[n])}return t}return{request:function(l,e){var t=a();l=u(l,e);var n=new r(function(r,i){null==l.method&&(l.method="GET"),l.method=l.method.toUpperCase();var e="GET"!==l.method&&"TRACE"!==l.method&&("boolean"!=typeof l.useBody||l.useBody);"function"!=typeof l.serialize&&(l.serialize="undefined"!=typeof FormData&&l.data instanceof FormData?function(e){return e}:JSON.stringify),"function"!=typeof l.deserialize&&(l.deserialize=d),"function"!=typeof l.extract&&(l.extract=h),l.url=c(l.url,l.data),e?l.data=l.serialize(l.data):l.url=f(l.url,l.data);var o=new s.XMLHttpRequest,a=!1,t=o.abort;for(var n in o.abort=function(){a=!0,t.call(o)},o.open(l.method,l.url,"boolean"!=typeof l.async||l.async,"string"==typeof l.user?l.user:void 0,"string"==typeof l.password?l.password:void 0),l.serialize!==JSON.stringify||!e||l.headers&&l.headers.hasOwnProperty("Content-Type")||o.setRequestHeader("Content-Type","application/json; charset=utf-8"),l.deserialize!==d||l.headers&&l.headers.hasOwnProperty("Accept")||o.setRequestHeader("Accept","application/json, text/*"),l.withCredentials&&(o.withCredentials=l.withCredentials),l.headers)({}).hasOwnProperty.call(l.headers,n)&&o.setRequestHeader(n,l.headers[n]);"function"==typeof l.config&&(o=l.config(o,l)||o),o.onreadystatechange=function(){if(!a&&4===o.readyState)try{var e=l.extract!==h?l.extract(o,l):l.deserialize(l.extract(o,l));if(200<=o.status&&o.status<300||304===o.status||m.test(l.url))r(p(l.type,e));else{var t=new Error(o.responseText);for(var n in e)t[n]=e[n];i(t)}}catch(e){i(e)}},e&&null!=l.data?o.send(l.data):o.send()});return!0===l.background?n:t(n)},jsonp:function(i,e){var t=a();i=u(i,e);var n=new r(function(t,e){var n=i.callbackName||"_mithril_"+Math.round(1e16*Math.random())+"_"+o++,r=s.document.createElement("script");s[n]=function(e){r.parentNode.removeChild(r),t(p(i.type,e)),delete s[n]},r.onerror=function(){r.parentNode.removeChild(r),e(new Error("JSONP request failed")),delete s[n]},null==i.data&&(i.data={}),i.url=c(i.url,i.data),i.data[i.callbackKey||"callback"]=n,r.src=f(i.url,i.data),s.document.documentElement.appendChild(r)});return!0===i.background?n:t(n)},setCompletionCallback:function(e){t=e}}}(window,d),r=function(e){var a,d=e.document,u=d.createDocumentFragment(),t={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"};function h(e){return e.attrs&&e.attrs.xmlns||t[e.tag]}function b(e,t,n,r,i,o,a){for(var l=n;l<r;l++){var s=t[l];null!=s&&x(e,s,i,a,o)}}function x(e,t,n,r,i){var o,a,l,s=t.tag;if("string"!=typeof s)return function(e,t,n,r,i){{if(v(t,n),null==t.instance)return t.domSize=0,u;var o=x(e,t.instance,n,r,i);return t.dom=t.instance.dom,t.domSize=null!=t.dom?t.instance.domSize:0,k(e,o,i),o}}(e,t,n,r,i);switch(t.state={},null!=t.attrs&&j(t.attrs,t,n),s){case"#":return o=e,l=i,(a=t).dom=d.createTextNode(a.children),k(o,a.dom,l),a.dom;case"<":return p(e,t,i);case"[":return function(e,t,n,r,i){var o=d.createDocumentFragment();if(null!=t.children){var a=t.children;b(o,a,0,a.length,n,null,r)}return t.dom=o.firstChild,t.domSize=o.childNodes.length,k(e,o,i),o}(e,t,n,r,i);default:return function(e,t,n,r,i){var o=t.tag,a=t.attrs,l=a&&a.is,s=(r=h(t)||r)?l?d.createElementNS(r,o,{is:l}):d.createElementNS(r,o):l?d.createElement(o,{is:l}):d.createElement(o);t.dom=s,null!=a&&function(e,t,n){for(var r in t)w(e,r,null,t[r],n)}(t,a,r);if(k(e,s,i),null!=t.attrs&&null!=t.attrs.contenteditable)y(t);else if(null!=t.text&&(""!==t.text?s.textContent=t.text:t.children=[z("#",void 0,void 0,t.text,void 0,void 0)]),null!=t.children){var u=t.children;b(s,u,0,u.length,n,null,r),f=(c=t).attrs,"select"===c.tag&&null!=f&&("value"in f&&w(c,"value",null,f.value,void 0),"selectedIndex"in f&&w(c,"selectedIndex",null,f.selectedIndex,void 0))}var c,f;return s}(e,t,n,r,i)}}function p(e,t,n){var r={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[(t.children.match(/^\s*?<(\w+)/im)||[])[1]]||"div",i=d.createElement(r);i.innerHTML=t.children,t.dom=i.firstChild,t.domSize=i.childNodes.length;for(var o,a=d.createDocumentFragment();o=i.firstChild;)a.appendChild(o);return k(e,a,n),a}function v(e,t){var n;if("function"==typeof e.tag.view){if(e.state=Object.create(e.tag),null!=(n=e.state.view).$$reentrantLock$$)return u;n.$$reentrantLock$$=!0}else{if(e.state=void 0,null!=(n=e.tag).$$reentrantLock$$)return u;n.$$reentrantLock$$=!0,e.state=null!=e.tag.prototype&&"function"==typeof e.tag.prototype.view?new e.tag(e):e.tag(e)}if(e._state=e.state,null!=e.attrs&&j(e.attrs,e,t),j(e._state,e,t),e.instance=z.normalize(e._state.view.call(e.state,e)),e.instance===e)throw Error("A view cannot return the vnode it received as argument");n.$$reentrantLock$$=null}function m(e,t,n,r,i,o,a){if(t!==n&&(null!=t||null!=n))if(null==t)b(e,n,0,n.length,i,o,a);else if(null==n)S(t,0,t.length,n);else{if(t.length===n.length){for(var l=!1,s=0;s<n.length;s++)if(null!=n[s]&&null!=t[s]){l=null==n[s].key&&null==t[s].key;break}if(l){for(s=0;s<t.length;s++)t[s]!==n[s]&&(null==t[s]&&null!=n[s]?x(e,n[s],i,a,A(t,s+1,o)):null==n[s]?S(t,s,s+1,n):E(e,t[s],n[s],i,A(t,s+1,o),r,a));return}}if(r=r||function(e,t){if(null!=e.pool&&Math.abs(e.pool.length-t.length)<=Math.abs(e.length-t.length)){var n=e[0]&&e[0].children&&e[0].children.length||0,r=e.pool[0]&&e.pool[0].children&&e.pool[0].children.length||0,i=t[0]&&t[0].children&&t[0].children.length||0;if(Math.abs(r-i)<=Math.abs(n-i))return!0}return!1}(t,n)){var u=t.pool;t=t.concat(t.pool)}for(var c,f=0,d=0,h=t.length-1,p=n.length-1;f<=h&&d<=p;){if((m=t[f])!==(y=n[d])||r)if(null==m)f++;else if(null==y)d++;else if(m.key===y.key){var v=null!=u&&f>=t.length-u.length||null==u&&r;d++,E(e,m,y,i,A(t,++f,o),v,a),r&&m.tag===y.tag&&k(e,T(m),o)}else{if((m=t[h])!==y||r)if(null==m)h--;else if(null==y)d++;else{if(m.key!==y.key)break;v=null!=u&&h>=t.length-u.length||null==u&&r;E(e,m,y,i,A(t,h+1,o),v,a),(r||d<p)&&k(e,T(m),A(t,f,o)),h--,d++}else h--,d++}else f++,d++}for(;f<=h&&d<=p;){var m,y;if((m=t[h])!==(y=n[p])||r)if(null==m)h--;else if(null==y)p--;else if(m.key===y.key){v=null!=u&&h>=t.length-u.length||null==u&&r;E(e,m,y,i,A(t,h+1,o),v,a),r&&m.tag===y.tag&&k(e,T(m),o),null!=m.dom&&(o=m.dom),h--,p--}else{if(c||(c=_(t,h)),null!=y){var g=c[y.key];if(null!=g){var w=t[g];v=null!=u&&g>=t.length-u.length||null==u&&r;E(e,w,y,i,A(t,h+1,o),r,a),k(e,T(w),o),t[g].skip=!0,null!=w.dom&&(o=w.dom)}else{o=x(e,y,i,a,o)}}p--}else h--,p--;if(p<d)break}b(e,n,d,p+1,i,o,a),S(t,f,h+1,n)}}function E(e,t,n,r,i,o,a){var l,s,u,c,f=t.tag;if(f===n.tag){if(n.state=t.state,n._state=t._state,n.events=t.events,!o&&function(e,t){var n,r;null!=e.attrs&&"function"==typeof e.attrs.onbeforeupdate&&(n=e.attrs.onbeforeupdate.call(e.state,e,t));"string"!=typeof e.tag&&"function"==typeof e._state.onbeforeupdate&&(r=e._state.onbeforeupdate.call(e.state,e,t));return!(void 0===n&&void 0===r||n||r||(e.dom=t.dom,e.domSize=t.domSize,e.instance=t.instance,0))}(n,t))return;if("string"==typeof f)switch(null!=n.attrs&&(o?(n.state={},j(n.attrs,n,r)):O(n.attrs,n,r)),f){case"#":!function(e,t){e.children.toString()!==t.children.toString()&&(e.dom.nodeValue=t.children);t.dom=e.dom}(t,n);break;case"<":l=e,u=n,c=i,(s=t).children!==u.children?(T(s),p(l,u,c)):(u.dom=s.dom,u.domSize=s.domSize);break;case"[":!function(e,t,n,r,i,o,a){m(e,t.children,n.children,r,i,o,a);var l=0,s=n.children;if((n.dom=null)!=s){for(var u=0;u<s.length;u++){var c=s[u];null!=c&&null!=c.dom&&(null==n.dom&&(n.dom=c.dom),l+=c.domSize||1)}1!==l&&(n.domSize=l)}}(e,t,n,o,r,i,a);break;default:!function(e,t,n,r,i){var o=t.dom=e.dom;i=h(t)||i,"textarea"===t.tag&&(null==t.attrs&&(t.attrs={}),null!=t.text&&(t.attrs.value=t.text,t.text=void 0));(function(e,t,n,r){if(null!=n)for(var i in n)w(e,i,t&&t[i],n[i],r);if(null!=t)for(var i in t)null!=n&&i in n||("className"===i&&(i="class"),"o"!==i[0]||"n"!==i[1]||L(i)?"key"!==i&&e.dom.removeAttribute(i):C(e,i,void 0))})(t,e.attrs,t.attrs,i),null!=t.attrs&&null!=t.attrs.contenteditable?y(t):null!=e.text&&null!=t.text&&""!==t.text?e.text.toString()!==t.text.toString()&&(e.dom.firstChild.nodeValue=t.text):(null!=e.text&&(e.children=[z("#",void 0,void 0,e.text,void 0,e.dom.firstChild)]),null!=t.text&&(t.children=[z("#",void 0,void 0,t.text,void 0,void 0)]),m(o,e.children,t.children,n,r,null,i))}(t,n,o,r,a)}else!function(e,t,n,r,i,o,a){if(o)v(n,r);else{if(n.instance=z.normalize(n._state.view.call(n.state,n)),n.instance===n)throw Error("A view cannot return the vnode it received as argument");null!=n.attrs&&O(n.attrs,n,r),O(n._state,n,r)}null!=n.instance?(null==t.instance?x(e,n.instance,r,a,i):E(e,t.instance,n.instance,r,i,o,a),n.dom=n.instance.dom,n.domSize=n.instance.domSize):null!=t.instance?(g(t.instance,null),n.dom=void 0,n.domSize=0):(n.dom=t.dom,n.domSize=t.domSize)}(e,t,n,r,i,o,a)}else g(t,null),x(e,n,r,a,i)}function _(e,t){var n={},r=0;for(r=0;r<t;r++){var i=e[r];if(null!=i){var o=i.key;null!=o&&(n[o]=r)}}return n}function T(e){var t=e.domSize;if(null==t&&null!=e.dom)return e.dom;var n=d.createDocumentFragment();if(0<t){for(var r=e.dom;--t;)n.appendChild(r.nextSibling);n.insertBefore(r,n.firstChild)}return n}function A(e,t,n){for(;t<e.length;t++)if(null!=e[t]&&null!=e[t].dom)return e[t].dom;return n}function k(e,t,n){n&&n.parentNode?e.insertBefore(t,n):e.appendChild(t)}function y(e){var t=e.children;if(null!=t&&1===t.length&&"<"===t[0].tag){var n=t[0].children;e.dom.innerHTML!==n&&(e.dom.innerHTML=n)}else if(null!=e.text||null!=t&&0!==t.length)throw new Error("Child node of a contenteditable must be trusted")}function S(e,t,n,r){for(var i=t;i<n;i++){var o=e[i];null!=o&&(o.skip?o.skip=!1:g(o,r))}}function g(r,i){var e,o=1,a=0;r.attrs&&"function"==typeof r.attrs.onbeforeremove&&(null!=(e=r.attrs.onbeforeremove.call(r.state,r))&&"function"==typeof e.then&&(o++,e.then(t,t)));"string"!=typeof r.tag&&"function"==typeof r._state.onbeforeremove&&(null!=(e=r._state.onbeforeremove.call(r.state,r))&&"function"==typeof e.then&&(o++,e.then(t,t)));function t(){if(++a===o&&(function e(t){t.attrs&&"function"==typeof t.attrs.onremove&&t.attrs.onremove.call(t.state,t);if("string"!=typeof t.tag)"function"==typeof t._state.onremove&&t._state.onremove.call(t.state,t),null!=t.instance&&e(t.instance);else{var n=t.children;if(Array.isArray(n))for(var r=0;r<n.length;r++){var i=n[r];null!=i&&e(i)}}}(r),r.dom)){var e=r.domSize||1;if(1<e)for(var t=r.dom;--e;)l(t.nextSibling);l(r.dom),null==i||null!=r.domSize||null!=(n=r.attrs)&&(n.oncreate||n.onupdate||n.onbeforeremove||n.onremove)||"string"!=typeof r.tag||(i.pool?i.pool.push(r):i.pool=[r])}var n}t()}function l(e){var t=e.parentNode;null!=t&&t.removeChild(e)}function w(e,t,n,r,i){var o=e.dom;if("key"!==t&&"is"!==t&&(n!==r||(a=e,"value"===(l=t)||"checked"===l||"selectedIndex"===l||"selected"===l&&a.dom===d.activeElement)||"object"==typeof r)&&void 0!==r&&!L(t)){var a,l,s,u,c=t.indexOf(":");if(-1<c&&"xlink"===t.substr(0,c))o.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(c+1),r);else if("o"===t[0]&&"n"===t[1]&&"function"==typeof r)C(e,t,r);else if("style"===t)!function(e,t,n){t===n&&(e.style.cssText="",t=null);if(null==n)e.style.cssText="";else if("string"==typeof n)e.style.cssText=n;else{for(var r in"string"==typeof t&&(e.style.cssText=""),n)e.style[r]=n[r];if(null!=t&&"string"!=typeof t)for(var r in t)r in n||(e.style[r]="")}}(o,n,r);else if(t in o&&("href"!==(u=t)&&"list"!==u&&"form"!==u&&"width"!==u&&"height"!==u)&&void 0===i&&!((s=e).attrs.is||-1<s.tag.indexOf("-"))){if("value"===t){var f=""+r;if(("input"===e.tag||"textarea"===e.tag)&&e.dom.value===f&&e.dom===d.activeElement)return;if("select"===e.tag)if(null===r){if(-1===e.dom.selectedIndex&&e.dom===d.activeElement)return}else if(null!==n&&e.dom.value===f&&e.dom===d.activeElement)return;if("option"===e.tag&&null!=n&&e.dom.value===f)return}if("input"===e.tag&&"type"===t)return void o.setAttribute(t,r);o[t]=r}else"boolean"==typeof r?r?o.setAttribute(t,""):o.removeAttribute(t):o.setAttribute("className"===t?"class":t,r)}}function L(e){return"oninit"===e||"oncreate"===e||"onupdate"===e||"onremove"===e||"onbeforeremove"===e||"onbeforeupdate"===e}function C(e,t,n){var r=e.dom,i="function"!=typeof a?n:function(e){var t=n.call(r,e);return a.call(r,e),t};if(t in r)r[t]="function"==typeof n?i:null;else{var o=t.slice(2);if(void 0===e.events&&(e.events={}),e.events[t]===i)return;null!=e.events[t]&&r.removeEventListener(o,e.events[t],!1),"function"==typeof n&&(e.events[t]=i,r.addEventListener(o,e.events[t],!1))}}function j(e,t,n){"function"==typeof e.oninit&&e.oninit.call(t.state,t),"function"==typeof e.oncreate&&n.push(e.oncreate.bind(t.state,t))}function O(e,t,n){"function"==typeof e.onupdate&&n.push(e.onupdate.bind(t.state,t))}return{render:function(e,t){if(!e)throw new Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.");var n=[],r=d.activeElement,i=e.namespaceURI;null==e.vnodes&&(e.textContent=""),Array.isArray(t)||(t=[t]),m(e,e.vnodes,z.normalizeChildren(t),!1,n,null,"http://www.w3.org/1999/xhtml"===i?void 0:i),e.vnodes=t,null!=r&&d.activeElement!==r&&r.focus();for(var o=0;o<n.length;o++)n[o]()},setEventCallback:function(e){return a=e}}};var i=function(e){var t=r(e);t.setEventCallback(function(e){!1===e.redraw?e.redraw=void 0:n()});var a=[];function l(e){var t=a.indexOf(e);-1<t&&a.splice(t,2)}function n(){for(var e=1;e<a.length;e+=2)a[e]()}return{subscribe:function(e,t){var n,r,i,o;l(e),a.push(e,(n=t,r=0,i=null,o="function"==typeof requestAnimationFrame?requestAnimationFrame:setTimeout,function(){var e=Date.now();0===r||16<=e-r?(r=e,n()):null===i&&(i=o(function(){i=null,n(),r=Date.now()},16-(e-r)))}))},unsubscribe:l,redraw:n,render:t.render}}(window);n.setCompletionCallback(i.redraw);var o;t.mount=(o=i,function(e,t){if(null===t)return o.render(e,[]),void o.unsubscribe(e);if(null==t.view&&"function"!=typeof t)throw new Error("m.mount(element, component) expects a component, not a vnode");o.subscribe(e,function(){o.render(e,z(t))}),o.redraw()});var a,l,h,p,y,g,w,b,x,E=d,_=function(e){if(""===e||null==e)return{};"?"===e.charAt(0)&&(e=e.slice(1));for(var t=e.split("&"),n={},r={},i=0;i<t.length;i++){var o=t[i].split("="),a=decodeURIComponent(o[0]),l=2===o.length?decodeURIComponent(o[1]):"";"true"===l?l=!0:"false"===l&&(l=!1);var s=a.split(/\]\[?|\[/),u=n;-1<a.indexOf("[")&&s.pop();for(var c=0;c<s.length;c++){var f=s[c],d=s[c+1],h=""==d||!isNaN(parseInt(d,10)),p=c===s.length-1;if(""===f)null==r[a=s.slice(0,c).join()]&&(r[a]=0),f=r[a]++;null==u[f]&&(u[f]=p?l:h?[]:{}),u=u[f]}}return n},T=function(c){var n,f="function"==typeof c.history.pushState,r="function"==typeof S?S:setTimeout;function e(e){var t=c.location[e].replace(/(?:%[a-f89][a-f0-9])+/gim,decodeURIComponent);return"pathname"===e&&"/"!==t[0]&&(t="/"+t),t}function d(e,t,n){var r=e.indexOf("?"),i=e.indexOf("#"),o=-1<r?r:-1<i?i:e.length;if(-1<r){var a=-1<i?i:e.length,l=_(e.slice(r+1,a));for(var s in l)t[s]=l[s]}if(-1<i){var u=_(e.slice(i+1));for(var s in u)n[s]=u[s]}return e.slice(0,o)}var h={prefix:"#!",getPath:function(){switch(h.prefix.charAt(0)){case"#":return e("hash").slice(h.prefix.length);case"?":return e("search").slice(h.prefix.length)+e("hash");default:return e("pathname").slice(h.prefix.length)+e("search")+e("hash")}},setPath:function(e,n,t){var r={},i={};if(e=d(e,r,i),null!=n){for(var o in n)r[o]=n[o];e=e.replace(/:([^\/]+)/g,function(e,t){return delete r[t],n[t]})}var a=v(r);a&&(e+="?"+a);var l=v(i);if(l&&(e+="#"+l),f){var s=t?t.state:null,u=t?t.title:null;c.onpopstate(),t&&t.replace?c.history.replaceState(s,u,h.prefix+e):c.history.pushState(s,u,h.prefix+e)}else c.location.href=h.prefix+e}};return h.defineRoutes=function(l,s,u){function e(){var r=h.getPath(),i={},e=d(r,i,i),t=c.history.state;if(null!=t)for(var n in t)i[n]=t[n];for(var o in l){var a=new RegExp("^"+o.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(a.test(e))return void e.replace(a,function(){for(var e=o.match(/:[^\/]+/g)||[],t=[].slice.call(arguments,1,-2),n=0;n<e.length;n++)i[e[n].replace(/:|\./g,"")]=decodeURIComponent(t[n]);s(l[o],i,r,o)})}u(r,i)}var t;f?c.onpopstate=(t=e,function(){null==n&&(n=r(function(){n=null,t()}))}):"#"===h.prefix.charAt(0)&&(c.onhashchange=e),e()},h};t.route=(a=window,l=i,b=T(a),(x=function(e,t,n){if(null==e)throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined");var o=function(){null!=h&&l.render(e,h(z(p,y.key,y)))},a=function(e){if(e===t)throw new Error("Could not resolve default route "+t);b.setPath(t,null,{replace:!0})};b.defineRoutes(n,function(t,n,r){var i=w=function(e,t){i===w&&(p=null==t||"function"!=typeof t.view&&"function"!=typeof t?"div":t,y=n,g=r,w=null,h=(e.render||function(e){return e}).bind(e),o())};t.view||"function"==typeof t?i({},t):t.onmatch?E.resolve(t.onmatch(n,r)).then(function(e){i(t,e)},a):i(t,"div")},a),l.subscribe(e,o)}).set=function(e,t,n){null!=w&&((n=n||{}).replace=!0),w=null,b.setPath(e,t,n)},x.get=function(){return g},x.prefix=function(e){b.prefix=e},x.link=function(e){e.dom.setAttribute("href",b.prefix+e.attrs.href),e.dom.onclick=function(e){if(!(e.ctrlKey||e.metaKey||e.shiftKey||2===e.which)){e.preventDefault(),e.redraw=!1;var t=this.getAttribute("href");0===t.indexOf(b.prefix)&&(t=t.slice(b.prefix.length)),x.set(t,void 0,void 0)}}},x.param=function(e){return void 0!==y&&void 0!==e?y[e]:y},x),t.withAttr=function(t,n,r){return function(e){n.call(r||this,t in e.currentTarget?e.currentTarget[t]:e.currentTarget.getAttribute(t))}};var A=r(window);t.render=A.render,t.redraw=i.redraw,t.request=n.request,t.jsonp=n.jsonp,t.parseQueryString=_,t.buildQueryString=v,t.version="1.1.6",t.vnode=z,void 0!==L?L.exports=t:window.m=t}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("timers").setImmediate)},{timers:10}],9:[function(e,t,n){var r,i,o=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function l(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{i="function"==typeof clearTimeout?clearTimeout:l}catch(e){i=l}}();var u,c=[],f=!1,d=-1;function h(){f&&u&&(f=!1,u.length?c=u.concat(c):d=-1,c.length&&p())}function p(){if(!f){var e=s(h);f=!0;for(var t=c.length;t;){for(u=c,c=[];++d<t;)u&&u[d].run();d=-1,t=c.length}u=null,f=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===l||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(e)}}function v(e,t){this.fun=e,this.array=t}function m(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new v(e,t)),1!==c.length||f||s(p)},v.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],10:[function(s,e,u){(function(e,t){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,i=Array.prototype.slice,o={},a=0;function l(e,t){this._id=e,this._clearFn=t}u.setTimeout=function(){return new l(n.call(setTimeout,window,arguments),clearTimeout)},u.setInterval=function(){return new l(n.call(setInterval,window,arguments),clearInterval)},u.clearTimeout=u.clearInterval=function(e){e.close()},l.prototype.unref=l.prototype.ref=function(){},l.prototype.close=function(){this._clearFn.call(window,this._id)},u.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},u.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},u._unrefActive=u.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},u.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&i.call(arguments,1);return o[t]=!0,r(function(){o[t]&&(n?e.apply(null,n):e.call(null),u.clearImmediate(t))}),t},u.clearImmediate="function"==typeof t?t:function(e){delete o[e]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":9,timers:10}],11:[function(e,t,n){function u(r){document.addEventListener("mouseover",function(e){var t=e.target,n=r(t);n||(n=(t=t.parentElement)&&r(t)),n&&u.show(t,n,!0)})}u.show=function(e,t,l){var s="data-tlite";t=t||{},(e.tooltip||function(e,t){var n,r,i;function o(){u.hide(e,!0)}function a(){n||(n=function(l,e,t){var s=document.createElement("span"),n=t.grav||l.getAttribute("data-tlite")||"n";s.innerHTML=e,l.appendChild(s);var u=n[0]||"",c=n[1]||"";function r(){s.className="tlite tlite-"+u+c;var e=l.offsetTop,t=l.offsetLeft;s.offsetParent===l&&(e=t=0);var n=l.offsetWidth,r=l.offsetHeight,i=s.offsetHeight,o=s.offsetWidth,a=t+n/2;s.style.top=("s"===u?e-i-10:"n"===u?e+r+10:e+r/2-i/2)+"px",s.style.left=("w"===c?t:"e"===c?t+n-o:"w"===u?t+n+10:"e"===u?t-o-10:a-o/2)+"px"}r();var i=s.getBoundingClientRect();"s"===u&&i.top<0?(u="n",r()):"n"===u&&i.bottom>window.innerHeight?(u="s",r()):"e"===u&&i.left<0?(u="w",r()):"w"===u&&i.right>window.innerWidth&&(u="e",r());return s.className+=" tlite-visible",s}(e,i,t))}return e.addEventListener("mousedown",o),e.addEventListener("mouseleave",o),e.tooltip={show:function(){i=e.title||e.getAttribute(s)||i,e.title="",e.setAttribute(s,""),i&&!r&&(r=setTimeout(a,l?150:1))},hide:function(e){if(l===e){r=clearTimeout(r);var t=n&&n.parentNode;t&&t.removeChild(n),n=void 0}}}}(e,t)).show()},u.hide=function(e,t){e.tooltip&&e.tooltip.hide(t)},void 0!==t&&t.exports&&(t.exports=u)},{}],12:[function(e,a,t){!function(e){"use strict";function t(){}var n=t.prototype,r=e.EventEmitter;function o(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function i(e){return function(){return this[e].apply(this,arguments)}}n.getListeners=function(e){var t,n,r=this._getEvents();if(e instanceof RegExp)for(n in t={},r)r.hasOwnProperty(n)&&e.test(n)&&(t[n]=r[n]);else t=r[e]||(r[e]=[]);return t},n.flattenListeners=function(e){var t,n=[];for(t=0;t<e.length;t+=1)n.push(e[t].listener);return n},n.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&((t={})[e]=n),t||n},n.addListener=function(e,t){if(!function e(t){return"function"==typeof t||t instanceof RegExp||!(!t||"object"!=typeof t)&&e(t.listener)}(t))throw new TypeError("listener must be a function");var n,r=this.getListenersAsObject(e),i="object"==typeof t;for(n in r)r.hasOwnProperty(n)&&-1===o(r[n],t)&&r[n].push(i?t:{listener:t,once:!1});return this},n.on=i("addListener"),n.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},n.once=i("addOnceListener"),n.defineEvent=function(e){return this.getListeners(e),this},n.defineEvents=function(e){for(var t=0;t<e.length;t+=1)this.defineEvent(e[t]);return this},n.removeListener=function(e,t){var n,r,i=this.getListenersAsObject(e);for(r in i)i.hasOwnProperty(r)&&-1!==(n=o(i[r],t))&&i[r].splice(n,1);return this},n.off=i("removeListener"),n.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},n.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},n.manipulateListeners=function(e,t,n){var r,i,o=e?this.removeListener:this.addListener,a=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(r=n.length;r--;)o.call(this,t,n[r]);else for(r in t)t.hasOwnProperty(r)&&(i=t[r])&&("function"==typeof i?o.call(this,r,i):a.call(this,r,i));return this},n.removeEvent=function(e){var t,n=typeof e,r=this._getEvents();if("string"===n)delete r[e];else if(e instanceof RegExp)for(t in r)r.hasOwnProperty(t)&&e.test(t)&&delete r[t];else delete this._events;return this},n.removeAllListeners=i("removeEvent"),n.emitEvent=function(e,t){var n,r,i,o,a=this.getListenersAsObject(e);for(o in a)if(a.hasOwnProperty(o))for(n=a[o].slice(0),i=0;i<n.length;i++)!0===(r=n[i]).once&&this.removeListener(e,r.listener),r.listener.apply(this,t||[])===this._getOnceReturnValue()&&this.removeListener(e,r.listener);return this},n.trigger=i("emitEvent"),n.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},n.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},n._getOnceReturnValue=function(){return!this.hasOwnProperty("_onceReturnValue")||this._onceReturnValue},n._getEvents=function(){return this._events||(this._events={})},t.noConflict=function(){return e.EventEmitter=r,t},"function"==typeof l&&l.amd?l(function(){return t}):"object"==typeof a&&a.exports?a.exports=t:e.EventEmitter=t}("undefined"!=typeof window?window:this||{})},{}]},{},[1])}();
2
  //# sourceMappingURL=admin.min.js.map
assets/js/admin.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["admin.js"],"names":["define","undefined","r","e","n","t","o","i","f","c","u","a","Error","code","p","exports","call","length","1","require","module","obj","_tlite","__esModule","default","m","window","EventEmitter","context","document","getElementById","events","tabs","helpers","settings","el","className","indexOf","ListFetcher","mount","mc4wp","deps","mithril","./admin/helpers.js","./admin/list-fetcher.js","./admin/settings.js","./admin/tabs.js","tlite","wolfy87-eventemitter","2","showIfElements","toggleElement","selector","elements","querySelectorAll","show","clientHeight","style","display","bindEventToElement","element","event","handler","addEventListener","attachEvent","bindEventToElements","Array","prototype","forEach","debounce","func","wait","immediate","timeout","this","args","arguments","callNow","clearTimeout","setTimeout","apply","config","JSON","parse","getAttribute","parentElements","inputs","hide","checked","conditionMet","value","visibility","opacity","inputElement","removeAttribute","setAttribute","parentElement","3","$","jQuery","mc4wp_vars","i18n","working","done","mailchimp","api_connected","lists","fetch","preventDefault","post","ajaxurl","action","data","success","location","reload","bind","fail","always","redraw","view","method","onsubmit","type","fetching_mailchimp_lists","renew_mailchimp_lists","disabled","trust","fetching_mailchimp_lists_can_take_a_while","fetching_mailchimp_lists_done","fetching_mailchimp_lists_error","4","_typeof","Symbol","iterator","constructor","querySelector","listInputs","selectedLists","updateSelectedLists","input","push","trigger","on","rows","searchKey","searchValue","listId","filter","replace","getSelectedLists","5","URL","$context","$tabs","find","$tabNavs","refererField","get","id","_open","tab","updateState","removeClass","css","nav","blur","url","setParameter","href","history","pushState","title","tb_remove","forms","editor","refresh","split","switchTab","tabId","match","urlParams","returnValue","each","substring","first","text","open","click","body","activeTab","replaceState","state","init","./url.js","6","query","hasOwnProperty","b","decodeURIComponent","build","ret","d","encodeURIComponent","join","key","7","global","setImmediate","Vnode","tag","attrs0","children","dom","attrs","domSize","_state","instance","skip","normalize","node","isArray","normalizeChildren","selectorParser","selectorCache","hasOwn","isEmpty","object","hyperscript","start","cached","classes","exec","attrValue","compileSelector","normalized","childList","hasAttrs","class","newAttrs","execSelector","html","fragment","attrs1","PromisePolyfill","executor","TypeError","self","resolvers","rejectors","resolveCurrent","rejectCurrent","_instance","callAsync","list","shouldAbsorb","execute","then","console","error","retry","executeOnce","runs","run","fn","onerror","onFulfilled","onRejection","resolveNext","rejectNext","handle","callback","next","promise","resolve","reject","catch","all","total","count","values","consume","race","Promise","buildQueryString","Object","toString","key0","destructure","FILE_PROTOCOL_REGEX","RegExp","requestService","$window","oncompletion","callbackCount","finalizer","complete","finalize","promise0","then0","extra","interpolate","tokens","slice","assemble","querystring","prefix","deserialize","extract","xhr","responseText","cast","type0","request","toUpperCase","useBody","serialize","FormData","stringify","XMLHttpRequest","aborted","_abort","abort","async","user","password","headers","setRequestHeader","withCredentials","onreadystatechange","readyState","response","status","test","send","background","jsonp","callbackName","Math","round","random","script","createElement","parentNode","removeChild","callbackKey","src","documentElement","appendChild","setCompletionCallback","_8","coreRenderer","onevent","$doc","$emptyFragment","createDocumentFragment","nameSpace","svg","math","getNameSpace","vnode","xmlns","createNodes","parent","vnodes","end","hooks","nextSibling","ns","createNode","initComponent","insertNode","createComponent","initLifecycle","createTextNode","createHTML","firstChild","childNodes","createFragment","attrs2","is","createElementNS","key2","setAttr","setAttrs","contenteditable","setContentEditable","textContent","selectedIndex","parent1","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","temp","innerHTML","child","sentinel","create","$$reentrantLock$$","updateNodes","old","recycling","removeNodes","isUnkeyed","getNextSibling","updateNode","pool","abs","oldChildrenLength","poolChildrenLength","vnodesChildrenLength","isRecyclable","concat","map","oldStart","oldEnd","v","shouldRecycle","toFragment","getKeyMap","oldIndex","movable","oldTag","forceVnodeUpdate","forceComponentUpdate","onbeforeupdate","shouldNotUpdate","updateLifecycle","nodeValue","updateText","updateFragment","isLifecycleMethod","updateEvent","updateAttrs","updateElement","removeNode","updateComponent","count0","insertBefore","content","result","expected","called","onbeforeremove","continuation","onremove","removeNodeFromDOM","source","oncreate","onupdate","attr","activeElement","nsLastIndex","substr","setAttributeNS","cssText","updateStyle","normalized0","eventName","removeEventListener","oninit","render","active","namespace","namespaceURI","focus","setEventCallback","redrawService","renderService","callbacks","unsubscribe","key1","index","splice","subscribe","last","pending","requestAnimationFrame","now","Date","_11","redrawService0","root","component","render1","attrs3","currentPath","lastUpdate","routeService","route","parseQueryString","string","charAt","entries","data0","counters","entry","key5","levels","cursor","pop","j","level","nextLevel","isNumber","isNaN","parseInt","isValue","coreRouter","asyncId","supportsPushState","callAsync0","normalize1","fragment0","parsePath","path","queryData","hashData","queryIndex","hashIndex","pathEnd","queryEnd","queryParams","key4","hashParams","router","getPath","setPath","options","match2","token","hash","onpopstate","defineRoutes","routes","resolveRoute","params","pathname","k","route0","matcher","keys","callback0","onhashchange","defaultRoute","run1","bail","payload","update","routeResolver","comp","onmatch","resolved","set","prefix0","link","vnode1","onclick","ctrlKey","metaKey","shiftKey","which","param","key3","withAttr","attrName","callback1","currentTarget","_28","version","timers","8","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","marker","runClearTimeout","Item","array","noop","nextTick","browser","env","argv","versions","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","9","clearImmediate","Function","immediateIds","nextImmediateId","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","process/browser.js","10","getTooltipOpts","target","opts","isAuto","fallbackAttrib","tooltip","tooltipEl","showTimer","autoHide","fadeIn","grav","vertGrav","horzGrav","positionTooltip","top","offsetTop","left","offsetLeft","offsetParent","width","offsetWidth","height","offsetHeight","tooltipHeight","tooltipWidth","centerEl","rect","getBoundingClientRect","bottom","innerHeight","right","innerWidth","createTooltip","isAutoHiding","Tooltip","11","proto","originalGlobalValue","indexOfListener","listener","alias","getListeners","evt","_getEvents","flattenListeners","flatListeners","getListenersAsObject","isValidListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","addListeners","manipulateListeners","removeListeners","remove","single","multiple","removeEvent","_events","emitEvent","listenersMap","_getOnceReturnValue","setOnceReturnValue","_onceReturnValue","noConflict","amd"],"mappings":"CAAA,WAAe,IAA6BA,OAASC,GAAuB,SAASC,EAAEC,EAAEC,EAAEC,GAAG,SAASC,EAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,IAAIE,GAAE,EAAoC,IAAID,GAAGC,EAAE,OAAOA,EAAEF,GAAE,GAAI,GAAGG,EAAE,OAAOA,EAAEH,GAAE,GAAI,IAAII,EAAE,IAAIC,MAAM,uBAAuBL,EAAE,KAAK,MAAMI,EAAEE,KAAK,mBAAmBF,EAAE,IAAIG,EAAEV,EAAEG,GAAG,CAACQ,QAAQ,IAAIZ,EAAEI,GAAG,GAAGS,KAAKF,EAAEC,QAAQ,SAASb,GAAoB,OAAOI,EAAlBH,EAAEI,GAAG,GAAGL,IAAeA,IAAIY,EAAEA,EAAEC,QAAQb,EAAEC,EAAEC,EAAEC,GAAG,OAAOD,EAAEG,GAAGQ,QAAQ,IAAI,IAAIL,GAAE,EAAoCH,EAAE,EAAEA,EAAEF,EAAEY,OAAOV,IAAID,EAAED,EAAEE,IAAI,OAAOD,EAA7b,CAA4c,CAACY,EAAE,CAAC,SAASC,EAAQC,EAAOL,GACxiB,aAEA,IAEgCM,EAF5BC,GAE4BD,EAFIF,EAAQ,WAESE,EAAIE,WAAaF,EAAM,CAAEG,QAASH,GAEvF,IAAII,EAAIC,OAAOD,EAAIN,EAAQ,WAEvBQ,EAAeR,EAAQ,wBAGvBS,EAAUC,SAASC,eAAe,eAClCC,EAAS,IAAIJ,EAEbK,EAAOb,EAAQ,kBAARA,CAA2BS,GAElCK,EAAUd,EAAQ,sBAElBe,EAAWf,EAAQ,sBAARA,CAA+BS,EAASK,EAASF,IAEhE,EAAIT,EAAOE,SAAS,SAAUW,GAC5B,OAAgD,EAAzCA,EAAGC,UAAUC,QAAQ,mBAG9B,IAAIC,EAAcnB,EAAQ,2BAEtBoB,EAAQV,SAASC,eAAe,sBAEhCS,GACFd,EAAEc,MAAMA,EAAO,IAAID,GAIrBZ,OAAOc,MAAQd,OAAOc,OAAS,GAC/Bd,OAAOc,MAAMC,KAAOf,OAAOc,MAAMC,MAAQ,GACzCf,OAAOc,MAAMC,KAAKC,QAAUjB,EAC5BC,OAAOc,MAAMP,QAAUA,EACvBP,OAAOc,MAAMT,OAASA,EACtBL,OAAOc,MAAMN,SAAWA,EACxBR,OAAOc,MAAMR,KAAOA,GAElB,CAACW,qBAAqB,EAAEC,0BAA0B,EAAEC,sBAAsB,EAAEC,kBAAkB,EAAEJ,QAAU,EAAEK,MAAQ,GAAGC,uBAAuB,KAAKC,EAAE,CAAC,SAAS9B,EAAQC,EAAOL,GAChL,aAEA,IAiDMmC,EAjDFjB,EAAU,GAEdA,EAAQkB,cAAgB,SAAUC,GAGhC,IAFA,IAAIC,EAAWxB,SAASyB,iBAAiBF,GAEhC7C,EAAI,EAAGA,EAAI8C,EAASpC,OAAQV,IAAK,CACxC,IAAIgD,EAAOF,EAAS9C,GAAGiD,cAAgB,EACvCH,EAAS9C,GAAGkD,MAAMC,QAAUH,EAAO,GAAK,SAI5CtB,EAAQ0B,mBAAqB,SAAUC,EAASC,EAAOC,GACjDF,EAAQG,iBACVH,EAAQG,iBAAiBF,EAAOC,GACvBF,EAAQI,aACjBJ,EAAQI,YAAY,KAAOH,EAAOC,IAItC7B,EAAQgC,oBAAsB,SAAUZ,EAAUQ,EAAOC,GACvDI,MAAMC,UAAUC,QAAQpD,KAAKqC,EAAU,SAAUO,GAC/C3B,EAAQ0B,mBAAmBC,EAASC,EAAOC,MAK/C7B,EAAQoC,SAAW,SAAUC,EAAMC,EAAMC,GACvC,IAAIC,EACJ,OAAO,WACL,IAAI7C,EAAU8C,KACVC,EAAOC,UAOPC,EAAUL,IAAcC,EAC5BK,aAAaL,GACbA,EAAUM,WAPE,WACVN,EAAU,KACLD,GAAWF,EAAKU,MAAMpD,EAAS+C,IAKVJ,GACxBM,GAASP,EAAKU,MAAMpD,EAAS+C,KAS/BzB,EAAiBrB,SAASyB,iBAAiB,iBAE/CY,MAAMC,UAAUC,QAAQpD,KAAKkC,EAAgB,SAAUU,GACrD,IAAIqB,EAASC,KAAKC,MAAMvB,EAAQwB,aAAa,gBACzCC,EAAiBxD,SAASyB,iBAAiB,UAAY2B,EAAOrB,QAAU,MACxE0B,EAAS1B,EAAQN,iBAAiB,yCAClCiC,OAAuBtF,IAAhBgF,EAAOM,MAAsBN,EAAOM,KAE/C,SAASpC,IAEP,GAAkC,UAA9BuB,KAAKU,aAAa,SAAwBV,KAAKc,QAAnD,CAIA,IACIC,GADsC,aAA9Bf,KAAKU,aAAa,QAAyBV,KAAKc,QAAUd,KAAKgB,QAC/CT,EAAOS,MAE/BH,GACF3B,EAAQH,MAAMC,QAAU+B,EAAe,GAAK,OAC5C7B,EAAQH,MAAMkC,WAAaF,EAAe,GAAK,UAE/C7B,EAAQH,MAAMmC,QAAUH,EAAe,GAAK,MAI9CvB,MAAMC,UAAUC,QAAQpD,KAAKsE,EAAQ,SAAUO,GAC7CJ,EAAeI,EAAaC,gBAAgB,YAAcD,EAAaE,aAAa,WAAY,eAKpG7B,MAAMC,UAAUC,QAAQpD,KAAKqE,EAAgB,SAAUW,GACrD7C,EAAcnC,KAAKgF,KAGrB/D,EAAQgC,oBAAoBoB,EAAgB,SAAUlC,KAI1D/B,EAAOL,QAAUkB,GAEf,IAAIgE,EAAE,CAAC,SAAS9E,EAAQC,EAAOL,GACjC,aAEA,IAAImF,EAAIxE,OAAOyE,OACXlB,EAASmB,WACTC,EAAOpB,EAAOoB,KAElB,SAAS/D,IACPoC,KAAK4B,SAAU,EACf5B,KAAK6B,MAAO,EAERtB,EAAOuB,UAAUC,eAAmD,IAAlCxB,EAAOuB,UAAUE,MAAMzF,QAC3DyD,KAAKiC,QAITrE,EAAY6B,UAAUwC,MAAQ,SAAUxG,GACtCA,GAAKA,EAAEyG,iBACPlC,KAAK4B,SAAU,EACf5B,KAAK6B,MAAO,EACZL,EAAEW,KAAKC,QAAS,CACdC,OAAQ,8BACRtC,QAAS,OACR8B,KAAK,SAAUS,GAChBtC,KAAKuC,SAAU,EAEXD,GACFtF,OAAOqD,WAAW,WAChBrD,OAAOwF,SAASC,UACf,MAELC,KAAK1C,OAAO2C,KAAK,SAAUL,GAC3BtC,KAAKuC,SAAU,GACfG,KAAK1C,OAAO4C,OAAO,SAAUN,GAC7BtC,KAAK4B,SAAU,EACf5B,KAAK6B,MAAO,EACZ9E,EAAE8F,UACFH,KAAK1C,QAGTpC,EAAY6B,UAAUqD,KAAO,WAC3B,OAAO/F,EAAE,OAAQ,CACfgG,OAAQ,OACRC,SAAUhD,KAAKiC,MAAMS,KAAK1C,OACzB,CAACjD,EAAE,IAAK,CAACA,EAAE,QAAS,CACrBkG,KAAM,SACNjC,MAAOhB,KAAK4B,QAAUD,EAAKuB,yBAA2BvB,EAAKwB,sBAC3DzF,UAAW,SACX0F,WAAYpD,KAAK4B,UACf7E,EAAEsG,MAAM,YAAarD,KAAK4B,QAAU,CAAC7E,EAAE,oBAAqB,cAAeA,EAAEsG,MAAM,YAAatG,EAAE,UAAW4E,EAAK2B,4CAA8C,GAAItD,KAAK6B,KAAO,CAAC7B,KAAKuC,QAAUxF,EAAE,gBAAiB4E,EAAK4B,+BAAiCxG,EAAE,cAAe4E,EAAK6B,iCAAmC,QAGxT9G,EAAOL,QAAUuB,GAEf,IAAI6F,EAAE,CAAC,SAAShH,EAAQC,EAAOL,GACjC,aAEA,SAASqH,EAAQ/G,GAAwT,OAAtO+G,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiBjH,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXgH,QAAyBhH,EAAIkH,cAAgBF,QAAUhH,IAAQgH,OAAOlE,UAAY,gBAAkB9C,IAAyBA,GA0DxVD,EAAOL,QAxDQ,SAAkBa,EAASK,EAASF,GAGtCH,EAAQ4G,cAAc,QAAjC,IACIC,EAAa7G,EAAQ0B,iBAAiB,qBACtCoD,EAAQN,WAAWI,UAAUE,MAC7BgC,EAAgB,GAYpB,SAASC,IAaP,OAZAD,EAAgB,GAChBxE,MAAMC,UAAUC,QAAQpD,KAAKyH,EAAY,SAAUG,IAEpB,kBAAlBA,EAAMpD,SAA0BoD,EAAMpD,UAIb,WAAhC4C,EAAQ1B,EAAMkC,EAAMlD,SACtBgD,EAAcG,KAAKnC,EAAMkC,EAAMlD,UAGnC3D,EAAO+G,QAAQ,uBAAwB,CAACJ,IACjCA,EAoBT,OAHA3G,EAAOgH,GAAG,uBAdV,WACE,IAAIC,EAAOnH,SAASyB,iBAAiB,6BACrCY,MAAMC,UAAUC,QAAQpD,KAAKgI,EAAM,SAAU7G,GAC3C,IA7B2B8G,EAAWC,EA6BlCC,EAAShH,EAAGiD,aAAa,gBACiC,GA9BnC6D,EA8BY,KA9BDC,EA8BOC,EA7BxCT,EAAcU,OAAO,SAAUjH,GACpC,OAAOA,EAAG8G,KAAeC,KA4B4BjI,OAGnDkB,EAAG4D,aAAa,QAAS5D,EAAGiD,aAAa,SAASiE,QAAQ,SAAU,KAEpElH,EAAG4D,aAAa,QAAS5D,EAAGiD,aAAa,SAAW,eAM1DnD,EAAQgC,oBAAoBwE,EAAY,SAAUE,GAClDA,IACO,CACLW,iBAtCF,WACE,OAAOZ,MA2CT,IAAIa,EAAE,CAAC,SAASpI,EAAQC,EAAOL,GACjC,aAEA,IAAIyI,EAAMrI,EAAQ,YAuKlBC,EAAOL,QApKI,SAAca,GAEvB,IAAIsE,EAAIxE,OAAOyE,OACXsD,EAAWvD,EAAEtE,GACb8H,EAAQD,EAASE,KAAK,QACtBC,EAAWH,EAASE,KAAK,YACzBE,EAAejI,EAAQ4G,cAAc,kCACrCxG,EAAO,GAeX,SAAS8H,EAAIC,GACX,IAAK,IAAIxJ,EAAI,EAAGA,EAAIyB,EAAKf,OAAQV,IAC/B,GAAIyB,EAAKzB,GAAGwJ,KAAOA,EACjB,OAAO/H,EAAKzB,GAOlB,SAASyJ,EAAMC,EAAKC,GAMlB,GAJmB,iBAARD,IACTA,EAAMH,EAAIG,KAGPA,EACH,OAAO,EAIUhK,MAAfiK,IACFA,GAAc,GAIhBR,EAAMS,YAAY,cAAcC,IAAI,UAAW,QAC/CR,EAASO,YAAY,kBAErBjG,MAAMC,UAAUC,QAAQpD,KAAKiJ,EAAII,IAAK,SAAUA,GAC9CA,EAAIjI,WAAa,kBACjBiI,EAAIC,SAGNL,EAAIrG,QAAQH,MAAMC,QAAU,QAC5BuG,EAAIrG,QAAQxB,WAAa,cAEzB,IAAImI,EAAMf,EAAIgB,aAAa9I,OAAOwF,SAASuD,KAAM,MAAOR,EAAIF,IAqB5D,OAnBIW,QAAQC,WAAaT,GACvBQ,QAAQC,UAAUV,EAAIF,GAAI,GAAIQ,GAIhCK,EAAMX,GAENJ,EAAanE,MAAQ6E,EAEI,mBAAdM,WACTA,YAKa,WAAXZ,EAAIF,IAAmBrI,OAAOc,OAASd,OAAOc,MAAMsI,OAASpJ,OAAOc,MAAMsI,MAAMC,QAClFvI,MAAMsI,MAAMC,OAAOC,WAGd,EAGT,SAASJ,EAAMX,GACb,IAAIW,EAAQ/I,SAAS+I,MAAMK,MAAM,KACjCpJ,SAAS+I,MAAQ/I,SAAS+I,MAAMvB,QAAQuB,EAAM,GAAIX,EAAIW,MAAQ,KAGhE,SAASM,EAAU/K,GACjBA,EAAIA,GAAKuB,OAAOmC,MAEhB,IAAIsH,EAAQzG,KAAKU,aAAa,YAE9B,IAAK+F,EAAO,CACV,IAAIC,EAAQ1G,KAAKtC,UAAUgJ,MAAM,kBAE7BA,IACFD,EAAQC,EAAM,IAKlB,IAAKD,EAAO,CACV,IAAIE,EAAY7B,EAAIrE,MAAMT,KAAK+F,MAE/B,IAAKY,EAAUpB,IACb,OAGFkB,EAAQE,EAAUpB,IAKpB,OAFaD,EAAMmB,KAGjBhL,EAAEyG,iBACFzG,EAAEmL,aAAc,GA0CpB,OAtJApF,EAAEqF,KAAK7B,EAAO,SAAUnJ,EAAGF,GACzB,IAAI0J,EAAK1J,EAAE0J,GAAGyB,UAAU,GACpBZ,EAAQ1E,EAAE7F,GAAGsJ,KAAK,MAAM8B,QAAQC,OACpC1J,EAAK6G,KAAK,CACRkB,GAAIA,EACJa,MAAOA,EACPhH,QAASvD,EACTgK,IAAKzI,EAAQ0B,iBAAiB,YAAcyG,GAC5C4B,KAAM,WACJ,OAAO3B,EAAMD,QAiInBH,EAASgC,MAAMV,GACfhF,EAAErE,SAASgK,MAAM9C,GAAG,QAAS,YAAamC,GAxB1C,WAEE,GAAKR,QAAQC,UAAb,CAIA,IAAImB,EAAYpC,EAAMN,OAAO,YAAYU,IAAI,GAE7C,GAAKgC,EAAL,CAIA,IAAI7B,EAAMH,EAAIgC,EAAU/B,GAAGyB,UAAU,IAChCvB,IAEDS,QAAQqB,cAAkC,OAAlBrB,QAAQsB,OAClCtB,QAAQqB,aAAa9B,EAAIF,GAAI,IAI/Ba,EAAMX,MAKRgC,GAEIvK,OAAOqC,kBAAoB2G,QAAQC,WACrCjJ,OAAOqC,iBAAiB,WAAY,SAAU5D,GAC5C,OAAKA,EAAE6L,OAEAhC,EADK7J,EAAE6L,OACM,KAIjB,CACLL,KAAM3B,EACNF,IAAKA,KAMP,CAACoC,WAAW,IAAIC,EAAE,CAAC,SAAShL,EAAQC,EAAOL,GAC7C,aAEA,IAAIyI,EAAM,CACRrE,MAAO,SAAeoF,GACpB,IAAI6B,EAAQ,GACRzL,EAAI4J,EAAIU,MAAM,KAElB,IAAK,IAAI1K,KAAKI,EACZ,GAAKA,EAAE0L,eAAe9L,GAAtB,CAIA,IAAI+L,EAAI3L,EAAEJ,GAAG0K,MAAM,KACnBmB,EAAMG,mBAAmBD,EAAE,KAAOC,mBAAmBD,EAAE,IAGzD,OAAOF,GAETI,MAAO,SAAexF,GACpB,IAAIyF,EAAM,GAEV,IAAK,IAAIC,KAAK1F,EACZyF,EAAI5D,KAAK6D,EAAI,IAAMC,mBAAmB3F,EAAK0F,KAG7C,OAAOD,EAAIG,KAAK,MAElBpC,aAAc,SAAsBD,EAAKsC,EAAKnH,GAC5C,IAAIsB,EAAOwC,EAAIrE,MAAMoF,GAErB,OADAvD,EAAK6F,GAAOnH,EACL8D,EAAIgD,MAAMxF,KAGrB5F,EAAOL,QAAUyI,GAEf,IAAIsD,EAAE,CAAC,SAAS3L,EAAQC,EAAOL,IACjC,SAAWgM,EAAOC,IAChB,WACF,aACA,SAASC,EAAMC,EAAKL,EAAKM,EAAQC,EAAU1B,EAAM2B,GAChD,MAAO,CAACH,IAAKA,EAAKL,IAAKA,EAAKS,MAAOH,EAAQC,SAAUA,EAAU1B,KAAMA,EAAM2B,IAAKA,EAAKE,aAAStN,EAAW+L,WAAO/L,EAAWuN,YAAQvN,EAAW8B,YAAQ9B,EAAWwN,cAAUxN,EAAWyN,MAAM,GAE7LT,EAAMU,UAAY,SAASC,GAC1B,OAAI1J,MAAM2J,QAAQD,GAAcX,EAAM,SAAKhN,OAAWA,EAAWgN,EAAMa,kBAAkBF,QAAO3N,OAAWA,GAC/F,MAAR2N,GAAgC,iBAATA,EAA0BX,EAAM,SAAKhN,OAAWA,GAAoB,IAAT2N,EAAiB,GAAKA,OAAM3N,OAAWA,GACtH2N,GAERX,EAAMa,kBAAoB,SAA2BV,GACpD,IAAK,IAAI7M,EAAI,EAAGA,EAAI6M,EAASnM,OAAQV,IACpC6M,EAAS7M,GAAK0M,EAAMU,UAAUP,EAAS7M,IAExC,OAAO6M,GAER,IAAIW,EAAiB,+EACjBC,EAAgB,GAChBC,EAAS,GAAG5B,eAChB,SAAS6B,EAAQC,GAChB,IAAK,IAAItB,KAAOsB,EAAQ,GAAIF,EAAOjN,KAAKmN,EAAQtB,GAAM,OAAO,EAC7D,OAAO,EA0DR,SAASuB,EAAYhL,GAEpB,IAAqCgK,EAAjCE,EAAQ1I,UAAU,GAAIyJ,EAAQ,EAClC,GAAgB,MAAZjL,GAAwC,iBAAbA,GAA6C,mBAAbA,GAAoD,mBAAlBA,EAASoE,KACzG,MAAM5G,MAAM,wDAEb,GAAwB,iBAAbwC,EACV,IAAIkL,EAASN,EAAc5K,IA/D7B,SAAyBA,GAExB,IADA,IAAIgI,EAAO8B,EAAM,MAAOqB,EAAU,GAAIjB,EAAQ,GACvClC,EAAQ2C,EAAeS,KAAKpL,IAAW,CAC7C,IAAIuE,EAAOyD,EAAM,GAAI1F,EAAQ0F,EAAM,GACnC,GAAa,KAATzD,GAAyB,KAAVjC,EAAcwH,EAAMxH,OAClC,GAAa,MAATiC,EAAc2F,EAAMvD,GAAKrE,OAC7B,GAAa,MAATiC,EAAc4G,EAAQ1F,KAAKnD,QAC/B,GAAoB,MAAhB0F,EAAM,GAAG,GAAY,CAC7B,IAAIqD,EAAYrD,EAAM,GAClBqD,IAAWA,EAAYA,EAAUpF,QAAQ,YAAa,MAAMA,QAAQ,QAAS,OAChE,UAAb+B,EAAM,GAAgBmD,EAAQ1F,KAAK4F,GAClCnB,EAAMlC,EAAM,IAAoB,KAAdqD,EAAmBA,EAAYA,IAAa,GAIrE,OADqB,EAAjBF,EAAQtN,SAAYqM,EAAMlL,UAAYmM,EAAQ3B,KAAK,MAChDoB,EAAc5K,GAAY,CAAC8J,IAAKA,EAAKI,MAAOA,GAgDVoB,CAAgBtL,GAQzD,GANa,MAATkK,EACHA,EAAQ,IACmB,iBAAVA,GAAmC,MAAbA,EAAMJ,KAAehJ,MAAM2J,QAAQP,MAC1EA,EAAQ,GACRe,EAAQ,GAELzJ,UAAU3D,SAAWoN,EAAQ,EAChCjB,EAAWxI,UAAUyJ,GAChBnK,MAAM2J,QAAQT,KAAWA,EAAW,CAACA,SAG1C,IADAA,EAAW,GACJiB,EAAQzJ,UAAU3D,QAAQmM,EAASvE,KAAKjE,UAAUyJ,MAE1D,IAAIM,EAAa1B,EAAMa,kBAAkBV,GACzC,MAAwB,iBAAbhK,EA9DZ,SAAsB4I,EAAOsB,EAAOF,GACnC,IAAsBwB,EAAWlD,EAA7BmD,GAAW,EACXzM,EAAYkL,EAAMlL,WAAakL,EAAMwB,MACzC,IAAKZ,EAAQlC,EAAMsB,SAAWY,EAAQZ,GAAQ,CAC7C,IAAIyB,EAAW,GACf,IAAI,IAAIlC,KAAOS,EACVW,EAAOjN,KAAKsM,EAAOT,KACtBkC,EAASlC,GAAOS,EAAMT,IAGxBS,EAAQyB,EAET,IAAK,IAAIlC,KAAOb,EAAMsB,MACjBW,EAAOjN,KAAKgL,EAAMsB,MAAOT,KAC5BS,EAAMT,GAAOb,EAAMsB,MAAMT,IAY3B,IAAK,IAAIA,UATS5M,IAAdmC,SACiBnC,IAAhBqN,EAAMwB,QACTxB,EAAMwB,WAAQ7O,EACdqN,EAAMlL,UAAYA,GAEU,MAAzB4J,EAAMsB,MAAMlL,YACfkL,EAAMlL,UAAY4J,EAAMsB,MAAMlL,UAAY,IAAMA,IAGlCkL,EACf,GAAIW,EAAOjN,KAAKsM,EAAOT,IAAgB,QAARA,EAAe,CAC7CgC,GAAW,EACX,MAQF,OALI3K,MAAM2J,QAAQT,IAAiC,IAApBA,EAASnM,QAA+B,MAAfmM,EAAS,IAAkC,MAApBA,EAAS,GAAGF,IAC1FxB,EAAO0B,EAAS,GAAGA,SAEnBwB,EAAYxB,EAENH,EAAMjB,EAAMkB,IAAKI,EAAMT,IAAKgC,EAAWvB,OAAQrN,EAAW2O,EAAWlD,GA0BpEsD,CAAaV,EAAQhB,EAAOqB,GAE5B1B,EAAM7J,EAAUkK,EAAMT,IAAKS,EAAOqB,GAG3CP,EAAYrG,MAAQ,SAASkH,GAE5B,OADY,MAARA,IAAcA,EAAO,IAClBhC,EAAM,SAAKhN,OAAWA,EAAWgP,OAAMhP,OAAWA,IAE1DmO,EAAYc,SAAW,SAASC,EAAQ/B,GACvC,OAAOH,EAAM,IAAKkC,EAAOtC,IAAKsC,EAAQlC,EAAMa,kBAAkBV,QAAWnN,OAAWA,IAErF,IAAIwB,EAAI2M,EA8FR,IA5FIgB,EAAkB,SAASC,GAC9B,KAAM3K,gBAAgB0K,GAAkB,MAAM,IAAIxO,MAAM,qCACxD,GAAwB,mBAAbyO,EAAyB,MAAM,IAAIC,UAAU,+BACxD,IAAIC,EAAO7K,KAAM8K,EAAY,GAAIC,EAAY,GAAIC,EAAiB5L,EAAQ0L,GAAW,GAAOG,EAAgB7L,EAAQ2L,GAAW,GAC3HhC,EAAW8B,EAAKK,UAAY,CAACJ,UAAWA,EAAWC,UAAWA,GAC9DI,EAAoC,mBAAjB7C,EAA8BA,EAAejI,WACpE,SAASjB,EAAQgM,EAAMC,GACtB,OAAO,SAASC,EAAQtK,GACvB,IAAIuK,EACJ,IACC,IAAIF,GAAyB,MAATrK,GAAmC,iBAAVA,GAAuC,mBAAVA,GAAwD,mBAAvBuK,EAAOvK,EAAMuK,MAKvHJ,EAAU,WACJE,GAAgC,IAAhBD,EAAK7O,QAAciP,QAAQC,MAAM,wCAAyCzK,GAC/F,IAAK,IAAInF,EAAI,EAAGA,EAAIuP,EAAK7O,OAAQV,IAAKuP,EAAKvP,GAAGmF,GAC9C8J,EAAUvO,OAAS,EAAGwO,EAAUxO,OAAS,EACzCwM,EAASzB,MAAQ+D,EACjBtC,EAAS2C,MAAQ,WAAYJ,EAAQtK,UAVuG,CAC7I,GAAIA,IAAU6J,EAAM,MAAM,IAAID,UAAU,uCACxCe,EAAYJ,EAAK7I,KAAK1B,KAYxB,MAAOvF,GACNwP,EAAcxP,KAIjB,SAASkQ,EAAYJ,GACpB,IAAIK,EAAO,EACX,SAASC,EAAIC,GACZ,OAAO,SAAS9K,GACF,EAAT4K,KACJE,EAAG9K,IAGL,IAAI+K,EAAUF,EAAIZ,GAClB,IAAKM,EAAKM,EAAIb,GAAiBe,GAAU,MAAOtQ,GAAIsQ,EAAQtQ,IAE7DkQ,EAAYhB,KAEGlL,UAAU8L,KAAO,SAASS,EAAaC,GACtD,IAQIC,EAAaC,EARApD,EAAN/I,KAAsBkL,UACjC,SAASkB,EAAOC,EAAUjB,EAAMkB,EAAMhF,GACrC8D,EAAKjH,KAAK,SAASnD,GAClB,GAAwB,mBAAbqL,EAAyBC,EAAKtL,QACpC,IAAKkL,EAAYG,EAASrL,IAAS,MAAOvF,GAAQ0Q,GAAYA,EAAW1Q,MAEjD,mBAAnBsN,EAAS2C,OAAwBpE,IAAUyB,EAASzB,OAAOyB,EAAS2C,QAGhF,IAAIa,EAAU,IAAI7B,EAAgB,SAAS8B,EAASC,GAASP,EAAcM,EAASL,EAAaM,IAEjG,OADAL,EAAOJ,EAAajD,EAAS+B,UAAWoB,GAAa,GAAOE,EAAOH,EAAalD,EAASgC,UAAWoB,GAAY,GACzGI,GAER7B,EAAgBjL,UAAUiN,MAAQ,SAAST,GAC1C,OAAOjM,KAAKuL,KAAK,KAAMU,IAExBvB,EAAgB8B,QAAU,SAASxL,GAClC,OAAIA,aAAiB0J,EAAwB1J,EACtC,IAAI0J,EAAgB,SAAS8B,GAAUA,EAAQxL,MAEvD0J,EAAgB+B,OAAS,SAASzL,GACjC,OAAO,IAAI0J,EAAgB,SAAS8B,EAASC,GAASA,EAAOzL,MAE9D0J,EAAgBiC,IAAM,SAASvB,GAC9B,OAAO,IAAIV,EAAgB,SAAS8B,EAASC,GAC5C,IAAIG,EAAQxB,EAAK7O,OAAQsQ,EAAQ,EAAGC,EAAS,GAC7C,GAAoB,IAAhB1B,EAAK7O,OAAciQ,EAAQ,SAC1B,IAAK,IAAI3Q,EAAI,EAAGA,EAAIuP,EAAK7O,OAAQV,KACrC,SAAUA,GACT,SAASkR,EAAQ/L,GAChB6L,IACAC,EAAOjR,GAAKmF,EACR6L,IAAUD,GAAOJ,EAAQM,GAEf,MAAX1B,EAAKvP,IAAkC,iBAAZuP,EAAKvP,IAAsC,mBAAZuP,EAAKvP,IAA8C,mBAAjBuP,EAAKvP,GAAG0P,KAGnGwB,EAAQ3B,EAAKvP,IAFjBuP,EAAKvP,GAAG0P,KAAKwB,EAASN,GAPxB,CAUG5Q,MAIN6O,EAAgBsC,KAAO,SAAS5B,GAC/B,OAAO,IAAIV,EAAgB,SAAS8B,EAASC,GAC5C,IAAK,IAAI5Q,EAAI,EAAGA,EAAIuP,EAAK7O,OAAQV,IAChCuP,EAAKvP,GAAG0P,KAAKiB,EAASC,MAIH,oBAAXzP,OAAwB,MACJ,IAAnBA,OAAOiQ,UAAyBjQ,OAAOiQ,QAAUvC,GAC5D,IAAIA,EAAkB1N,OAAOiQ,aACvB,QAAsB,IAAX5E,EAAwB,MACX,IAAnBA,EAAO4E,UAAyB5E,EAAO4E,QAAUvC,GACxDA,EAAkBrC,EAAO4E,QAG9B,IAAIC,EAAmB,SAASzD,GAC/B,GAA+C,oBAA3C0D,OAAO1N,UAAU2N,SAAS9Q,KAAKmN,GAA+B,MAAO,GACzE,IAAIxJ,EAAO,GACX,IAAK,IAAIoN,KAAQ5D,EAChB6D,EAAYD,EAAM5D,EAAO4D,IAE1B,OAAOpN,EAAKiI,KAAK,KACjB,SAASoF,EAAYD,EAAMrM,GAC1B,GAAIxB,MAAM2J,QAAQnI,GACjB,IAAK,IAAInF,EAAI,EAAGA,EAAImF,EAAMzE,OAAQV,IACjCyR,EAAYD,EAAO,IAAMxR,EAAI,IAAKmF,EAAMnF,SAGrC,GAA8C,oBAA1CsR,OAAO1N,UAAU2N,SAAS9Q,KAAK0E,GACvC,IAAK,IAAInF,KAAKmF,EACbsM,EAAYD,EAAO,IAAMxR,EAAI,IAAKmF,EAAMnF,SAGrCoE,EAAKkE,KAAK8D,mBAAmBoF,IAAkB,MAATrM,GAA2B,KAAVA,EAAe,IAAMiH,mBAAmBjH,GAAS,OAG3GuM,EAAsB,IAAIC,OAAO,WAAY,KAoJ7CC,EAnJK,SAASC,EAAST,GAC1B,IACIU,EADAC,EAAgB,EAGpB,SAASC,IACR,IAAIhB,EAAQ,EACZ,SAASiB,IAA4B,KAAVjB,GAAuC,mBAAjBc,GAA6BA,IAC9E,OAAO,SAASI,EAASC,GACxB,IAAIC,EAAQD,EAASzC,KAUrB,OATAyC,EAASzC,KAAO,WACfsB,IACA,IAAIP,EAAO2B,EAAM3N,MAAM0N,EAAU9N,WAKjC,OAJAoM,EAAKf,KAAKuC,EAAU,SAASrS,GAE5B,GADAqS,IACc,IAAVjB,EAAa,MAAMpR,IAEjBsS,EAASzB,IAEV0B,GAGT,SAAS/E,EAAUhJ,EAAMiO,GACxB,GAAoB,iBAATjO,EAAmB,CAC7B,IAAI4F,EAAM5F,EAEM,OADhBA,EAAOiO,GAAS,IACPrI,MAAa5F,EAAK4F,IAAMA,GAElC,OAAO5F,EAmFR,SAASkO,EAAYtI,EAAKvD,GACzB,GAAY,MAARA,EAAc,OAAOuD,EAEzB,IADA,IAAIuI,EAASvI,EAAIa,MAAM,cAAgB,GAC9B7K,EAAI,EAAGA,EAAIuS,EAAO7R,OAAQV,IAAK,CACvC,IAAIsM,EAAMiG,EAAOvS,GAAGwS,MAAM,GACT,MAAb/L,EAAK6F,KACRtC,EAAMA,EAAIlB,QAAQyJ,EAAOvS,GAAIyG,EAAK6F,KAGpC,OAAOtC,EAER,SAASyI,EAASzI,EAAKvD,GACtB,IAAIiM,EAAcrB,EAAiB5K,GACnC,GAAoB,KAAhBiM,EAAoB,CACvB,IAAIC,EAAS3I,EAAIlI,QAAQ,KAAO,EAAI,IAAM,IAC1CkI,GAAO2I,EAASD,EAEjB,OAAO1I,EAER,SAAS4I,EAAYnM,GACpB,IAAK,MAAgB,KAATA,EAAc9B,KAAKC,MAAM6B,GAAQ,KAC7C,MAAO7G,GAAI,MAAM,IAAIS,MAAMoG,IAE5B,SAASoM,EAAQC,GAAM,OAAOA,EAAIC,aAClC,SAASC,EAAKC,EAAOxM,GACpB,GAAqB,mBAAVwM,EAAsB,CAChC,IAAItP,MAAM2J,QAAQ7G,GAKb,OAAO,IAAIwM,EAAMxM,GAJrB,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAK/F,OAAQV,IAChCyG,EAAKzG,GAAK,IAAIiT,EAAMxM,EAAKzG,IAK5B,OAAOyG,EAER,MAAO,CAACyM,QApHR,SAAiB9O,EAAMiO,GACtB,IAAIH,EAAWF,IACf5N,EAAOgJ,EAAUhJ,EAAMiO,GACvB,IAAIF,EAAW,IAAIf,EAAQ,SAAST,EAASC,GACzB,MAAfxM,EAAK8C,SAAgB9C,EAAK8C,OAAS,OACvC9C,EAAK8C,OAAS9C,EAAK8C,OAAOiM,cAC1B,IAAIC,EAA2B,QAAhBhP,EAAK8C,QAAoC,UAAhB9C,EAAK8C,SAAuD,kBAAjB9C,EAAKgP,SAAwBhP,EAAKgP,SACvF,mBAAnBhP,EAAKiP,YAA0BjP,EAAKiP,UAAgC,oBAAbC,UAA4BlP,EAAKqC,gBAAgB6M,SAAW,SAASnO,GAAQ,OAAOA,GAASR,KAAK4O,WACpI,mBAArBnP,EAAKwO,cAA4BxO,EAAKwO,YAAcA,GACnC,mBAAjBxO,EAAKyO,UAAwBzO,EAAKyO,QAAUA,GACvDzO,EAAK4F,IAAMsI,EAAYlO,EAAK4F,IAAK5F,EAAKqC,MAClC2M,EAAShP,EAAKqC,KAAOrC,EAAKiP,UAAUjP,EAAKqC,MACxCrC,EAAK4F,IAAMyI,EAASrO,EAAK4F,IAAK5F,EAAKqC,MACxC,IAAIqM,EAAM,IAAIjB,EAAQ2B,eACrBC,GAAU,EACVC,EAASZ,EAAIa,MAad,IAAK,IAAIrH,KAZTwG,EAAIa,MAAQ,WACXF,GAAU,EACVC,EAAOjT,KAAKqS,IAEbA,EAAI1H,KAAKhH,EAAK8C,OAAQ9C,EAAK4F,IAA2B,kBAAf5F,EAAKwP,OAAsBxP,EAAKwP,MAAmC,iBAAdxP,EAAKyP,KAAoBzP,EAAKyP,UAAOnU,EAAoC,iBAAlB0E,EAAK0P,SAAwB1P,EAAK0P,cAAWpU,GAC5L0E,EAAKiP,YAAc1O,KAAK4O,YAAaH,GAAahP,EAAK2P,SAAW3P,EAAK2P,QAAQjI,eAAe,iBACjGgH,EAAIkB,iBAAiB,eAAgB,mCAElC5P,EAAKwO,cAAgBA,GAAiBxO,EAAK2P,SAAW3P,EAAK2P,QAAQjI,eAAe,WACrFgH,EAAIkB,iBAAiB,SAAU,4BAE5B5P,EAAK6P,kBAAiBnB,EAAImB,gBAAkB7P,EAAK6P,iBACrC7P,EAAK2P,SAAa,IAAGjI,eAAerL,KAAK2D,EAAK2P,QAASzH,IACtEwG,EAAIkB,iBAAiB1H,EAAKlI,EAAK2P,QAAQzH,IAEb,mBAAhBlI,EAAKM,SAAuBoO,EAAM1O,EAAKM,OAAOoO,EAAK1O,IAAS0O,GACvEA,EAAIoB,mBAAqB,WAExB,IAAGT,GACoB,IAAnBX,EAAIqB,WACP,IACC,IAAIC,EAAYhQ,EAAKyO,UAAYA,EAAWzO,EAAKyO,QAAQC,EAAK1O,GAAQA,EAAKwO,YAAYxO,EAAKyO,QAAQC,EAAK1O,IACzG,GAAmB,KAAd0O,EAAIuB,QAAiBvB,EAAIuB,OAAS,KAAuB,MAAfvB,EAAIuB,QAAkB3C,EAAoB4C,KAAKlQ,EAAK4F,KAClG2G,EAAQqC,EAAK5O,EAAKgD,KAAMgN,QAEpB,CACJ,IAAIxE,EAAQ,IAAIvP,MAAMyS,EAAIC,cAC1B,IAAK,IAAIzG,KAAO8H,EAAUxE,EAAMtD,GAAO8H,EAAS9H,GAChDsE,EAAOhB,IAGT,MAAOhQ,GACNgR,EAAOhR,KAINwT,GAAyB,MAAbhP,EAAKqC,KAAeqM,EAAIyB,KAAKnQ,EAAKqC,MAC7CqM,EAAIyB,SAEV,OAA2B,IAApBnQ,EAAKoQ,WAAsBrC,EAAWD,EAASC,IA6D7BsC,MA3D1B,SAAerQ,EAAMiO,GACpB,IAAIH,EAAWF,IACf5N,EAAOgJ,EAAUhJ,EAAMiO,GACvB,IAAIF,EAAW,IAAIf,EAAQ,SAAST,EAASC,GAC5C,IAAI8D,EAAetQ,EAAKsQ,cAAgB,YAAcC,KAAKC,MAAsB,KAAhBD,KAAKE,UAAmB,IAAM9C,IAC3F+C,EAASjD,EAAQvQ,SAASyT,cAAc,UAC5ClD,EAAQ6C,GAAgB,SAASjO,GAChCqO,EAAOE,WAAWC,YAAYH,GAC9BnE,EAAQqC,EAAK5O,EAAKgD,KAAMX,WACjBoL,EAAQ6C,IAEhBI,EAAO5E,QAAU,WAChB4E,EAAOE,WAAWC,YAAYH,GAC9BlE,EAAO,IAAIvQ,MAAM,gCACVwR,EAAQ6C,IAEC,MAAbtQ,EAAKqC,OAAcrC,EAAKqC,KAAO,IACnCrC,EAAK4F,IAAMsI,EAAYlO,EAAK4F,IAAK5F,EAAKqC,MACtCrC,EAAKqC,KAAKrC,EAAK8Q,aAAe,YAAcR,EAC5CI,EAAOK,IAAM1C,EAASrO,EAAK4F,IAAK5F,EAAKqC,MACrCoL,EAAQvQ,SAAS8T,gBAAgBC,YAAYP,KAE9C,OAA2B,IAApB1Q,EAAKoQ,WAAqBrC,EAAWD,EAASC,IAqCdmD,sBA9IxC,SAA+B9E,GAAWsB,EAAetB,IAgJrC+E,CAAGpU,OAAQ0N,GAC5B2G,EAAe,SAAS3D,GAC3B,IAMI4D,EANAC,EAAO7D,EAAQvQ,SACfqU,EAAiBD,EAAKE,yBACtBC,EAAY,CACfC,IAAK,6BACLC,KAAM,sCAIP,SAASC,EAAaC,GACrB,OAAOA,EAAMlJ,OAASkJ,EAAMlJ,MAAMmJ,OAASL,EAAUI,EAAMtJ,KAG5D,SAASwJ,EAAYC,EAAQC,EAAQvI,EAAOwI,EAAKC,EAAOC,EAAaC,GACpE,IAAK,IAAIzW,EAAI8N,EAAO9N,EAAIsW,EAAKtW,IAAK,CACjC,IAAIiW,EAAQI,EAAOrW,GACN,MAATiW,GACHS,EAAWN,EAAQH,EAAOM,EAAOE,EAAID,IAIxC,SAASE,EAAWN,EAAQH,EAAOM,EAAOE,EAAID,GAC7C,IAamBJ,EAAQH,EAAOO,EAb9B7J,EAAMsJ,EAAMtJ,IAChB,GAAmB,iBAARA,EAUN,OAmFN,SAAyByJ,EAAQH,EAAOM,EAAOE,EAAID,GAElD,CAAA,GADAG,EAAcV,EAAOM,GACC,MAAlBN,EAAM/I,SAST,OADA+I,EAAMjJ,QAAU,EACT2I,EARP,IAAItS,EAAUqT,EAAWN,EAAQH,EAAM/I,SAAUqJ,EAAOE,EAAID,GAI5D,OAHAP,EAAMnJ,IAAMmJ,EAAM/I,SAASJ,IAC3BmJ,EAAMjJ,QAAuB,MAAbiJ,EAAMnJ,IAAcmJ,EAAM/I,SAASF,QAAU,EAC7D4J,EAAWR,EAAQ/S,EAASmT,GACrBnT,GA1FIwT,CAAgBT,EAAQH,EAAOM,EAAOE,EAAID,GAPrD,OAFAP,EAAMxK,MAAQ,GACK,MAAfwK,EAAMlJ,OAAe+J,EAAcb,EAAMlJ,MAAOkJ,EAAOM,GACnD5J,GACP,IAAK,IAAK,OAQOyJ,EARWA,EAQII,EARWA,GAQlBP,EARWA,GAShCnJ,IAAM4I,EAAKqB,eAAed,EAAMpJ,UACtC+J,EAAWR,EAAQH,EAAMnJ,IAAK0J,GACvBP,EAAMnJ,IAVX,IAAK,IAAK,OAAOkK,EAAWZ,EAAQH,EAAOO,GAC3C,IAAK,IAAK,OA0Bb,SAAwBJ,EAAQH,EAAOM,EAAOE,EAAID,GACjD,IAAI7H,EAAW+G,EAAKE,yBACpB,GAAsB,MAAlBK,EAAMpJ,SAAkB,CAC3B,IAAIA,EAAWoJ,EAAMpJ,SACrBsJ,EAAYxH,EAAU9B,EAAU,EAAGA,EAASnM,OAAQ6V,EAAO,KAAME,GAKlE,OAHAR,EAAMnJ,IAAM6B,EAASsI,WACrBhB,EAAMjJ,QAAU2B,EAASuI,WAAWxW,OACpCkW,EAAWR,EAAQzH,EAAU6H,GACtB7H,EAnCYwI,CAAef,EAAQH,EAAOM,EAAOE,EAAID,GAC1D,QAAS,OAoCZ,SAAuBJ,EAAQH,EAAOM,EAAOE,EAAID,GAChD,IAAI7J,EAAMsJ,EAAMtJ,IACZyK,EAASnB,EAAMlJ,MACfsK,EAAKD,GAAUA,EAAOC,GAEtBhU,GADJoT,EAAKT,EAAaC,IAAUQ,GAE3BY,EAAK3B,EAAK4B,gBAAgBb,EAAI9J,EAAK,CAAC0K,GAAIA,IAAO3B,EAAK4B,gBAAgBb,EAAI9J,GACxE0K,EAAK3B,EAAKX,cAAcpI,EAAK,CAAC0K,GAAIA,IAAO3B,EAAKX,cAAcpI,GAC7DsJ,EAAMnJ,IAAMzJ,EACE,MAAV+T,GAoXL,SAAkBnB,EAAOmB,EAAQX,GAChC,IAAK,IAAIc,KAAQH,EAChBI,EAAQvB,EAAOsB,EAAM,KAAMH,EAAOG,GAAOd,GArXzCgB,CAASxB,EAAOmB,EAAQX,GAGzB,GADAG,EAAWR,EAAQ/S,EAASmT,GACT,MAAfP,EAAMlJ,OAAgD,MAA/BkJ,EAAMlJ,MAAM2K,gBACtCC,EAAmB1B,QAOnB,GAJkB,MAAdA,EAAM9K,OACU,KAAf8K,EAAM9K,KAAa9H,EAAQuU,YAAc3B,EAAM9K,KAC9C8K,EAAMpJ,SAAW,CAACH,EAAM,SAAKhN,OAAWA,EAAWuW,EAAM9K,UAAMzL,OAAWA,KAE1D,MAAlBuW,EAAMpJ,SAAkB,CAC3B,IAAIA,EAAWoJ,EAAMpJ,SACrBsJ,EAAY9S,EAASwJ,EAAU,EAAGA,EAASnM,OAAQ6V,EAAO,KAAME,GAoZ9DW,GADiBnB,EAlZNA,GAmZIlJ,MACD,WAAdkJ,EAAMtJ,KAA8B,MAAVyK,IACzB,UAAWA,GAAQI,EAAQvB,EAAO,QAAS,KAAMmB,EAAOjS,WAAOzF,GAC/D,kBAAmB0X,GAAQI,EAAQvB,EAAO,gBAAiB,KAAMmB,EAAOS,mBAAenY,IAJ7F,IAAsBuW,EACjBmB,EAhZJ,OAAO/T,EA/DW0R,CAAcqB,EAAQH,EAAOM,EAAOE,EAAID,IAU3D,SAASQ,EAAWZ,EAAQH,EAAOO,GAClC,IACIsB,EAAU,CAACC,QAAS,QAASC,MAAO,QAASC,MAAO,QAASC,MAAO,QAASC,GAAI,QAASC,GAAI,KAAMC,GAAI,KAAMC,SAAU,QAASC,IAAK,aAD7HtC,EAAMpJ,SAAShC,MAAM,kBAAoB,IACuG,KAAO,MAChK2N,EAAO9C,EAAKX,cAAc+C,GAC9BU,EAAKC,UAAYxC,EAAMpJ,SACvBoJ,EAAMnJ,IAAM0L,EAAKvB,WACjBhB,EAAMjJ,QAAUwL,EAAKtB,WAAWxW,OAGhC,IAFA,IACIgY,EADA/J,EAAW+G,EAAKE,yBAEb8C,EAAQF,EAAKvB,YACnBtI,EAAS0G,YAAYqD,GAGtB,OADA9B,EAAWR,EAAQzH,EAAU6H,GACtB7H,EA0CR,SAASgI,EAAcV,EAAOM,GAC7B,IAAIoC,EACJ,GAA8B,mBAAnB1C,EAAMtJ,IAAI1F,KAAqB,CAGzC,GAFAgP,EAAMxK,MAAQ6F,OAAOsH,OAAO3C,EAAMtJ,KAEA,OADlCgM,EAAW1C,EAAMxK,MAAMxE,MACV4R,kBAA2B,OAAOlD,EAC/CgD,EAASE,mBAAoB,MACvB,CAGN,GAFA5C,EAAMxK,WAAQ,EAEoB,OADlCkN,EAAW1C,EAAMtJ,KACJkM,kBAA2B,OAAOlD,EAC/CgD,EAASE,mBAAoB,EAC7B5C,EAAMxK,MAAgC,MAAvBwK,EAAMtJ,IAAI/I,WAAyD,mBAA7BqS,EAAMtJ,IAAI/I,UAAUqD,KAAuB,IAAIgP,EAAMtJ,IAAIsJ,GAASA,EAAMtJ,IAAIsJ,GAMlI,GAJAA,EAAMhJ,OAASgJ,EAAMxK,MACF,MAAfwK,EAAMlJ,OAAe+J,EAAcb,EAAMlJ,MAAOkJ,EAAOM,GAC3DO,EAAcb,EAAMhJ,OAAQgJ,EAAOM,GACnCN,EAAM/I,SAAWR,EAAMU,UAAU6I,EAAMhJ,OAAOhG,KAAKxG,KAAKwV,EAAMxK,MAAOwK,IACjEA,EAAM/I,WAAa+I,EAAO,MAAM5V,MAAM,0DAC1CsY,EAASE,kBAAoB,KAiB9B,SAASC,EAAY1C,EAAQ2C,EAAK1C,EAAQ2C,EAAWzC,EAAOC,EAAaC,GACxE,GAAIsC,IAAQ1C,IAAiB,MAAP0C,GAAyB,MAAV1C,GAChC,GAAW,MAAP0C,EAAa5C,EAAYC,EAAQC,EAAQ,EAAGA,EAAO3V,OAAQ6V,EAAOC,EAAaC,QACnF,GAAc,MAAVJ,EAAgB4C,EAAYF,EAAK,EAAGA,EAAIrY,OAAQ2V,OACpD,CACJ,GAAI0C,EAAIrY,SAAW2V,EAAO3V,OAAQ,CAEjC,IADA,IAAIwY,GAAY,EACPlZ,EAAI,EAAGA,EAAIqW,EAAO3V,OAAQV,IAClC,GAAiB,MAAbqW,EAAOrW,IAAwB,MAAV+Y,EAAI/Y,GAAY,CACxCkZ,EAA6B,MAAjB7C,EAAOrW,GAAGsM,KAA6B,MAAdyM,EAAI/Y,GAAGsM,IAC5C,MAGF,GAAI4M,EAAW,CACd,IAASlZ,EAAI,EAAGA,EAAI+Y,EAAIrY,OAAQV,IAC3B+Y,EAAI/Y,KAAOqW,EAAOrW,KACH,MAAV+Y,EAAI/Y,IAA2B,MAAbqW,EAAOrW,GAAY0W,EAAWN,EAAQC,EAAOrW,GAAIuW,EAAOE,EAAI0C,EAAeJ,EAAK/Y,EAAI,EAAGwW,IAC5F,MAAbH,EAAOrW,GAAYiZ,EAAYF,EAAK/Y,EAAGA,EAAI,EAAGqW,GAClD+C,EAAWhD,EAAQ2C,EAAI/Y,GAAIqW,EAAOrW,GAAIuW,EAAO4C,EAAeJ,EAAK/Y,EAAI,EAAGwW,GAAcwC,EAAWvC,IAEvG,QAIF,GADAuC,EAAYA,GA6Kd,SAAsBD,EAAK1C,GAC1B,GAAgB,MAAZ0C,EAAIM,MAAgB1E,KAAK2E,IAAIP,EAAIM,KAAK3Y,OAAS2V,EAAO3V,SAAWiU,KAAK2E,IAAIP,EAAIrY,OAAS2V,EAAO3V,QAAS,CAC1G,IAAI6Y,EAAoBR,EAAI,IAAMA,EAAI,GAAGlM,UAAYkM,EAAI,GAAGlM,SAASnM,QAAU,EAC3E8Y,EAAqBT,EAAIM,KAAK,IAAMN,EAAIM,KAAK,GAAGxM,UAAYkM,EAAIM,KAAK,GAAGxM,SAASnM,QAAU,EAC3F+Y,EAAuBpD,EAAO,IAAMA,EAAO,GAAGxJ,UAAYwJ,EAAO,GAAGxJ,SAASnM,QAAU,EAC3F,GAAIiU,KAAK2E,IAAIE,EAAqBC,IAAyB9E,KAAK2E,IAAIC,EAAoBE,GACvF,OAAO,EAGT,OAAO,EAtLmBC,CAAaX,EAAK1C,GAC5B,CACd,IAAIgD,EAAON,EAAIM,KACfN,EAAMA,EAAIY,OAAOZ,EAAIM,MAGtB,IADA,IAA+EO,EAA3EC,EAAW,EAAG/L,EAAQ,EAAGgM,EAASf,EAAIrY,OAAS,EAAG4V,EAAMD,EAAO3V,OAAS,EAC3DmZ,GAAVC,GAA6BhM,GAAPwI,GAAc,CAE1C,IADIvW,EAAIgZ,EAAIc,OAAWE,EAAI1D,EAAOvI,KAClBkL,EACX,GAAS,MAALjZ,EAAW8Z,SACf,GAAS,MAALE,EAAWjM,SACf,GAAI/N,EAAEuM,MAAQyN,EAAEzN,IAAK,CACzB,IAAI0N,EAAyB,MAARX,GAAgBQ,GAAYd,EAAIrY,OAAS2Y,EAAK3Y,QAAqB,MAAR2Y,GAAiBL,EACrFlL,IACZsL,EAAWhD,EAAQrW,EAAGga,EAAGxD,EAAO4C,EAAeJ,IAD/Cc,EAC8DrD,GAAcwD,EAAevD,GACvFuC,GAAajZ,EAAE4M,MAAQoN,EAAEpN,KAAKiK,EAAWR,EAAQ6D,EAAWla,GAAIyW,OAEhE,CAEJ,IADIzW,EAAIgZ,EAAIe,MACFC,GAAMf,EACX,GAAS,MAALjZ,EAAW+Z,SACf,GAAS,MAALC,EAAWjM,QACf,CAAA,GAAI/N,EAAEuM,MAAQyN,EAAEzN,IAMhB,MALA0N,EAAyB,MAARX,GAAgBS,GAAUf,EAAIrY,OAAS2Y,EAAK3Y,QAAqB,MAAR2Y,GAAiBL,EAC/FI,EAAWhD,EAAQrW,EAAGga,EAAGxD,EAAO4C,EAAeJ,EAAKe,EAAS,EAAGtD,GAAcwD,EAAevD,IACzFuC,GAAalL,EAAQwI,IAAKM,EAAWR,EAAQ6D,EAAWla,GAAIoZ,EAAeJ,EAAKc,EAAUrD,IAC9FsD,IAAUhM,SAPgBgM,IAAUhM,SAXX+L,IAAY/L,IAuBxC,KAAiB+L,GAAVC,GAA6BhM,GAAPwI,GAAc,CAC1C,IAAIvW,EAAiBga,EACrB,IADIha,EAAIgZ,EAAIe,OAASC,EAAI1D,EAAOC,KAChB0C,EACX,GAAS,MAALjZ,EAAW+Z,SACf,GAAS,MAALC,EAAWzD,SACf,GAAIvW,EAAEuM,MAAQyN,EAAEzN,IAAK,CACrB0N,EAAyB,MAARX,GAAgBS,GAAUf,EAAIrY,OAAS2Y,EAAK3Y,QAAqB,MAAR2Y,GAAiBL,EAC/FI,EAAWhD,EAAQrW,EAAGga,EAAGxD,EAAO4C,EAAeJ,EAAKe,EAAS,EAAGtD,GAAcwD,EAAevD,GACzFuC,GAAajZ,EAAE4M,MAAQoN,EAAEpN,KAAKiK,EAAWR,EAAQ6D,EAAWla,GAAIyW,GACvD,MAATzW,EAAE+M,MAAa0J,EAAczW,EAAE+M,KACnCgN,IAAUxD,QAEN,CAEJ,GADKsD,IAAKA,EAAMM,EAAUnB,EAAKe,IACtB,MAALC,EAAW,CACd,IAAII,EAAWP,EAAIG,EAAEzN,KACrB,GAAgB,MAAZ6N,EAAkB,CACrB,IAAIC,EAAUrB,EAAIoB,GACdH,EAAyB,MAARX,GAAgBc,GAAYpB,EAAIrY,OAAS2Y,EAAK3Y,QAAqB,MAAR2Y,GAAiBL,EACjGI,EAAWhD,EAAQgE,EAASL,EAAGxD,EAAO4C,EAAeJ,EAAKe,EAAS,EAAGtD,GAAcwC,EAAWvC,GAC/FG,EAAWR,EAAQ6D,EAAWG,GAAU5D,GACxCuC,EAAIoB,GAAUhN,MAAO,EACF,MAAfiN,EAAQtN,MAAa0J,EAAc4D,EAAQtN,SAE3C,CAEJ0J,EADUE,EAAWN,EAAQ2D,EAAGxD,EAAOE,EAAID,IAI7CF,SA3B0BwD,IAAUxD,IA6BrC,GAAIA,EAAMxI,EAAO,MAElBqI,EAAYC,EAAQC,EAAQvI,EAAOwI,EAAM,EAAGC,EAAOC,EAAaC,GAChEwC,EAAYF,EAAKc,EAAUC,EAAS,EAAGzD,IAGzC,SAAS+C,EAAWhD,EAAQ2C,EAAK9C,EAAOM,EAAOC,EAAawC,EAAWvC,GACtE,IAkCmBL,EAAQ2C,EAAK9C,EAAOO,EAlCnC6D,EAAStB,EAAIpM,IACjB,GAAI0N,IADwBpE,EAAMtJ,IACd,CAInB,GAHAsJ,EAAMxK,MAAQsN,EAAItN,MAClBwK,EAAMhJ,OAAS8L,EAAI9L,OACnBgJ,EAAMzU,OAASuX,EAAIvX,QACdwX,GA2VP,SAAyB/C,EAAO8C,GAC/B,IAAIuB,EAAkBC,EACH,MAAftE,EAAMlJ,OAAuD,mBAA/BkJ,EAAMlJ,MAAMyN,iBAA+BF,EAAmBrE,EAAMlJ,MAAMyN,eAAe/Z,KAAKwV,EAAMxK,MAAOwK,EAAO8C,IAC3H,iBAAd9C,EAAMtJ,KAA2D,mBAAhCsJ,EAAMhJ,OAAOuN,iBAA+BD,EAAuBtE,EAAMhJ,OAAOuN,eAAe/Z,KAAKwV,EAAMxK,MAAOwK,EAAO8C,IACpK,aAA2BrZ,IAArB4a,QAA2D5a,IAAzB6a,GAAwCD,GAAqBC,IACpGtE,EAAMnJ,IAAMiM,EAAIjM,IAChBmJ,EAAMjJ,QAAU+L,EAAI/L,QACpBiJ,EAAM/I,SAAW6L,EAAI7L,SACd,IAnWWuN,CAAgBxE,EAAO8C,GAAM,OAC/C,GAAsB,iBAAXsB,EAQV,OAPmB,MAAfpE,EAAMlJ,QACLiM,GACH/C,EAAMxK,MAAQ,GACdqL,EAAcb,EAAMlJ,MAAOkJ,EAAOM,IAE9BmE,EAAgBzE,EAAMlJ,MAAOkJ,EAAOM,IAElC8D,GACP,IAAK,KAaT,SAAoBtB,EAAK9C,GACpB8C,EAAIlM,SAAS0E,aAAe0E,EAAMpJ,SAAS0E,aAC9CwH,EAAIjM,IAAI6N,UAAY1E,EAAMpJ,UAE3BoJ,EAAMnJ,IAAMiM,EAAIjM,IAjBH8N,CAAW7B,EAAK9C,GAAQ,MAClC,IAAK,IAkBWG,EAlBKA,EAkBQH,EAlBKA,EAkBEO,EAlBKA,GAkBjBuC,EAlBKA,GAmBxBlM,WAAaoJ,EAAMpJ,UAC1BoN,EAAWlB,GACX/B,EAAWZ,EAAQH,EAAOO,KAEtBP,EAAMnJ,IAAMiM,EAAIjM,IAAKmJ,EAAMjJ,QAAU+L,EAAI/L,SAvBY,MACvD,IAAK,KAwBT,SAAwBoJ,EAAQ2C,EAAK9C,EAAO+C,EAAWzC,EAAOC,EAAaC,GAC1EqC,EAAY1C,EAAQ2C,EAAIlM,SAAUoJ,EAAMpJ,SAAUmM,EAAWzC,EAAOC,EAAaC,GACjF,IAAIzJ,EAAU,EAAGH,EAAWoJ,EAAMpJ,SAElC,IADAoJ,EAAMnJ,IAAM,OACRD,EAAkB,CACrB,IAAK,IAAI7M,EAAI,EAAGA,EAAI6M,EAASnM,OAAQV,IAAK,CACzC,IAAI0Y,EAAQ7L,EAAS7M,GACR,MAAT0Y,GAA8B,MAAbA,EAAM5L,MACT,MAAbmJ,EAAMnJ,MAAamJ,EAAMnJ,IAAM4L,EAAM5L,KACzCE,GAAW0L,EAAM1L,SAAW,GAGd,IAAZA,IAAeiJ,EAAMjJ,QAAUA,IApCvB6N,CAAezE,EAAQ2C,EAAK9C,EAAO+C,EAAWzC,EAAOC,EAAaC,GAAK,MACjF,SAsCJ,SAAuBsC,EAAK9C,EAAO+C,EAAWzC,EAAOE,GACpD,IAAIpT,EAAU4S,EAAMnJ,IAAMiM,EAAIjM,IAC9B2J,EAAKT,EAAaC,IAAUQ,EACV,aAAdR,EAAMtJ,MACU,MAAfsJ,EAAMlJ,QAAekJ,EAAMlJ,MAAQ,IACrB,MAAdkJ,EAAM9K,OACT8K,EAAMlJ,MAAM5H,MAAQ8Q,EAAM9K,KAC1B8K,EAAM9K,UAAOzL,KAqNhB,SAAqBuW,EAAO8C,EAAK3B,EAAQX,GACxC,GAAc,MAAVW,EACH,IAAK,IAAIG,KAAQH,EAChBI,EAAQvB,EAAOsB,EAAMwB,GAAOA,EAAIxB,GAAOH,EAAOG,GAAOd,GAGvD,GAAW,MAAPsC,EACH,IAAK,IAAIxB,KAAQwB,EACF,MAAV3B,GAAoBG,KAAQH,IAClB,cAATG,IAAsBA,EAAO,SACjB,MAAZA,EAAK,IAA0B,MAAZA,EAAK,IAAeuD,EAAkBvD,GAC3C,QAATA,GAAgBtB,EAAMnJ,IAAIvH,gBAAgBgS,GADiBwD,EAAY9E,EAAOsB,OAAM7X,KA5NhGsb,CAAY/E,EAAO8C,EAAIhM,MAAOkJ,EAAMlJ,MAAO0J,GACxB,MAAfR,EAAMlJ,OAAgD,MAA/BkJ,EAAMlJ,MAAM2K,gBACtCC,EAAmB1B,GAEC,MAAZ8C,EAAI5N,MAA8B,MAAd8K,EAAM9K,MAA+B,KAAf8K,EAAM9K,KACpD4N,EAAI5N,KAAKoG,aAAe0E,EAAM9K,KAAKoG,aAAYwH,EAAIjM,IAAImK,WAAW0D,UAAY1E,EAAM9K,OAGxE,MAAZ4N,EAAI5N,OAAc4N,EAAIlM,SAAW,CAACH,EAAM,SAAKhN,OAAWA,EAAWqZ,EAAI5N,UAAMzL,EAAWqZ,EAAIjM,IAAImK,cAClF,MAAdhB,EAAM9K,OAAc8K,EAAMpJ,SAAW,CAACH,EAAM,SAAKhN,OAAWA,EAAWuW,EAAM9K,UAAMzL,OAAWA,KAClGoZ,EAAYzV,EAAS0V,EAAIlM,SAAUoJ,EAAMpJ,SAAUmM,EAAWzC,EAAO,KAAME,IA1DhEwE,CAAclC,EAAK9C,EAAO+C,EAAWzC,EAAOE,QA6DzD,SAAyBL,EAAQ2C,EAAK9C,EAAOM,EAAOC,EAAawC,EAAWvC,GAC3E,GAAIuC,EACHrC,EAAcV,EAAOM,OACf,CAEN,GADAN,EAAM/I,SAAWR,EAAMU,UAAU6I,EAAMhJ,OAAOhG,KAAKxG,KAAKwV,EAAMxK,MAAOwK,IACjEA,EAAM/I,WAAa+I,EAAO,MAAM5V,MAAM,0DACvB,MAAf4V,EAAMlJ,OAAe2N,EAAgBzE,EAAMlJ,MAAOkJ,EAAOM,GAC7DmE,EAAgBzE,EAAMhJ,OAAQgJ,EAAOM,GAEhB,MAAlBN,EAAM/I,UACW,MAAhB6L,EAAI7L,SAAkBwJ,EAAWN,EAAQH,EAAM/I,SAAUqJ,EAAOE,EAAID,GACnE4C,EAAWhD,EAAQ2C,EAAI7L,SAAU+I,EAAM/I,SAAUqJ,EAAOC,EAAawC,EAAWvC,GACrFR,EAAMnJ,IAAMmJ,EAAM/I,SAASJ,IAC3BmJ,EAAMjJ,QAAUiJ,EAAM/I,SAASF,SAEP,MAAhB+L,EAAI7L,UACZgO,EAAWnC,EAAI7L,SAAU,MACzB+I,EAAMnJ,SAAMpN,EACZuW,EAAMjJ,QAAU,IAGhBiJ,EAAMnJ,IAAMiM,EAAIjM,IAChBmJ,EAAMjJ,QAAU+L,EAAI/L,SAhFfmO,CAAgB/E,EAAQ2C,EAAK9C,EAAOM,EAAOC,EAAawC,EAAWvC,QAGxEyE,EAAWnC,EAAK,MAChBrC,EAAWN,EAAQH,EAAOM,EAAOE,EAAID,GA0FvC,SAAS0D,EAAU7D,EAAQC,GAC1B,IAAIsD,EAAM,GAAI5Z,EAAI,EAClB,IAASA,EAAI,EAAGA,EAAIsW,EAAKtW,IAAK,CAC7B,IAAIiW,EAAQI,EAAOrW,GACnB,GAAa,MAATiW,EAAe,CAClB,IAAIsB,EAAOtB,EAAM3J,IACL,MAARiL,IAAcqC,EAAIrC,GAAQvX,IAGhC,OAAO4Z,EAER,SAASK,EAAWhE,GACnB,IAAImF,EAASnF,EAAMjJ,QACnB,GAAc,MAAVoO,GAA+B,MAAbnF,EAAMnJ,IASvB,OAAOmJ,EAAMnJ,IARjB,IAAI6B,EAAW+G,EAAKE,yBACpB,GAAa,EAATwF,EAAY,CAEf,IADA,IAAItO,EAAMmJ,EAAMnJ,MACPsO,GAAQzM,EAAS0G,YAAYvI,EAAI0J,aAC1C7H,EAAS0M,aAAavO,EAAK6B,EAASsI,YAErC,OAAOtI,EAIT,SAASwK,EAAe9C,EAAQrW,EAAGwW,GAClC,KAAOxW,EAAIqW,EAAO3V,OAAQV,IACzB,GAAiB,MAAbqW,EAAOrW,IAA+B,MAAjBqW,EAAOrW,GAAG8M,IAAa,OAAOuJ,EAAOrW,GAAG8M,IAElE,OAAO0J,EAER,SAASI,EAAWR,EAAQtJ,EAAK0J,GAC5BA,GAAeA,EAAYxB,WAAYoB,EAAOiF,aAAavO,EAAK0J,GAC/DJ,EAAOf,YAAYvI,GAEzB,SAAS6K,EAAmB1B,GAC3B,IAAIpJ,EAAWoJ,EAAMpJ,SACrB,GAAgB,MAAZA,GAAwC,IAApBA,EAASnM,QAAoC,MAApBmM,EAAS,GAAGF,IAAa,CACzE,IAAI2O,EAAUzO,EAAS,GAAGA,SACtBoJ,EAAMnJ,IAAI2L,YAAc6C,IAASrF,EAAMnJ,IAAI2L,UAAY6C,QAEvD,GAAkB,MAAdrF,EAAM9K,MAA4B,MAAZ0B,GAAwC,IAApBA,EAASnM,OAAc,MAAM,IAAIL,MAAM,mDAG3F,SAAS4Y,EAAY5C,EAAQvI,EAAOwI,EAAKjV,GACxC,IAAK,IAAIrB,EAAI8N,EAAO9N,EAAIsW,EAAKtW,IAAK,CACjC,IAAIiW,EAAQI,EAAOrW,GACN,MAATiW,IACCA,EAAM9I,KAAM8I,EAAM9I,MAAO,EACxB+N,EAAWjF,EAAO5U,KAI1B,SAAS6Z,EAAWjF,EAAO5U,GAC1B,IASKka,EATDC,EAAW,EAAGC,EAAS,EACvBxF,EAAMlJ,OAA+C,mBAA/BkJ,EAAMlJ,MAAM2O,iBAEvB,OADVH,EAAStF,EAAMlJ,MAAM2O,eAAejb,KAAKwV,EAAMxK,MAAOwK,KACb,mBAAhBsF,EAAO7L,OACnC8L,IACAD,EAAO7L,KAAKiM,EAAcA,KAGH,iBAAd1F,EAAMtJ,KAA2D,mBAAhCsJ,EAAMhJ,OAAOyO,iBAE1C,OADVH,EAAStF,EAAMhJ,OAAOyO,eAAejb,KAAKwV,EAAMxK,MAAOwK,KACd,mBAAhBsF,EAAO7L,OACnC8L,IACAD,EAAO7L,KAAKiM,EAAcA,KAI5B,SAASA,IACR,KAAMF,IAAWD,IAuBnB,SAASI,EAAS3F,GACbA,EAAMlJ,OAAyC,mBAAzBkJ,EAAMlJ,MAAM6O,UAAyB3F,EAAMlJ,MAAM6O,SAASnb,KAAKwV,EAAMxK,MAAOwK,GACtG,GAAyB,iBAAdA,EAAMtJ,IACqB,mBAA1BsJ,EAAMhJ,OAAO2O,UAAyB3F,EAAMhJ,OAAO2O,SAASnb,KAAKwV,EAAMxK,MAAOwK,GACnE,MAAlBA,EAAM/I,UAAkB0O,EAAS3F,EAAM/I,cACrC,CACN,IAAIL,EAAWoJ,EAAMpJ,SACrB,GAAIlJ,MAAM2J,QAAQT,GACjB,IAAK,IAAI7M,EAAI,EAAGA,EAAI6M,EAASnM,OAAQV,IAAK,CACzC,IAAI0Y,EAAQ7L,EAAS7M,GACR,MAAT0Y,GAAekD,EAASlD,KAhC7BkD,CAAS3F,GACLA,EAAMnJ,KAAK,CACd,IAAIsO,EAASnF,EAAMjJ,SAAW,EAC9B,GAAa,EAAToO,EAEH,IADA,IAAItO,EAAMmJ,EAAMnJ,MACPsO,GACRS,EAAkB/O,EAAI0J,aAGxBqF,EAAkB5F,EAAMnJ,KACT,MAAXzL,GAAoC,MAAjB4U,EAAMjJ,SA6Gf,OADa8O,EA5G4C7F,EAAMlJ,SA6GtD+O,EAAOC,UAAYD,EAAOE,UAAYF,EAAOJ,gBAAkBI,EAAOF,WA7Ge,iBAAd3F,EAAMtJ,MAC9FtL,EAAQgY,KACRhY,EAAQgY,KAAK/Q,KAAK2N,GADJ5U,EAAQgY,KAAO,CAACpD,IA2GxC,IAA+B6F,EAzH9BH,IAqBD,SAASE,EAAkBxO,GAC1B,IAAI+I,EAAS/I,EAAK2H,WACJ,MAAVoB,GAAgBA,EAAOnB,YAAY5H,GAuBxC,SAASmK,EAAQvB,EAAOsB,EAAMwB,EAAK5T,EAAOsR,GACzC,IAAIpT,EAAU4S,EAAMnJ,IACpB,GAAa,QAATyK,GAA2B,OAATA,IAAkBwB,IAAQ5T,IA6DxB8Q,EA7DkDA,EA8D1D,WADegG,EA7DkD1E,IA8D7C,YAAT0E,GAA+B,kBAATA,GAAqC,aAATA,GAAuBhG,EAAMnJ,MAAQ4I,EAAKwG,gBA9DX,iBAAV/W,SAAuC,IAAVA,IAAyB2V,EAAkBvD,GAA1K,CA6DD,IAAyBtB,EAAOgG,EASPhG,EAHJgG,EAlEhBE,EAAc5E,EAAKzV,QAAQ,KAC/B,IAAmB,EAAfqa,GAAoD,UAAhC5E,EAAK6E,OAAO,EAAGD,GACtC9Y,EAAQgZ,eAAe,+BAAgC9E,EAAK/E,MAAM2J,EAAc,GAAIhX,QAEhF,GAAgB,MAAZoS,EAAK,IAA0B,MAAZA,EAAK,IAA+B,mBAAVpS,EAAsB4V,EAAY9E,EAAOsB,EAAMpS,QAChG,GAAa,UAAToS,GAuEV,SAAqBlU,EAAS0V,EAAK7V,GAC9B6V,IAAQ7V,IAAOG,EAAQH,MAAMoZ,QAAU,GAAIvD,EAAM,MACrD,GAAa,MAAT7V,EAAeG,EAAQH,MAAMoZ,QAAU,QACtC,GAAqB,iBAAVpZ,EAAoBG,EAAQH,MAAMoZ,QAAUpZ,MACvD,CAEJ,IAAK,IAAIqU,IADU,iBAARwB,IAAkB1V,EAAQH,MAAMoZ,QAAU,IACpCpZ,EAChBG,EAAQH,MAAMqU,GAAQrU,EAAMqU,GAE7B,GAAW,MAAPwB,GAA8B,iBAARA,EACzB,IAAK,IAAIxB,KAAQwB,EACVxB,KAAQrU,IAAQG,EAAQH,MAAMqU,GAAQ,KAlFpBgF,CAAYlZ,EAAS0V,EAAK5T,QAChD,GAAIoS,KAAQlU,IA6DD,UADI4Y,EA5DqB1E,IA6DN,SAAT0E,GAA4B,SAATA,GAA4B,UAATA,GAA6B,WAATA,SA7D3Bvc,IAAP+W,MA+D1BR,EA/D+DA,GAgE1ElJ,MAAMsK,KAAgC,EAA1BpB,EAAMtJ,IAAI7K,QAAQ,MAhEoD,CAC9F,GAAa,UAATyV,EAAkB,CACrB,IAAIiF,EAAc,GAAKrX,EAEvB,IAAmB,UAAd8Q,EAAMtJ,KAAiC,aAAdsJ,EAAMtJ,MAAuBsJ,EAAMnJ,IAAI3H,QAAUqX,GAAevG,EAAMnJ,MAAQ4I,EAAKwG,cAAe,OAEhI,GAAkB,WAAdjG,EAAMtJ,IACT,GAAc,OAAVxH,GACH,IAAiC,IAA7B8Q,EAAMnJ,IAAI+K,eAAwB5B,EAAMnJ,MAAQ4I,EAAKwG,cAAe,YAExE,GAAY,OAARnD,GAAgB9C,EAAMnJ,IAAI3H,QAAUqX,GAAevG,EAAMnJ,MAAQ4I,EAAKwG,cAAe,OAI3F,GAAkB,WAAdjG,EAAMtJ,KAA2B,MAAPoM,GAAe9C,EAAMnJ,IAAI3H,QAAUqX,EAAa,OAG/E,GAAkB,UAAdvG,EAAMtJ,KAA4B,SAAT4K,EAE5B,YADAlU,EAAQmC,aAAa+R,EAAMpS,GAG5B9B,EAAQkU,GAAQpS,MAGK,kBAAVA,EACNA,EAAO9B,EAAQmC,aAAa+R,EAAM,IACjClU,EAAQkC,gBAAgBgS,GAEzBlU,EAAQmC,aAAsB,cAAT+R,EAAuB,QAAUA,EAAMpS,IA6BnE,SAAS2V,EAAkBmB,GAC1B,MAAgB,WAATA,GAA8B,aAATA,GAAgC,aAATA,GAAgC,aAATA,GAAgC,mBAATA,GAAsC,mBAATA,EA6B/H,SAASlB,EAAY9E,EAAOsB,EAAMpS,GACjC,IAAI9B,EAAU4S,EAAMnJ,IAChB0D,EAA8B,mBAAZiF,EAAyBtQ,EAAQ,SAASvF,GAC/D,IAAI2b,EAASpW,EAAM1E,KAAK4C,EAASzD,GAEjC,OADA6V,EAAQhV,KAAK4C,EAASzD,GACf2b,GAER,GAAIhE,KAAQlU,EAASA,EAAQkU,GAAyB,mBAAVpS,EAAuBqL,EAAW,SACzE,CACJ,IAAIiM,EAAYlF,EAAK/E,MAAM,GAE3B,QADqB9S,IAAjBuW,EAAMzU,SAAsByU,EAAMzU,OAAS,IAC3CyU,EAAMzU,OAAO+V,KAAU/G,EAAU,OACX,MAAtByF,EAAMzU,OAAO+V,IAAelU,EAAQqZ,oBAAoBD,EAAWxG,EAAMzU,OAAO+V,IAAO,GACtE,mBAAVpS,IACV8Q,EAAMzU,OAAO+V,GAAQ/G,EACrBnN,EAAQG,iBAAiBiZ,EAAWxG,EAAMzU,OAAO+V,IAAO,KAK3D,SAAST,EAAcgF,EAAQ7F,EAAOM,GACR,mBAAlBuF,EAAOa,QAAuBb,EAAOa,OAAOlc,KAAKwV,EAAMxK,MAAOwK,GAC1C,mBAApB6F,EAAOC,UAAyBxF,EAAMjO,KAAKwT,EAAOC,SAASlV,KAAKoP,EAAMxK,MAAOwK,IAEzF,SAASyE,EAAgBoB,EAAQ7F,EAAOM,GACR,mBAApBuF,EAAOE,UAAyBzF,EAAMjO,KAAKwT,EAAOE,SAASnV,KAAKoP,EAAMxK,MAAOwK,IA4BzF,MAAO,CAAC2G,OAdR,SAAgB9P,EAAKuJ,GACpB,IAAKvJ,EAAK,MAAM,IAAIzM,MAAM,qFAC1B,IAAIkW,EAAQ,GACRsG,EAASnH,EAAKwG,cACdY,EAAYhQ,EAAIiQ,aAEF,MAAdjQ,EAAIuJ,SAAgBvJ,EAAI8K,YAAc,IACrCjU,MAAM2J,QAAQ+I,KAASA,EAAS,CAACA,IACtCyC,EAAYhM,EAAKA,EAAIuJ,OAAQ3J,EAAMa,kBAAkB8I,IAAS,EAAOE,EAAO,KAAoB,iCAAduG,OAA+Cpd,EAAYod,GAC7IhQ,EAAIuJ,OAASA,EAEC,MAAVwG,GAAkBnH,EAAKwG,gBAAkBW,GAAQA,EAAOG,QAC5D,IAAK,IAAIhd,EAAI,EAAGA,EAAIuW,EAAM7V,OAAQV,IAAKuW,EAAMvW,MAEtBid,iBAjlBxB,SAA0BzM,GAAW,OAAOiF,EAAUjF,KAumBvD,IAsBI0M,EAtBM,SAASrL,GAClB,IAAIsL,EAAgB3H,EAAa3D,GACjCsL,EAAcF,iBAAiB,SAASrd,IACtB,IAAbA,EAAEoH,OAAkBpH,EAAEoH,YAAStH,EAC9BsH,MAEN,IAAIoW,EAAY,GAKhB,SAASC,EAAYC,GACpB,IAAIC,EAAQH,EAAUtb,QAAQwb,IACjB,EAATC,GAAYH,EAAUI,OAAOD,EAAO,GAEzC,SAASvW,IACR,IAAK,IAAIhH,EAAI,EAAGA,EAAIod,EAAU1c,OAAQV,GAAK,EAC1Cod,EAAUpd,KAGZ,MAAO,CAACyd,UAbR,SAAmBH,EAAM9M,GA3B1B,IAAkBA,EAGbkN,EAAUC,EACVzZ,EAwBHmZ,EAAYC,GACZF,EAAU9U,KAAKgV,GA7BC9M,EA6BcA,EA1B3BkN,EAAO,EAAGC,EAAU,KACpBzZ,EAA2C,mBAA1B0Z,sBAAuCA,sBAAwBpZ,WAC7E,WACN,IAAIqZ,EAAMC,KAAKD,MACF,IAATH,GALM,IAKQG,EAAMH,GACvBA,EAAOG,EACPrN,KAEoB,OAAZmN,IACRA,EAAUzZ,EAAQ,WACjByZ,EAAU,KACVnN,IACAkN,EAAOI,KAAKD,OAbJ,IAcEA,EAAMH,SAwBWL,YAAaA,EAAarW,OAAQA,EAAQ4V,OAAQO,EAAcP,QAE3EmB,CAAI5c,QACxByQ,EAAe0D,sBAAsB4H,EAAclW,QACnD,IAAmBgX,EAiBnB9c,EAAEc,OAjBiBgc,EAiBLd,EAhBN,SAASe,EAAMC,GACrB,GAAkB,OAAdA,EAGH,OAFAF,EAAepB,OAAOqB,EAAM,SAC5BD,EAAeX,YAAYY,GAI5B,GAAsB,MAAlBC,EAAUjX,MAAqC,mBAAdiX,EAA0B,MAAM,IAAI7d,MAAM,gEAK/E2d,EAAeP,UAAUQ,EAHd,WACVD,EAAepB,OAAOqB,EAAMvR,EAAMwR,MAGnCF,EAAehX,WAIjB,IA+HmB6K,EAASmM,EAGvBG,EAASD,EAAWE,EAAQC,EAAaC,EAFzCC,EAGAC,EAnIDpN,EAAUvC,EACV4P,EAAmB,SAASC,GAC/B,GAAe,KAAXA,GAA2B,MAAVA,EAAgB,MAAO,GACnB,MAArBA,EAAOC,OAAO,KAAYD,EAASA,EAAOlM,MAAM,IAEpD,IADA,IAAIoM,EAAUF,EAAOhU,MAAM,KAAMmU,EAAQ,GAAIC,EAAW,GAC/C9e,EAAI,EAAGA,EAAI4e,EAAQle,OAAQV,IAAK,CACxC,IAAI+e,EAAQH,EAAQ5e,GAAG0K,MAAM,KACzBsU,EAAOhT,mBAAmB+S,EAAM,IAChC5Z,EAAyB,IAAjB4Z,EAAMre,OAAesL,mBAAmB+S,EAAM,IAAM,GAClD,SAAV5Z,EAAkBA,GAAQ,EACX,UAAVA,IAAmBA,GAAQ,GACpC,IAAI8Z,EAASD,EAAKtU,MAAM,YACpBwU,EAASL,GACY,EAArBG,EAAKld,QAAQ,MAAWmd,EAAOE,MACnC,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAOve,OAAQ0e,IAAK,CACvC,IAAIC,EAAQJ,EAAOG,GAAIE,EAAYL,EAAOG,EAAI,GAC1CG,EAAwB,IAAbD,IAAoBE,MAAMC,SAASH,EAAW,KACzDI,EAAUN,IAAMH,EAAOve,OAAS,EACpC,GAAc,KAAV2e,EAEmB,MAAlBP,EADAE,EAAOC,EAAOzM,MAAM,EAAG4M,GAAG/S,UACFyS,EAASE,GAAQ,GAC7CK,EAAQP,EAASE,KAEG,MAAjBE,EAAOG,KACVH,EAAOG,GAASK,EAAUva,EAAQoa,EAAW,GAAK,IAEnDL,EAASA,EAAOG,IAGlB,OAAOR,GAEJc,EAAa,SAAS9N,GACzB,IAOI+N,EAPAC,EAAyD,mBAA9BhO,EAAQ1H,QAAQC,UAC3C0V,EAAqC,mBAAjBrT,EAA8BA,EAAejI,WACrE,SAASub,EAAWC,GACnB,IAAIvZ,EAAOoL,EAAQlL,SAASqZ,GAAWlX,QAAQ,2BAA4BkD,oBAE3E,MADkB,aAAdgU,GAAwC,MAAZvZ,EAAK,KAAYA,EAAO,IAAMA,GACvDA,EAYR,SAASwZ,EAAUC,EAAMC,EAAWC,GACnC,IAAIC,EAAaH,EAAKpe,QAAQ,KAC1Bwe,EAAYJ,EAAKpe,QAAQ,KACzBye,GAAwB,EAAdF,EAAkBA,GAA0B,EAAbC,EAAiBA,EAAYJ,EAAKxf,OAC/E,IAAkB,EAAd2f,EAAiB,CACpB,IAAIG,GAAwB,EAAbF,EAAiBA,EAAYJ,EAAKxf,OAC7C+f,EAAchC,EAAiByB,EAAK1N,MAAM6N,EAAa,EAAGG,IAC9D,IAAK,IAAIE,KAAQD,EAAaN,EAAUO,GAAQD,EAAYC,GAE7D,IAAiB,EAAbJ,EAAgB,CACnB,IAAIK,EAAalC,EAAiByB,EAAK1N,MAAM8N,EAAY,IACzD,IAAK,IAAII,KAAQC,EAAYP,EAASM,GAAQC,EAAWD,GAE1D,OAAOR,EAAK1N,MAAM,EAAG+N,GAEtB,IAAIK,EAAS,CAACjO,OAAQ,KACtBkO,QAAiB,WAEhB,OADYD,EAAOjO,OAAOgM,OAAO,IAEhC,IAAK,IAAK,OAAOoB,EAAW,QAAQvN,MAAMoO,EAAOjO,OAAOjS,QACxD,IAAK,IAAK,OAAOqf,EAAW,UAAUvN,MAAMoO,EAAOjO,OAAOjS,QAAUqf,EAAW,QAC/E,QAAS,OAAOA,EAAW,YAAYvN,MAAMoO,EAAOjO,OAAOjS,QAAUqf,EAAW,UAAYA,EAAW,UAGzGe,QAAiB,SAASZ,EAAMzZ,EAAMsa,GACrC,IAAIZ,EAAY,GAAIC,EAAW,GAE/B,GADAF,EAAOD,EAAUC,EAAMC,EAAWC,GACtB,MAAR3Z,EAAc,CACjB,IAAK,IAAIia,KAAQja,EAAM0Z,EAAUO,GAAQja,EAAKia,GAC9CR,EAAOA,EAAKpX,QAAQ,aAAc,SAASkY,EAAQC,GAElD,cADOd,EAAUc,GACVxa,EAAKwa,KAGd,IAAIpV,EAAQwF,EAAiB8O,GACzBtU,IAAOqU,GAAQ,IAAMrU,GACzB,IAAIqV,EAAO7P,EAAiB+O,GAE5B,GADIc,IAAMhB,GAAQ,IAAMgB,GACpBrB,EAAmB,CACtB,IAAIpU,EAAQsV,EAAUA,EAAQtV,MAAQ,KAClCpB,EAAQ0W,EAAUA,EAAQ1W,MAAQ,KACtCwH,EAAQsP,aACJJ,GAAWA,EAAQjY,QAAS+I,EAAQ1H,QAAQqB,aAAaC,EAAOpB,EAAOuW,EAAOjO,OAASuN,GACtFrO,EAAQ1H,QAAQC,UAAUqB,EAAOpB,EAAOuW,EAAOjO,OAASuN,QAEzDrO,EAAQlL,SAASuD,KAAO0W,EAAOjO,OAASuN,IA+B9C,OA7BAU,EAAOQ,aAAe,SAASC,EAAQ1Q,EAASC,GAC/C,SAAS0Q,IACR,IAAIpB,EAAOU,EAAOC,UACdU,EAAS,GACTC,EAAWvB,EAAUC,EAAMqB,EAAQA,GACnC9V,EAAQoG,EAAQ1H,QAAQsB,MAC5B,GAAa,MAATA,EACH,IAAK,IAAIgW,KAAKhW,EAAO8V,EAAOE,GAAKhW,EAAMgW,GAExC,IAAK,IAAIC,KAAUL,EAAQ,CAC1B,IAAIM,EAAU,IAAIhQ,OAAO,IAAM+P,EAAO5Y,QAAQ,iBAAkB,SAASA,QAAQ,WAAY,aAAe,OAC5G,GAAI6Y,EAAQrN,KAAKkN,GAShB,YARAA,EAAS1Y,QAAQ6Y,EAAS,WAGzB,IAFA,IAAIC,EAAOF,EAAO7W,MAAM,aAAe,GACnCoG,EAAS,GAAGuB,MAAM/R,KAAK4D,UAAW,GAAI,GACjCrE,EAAI,EAAGA,EAAI4hB,EAAKlhB,OAAQV,IAChCuhB,EAAOK,EAAK5hB,GAAG8I,QAAQ,QAAS,KAAOkD,mBAAmBiF,EAAOjR,IAElE2Q,EAAQ0Q,EAAOK,GAASH,EAAQrB,EAAMwB,KAKzC9Q,EAAOsP,EAAMqB,GA/Ef,IAAuBM,EAiFlBhC,EAAmBhO,EAAQsP,YAjFTU,EAiFoCP,EAhFnD,WACS,MAAX1B,IACJA,EAAUE,EAAW,WACpBF,EAAU,KACViC,SA6EmC,MAA5BjB,EAAOjO,OAAOgM,OAAO,KAAY9M,EAAQiQ,aAAeR,GACjEA,KAEMV,GA8DR1f,EAAEsd,OA5DiB3M,EA4DL1Q,OA5Dc6c,EA4DNd,EA3DjBqB,EAAeoB,EAAW9N,IAG1B2M,EAAQ,SAASP,EAAM8D,EAAcV,GACxC,GAAY,MAARpD,EAAc,MAAM,IAAI5d,MAAM,wEAClC,IAAI2hB,EAAO,WACK,MAAX7D,GAAiBH,EAAepB,OAAOqB,EAAME,EAAQzR,EAAMwR,EAAWE,EAAO9R,IAAK8R,MAEnF6D,EAAO,SAAS/B,GACnB,GAAIA,IAAS6B,EACR,MAAM,IAAI1hB,MAAM,mCAAqC0hB,GAD/BxD,EAAauC,QAAQiB,EAAc,KAAM,CAACjZ,SAAS,KAG/EyV,EAAa6C,aAAaC,EAAQ,SAASa,EAASX,EAAQrB,GAC3D,IAAIiC,EAAS7D,EAAa,SAAS8D,EAAeC,GAC7CF,IAAW7D,IACfJ,EAAoB,MAARmE,GAAsC,mBAAdA,EAAKpb,MAAuC,mBAATob,EAA6B,MAAPA,EAC7FjE,EAASmD,EAAQlD,EAAc6B,EAAM5B,EAAa,KAClDH,GAAWiE,EAAcxF,QAhBb,SAAS7C,GAAI,OAAOA,IAgBalT,KAAKub,GAClDJ,MAEGE,EAAQjb,MAA2B,mBAAZib,EAAwBC,EAAO,GAAID,GAEzDA,EAAQI,QACXlR,EAAQT,QAAQuR,EAAQI,QAAQf,EAAQrB,IAAOxQ,KAAK,SAAS6S,GAC5DJ,EAAOD,EAASK,IACdN,GAECE,EAAOD,EAAS,QAEpBD,GACHjE,EAAeP,UAAUQ,EAAM+D,KAE1BQ,IAAM,SAAStC,EAAMzZ,EAAMsa,GACd,MAAdzC,KACHyC,EAAUA,GAAW,IACbjY,SAAU,GAEnBwV,EAAa,KACbC,EAAauC,QAAQZ,EAAMzZ,EAAMsa,IAElCvC,EAAMjV,IAAM,WAAY,OAAO8U,GAC/BG,EAAM7L,OAAS,SAAS8P,GAAUlE,EAAa5L,OAAS8P,GACxDjE,EAAMkE,KAAO,SAASC,GACrBA,EAAO7V,IAAItH,aAAa,OAAQ+Y,EAAa5L,OAASgQ,EAAO5V,MAAM7C,MACnEyY,EAAO7V,IAAI8V,QAAU,SAAShjB,GAC7B,KAAIA,EAAEijB,SAAWjjB,EAAEkjB,SAAWljB,EAAEmjB,UAAwB,IAAZnjB,EAAEojB,OAA9C,CACApjB,EAAEyG,iBACFzG,EAAEoH,QAAS,EACX,IAAIkD,EAAO/F,KAAKU,aAAa,QACa,IAAtCqF,EAAKpI,QAAQyc,EAAa5L,UAAezI,EAAOA,EAAKsI,MAAM+L,EAAa5L,OAAOjS,SACnF8d,EAAMgE,IAAItY,OAAMxK,OAAWA,MAG7B8e,EAAMyE,MAAQ,SAASC,GACtB,YAAqB,IAAX9E,QAA0C,IAAT8E,EAA6B9E,EAAO8E,GACxE9E,GAEDI,GAGRtd,EAAEiiB,SAAW,SAASC,EAAUC,EAAWhiB,GAC1C,OAAO,SAASzB,GACfyjB,EAAU5iB,KAAKY,GAAW8C,KAAMif,KAAYxjB,EAAE0jB,cAAgB1jB,EAAE0jB,cAAcF,GAAYxjB,EAAE0jB,cAAcze,aAAaue,MAGzH,IAAIG,EAAM/N,EAAarU,QACvBD,EAAE0b,OAAS2G,EAAI3G,OACf1b,EAAE8F,OAASkW,EAAclW,OACzB9F,EAAEgS,QAAUtB,EAAesB,QAC3BhS,EAAEuT,MAAQ7C,EAAe6C,MACzBvT,EAAEud,iBAAmBA,EACrBvd,EAAEmQ,iBAAmBA,EACrBnQ,EAAEsiB,QAAU,QACZtiB,EAAE+U,MAAQvJ,OACY,IAAX7L,EAAwBA,EAAgB,QAAIK,EAClDC,OAAOD,EAAIA,EAvuCf,KAyuCET,KAAK0D,KAAuB,oBAAXqI,OAAyBA,OAAyB,oBAATwC,KAAuBA,KAAyB,oBAAX7N,OAAyBA,OAAS,GAAGP,EAAQ,UAAU6L,eACvJ,CAACgX,OAAS,IAAIC,EAAE,CAAC,SAAS9iB,EAAQC,EAAOL,GAE3C,IAOImjB,EACAC,EARAC,EAAUhjB,EAAOL,QAAU,GAU/B,SAASsjB,IACL,MAAM,IAAIzjB,MAAM,mCAEpB,SAAS0jB,IACL,MAAM,IAAI1jB,MAAM,qCAsBpB,SAAS2jB,EAAWC,GAChB,GAAIN,IAAqBnf,WAErB,OAAOA,WAAWyf,EAAK,GAG3B,IAAKN,IAAqBG,IAAqBH,IAAqBnf,WAEhE,OADAmf,EAAmBnf,WACZA,WAAWyf,EAAK,GAE3B,IAEI,OAAON,EAAiBM,EAAK,GAC/B,MAAMrkB,GACJ,IAEI,OAAO+jB,EAAiBljB,KAAK,KAAMwjB,EAAK,GAC1C,MAAMrkB,GAEJ,OAAO+jB,EAAiBljB,KAAK0D,KAAM8f,EAAK,MAvCnD,WACG,IAEQN,EADsB,mBAAfnf,WACYA,WAEAsf,EAEzB,MAAOlkB,GACL+jB,EAAmBG,EAEvB,IAEQF,EADwB,mBAAjBrf,aACcA,aAEAwf,EAE3B,MAAOnkB,GACLgkB,EAAqBG,GAjB7B,GAwEA,IAEIG,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAaxjB,OACbyjB,EAAQD,EAAavK,OAAOwK,GAE5BE,GAAc,EAEdF,EAAMzjB,QACN6jB,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAIlgB,EAAU8f,EAAWM,GACzBF,GAAW,EAGX,IADA,IAAII,EAAML,EAAMzjB,OACV8jB,GAAK,CAGP,IAFAN,EAAeC,EACfA,EAAQ,KACCE,EAAaG,GACdN,GACAA,EAAaG,GAAYrU,MAGjCqU,GAAc,EACdG,EAAML,EAAMzjB,OAEhBwjB,EAAe,KACfE,GAAW,EAnEf,SAAyBK,GACrB,GAAIb,IAAuBrf,aAEvB,OAAOA,aAAakgB,GAGxB,IAAKb,IAAuBG,IAAwBH,IAAuBrf,aAEvE,OADAqf,EAAqBrf,aACdA,aAAakgB,GAExB,IAEWb,EAAmBa,GAC5B,MAAO7kB,GACL,IAEI,OAAOgkB,EAAmBnjB,KAAK,KAAMgkB,GACvC,MAAO7kB,GAGL,OAAOgkB,EAAmBnjB,KAAK0D,KAAMsgB,KAgD7CC,CAAgBxgB,IAiBpB,SAASygB,EAAKV,EAAKW,GACfzgB,KAAK8f,IAAMA,EACX9f,KAAKygB,MAAQA,EAYjB,SAASC,KA5BThB,EAAQiB,SAAW,SAAUb,GACzB,IAAI7f,EAAO,IAAIT,MAAMU,UAAU3D,OAAS,GACxC,GAAuB,EAAnB2D,UAAU3D,OACV,IAAK,IAAIV,EAAI,EAAGA,EAAIqE,UAAU3D,OAAQV,IAClCoE,EAAKpE,EAAI,GAAKqE,UAAUrE,GAGhCmkB,EAAM7b,KAAK,IAAIqc,EAAKV,EAAK7f,IACJ,IAAjB+f,EAAMzjB,QAAiB0jB,GACvBJ,EAAWO,IASnBI,EAAK/gB,UAAUoM,IAAM,WACjB7L,KAAK8f,IAAIxf,MAAM,KAAMN,KAAKygB,QAE9Bf,EAAQxZ,MAAQ,UAChBwZ,EAAQkB,SAAU,EAClBlB,EAAQmB,IAAM,GACdnB,EAAQoB,KAAO,GACfpB,EAAQL,QAAU,GAClBK,EAAQqB,SAAW,GAInBrB,EAAQrb,GAAKqc,EACbhB,EAAQsB,YAAcN,EACtBhB,EAAQuB,KAAOP,EACfhB,EAAQwB,IAAMR,EACdhB,EAAQyB,eAAiBT,EACzBhB,EAAQ0B,mBAAqBV,EAC7BhB,EAAQ2B,KAAOX,EACfhB,EAAQ4B,gBAAkBZ,EAC1BhB,EAAQ6B,oBAAsBb,EAE9BhB,EAAQ8B,UAAY,SAAUC,GAAQ,MAAO,IAE7C/B,EAAQgC,QAAU,SAAUD,GACxB,MAAM,IAAIvlB,MAAM,qCAGpBwjB,EAAQiC,IAAM,WAAc,MAAO,KACnCjC,EAAQkC,MAAQ,SAAUC,GACtB,MAAM,IAAI3lB,MAAM,mCAEpBwjB,EAAQoC,MAAQ,WAAa,OAAO,IAElC,IAAIC,EAAE,CAAC,SAAStlB,EAAQC,EAAOL,IACjC,SAAWiM,EAAa0Z,GACxB,IAAIrB,EAAWlkB,EAAQ,sBAAsBkkB,SACzCrgB,EAAQ2hB,SAASxiB,UAAUa,MAC3B+N,EAAQ7O,MAAMC,UAAU4O,MACxB6T,EAAe,GACfC,EAAkB,EAatB,SAASC,EAAQ/c,EAAIgd,GACnBriB,KAAKsiB,IAAMjd,EACXrF,KAAKuiB,SAAWF,EAXlBhmB,EAAQgE,WAAa,WACnB,OAAO,IAAI+hB,EAAQ9hB,EAAMhE,KAAK+D,WAAYrD,OAAQkD,WAAYE,eAEhE/D,EAAQmmB,YAAc,WACpB,OAAO,IAAIJ,EAAQ9hB,EAAMhE,KAAKkmB,YAAaxlB,OAAQkD,WAAYuiB,gBAEjEpmB,EAAQ+D,aACR/D,EAAQomB,cAAgB,SAAS1iB,GAAWA,EAAQ2iB,SAMpDN,EAAQ3iB,UAAUkjB,MAAQP,EAAQ3iB,UAAUmjB,IAAM,aAClDR,EAAQ3iB,UAAUijB,MAAQ,WACxB1iB,KAAKuiB,SAASjmB,KAAKU,OAAQgD,KAAKsiB,MAIlCjmB,EAAQwmB,OAAS,SAASC,EAAMC,GAC9B3iB,aAAa0iB,EAAKE,gBAClBF,EAAKG,aAAeF,GAGtB1mB,EAAQ6mB,SAAW,SAASJ,GAC1B1iB,aAAa0iB,EAAKE,gBAClBF,EAAKG,cAAgB,GAGvB5mB,EAAQ8mB,aAAe9mB,EAAQqc,OAAS,SAASoK,GAC/C1iB,aAAa0iB,EAAKE,gBAElB,IAAID,EAAQD,EAAKG,aACJ,GAATF,IACFD,EAAKE,eAAiB3iB,WAAW,WAC3ByiB,EAAKM,YACPN,EAAKM,cACNL,KAKP1mB,EAAQiM,aAAuC,mBAAjBA,EAA8BA,EAAe,SAASwD,GAClF,IAAIzG,EAAK8c,IACLliB,IAAOC,UAAU3D,OAAS,IAAY8R,EAAM/R,KAAK4D,UAAW,GAkBhE,OAhBAgiB,EAAa7c,IAAM,EAEnBsb,EAAS,WACHuB,EAAa7c,KAGXpF,EACF6L,EAAGxL,MAAM,KAAML,GAEf6L,EAAGxP,KAAK,MAGVD,EAAQ2lB,eAAe3c,MAIpBA,GAGThJ,EAAQ2lB,eAA2C,mBAAnBA,EAAgCA,EAAiB,SAAS3c,UACjF6c,EAAa7c,MAEnB/I,KAAK0D,KAAKvD,EAAQ,UAAU6L,aAAa7L,EAAQ,UAAUulB,iBAC5D,CAACqB,qBAAqB,EAAE/D,OAAS,IAAIgE,GAAG,CAAC,SAAS7mB,EAAQC,EAAOL,GACnE,SAASgC,EAAMklB,GACbpmB,SAASkC,iBAAiB,YAAa,SAAU5D,GAC/C,IAAIgC,EAAKhC,EAAE+nB,OACPC,EAAOF,EAAe9lB,GAErBgmB,IAEHA,GADAhmB,EAAKA,EAAG6D,gBACKiiB,EAAe9lB,IAG9BgmB,GAAQplB,EAAMQ,KAAKpB,EAAIgmB,GAAM,KAIjCplB,EAAMQ,KAAO,SAAUpB,EAAIgmB,EAAMC,GAC/B,IAAIC,EAAiB,aACrBF,EAAOA,GAAQ,IAEdhmB,EAAGmmB,SAEJ,SAAiBnmB,EAAIgmB,GACnB,IAAII,EACAC,EACA9c,EAYJ,SAAS+c,IACP1lB,EAAMwC,KAAKpD,GAAI,GAYjB,SAASumB,IACFH,IACHA,EAUN,SAAuBpmB,EAAIuJ,EAAMyc,GAC/B,IAAII,EAAY1mB,SAASyT,cAAc,QACnCqT,EAAOR,EAAKQ,MAAQxmB,EAAGiD,aAAa,eAAiB,IAEzDmjB,EAAUvP,UAAYtN,EAEtBvJ,EAAGyT,YAAY2S,GAEf,IAAIK,EAAWD,EAAK,IAAM,GACtBE,EAAWF,EAAK,IAAM,GAE1B,SAASG,IACPP,EAAUnmB,UAAY,eAAsBwmB,EAAWC,EAEvD,IACIE,EAAM5mB,EAAG6mB,UACTC,EAAO9mB,EAAG+mB,WAEVX,EAAUY,eAAiBhnB,IAC7B4mB,EAAME,EAAO,GAGf,IAAIG,EAAQjnB,EAAGknB,YACXC,EAASnnB,EAAGonB,aACZC,EAAgBjB,EAAUgB,aAC1BE,EAAelB,EAAUc,YACzBK,EAAWT,EAAQG,EAAQ,EAE/Bb,EAAU9kB,MAAMslB,KACD,MAAbH,EAAoBG,EAAMS,EAfZ,GAgBD,MAAbZ,EAAoBG,EAAMO,EAhBZ,GAiBbP,EAAOO,EAAS,EAAME,EAAgB,GACrC,KAEJjB,EAAU9kB,MAAMwlB,MACD,MAAbJ,EAAmBI,EACN,MAAbJ,EAAmBI,EAAOG,EAAQK,EACrB,MAAbb,EAAoBK,EAAOG,EAvBb,GAwBD,MAAbR,EAAoBK,EAAOQ,EAxBb,GAyBbC,EAAWD,EAAe,GACzB,KAGNX,IAEA,IAAIa,EAAOpB,EAAUqB,wBAEJ,MAAbhB,GAAoBe,EAAKZ,IAAM,GACjCH,EAAW,IACXE,KACsB,MAAbF,GAAoBe,EAAKE,OAASnoB,OAAOooB,aAClDlB,EAAW,IACXE,KACsB,MAAbF,GAAoBe,EAAKV,KAAO,GACzCL,EAAW,IACXE,KACsB,MAAbF,GAAoBe,EAAKI,MAAQroB,OAAOsoB,aACjDpB,EAAW,IACXE,KAKF,OAFAP,EAAUnmB,WAAa,iBAEhBmmB,EAzES0B,CAAc9nB,EAAIuJ,EAAMyc,IAIxC,OA7BAhmB,EAAG4B,iBAAiB,YAAa0kB,GACjCtmB,EAAG4B,iBAAiB,aAAc0kB,GA4B3BtmB,EAAGmmB,QAAU,CAClB/kB,KA3BF,WACEmI,EAAOvJ,EAAGyI,OAASzI,EAAGiD,aAAaijB,IAAmB3c,EACtDvJ,EAAGyI,MAAQ,GACXzI,EAAG4D,aAAasiB,EAAgB,IAChC3c,IAAS8c,IAAcA,EAAYzjB,WAAW2jB,EAAQN,EAAS,IAAM,KAwBrE7iB,KAjBF,SAAc2kB,GACZ,GAAI9B,IAAW8B,EAAc,CAC3B1B,EAAY1jB,aAAa0jB,GACzB,IAAI7R,EAAS4R,GAAaA,EAAUhT,WACpCoB,GAAUA,EAAOnB,YAAY+S,GAC7BA,OAAYtoB,KA1BHkqB,CAAQhoB,EAAIgmB,IAAO5kB,QA6GpCR,EAAMwC,KAAO,SAAUpD,EAAIimB,GACzBjmB,EAAGmmB,SAAWnmB,EAAGmmB,QAAQ/iB,KAAK6iB,SAGV,IAAXhnB,GAA0BA,EAAOL,UAC1CK,EAAOL,QAAUgC,IAGjB,IAAIqnB,GAAG,CAAC,SAASjpB,EAAQC,EAAOL,IAQhC,SAAUA,GACR,aAQA,SAASY,KAGT,IAAI0oB,EAAQ1oB,EAAawC,UACrBmmB,EAAsBvpB,EAAQY,aAUlC,SAAS4oB,EAAgBrE,EAAWsE,GAEhC,IADA,IAAIjqB,EAAI2lB,EAAUjlB,OACXV,KACH,GAAI2lB,EAAU3lB,GAAGiqB,WAAaA,EAC1B,OAAOjqB,EAIf,OAAQ,EAUZ,SAASkqB,EAAMtE,GACX,OAAO,WACH,OAAOzhB,KAAKyhB,GAAMnhB,MAAMN,KAAME,YAatCylB,EAAMK,aAAe,SAAsBC,GACvC,IACIhW,EACA9H,EAFA9K,EAAS2C,KAAKkmB,aAMlB,GAAID,aAAezY,OAEf,IAAKrF,KADL8H,EAAW,GACC5S,EACJA,EAAOsK,eAAeQ,IAAQ8d,EAAI9V,KAAKhI,KACvC8H,EAAS9H,GAAO9K,EAAO8K,SAK/B8H,EAAW5S,EAAO4oB,KAAS5oB,EAAO4oB,GAAO,IAG7C,OAAOhW,GASX0V,EAAMQ,iBAAmB,SAA0B3E,GAC/C,IACI3lB,EADAuqB,EAAgB,GAGpB,IAAKvqB,EAAI,EAAGA,EAAI2lB,EAAUjlB,OAAQV,GAAK,EACnCuqB,EAAcjiB,KAAKqd,EAAU3lB,GAAGiqB,UAGpC,OAAOM,GASXT,EAAMU,qBAAuB,SAA8BJ,GACvD,IACIhW,EADAuR,EAAYxhB,KAAKgmB,aAAaC,GAQlC,OALIzE,aAAqBhiB,SACrByQ,EAAW,IACFgW,GAAOzE,GAGbvR,GAAYuR,GAuBvBmE,EAAM3E,YAAc,SAAqBiF,EAAKH,GAC1C,IArBJ,SAASQ,EAAiBR,GACtB,MAAwB,mBAAbA,GAA2BA,aAAoBtY,WAE/CsY,GAAgC,iBAAbA,IACnBQ,EAAgBR,EAASA,UAiB/BQ,CAAgBR,GACjB,MAAM,IAAIlb,UAAU,+BAGxB,IAEIzC,EAFAqZ,EAAYxhB,KAAKqmB,qBAAqBJ,GACtCM,EAAwC,iBAAbT,EAG/B,IAAK3d,KAAOqZ,EACJA,EAAU7Z,eAAeQ,KAAuD,IAA/C0d,EAAgBrE,EAAUrZ,GAAM2d,IACjEtE,EAAUrZ,GAAKhE,KAAKoiB,EAAoBT,EAAW,CAC/CA,SAAUA,EACV7E,MAAM,IAKlB,OAAOjhB,MAMX2lB,EAAMthB,GAAK0hB,EAAM,eAUjBJ,EAAMa,gBAAkB,SAAyBP,EAAKH,GAClD,OAAO9lB,KAAKghB,YAAYiF,EAAK,CACzBH,SAAUA,EACV7E,MAAM,KAOd0E,EAAM1E,KAAO8E,EAAM,mBASnBJ,EAAMc,YAAc,SAAqBR,GAErC,OADAjmB,KAAKgmB,aAAaC,GACXjmB,MASX2lB,EAAMe,aAAe,SAAsBC,GACvC,IAAK,IAAI9qB,EAAI,EAAGA,EAAI8qB,EAAKpqB,OAAQV,GAAK,EAClCmE,KAAKymB,YAAYE,EAAK9qB,IAE1B,OAAOmE,MAWX2lB,EAAMxE,eAAiB,SAAwB8E,EAAKH,GAChD,IACI1M,EACAjR,EAFAqZ,EAAYxhB,KAAKqmB,qBAAqBJ,GAI1C,IAAK9d,KAAOqZ,EACJA,EAAU7Z,eAAeQ,KAGV,KAFfiR,EAAQyM,EAAgBrE,EAAUrZ,GAAM2d,KAGpCtE,EAAUrZ,GAAKkR,OAAOD,EAAO,GAKzC,OAAOpZ,MAMX2lB,EAAMzE,IAAM6E,EAAM,kBAYlBJ,EAAMiB,aAAe,SAAsBX,EAAKzE,GAE5C,OAAOxhB,KAAK6mB,qBAAoB,EAAOZ,EAAKzE,IAahDmE,EAAMmB,gBAAkB,SAAyBb,EAAKzE,GAElD,OAAOxhB,KAAK6mB,qBAAoB,EAAMZ,EAAKzE,IAe/CmE,EAAMkB,oBAAsB,SAA6BE,EAAQd,EAAKzE,GAClE,IAAI3lB,EACAmF,EACAgmB,EAASD,EAAS/mB,KAAKmhB,eAAiBnhB,KAAKghB,YAC7CiG,EAAWF,EAAS/mB,KAAK8mB,gBAAkB9mB,KAAK4mB,aAGpD,GAAmB,iBAARX,GAAsBA,aAAezY,OAmB5C,IADA3R,EAAI2lB,EAAUjlB,OACPV,KACHmrB,EAAO1qB,KAAK0D,KAAMimB,EAAKzE,EAAU3lB,SAnBrC,IAAKA,KAAKoqB,EACFA,EAAIte,eAAe9L,KAAOmF,EAAQilB,EAAIpqB,MAEjB,mBAAVmF,EACPgmB,EAAO1qB,KAAK0D,KAAMnE,EAAGmF,GAIrBimB,EAAS3qB,KAAK0D,KAAMnE,EAAGmF,IAevC,OAAOhB,MAYX2lB,EAAMuB,YAAc,SAAqBjB,GACrC,IAEI9d,EAFAlF,SAAcgjB,EACd5oB,EAAS2C,KAAKkmB,aAIlB,GAAa,WAATjjB,SAEO5F,EAAO4oB,QAEb,GAAIA,aAAezY,OAEpB,IAAKrF,KAAO9K,EACJA,EAAOsK,eAAeQ,IAAQ8d,EAAI9V,KAAKhI,WAChC9K,EAAO8K,eAMfnI,KAAKmnB,QAGhB,OAAOnnB,MAQX2lB,EAAMvE,mBAAqB2E,EAAM,eAcjCJ,EAAMyB,UAAY,SAAmBnB,EAAKhmB,GACtC,IACIuhB,EACAsE,EACAjqB,EACAsM,EAJAkf,EAAernB,KAAKqmB,qBAAqBJ,GAO7C,IAAK9d,KAAOkf,EACR,GAAIA,EAAa1f,eAAeQ,GAG5B,IAFAqZ,EAAY6F,EAAalf,GAAKkG,MAAM,GAE/BxS,EAAI,EAAGA,EAAI2lB,EAAUjlB,OAAQV,KAKR,KAFtBiqB,EAAWtE,EAAU3lB,IAERolB,MACTjhB,KAAKmhB,eAAe8E,EAAKH,EAASA,UAG3BA,EAASA,SAASxlB,MAAMN,KAAMC,GAAQ,MAEhCD,KAAKsnB,uBAClBtnB,KAAKmhB,eAAe8E,EAAKH,EAASA,UAMlD,OAAO9lB,MAMX2lB,EAAMvhB,QAAU2hB,EAAM,aAUtBJ,EAAMtE,KAAO,SAAc4E,GACvB,IAAIhmB,EAAOT,MAAMC,UAAU4O,MAAM/R,KAAK4D,UAAW,GACjD,OAAOF,KAAKonB,UAAUnB,EAAKhmB,IAW/B0lB,EAAM4B,mBAAqB,SAA4BvmB,GAEnD,OADAhB,KAAKwnB,iBAAmBxmB,EACjBhB,MAWX2lB,EAAM2B,oBAAsB,WACxB,OAAItnB,KAAK2H,eAAe,qBACb3H,KAAKwnB,kBAapB7B,EAAMO,WAAa,WACf,OAAOlmB,KAAKmnB,UAAYnnB,KAAKmnB,QAAU,KAQ3ClqB,EAAawqB,WAAa,WAEtB,OADAprB,EAAQY,aAAe2oB,EAChB3oB,GAIW,mBAAX3B,GAAyBA,EAAOosB,IACvCpsB,EAAO,WACH,OAAO2B,IAGY,iBAAXP,GAAuBA,EAAOL,QAC1CK,EAAOL,QAAUY,EAGjBZ,EAAQY,aAAeA,EA5d9B,CA8dmB,oBAAXD,OAAyBA,OAASgD,MAAQ,KAEjD,KAAK,GAAG,CAAC,IAjjFX","file":"admin.min.js","sourcesContent":["(function () { var require = undefined; var define = undefined; (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n'use strict'; // dependencies\n\nvar _tlite = _interopRequireDefault(require(\"tlite\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar m = window.m = require('mithril');\n\nvar EventEmitter = require('wolfy87-eventemitter'); // vars\n\n\nvar context = document.getElementById('mc4wp-admin');\nvar events = new EventEmitter();\n\nvar tabs = require('./admin/tabs.js')(context);\n\nvar helpers = require('./admin/helpers.js');\n\nvar settings = require('./admin/settings.js')(context, helpers, events);\n\n(0, _tlite.default)(function (el) {\n return el.className.indexOf('mc4wp-tooltip') > -1;\n}); // list fetcher\n\nvar ListFetcher = require('./admin/list-fetcher.js');\n\nvar mount = document.getElementById('mc4wp-list-fetcher');\n\nif (mount) {\n m.mount(mount, new ListFetcher());\n} // expose some things\n\n\nwindow.mc4wp = window.mc4wp || {};\nwindow.mc4wp.deps = window.mc4wp.deps || {};\nwindow.mc4wp.deps.mithril = m;\nwindow.mc4wp.helpers = helpers;\nwindow.mc4wp.events = events;\nwindow.mc4wp.settings = settings;\nwindow.mc4wp.tabs = tabs;\n\n},{\"./admin/helpers.js\":2,\"./admin/list-fetcher.js\":3,\"./admin/settings.js\":4,\"./admin/tabs.js\":5,\"mithril\":7,\"tlite\":10,\"wolfy87-eventemitter\":11}],2:[function(require,module,exports){\n'use strict';\n\nvar helpers = {};\n\nhelpers.toggleElement = function (selector) {\n var elements = document.querySelectorAll(selector);\n\n for (var i = 0; i < elements.length; i++) {\n var show = elements[i].clientHeight <= 0;\n elements[i].style.display = show ? '' : 'none';\n }\n};\n\nhelpers.bindEventToElement = function (element, event, handler) {\n if (element.addEventListener) {\n element.addEventListener(event, handler);\n } else if (element.attachEvent) {\n element.attachEvent('on' + event, handler);\n }\n};\n\nhelpers.bindEventToElements = function (elements, event, handler) {\n Array.prototype.forEach.call(elements, function (element) {\n helpers.bindEventToElement(element, event, handler);\n });\n}; // polling\n\n\nhelpers.debounce = function (func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n/**\n * Showif.js\n */\n\n\n(function () {\n var showIfElements = document.querySelectorAll('[data-showif]'); // dependent elements\n\n Array.prototype.forEach.call(showIfElements, function (element) {\n var config = JSON.parse(element.getAttribute('data-showif'));\n var parentElements = document.querySelectorAll('[name=\"' + config.element + '\"]');\n var inputs = element.querySelectorAll('input,select,textarea:not([readonly])');\n var hide = config.hide === undefined || config.hide;\n\n function toggleElement() {\n // do nothing with unchecked radio inputs\n if (this.getAttribute('type') === \"radio\" && !this.checked) {\n return;\n }\n\n var value = this.getAttribute(\"type\") === \"checkbox\" ? this.checked : this.value;\n var conditionMet = value == config.value;\n\n if (hide) {\n element.style.display = conditionMet ? '' : 'none';\n element.style.visibility = conditionMet ? '' : 'hidden';\n } else {\n element.style.opacity = conditionMet ? '' : '0.4';\n } // disable input fields to stop sending their values to server\n\n\n Array.prototype.forEach.call(inputs, function (inputElement) {\n conditionMet ? inputElement.removeAttribute('readonly') : inputElement.setAttribute('readonly', 'readonly');\n });\n } // find checked element and call toggleElement function\n\n\n Array.prototype.forEach.call(parentElements, function (parentElement) {\n toggleElement.call(parentElement);\n }); // bind on all changes\n\n helpers.bindEventToElements(parentElements, 'change', toggleElement);\n });\n})();\n\nmodule.exports = helpers;\n\n},{}],3:[function(require,module,exports){\n'use strict';\n\nvar $ = window.jQuery;\nvar config = mc4wp_vars;\nvar i18n = config.i18n;\n\nfunction ListFetcher() {\n this.working = false;\n this.done = false; // start fetching right away when no lists but api key given\n\n if (config.mailchimp.api_connected && config.mailchimp.lists.length === 0) {\n this.fetch();\n }\n}\n\nListFetcher.prototype.fetch = function (e) {\n e && e.preventDefault();\n this.working = true;\n this.done = false;\n $.post(ajaxurl, {\n action: \"mc4wp_renew_mailchimp_lists\",\n timeout: 180000\n }).done(function (data) {\n this.success = true;\n\n if (data) {\n window.setTimeout(function () {\n window.location.reload();\n }, 3000);\n }\n }.bind(this)).fail(function (data) {\n this.success = false;\n }.bind(this)).always(function (data) {\n this.working = false;\n this.done = true;\n m.redraw();\n }.bind(this));\n};\n\nListFetcher.prototype.view = function () {\n return m('form', {\n method: \"POST\",\n onsubmit: this.fetch.bind(this)\n }, [m('p', [m('input', {\n type: \"submit\",\n value: this.working ? i18n.fetching_mailchimp_lists : i18n.renew_mailchimp_lists,\n className: \"button\",\n disabled: !!this.working\n }), m.trust(' &nbsp; '), this.working ? [m('span.mc4wp-loader', \"Loading...\"), m.trust(' &nbsp; '), m('em.help', i18n.fetching_mailchimp_lists_can_take_a_while)] : '', this.done ? [this.success ? m('em.help.green', i18n.fetching_mailchimp_lists_done) : m('em.help.red', i18n.fetching_mailchimp_lists_error)] : ''])]);\n};\n\nmodule.exports = ListFetcher;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar Settings = function Settings(context, helpers, events) {\n 'use strict'; // vars\n\n var form = context.querySelector('form');\n var listInputs = context.querySelectorAll('.mc4wp-list-input');\n var lists = mc4wp_vars.mailchimp.lists;\n var selectedLists = []; // functions\n\n function getSelectedListsWhere(searchKey, searchValue) {\n return selectedLists.filter(function (el) {\n return el[searchKey] === searchValue;\n });\n }\n\n function getSelectedLists() {\n return selectedLists;\n }\n\n function updateSelectedLists() {\n selectedLists = [];\n Array.prototype.forEach.call(listInputs, function (input) {\n // skip unchecked checkboxes\n if (typeof input.checked === \"boolean\" && !input.checked) {\n return;\n }\n\n if (_typeof(lists[input.value]) === \"object\") {\n selectedLists.push(lists[input.value]);\n }\n });\n events.trigger('selectedLists.change', [selectedLists]);\n return selectedLists;\n }\n\n function toggleVisibleLists() {\n var rows = document.querySelectorAll('.lists--only-selected > *');\n Array.prototype.forEach.call(rows, function (el) {\n var listId = el.getAttribute('data-list-id');\n var isSelected = getSelectedListsWhere('id', listId).length > 0;\n\n if (isSelected) {\n el.setAttribute('class', el.getAttribute('class').replace('hidden', ''));\n } else {\n el.setAttribute('class', el.getAttribute('class') + \" hidden\");\n }\n });\n }\n\n events.on('selectedLists.change', toggleVisibleLists);\n helpers.bindEventToElements(listInputs, 'change', updateSelectedLists);\n updateSelectedLists();\n return {\n getSelectedLists: getSelectedLists\n };\n};\n\nmodule.exports = Settings;\n\n},{}],5:[function(require,module,exports){\n'use strict';\n\nvar URL = require('./url.js'); // Tabs\n\n\nvar Tabs = function Tabs(context) {\n // TODO: last piece of jQuery... can we get rid of it?\n var $ = window.jQuery;\n var $context = $(context);\n var $tabs = $context.find('.tab');\n var $tabNavs = $context.find('.nav-tab');\n var refererField = context.querySelector('input[name=\"_wp_http_referer\"]');\n var tabs = [];\n $.each($tabs, function (i, t) {\n var id = t.id.substring(4);\n var title = $(t).find('h2').first().text();\n tabs.push({\n id: id,\n title: title,\n element: t,\n nav: context.querySelectorAll('.nav-tab-' + id),\n open: function open() {\n return _open(id);\n }\n });\n });\n\n function get(id) {\n for (var i = 0; i < tabs.length; i++) {\n if (tabs[i].id === id) {\n return tabs[i];\n }\n }\n\n return undefined;\n }\n\n function _open(tab, updateState) {\n // make sure we have a tab object\n if (typeof tab === \"string\") {\n tab = get(tab);\n }\n\n if (!tab) {\n return false;\n } // should we update state?\n\n\n if (updateState == undefined) {\n updateState = true;\n } // hide all tabs & remove active class\n\n\n $tabs.removeClass('tab-active').css('display', 'none');\n $tabNavs.removeClass('nav-tab-active'); // add `nav-tab-active` to this tab\n\n Array.prototype.forEach.call(tab.nav, function (nav) {\n nav.className += \" nav-tab-active\";\n nav.blur();\n }); // show target tab\n\n tab.element.style.display = 'block';\n tab.element.className += \" tab-active\"; // create new URL\n\n var url = URL.setParameter(window.location.href, \"tab\", tab.id); // update hash\n\n if (history.pushState && updateState) {\n history.pushState(tab.id, '', url);\n } // update document title\n\n\n title(tab); // update referer field\n\n refererField.value = url; // if thickbox is open, close it.\n\n if (typeof tb_remove === \"function\") {\n tb_remove();\n } // refresh editor after switching tabs\n // TODO: decouple this! law of demeter etc.\n\n\n if (tab.id === 'fields' && window.mc4wp && window.mc4wp.forms && window.mc4wp.forms.editor) {\n mc4wp.forms.editor.refresh();\n }\n\n return true;\n }\n\n function title(tab) {\n var title = document.title.split('-');\n document.title = document.title.replace(title[0], tab.title + \" \");\n }\n\n function switchTab(e) {\n e = e || window.event; // get from data attribute\n\n var tabId = this.getAttribute('data-tab'); // get from classname\n\n if (!tabId) {\n var match = this.className.match(/nav-tab-(\\w+)?/);\n\n if (match) {\n tabId = match[1];\n }\n } // get from href\n\n\n if (!tabId) {\n var urlParams = URL.parse(this.href);\n\n if (!urlParams.tab) {\n return;\n }\n\n tabId = urlParams.tab;\n }\n\n var opened = _open(tabId);\n\n if (opened) {\n e.preventDefault();\n e.returnValue = false;\n return false;\n }\n\n return true;\n }\n\n function init() {\n // check for current tab\n if (!history.pushState) {\n return;\n }\n\n var activeTab = $tabs.filter(':visible').get(0);\n\n if (!activeTab) {\n return;\n }\n\n var tab = get(activeTab.id.substring(4));\n if (!tab) return; // check if tab is in html5 history\n\n if (history.replaceState && history.state === null) {\n history.replaceState(tab.id, '');\n } // update document title\n\n\n title(tab);\n }\n\n $tabNavs.click(switchTab);\n $(document.body).on('click', '.tab-link', switchTab);\n init();\n\n if (window.addEventListener && history.pushState) {\n window.addEventListener('popstate', function (e) {\n if (!e.state) return true;\n var tabId = e.state;\n return _open(tabId, false);\n });\n }\n\n return {\n open: _open,\n get: get\n };\n};\n\nmodule.exports = Tabs;\n\n},{\"./url.js\":6}],6:[function(require,module,exports){\n'use strict';\n\nvar URL = {\n parse: function parse(url) {\n var query = {};\n var a = url.split('&');\n\n for (var i in a) {\n if (!a.hasOwnProperty(i)) {\n continue;\n }\n\n var b = a[i].split('=');\n query[decodeURIComponent(b[0])] = decodeURIComponent(b[1]);\n }\n\n return query;\n },\n build: function build(data) {\n var ret = [];\n\n for (var d in data) {\n ret.push(d + \"=\" + encodeURIComponent(data[d]));\n }\n\n return ret.join(\"&\");\n },\n setParameter: function setParameter(url, key, value) {\n var data = URL.parse(url);\n data[key] = value;\n return URL.build(data);\n }\n};\nmodule.exports = URL;\n\n},{}],7:[function(require,module,exports){\n(function (global,setImmediate){\n;(function() {\n\"use strict\"\nfunction Vnode(tag, key, attrs0, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs0, children: children, text: text, dom: dom, domSize: undefined, state: undefined, _state: undefined, events: undefined, instance: undefined, skip: false}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node != null && typeof node !== \"object\") return Vnode(\"#\", undefined, undefined, node === false ? \"\" : node, undefined, undefined)\n\treturn node\n}\nVnode.normalizeChildren = function normalizeChildren(children) {\n\tfor (var i = 0; i < children.length; i++) {\n\t\tchildren[i] = Vnode.normalize(children[i])\n\t}\n\treturn children\n}\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\nfunction execSelector(state, attrs, children) {\n\tvar hasAttrs = false, childList, text\n\tvar className = attrs.className || attrs.class\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\t\tfor(var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) {\n\t\t\t\tnewAttrs[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t\tattrs = newAttrs\n\t}\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key)) {\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className !== undefined) {\n\t\tif (attrs.class !== undefined) {\n\t\t\tattrs.class = undefined\n\t\t\tattrs.className = className\n\t\t}\n\t\tif (state.attrs.className != null) {\n\t\t\tattrs.className = state.attrs.className + \" \" + className\n\t\t}\n\t}\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\thasAttrs = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\ttext = children[0].children\n\t} else {\n\t\tchildList = children\n\t}\n\treturn Vnode(state.tag, attrs.key, hasAttrs ? attrs : undefined, childList, text)\n}\nfunction hyperscript(selector) {\n\t// Because sloppy mode sucks\n\tvar attrs = arguments[1], start = 2, children\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\tif (typeof selector === \"string\") {\n\t\tvar cached = selectorCache[selector] || compileSelector(selector)\n\t}\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = 1\n\t}\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\tvar normalized = Vnode.normalizeChildren(children)\n\tif (typeof selector === \"string\") {\n\t\treturn execSelector(cached, attrs, normalized)\n\t} else {\n\t\treturn Vnode(selector, attrs.key, attrs, normalized)\n\t}\n}\nhyperscript.trust = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\nhyperscript.fragment = function(attrs1, children) {\n\treturn Vnode(\"[\", attrs1.key, attrs1, Vnode.normalizeChildren(children), undefined, undefined)\n}\nvar m = hyperscript\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") window.Promise = PromisePolyfill\n\tvar PromisePolyfill = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") global.Promise = PromisePolyfill\n\tvar PromisePolyfill = global.Promise\n} else {\n}\nvar buildQueryString = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\tvar args = []\n\tfor (var key0 in object) {\n\t\tdestructure(key0, object[key0])\n\t}\n\treturn args.join(\"&\")\n\tfunction destructure(key0, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key0 + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key0 + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key0) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\nvar FILE_PROTOCOL_REGEX = new RegExp(\"^file://\", \"i\")\nvar _8 = function($window, Promise) {\n\tvar callbackCount = 0\n\tvar oncompletion\n\tfunction setCompletionCallback(callback) {oncompletion = callback}\n\tfunction finalizer() {\n\t\tvar count = 0\n\t\tfunction complete() {if (--count === 0 && typeof oncompletion === \"function\") oncompletion()}\n\t\treturn function finalize(promise0) {\n\t\t\tvar then0 = promise0.then\n\t\t\tpromise0.then = function() {\n\t\t\t\tcount++\n\t\t\t\tvar next = then0.apply(promise0, arguments)\n\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\tcomplete()\n\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t})\n\t\t\t\treturn finalize(next)\n\t\t\t}\n\t\t\treturn promise0\n\t\t}\n\t}\n\tfunction normalize(args, extra) {\n\t\tif (typeof args === \"string\") {\n\t\t\tvar url = args\n\t\t\targs = extra || {}\n\t\t\tif (args.url == null) args.url = url\n\t\t}\n\t\treturn args\n\t}\n\tfunction request(args, extra) {\n\t\tvar finalize = finalizer()\n\t\targs = normalize(args, extra)\n\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\tif (args.method == null) args.method = \"GET\"\n\t\t\targs.method = args.method.toUpperCase()\n\t\t\tvar useBody = (args.method === \"GET\" || args.method === \"TRACE\") ? false : (typeof args.useBody === \"boolean\" ? args.useBody : true)\n\t\t\tif (typeof args.serialize !== \"function\") args.serialize = typeof FormData !== \"undefined\" && args.data instanceof FormData ? function(value) {return value} : JSON.stringify\n\t\t\tif (typeof args.deserialize !== \"function\") args.deserialize = deserialize\n\t\t\tif (typeof args.extract !== \"function\") args.extract = extract\n\t\t\targs.url = interpolate(args.url, args.data)\n\t\t\tif (useBody) args.data = args.serialize(args.data)\n\t\t\telse args.url = assemble(args.url, args.data)\n\t\t\tvar xhr = new $window.XMLHttpRequest(),\n\t\t\t\taborted = false,\n\t\t\t\t_abort = xhr.abort\n\t\t\txhr.abort = function abort() {\n\t\t\t\taborted = true\n\t\t\t\t_abort.call(xhr)\n\t\t\t}\n\t\t\txhr.open(args.method, args.url, typeof args.async === \"boolean\" ? args.async : true, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\t\t\tif (args.serialize === JSON.stringify && useBody && !(args.headers && args.headers.hasOwnProperty(\"Content-Type\"))) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (args.deserialize === deserialize && !(args.headers && args.headers.hasOwnProperty(\"Accept\"))) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tfor (var key in args.headers) if ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t}\n\t\t\tif (typeof args.config === \"function\") xhr = args.config(xhr, args) || xhr\n\t\t\txhr.onreadystatechange = function() {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif(aborted) return\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args))\n\t\t\t\t\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || FILE_PROTOCOL_REGEX.test(args.url)) {\n\t\t\t\t\t\t\tresolve(cast(args.type, response))\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar error = new Error(xhr.responseText)\n\t\t\t\t\t\t\tfor (var key in response) error[key] = response[key]\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (useBody && (args.data != null)) xhr.send(args.data)\n\t\t\telse xhr.send()\n\t\t})\n\t\treturn args.background === true ? promise0 : finalize(promise0)\n\t}\n\tfunction jsonp(args, extra) {\n\t\tvar finalize = finalizer()\n\t\targs = normalize(args, extra)\n\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(cast(args.type, data))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tif (args.data == null) args.data = {}\n\t\t\targs.url = interpolate(args.url, args.data)\n\t\t\targs.data[args.callbackKey || \"callback\"] = callbackName\n\t\t\tscript.src = assemble(args.url, args.data)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t})\n\t\treturn args.background === true? promise0 : finalize(promise0)\n\t}\n\tfunction interpolate(url, data) {\n\t\tif (data == null) return url\n\t\tvar tokens = url.match(/:[^\\/]+/gi) || []\n\t\tfor (var i = 0; i < tokens.length; i++) {\n\t\t\tvar key = tokens[i].slice(1)\n\t\t\tif (data[key] != null) {\n\t\t\t\turl = url.replace(tokens[i], data[key])\n\t\t\t}\n\t\t}\n\t\treturn url\n\t}\n\tfunction assemble(url, data) {\n\t\tvar querystring = buildQueryString(data)\n\t\tif (querystring !== \"\") {\n\t\t\tvar prefix = url.indexOf(\"?\") < 0 ? \"?\" : \"&\"\n\t\t\turl += prefix + querystring\n\t\t}\n\t\treturn url\n\t}\n\tfunction deserialize(data) {\n\t\ttry {return data !== \"\" ? JSON.parse(data) : null}\n\t\tcatch (e) {throw new Error(data)}\n\t}\n\tfunction extract(xhr) {return xhr.responseText}\n\tfunction cast(type0, data) {\n\t\tif (typeof type0 === \"function\") {\n\t\t\tif (Array.isArray(data)) {\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\tdata[i] = new type0(data[i])\n\t\t\t\t}\n\t\t\t}\n\t\t\telse return new type0(data)\n\t\t}\n\t\treturn data\n\t}\n\treturn {request: request, jsonp: jsonp, setCompletionCallback: setCompletionCallback}\n}\nvar requestService = _8(window, PromisePolyfill)\nvar coreRenderer = function($window) {\n\tvar $doc = $window.document\n\tvar $emptyFragment = $doc.createDocumentFragment()\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\tvar onevent\n\tfunction setEventCallback(callback) {return onevent = callback}\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": return createText(parent, vnode, nextSibling)\n\t\t\t\tcase \"<\": return createHTML(parent, vnode, nextSibling)\n\t\t\t\tcase \"[\": return createFragment(parent, vnode, hooks, ns, nextSibling)\n\t\t\t\tdefault: return createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse return createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t\treturn vnode.dom\n\t}\n\tfunction createHTML(parent, vnode, nextSibling) {\n\t\tvar match1 = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\tvar parent1 = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}[match1[1]] || \"div\"\n\t\tvar temp = $doc.createElement(parent1)\n\t\ttemp.innerHTML = vnode.children\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t\treturn fragment\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t\treturn fragment\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs2 = vnode.attrs\n\t\tvar is = attrs2 && attrs2.is\n\t\tns = getNameSpace(vnode) || ns\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\t\tif (attrs2 != null) {\n\t\t\tsetAttrs(vnode, attrs2, ns)\n\t\t}\n\t\tinsertNode(parent, element, nextSibling)\n\t\tif (vnode.attrs != null && vnode.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode)\n\t\t}\n\t\telse {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tsetLateAttrs(vnode)\n\t\t\t}\n\t\t}\n\t\treturn element\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return $emptyFragment\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return $emptyFragment\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tvnode._state = vnode.state\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tinitLifecycle(vnode._state, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(vnode._state.view.call(vnode.state, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tvar element = createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t\tinsertNode(parent, element, nextSibling)\n\t\t\treturn element\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t\treturn $emptyFragment\n\t\t}\n\t}\n\t//update\n\tfunction updateNodes(parent, old, vnodes, recycling, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null) removeNodes(old, 0, old.length, vnodes)\n\t\telse {\n\t\t\tif (old.length === vnodes.length) {\n\t\t\t\tvar isUnkeyed = false\n\t\t\t\tfor (var i = 0; i < vnodes.length; i++) {\n\t\t\t\t\tif (vnodes[i] != null && old[i] != null) {\n\t\t\t\t\t\tisUnkeyed = vnodes[i].key == null && old[i].key == null\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isUnkeyed) {\n\t\t\t\t\tfor (var i = 0; i < old.length; i++) {\n\t\t\t\t\t\tif (old[i] === vnodes[i]) continue\n\t\t\t\t\t\telse if (old[i] == null && vnodes[i] != null) createNode(parent, vnodes[i], hooks, ns, getNextSibling(old, i + 1, nextSibling))\n\t\t\t\t\t\telse if (vnodes[i] == null) removeNodes(old, i, i + 1, vnodes)\n\t\t\t\t\t\telse updateNode(parent, old[i], vnodes[i], hooks, getNextSibling(old, i + 1, nextSibling), recycling, ns)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\trecycling = recycling || isRecyclable(old, vnodes)\n\t\t\tif (recycling) {\n\t\t\t\tvar pool = old.pool\n\t\t\t\told = old.concat(old.pool)\n\t\t\t}\n\t\t\tvar oldStart = 0, start = 0, oldEnd = old.length - 1, end = vnodes.length - 1, map\n\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\tvar o = old[oldStart], v = vnodes[start]\n\t\t\t\tif (o === v && !recycling) oldStart++, start++\n\t\t\t\telse if (o == null) oldStart++\n\t\t\t\telse if (v == null) start++\n\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\tvar shouldRecycle = (pool != null && oldStart >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), shouldRecycle, ns)\n\t\t\t\t\tif (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar o = old[oldEnd]\n\t\t\t\t\tif (o === v && !recycling) oldEnd--, start++\n\t\t\t\t\telse if (o == null) oldEnd--\n\t\t\t\t\telse if (v == null) start++\n\t\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\t\tvar shouldRecycle = (pool != null && oldEnd >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), shouldRecycle, ns)\n\t\t\t\t\t\tif (recycling || start < end) insertNode(parent, toFragment(o), getNextSibling(old, oldStart, nextSibling))\n\t\t\t\t\t\toldEnd--, start++\n\t\t\t\t\t}\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\tvar o = old[oldEnd], v = vnodes[end]\n\t\t\t\tif (o === v && !recycling) oldEnd--, end--\n\t\t\t\telse if (o == null) oldEnd--\n\t\t\t\telse if (v == null) end--\n\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\tvar shouldRecycle = (pool != null && oldEnd >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), shouldRecycle, ns)\n\t\t\t\t\tif (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t\tif (o.dom != null) nextSibling = o.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!map) map = getKeyMap(old, oldEnd)\n\t\t\t\t\tif (v != null) {\n\t\t\t\t\t\tvar oldIndex = map[v.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tvar movable = old[oldIndex]\n\t\t\t\t\t\t\tvar shouldRecycle = (pool != null && oldIndex >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\t\t\tupdateNode(parent, movable, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns)\n\t\t\t\t\t\t\tinsertNode(parent, toFragment(movable), nextSibling)\n\t\t\t\t\t\t\told[oldIndex].skip = true\n\t\t\t\t\t\t\tif (movable.dom != null) nextSibling = movable.dom\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar dom = createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\tnextSibling = dom\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tend--\n\t\t\t\t}\n\t\t\t\tif (end < start) break\n\t\t\t}\n\t\t\tcreateNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\tremoveNodes(old, oldStart, oldEnd + 1, vnodes)\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, recycling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode._state = old._state\n\t\t\tvnode.events = old.events\n\t\t\tif (!recycling && shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tif (recycling) {\n\t\t\t\t\t\tvnode.state = {}\n\t\t\t\t\t\tinitLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t\t}\n\t\t\t\t\telse updateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, recycling, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, recycling, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(old, null)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\ttoFragment(old)\n\t\t\tcreateHTML(parent, vnode, nextSibling)\n\t\t}\n\t\telse vnode.dom = old.dom, vnode.domSize = old.domSize\n\t}\n\tfunction updateFragment(parent, old, vnode, recycling, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, recycling, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, recycling, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle0 multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (vnode.attrs != null && vnode.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode)\n\t\t}\n\t\telse if (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t}\n\t\telse {\n\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\tupdateNodes(element, old.children, vnode.children, recycling, hooks, null, ns)\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) {\n\t\tif (recycling) {\n\t\t\tinitComponent(vnode, hooks)\n\t\t} else {\n\t\t\tvnode.instance = Vnode.normalize(vnode._state.view.call(vnode.state, vnode))\n\t\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tupdateLifecycle(vnode._state, vnode, hooks)\n\t\t}\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, recycling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(old.instance, null)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction isRecyclable(old, vnodes) {\n\t\tif (old.pool != null && Math.abs(old.pool.length - vnodes.length) <= Math.abs(old.length - vnodes.length)) {\n\t\t\tvar oldChildrenLength = old[0] && old[0].children && old[0].children.length || 0\n\t\t\tvar poolChildrenLength = old.pool[0] && old.pool[0].children && old.pool[0].children.length || 0\n\t\t\tvar vnodesChildrenLength = vnodes[0] && vnodes[0].children && vnodes[0].children.length || 0\n\t\t\tif (Math.abs(poolChildrenLength - vnodesChildrenLength) <= Math.abs(oldChildrenLength - vnodesChildrenLength)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tfunction getKeyMap(vnodes, end) {\n\t\tvar map = {}, i = 0\n\t\tfor (var i = 0; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key2 = vnode.key\n\t\t\t\tif (key2 != null) map[key2] = i\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\tfunction toFragment(vnode) {\n\t\tvar count0 = vnode.domSize\n\t\tif (count0 != null || vnode.dom == null) {\n\t\t\tvar fragment = $doc.createDocumentFragment()\n\t\t\tif (count0 > 0) {\n\t\t\t\tvar dom = vnode.dom\n\t\t\t\twhile (--count0) fragment.appendChild(dom.nextSibling)\n\t\t\t\tfragment.insertBefore(dom, fragment.firstChild)\n\t\t\t}\n\t\t\treturn fragment\n\t\t}\n\t\telse return vnode.dom\n\t}\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling && nextSibling.parentNode) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\tfunction setContentEditable(vnode) {\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t}\n\t//remove\n\tfunction removeNodes(vnodes, start, end, context) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tif (vnode.skip) vnode.skip = false\n\t\t\t\telse removeNode(vnode, context)\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeNode(vnode, context) {\n\t\tvar expected = 1, called = 0\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = vnode.attrs.onbeforeremove.call(vnode.state, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onbeforeremove === \"function\") {\n\t\t\tvar result = vnode._state.onbeforeremove.call(vnode.state, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tcontinuation()\n\t\tfunction continuation() {\n\t\t\tif (++called === expected) {\n\t\t\t\tonremove(vnode)\n\t\t\t\tif (vnode.dom) {\n\t\t\t\t\tvar count0 = vnode.domSize || 1\n\t\t\t\t\tif (count0 > 1) {\n\t\t\t\t\t\tvar dom = vnode.dom\n\t\t\t\t\t\twhile (--count0) {\n\t\t\t\t\t\t\tremoveNodeFromDOM(dom.nextSibling)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tremoveNodeFromDOM(vnode.dom)\n\t\t\t\t\tif (context != null && vnode.domSize == null && !hasIntegrationMethods(vnode.attrs) && typeof vnode.tag === \"string\") { //TODO test custom elements\n\t\t\t\t\t\tif (!context.pool) context.pool = [vnode]\n\t\t\t\t\t\telse context.pool.push(vnode)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeNodeFromDOM(node) {\n\t\tvar parent = node.parentNode\n\t\tif (parent != null) parent.removeChild(node)\n\t}\n\tfunction onremove(vnode) {\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") vnode.attrs.onremove.call(vnode.state, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (typeof vnode._state.onremove === \"function\") vnode._state.onremove.call(vnode.state, vnode)\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//attrs2\n\tfunction setAttrs(vnode, attrs2, ns) {\n\t\tfor (var key2 in attrs2) {\n\t\t\tsetAttr(vnode, key2, null, attrs2[key2], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key2, old, value, ns) {\n\t\tvar element = vnode.dom\n\t\tif (key2 === \"key\" || key2 === \"is\" || (old === value && !isFormAttribute(vnode, key2)) && typeof value !== \"object\" || typeof value === \"undefined\" || isLifecycleMethod(key2)) return\n\t\tvar nsLastIndex = key2.indexOf(\":\")\n\t\tif (nsLastIndex > -1 && key2.substr(0, nsLastIndex) === \"xlink\") {\n\t\t\telement.setAttributeNS(\"http://www.w3.org/1999/xlink\", key2.slice(nsLastIndex + 1), value)\n\t\t}\n\t\telse if (key2[0] === \"o\" && key2[1] === \"n\" && typeof value === \"function\") updateEvent(vnode, key2, value)\n\t\telse if (key2 === \"style\") updateStyle(element, old, value)\n\t\telse if (key2 in element && !isAttribute(key2) && ns === undefined && !isCustomElement(vnode)) {\n\t\t\tif (key2 === \"value\") {\n\t\t\t\tvar normalized0 = \"\" + value // eslint-disable-line no-implicit-coercion\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === normalized0 && vnode.dom === $doc.activeElement) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\") {\n\t\t\t\t\tif (value === null) {\n\t\t\t\t\t\tif (vnode.dom.selectedIndex === -1 && vnode.dom === $doc.activeElement) return\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (old !== null && vnode.dom.value === normalized0 && vnode.dom === $doc.activeElement) return\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old != null && vnode.dom.value === normalized0) return\n\t\t\t}\n\t\t\t// If you assign an input type1 that is not supported by IE 11 with an assignment expression, an error0 will occur.\n\t\t\tif (vnode.tag === \"input\" && key2 === \"type\") {\n\t\t\t\telement.setAttribute(key2, value)\n\t\t\t\treturn\n\t\t\t}\n\t\t\telement[key2] = value\n\t\t}\n\t\telse {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) element.setAttribute(key2, \"\")\n\t\t\t\telse element.removeAttribute(key2)\n\t\t\t}\n\t\t\telse element.setAttribute(key2 === \"className\" ? \"class\" : key2, value)\n\t\t}\n\t}\n\tfunction setLateAttrs(vnode) {\n\t\tvar attrs2 = vnode.attrs\n\t\tif (vnode.tag === \"select\" && attrs2 != null) {\n\t\t\tif (\"value\" in attrs2) setAttr(vnode, \"value\", null, attrs2.value, undefined)\n\t\t\tif (\"selectedIndex\" in attrs2) setAttr(vnode, \"selectedIndex\", null, attrs2.selectedIndex, undefined)\n\t\t}\n\t}\n\tfunction updateAttrs(vnode, old, attrs2, ns) {\n\t\tif (attrs2 != null) {\n\t\t\tfor (var key2 in attrs2) {\n\t\t\t\tsetAttr(vnode, key2, old && old[key2], attrs2[key2], ns)\n\t\t\t}\n\t\t}\n\t\tif (old != null) {\n\t\t\tfor (var key2 in old) {\n\t\t\t\tif (attrs2 == null || !(key2 in attrs2)) {\n\t\t\t\t\tif (key2 === \"className\") key2 = \"class\"\n\t\t\t\t\tif (key2[0] === \"o\" && key2[1] === \"n\" && !isLifecycleMethod(key2)) updateEvent(vnode, key2, undefined)\n\t\t\t\t\telse if (key2 !== \"key\") vnode.dom.removeAttribute(key2)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction isAttribute(attr) {\n\t\treturn attr === \"href\" || attr === \"list\" || attr === \"form\" || attr === \"width\" || attr === \"height\"// || attr === \"type\"\n\t}\n\tfunction isCustomElement(vnode){\n\t\treturn vnode.attrs.is || vnode.tag.indexOf(\"-\") > -1\n\t}\n\tfunction hasIntegrationMethods(source) {\n\t\treturn source != null && (source.oncreate || source.onupdate || source.onbeforeremove || source.onremove)\n\t}\n\t//style\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) element.style.cssText = \"\", old = null\n\t\tif (style == null) element.style.cssText = \"\"\n\t\telse if (typeof style === \"string\") element.style.cssText = style\n\t\telse {\n\t\t\tif (typeof old === \"string\") element.style.cssText = \"\"\n\t\t\tfor (var key2 in style) {\n\t\t\t\telement.style[key2] = style[key2]\n\t\t\t}\n\t\t\tif (old != null && typeof old !== \"string\") {\n\t\t\t\tfor (var key2 in old) {\n\t\t\t\t\tif (!(key2 in style)) element.style[key2] = \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//event\n\tfunction updateEvent(vnode, key2, value) {\n\t\tvar element = vnode.dom\n\t\tvar callback = typeof onevent !== \"function\" ? value : function(e) {\n\t\t\tvar result = value.call(element, e)\n\t\t\tonevent.call(element, e)\n\t\t\treturn result\n\t\t}\n\t\tif (key2 in element) element[key2] = typeof value === \"function\" ? callback : null\n\t\telse {\n\t\t\tvar eventName = key2.slice(2)\n\t\t\tif (vnode.events === undefined) vnode.events = {}\n\t\t\tif (vnode.events[key2] === callback) return\n\t\t\tif (vnode.events[key2] != null) element.removeEventListener(eventName, vnode.events[key2], false)\n\t\t\tif (typeof value === \"function\") {\n\t\t\t\tvnode.events[key2] = callback\n\t\t\t\telement.addEventListener(eventName, vnode.events[key2], false)\n\t\t\t}\n\t\t}\n\t}\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") source.oninit.call(vnode.state, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(source.oncreate.bind(vnode.state, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(source.onupdate.bind(vnode.state, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tvar forceVnodeUpdate, forceComponentUpdate\n\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") forceVnodeUpdate = vnode.attrs.onbeforeupdate.call(vnode.state, vnode, old)\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onbeforeupdate === \"function\") forceComponentUpdate = vnode._state.onbeforeupdate.call(vnode.state, vnode, old)\n\t\tif (!(forceVnodeUpdate === undefined && forceComponentUpdate === undefined) && !forceVnodeUpdate && !forceComponentUpdate) {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\tfunction render(dom, vnodes) {\n\t\tif (!dom) throw new Error(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = $doc.activeElement\n\t\tvar namespace = dom.namespaceURI\n\t\t// First time0 rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\t\tif (!Array.isArray(vnodes)) vnodes = [vnodes]\n\t\tupdateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), false, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\tdom.vnodes = vnodes\n\t\t// document.activeElement can return null in IE https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement\n\t\tif (active != null && $doc.activeElement !== active) active.focus()\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t}\n\treturn {render: render, setEventCallback: setEventCallback}\n}\nfunction throttle(callback) {\n\t//60fps translates to 16.6ms, round it down since setTimeout requires int\n\tvar time = 16\n\tvar last = 0, pending = null\n\tvar timeout = typeof requestAnimationFrame === \"function\" ? requestAnimationFrame : setTimeout\n\treturn function() {\n\t\tvar now = Date.now()\n\t\tif (last === 0 || now - last >= time) {\n\t\t\tlast = now\n\t\t\tcallback()\n\t\t}\n\t\telse if (pending === null) {\n\t\t\tpending = timeout(function() {\n\t\t\t\tpending = null\n\t\t\t\tcallback()\n\t\t\t\tlast = Date.now()\n\t\t\t}, time - (now - last))\n\t\t}\n\t}\n}\nvar _11 = function($window) {\n\tvar renderService = coreRenderer($window)\n\trenderService.setEventCallback(function(e) {\n\t\tif (e.redraw === false) e.redraw = undefined\n\t\telse redraw()\n\t})\n\tvar callbacks = []\n\tfunction subscribe(key1, callback) {\n\t\tunsubscribe(key1)\n\t\tcallbacks.push(key1, throttle(callback))\n\t}\n\tfunction unsubscribe(key1) {\n\t\tvar index = callbacks.indexOf(key1)\n\t\tif (index > -1) callbacks.splice(index, 2)\n\t}\n\tfunction redraw() {\n\t\tfor (var i = 1; i < callbacks.length; i += 2) {\n\t\t\tcallbacks[i]()\n\t\t}\n\t}\n\treturn {subscribe: subscribe, unsubscribe: unsubscribe, redraw: redraw, render: renderService.render}\n}\nvar redrawService = _11(window)\nrequestService.setCompletionCallback(redrawService.redraw)\nvar _16 = function(redrawService0) {\n\treturn function(root, component) {\n\t\tif (component === null) {\n\t\t\tredrawService0.render(root, [])\n\t\t\tredrawService0.unsubscribe(root)\n\t\t\treturn\n\t\t}\n\t\t\n\t\tif (component.view == null && typeof component !== \"function\") throw new Error(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t\n\t\tvar run0 = function() {\n\t\t\tredrawService0.render(root, Vnode(component))\n\t\t}\n\t\tredrawService0.subscribe(root, run0)\n\t\tredrawService0.redraw()\n\t}\n}\nm.mount = _16(redrawService)\nvar Promise = PromisePolyfill\nvar parseQueryString = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\tvar entries = string.split(\"&\"), data0 = {}, counters = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key5 = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\t\tvar levels = key5.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data0\n\t\tif (key5.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tvar isValue = j === levels.length - 1\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key5 = levels.slice(0, j).join()\n\t\t\t\tif (counters[key5] == null) counters[key5] = 0\n\t\t\t\tlevel = counters[key5]++\n\t\t\t}\n\t\t\tif (cursor[level] == null) {\n\t\t\t\tcursor[level] = isValue ? value : isNumber ? [] : {}\n\t\t\t}\n\t\t\tcursor = cursor[level]\n\t\t}\n\t}\n\treturn data0\n}\nvar coreRouter = function($window) {\n\tvar supportsPushState = typeof $window.history.pushState === \"function\"\n\tvar callAsync0 = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction normalize1(fragment0) {\n\t\tvar data = $window.location[fragment0].replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\tif (fragment0 === \"pathname\" && data[0] !== \"/\") data = \"/\" + data\n\t\treturn data\n\t}\n\tvar asyncId\n\tfunction debounceAsync(callback0) {\n\t\treturn function() {\n\t\t\tif (asyncId != null) return\n\t\t\tasyncId = callAsync0(function() {\n\t\t\t\tasyncId = null\n\t\t\t\tcallback0()\n\t\t\t})\n\t\t}\n\t}\n\tfunction parsePath(path, queryData, hashData) {\n\t\tvar queryIndex = path.indexOf(\"?\")\n\t\tvar hashIndex = path.indexOf(\"#\")\n\t\tvar pathEnd = queryIndex > -1 ? queryIndex : hashIndex > -1 ? hashIndex : path.length\n\t\tif (queryIndex > -1) {\n\t\t\tvar queryEnd = hashIndex > -1 ? hashIndex : path.length\n\t\t\tvar queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd))\n\t\t\tfor (var key4 in queryParams) queryData[key4] = queryParams[key4]\n\t\t}\n\t\tif (hashIndex > -1) {\n\t\t\tvar hashParams = parseQueryString(path.slice(hashIndex + 1))\n\t\t\tfor (var key4 in hashParams) hashData[key4] = hashParams[key4]\n\t\t}\n\t\treturn path.slice(0, pathEnd)\n\t}\n\tvar router = {prefix: \"#!\"}\n\trouter.getPath = function() {\n\t\tvar type2 = router.prefix.charAt(0)\n\t\tswitch (type2) {\n\t\t\tcase \"#\": return normalize1(\"hash\").slice(router.prefix.length)\n\t\t\tcase \"?\": return normalize1(\"search\").slice(router.prefix.length) + normalize1(\"hash\")\n\t\t\tdefault: return normalize1(\"pathname\").slice(router.prefix.length) + normalize1(\"search\") + normalize1(\"hash\")\n\t\t}\n\t}\n\trouter.setPath = function(path, data, options) {\n\t\tvar queryData = {}, hashData = {}\n\t\tpath = parsePath(path, queryData, hashData)\n\t\tif (data != null) {\n\t\t\tfor (var key4 in data) queryData[key4] = data[key4]\n\t\t\tpath = path.replace(/:([^\\/]+)/g, function(match2, token) {\n\t\t\t\tdelete queryData[token]\n\t\t\t\treturn data[token]\n\t\t\t})\n\t\t}\n\t\tvar query = buildQueryString(queryData)\n\t\tif (query) path += \"?\" + query\n\t\tvar hash = buildQueryString(hashData)\n\t\tif (hash) path += \"#\" + hash\n\t\tif (supportsPushState) {\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\t$window.onpopstate()\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, router.prefix + path)\n\t\t\telse $window.history.pushState(state, title, router.prefix + path)\n\t\t}\n\t\telse $window.location.href = router.prefix + path\n\t}\n\trouter.defineRoutes = function(routes, resolve, reject) {\n\t\tfunction resolveRoute() {\n\t\t\tvar path = router.getPath()\n\t\t\tvar params = {}\n\t\t\tvar pathname = parsePath(path, params, params)\n\t\t\tvar state = $window.history.state\n\t\t\tif (state != null) {\n\t\t\t\tfor (var k in state) params[k] = state[k]\n\t\t\t}\n\t\t\tfor (var route0 in routes) {\n\t\t\t\tvar matcher = new RegExp(\"^\" + route0.replace(/:[^\\/]+?\\.{3}/g, \"(.*?)\").replace(/:[^\\/]+/g, \"([^\\\\/]+)\") + \"\\/?$\")\n\t\t\t\tif (matcher.test(pathname)) {\n\t\t\t\t\tpathname.replace(matcher, function() {\n\t\t\t\t\t\tvar keys = route0.match(/:[^\\/]+/g) || []\n\t\t\t\t\t\tvar values = [].slice.call(arguments, 1, -2)\n\t\t\t\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\t\t\t\tparams[keys[i].replace(/:|\\./g, \"\")] = decodeURIComponent(values[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(routes[route0], params, path, route0)\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\treject(path, params)\n\t\t}\n\t\tif (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)\n\t\telse if (router.prefix.charAt(0) === \"#\") $window.onhashchange = resolveRoute\n\t\tresolveRoute()\n\t}\n\treturn router\n}\nvar _20 = function($window, redrawService0) {\n\tvar routeService = coreRouter($window)\n\tvar identity = function(v) {return v}\n\tvar render1, component, attrs3, currentPath, lastUpdate\n\tvar route = function(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\tvar run1 = function() {\n\t\t\tif (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3)))\n\t\t}\n\t\tvar bail = function(path) {\n\t\t\tif (path !== defaultRoute) routeService.setPath(defaultRoute, null, {replace: true})\n\t\t\telse throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t}\n\t\trouteService.defineRoutes(routes, function(payload, params, path) {\n\t\t\tvar update = lastUpdate = function(routeResolver, comp) {\n\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\tattrs3 = params, currentPath = path, lastUpdate = null\n\t\t\t\trender1 = (routeResolver.render || identity).bind(routeResolver)\n\t\t\t\trun1()\n\t\t\t}\n\t\t\tif (payload.view || typeof payload === \"function\") update({}, payload)\n\t\t\telse {\n\t\t\t\tif (payload.onmatch) {\n\t\t\t\t\tPromise.resolve(payload.onmatch(params, path)).then(function(resolved) {\n\t\t\t\t\t\tupdate(payload, resolved)\n\t\t\t\t\t}, bail)\n\t\t\t\t}\n\t\t\t\telse update(payload, \"div\")\n\t\t\t}\n\t\t}, bail)\n\t\tredrawService0.subscribe(root, run1)\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\trouteService.setPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = function(prefix0) {routeService.prefix = prefix0}\n\troute.link = function(vnode1) {\n\t\tvnode1.dom.setAttribute(\"href\", routeService.prefix + vnode1.attrs.href)\n\t\tvnode1.dom.onclick = function(e) {\n\t\t\tif (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return\n\t\t\te.preventDefault()\n\t\t\te.redraw = false\n\t\t\tvar href = this.getAttribute(\"href\")\n\t\t\tif (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length)\n\t\t\troute.set(href, undefined, undefined)\n\t\t}\n\t}\n\troute.param = function(key3) {\n\t\tif(typeof attrs3 !== \"undefined\" && typeof key3 !== \"undefined\") return attrs3[key3]\n\t\treturn attrs3\n\t}\n\treturn route\n}\nm.route = _20(window, redrawService)\nm.withAttr = function(attrName, callback1, context) {\n\treturn function(e) {\n\t\tcallback1.call(context || this, attrName in e.currentTarget ? e.currentTarget[attrName] : e.currentTarget.getAttribute(attrName))\n\t}\n}\nvar _28 = coreRenderer(window)\nm.render = _28.render\nm.redraw = redrawService.redraw\nm.request = requestService.request\nm.jsonp = requestService.jsonp\nm.parseQueryString = parseQueryString\nm.buildQueryString = buildQueryString\nm.version = \"1.1.6\"\nm.vnode = Vnode\nif (typeof module !== \"undefined\") module[\"exports\"] = m\nelse window.m = m\n}());\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {},require(\"timers\").setImmediate)\n},{\"timers\":9}],8:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],9:[function(require,module,exports){\n(function (setImmediate,clearImmediate){\nvar nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n}).call(this,require(\"timers\").setImmediate,require(\"timers\").clearImmediate)\n},{\"process/browser.js\":8,\"timers\":9}],10:[function(require,module,exports){\nfunction tlite(getTooltipOpts) {\n document.addEventListener('mouseover', function (e) {\n var el = e.target;\n var opts = getTooltipOpts(el);\n\n if (!opts) {\n el = el.parentElement;\n opts = el && getTooltipOpts(el);\n }\n\n opts && tlite.show(el, opts, true);\n });\n}\n\ntlite.show = function (el, opts, isAuto) {\n var fallbackAttrib = 'data-tlite';\n opts = opts || {};\n\n (el.tooltip || Tooltip(el, opts)).show();\n\n function Tooltip(el, opts) {\n var tooltipEl;\n var showTimer;\n var text;\n\n el.addEventListener('mousedown', autoHide);\n el.addEventListener('mouseleave', autoHide);\n\n function show() {\n text = el.title || el.getAttribute(fallbackAttrib) || text;\n el.title = '';\n el.setAttribute(fallbackAttrib, '');\n text && !showTimer && (showTimer = setTimeout(fadeIn, isAuto ? 150 : 1))\n }\n\n function autoHide() {\n tlite.hide(el, true);\n }\n\n function hide(isAutoHiding) {\n if (isAuto === isAutoHiding) {\n showTimer = clearTimeout(showTimer);\n var parent = tooltipEl && tooltipEl.parentNode;\n parent && parent.removeChild(tooltipEl);\n tooltipEl = undefined;\n }\n }\n\n function fadeIn() {\n if (!tooltipEl) {\n tooltipEl = createTooltip(el, text, opts);\n }\n }\n\n return el.tooltip = {\n show: show,\n hide: hide\n };\n }\n\n function createTooltip(el, text, opts) {\n var tooltipEl = document.createElement('span');\n var grav = opts.grav || el.getAttribute('data-tlite') || 'n';\n\n tooltipEl.innerHTML = text;\n\n el.appendChild(tooltipEl);\n\n var vertGrav = grav[0] || '';\n var horzGrav = grav[1] || '';\n\n function positionTooltip() {\n tooltipEl.className = 'tlite ' + 'tlite-' + vertGrav + horzGrav;\n\n var arrowSize = 10;\n var top = el.offsetTop;\n var left = el.offsetLeft;\n\n if (tooltipEl.offsetParent === el) {\n top = left = 0;\n }\n\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n var tooltipHeight = tooltipEl.offsetHeight;\n var tooltipWidth = tooltipEl.offsetWidth;\n var centerEl = left + (width / 2);\n\n tooltipEl.style.top = (\n vertGrav === 's' ? (top - tooltipHeight - arrowSize) :\n vertGrav === 'n' ? (top + height + arrowSize) :\n (top + (height / 2) - (tooltipHeight / 2))\n ) + 'px';\n\n tooltipEl.style.left = (\n horzGrav === 'w' ? left :\n horzGrav === 'e' ? left + width - tooltipWidth :\n vertGrav === 'w' ? (left + width + arrowSize) :\n vertGrav === 'e' ? (left - tooltipWidth - arrowSize) :\n (centerEl - tooltipWidth / 2)\n ) + 'px';\n }\n\n positionTooltip();\n\n var rect = tooltipEl.getBoundingClientRect();\n\n if (vertGrav === 's' && rect.top < 0) {\n vertGrav = 'n';\n positionTooltip();\n } else if (vertGrav === 'n' && rect.bottom > window.innerHeight) {\n vertGrav = 's';\n positionTooltip();\n } else if (vertGrav === 'e' && rect.left < 0) {\n vertGrav = 'w';\n positionTooltip();\n } else if (vertGrav === 'w' && rect.right > window.innerWidth) {\n vertGrav = 'e';\n positionTooltip();\n }\n\n tooltipEl.className += ' tlite-visible';\n\n return tooltipEl;\n }\n};\n\ntlite.hide = function (el, isAuto) {\n el.tooltip && el.tooltip.hide(isAuto);\n};\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = tlite;\n}\n\n},{}],11:[function(require,module,exports){\n/*!\n * EventEmitter v5.2.5 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - http://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n\n},{}]},{},[1]);\n })();"]}
1
+ {"version":3,"sources":["admin.js"],"names":["define","undefined","r","e","n","t","o","i","f","c","u","a","Error","code","p","exports","call","length","1","require","module","obj","_tlite","__esModule","default","m","window","EventEmitter","context","document","getElementById","events","tabs","helpers","settings","el","className","indexOf","ListFetcher","mount","mc4wp","deps","mithril","./admin/fields/mailchimp-api-key.js","./admin/helpers.js","./admin/list-fetcher.js","./admin/settings.js","./admin/tabs.js","tlite","wolfy87-eventemitter","2","field","validate","evt","node","createElement","innerText","mc4wp_vars","i18n","invalid_api_key","nextElementSibling","parentElement","removeChild","value","match","insertBefore","addEventListener","3","showIfElements","toggleElement","selector","elements","querySelectorAll","show","clientHeight","style","display","bindEventToElement","element","event","handler","attachEvent","bindEventToElements","Array","prototype","forEach","debounce","func","wait","immediate","timeout","this","args","arguments","callNow","clearTimeout","setTimeout","apply","config","JSON","parse","getAttribute","parentElements","inputs","hide","checked","conditionMet","visibility","opacity","inputElement","removeAttribute","setAttribute","4","$","jQuery","working","done","mailchimp","api_connected","lists","fetch","preventDefault","post","ajaxurl","action","data","success","location","reload","bind","fail","always","redraw","view","method","onsubmit","type","fetching_mailchimp_lists","renew_mailchimp_lists","disabled","trust","fetching_mailchimp_lists_can_take_a_while","fetching_mailchimp_lists_done","fetching_mailchimp_lists_error","5","_typeof","Symbol","iterator","constructor","querySelector","listInputs","selectedLists","updateSelectedLists","input","push","trigger","on","rows","searchKey","searchValue","listId","filter","replace","getSelectedLists","6","URL","$context","$tabs","find","$tabNavs","refererField","get","id","_open","tab","updateState","removeClass","css","nav","blur","url","setParameter","href","history","pushState","title","tb_remove","forms","editor","refresh","split","switchTab","tabId","urlParams","returnValue","each","substring","first","text","open","click","body","activeTab","replaceState","state","init","./url.js","7","query","hasOwnProperty","b","decodeURIComponent","build","ret","d","encodeURIComponent","join","key","8","global","setImmediate","Vnode","tag","attrs0","children","dom","attrs","domSize","_state","instance","skip","normalize","isArray","normalizeChildren","selectorParser","selectorCache","hasOwn","isEmpty","object","hyperscript","start","cached","classes","exec","attrValue","compileSelector","normalized","childList","hasAttrs","class","newAttrs","execSelector","html","fragment","attrs1","PromisePolyfill","executor","TypeError","self","resolvers","rejectors","resolveCurrent","rejectCurrent","_instance","callAsync","list","shouldAbsorb","execute","then","console","error","retry","executeOnce","runs","run","fn","onerror","onFulfilled","onRejection","resolveNext","rejectNext","handle","callback","next","promise","resolve","reject","catch","all","total","count","values","consume","race","Promise","buildQueryString","Object","toString","key0","destructure","FILE_PROTOCOL_REGEX","RegExp","requestService","$window","oncompletion","callbackCount","finalizer","complete","finalize","promise0","then0","extra","interpolate","tokens","slice","assemble","querystring","prefix","deserialize","extract","xhr","responseText","cast","type0","request","toUpperCase","useBody","serialize","FormData","stringify","XMLHttpRequest","aborted","_abort","abort","async","user","password","headers","setRequestHeader","withCredentials","onreadystatechange","readyState","response","status","test","send","background","jsonp","callbackName","Math","round","random","script","parentNode","callbackKey","src","documentElement","appendChild","setCompletionCallback","_8","coreRenderer","onevent","$doc","$emptyFragment","createDocumentFragment","nameSpace","svg","math","getNameSpace","vnode","xmlns","createNodes","parent","vnodes","end","hooks","nextSibling","ns","createNode","initComponent","insertNode","createComponent","initLifecycle","createTextNode","createHTML","firstChild","childNodes","createFragment","attrs2","is","createElementNS","key2","setAttr","setAttrs","contenteditable","setContentEditable","textContent","selectedIndex","parent1","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","temp","innerHTML","child","sentinel","create","$$reentrantLock$$","updateNodes","old","recycling","removeNodes","isUnkeyed","getNextSibling","updateNode","pool","abs","oldChildrenLength","poolChildrenLength","vnodesChildrenLength","isRecyclable","concat","map","oldStart","oldEnd","v","shouldRecycle","toFragment","getKeyMap","oldIndex","movable","oldTag","forceVnodeUpdate","forceComponentUpdate","onbeforeupdate","shouldNotUpdate","updateLifecycle","nodeValue","updateText","updateFragment","isLifecycleMethod","updateEvent","updateAttrs","updateElement","removeNode","updateComponent","count0","content","result","expected","called","onbeforeremove","continuation","onremove","removeNodeFromDOM","source","oncreate","onupdate","attr","activeElement","nsLastIndex","substr","setAttributeNS","cssText","updateStyle","normalized0","eventName","removeEventListener","oninit","render","active","namespace","namespaceURI","focus","setEventCallback","redrawService","renderService","callbacks","unsubscribe","key1","index","splice","subscribe","last","pending","requestAnimationFrame","now","Date","_11","redrawService0","root","component","render1","attrs3","currentPath","lastUpdate","routeService","route","parseQueryString","string","charAt","entries","data0","counters","entry","key5","levels","cursor","pop","j","level","nextLevel","isNumber","isNaN","parseInt","isValue","coreRouter","asyncId","supportsPushState","callAsync0","normalize1","fragment0","parsePath","path","queryData","hashData","queryIndex","hashIndex","pathEnd","queryEnd","queryParams","key4","hashParams","router","getPath","setPath","options","match2","token","hash","onpopstate","defineRoutes","routes","resolveRoute","params","pathname","k","route0","matcher","keys","callback0","onhashchange","defaultRoute","run1","bail","payload","update","routeResolver","comp","onmatch","resolved","set","prefix0","link","vnode1","onclick","ctrlKey","metaKey","shiftKey","which","param","key3","withAttr","attrName","callback1","currentTarget","_28","version","timers","9","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","marker","runClearTimeout","Item","array","noop","nextTick","browser","env","argv","versions","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","10","clearImmediate","Function","immediateIds","nextImmediateId","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","process/browser.js","11","getTooltipOpts","target","opts","isAuto","fallbackAttrib","tooltip","tooltipEl","showTimer","autoHide","fadeIn","grav","vertGrav","horzGrav","positionTooltip","top","offsetTop","left","offsetLeft","offsetParent","width","offsetWidth","height","offsetHeight","tooltipHeight","tooltipWidth","centerEl","rect","getBoundingClientRect","bottom","innerHeight","right","innerWidth","createTooltip","isAutoHiding","Tooltip","12","proto","originalGlobalValue","indexOfListener","listener","alias","getListeners","_getEvents","flattenListeners","flatListeners","getListenersAsObject","isValidListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","addListeners","manipulateListeners","removeListeners","remove","single","multiple","removeEvent","_events","emitEvent","listenersMap","_getOnceReturnValue","setOnceReturnValue","_onceReturnValue","noConflict","amd"],"mappings":"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","file":"admin.min.js","sourcesContent":["(function () { var require = undefined; var define = undefined; (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n'use strict'; // dependencies\n\nvar _tlite = _interopRequireDefault(require(\"tlite\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar m = window.m = require('mithril');\n\nvar EventEmitter = require('wolfy87-eventemitter'); // vars\n\n\nvar context = document.getElementById('mc4wp-admin');\nvar events = new EventEmitter();\n\nvar tabs = require('./admin/tabs.js')(context);\n\nvar helpers = require('./admin/helpers.js');\n\nvar settings = require('./admin/settings.js')(context, helpers, events);\n\n(0, _tlite.default)(function (el) {\n return el.className.indexOf('mc4wp-tooltip') > -1;\n}); // list fetcher\n\nvar ListFetcher = require('./admin/list-fetcher.js');\n\nvar mount = document.getElementById('mc4wp-list-fetcher');\n\nif (mount) {\n m.mount(mount, new ListFetcher());\n}\n\nrequire('./admin/fields/mailchimp-api-key.js'); // expose some things\n\n\nwindow.mc4wp = window.mc4wp || {};\nwindow.mc4wp.deps = window.mc4wp.deps || {};\nwindow.mc4wp.deps.mithril = m;\nwindow.mc4wp.helpers = helpers;\nwindow.mc4wp.events = events;\nwindow.mc4wp.settings = settings;\nwindow.mc4wp.tabs = tabs;\n\n},{\"./admin/fields/mailchimp-api-key.js\":2,\"./admin/helpers.js\":3,\"./admin/list-fetcher.js\":4,\"./admin/settings.js\":5,\"./admin/tabs.js\":6,\"mithril\":8,\"tlite\":11,\"wolfy87-eventemitter\":12}],2:[function(require,module,exports){\n'use strict';\n\nvar field;\n\nfunction validate(evt) {\n var node = document.createElement('p');\n node.className = 'help red';\n node.innerText = window.mc4wp_vars.i18n.invalid_api_key;\n\n if (field.nextElementSibling.innerText === node.innerText) {\n field.nextElementSibling.parentElement.removeChild(field.nextElementSibling);\n }\n\n if (!field.value.match(/^[0-9a-zA-Z*]{32}-[a-z]{2}[0-9]{1,2}$/)) {\n field.parentElement.insertBefore(node, field.nextElementSibling);\n }\n}\n\n(function () {\n field = document.getElementById('mailchimp_api_key');\n\n if (!field) {\n return;\n }\n\n field.addEventListener('change', validate);\n})();\n\n},{}],3:[function(require,module,exports){\n'use strict';\n\nvar helpers = {};\n\nhelpers.toggleElement = function (selector) {\n var elements = document.querySelectorAll(selector);\n\n for (var i = 0; i < elements.length; i++) {\n var show = elements[i].clientHeight <= 0;\n elements[i].style.display = show ? '' : 'none';\n }\n};\n\nhelpers.bindEventToElement = function (element, event, handler) {\n if (element.addEventListener) {\n element.addEventListener(event, handler);\n } else if (element.attachEvent) {\n element.attachEvent('on' + event, handler);\n }\n};\n\nhelpers.bindEventToElements = function (elements, event, handler) {\n Array.prototype.forEach.call(elements, function (element) {\n helpers.bindEventToElement(element, event, handler);\n });\n}; // polling\n\n\nhelpers.debounce = function (func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n/**\n * Showif.js\n */\n\n\n(function () {\n var showIfElements = document.querySelectorAll('[data-showif]'); // dependent elements\n\n Array.prototype.forEach.call(showIfElements, function (element) {\n var config = JSON.parse(element.getAttribute('data-showif'));\n var parentElements = document.querySelectorAll('[name=\"' + config.element + '\"]');\n var inputs = element.querySelectorAll('input,select,textarea:not([readonly])');\n var hide = config.hide === undefined || config.hide;\n\n function toggleElement() {\n // do nothing with unchecked radio inputs\n if (this.getAttribute('type') === \"radio\" && !this.checked) {\n return;\n }\n\n var value = this.getAttribute(\"type\") === \"checkbox\" ? this.checked : this.value;\n var conditionMet = value == config.value;\n\n if (hide) {\n element.style.display = conditionMet ? '' : 'none';\n element.style.visibility = conditionMet ? '' : 'hidden';\n } else {\n element.style.opacity = conditionMet ? '' : '0.4';\n } // disable input fields to stop sending their values to server\n\n\n Array.prototype.forEach.call(inputs, function (inputElement) {\n conditionMet ? inputElement.removeAttribute('readonly') : inputElement.setAttribute('readonly', 'readonly');\n });\n } // find checked element and call toggleElement function\n\n\n Array.prototype.forEach.call(parentElements, function (parentElement) {\n toggleElement.call(parentElement);\n }); // bind on all changes\n\n helpers.bindEventToElements(parentElements, 'change', toggleElement);\n });\n})();\n\nmodule.exports = helpers;\n\n},{}],4:[function(require,module,exports){\n'use strict';\n\nvar $ = window.jQuery;\nvar config = mc4wp_vars;\nvar i18n = config.i18n;\n\nfunction ListFetcher() {\n this.working = false;\n this.done = false; // start fetching right away when no lists but api key given\n\n if (config.mailchimp.api_connected && config.mailchimp.lists.length === 0) {\n this.fetch();\n }\n}\n\nListFetcher.prototype.fetch = function (e) {\n e && e.preventDefault();\n this.working = true;\n this.done = false;\n $.post(ajaxurl, {\n action: \"mc4wp_renew_mailchimp_lists\",\n timeout: 600000 // 10 minutes, matching max_execution_time\n\n }).done(function (data) {\n this.success = true;\n\n if (data) {\n window.setTimeout(function () {\n window.location.reload();\n }, 3000);\n }\n }.bind(this)).fail(function (data) {\n this.success = false;\n }.bind(this)).always(function (data) {\n this.working = false;\n this.done = true;\n m.redraw();\n }.bind(this));\n};\n\nListFetcher.prototype.view = function () {\n return m('form', {\n method: \"POST\",\n onsubmit: this.fetch.bind(this)\n }, [m('p', [m('input', {\n type: \"submit\",\n value: this.working ? i18n.fetching_mailchimp_lists : i18n.renew_mailchimp_lists,\n className: \"button\",\n disabled: !!this.working\n }), m.trust(' &nbsp; '), this.working ? [m('span.mc4wp-loader', \"Loading...\"), m.trust(' &nbsp; '), m('em.help', i18n.fetching_mailchimp_lists_can_take_a_while)] : '', this.done ? [this.success ? m('em.help.green', i18n.fetching_mailchimp_lists_done) : m('em.help.red', i18n.fetching_mailchimp_lists_error)] : ''])]);\n};\n\nmodule.exports = ListFetcher;\n\n},{}],5:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar Settings = function Settings(context, helpers, events) {\n 'use strict'; // vars\n\n var form = context.querySelector('form');\n var listInputs = context.querySelectorAll('.mc4wp-list-input');\n var lists = mc4wp_vars.mailchimp.lists;\n var selectedLists = []; // functions\n\n function getSelectedListsWhere(searchKey, searchValue) {\n return selectedLists.filter(function (el) {\n return el[searchKey] === searchValue;\n });\n }\n\n function getSelectedLists() {\n return selectedLists;\n }\n\n function updateSelectedLists() {\n selectedLists = [];\n Array.prototype.forEach.call(listInputs, function (input) {\n // skip unchecked checkboxes\n if (typeof input.checked === \"boolean\" && !input.checked) {\n return;\n }\n\n if (_typeof(lists[input.value]) === \"object\") {\n selectedLists.push(lists[input.value]);\n }\n });\n events.trigger('selectedLists.change', [selectedLists]);\n return selectedLists;\n }\n\n function toggleVisibleLists() {\n var rows = document.querySelectorAll('.lists--only-selected > *');\n Array.prototype.forEach.call(rows, function (el) {\n var listId = el.getAttribute('data-list-id');\n var isSelected = getSelectedListsWhere('id', listId).length > 0;\n\n if (isSelected) {\n el.setAttribute('class', el.getAttribute('class').replace('hidden', ''));\n } else {\n el.setAttribute('class', el.getAttribute('class') + \" hidden\");\n }\n });\n }\n\n events.on('selectedLists.change', toggleVisibleLists);\n helpers.bindEventToElements(listInputs, 'change', updateSelectedLists);\n updateSelectedLists();\n return {\n getSelectedLists: getSelectedLists\n };\n};\n\nmodule.exports = Settings;\n\n},{}],6:[function(require,module,exports){\n'use strict';\n\nvar URL = require('./url.js'); // Tabs\n\n\nvar Tabs = function Tabs(context) {\n // TODO: last piece of jQuery... can we get rid of it?\n var $ = window.jQuery;\n var $context = $(context);\n var $tabs = $context.find('.tab');\n var $tabNavs = $context.find('.nav-tab');\n var refererField = context.querySelector('input[name=\"_wp_http_referer\"]');\n var tabs = [];\n $.each($tabs, function (i, t) {\n var id = t.id.substring(4);\n var title = $(t).find('h2').first().text();\n tabs.push({\n id: id,\n title: title,\n element: t,\n nav: context.querySelectorAll('.nav-tab-' + id),\n open: function open() {\n return _open(id);\n }\n });\n });\n\n function get(id) {\n for (var i = 0; i < tabs.length; i++) {\n if (tabs[i].id === id) {\n return tabs[i];\n }\n }\n\n return undefined;\n }\n\n function _open(tab, updateState) {\n // make sure we have a tab object\n if (typeof tab === \"string\") {\n tab = get(tab);\n }\n\n if (!tab) {\n return false;\n } // should we update state?\n\n\n if (updateState == undefined) {\n updateState = true;\n } // hide all tabs & remove active class\n\n\n $tabs.removeClass('tab-active').css('display', 'none');\n $tabNavs.removeClass('nav-tab-active'); // add `nav-tab-active` to this tab\n\n Array.prototype.forEach.call(tab.nav, function (nav) {\n nav.className += \" nav-tab-active\";\n nav.blur();\n }); // show target tab\n\n tab.element.style.display = 'block';\n tab.element.className += \" tab-active\"; // create new URL\n\n var url = URL.setParameter(window.location.href, \"tab\", tab.id); // update hash\n\n if (history.pushState && updateState) {\n history.pushState(tab.id, '', url);\n } // update document title\n\n\n title(tab); // update referer field\n\n refererField.value = url; // if thickbox is open, close it.\n\n if (typeof tb_remove === \"function\") {\n tb_remove();\n } // refresh editor after switching tabs\n // TODO: decouple this! law of demeter etc.\n\n\n if (tab.id === 'fields' && window.mc4wp && window.mc4wp.forms && window.mc4wp.forms.editor) {\n mc4wp.forms.editor.refresh();\n }\n\n return true;\n }\n\n function title(tab) {\n var title = document.title.split('-');\n document.title = document.title.replace(title[0], tab.title + \" \");\n }\n\n function switchTab(e) {\n e = e || window.event; // get from data attribute\n\n var tabId = this.getAttribute('data-tab'); // get from classname\n\n if (!tabId) {\n var match = this.className.match(/nav-tab-(\\w+)?/);\n\n if (match) {\n tabId = match[1];\n }\n } // get from href\n\n\n if (!tabId) {\n var urlParams = URL.parse(this.href);\n\n if (!urlParams.tab) {\n return;\n }\n\n tabId = urlParams.tab;\n }\n\n var opened = _open(tabId);\n\n if (opened) {\n e.preventDefault();\n e.returnValue = false;\n return false;\n }\n\n return true;\n }\n\n function init() {\n // check for current tab\n if (!history.pushState) {\n return;\n }\n\n var activeTab = $tabs.filter(':visible').get(0);\n\n if (!activeTab) {\n return;\n }\n\n var tab = get(activeTab.id.substring(4));\n if (!tab) return; // check if tab is in html5 history\n\n if (history.replaceState && history.state === null) {\n history.replaceState(tab.id, '');\n } // update document title\n\n\n title(tab);\n }\n\n $tabNavs.click(switchTab);\n $(document.body).on('click', '.tab-link', switchTab);\n init();\n\n if (window.addEventListener && history.pushState) {\n window.addEventListener('popstate', function (e) {\n if (!e.state) return true;\n var tabId = e.state;\n return _open(tabId, false);\n });\n }\n\n return {\n open: _open,\n get: get\n };\n};\n\nmodule.exports = Tabs;\n\n},{\"./url.js\":7}],7:[function(require,module,exports){\n'use strict';\n\nvar URL = {\n parse: function parse(url) {\n var query = {};\n var a = url.split('&');\n\n for (var i in a) {\n if (!a.hasOwnProperty(i)) {\n continue;\n }\n\n var b = a[i].split('=');\n query[decodeURIComponent(b[0])] = decodeURIComponent(b[1]);\n }\n\n return query;\n },\n build: function build(data) {\n var ret = [];\n\n for (var d in data) {\n ret.push(d + \"=\" + encodeURIComponent(data[d]));\n }\n\n return ret.join(\"&\");\n },\n setParameter: function setParameter(url, key, value) {\n var data = URL.parse(url);\n data[key] = value;\n return URL.build(data);\n }\n};\nmodule.exports = URL;\n\n},{}],8:[function(require,module,exports){\n(function (global,setImmediate){\n;(function() {\n\"use strict\"\nfunction Vnode(tag, key, attrs0, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs0, children: children, text: text, dom: dom, domSize: undefined, state: undefined, _state: undefined, events: undefined, instance: undefined, skip: false}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node != null && typeof node !== \"object\") return Vnode(\"#\", undefined, undefined, node === false ? \"\" : node, undefined, undefined)\n\treturn node\n}\nVnode.normalizeChildren = function normalizeChildren(children) {\n\tfor (var i = 0; i < children.length; i++) {\n\t\tchildren[i] = Vnode.normalize(children[i])\n\t}\n\treturn children\n}\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\nfunction execSelector(state, attrs, children) {\n\tvar hasAttrs = false, childList, text\n\tvar className = attrs.className || attrs.class\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\t\tfor(var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) {\n\t\t\t\tnewAttrs[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t\tattrs = newAttrs\n\t}\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key)) {\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className !== undefined) {\n\t\tif (attrs.class !== undefined) {\n\t\t\tattrs.class = undefined\n\t\t\tattrs.className = className\n\t\t}\n\t\tif (state.attrs.className != null) {\n\t\t\tattrs.className = state.attrs.className + \" \" + className\n\t\t}\n\t}\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\thasAttrs = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\ttext = children[0].children\n\t} else {\n\t\tchildList = children\n\t}\n\treturn Vnode(state.tag, attrs.key, hasAttrs ? attrs : undefined, childList, text)\n}\nfunction hyperscript(selector) {\n\t// Because sloppy mode sucks\n\tvar attrs = arguments[1], start = 2, children\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\tif (typeof selector === \"string\") {\n\t\tvar cached = selectorCache[selector] || compileSelector(selector)\n\t}\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = 1\n\t}\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\tvar normalized = Vnode.normalizeChildren(children)\n\tif (typeof selector === \"string\") {\n\t\treturn execSelector(cached, attrs, normalized)\n\t} else {\n\t\treturn Vnode(selector, attrs.key, attrs, normalized)\n\t}\n}\nhyperscript.trust = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\nhyperscript.fragment = function(attrs1, children) {\n\treturn Vnode(\"[\", attrs1.key, attrs1, Vnode.normalizeChildren(children), undefined, undefined)\n}\nvar m = hyperscript\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") window.Promise = PromisePolyfill\n\tvar PromisePolyfill = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") global.Promise = PromisePolyfill\n\tvar PromisePolyfill = global.Promise\n} else {\n}\nvar buildQueryString = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\tvar args = []\n\tfor (var key0 in object) {\n\t\tdestructure(key0, object[key0])\n\t}\n\treturn args.join(\"&\")\n\tfunction destructure(key0, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key0 + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key0 + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key0) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\nvar FILE_PROTOCOL_REGEX = new RegExp(\"^file://\", \"i\")\nvar _8 = function($window, Promise) {\n\tvar callbackCount = 0\n\tvar oncompletion\n\tfunction setCompletionCallback(callback) {oncompletion = callback}\n\tfunction finalizer() {\n\t\tvar count = 0\n\t\tfunction complete() {if (--count === 0 && typeof oncompletion === \"function\") oncompletion()}\n\t\treturn function finalize(promise0) {\n\t\t\tvar then0 = promise0.then\n\t\t\tpromise0.then = function() {\n\t\t\t\tcount++\n\t\t\t\tvar next = then0.apply(promise0, arguments)\n\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\tcomplete()\n\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t})\n\t\t\t\treturn finalize(next)\n\t\t\t}\n\t\t\treturn promise0\n\t\t}\n\t}\n\tfunction normalize(args, extra) {\n\t\tif (typeof args === \"string\") {\n\t\t\tvar url = args\n\t\t\targs = extra || {}\n\t\t\tif (args.url == null) args.url = url\n\t\t}\n\t\treturn args\n\t}\n\tfunction request(args, extra) {\n\t\tvar finalize = finalizer()\n\t\targs = normalize(args, extra)\n\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\tif (args.method == null) args.method = \"GET\"\n\t\t\targs.method = args.method.toUpperCase()\n\t\t\tvar useBody = (args.method === \"GET\" || args.method === \"TRACE\") ? false : (typeof args.useBody === \"boolean\" ? args.useBody : true)\n\t\t\tif (typeof args.serialize !== \"function\") args.serialize = typeof FormData !== \"undefined\" && args.data instanceof FormData ? function(value) {return value} : JSON.stringify\n\t\t\tif (typeof args.deserialize !== \"function\") args.deserialize = deserialize\n\t\t\tif (typeof args.extract !== \"function\") args.extract = extract\n\t\t\targs.url = interpolate(args.url, args.data)\n\t\t\tif (useBody) args.data = args.serialize(args.data)\n\t\t\telse args.url = assemble(args.url, args.data)\n\t\t\tvar xhr = new $window.XMLHttpRequest(),\n\t\t\t\taborted = false,\n\t\t\t\t_abort = xhr.abort\n\t\t\txhr.abort = function abort() {\n\t\t\t\taborted = true\n\t\t\t\t_abort.call(xhr)\n\t\t\t}\n\t\t\txhr.open(args.method, args.url, typeof args.async === \"boolean\" ? args.async : true, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\t\t\tif (args.serialize === JSON.stringify && useBody && !(args.headers && args.headers.hasOwnProperty(\"Content-Type\"))) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (args.deserialize === deserialize && !(args.headers && args.headers.hasOwnProperty(\"Accept\"))) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tfor (var key in args.headers) if ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t}\n\t\t\tif (typeof args.config === \"function\") xhr = args.config(xhr, args) || xhr\n\t\t\txhr.onreadystatechange = function() {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif(aborted) return\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args))\n\t\t\t\t\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || FILE_PROTOCOL_REGEX.test(args.url)) {\n\t\t\t\t\t\t\tresolve(cast(args.type, response))\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar error = new Error(xhr.responseText)\n\t\t\t\t\t\t\tfor (var key in response) error[key] = response[key]\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (useBody && (args.data != null)) xhr.send(args.data)\n\t\t\telse xhr.send()\n\t\t})\n\t\treturn args.background === true ? promise0 : finalize(promise0)\n\t}\n\tfunction jsonp(args, extra) {\n\t\tvar finalize = finalizer()\n\t\targs = normalize(args, extra)\n\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(cast(args.type, data))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tif (args.data == null) args.data = {}\n\t\t\targs.url = interpolate(args.url, args.data)\n\t\t\targs.data[args.callbackKey || \"callback\"] = callbackName\n\t\t\tscript.src = assemble(args.url, args.data)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t})\n\t\treturn args.background === true? promise0 : finalize(promise0)\n\t}\n\tfunction interpolate(url, data) {\n\t\tif (data == null) return url\n\t\tvar tokens = url.match(/:[^\\/]+/gi) || []\n\t\tfor (var i = 0; i < tokens.length; i++) {\n\t\t\tvar key = tokens[i].slice(1)\n\t\t\tif (data[key] != null) {\n\t\t\t\turl = url.replace(tokens[i], data[key])\n\t\t\t}\n\t\t}\n\t\treturn url\n\t}\n\tfunction assemble(url, data) {\n\t\tvar querystring = buildQueryString(data)\n\t\tif (querystring !== \"\") {\n\t\t\tvar prefix = url.indexOf(\"?\") < 0 ? \"?\" : \"&\"\n\t\t\turl += prefix + querystring\n\t\t}\n\t\treturn url\n\t}\n\tfunction deserialize(data) {\n\t\ttry {return data !== \"\" ? JSON.parse(data) : null}\n\t\tcatch (e) {throw new Error(data)}\n\t}\n\tfunction extract(xhr) {return xhr.responseText}\n\tfunction cast(type0, data) {\n\t\tif (typeof type0 === \"function\") {\n\t\t\tif (Array.isArray(data)) {\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\tdata[i] = new type0(data[i])\n\t\t\t\t}\n\t\t\t}\n\t\t\telse return new type0(data)\n\t\t}\n\t\treturn data\n\t}\n\treturn {request: request, jsonp: jsonp, setCompletionCallback: setCompletionCallback}\n}\nvar requestService = _8(window, PromisePolyfill)\nvar coreRenderer = function($window) {\n\tvar $doc = $window.document\n\tvar $emptyFragment = $doc.createDocumentFragment()\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\tvar onevent\n\tfunction setEventCallback(callback) {return onevent = callback}\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": return createText(parent, vnode, nextSibling)\n\t\t\t\tcase \"<\": return createHTML(parent, vnode, nextSibling)\n\t\t\t\tcase \"[\": return createFragment(parent, vnode, hooks, ns, nextSibling)\n\t\t\t\tdefault: return createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse return createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t\treturn vnode.dom\n\t}\n\tfunction createHTML(parent, vnode, nextSibling) {\n\t\tvar match1 = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\tvar parent1 = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}[match1[1]] || \"div\"\n\t\tvar temp = $doc.createElement(parent1)\n\t\ttemp.innerHTML = vnode.children\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t\treturn fragment\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t\treturn fragment\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs2 = vnode.attrs\n\t\tvar is = attrs2 && attrs2.is\n\t\tns = getNameSpace(vnode) || ns\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\t\tif (attrs2 != null) {\n\t\t\tsetAttrs(vnode, attrs2, ns)\n\t\t}\n\t\tinsertNode(parent, element, nextSibling)\n\t\tif (vnode.attrs != null && vnode.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode)\n\t\t}\n\t\telse {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tsetLateAttrs(vnode)\n\t\t\t}\n\t\t}\n\t\treturn element\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return $emptyFragment\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return $emptyFragment\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tvnode._state = vnode.state\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tinitLifecycle(vnode._state, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(vnode._state.view.call(vnode.state, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tvar element = createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t\tinsertNode(parent, element, nextSibling)\n\t\t\treturn element\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t\treturn $emptyFragment\n\t\t}\n\t}\n\t//update\n\tfunction updateNodes(parent, old, vnodes, recycling, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null) removeNodes(old, 0, old.length, vnodes)\n\t\telse {\n\t\t\tif (old.length === vnodes.length) {\n\t\t\t\tvar isUnkeyed = false\n\t\t\t\tfor (var i = 0; i < vnodes.length; i++) {\n\t\t\t\t\tif (vnodes[i] != null && old[i] != null) {\n\t\t\t\t\t\tisUnkeyed = vnodes[i].key == null && old[i].key == null\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isUnkeyed) {\n\t\t\t\t\tfor (var i = 0; i < old.length; i++) {\n\t\t\t\t\t\tif (old[i] === vnodes[i]) continue\n\t\t\t\t\t\telse if (old[i] == null && vnodes[i] != null) createNode(parent, vnodes[i], hooks, ns, getNextSibling(old, i + 1, nextSibling))\n\t\t\t\t\t\telse if (vnodes[i] == null) removeNodes(old, i, i + 1, vnodes)\n\t\t\t\t\t\telse updateNode(parent, old[i], vnodes[i], hooks, getNextSibling(old, i + 1, nextSibling), recycling, ns)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\trecycling = recycling || isRecyclable(old, vnodes)\n\t\t\tif (recycling) {\n\t\t\t\tvar pool = old.pool\n\t\t\t\told = old.concat(old.pool)\n\t\t\t}\n\t\t\tvar oldStart = 0, start = 0, oldEnd = old.length - 1, end = vnodes.length - 1, map\n\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\tvar o = old[oldStart], v = vnodes[start]\n\t\t\t\tif (o === v && !recycling) oldStart++, start++\n\t\t\t\telse if (o == null) oldStart++\n\t\t\t\telse if (v == null) start++\n\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\tvar shouldRecycle = (pool != null && oldStart >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), shouldRecycle, ns)\n\t\t\t\t\tif (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar o = old[oldEnd]\n\t\t\t\t\tif (o === v && !recycling) oldEnd--, start++\n\t\t\t\t\telse if (o == null) oldEnd--\n\t\t\t\t\telse if (v == null) start++\n\t\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\t\tvar shouldRecycle = (pool != null && oldEnd >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), shouldRecycle, ns)\n\t\t\t\t\t\tif (recycling || start < end) insertNode(parent, toFragment(o), getNextSibling(old, oldStart, nextSibling))\n\t\t\t\t\t\toldEnd--, start++\n\t\t\t\t\t}\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\tvar o = old[oldEnd], v = vnodes[end]\n\t\t\t\tif (o === v && !recycling) oldEnd--, end--\n\t\t\t\telse if (o == null) oldEnd--\n\t\t\t\telse if (v == null) end--\n\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\tvar shouldRecycle = (pool != null && oldEnd >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\tupdateNode(parent, o, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), shouldRecycle, ns)\n\t\t\t\t\tif (recycling && o.tag === v.tag) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t\tif (o.dom != null) nextSibling = o.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!map) map = getKeyMap(old, oldEnd)\n\t\t\t\t\tif (v != null) {\n\t\t\t\t\t\tvar oldIndex = map[v.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tvar movable = old[oldIndex]\n\t\t\t\t\t\t\tvar shouldRecycle = (pool != null && oldIndex >= old.length - pool.length) || ((pool == null) && recycling)\n\t\t\t\t\t\t\tupdateNode(parent, movable, v, hooks, getNextSibling(old, oldEnd + 1, nextSibling), recycling, ns)\n\t\t\t\t\t\t\tinsertNode(parent, toFragment(movable), nextSibling)\n\t\t\t\t\t\t\told[oldIndex].skip = true\n\t\t\t\t\t\t\tif (movable.dom != null) nextSibling = movable.dom\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar dom = createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\tnextSibling = dom\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tend--\n\t\t\t\t}\n\t\t\t\tif (end < start) break\n\t\t\t}\n\t\t\tcreateNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\tremoveNodes(old, oldStart, oldEnd + 1, vnodes)\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, recycling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode._state = old._state\n\t\t\tvnode.events = old.events\n\t\t\tif (!recycling && shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tif (recycling) {\n\t\t\t\t\t\tvnode.state = {}\n\t\t\t\t\t\tinitLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t\t}\n\t\t\t\t\telse updateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, recycling, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, recycling, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(old, null)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\ttoFragment(old)\n\t\t\tcreateHTML(parent, vnode, nextSibling)\n\t\t}\n\t\telse vnode.dom = old.dom, vnode.domSize = old.domSize\n\t}\n\tfunction updateFragment(parent, old, vnode, recycling, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, recycling, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, recycling, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle0 multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (vnode.attrs != null && vnode.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode)\n\t\t}\n\t\telse if (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t}\n\t\telse {\n\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\tupdateNodes(element, old.children, vnode.children, recycling, hooks, null, ns)\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) {\n\t\tif (recycling) {\n\t\t\tinitComponent(vnode, hooks)\n\t\t} else {\n\t\t\tvnode.instance = Vnode.normalize(vnode._state.view.call(vnode.state, vnode))\n\t\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tupdateLifecycle(vnode._state, vnode, hooks)\n\t\t}\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, recycling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(old.instance, null)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction isRecyclable(old, vnodes) {\n\t\tif (old.pool != null && Math.abs(old.pool.length - vnodes.length) <= Math.abs(old.length - vnodes.length)) {\n\t\t\tvar oldChildrenLength = old[0] && old[0].children && old[0].children.length || 0\n\t\t\tvar poolChildrenLength = old.pool[0] && old.pool[0].children && old.pool[0].children.length || 0\n\t\t\tvar vnodesChildrenLength = vnodes[0] && vnodes[0].children && vnodes[0].children.length || 0\n\t\t\tif (Math.abs(poolChildrenLength - vnodesChildrenLength) <= Math.abs(oldChildrenLength - vnodesChildrenLength)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tfunction getKeyMap(vnodes, end) {\n\t\tvar map = {}, i = 0\n\t\tfor (var i = 0; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key2 = vnode.key\n\t\t\t\tif (key2 != null) map[key2] = i\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\tfunction toFragment(vnode) {\n\t\tvar count0 = vnode.domSize\n\t\tif (count0 != null || vnode.dom == null) {\n\t\t\tvar fragment = $doc.createDocumentFragment()\n\t\t\tif (count0 > 0) {\n\t\t\t\tvar dom = vnode.dom\n\t\t\t\twhile (--count0) fragment.appendChild(dom.nextSibling)\n\t\t\t\tfragment.insertBefore(dom, fragment.firstChild)\n\t\t\t}\n\t\t\treturn fragment\n\t\t}\n\t\telse return vnode.dom\n\t}\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling && nextSibling.parentNode) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\tfunction setContentEditable(vnode) {\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t}\n\t//remove\n\tfunction removeNodes(vnodes, start, end, context) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tif (vnode.skip) vnode.skip = false\n\t\t\t\telse removeNode(vnode, context)\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeNode(vnode, context) {\n\t\tvar expected = 1, called = 0\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = vnode.attrs.onbeforeremove.call(vnode.state, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onbeforeremove === \"function\") {\n\t\t\tvar result = vnode._state.onbeforeremove.call(vnode.state, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tcontinuation()\n\t\tfunction continuation() {\n\t\t\tif (++called === expected) {\n\t\t\t\tonremove(vnode)\n\t\t\t\tif (vnode.dom) {\n\t\t\t\t\tvar count0 = vnode.domSize || 1\n\t\t\t\t\tif (count0 > 1) {\n\t\t\t\t\t\tvar dom = vnode.dom\n\t\t\t\t\t\twhile (--count0) {\n\t\t\t\t\t\t\tremoveNodeFromDOM(dom.nextSibling)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tremoveNodeFromDOM(vnode.dom)\n\t\t\t\t\tif (context != null && vnode.domSize == null && !hasIntegrationMethods(vnode.attrs) && typeof vnode.tag === \"string\") { //TODO test custom elements\n\t\t\t\t\t\tif (!context.pool) context.pool = [vnode]\n\t\t\t\t\t\telse context.pool.push(vnode)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeNodeFromDOM(node) {\n\t\tvar parent = node.parentNode\n\t\tif (parent != null) parent.removeChild(node)\n\t}\n\tfunction onremove(vnode) {\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") vnode.attrs.onremove.call(vnode.state, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (typeof vnode._state.onremove === \"function\") vnode._state.onremove.call(vnode.state, vnode)\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//attrs2\n\tfunction setAttrs(vnode, attrs2, ns) {\n\t\tfor (var key2 in attrs2) {\n\t\t\tsetAttr(vnode, key2, null, attrs2[key2], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key2, old, value, ns) {\n\t\tvar element = vnode.dom\n\t\tif (key2 === \"key\" || key2 === \"is\" || (old === value && !isFormAttribute(vnode, key2)) && typeof value !== \"object\" || typeof value === \"undefined\" || isLifecycleMethod(key2)) return\n\t\tvar nsLastIndex = key2.indexOf(\":\")\n\t\tif (nsLastIndex > -1 && key2.substr(0, nsLastIndex) === \"xlink\") {\n\t\t\telement.setAttributeNS(\"http://www.w3.org/1999/xlink\", key2.slice(nsLastIndex + 1), value)\n\t\t}\n\t\telse if (key2[0] === \"o\" && key2[1] === \"n\" && typeof value === \"function\") updateEvent(vnode, key2, value)\n\t\telse if (key2 === \"style\") updateStyle(element, old, value)\n\t\telse if (key2 in element && !isAttribute(key2) && ns === undefined && !isCustomElement(vnode)) {\n\t\t\tif (key2 === \"value\") {\n\t\t\t\tvar normalized0 = \"\" + value // eslint-disable-line no-implicit-coercion\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === normalized0 && vnode.dom === $doc.activeElement) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\") {\n\t\t\t\t\tif (value === null) {\n\t\t\t\t\t\tif (vnode.dom.selectedIndex === -1 && vnode.dom === $doc.activeElement) return\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (old !== null && vnode.dom.value === normalized0 && vnode.dom === $doc.activeElement) return\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old != null && vnode.dom.value === normalized0) return\n\t\t\t}\n\t\t\t// If you assign an input type1 that is not supported by IE 11 with an assignment expression, an error0 will occur.\n\t\t\tif (vnode.tag === \"input\" && key2 === \"type\") {\n\t\t\t\telement.setAttribute(key2, value)\n\t\t\t\treturn\n\t\t\t}\n\t\t\telement[key2] = value\n\t\t}\n\t\telse {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) element.setAttribute(key2, \"\")\n\t\t\t\telse element.removeAttribute(key2)\n\t\t\t}\n\t\t\telse element.setAttribute(key2 === \"className\" ? \"class\" : key2, value)\n\t\t}\n\t}\n\tfunction setLateAttrs(vnode) {\n\t\tvar attrs2 = vnode.attrs\n\t\tif (vnode.tag === \"select\" && attrs2 != null) {\n\t\t\tif (\"value\" in attrs2) setAttr(vnode, \"value\", null, attrs2.value, undefined)\n\t\t\tif (\"selectedIndex\" in attrs2) setAttr(vnode, \"selectedIndex\", null, attrs2.selectedIndex, undefined)\n\t\t}\n\t}\n\tfunction updateAttrs(vnode, old, attrs2, ns) {\n\t\tif (attrs2 != null) {\n\t\t\tfor (var key2 in attrs2) {\n\t\t\t\tsetAttr(vnode, key2, old && old[key2], attrs2[key2], ns)\n\t\t\t}\n\t\t}\n\t\tif (old != null) {\n\t\t\tfor (var key2 in old) {\n\t\t\t\tif (attrs2 == null || !(key2 in attrs2)) {\n\t\t\t\t\tif (key2 === \"className\") key2 = \"class\"\n\t\t\t\t\tif (key2[0] === \"o\" && key2[1] === \"n\" && !isLifecycleMethod(key2)) updateEvent(vnode, key2, undefined)\n\t\t\t\t\telse if (key2 !== \"key\") vnode.dom.removeAttribute(key2)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction isAttribute(attr) {\n\t\treturn attr === \"href\" || attr === \"list\" || attr === \"form\" || attr === \"width\" || attr === \"height\"// || attr === \"type\"\n\t}\n\tfunction isCustomElement(vnode){\n\t\treturn vnode.attrs.is || vnode.tag.indexOf(\"-\") > -1\n\t}\n\tfunction hasIntegrationMethods(source) {\n\t\treturn source != null && (source.oncreate || source.onupdate || source.onbeforeremove || source.onremove)\n\t}\n\t//style\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) element.style.cssText = \"\", old = null\n\t\tif (style == null) element.style.cssText = \"\"\n\t\telse if (typeof style === \"string\") element.style.cssText = style\n\t\telse {\n\t\t\tif (typeof old === \"string\") element.style.cssText = \"\"\n\t\t\tfor (var key2 in style) {\n\t\t\t\telement.style[key2] = style[key2]\n\t\t\t}\n\t\t\tif (old != null && typeof old !== \"string\") {\n\t\t\t\tfor (var key2 in old) {\n\t\t\t\t\tif (!(key2 in style)) element.style[key2] = \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//event\n\tfunction updateEvent(vnode, key2, value) {\n\t\tvar element = vnode.dom\n\t\tvar callback = typeof onevent !== \"function\" ? value : function(e) {\n\t\t\tvar result = value.call(element, e)\n\t\t\tonevent.call(element, e)\n\t\t\treturn result\n\t\t}\n\t\tif (key2 in element) element[key2] = typeof value === \"function\" ? callback : null\n\t\telse {\n\t\t\tvar eventName = key2.slice(2)\n\t\t\tif (vnode.events === undefined) vnode.events = {}\n\t\t\tif (vnode.events[key2] === callback) return\n\t\t\tif (vnode.events[key2] != null) element.removeEventListener(eventName, vnode.events[key2], false)\n\t\t\tif (typeof value === \"function\") {\n\t\t\t\tvnode.events[key2] = callback\n\t\t\t\telement.addEventListener(eventName, vnode.events[key2], false)\n\t\t\t}\n\t\t}\n\t}\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") source.oninit.call(vnode.state, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(source.oncreate.bind(vnode.state, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(source.onupdate.bind(vnode.state, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tvar forceVnodeUpdate, forceComponentUpdate\n\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") forceVnodeUpdate = vnode.attrs.onbeforeupdate.call(vnode.state, vnode, old)\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode._state.onbeforeupdate === \"function\") forceComponentUpdate = vnode._state.onbeforeupdate.call(vnode.state, vnode, old)\n\t\tif (!(forceVnodeUpdate === undefined && forceComponentUpdate === undefined) && !forceVnodeUpdate && !forceComponentUpdate) {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\tfunction render(dom, vnodes) {\n\t\tif (!dom) throw new Error(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = $doc.activeElement\n\t\tvar namespace = dom.namespaceURI\n\t\t// First time0 rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\t\tif (!Array.isArray(vnodes)) vnodes = [vnodes]\n\t\tupdateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), false, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\tdom.vnodes = vnodes\n\t\t// document.activeElement can return null in IE https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement\n\t\tif (active != null && $doc.activeElement !== active) active.focus()\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t}\n\treturn {render: render, setEventCallback: setEventCallback}\n}\nfunction throttle(callback) {\n\t//60fps translates to 16.6ms, round it down since setTimeout requires int\n\tvar time = 16\n\tvar last = 0, pending = null\n\tvar timeout = typeof requestAnimationFrame === \"function\" ? requestAnimationFrame : setTimeout\n\treturn function() {\n\t\tvar now = Date.now()\n\t\tif (last === 0 || now - last >= time) {\n\t\t\tlast = now\n\t\t\tcallback()\n\t\t}\n\t\telse if (pending === null) {\n\t\t\tpending = timeout(function() {\n\t\t\t\tpending = null\n\t\t\t\tcallback()\n\t\t\t\tlast = Date.now()\n\t\t\t}, time - (now - last))\n\t\t}\n\t}\n}\nvar _11 = function($window) {\n\tvar renderService = coreRenderer($window)\n\trenderService.setEventCallback(function(e) {\n\t\tif (e.redraw === false) e.redraw = undefined\n\t\telse redraw()\n\t})\n\tvar callbacks = []\n\tfunction subscribe(key1, callback) {\n\t\tunsubscribe(key1)\n\t\tcallbacks.push(key1, throttle(callback))\n\t}\n\tfunction unsubscribe(key1) {\n\t\tvar index = callbacks.indexOf(key1)\n\t\tif (index > -1) callbacks.splice(index, 2)\n\t}\n\tfunction redraw() {\n\t\tfor (var i = 1; i < callbacks.length; i += 2) {\n\t\t\tcallbacks[i]()\n\t\t}\n\t}\n\treturn {subscribe: subscribe, unsubscribe: unsubscribe, redraw: redraw, render: renderService.render}\n}\nvar redrawService = _11(window)\nrequestService.setCompletionCallback(redrawService.redraw)\nvar _16 = function(redrawService0) {\n\treturn function(root, component) {\n\t\tif (component === null) {\n\t\t\tredrawService0.render(root, [])\n\t\t\tredrawService0.unsubscribe(root)\n\t\t\treturn\n\t\t}\n\t\t\n\t\tif (component.view == null && typeof component !== \"function\") throw new Error(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t\n\t\tvar run0 = function() {\n\t\t\tredrawService0.render(root, Vnode(component))\n\t\t}\n\t\tredrawService0.subscribe(root, run0)\n\t\tredrawService0.redraw()\n\t}\n}\nm.mount = _16(redrawService)\nvar Promise = PromisePolyfill\nvar parseQueryString = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\tvar entries = string.split(\"&\"), data0 = {}, counters = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key5 = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\t\tvar levels = key5.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data0\n\t\tif (key5.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tvar isValue = j === levels.length - 1\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key5 = levels.slice(0, j).join()\n\t\t\t\tif (counters[key5] == null) counters[key5] = 0\n\t\t\t\tlevel = counters[key5]++\n\t\t\t}\n\t\t\tif (cursor[level] == null) {\n\t\t\t\tcursor[level] = isValue ? value : isNumber ? [] : {}\n\t\t\t}\n\t\t\tcursor = cursor[level]\n\t\t}\n\t}\n\treturn data0\n}\nvar coreRouter = function($window) {\n\tvar supportsPushState = typeof $window.history.pushState === \"function\"\n\tvar callAsync0 = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction normalize1(fragment0) {\n\t\tvar data = $window.location[fragment0].replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\tif (fragment0 === \"pathname\" && data[0] !== \"/\") data = \"/\" + data\n\t\treturn data\n\t}\n\tvar asyncId\n\tfunction debounceAsync(callback0) {\n\t\treturn function() {\n\t\t\tif (asyncId != null) return\n\t\t\tasyncId = callAsync0(function() {\n\t\t\t\tasyncId = null\n\t\t\t\tcallback0()\n\t\t\t})\n\t\t}\n\t}\n\tfunction parsePath(path, queryData, hashData) {\n\t\tvar queryIndex = path.indexOf(\"?\")\n\t\tvar hashIndex = path.indexOf(\"#\")\n\t\tvar pathEnd = queryIndex > -1 ? queryIndex : hashIndex > -1 ? hashIndex : path.length\n\t\tif (queryIndex > -1) {\n\t\t\tvar queryEnd = hashIndex > -1 ? hashIndex : path.length\n\t\t\tvar queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd))\n\t\t\tfor (var key4 in queryParams) queryData[key4] = queryParams[key4]\n\t\t}\n\t\tif (hashIndex > -1) {\n\t\t\tvar hashParams = parseQueryString(path.slice(hashIndex + 1))\n\t\t\tfor (var key4 in hashParams) hashData[key4] = hashParams[key4]\n\t\t}\n\t\treturn path.slice(0, pathEnd)\n\t}\n\tvar router = {prefix: \"#!\"}\n\trouter.getPath = function() {\n\t\tvar type2 = router.prefix.charAt(0)\n\t\tswitch (type2) {\n\t\t\tcase \"#\": return normalize1(\"hash\").slice(router.prefix.length)\n\t\t\tcase \"?\": return normalize1(\"search\").slice(router.prefix.length) + normalize1(\"hash\")\n\t\t\tdefault: return normalize1(\"pathname\").slice(router.prefix.length) + normalize1(\"search\") + normalize1(\"hash\")\n\t\t}\n\t}\n\trouter.setPath = function(path, data, options) {\n\t\tvar queryData = {}, hashData = {}\n\t\tpath = parsePath(path, queryData, hashData)\n\t\tif (data != null) {\n\t\t\tfor (var key4 in data) queryData[key4] = data[key4]\n\t\t\tpath = path.replace(/:([^\\/]+)/g, function(match2, token) {\n\t\t\t\tdelete queryData[token]\n\t\t\t\treturn data[token]\n\t\t\t})\n\t\t}\n\t\tvar query = buildQueryString(queryData)\n\t\tif (query) path += \"?\" + query\n\t\tvar hash = buildQueryString(hashData)\n\t\tif (hash) path += \"#\" + hash\n\t\tif (supportsPushState) {\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\t$window.onpopstate()\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, router.prefix + path)\n\t\t\telse $window.history.pushState(state, title, router.prefix + path)\n\t\t}\n\t\telse $window.location.href = router.prefix + path\n\t}\n\trouter.defineRoutes = function(routes, resolve, reject) {\n\t\tfunction resolveRoute() {\n\t\t\tvar path = router.getPath()\n\t\t\tvar params = {}\n\t\t\tvar pathname = parsePath(path, params, params)\n\t\t\tvar state = $window.history.state\n\t\t\tif (state != null) {\n\t\t\t\tfor (var k in state) params[k] = state[k]\n\t\t\t}\n\t\t\tfor (var route0 in routes) {\n\t\t\t\tvar matcher = new RegExp(\"^\" + route0.replace(/:[^\\/]+?\\.{3}/g, \"(.*?)\").replace(/:[^\\/]+/g, \"([^\\\\/]+)\") + \"\\/?$\")\n\t\t\t\tif (matcher.test(pathname)) {\n\t\t\t\t\tpathname.replace(matcher, function() {\n\t\t\t\t\t\tvar keys = route0.match(/:[^\\/]+/g) || []\n\t\t\t\t\t\tvar values = [].slice.call(arguments, 1, -2)\n\t\t\t\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\t\t\t\tparams[keys[i].replace(/:|\\./g, \"\")] = decodeURIComponent(values[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(routes[route0], params, path, route0)\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\treject(path, params)\n\t\t}\n\t\tif (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)\n\t\telse if (router.prefix.charAt(0) === \"#\") $window.onhashchange = resolveRoute\n\t\tresolveRoute()\n\t}\n\treturn router\n}\nvar _20 = function($window, redrawService0) {\n\tvar routeService = coreRouter($window)\n\tvar identity = function(v) {return v}\n\tvar render1, component, attrs3, currentPath, lastUpdate\n\tvar route = function(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\tvar run1 = function() {\n\t\t\tif (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3)))\n\t\t}\n\t\tvar bail = function(path) {\n\t\t\tif (path !== defaultRoute) routeService.setPath(defaultRoute, null, {replace: true})\n\t\t\telse throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t}\n\t\trouteService.defineRoutes(routes, function(payload, params, path) {\n\t\t\tvar update = lastUpdate = function(routeResolver, comp) {\n\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\tattrs3 = params, currentPath = path, lastUpdate = null\n\t\t\t\trender1 = (routeResolver.render || identity).bind(routeResolver)\n\t\t\t\trun1()\n\t\t\t}\n\t\t\tif (payload.view || typeof payload === \"function\") update({}, payload)\n\t\t\telse {\n\t\t\t\tif (payload.onmatch) {\n\t\t\t\t\tPromise.resolve(payload.onmatch(params, path)).then(function(resolved) {\n\t\t\t\t\t\tupdate(payload, resolved)\n\t\t\t\t\t}, bail)\n\t\t\t\t}\n\t\t\t\telse update(payload, \"div\")\n\t\t\t}\n\t\t}, bail)\n\t\tredrawService0.subscribe(root, run1)\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\trouteService.setPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = function(prefix0) {routeService.prefix = prefix0}\n\troute.link = function(vnode1) {\n\t\tvnode1.dom.setAttribute(\"href\", routeService.prefix + vnode1.attrs.href)\n\t\tvnode1.dom.onclick = function(e) {\n\t\t\tif (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return\n\t\t\te.preventDefault()\n\t\t\te.redraw = false\n\t\t\tvar href = this.getAttribute(\"href\")\n\t\t\tif (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length)\n\t\t\troute.set(href, undefined, undefined)\n\t\t}\n\t}\n\troute.param = function(key3) {\n\t\tif(typeof attrs3 !== \"undefined\" && typeof key3 !== \"undefined\") return attrs3[key3]\n\t\treturn attrs3\n\t}\n\treturn route\n}\nm.route = _20(window, redrawService)\nm.withAttr = function(attrName, callback1, context) {\n\treturn function(e) {\n\t\tcallback1.call(context || this, attrName in e.currentTarget ? e.currentTarget[attrName] : e.currentTarget.getAttribute(attrName))\n\t}\n}\nvar _28 = coreRenderer(window)\nm.render = _28.render\nm.redraw = redrawService.redraw\nm.request = requestService.request\nm.jsonp = requestService.jsonp\nm.parseQueryString = parseQueryString\nm.buildQueryString = buildQueryString\nm.version = \"1.1.6\"\nm.vnode = Vnode\nif (typeof module !== \"undefined\") module[\"exports\"] = m\nelse window.m = m\n}());\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {},require(\"timers\").setImmediate)\n},{\"timers\":10}],9:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],10:[function(require,module,exports){\n(function (setImmediate,clearImmediate){\nvar nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n}).call(this,require(\"timers\").setImmediate,require(\"timers\").clearImmediate)\n},{\"process/browser.js\":9,\"timers\":10}],11:[function(require,module,exports){\nfunction tlite(getTooltipOpts) {\n document.addEventListener('mouseover', function (e) {\n var el = e.target;\n var opts = getTooltipOpts(el);\n\n if (!opts) {\n el = el.parentElement;\n opts = el && getTooltipOpts(el);\n }\n\n opts && tlite.show(el, opts, true);\n });\n}\n\ntlite.show = function (el, opts, isAuto) {\n var fallbackAttrib = 'data-tlite';\n opts = opts || {};\n\n (el.tooltip || Tooltip(el, opts)).show();\n\n function Tooltip(el, opts) {\n var tooltipEl;\n var showTimer;\n var text;\n\n el.addEventListener('mousedown', autoHide);\n el.addEventListener('mouseleave', autoHide);\n\n function show() {\n text = el.title || el.getAttribute(fallbackAttrib) || text;\n el.title = '';\n el.setAttribute(fallbackAttrib, '');\n text && !showTimer && (showTimer = setTimeout(fadeIn, isAuto ? 150 : 1))\n }\n\n function autoHide() {\n tlite.hide(el, true);\n }\n\n function hide(isAutoHiding) {\n if (isAuto === isAutoHiding) {\n showTimer = clearTimeout(showTimer);\n var parent = tooltipEl && tooltipEl.parentNode;\n parent && parent.removeChild(tooltipEl);\n tooltipEl = undefined;\n }\n }\n\n function fadeIn() {\n if (!tooltipEl) {\n tooltipEl = createTooltip(el, text, opts);\n }\n }\n\n return el.tooltip = {\n show: show,\n hide: hide\n };\n }\n\n function createTooltip(el, text, opts) {\n var tooltipEl = document.createElement('span');\n var grav = opts.grav || el.getAttribute('data-tlite') || 'n';\n\n tooltipEl.innerHTML = text;\n\n el.appendChild(tooltipEl);\n\n var vertGrav = grav[0] || '';\n var horzGrav = grav[1] || '';\n\n function positionTooltip() {\n tooltipEl.className = 'tlite ' + 'tlite-' + vertGrav + horzGrav;\n\n var arrowSize = 10;\n var top = el.offsetTop;\n var left = el.offsetLeft;\n\n if (tooltipEl.offsetParent === el) {\n top = left = 0;\n }\n\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n var tooltipHeight = tooltipEl.offsetHeight;\n var tooltipWidth = tooltipEl.offsetWidth;\n var centerEl = left + (width / 2);\n\n tooltipEl.style.top = (\n vertGrav === 's' ? (top - tooltipHeight - arrowSize) :\n vertGrav === 'n' ? (top + height + arrowSize) :\n (top + (height / 2) - (tooltipHeight / 2))\n ) + 'px';\n\n tooltipEl.style.left = (\n horzGrav === 'w' ? left :\n horzGrav === 'e' ? left + width - tooltipWidth :\n vertGrav === 'w' ? (left + width + arrowSize) :\n vertGrav === 'e' ? (left - tooltipWidth - arrowSize) :\n (centerEl - tooltipWidth / 2)\n ) + 'px';\n }\n\n positionTooltip();\n\n var rect = tooltipEl.getBoundingClientRect();\n\n if (vertGrav === 's' && rect.top < 0) {\n vertGrav = 'n';\n positionTooltip();\n } else if (vertGrav === 'n' && rect.bottom > window.innerHeight) {\n vertGrav = 's';\n positionTooltip();\n } else if (vertGrav === 'e' && rect.left < 0) {\n vertGrav = 'w';\n positionTooltip();\n } else if (vertGrav === 'w' && rect.right > window.innerWidth) {\n vertGrav = 'e';\n positionTooltip();\n }\n\n tooltipEl.className += ' tlite-visible';\n\n return tooltipEl;\n }\n};\n\ntlite.hide = function (el, isAuto) {\n el.tooltip && el.tooltip.hide(isAuto);\n};\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = tlite;\n}\n\n},{}],12:[function(require,module,exports){\n/*!\n * EventEmitter v5.2.5 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - http://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n\n},{}]},{},[1]);\n })();"]}
assets/js/forms-admin.js CHANGED
@@ -397,7 +397,7 @@ var FieldHelper = function FieldHelper(m, tabs, editor, fields, events, i18n) {
397
 
398
  var generate = require('./field-generator.js')(m);
399
 
400
- var overlay = require('./overlay.js')(m, i18n);
401
 
402
  var forms = require('./field-forms.js')(m, i18n);
403
 
@@ -518,7 +518,7 @@ var FieldHelper = function FieldHelper(m, tabs, editor, fields, events, i18n) {
518
 
519
  module.exports = FieldHelper;
520
 
521
- },{"./field-forms.js":2,"./field-generator.js":3,"./overlay.js":10}],5:[function(require,module,exports){
522
  "use strict";
523
 
524
  var FieldFactory = function FieldFactory(fields, i18n) {
@@ -554,7 +554,7 @@ var FieldFactory = function FieldFactory(fields, i18n) {
554
  }
555
  }
556
  /**
557
- * Normalizes the field type which is passed by MailChimp
558
  *
559
  * @param type
560
  * @returns {*}
@@ -632,7 +632,7 @@ var FieldFactory = function FieldFactory(fields, i18n) {
632
  return true;
633
  }
634
  /**
635
- * Register a field for a MailChimp grouping
636
  *
637
  * @param interestCategory
638
  */
@@ -1159,7 +1159,7 @@ var FormWatcher = function FormWatcher(m, editor, settings, fields, events, help
1159
  }
1160
 
1161
  function findRequiredFields() {
1162
- // query fields required by MailChimp
1163
  var requiredFields = fields.getAllWhere('forceRequired', true).map(function (f) {
1164
  return f.name().toUpperCase().replace(/\[(\w+)\]/g, '.$1');
1165
  }); // query fields in form with [required] attribute
@@ -1232,7 +1232,7 @@ function render() {
1232
 
1233
  function init(editor, fields) {
1234
  var groupingsNotice = function groupingsNotice() {
1235
- var text = "Your form contains old style <code>GROUPINGS</code> fields. <br /><br />Please remove these fields from your form and then re-add them through the available field buttons to make sure your data is getting through to MailChimp correctly.";
1236
  var formCode = editor.getValue().toLowerCase();
1237
  formCode.indexOf('name="groupings') > -1 ? show('deprecated_groupings', text) : hide('deprecated_groupings');
1238
  };
@@ -1242,7 +1242,7 @@ function init(editor, fields) {
1242
  var missingFields = requiredFields.filter(function (f) {
1243
  return !editor.containsField(f.name().toUpperCase());
1244
  });
1245
- var text = '<strong>Heads up!</strong> Your form is missing list fields that are required in MailChimp. Either add these fields to your form or mark them as optional in MailChimp.';
1246
  text += "<br /><ul class=\"ul-square\" style=\"margin-bottom: 0;\"><li>" + missingFields.map(function (f) {
1247
  return f.title();
1248
  }).join('</li><li>') + '</li></ul>';
@@ -1347,15 +1347,15 @@ var settings = mc4wp.settings;
1347
  var helpers = mc4wp.helpers;
1348
  var tabs = mc4wp.tabs;
1349
 
1350
- var FormWatcher = require('./admin/form-watcher.js');
1351
 
1352
- var FormEditor = require('./admin/form-editor.js');
1353
 
1354
- var FieldHelper = require('./admin/field-helper.js');
1355
 
1356
- var FieldsFactory = require('./admin/fields-factory.js');
1357
 
1358
- var fields = require('./admin/fields.js')(m, events); // vars
1359
 
1360
 
1361
  var editor = window.formEditor = FormEditor;
@@ -1382,7 +1382,7 @@ window.mc4wp.forms = window.mc4wp.forms || {};
1382
  window.mc4wp.forms.editor = editor;
1383
  window.mc4wp.forms.fields = fields;
1384
 
1385
- },{"./admin/field-helper.js":4,"./admin/fields-factory.js":5,"./admin/fields.js":6,"./admin/form-editor.js":7,"./admin/form-watcher.js":8,"./admin/notices":9}],12:[function(require,module,exports){
1386
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
1387
  // Distributed under an MIT license: https://codemirror.net/LICENSE
1388
 
397
 
398
  var generate = require('./field-generator.js')(m);
399
 
400
+ var overlay = require('../overlay.js')(m, i18n);
401
 
402
  var forms = require('./field-forms.js')(m, i18n);
403
 
518
 
519
  module.exports = FieldHelper;
520
 
521
+ },{"../overlay.js":10,"./field-forms.js":2,"./field-generator.js":3}],5:[function(require,module,exports){
522
  "use strict";
523
 
524
  var FieldFactory = function FieldFactory(fields, i18n) {
554
  }
555
  }
556
  /**
557
+ * Normalizes the field type which is passed by Mailchimp
558
  *
559
  * @param type
560
  * @returns {*}
632
  return true;
633
  }
634
  /**
635
+ * Register a field for a Mailchimp grouping
636
  *
637
  * @param interestCategory
638
  */
1159
  }
1160
 
1161
  function findRequiredFields() {
1162
+ // query fields required by Mailchimp
1163
  var requiredFields = fields.getAllWhere('forceRequired', true).map(function (f) {
1164
  return f.name().toUpperCase().replace(/\[(\w+)\]/g, '.$1');
1165
  }); // query fields in form with [required] attribute
1232
 
1233
  function init(editor, fields) {
1234
  var groupingsNotice = function groupingsNotice() {
1235
+ var text = "Your form contains old style <code>GROUPINGS</code> fields. <br /><br />Please remove these fields from your form and then re-add them through the available field buttons to make sure your data is getting through to Mailchimp correctly.";
1236
  var formCode = editor.getValue().toLowerCase();
1237
  formCode.indexOf('name="groupings') > -1 ? show('deprecated_groupings', text) : hide('deprecated_groupings');
1238
  };
1242
  var missingFields = requiredFields.filter(function (f) {
1243
  return !editor.containsField(f.name().toUpperCase());
1244
  });
1245
+ var text = '<strong>Heads up!</strong> Your form is missing list fields that are required in Mailchimp. Either add these fields to your form or mark them as optional in Mailchimp.';
1246
  text += "<br /><ul class=\"ul-square\" style=\"margin-bottom: 0;\"><li>" + missingFields.map(function (f) {
1247
  return f.title();
1248
  }).join('</li><li>') + '</li></ul>';
1347
  var helpers = mc4wp.helpers;
1348
  var tabs = mc4wp.tabs;
1349
 
1350
+ var FormWatcher = require('./admin/form-editor/form-watcher.js');
1351
 
1352
+ var FormEditor = require('./admin/form-editor/form-editor.js');
1353
 
1354
+ var FieldHelper = require('./admin/form-editor/field-helper.js');
1355
 
1356
+ var FieldsFactory = require('./admin/form-editor/fields-factory.js');
1357
 
1358
+ var fields = require('./admin/form-editor/fields.js')(m, events); // vars
1359
 
1360
 
1361
  var editor = window.formEditor = FormEditor;
1382
  window.mc4wp.forms.editor = editor;
1383
  window.mc4wp.forms.fields = fields;
1384
 
1385
+ },{"./admin/form-editor/field-helper.js":4,"./admin/form-editor/fields-factory.js":5,"./admin/form-editor/fields.js":6,"./admin/form-editor/form-editor.js":7,"./admin/form-editor/form-watcher.js":8,"./admin/notices":9}],12:[function(require,module,exports){
1386
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
1387
  // Distributed under an MIT license: https://codemirror.net/LICENSE
1388
 
assets/js/forms-admin.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(){var o=void 0;!function o(a,l,s){function c(t,e){if(!l[t]){if(!a[t]){var r=!1;if(!e&&r)return r(t,!0);if(u)return u(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=l[t]={exports:{}};a[t][0].call(i.exports,function(e){return c(a[t][1][e]||e)},i,i.exports,o,a,l,s)}return l[t].exports}for(var u=!1,e=0;e<s.length;e++)c(s[e]);return c}({1:[function(e,t,r){"use strict";t.exports=function(n,i){var e={showType:function(e){var t=e.type();return t=t.charAt(0).toUpperCase()+t.slice(1),n("div",[n("label",i.fieldType),n("span",t)])},label:function(e){return n("div",[n("label",i.fieldLabel),n("input.widefat",{type:"text",value:e.label(),onchange:n.withAttr("value",e.label),placeholder:e.title()})])},value:function(e){var t="hidden"===e.type();return n("div",[n("label",[t?i.value:i.initialValue," ",t?"":n("small",{style:"float: right; font-weight: normal;"},i.optional)]),n("input.widefat",{type:"text",value:e.value(),onchange:n.withAttr("value",e.value)}),t?"":n("p.help",i.valueHelp)])},numberMinMax:function(e){return n("div",[n("div.row",[n("div.col.col-3",[n("label",i.min),n("input",{type:"number",onchange:n.withAttr("value",e.min)})]),n("div.col.col-3",[n("label",i.max),n("input",{type:"number",onchange:n.withAttr("value",e.max)})])])])},isRequired:function(e){var t,r={type:"checkbox",checked:e.required(),onchange:n.withAttr("checked",e.required)};return e.forceRequired()&&(r.required=!0,r.disabled=!0,t=n("p.help",i.forceRequired)),n("div",[n("label.cb-wrap",[n("input",r),i.isFieldRequired]),t])},placeholder:function(e){return n("div",[n("label",[i.placeholder," ",n("small",{style:"float: right; font-weight: normal;"},i.optional)]),n("input.widefat",{type:"text",value:e.placeholder(),onchange:n.withAttr("value",e.placeholder),placeholder:""}),n("p.help",i.placeholderHelp)])},useParagraphs:function(e){return n("div",[n("label.cb-wrap",[n("input",{type:"checkbox",checked:e.wrap(),onchange:n.withAttr("checked",e.wrap)}),i.wrapInParagraphTags])])},choiceType:function(e){var t=[n("option",{value:"select",selected:"select"===e.type()&&"selected"},i.dropdown),n("option",{value:"radio",selected:"radio"===e.type()&&"selected"},i.radioButtons)];return e.acceptsMultipleValues&&t.push(n("option",{value:"checkbox",selected:"checkbox"===e.type()&&"selected"},i.checkboxes)),n("div",[n("label",i.choiceType),n("select",{value:e.type(),onchange:n.withAttr("value",e.type)},t)])},choices:function(r){var e=[];return e.push(n("div",[n("label",i.choices),n("div.limit-height",[n("table",[r.choices().map(function(e,t){return n("tr",{"data-id":t},[n("td.cb",n("input",{name:"selected",type:"checkbox"===r.type()?"checkbox":"radio",onchange:n.withAttr("value",r.selectChoice.bind(r)),checked:e.selected(),value:e.value(),title:i.preselect})),n("td.stretch",n("input.widefat",{type:"text",value:e.label(),placeholder:e.title(),onchange:n.withAttr("value",e.label)})),n("td",n("span",{title:i.remove,class:"dashicons dashicons-no-alt hover-activated",onclick:function(e){this.choices().splice(e,1)}.bind(r,t)},""))])})])])])),e},linkToTerms:function(e){return n("div",[n("label",i.agreeToTermsLink),n("input.widefat",{type:"text",value:e.link,onchange:n.withAttr("value",e.link),placeholder:"https://..."})])}};return e}},{}],2:[function(i,e,t){"use strict";e.exports=function(e,t){var r={},n=i("./field-forms-rows.js")(e,t);return r.render=function(e){var t=e.type();if("function"==typeof r[t])return r[t](e);switch(t){case"select":case"radio":case"checkbox":return r.choice(e)}return r.text(e)},r.text=function(e){return[n.label(e),n.placeholder(e),n.value(e),n.isRequired(e),n.useParagraphs(e)]},r.choice=function(e){var t=[n.label(e),n.choiceType(e),n.choices(e)];return"select"===e.type()&&t.push(n.placeholder(e)),t.push(n.useParagraphs(e)),"select"!==e.type()&&"radio"!==e.type()||t.push(n.isRequired(e)),t},r.hidden=function(e){return e.placeholder(""),e.label(""),e.wrap(!1),[n.showType(e),n.value(e)]},r.submit=function(e){return e.label(""),e.placeholder(""),[n.value(e),n.useParagraphs(e)]},r["terms-checkbox"]=function(e){return[n.label(e),n.linkToTerms(e),n.isRequired(e),n.useParagraphs(e)]},r.number=function(e){return[r.text(e),n.numberMinMax(e)]},r}},{"./field-forms-rows.js":1}],3:[function(e,t,r){"use strict";var l=e("html"),s=function(e){e.dom.checked&&e.dom.setAttribute("checked","true"),e.dom.value&&e.dom.setAttribute("value",e.dom.value),e.dom.selected&&e.dom.setAttribute("selected","true")};t.exports=function(o){var a={};return a.select=function(e){var t={name:e.name(),required:e.required()},r=!1,n=e.choices().map(function(e){return e.selected()&&(r=!0),o("option",{value:e.value()!==e.label()?e.value():void 0,selected:e.selected(),oncreate:s},e.label())}),i=e.placeholder();return 0<i.length&&n.unshift(o("option",{disabled:!0,value:"",selected:!r,oncreate:s},i)),o("select",t,n)},a["terms-checkbox"]=function(e){var t;return t=0<e.link().length?o("a",{href:e.link(),target:"_blank"},e.label()):e.label(),o("label",[o("input",{name:e.name(),type:"checkbox",value:e.value(),required:e.required()})," ",t])},a.checkbox=function(n){return n.choices().map(function(e){var t=n.name()+("checkbox"===n.type()?"[]":""),r=n.required()&&"radio"===n.type();return o("label",[o("input",{name:t,type:n.type(),value:e.value(),checked:e.selected(),required:r,oncreate:s})," ",o("span",e.label())])})},a.radio=a.checkbox,a.default=function(e){var t={type:e.type()};return e.name()&&(t.name=e.name()),e.min()&&(t.min=e.min()),e.max()&&(t.max=e.max()),0<e.value().length&&(t.value=e.value()),0<e.placeholder().length&&(t.placeholder=e.placeholder()),t.required=e.required(),t.oncreate=s,o("input",t)},function(e){var t,r,n,i=document.createElement("div");return t=0<e.label().length&&e.showLabel()?o("label",{},e.label()):"",r="function"==typeof a[e.type()]?a[e.type()](e):a.default(e),n=e.wrap()?o("p",[t,r]):[t,r],o.render(i,n),l.prettyPrint(i.innerHTML)+"\n"}}},{html:22}],4:[function(f,e,t){"use strict";e.exports=function(i,e,t,o,r,a){var l,n=f("./field-generator.js")(i),s=f("./overlay.js")(i,a),c=f("./field-forms.js")(i,a);function u(e){(l=o.get(e))&&0<l.choices().length&&l.value(l.choices().map(function(e){return e.label()}).join("|")),i.redraw()}function d(){var e=n(l);t.insert(e),u(""),i.redraw()}return t.on("blur",i.redraw),{view:function(){var e=o.getCategories(),r=o.getAll(),t=i("div.available-fields.small-margin",[i("h4",a.chooseField),e.map(function(t){var e=r.filter(function(e){return e.category===t});if(e.length)return i("div.tiny-margin",[i("strong",t),e.map(function(e){var t="button";e.forceRequired()&&(t+=" is-required");var r=e.inFormContent();return null!==r&&(t+=" "+(r?"in-form":"not-in-form")),i("button",{className:t,type:"button",onclick:i.withAttr("value",u),value:e.index},e.title())})])})]),n=null;return l&&(n=i(s(i("div.field-wizard",[i("h3",[l.title(),l.forceRequired()?i("span.red","*"):"",l.name().length?i("code",l.name()):""]),l.help().length?i("p",i.trust(l.help())):"",c.render(l),i("p",[i("button",{class:"button-primary",type:"button",onkeydown:function(e){13==(e=e||window.event).keyCode&&d()},onclick:d},a.addToForm)])]),u))),[t,n]},controller:function(){}}}},{"./field-forms.js":2,"./field-generator.js":3,"./overlay.js":10}],5:[function(e,t,r){"use strict";t.exports=function(i,o){var a=[];function l(e,t,r){var n=i.register(e,t);r||a.push(n)}function s(e){var t={phone:"tel",dropdown:"select",checkboxes:"checkbox",birthday:"text"};return void 0!==t[e]?t[e]:e}function t(e){var t=o.listFields,r=s(e.field_type),n={name:e.tag,title:e.name,required:e.required,forceRequired:e.required,type:r,choices:e.choices,acceptsMultipleValues:!1};return"address"!==n.type?l(t,n,!1):(l(t,{name:n.name+"[addr1]",type:"text",mailchimpType:"address",title:o.streetAddress}),l(t,{name:n.name+"[city]",type:"text",mailchimpType:"address",title:o.city}),l(t,{name:n.name+"[state]",type:"text",mailchimpType:"address",title:o.state}),l(t,{name:n.name+"[zip]",type:"text",mailchimpType:"address",title:o.zip}),l(t,{name:n.name+"[country]",type:"select",mailchimpType:"address",title:o.country,choices:mc4wp_vars.countries})),!0}function r(e){var t=o.interestCategories,r=s(e.field_type);l(t,{title:e.name,name:"INTERESTS["+e.id+"]",type:r,choices:e.interests,acceptsMultipleValues:"checkbox"===r},!1)}function n(e){e.merge_fields=e.merge_fields.sort(function(e,t){return"EMAIL"===e.tag||e.public&&!t.public?-1:!e.public&&t.public?1:0}),e.merge_fields.forEach(t),e.interest_categories.forEach(r)}return{registerCustomFields:function(e){var t,r=o.formFields;for(var n in l(r,{name:"",value:o.subscribe,type:"submit",title:o.submitButton},!0),t={},e)t[e[n].id]=e[n].name;l(r,{name:"_mc4wp_lists",type:"checkbox",title:o.listChoice,choices:t,help:o.listChoiceDescription,acceptsMultipleValues:!0},!0),t={subscribe:"Subscribe",unsubscribe:"Unsubscribe"},l(r,{name:"_mc4wp_action",type:"radio",title:o.formAction,choices:t,value:"subscribe",help:o.formActionDescription},!0),l(r,{name:"AGREE_TO_TERMS",value:1,type:"terms-checkbox",label:o.agreeToTerms,title:o.agreeToTermsShort,showLabel:!1,required:!0},!0)},registerListFields:n,registerListsFields:function(e){a.forEach(i.deregister),e.forEach(n)}}}},{}],6:[function(e,t,r){"use strict";var n=e("mithril/stream");t.exports=function(o,a){var l,s=[],c=[],u=function(e){this.name=n(e.name),this.title=n(e.title||e.name),this.type=n(e.type),this.mailchimpType=n(e.mailchimpType||""),this.label=n(e.label||e.title||""),this.showLabel=n(void 0===e.showLabel||e.showLabel),this.value=n(e.value||""),this.placeholder=n(e.placeholder||""),this.required=n(e.required||!1),this.forceRequired=n(e.forceRequired||!1),this.wrap=n(void 0===e.wrap||e.wrap),this.min=n(e.min||null),this.max=n(e.max||null),this.help=n(e.help||""),this.choices=n(e.choices||[]),this.inFormContent=n(null),this.acceptsMultipleValues=e.acceptsMultipleValues,this.link=n(e.link||""),this.selectChoice=function(t){var r=this;this.choices(this.choices().map(function(e){return e.value()===t?e.selected(!0):"checkbox"!==r.type()&&e.selected(!1),e}))}},d=function(e){this.label=n(e.label),this.title=n(e.title||e.label),this.selected=n(e.selected||!1),this.value=n(e.value||e.label)};function f(t,r){return s.filter(function(e){return e[t]()===r})}return{get:function(e){return s[e]},getAll:function(){return s=s.map(function(e,t){return e.index=t,e})},getCategories:function(){return c},deregister:function(e){var t=s.indexOf(e);-1<t&&(delete s[t],o.redraw())},register:function(e,t){var r,n,i=f("name",t.name).shift();if(!i)return t.choices&&(t.choices="function"==typeof(n=t.choices).map?n.map(function(e){return new d({label:e})}):Object.keys(n).map(function(e){var t=n[e];return new d({label:t,value:e})}),t.value&&(t.choices=t.choices.map(function(e){return e.value()===t.value&&e.selected(!0),e}))),c.indexOf(e)<0&&c.push(e),(r=new u(t)).category=e,s.push(r),l&&window.clearTimeout(l),l=window.setTimeout(o.redraw,200),a.trigger("fields.change"),r;!i.forceRequired()&&t.forceRequired&&i.forceRequired(!0)},getAllWhere:f}}},{"mithril/stream":23}],7:[function(e,t,r){"use strict";var n=e("codemirror");e("codemirror/mode/xml/xml"),e("codemirror/mode/javascript/javascript"),e("codemirror/mode/css/css"),e("codemirror/mode/htmlmixed/htmlmixed"),e("codemirror/addon/fold/xml-fold.js"),e("codemirror/addon/edit/matchtags.js"),e("codemirror/addon/edit/closetag.js"),e("codemirror/addon/selection/active-line.js"),e("codemirror/addon/edit/matchbrackets.js");var i,o,a={},l=document.createElement("form"),s=!1,c=document.getElementById("mc4wp-form-content"),u=document.getElementById("mc4wp-form-preview"),d=/\{[^{}]+\}/g;function f(){var e=u.contentDocument||u.contentWindow.document;(o=e.querySelector(".mc4wp-form-fields"))&&h()}function h(){var e=a.getValue();e=e.replace(d,"").replace(d,""),o.innerHTML=e,o.dispatchEvent(new Event("mc4wp-refresh"))}function p(){return s&&(l.innerHTML=a.getValue().toLowerCase(),s=!1),l}window.addEventListener("load",function(){n.signal(i,"change")}),c.addEventListener("change",function(){s=!0,h()}),a.getValue=function(){return i?i.getValue():c.value},a.query=function(e){return p().querySelectorAll(e.toLowerCase())},a.containsField=function(e){return null!==p().elements.namedItem(e.toLowerCase())},a.insert=function(e){i?(i.replaceSelection(e),i.focus()):c.value+=e},a.on=function(e,t){return i?(e="input"===e?"changes":e,i.on(e,t)):c.addEventListener(e,t)},a.refresh=function(){i&&i.refresh()},l.innerHTML=c.value.toLowerCase(),n&&(i=n.fromTextArea(c,{selectionPointer:!0,mode:"htmlmixed",htmlMode:!0,autoCloseTags:!0,autoRefresh:!0,styleActiveLine:!0,matchBrackets:!0,matchTags:{bothTags:!0}}),window.dispatchEvent&&i.on("change",function(){if("function"==typeof Event){var e=new Event("change",{bubbles:!0});c.dispatchEvent(e)}})),u.addEventListener("load",f),f.call(),t.exports=a},{codemirror:17,"codemirror/addon/edit/closetag.js":12,"codemirror/addon/edit/matchbrackets.js":13,"codemirror/addon/edit/matchtags.js":14,"codemirror/addon/fold/xml-fold.js":15,"codemirror/addon/selection/active-line.js":16,"codemirror/mode/css/css":18,"codemirror/mode/htmlmixed/htmlmixed":19,"codemirror/mode/javascript/javascript":20,"codemirror/mode/xml/xml":21}],8:[function(e,t,r){"use strict";t.exports=function(t,i,e,r,n,o){var a=document.getElementById("required-fields");function l(){var n,e;r.getAll().forEach(function(e){if(!(e.name().length<=0)){var t=e.name();"checkbox"===e.type()&&(t+="[]");var r=i.containsField(t);if(e.inFormContent(r),"address"===e.mailchimpType()){e.originalRequiredValue=void 0===e.originalRequiredValue?e.forceRequired():e.originalRequiredValue;var n=e.name().replace(/\[(\w+)\]/g,"");0<i.query('[name^="'+n+'"]').length?(void 0===e.originalRequiredValue&&(e.originalRequiredValue=e.forceRequired()),e.forceRequired(!0)):e.forceRequired(e.originalRequiredValue)}}}),n=r.getAllWhere("forceRequired",!0).map(function(e){return e.name().toUpperCase().replace(/\[(\w+)\]/g,".$1")}),e=i.query("[required]"),Array.prototype.forEach.call(e,function(e){var t=e.name;if(t&&!(t.length<0)&&"_"!==t[0]){var r=(t=(t=t.replace(/\[(\w+)\]/g,".$1")).replace(/\[\]$/,"")).indexOf(".");r=0<r?r:t.length,t=t.substr(0,r).toUpperCase()+t.substr(r),-1===n.indexOf(t)&&n.push(t)}}),a.value=n.join(","),t.redraw()}i.on("change",o.debounce(l,500)),n.on("fields.change",o.debounce(l,500))}},{}],9:[function(e,t,r){"use strict";var i={};function o(e,t){i[e]=t,n()}function a(e){delete i[e],n()}function n(){var e="";for(var t in i)e+='<div class="notice notice-warning inline"><p>'+i[t]+"</p></div>";var r=document.querySelector(".mc4wp-notices");if(!r){(r=document.createElement("div")).className="mc4wp-notices";var n=document.querySelector("h1, h2");n.parentNode.insertBefore(r,n.nextSibling)}r.innerHTML=e}t.exports={init:function(r,n){var e=function(){-1<r.getValue().toLowerCase().indexOf('name="groupings')?o("deprecated_groupings","Your form contains old style <code>GROUPINGS</code> fields. <br /><br />Please remove these fields from your form and then re-add them through the available field buttons to make sure your data is getting through to MailChimp correctly."):a("deprecated_groupings")},t=function(){var e=n.getAllWhere("forceRequired",!0).filter(function(e){return!r.containsField(e.name().toUpperCase())}),t="<strong>Heads up!</strong> Your form is missing list fields that are required in MailChimp. Either add these fields to your form or mark them as optional in MailChimp.";t+='<br /><ul class="ul-square" style="margin-bottom: 0;"><li>'+e.map(function(e){return e.title()}).join("</li><li>")+"</li></ul>",0<e.length?o("required_fields_missing",t):a("required_fields_missing")};e(),r.on("focus",e),r.on("blur",e),t(),r.on("blur",t),r.on("focus",t)}}},{}],10:[function(e,t,r){"use strict";t.exports=function(r,n){var i,o;function a(){document.removeEventListener("keydown",l),window.removeEventListener("resize",s),o()}function l(e){27==(e=e||window.event).keyCode&&a(),13==e.keyCode&&e.preventDefault()}function s(){if(i){var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,t=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,r=(e-i.clientWidth-40)/2,n=(t-i.clientHeight-40)/2;i.style.left=(0<r?r:0)+"px",i.style.top=(0<n?n:0)+"px"}}function c(e){i=e.dom,s()}return function(e,t){return o=t,{oncreate:function(){document.addEventListener("keydown",l),window.addEventListener("resize",s)},onremove:function(){document.removeEventListener("keydown",l),window.removeEventListener("resize",s)},view:function(){return[r("div.overlay-wrap",r("div.overlay",{oncreate:c},[r("span",{class:"close dashicons dashicons-no",title:n.close,onclick:a}),e])),r("div.overlay-background",{title:n.close,onclick:a})]}}}}},{}],11:[function(e,t,r){"use strict";var n=window.mc4wp_forms_i18n,i=window.mc4wp.deps.mithril,o=mc4wp.events,a=mc4wp.settings,l=mc4wp.helpers,s=mc4wp.tabs,c=e("./admin/form-watcher.js"),u=e("./admin/form-editor.js"),d=e("./admin/field-helper.js"),f=e("./admin/fields-factory.js"),h=e("./admin/fields.js")(i,o),p=window.formEditor=u,m=(new c(i,formEditor,a,h,o,l),new d(i,s,formEditor,h,o,n)),g=e("./admin/notices");i.mount(document.getElementById("mc4wp-field-wizard"),m);var v=new f(h,n);o.on("selectedLists.change",v.registerListsFields),v.registerListsFields(a.getSelectedLists()),v.registerCustomFields(mc4wp_vars.mailchimp.lists),window.setTimeout(function(){i.redraw()},2e3),g.init(p,h),window.mc4wp=window.mc4wp||{},window.mc4wp.forms=window.mc4wp.forms||{},window.mc4wp.forms.editor=p,window.mc4wp.forms.fields=h},{"./admin/field-helper.js":4,"./admin/fields-factory.js":5,"./admin/fields.js":6,"./admin/form-editor.js":7,"./admin/form-watcher.js":8,"./admin/notices":9}],12:[function(e,t,r){var n;n=function(y){y.defineOption("autoCloseTags",!1,function(e,t,r){if(r!=y.Init&&r&&e.removeKeyMap("autoCloseTags"),t){var n={name:"autoCloseTags"};("object"!=typeof t||t.whenClosing)&&(n["'/'"]=function(e){return(t=e).getOption("disableInput")?y.Pass:i(t,!0);var t}),("object"!=typeof t||t.whenOpening)&&(n["'>'"]=function(e){return function(e){if(e.getOption("disableInput"))return y.Pass;for(var t=e.listSelections(),r=[],n=e.getOption("autoCloseTags"),i=0;i<t.length;i++){if(!t[i].empty())return y.Pass;var o=t[i].head,a=e.getTokenAt(o),l=y.innerMode(e.getMode(),a.state),s=l.state;if("xml"!=l.mode.name||!s.tagName)return y.Pass;var c="html"==l.mode.configuration,u="object"==typeof n&&n.dontCloseTags||c&&b,d="object"==typeof n&&n.indentTags||c&&w,f=s.tagName;a.end>o.ch&&(f=f.slice(0,f.length-a.end+o.ch));var h=f.toLowerCase();if(!f||"string"==a.type&&(a.end!=o.ch||!/[\"\']/.test(a.string.charAt(a.string.length-1))||1==a.string.length)||"tag"==a.type&&"closeTag"==s.type||a.string.indexOf("/")==a.string.length-1||u&&-1<x(u,h)||k(e,f,o,s,!0))return y.Pass;var p=d&&-1<x(d,h);r[i]={indent:p,text:">"+(p?"\n\n":"")+"</"+f+">",newPos:p?y.Pos(o.line+1,0):y.Pos(o.line,o.ch+1)}}for(var m="object"==typeof n&&n.dontIndentOnAutoClose,i=t.length-1;0<=i;i--){var g=r[i];e.replaceRange(g.text,t[i].head,t[i].anchor,"+insert");var v=e.listSelections().slice(0);v[i]={head:g.newPos,anchor:g.newPos},e.setSelections(v),!m&&g.indent&&(e.indentLine(g.newPos.line,null,!0),e.indentLine(g.newPos.line+1,null,!0))}}(e)}),e.addKeyMap(n)}});var b=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],w=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];function i(e,t){for(var r=e.listSelections(),n=[],i=t?"/":"</",o=e.getOption("autoCloseTags"),a="object"==typeof o&&o.dontIndentOnSlash,l=0;l<r.length;l++){if(!r[l].empty())return y.Pass;var s,c=r[l].head,u=e.getTokenAt(c),d=y.innerMode(e.getMode(),u.state),f=d.state;if(t&&("string"==u.type||"<"!=u.string.charAt(0)||u.start!=c.ch-1))return y.Pass;if("xml"!=d.mode.name)if("htmlmixed"==e.getMode().name&&"javascript"==d.mode.name)s=i+"script";else{if("htmlmixed"!=e.getMode().name||"css"!=d.mode.name)return y.Pass;s=i+"style"}else{if(!f.context||!f.context.tagName||k(e,f.context.tagName,c,f))return y.Pass;s=i+f.context.tagName}">"!=e.getLine(c.line).charAt(u.end)&&(s+=">"),n[l]=s}if(e.replaceSelections(n),r=e.listSelections(),!a)for(l=0;l<r.length;l++)(l==r.length-1||r[l].head.line<r[l+1].head.line)&&e.indentLine(r[l].head.line)}function x(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r<n;++r)if(e[r]==t)return r;return-1}function k(e,t,r,n,i){if(!y.scanForClosingTag)return!1;var o=Math.min(e.lastLine()+1,r.line+500),a=y.scanForClosingTag(e,r,null,o);if(!a||a.tag!=t)return!1;for(var l=n.context,s=i?1:0;l&&l.tagName==t;l=l.prev)++s;r=a.to;for(var c=1;c<s;c++){var u=y.scanForClosingTag(e,r,null,o);if(!u||u.tag!=t)return!1;r=u.to}return!0}y.commands.closeTag=function(e){return i(e)}},"object"==typeof r&&"object"==typeof t?n(e("../../lib/codemirror"),e("../fold/xml-fold")):"function"==typeof o&&o.amd?o(["../../lib/codemirror","../fold/xml-fold"],n):n(CodeMirror)},{"../../lib/codemirror":17,"../fold/xml-fold":15}],13:[function(e,t,r){var n;n=function(n){var u=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),m=n.Pos,g={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};function d(e,t,r){var n=e.getLineHandle(t.line),i=t.ch-1,o=r&&r.afterCursor;null==o&&(o=/(^| )cm-fat-cursor($| )/.test(e.getWrapperElement().className));var a=!o&&0<=i&&g[n.text.charAt(i)]||g[n.text.charAt(++i)];if(!a)return null;var l=">"==a.charAt(1)?1:-1;if(r&&r.strict&&0<l!=(i==t.ch))return null;var s=e.getTokenTypeAt(m(t.line,i+1)),c=f(e,m(t.line,i+(0<l?1:0)),l,s||null,r);return null==c?null:{from:m(t.line,i),to:c&&c.pos,match:c&&c.ch==a.charAt(0),forward:0<l}}function f(e,t,r,n,i){for(var o=i&&i.maxScanLineLength||1e4,a=i&&i.maxScanLines||1e3,l=[],s=i&&i.bracketRegex?i.bracketRegex:/[(){}[\]]/,c=0<r?Math.min(t.line+a,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-a),u=t.line;u!=c;u+=r){var d=e.getLine(u);if(d){var f=0<r?0:d.length-1,h=0<r?d.length:-1;if(!(d.length>o))for(u==t.line&&(f=t.ch-(r<0?1:0));f!=h;f+=r){var p=d.charAt(f);if(s.test(p)&&(void 0===n||e.getTokenTypeAt(m(u,f+1))==n))if(">"==g[p].charAt(1)==0<r)l.push(p);else{if(!l.length)return{pos:m(u,f),ch:p};l.pop()}}}}return u-r!=(0<r?e.lastLine():e.firstLine())&&null}function t(e,t,r){for(var n=e.state.matchBrackets.maxHighlightLineLength||1e3,i=[],o=e.listSelections(),a=0;a<o.length;a++){var l=o[a].empty()&&d(e,o[a].head,r);if(l&&e.getLine(l.from.line).length<=n){var s=l.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";i.push(e.markText(l.from,m(l.from.line,l.from.ch+1),{className:s})),l.to&&e.getLine(l.to.line).length<=n&&i.push(e.markText(l.to,m(l.to.line,l.to.ch+1),{className:s}))}}if(i.length){u&&e.state.focused&&e.focus();var c=function(){e.operation(function(){for(var e=0;e<i.length;e++)i[e].clear()})};if(!t)return c;setTimeout(c,800)}}function i(e){e.operation(function(){e.state.matchBrackets.currentlyHighlighted&&(e.state.matchBrackets.currentlyHighlighted(),e.state.matchBrackets.currentlyHighlighted=null),e.state.matchBrackets.currentlyHighlighted=t(e,!1,e.state.matchBrackets)})}n.defineOption("matchBrackets",!1,function(e,t,r){r&&r!=n.Init&&(e.off("cursorActivity",i),e.state.matchBrackets&&e.state.matchBrackets.currentlyHighlighted&&(e.state.matchBrackets.currentlyHighlighted(),e.state.matchBrackets.currentlyHighlighted=null)),t&&(e.state.matchBrackets="object"==typeof t?t:{},e.on("cursorActivity",i))}),n.defineExtension("matchBrackets",function(){t(this,!0)}),n.defineExtension("findMatchingBracket",function(e,t,r){return(r||"boolean"==typeof t)&&(t=r?(r.strict=t,r):t?{strict:!0}:null),d(this,e,t)}),n.defineExtension("scanForBracket",function(e,t,r,n){return f(this,e,t,r,n)})},"object"==typeof r&&"object"==typeof t?n(e("../../lib/codemirror")):"function"==typeof o&&o.amd?o(["../../lib/codemirror"],n):n(CodeMirror)},{"../../lib/codemirror":17}],14:[function(e,t,r){var n;n=function(a){"use strict";function l(e){e.state.tagHit&&e.state.tagHit.clear(),e.state.tagOther&&e.state.tagOther.clear(),e.state.tagHit=e.state.tagOther=null}function n(o){o.state.failedTagMatch=!1,o.operation(function(){if(l(o),!o.somethingSelected()){var e=o.getCursor(),t=o.getViewport();t.from=Math.min(t.from,e.line),t.to=Math.max(e.line+1,t.to);var r=a.findMatchingTag(o,e,t);if(r){if(o.state.matchBothTags){var n="open"==r.at?r.open:r.close;n&&(o.state.tagHit=o.markText(n.from,n.to,{className:"CodeMirror-matchingtag"}))}var i="close"==r.at?r.open:r.close;i?o.state.tagOther=o.markText(i.from,i.to,{className:"CodeMirror-matchingtag"}):o.state.failedTagMatch=!0}}})}function i(e){e.state.failedTagMatch&&n(e)}a.defineOption("matchTags",!1,function(e,t,r){r&&r!=a.Init&&(e.off("cursorActivity",n),e.off("viewportChange",i),l(e)),t&&(e.state.matchBothTags="object"==typeof t&&t.bothTags,e.on("cursorActivity",n),e.on("viewportChange",i),n(e))}),a.commands.toMatchingTag=function(e){var t=a.findMatchingTag(e,e.getCursor());if(t){var r="close"==t.at?t.open:t.close;r&&e.extendSelection(r.to,r.from)}}},"object"==typeof r&&"object"==typeof t?n(e("../../lib/codemirror"),e("../fold/xml-fold")):"function"==typeof o&&o.amd?o(["../../lib/codemirror","../fold/xml-fold"],n):n(CodeMirror)},{"../../lib/codemirror":17,"../fold/xml-fold":15}],15:[function(e,t,r){var n;n=function(e){"use strict";var s=e.Pos;function c(e,t){return e.line-t.line||e.ch-t.ch}var t="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n=new RegExp("<(/?)(["+t+"][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*)","g");function u(e,t,r,n){this.line=t,this.ch=r,this.cm=e,this.text=e.getLine(t),this.min=n?Math.max(n.from,e.firstLine()):e.firstLine(),this.max=n?Math.min(n.to-1,e.lastLine()):e.lastLine()}function i(e,t){var r=e.cm.getTokenTypeAt(s(e.line,t));return r&&/\btag\b/.test(r)}function o(e){if(!(e.line>=e.max))return e.ch=0,e.text=e.cm.getLine(++e.line),!0}function a(e){if(!(e.line<=e.min))return e.text=e.cm.getLine(--e.line),e.ch=e.text.length,!0}function d(e){for(;;){var t=e.text.indexOf(">",e.ch);if(-1==t){if(o(e))continue;return}if(i(e,t+1)){var r=e.text.lastIndexOf("/",t),n=-1<r&&!/\S/.test(e.text.slice(r+1,t));return e.ch=t+1,n?"selfClose":"regular"}e.ch=t+1}}function f(e){for(;;){var t=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(-1==t){if(a(e))continue;return}if(i(e,t+1)){n.lastIndex=t,e.ch=t;var r=n.exec(e.text);if(r&&r.index==t)return r}else e.ch=t}}function h(e){for(;;){n.lastIndex=e.ch;var t=n.exec(e.text);if(!t){if(o(e))continue;return}if(i(e,t.index+1))return e.ch=t.index+t[0].length,t;e.ch=t.index+1}}function p(e){for(;;){var t=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(-1==t){if(a(e))continue;return}if(i(e,t+1)){var r=e.text.lastIndexOf("/",t),n=-1<r&&!/\S/.test(e.text.slice(r+1,t));return e.ch=t+1,n?"selfClose":"regular"}e.ch=t}}function m(e,t){for(var r=[];;){var n,i=h(e),o=e.line,a=e.ch-(i?i[0].length:0);if(!i||!(n=d(e)))return;if("selfClose"!=n)if(i[1]){for(var l=r.length-1;0<=l;--l)if(r[l]==i[2]){r.length=l;break}if(l<0&&(!t||t==i[2]))return{tag:i[2],from:s(o,a),to:s(e.line,e.ch)}}else r.push(i[2])}}function g(e,t){for(var r=[];;){var n=p(e);if(!n)return;if("selfClose"!=n){var i=e.line,o=e.ch,a=f(e);if(!a)return;if(a[1])r.push(a[2]);else{for(var l=r.length-1;0<=l;--l)if(r[l]==a[2]){r.length=l;break}if(l<0&&(!t||t==a[2]))return{tag:a[2],from:s(e.line,e.ch),to:s(i,o)}}}else f(e)}}e.registerHelper("fold","xml",function(e,t){for(var r=new u(e,t.line,0);;){var n=h(r);if(!n||r.line!=t.line)return;var i=d(r);if(!i)return;if(!n[1]&&"selfClose"!=i){var o=s(r.line,r.ch),a=m(r,n[2]);return a&&0<c(a.from,o)?{from:o,to:a.from}:null}}}),e.findMatchingTag=function(e,t,r){var n=new u(e,t.line,t.ch,r);if(-1!=n.text.indexOf(">")||-1!=n.text.indexOf("<")){var i=d(n),o=i&&s(n.line,n.ch),a=i&&f(n);if(i&&a&&!(0<c(n,t))){var l={from:s(n.line,n.ch),to:o,tag:a[2]};return"selfClose"==i?{open:l,close:null,at:"open"}:a[1]?{open:g(n,a[2]),close:l,at:"close"}:{open:l,close:m(n=new u(e,o.line,o.ch,r),a[2]),at:"open"}}}},e.findEnclosingTag=function(e,t,r,n){for(var i=new u(e,t.line,t.ch,r);;){var o=g(i,n);if(!o)break;var a=m(new u(e,t.line,t.ch,r),o.tag);if(a)return{open:o,close:a}}},e.scanForClosingTag=function(e,t,r,n){return m(new u(e,t.line,t.ch,n?{from:0,to:n}:null),r)}},"object"==typeof r&&"object"==typeof t?n(e("../../lib/codemirror")):"function"==typeof o&&o.amd?o(["../../lib/codemirror"],n):n(CodeMirror)},{"../../lib/codemirror":17}],16:[function(e,t,r){var n;n=function(i){"use strict";var l="CodeMirror-activeline",s="CodeMirror-activeline-background",c="CodeMirror-activeline-gutter";function u(e){for(var t=0;t<e.state.activeLines.length;t++)e.removeLineClass(e.state.activeLines[t],"wrap",l),e.removeLineClass(e.state.activeLines[t],"background",s),e.removeLineClass(e.state.activeLines[t],"gutter",c)}function o(t,e){for(var r=[],n=0;n<e.length;n++){var i=e[n],o=t.getOption("styleActiveLine");if("object"==typeof o&&o.nonEmpty?i.anchor.line==i.head.line:i.empty()){var a=t.getLineHandleVisualStart(i.head.line);r[r.length-1]!=a&&r.push(a)}}(function(e,t){if(e.length!=t.length)return!1;for(var r=0;r<e.length;r++)if(e[r]!=t[r])return!1;return!0})(t.state.activeLines,r)||t.operation(function(){u(t);for(var e=0;e<r.length;e++)t.addLineClass(r[e],"wrap",l),t.addLineClass(r[e],"background",s),t.addLineClass(r[e],"gutter",c);t.state.activeLines=r})}function a(e,t){o(e,t.ranges)}i.defineOption("styleActiveLine",!1,function(e,t,r){var n=r!=i.Init&&r;t!=n&&(n&&(e.off("beforeSelectionChange",a),u(e),delete e.state.activeLines),t&&(e.state.activeLines=[],o(e,e.listSelections()),e.on("beforeSelectionChange",a)))})},"object"==typeof r&&"object"==typeof t?n(e("../../lib/codemirror")):"function"==typeof o&&o.amd?o(["../../lib/codemirror"],n):n(CodeMirror)},{"../../lib/codemirror":17}],17:[function(e,t,r){var n,i;n=this,i=function(){"use strict";var e=navigator.userAgent,t=navigator.platform,m=/gecko\/\d/i.test(e),r=/MSIE \d/.test(e),n=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),i=/Edge\/(\d+)/.exec(e),x=r||n||i,k=x&&(r?document.documentMode||6:+(i||n)[1]),b=!i&&/WebKit\//.test(e),o=b&&/Qt\/\d+\.\d+/.test(e),a=!i&&/Chrome\//.test(e),g=/Opera\//.test(e),s=/Apple Computer/.test(navigator.vendor),l=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),c=/PhantomJS/.test(e),u=!i&&/AppleWebKit/.test(e)&&/Mobile\/\w+/.test(e),d=/Android/.test(e),f=u||d||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),w=u||/Mac/.test(t),h=/\bCrOS\b/.test(e),p=/win/i.test(t),v=g&&e.match(/Version\/(\d*\.\d*)/);v&&(v=Number(v[1])),v&&15<=v&&(b=!(g=!1));var y=w&&(o||g&&(null==v||v<12.11)),C=m||x&&9<=k;function T(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var S,L=function(e,t){var r=e.className,n=T(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function M(e){for(var t=e.childNodes.length;0<t;--t)e.removeChild(e.firstChild);return e}function A(e,t){return M(e).appendChild(t)}function N(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)i.appendChild(t[o]);return i}function O(e,t,r,n){var i=N(e,t,r,n);return i.setAttribute("role","presentation"),i}function _(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function E(){var t;try{t=document.activeElement}catch(e){t=document.body||null}for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function D(e,t){var r=e.className;T(t).test(r)||(e.className+=(r?" ":"")+t)}function F(e,t){for(var r=e.split(" "),n=0;n<r.length;n++)r[n]&&!T(r[n]).test(t)&&(t+=" "+r[n]);return t}S=document.createRange?function(e,t,r,n){var i=document.createRange();return i.setEnd(n||e,r),i.setStart(e,t),i}:function(e,t,r){var n=document.body.createTextRange();try{n.moveToElementText(e.parentNode)}catch(e){return n}return n.collapse(!0),n.moveEnd("character",r),n.moveStart("character",t),n};var W=function(e){e.select()};function z(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function P(e,t,r){for(var n in t||(t={}),e)!e.hasOwnProperty(n)||!1===r&&t.hasOwnProperty(n)||(t[n]=e[n]);return t}function H(e,t,r,n,i){null==t&&-1==(t=e.search(/[^\s\u00a0]/))&&(t=e.length);for(var o=n||0,a=i||0;;){var l=e.indexOf("\t",o);if(l<0||t<=l)return a+(t-o);a+=l-o,a+=r-a%r,o=l+1}}u?W=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:x&&(W=function(e){try{e.select()}catch(e){}});var I=function(){this.id=null};function R(e,t){for(var r=0;r<e.length;++r)if(e[r]==t)return r;return-1}I.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var j=30,B={toString:function(){return"CodeMirror.Pass"}},q={scroll:!1},U={origin:"*mouse"},K={origin:"+move"};function V(e,t,r){for(var n=0,i=0;;){var o=e.indexOf("\t",n);-1==o&&(o=e.length);var a=o-n;if(o==e.length||t<=i+a)return n+Math.min(a,t-i);if(i+=o-n,n=o+1,t<=(i+=r-i%r))return n}}var G=[""];function $(e){for(;G.length<=e;)G.push(Y(G)+" ");return G[e]}function Y(e){return e[e.length-1]}function X(e,t){for(var r=[],n=0;n<e.length;n++)r[n]=t(e[n],n);return r}function Z(){}function J(e,t){var r;return r=Object.create?Object.create(e):(Z.prototype=e,new Z),t&&P(t,r),r}var Q=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function ee(e){return/\w/.test(e)||"€"<e&&(e.toUpperCase()!=e.toLowerCase()||Q.test(e))}function te(e,t){return t?!!(-1<t.source.indexOf("\\w")&&ee(e))||t.test(e):ee(e)}function re(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ne=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ie(e){return 768<=e.charCodeAt(0)&&ne.test(e)}function oe(e,t,r){for(;(r<0?0<t:t<e.length)&&ie(e.charAt(t));)t+=r;return t}function ae(e,t,r){for(var n=r<t?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}function le(e,t,r){var n=this;this.input=r,n.scrollbarFiller=N("div",null,"CodeMirror-scrollbar-filler"),n.scrollbarFiller.setAttribute("cm-not-content","true"),n.gutterFiller=N("div",null,"CodeMirror-gutter-filler"),n.gutterFiller.setAttribute("cm-not-content","true"),n.lineDiv=O("div",null,"CodeMirror-code"),n.selectionDiv=N("div",null,null,"position: relative; z-index: 1"),n.cursorDiv=N("div",null,"CodeMirror-cursors"),n.measure=N("div",null,"CodeMirror-measure"),n.lineMeasure=N("div",null,"CodeMirror-measure"),n.lineSpace=O("div",[n.measure,n.lineMeasure,n.selectionDiv,n.cursorDiv,n.lineDiv],null,"position: relative; outline: none");var i=O("div",[n.lineSpace],"CodeMirror-lines");n.mover=N("div",[i],null,"position: relative"),n.sizer=N("div",[n.mover],"CodeMirror-sizer"),n.sizerWidth=null,n.heightForcer=N("div",null,null,"position: absolute; height: "+j+"px; width: 1px;"),n.gutters=N("div",null,"CodeMirror-gutters"),n.lineGutter=null,n.scroller=N("div",[n.sizer,n.heightForcer,n.gutters],"CodeMirror-scroll"),n.scroller.setAttribute("tabIndex","-1"),n.wrapper=N("div",[n.scrollbarFiller,n.gutterFiller,n.scroller],"CodeMirror"),x&&k<8&&(n.gutters.style.zIndex=-1,n.scroller.style.paddingRight=0),b||m&&f||(n.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(n.wrapper):e(n.wrapper)),n.viewFrom=n.viewTo=t.first,n.reportedViewFrom=n.reportedViewTo=t.first,n.view=[],n.renderedView=null,n.externalMeasured=null,n.viewOffset=0,n.lastWrapHeight=n.lastWrapWidth=0,n.updateLineNumbers=null,n.nativeBarWidth=n.barHeight=n.barWidth=0,n.scrollbarsClipped=!1,n.lineNumWidth=n.lineNumInnerWidth=n.lineNumChars=null,n.alignWidgets=!1,n.cachedCharWidth=n.cachedTextHeight=n.cachedPaddingH=null,n.maxLine=null,n.maxLineLength=0,n.maxLineChanged=!1,n.wheelDX=n.wheelDY=n.wheelStartX=n.wheelStartY=null,n.shift=!1,n.selForContextMenu=null,n.activeTouch=null,r.init(n)}function se(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t<o){r=i;break}t-=o}return r.lines[t]}function ce(e,r,n){var i=[],o=r.line;return e.iter(r.line,n.line+1,function(e){var t=e.text;o==n.line&&(t=t.slice(0,n.ch)),o==r.line&&(t=t.slice(r.ch)),i.push(t),++o}),i}function ue(e,t,r){var n=[];return e.iter(t,r,function(e){n.push(e.text)}),n}function de(e,t){var r=t-e.height;if(r)for(var n=e;n;n=n.parent)n.height+=r}function fe(e){if(null==e.parent)return null;for(var t=e.parent,r=R(t.lines,e),n=t.parent;n;n=(t=n).parent)for(var i=0;n.children[i]!=t;++i)r+=n.children[i].chunkSize();return r+t.first}function he(e,t){var r=e.first;e:do{for(var n=0;n<e.children.length;++n){var i=e.children[n],o=i.height;if(t<o){e=i;continue e}t-=o,r+=i.chunkSize()}return r}while(!e.lines);for(var a=0;a<e.lines.length;++a){var l=e.lines[a].height;if(t<l)break;t-=l}return r+a}function pe(e,t){return t>=e.first&&t<e.first+e.size}function me(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function ge(e,t,r){if(void 0===r&&(r=null),!(this instanceof ge))return new ge(e,t,r);this.line=e,this.ch=t,this.sticky=r}function ve(e,t){return e.line-t.line||e.ch-t.ch}function ye(e,t){return e.sticky==t.sticky&&0==ve(e,t)}function be(e){return ge(e.line,e.ch)}function we(e,t){return ve(e,t)<0?t:e}function xe(e,t){return ve(e,t)<0?e:t}function ke(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function Ce(e,t){if(t.line<e.first)return ge(e.first,0);var r,n,i,o=e.first+e.size-1;return t.line>o?ge(o,se(e,o).text.length):(n=se(e,(r=t).line).text.length,null==(i=r.ch)||n<i?ge(r.line,n):i<0?ge(r.line,0):r)}function Te(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=Ce(e,t[n]);return r}var Se=!1,Le=!1;function Me(e,t,r){this.marker=e,this.from=t,this.to=r}function Ae(e,t){if(e)for(var r=0;r<e.length;++r){var n=e[r];if(n.marker==t)return n}}function Oe(e,t){for(var r,n=0;n<e.length;++n)e[n]!=t&&(r||(r=[])).push(e[n]);return r}function Ne(e,t){if(t.full)return null;var r=pe(e,t.from.line)&&se(e,t.from.line).markedSpans,n=pe(e,t.to.line)&&se(e,t.to.line).markedSpans;if(!r&&!n)return null;var i=t.from.ch,o=t.to.ch,a=0==ve(t.from,t.to),l=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],a=o.marker;if(null==o.from||(a.inclusiveLeft?o.from<=t:o.from<t)||o.from==t&&"bookmark"==a.type&&(!r||!o.marker.insertLeft)){var l=null==o.to||(a.inclusiveRight?o.to>=t:o.to>t);(n||(n=[])).push(new Me(a,o.from,l?null:o.to))}}return n}(r,i,a),s=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],a=o.marker;if(null==o.to||(a.inclusiveRight?o.to>=t:o.to>t)||o.from==t&&"bookmark"==a.type&&(!r||o.marker.insertLeft)){var l=null==o.from||(a.inclusiveLeft?o.from<=t:o.from<t);(n||(n=[])).push(new Me(a,l?null:o.from-t,null==o.to?null:o.to-t))}}return n}(n,o,a),c=1==t.text.length,u=Y(t.text).length+(c?i:0);if(l)for(var d=0;d<l.length;++d){var f=l[d];if(null==f.to){var h=Ae(s,f.marker);h?c&&(f.to=null==h.to?null:h.to+u):f.to=i}}if(s)for(var p=0;p<s.length;++p){var m=s[p];if(null!=m.to&&(m.to+=u),null==m.from)Ae(l,m.marker)||(m.from=u,c&&(l||(l=[])).push(m));else m.from+=u,c&&(l||(l=[])).push(m)}l&&(l=_e(l)),s&&s!=l&&(s=_e(s));var g=[l];if(!c){var v,y=t.text.length-2;if(0<y&&l)for(var b=0;b<l.length;++b)null==l[b].to&&(v||(v=[])).push(new Me(l[b].marker,null,null));for(var w=0;w<y;++w)g.push(v);g.push(s)}return g}function _e(e){for(var t=0;t<e.length;++t){var r=e[t];null!=r.from&&r.from==r.to&&!1!==r.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function Ee(e){var t=e.markedSpans;if(t){for(var r=0;r<t.length;++r)t[r].marker.detachLine(e);e.markedSpans=null}}function De(e,t){if(t){for(var r=0;r<t.length;++r)t[r].marker.attachLine(e);e.markedSpans=t}}function Fe(e){return e.inclusiveLeft?-1:0}function We(e){return e.inclusiveRight?1:0}function ze(e,t){var r=e.lines.length-t.lines.length;if(0!=r)return r;var n=e.find(),i=t.find(),o=ve(n.from,i.from)||Fe(e)-Fe(t);if(o)return-o;var a=ve(n.to,i.to)||We(e)-We(t);return a||t.id-e.id}function Pe(e,t){var r,n=Le&&e.markedSpans;if(n)for(var i=void 0,o=0;o<n.length;++o)(i=n[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!r||ze(r,i.marker)<0)&&(r=i.marker);return r}function He(e){return Pe(e,!0)}function Ie(e){return Pe(e,!1)}function Re(e,t){var r,n=Le&&e.markedSpans;if(n)for(var i=0;i<n.length;++i){var o=n[i];o.marker.collapsed&&(null==o.from||o.from<t)&&(null==o.to||o.to>t)&&(!r||ze(r,o.marker)<0)&&(r=o.marker)}return r}function je(e,t,r,n,i){var o=se(e,t),a=Le&&o.markedSpans;if(a)for(var l=0;l<a.length;++l){var s=a[l];if(s.marker.collapsed){var c=s.marker.find(0),u=ve(c.from,r)||Fe(s.marker)-Fe(i),d=ve(c.to,n)||We(s.marker)-We(i);if(!(0<=u&&d<=0||u<=0&&0<=d)&&(u<=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?0<=ve(c.to,r):0<ve(c.to,r))||0<=u&&(s.marker.inclusiveRight&&i.inclusiveLeft?ve(c.from,n)<=0:ve(c.from,n)<0)))return!0}}}function Be(e){for(var t;t=He(e);)e=t.find(-1,!0).line;return e}function qe(e,t){var r=se(e,t),n=Be(r);return r==n?t:fe(n)}function Ue(e,t){if(t>e.lastLine())return t;var r,n=se(e,t);if(!Ke(e,n))return t;for(;r=Ie(n);)n=r.find(1,!0).line;return fe(n)+1}function Ke(e,t){var r=Le&&t.markedSpans;if(r)for(var n=void 0,i=0;i<r.length;++i)if((n=r[i]).marker.collapsed){if(null==n.from)return!0;if(!n.marker.widgetNode&&0==n.from&&n.marker.inclusiveLeft&&Ve(e,t,n))return!0}}function Ve(e,t,r){if(null==r.to){var n=r.marker.find(1,!0);return Ve(e,n.line,Ae(n.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==t.text.length)return!0;for(var i=void 0,o=0;o<t.markedSpans.length;++o)if((i=t.markedSpans[o]).marker.collapsed&&!i.marker.widgetNode&&i.from==r.to&&(null==i.to||i.to!=r.from)&&(i.marker.inclusiveLeft||r.marker.inclusiveRight)&&Ve(e,t,i))return!0}function Ge(e){for(var t=0,r=(e=Be(e)).parent,n=0;n<r.lines.length;++n){var i=r.lines[n];if(i==e)break;t+=i.height}for(var o=r.parent;o;o=(r=o).parent)for(var a=0;a<o.children.length;++a){var l=o.children[a];if(l==r)break;t+=l.height}return t}function $e(e){if(0==e.height)return 0;for(var t,r=e.text.length,n=e;t=He(n);){var i=t.find(0,!0);n=i.from.line,r+=i.from.ch-i.to.ch}for(n=e;t=Ie(n);){var o=t.find(0,!0);r-=n.text.length-o.from.ch,r+=(n=o.to.line).text.length-o.to.ch}return r}function Ye(e){var r=e.display,t=e.doc;r.maxLine=se(t,t.first),r.maxLineLength=$e(r.maxLine),r.maxLineChanged=!0,t.iter(function(e){var t=$e(e);t>r.maxLineLength&&(r.maxLineLength=t,r.maxLine=e)})}var Xe=null;function Ze(e,t,r){var n;Xe=null;for(var i=0;i<e.length;++i){var o=e[i];if(o.from<t&&o.to>t)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:Xe=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:Xe=i)}return null!=n?n:Xe}var Je=function(){var P="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",H="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";var I=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,R=/[stwN]/,j=/[LRr]/,B=/[Lb1n]/,q=/[1n]/;function U(e,t,r){this.level=e,this.from=t,this.to=r}return function(e,t){var r="ltr"==t?"L":"R";if(0==e.length||"ltr"==t&&!I.test(e))return!1;for(var n,i=e.length,o=[],a=0;a<i;++a)o.push((n=e.charCodeAt(a))<=247?P.charAt(n):1424<=n&&n<=1524?"R":1536<=n&&n<=1785?H.charAt(n-1536):1774<=n&&n<=2220?"r":8192<=n&&n<=8203?"w":8204==n?"b":"L");for(var l=0,s=r;l<i;++l){var c=o[l];"m"==c?o[l]=s:s=c}for(var u=0,d=r;u<i;++u){var f=o[u];"1"==f&&"r"==d?o[u]="n":j.test(f)&&"r"==(d=f)&&(o[u]="R")}for(var h=1,p=o[0];h<i-1;++h){var m=o[h];"+"==m&&"1"==p&&"1"==o[h+1]?o[h]="1":","!=m||p!=o[h+1]||"1"!=p&&"n"!=p||(o[h]=p),p=m}for(var g=0;g<i;++g){var v=o[g];if(","==v)o[g]="N";else if("%"==v){var y=void 0;for(y=g+1;y<i&&"%"==o[y];++y);for(var b=g&&"!"==o[g-1]||y<i&&"1"==o[y]?"1":"N",w=g;w<y;++w)o[w]=b;g=y-1}}for(var x=0,k=r;x<i;++x){var C=o[x];"L"==k&&"1"==C?o[x]="L":j.test(C)&&(k=C)}for(var T=0;T<i;++T)if(R.test(o[T])){var S=void 0;for(S=T+1;S<i&&R.test(o[S]);++S);for(var L="L"==(T?o[T-1]:r),M=L==("L"==(S<i?o[S]:r))?L?"L":"R":r,A=T;A<S;++A)o[A]=M;T=S-1}for(var O,N=[],_=0;_<i;)if(B.test(o[_])){var E=_;for(++_;_<i&&B.test(o[_]);++_);N.push(new U(0,E,_))}else{var D=_,F=N.length;for(++_;_<i&&"L"!=o[_];++_);for(var W=D;W<_;)if(q.test(o[W])){D<W&&N.splice(F,0,new U(1,D,W));var z=W;for(++W;W<_&&q.test(o[W]);++W);N.splice(F,0,new U(2,z,W)),D=W}else++W;D<_&&N.splice(F,0,new U(1,D,_))}return"ltr"==t&&(1==N[0].level&&(O=e.match(/^\s+/))&&(N[0].from=O[0].length,N.unshift(new U(0,0,O[0].length))),1==Y(N).level&&(O=e.match(/\s+$/))&&(Y(N).to-=O[0].length,N.push(new U(0,i-O[0].length,i)))),"rtl"==t?N.reverse():N}}();function Qe(e,t){var r=e.order;return null==r&&(r=e.order=Je(e.text,t)),r}var et=[],tt=function(e,t,r){if(e.addEventListener)e.addEventListener(t,r,!1);else if(e.attachEvent)e.attachEvent("on"+t,r);else{var n=e._handlers||(e._handlers={});n[t]=(n[t]||et).concat(r)}};function rt(e,t){return e._handlers&&e._handlers[t]||et}function nt(e,t,r){if(e.removeEventListener)e.removeEventListener(t,r,!1);else if(e.detachEvent)e.detachEvent("on"+t,r);else{var n=e._handlers,i=n&&n[t];if(i){var o=R(i,r);-1<o&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function it(e,t){var r=rt(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i<r.length;++i)r[i].apply(null,n)}function ot(e,t,r){return"string"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),it(e,r||t.type,e,t),dt(t)||t.codemirrorIgnore}function at(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var r=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),n=0;n<t.length;++n)-1==R(r,t[n])&&r.push(t[n])}function lt(e,t){return 0<rt(e,t).length}function st(e){e.prototype.on=function(e,t){tt(this,e,t)},e.prototype.off=function(e,t){nt(this,e,t)}}function ct(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function ut(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function dt(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function ft(e){ct(e),ut(e)}function ht(e){return e.target||e.srcElement}function pt(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),w&&e.ctrlKey&&1==t&&(t=3),t}var mt,gt,vt=function(){if(x&&k<9)return!1;var e=N("div");return"draggable"in e||"dragDrop"in e}();function yt(e){if(null==mt){var t=N("span","​");A(e,N("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(mt=t.offsetWidth<=1&&2<t.offsetHeight&&!(x&&k<8))}var r=mt?N("span","​"):N("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function bt(e){if(null!=gt)return gt;var t=A(e,document.createTextNode("AخA")),r=S(t,0,1).getBoundingClientRect(),n=S(t,1,2).getBoundingClientRect();return M(e),!(!r||r.left==r.right)&&(gt=n.right-r.right<3)}var wt,xt=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),a=o.indexOf("\r");-1!=a?(r.push(o.slice(0,a)),t+=a+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},kt=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},Ct="oncopy"in(wt=N("div"))||(wt.setAttribute("oncopy","return;"),"function"==typeof wt.oncopy),Tt=null;var St={},Lt={};function Mt(e){if("string"==typeof e&&Lt.hasOwnProperty(e))e=Lt[e];else if(e&&"string"==typeof e.name&&Lt.hasOwnProperty(e.name)){var t=Lt[e.name];"string"==typeof t&&(t={name:t}),(e=J(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Mt("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Mt("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function At(e,t){t=Mt(t);var r=St[t.name];if(!r)return At(e,"text/plain");var n=r(e,t);if(Ot.hasOwnProperty(t.name)){var i=Ot[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var a in t.modeProps)n[a]=t.modeProps[a];return n}var Ot={};function Nt(e,t){P(t,Ot.hasOwnProperty(e)?Ot[e]:Ot[e]={})}function _t(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Et(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Dt(e,t,r){return!e.startState||e.startState(t,r)}var Ft=function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};Ft.prototype.eol=function(){return this.pos>=this.string.length},Ft.prototype.sol=function(){return this.pos==this.lineStart},Ft.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Ft.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},Ft.prototype.eat=function(e){var t=this.string.charAt(this.pos);if("string"==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},Ft.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},Ft.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Ft.prototype.skipToEnd=function(){this.pos=this.string.length},Ft.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(-1<t)return this.pos=t,!0},Ft.prototype.backUp=function(e){this.pos-=e},Ft.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=H(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?H(this.string,this.lineStart,this.tabSize):0)},Ft.prototype.indentation=function(){return H(this.string,null,this.tabSize)-(this.lineStart?H(this.string,this.lineStart,this.tabSize):0)},Ft.prototype.match=function(e,t,r){if("string"!=typeof e){var n=this.string.slice(this.pos).match(e);return n&&0<n.index?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},Ft.prototype.current=function(){return this.string.slice(this.start,this.pos)},Ft.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Ft.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Ft.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var Wt=function(e,t){this.state=e,this.lookAhead=t},zt=function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function Pt(t,r,n,e){var s=[t.state.modeGen],i={};Vt(t,r.text,t.doc.mode,n,function(e,t){return s.push(e,t)},i,e);for(var c=n.state,o=function(e){n.baseTokens=s;var o=t.state.overlays[e],a=1,l=0;n.state=!0,Vt(t,r.text,o.mode,n,function(e,t){for(var r=a;l<e;){var n=s[a];e<n&&s.splice(a,1,e,s[a+1],n),a+=2,l=Math.min(e,n)}if(t)if(o.opaque)s.splice(r,a-r,e,"overlay "+t),a=r+2;else for(;r<a;r+=2){var i=s[r+1];s[r+1]=(i?i+" ":"")+"overlay "+t}},i),n.state=c,n.baseTokens=null,n.baseTokenPos=1},a=0;a<t.state.overlays.length;++a)o(a);return{styles:s,classes:i.bgClass||i.textClass?i:null}}function Ht(e,t,r){if(!t.styles||t.styles[0]!=e.state.modeGen){var n=It(e,fe(t)),i=t.text.length>e.options.maxHighlightLength&&_t(e.doc.mode,n.state),o=Pt(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function It(r,n,e){var t=r.doc,i=r.display;if(!t.mode.startState)return new zt(t,!0,n);var o=function(e,t,r){for(var n,i,o=e.doc,a=r?-1:t-(e.doc.mode.innerMode?1e3:100),l=t;a<l;--l){if(l<=o.first)return o.first;var s=se(o,l-1),c=s.stateAfter;if(c&&(!r||l+(c instanceof Wt?c.lookAhead:0)<=o.modeFrontier))return l;var u=H(s.text,null,e.options.tabSize);(null==i||u<n)&&(i=l-1,n=u)}return i}(r,n,e),a=o>t.first&&se(t,o-1).stateAfter,l=a?zt.fromSaved(t,a,o):new zt(t,Dt(t.mode),o);return t.iter(o,n,function(e){Rt(r,e.text,l);var t=l.line;e.stateAfter=t==n-1||t%5==0||t>=i.viewFrom&&t<i.viewTo?l.save():null,l.nextLine()}),e&&(t.modeFrontier=l.line),l}function Rt(e,t,r,n){var i=e.doc.mode,o=new Ft(t,e.options.tabSize,r);for(o.start=o.pos=n||0,""==t&&jt(i,r.state);!o.eol();)Bt(i,o,r.state),o.start=o.pos}function jt(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){var r=Et(e,t);return r.mode.blankLine?r.mode.blankLine(r.state):void 0}}function Bt(e,t,r,n){for(var i=0;i<10;i++){n&&(n[0]=Et(e,r).mode);var o=e.token(t,r);if(t.pos>t.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}zt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},zt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},zt.prototype.nextLine=function(){this.line++,0<this.maxLookAhead&&this.maxLookAhead--},zt.fromSaved=function(e,t,r){return t instanceof Wt?new zt(e,_t(e.mode,t.state),r,t.lookAhead):new zt(e,_t(e.mode,t),r)},zt.prototype.save=function(e){var t=!1!==e?_t(this.doc.mode,this.state):this.state;return 0<this.maxLookAhead?new Wt(t,this.maxLookAhead):t};var qt=function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function Ut(e,t,r,n){var i,o,a=e.doc,l=a.mode,s=se(a,(t=Ce(a,t)).line),c=It(e,t.line,r),u=new Ft(s.text,e.options.tabSize,c);for(n&&(o=[]);(n||u.pos<t.ch)&&!u.eol();)u.start=u.pos,i=Bt(l,u,c.state),n&&o.push(new qt(u,i,_t(a.mode,c.state)));return n?o:new qt(u,i,c.state)}function Kt(e,t){if(e)for(;;){var r=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!r)break;e=e.slice(0,r.index)+e.slice(r.index+r[0].length);var n=r[1]?"bgClass":"textClass";null==t[n]?t[n]=r[2]:new RegExp("(?:^|s)"+r[2]+"(?:$|s)").test(t[n])||(t[n]+=" "+r[2])}return e}function Vt(e,t,r,n,i,o,a){var l=r.flattenSpans;null==l&&(l=e.options.flattenSpans);var s,c=0,u=null,d=new Ft(t,e.options.tabSize,n),f=e.options.addModeClass&&[null];for(""==t&&Kt(jt(r,n.state),o);!d.eol();){if(s=d.pos>e.options.maxHighlightLength?(l=!1,a&&Rt(e,t,n,d.pos),d.pos=t.length,null):Kt(Bt(r,d,n.state,f),o),f){var h=f[0].name;h&&(s="m-"+(s?h+" "+s:h))}if(!l||u!=s){for(;c<d.start;)i(c=Math.min(d.start,c+5e3),u);u=s}d.start=d.pos}for(;c<d.pos;){var p=Math.min(d.pos,c+5e3);i(p,u),c=p}}var Gt=function(e,t,r){this.text=e,De(this,t),this.height=r?r(this):1};Gt.prototype.lineNo=function(){return fe(this)},st(Gt);var $t={},Yt={};function Xt(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?Yt:$t;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function Zt(e,t){var r=O("span",null,null,b?"padding-right: .1px":null),n={pre:O("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,a=void 0;n.pos=0,n.addToken=Qt,bt(e.display.measure)&&(a=Qe(o,e.doc.direction))&&(n.addToken=er(n.addToken,a)),n.map=[],rr(o,n,Ht(e,o,t!=e.display.externalMeasured&&fe(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=F(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=F(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(yt(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(b){var l=n.content.lastChild;(/\bcm-tab\b/.test(l.className)||l.querySelector&&l.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return it(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=F(n.pre.className,n.textClass||"")),n}function Jt(e){var t=N("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Qt(e,t,r,n,i,o,a){if(t){var l,s=e.splitSpaces?function(e,t){if(1<e.length&&!/ /.test(e))return e;for(var r=t,n="",i=0;i<e.length;i++){var o=e.charAt(i);" "!=o||!r||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=" "),n+=o,r=" "==o}return n}(t,e.trailingSpace):t,c=e.cm.state.specialChars,u=!1;if(c.test(t)){l=document.createDocumentFragment();for(var d=0;;){c.lastIndex=d;var f=c.exec(t),h=f?f.index-d:t.length-d;if(h){var p=document.createTextNode(s.slice(d,d+h));x&&k<9?l.appendChild(N("span",[p])):l.appendChild(p),e.map.push(e.pos,e.pos+h,p),e.col+=h,e.pos+=h}if(!f)break;d+=h+1;var m=void 0;if("\t"==f[0]){var g=e.cm.options.tabSize,v=g-e.col%g;(m=l.appendChild(N("span",$(v),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),e.col+=v}else"\r"==f[0]||"\n"==f[0]?(m=l.appendChild(N("span","\r"==f[0]?"␍":"␤","cm-invalidchar"))).setAttribute("cm-text",f[0]):((m=e.cm.options.specialCharPlaceholder(f[0])).setAttribute("cm-text",f[0]),x&&k<9?l.appendChild(N("span",[m])):l.appendChild(m)),e.col+=1;e.map.push(e.pos,e.pos+1,m),e.pos++}}else e.col+=t.length,l=document.createTextNode(s),e.map.push(e.pos,e.pos+t.length,l),x&&k<9&&(u=!0),e.pos+=t.length;if(e.trailingSpace=32==s.charCodeAt(t.length-1),r||n||i||u||o){var y=r||"";n&&(y+=n),i&&(y+=i);var b=N("span",[l],y,o);if(a)for(var w in a)a.hasOwnProperty(w)&&"style"!=w&&"class"!=w&&b.setAttribute(w,a[w]);return e.content.appendChild(b)}e.content.appendChild(l)}}function er(d,f){return function(e,t,r,n,i,o,a){r=r?r+" cm-force-border":"cm-force-border";for(var l=e.pos,s=l+t.length;;){for(var c=void 0,u=0;u<f.length&&!((c=f[u]).to>l&&c.from<=l);u++);if(c.to>=s)return d(e,t,r,n,i,o,a);d(e,t.slice(0,c.to-l),r,n,null,o,a),n=null,t=t.slice(c.to-l),l=c.to}}}function tr(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function rr(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var a,l,s,c,u,d,f,h=i.length,p=0,m=1,g="",v=0;;){if(v==p){s=c=u=l="",d=f=null,v=1/0;for(var y=[],b=void 0,w=0;w<n.length;++w){var x=n[w],k=x.marker;if("bookmark"==k.type&&x.from==p&&k.widgetNode)y.push(k);else if(x.from<=p&&(null==x.to||x.to>p||k.collapsed&&x.to==p&&x.from==p)){if(null!=x.to&&x.to!=p&&v>x.to&&(v=x.to,c=""),k.className&&(s+=" "+k.className),k.css&&(l=(l?l+";":"")+k.css),k.startStyle&&x.from==p&&(u+=" "+k.startStyle),k.endStyle&&x.to==v&&(b||(b=[])).push(k.endStyle,x.to),k.title&&((f||(f={})).title=k.title),k.attributes)for(var C in k.attributes)(f||(f={}))[C]=k.attributes[C];k.collapsed&&(!d||ze(d.marker,k)<0)&&(d=x)}else x.from>p&&v>x.from&&(v=x.from)}if(b)for(var T=0;T<b.length;T+=2)b[T+1]==v&&(c+=" "+b[T]);if(!d||d.from==p)for(var S=0;S<y.length;++S)tr(t,0,y[S]);if(d&&(d.from||0)==p){if(tr(t,(null==d.to?h+1:d.to)-p,d.marker,null==d.from),null==d.to)return;d.to==p&&(d=!1)}}if(h<=p)break;for(var L=Math.min(h,v);;){if(g){var M=p+g.length;if(!d){var A=L<M?g.slice(0,L-p):g;t.addToken(t,A,a?a+s:s,u,p+A.length==v?c:"",l,f)}if(L<=M){g=g.slice(L-p),p=L;break}p=M,u=""}g=i.slice(o,o=r[m++]),a=Xt(r[m++],t.cm.options)}}else for(var O=1;O<r.length;O+=2)t.addToken(t,i.slice(o,o=r[O]),Xt(r[O+1],t.cm.options))}function nr(e,t,r){this.line=t,this.rest=function(e){for(var t,r;t=Ie(e);)e=t.find(1,!0).line,(r||(r=[])).push(e);return r}(t),this.size=this.rest?fe(Y(this.rest))-r+1:1,this.node=this.text=null,this.hidden=Ke(e,t)}function ir(e,t,r){for(var n,i=[],o=t;o<r;o=n){var a=new nr(e.doc,se(e.doc,o),o);n=o+a.size,i.push(a)}return i}var or=null;var ar=null;function lr(e,t){var r=rt(e,t);if(r.length){var n,i=Array.prototype.slice.call(arguments,2);or?n=or.delayedCallbacks:ar?n=ar:(n=ar=[],setTimeout(sr,0));for(var o=function(e){n.push(function(){return r[e].apply(null,i)})},a=0;a<r.length;++a)o(a)}}function sr(){var e=ar;ar=null;for(var t=0;t<e.length;++t)e[t]()}function cr(e,t,r,n){for(var i=0;i<t.changes.length;i++){var o=t.changes[i];"text"==o?fr(e,t):"gutter"==o?pr(e,t,r,n):"class"==o?hr(e,t):"widget"==o&&mr(e,t,n)}t.changes=null}function ur(e){return e.node==e.text&&(e.node=N("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),x&&k<8&&(e.node.style.zIndex=2)),e.node}function dr(e,t){var r=e.display.externalMeasured;return r&&r.line==t.line?(e.display.externalMeasured=null,t.measure=r.measure,r.built):Zt(e,t)}function fr(e,t){var r=t.text.className,n=dr(e,t);t.text==t.node&&(t.node=n.pre),t.text.parentNode.replaceChild(n.pre,t.text),t.text=n.pre,n.bgClass!=t.bgClass||n.textClass!=t.textClass?(t.bgClass=n.bgClass,t.textClass=n.textClass,hr(e,t)):r&&(t.text.className=r)}function hr(e,t){!function(e,t){var r=t.bgClass?t.bgClass+" "+(t.line.bgClass||""):t.line.bgClass;if(r&&(r+=" CodeMirror-linebackground"),t.background)r?t.background.className=r:(t.background.parentNode.removeChild(t.background),t.background=null);else if(r){var n=ur(t);t.background=n.insertBefore(N("div",null,r),n.firstChild),e.display.input.setUneditable(t.background)}}(e,t),t.line.wrapClass?ur(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className="");var r=t.textClass?t.textClass+" "+(t.line.textClass||""):t.line.textClass;t.text.className=r||""}function pr(e,t,r,n){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var i=ur(t);t.gutterBackground=N("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px; width: "+n.gutterTotalWidth+"px"),e.display.input.setUneditable(t.gutterBackground),i.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var a=ur(t),l=t.gutter=N("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px");if(e.display.input.setUneditable(l),a.insertBefore(l,t.text),t.line.gutterClass&&(l.className+=" "+t.line.gutterClass),!e.options.lineNumbers||o&&o["CodeMirror-linenumbers"]||(t.lineNumber=l.appendChild(N("div",me(e.options,r),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+n.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),o)for(var s=0;s<e.options.gutters.length;++s){var c=e.options.gutters[s],u=o.hasOwnProperty(c)&&o[c];u&&l.appendChild(N("div",[u],"CodeMirror-gutter-elt","left: "+n.gutterLeft[c]+"px; width: "+n.gutterWidth[c]+"px"))}}}function mr(e,t,r){t.alignable&&(t.alignable=null);for(var n=t.node.firstChild,i=void 0;n;n=i)i=n.nextSibling,"CodeMirror-linewidget"==n.className&&t.node.removeChild(n);gr(e,t,r)}function gr(e,t,r){if(vr(e,t.line,t,r,!0),t.rest)for(var n=0;n<t.rest.length;n++)vr(e,t.rest[n],t,r,!1)}function vr(e,t,r,n,i){if(t.widgets)for(var o=ur(r),a=0,l=t.widgets;a<l.length;++a){var s=l[a],c=N("div",[s.node],"CodeMirror-linewidget");s.handleMouseEvents||c.setAttribute("cm-ignore-events","true"),yr(s,c,r,n),e.display.input.setUneditable(c),i&&s.above?o.insertBefore(c,r.gutter||r.text):o.appendChild(c),lr(s,"redraw")}}function yr(e,t,r,n){if(e.noHScroll){(r.alignable||(r.alignable=[])).push(t);var i=n.wrapperWidth;t.style.left=n.fixedPos+"px",e.coverGutter||(i-=n.gutterTotalWidth,t.style.paddingLeft=n.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-n.gutterTotalWidth+"px"))}function br(e){if(null!=e.height)return e.height;var t=e.doc.cm;if(!t)return 0;if(!_(document.body,e.node)){var r="position: relative;";e.coverGutter&&(r+="margin-left: -"+t.display.gutters.offsetWidth+"px;"),e.noHScroll&&(r+="width: "+t.display.wrapper.clientWidth+"px;"),A(t.display.measure,N("div",[e.node],null,r))}return e.height=e.node.parentNode.offsetHeight}function wr(e,t){for(var r=ht(t);r!=e.wrapper;r=r.parentNode)if(!r||1==r.nodeType&&"true"==r.getAttribute("cm-ignore-events")||r.parentNode==e.sizer&&r!=e.mover)return!0}function xr(e){return e.lineSpace.offsetTop}function kr(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function Cr(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=A(e.measure,N("pre","x")),r=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,n={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(n.left)||isNaN(n.right)||(e.cachedPaddingH=n),n}function Tr(e){return j-e.display.nativeBarWidth}function Sr(e){return e.display.scroller.clientWidth-Tr(e)-e.display.barWidth}function Lr(e){return e.display.scroller.clientHeight-Tr(e)-e.display.barHeight}function Mr(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var n=0;n<e.rest.length;n++)if(e.rest[n]==t)return{map:e.measure.maps[n],cache:e.measure.caches[n]};for(var i=0;i<e.rest.length;i++)if(fe(e.rest[i])>r)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Ar(e,t,r,n){return _r(e,Nr(e,t),r,n)}function Or(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[ln(e,t)];var r=e.display.externalMeasured;return r&&t>=r.lineN&&t<r.lineN+r.size?r:void 0}function Nr(e,t){var r=fe(t),n=Or(e,r);n&&!n.text?n=null:n&&n.changes&&(cr(e,n,r,tn(e)),e.curOp.forceUpdate=!0),n||(n=function(e,t){var r=fe(t=Be(t)),n=e.display.externalMeasured=new nr(e.doc,t,r);n.lineN=r;var i=n.built=Zt(e,n);return n.text=i.pre,A(e.display.lineMeasure,i.pre),n}(e,t));var i=Mr(n,t,r);return{line:t,view:n,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function _r(e,t,r,n,i){t.before&&(r=-1);var o,a=r+(n||"");return t.cache.hasOwnProperty(a)?o=t.cache[a]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(!function(e,t,r){var n=e.options.lineWrapping,i=n&&Sr(e);if(!t.measure.heights||n&&t.measure.width!=i){var o=t.measure.heights=[];if(n){t.measure.width=i;for(var a=t.text.firstChild.getClientRects(),l=0;l<a.length-1;l++){var s=a[l],c=a[l+1];2<Math.abs(s.bottom-c.bottom)&&o.push((s.bottom+c.top)/2-r.top)}}o.push(r.bottom-r.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,r,n){var i,o=Fr(t.map,r,n),a=o.node,l=o.start,s=o.end,c=o.collapse;if(3==a.nodeType){for(var u=0;u<4;u++){for(;l&&ie(t.line.text.charAt(o.coverStart+l));)--l;for(;o.coverStart+s<o.coverEnd&&ie(t.line.text.charAt(o.coverStart+s));)++s;if((i=x&&k<9&&0==l&&s==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Wr(S(a,l,s).getClientRects(),n)).left||i.right||0==l)break;s=l,l-=1,c="right"}x&&k<11&&(i=function(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(e){if(null!=Tt)return Tt;var t=A(e,N("span","x")),r=t.getBoundingClientRect(),n=S(t,0,1).getBoundingClientRect();return Tt=1<Math.abs(r.left-n.left)}(e))return t;var r=screen.logicalXDPI/screen.deviceXDPI,n=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*r,right:t.right*r,top:t.top*n,bottom:t.bottom*n}}(e.display.measure,i))}else{var d;0<l&&(c=n="right"),i=e.options.lineWrapping&&1<(d=a.getClientRects()).length?d["right"==n?d.length-1:0]:a.getBoundingClientRect()}if(x&&k<9&&!l&&(!i||!i.left&&!i.right)){var f=a.parentNode.getClientRects()[0];i=f?{left:f.left,right:f.left+en(e.display),top:f.top,bottom:f.bottom}:Dr}for(var h=i.top-t.rect.top,p=i.bottom-t.rect.top,m=(h+p)/2,g=t.view.measure.heights,v=0;v<g.length-1&&!(m<g[v]);v++);var y=v?g[v-1]:0,b=g[v],w={left:("right"==c?i.right:i.left)-t.rect.left,right:("left"==c?i.left:i.right)-t.rect.left,top:y,bottom:b};i.left||i.right||(w.bogus=!0);e.options.singleCursorHeightPerLine||(w.rtop=h,w.rbottom=p);return w}(e,t,r,n)).bogus||(t.cache[a]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}var Er,Dr={left:0,right:0,top:0,bottom:0};function Fr(e,t,r){for(var n,i,o,a,l,s,c=0;c<e.length;c+=3)if(l=e[c],s=e[c+1],t<l?(i=0,o=1,a="left"):t<s?o=(i=t-l)+1:(c==e.length-3||t==s&&e[c+3]>t)&&(i=(o=s-l)-1,s<=t&&(a="right")),null!=i){if(n=e[c+2],l==s&&r==(n.insertLeft?"left":"right")&&(a=r),"left"==r&&0==i)for(;c&&e[c-2]==e[c-3]&&e[c-1].insertLeft;)n=e[2+(c-=3)],a="left";if("right"==r&&i==s-l)for(;c<e.length-3&&e[c+3]==e[c+4]&&!e[c+5].insertLeft;)n=e[(c+=3)+2],a="right";break}return{node:n,start:i,end:o,collapse:a,coverStart:l,coverEnd:s}}function Wr(e,t){var r=Dr;if("left"==t)for(var n=0;n<e.length&&(r=e[n]).left==r.right;n++);else for(var i=e.length-1;0<=i&&(r=e[i]).left==r.right;i--);return r}function zr(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function Pr(e){e.display.externalMeasure=null,M(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)zr(e.display.view[t])}function Hr(e){Pr(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function Ir(){return a&&d?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function Rr(){return a&&d?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function jr(e){var t=0;if(e.widgets)for(var r=0;r<e.widgets.length;++r)e.widgets[r].above&&(t+=br(e.widgets[r]));return t}function Br(e,t,r,n,i){if(!i){var o=jr(t);r.top+=o,r.bottom+=o}if("line"==n)return r;n||(n="local");var a=Ge(t);if("local"==n?a+=xr(e.display):a-=e.display.viewOffset,"page"==n||"window"==n){var l=e.display.lineSpace.getBoundingClientRect();a+=l.top+("window"==n?0:Rr());var s=l.left+("window"==n?0:Ir());r.left+=s,r.right+=s}return r.top+=a,r.bottom+=a,r}function qr(e,t,r){if("div"==r)return t;var n=t.left,i=t.top;if("page"==r)n-=Ir(),i-=Rr();else if("local"==r||!r){var o=e.display.sizer.getBoundingClientRect();n+=o.left,i+=o.top}var a=e.display.lineSpace.getBoundingClientRect();return{left:n-a.left,top:i-a.top}}function Ur(e,t,r,n,i){return n||(n=se(e.doc,t.line)),Br(e,n,Ar(e,n,t.ch,i),r)}function Kr(n,e,i,o,a,l){function s(e,t){var r=_r(n,a,e,t?"right":"left",l);return t?r.left=r.right:r.right=r.left,Br(n,o,r,i)}o=o||se(n.doc,e.line),a||(a=Nr(n,o));var c=Qe(o,n.doc.direction),t=e.ch,r=e.sticky;if(t>=o.text.length?(t=o.text.length,r="before"):t<=0&&(t=0,r="after"),!c)return s("before"==r?t-1:t,"before"==r);function u(e,t,r){return s(r?e-1:e,1==c[t].level!=r)}var d=Ze(c,t,r),f=Xe,h=u(t,d,"before"==r);return null!=f&&(h.other=u(t,f,"before"!=r)),h}function Vr(e,t){var r=0;t=Ce(e.doc,t),e.options.lineWrapping||(r=en(e.display)*t.ch);var n=se(e.doc,t.line),i=Ge(n)+xr(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function Gr(e,t,r,n,i){var o=ge(e,t,r);return o.xRel=i,n&&(o.outside=!0),o}function $r(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return Gr(n.first,0,null,!0,-1);var i=he(n,r),o=n.first+n.size-1;if(o<i)return Gr(n.first+n.size-1,se(n,o).text.length,null,!0,1);t<0&&(t=0);for(var a=se(n,i);;){var l=Jr(e,a,i,t,r),s=Re(a,l.ch+(0<l.xRel?1:0));if(!s)return l;var c=s.find(1);if(c.line==i)return c;a=se(n,i=c.line)}}function Yr(t,e,r,n){n-=jr(e);var i=e.text.length,o=ae(function(e){return _r(t,r,e-1).bottom<=n},i,0);return{begin:o,end:i=ae(function(e){return _r(t,r,e).top>n},o,i)}}function Xr(e,t,r,n){return r||(r=Nr(e,t)),Yr(e,t,r,Br(e,t,_r(e,r,n),"line").top)}function Zr(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function Jr(r,e,t,n,i){i-=Ge(e);var o=Nr(r,e),a=jr(e),l=0,s=e.text.length,c=!0,u=Qe(e,r.doc.direction);if(u){var d=(r.options.lineWrapping?function(e,t,r,n,i,o,a){var l=Yr(e,t,n,a),s=l.begin,c=l.end;/\s/.test(t.text.charAt(c-1))&&c--;for(var u=null,d=null,f=0;f<i.length;f++){var h=i[f];if(!(h.from>=c||h.to<=s)){var p=1!=h.level,m=_r(e,n,p?Math.min(c,h.to)-1:Math.max(s,h.from)).right,g=m<o?o-m+1e9:m-o;(!u||g<d)&&(u=h,d=g)}}u||(u=i[i.length-1]);u.from<s&&(u={from:s,to:u.to,level:u.level});u.to>c&&(u={from:u.from,to:c,level:u.level});return u}:function(n,i,o,a,l,s,c){var e=ae(function(e){var t=l[e],r=1!=t.level;return Zr(Kr(n,ge(o,r?t.to:t.from,r?"before":"after"),"line",i,a),s,c,!0)},0,l.length-1),t=l[e];if(0<e){var r=1!=t.level,u=Kr(n,ge(o,r?t.from:t.to,r?"after":"before"),"line",i,a);Zr(u,s,c,!0)&&u.top>c&&(t=l[e-1])}return t})(r,e,t,o,u,n,i);l=(c=1!=d.level)?d.from:d.to-1,s=c?d.to:d.from-1}var f,h,p=null,m=null,g=ae(function(e){var t=_r(r,o,e);return t.top+=a,t.bottom+=a,!!Zr(t,n,i,!1)&&(t.top<=i&&t.left<=n&&(p=e,m=t),!0)},l,s),v=!1;if(m){var y=n-m.left<m.right-n,b=y==c;g=p+(b?0:1),h=b?"after":"before",f=y?m.left:m.right}else{c||g!=s&&g!=l||g++,h=0==g?"after":g==e.text.length?"before":_r(r,o,g-(c?1:0)).bottom+a<=i==c?"after":"before";var w=Kr(r,ge(t,g,h),"line",e,o);f=w.left,v=i<w.top||i>=w.bottom}return Gr(t,g=oe(e.text,g,1),h,v,n-f)}function Qr(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Er){Er=N("pre");for(var t=0;t<49;++t)Er.appendChild(document.createTextNode("x")),Er.appendChild(N("br"));Er.appendChild(document.createTextNode("x"))}A(e.measure,Er);var r=Er.offsetHeight/50;return 3<r&&(e.cachedTextHeight=r),M(e.measure),r||1}function en(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=N("span","xxxxxxxxxx"),r=N("pre",[t]);A(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return 2<i&&(e.cachedCharWidth=i),i||10}function tn(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,a=0;o;o=o.nextSibling,++a)r[e.options.gutters[a]]=o.offsetLeft+o.clientLeft+i,n[e.options.gutters[a]]=o.clientWidth;return{fixedPos:rn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function rn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function nn(n){var i=Qr(n.display),o=n.options.lineWrapping,a=o&&Math.max(5,n.display.scroller.clientWidth/en(n.display)-3);return function(e){if(Ke(n.doc,e))return 0;var t=0;if(e.widgets)for(var r=0;r<e.widgets.length;r++)e.widgets[r].height&&(t+=e.widgets[r].height);return o?t+(Math.ceil(e.text.length/a)||1)*i:t+i}}function on(e){var t=e.doc,r=nn(e);t.iter(function(e){var t=r(e);t!=e.height&&de(e,t)})}function an(e,t,r,n){var i=e.display;if(!r&&"true"==ht(t).getAttribute("cm-not-content"))return null;var o,a,l=i.lineSpace.getBoundingClientRect();try{o=t.clientX-l.left,a=t.clientY-l.top}catch(t){return null}var s,c=$r(e,o,a);if(n&&1==c.xRel&&(s=se(e.doc,c.line).text).length==c.ch){var u=H(s,s.length,e.options.tabSize)-s.length;c=ge(c.line,Math.max(0,Math.round((o-Cr(e.display).left)/en(e.display))-u))}return c}function ln(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;n<r.length;n++)if((t-=r[n].size)<0)return n}function sn(e){e.display.input.showSelection(e.display.input.prepareSelection())}function cn(e,t){void 0===t&&(t=!0);for(var r=e.doc,n={},i=n.cursors=document.createDocumentFragment(),o=n.selection=document.createDocumentFragment(),a=0;a<r.sel.ranges.length;a++)if(t||a!=r.sel.primIndex){var l=r.sel.ranges[a];if(!(l.from().line>=e.display.viewTo||l.to().line<e.display.viewFrom)){var s=l.empty();(s||e.options.showCursorWhenSelecting)&&un(e,l.head,i),s||fn(e,l,o)}}return n}function un(e,t,r){var n=Kr(e,t,"div",null,null,!e.options.singleCursorHeightPerLine),i=r.appendChild(N("div"," ","CodeMirror-cursor"));if(i.style.left=n.left+"px",i.style.top=n.top+"px",i.style.height=Math.max(0,n.bottom-n.top)*e.options.cursorHeight+"px",n.other){var o=r.appendChild(N("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));o.style.display="",o.style.left=n.other.left+"px",o.style.top=n.other.top+"px",o.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function dn(e,t){return e.top-t.top||e.left-t.left}function fn(a,e,t){var r=a.display,n=a.doc,i=document.createDocumentFragment(),o=Cr(a.display),L=o.left,M=Math.max(r.sizerWidth,Sr(a)-r.sizer.offsetLeft)-o.right,A="ltr"==n.direction;function O(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),i.appendChild(N("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null==r?M-e:r)+"px;\n height: "+(n-t)+"px"))}function l(r,y,b){var w,x,o=se(n,r),k=o.text.length;function C(e,t){return Ur(a,ge(r,e),"div",o,t)}function T(e,t,r){var n=Xr(a,o,null,e),i="ltr"==t==("after"==r)?"left":"right";return C("after"==r?n.begin:n.end-(/\s/.test(o.text.charAt(n.end-1))?2:1),i)[i]}var S=Qe(o,n.direction);return function(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;o<e.length;++o){var a=e[o];(a.from<r&&a.to>t||t==r&&a.to==t)&&(n(Math.max(a.from,t),Math.min(a.to,r),1==a.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}(S,y||0,null==b?k:b,function(e,t,r,n){var i="ltr"==r,o=C(e,i?"left":"right"),a=C(t-1,i?"right":"left"),l=null==y&&0==e,s=null==b&&t==k,c=0==n,u=!S||n==S.length-1;if(a.top-o.top<=3){var d=(A?s:l)&&u,f=(A?l:s)&&c?L:(i?o:a).left,h=d?M:(i?a:o).right;O(f,o.top,h-f,o.bottom)}else{var p,m,g,v;v=i?(p=A&&l&&c?L:o.left,m=A?M:T(e,r,"before"),g=A?L:T(t,r,"after"),A&&s&&u?M:a.right):(p=A?T(e,r,"before"):L,m=!A&&l&&c?M:o.right,g=!A&&s&&u?L:a.left,A?T(t,r,"after"):M),O(p,o.top,m-p,o.bottom),o.bottom<a.top&&O(L,o.bottom,null,a.top),O(g,a.top,v-g,a.bottom)}(!w||dn(o,w)<0)&&(w=o),dn(a,w)<0&&(w=a),(!x||dn(o,x)<0)&&(x=o),dn(a,x)<0&&(x=a)}),{start:w,end:x}}var s=e.from(),c=e.to();if(s.line==c.line)l(s.line,s.ch,c.ch);else{var u=se(n,s.line),d=se(n,c.line),f=Be(u)==Be(d),h=l(s.line,s.ch,f?u.text.length+1:null).end,p=l(c.line,f?0:null,c.ch).start;f&&(h.top<p.top-2?(O(h.right,h.top,null,h.bottom),O(L,p.top,p.left,p.bottom)):O(h.right,h.top,p.left-h.right,h.bottom)),h.bottom<p.top&&O(L,h.bottom,null,p.top)}t.appendChild(i)}function hn(e){if(e.state.focused){var t=e.display;clearInterval(t.blinker);var r=!0;t.cursorDiv.style.visibility="",0<e.options.cursorBlinkRate?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(r=!r)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function pn(e){e.state.focused||(e.display.input.focus(),gn(e))}function mn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,vn(e))},100)}function gn(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(it(e,"focus",e,t),e.state.focused=!0,D(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),b&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),hn(e))}function vn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(it(e,"blur",e,t),e.state.focused=!1,L(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function yn(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=0;n<t.view.length;n++){var i=t.view[n],o=e.options.lineWrapping,a=void 0,l=0;if(!i.hidden){if(x&&k<8){var s=i.node.offsetTop+i.node.offsetHeight;a=s-r,r=s}else{var c=i.node.getBoundingClientRect();a=c.bottom-c.top,!o&&i.text.firstChild&&(l=i.text.firstChild.getBoundingClientRect().right-c.left-1)}var u=i.line.height-a;if(a<2&&(a=Qr(t)),(.005<u||u<-.005)&&(de(i.line,a),bn(i.line),i.rest))for(var d=0;d<i.rest.length;d++)bn(i.rest[d]);if(l>e.display.sizerWidth){var f=Math.ceil(l/en(e.display));f>e.display.maxLineLength&&(e.display.maxLineLength=f,e.display.maxLine=i.line,e.display.maxLineChanged=!0)}}}}function bn(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var r=e.widgets[t],n=r.node.parentNode;n&&(r.height=n.offsetHeight)}}function wn(e,t,r){var n=r&&null!=r.top?Math.max(0,r.top):e.scroller.scrollTop;n=Math.floor(n-xr(e));var i=r&&null!=r.bottom?r.bottom:n+e.wrapper.clientHeight,o=he(t,n),a=he(t,i);if(r&&r.ensure){var l=r.ensure.from.line,s=r.ensure.to.line;l<o?a=he(t,Ge(se(t,o=l))+e.wrapper.clientHeight):Math.min(s,t.lastLine())>=a&&(o=he(t,Ge(se(t,s))-e.wrapper.clientHeight),a=s)}return{from:o,to:Math.max(a,o+1)}}function xn(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=rn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",a=0;a<r.length;a++)if(!r[a].hidden){e.options.fixedGutter&&(r[a].gutter&&(r[a].gutter.style.left=o),r[a].gutterBackground&&(r[a].gutterBackground.style.left=o));var l=r[a].alignable;if(l)for(var s=0;s<l.length;s++)l[s].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=n+i+"px")}}function kn(e){if(!e.options.lineNumbers)return!1;var t=e.doc,r=me(e.options,t.first+t.size-1),n=e.display;if(r.length==n.lineNumChars)return!1;var i=n.measure.appendChild(N("div",[N("div",r)],"CodeMirror-linenumber CodeMirror-gutter-elt")),o=i.firstChild.offsetWidth,a=i.offsetWidth-o;return n.lineGutter.style.width="",n.lineNumInnerWidth=Math.max(o,n.lineGutter.offsetWidth-a)+1,n.lineNumWidth=n.lineNumInnerWidth+a,n.lineNumChars=n.lineNumInnerWidth?r.length:-1,n.lineGutter.style.width=n.lineNumWidth+"px",li(e),!0}function Cn(e,t){var r=e.display,n=Qr(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=Lr(e),a={};t.bottom-t.top>o&&(t.bottom=t.top+o);var l=e.doc.height+kr(r),s=t.top<n,c=t.bottom>l-n;if(t.top<i)a.scrollTop=s?0:t.top;else if(t.bottom>i+o){var u=Math.min(t.top,(c?l:t.bottom)-o);u!=i&&(a.scrollTop=u)}var d=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft,f=Sr(e)-(e.options.fixedGutter?r.gutters.offsetWidth:0),h=t.right-t.left>f;return h&&(t.right=t.left+f),t.left<10?a.scrollLeft=0:t.left<d?a.scrollLeft=Math.max(0,t.left-(h?0:10)):t.right>f+d-3&&(a.scrollLeft=t.right+(h?0:10)-f),a}function Tn(e,t){null!=t&&(Mn(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Sn(e){Mn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Ln(e,t,r){null==t&&null==r||Mn(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function Mn(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,An(e,Vr(e,t.from),Vr(e,t.to),t.margin))}function An(e,t,r,n){var i=Cn(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});Ln(e,i.scrollLeft,i.scrollTop)}function On(e,t){Math.abs(e.doc.scrollTop-t)<2||(m||ai(e,{top:t}),Nn(e,t,!0),m&&ai(e),ti(e,100))}function Nn(e,t,r){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function _n(e,t,r,n){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,xn(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function En(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+kr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Tr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var Dn=function(e,t,r){this.cm=r;var n=this.vert=N("div",[N("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=N("div",[N("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");n.tabIndex=i.tabIndex=-1,e(n),e(i),tt(n,"scroll",function(){n.clientHeight&&t(n.scrollTop,"vertical")}),tt(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,x&&k<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Dn.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&0<e.clientHeight&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},Dn.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Dn.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Dn.prototype.zeroWidthHack=function(){var e=w&&!l?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new I,this.disableVert=new I},Dn.prototype.enableZeroWidthBar=function(r,n,i){r.style.pointerEvents="auto",n.set(1e3,function e(){var t=r.getBoundingClientRect();("vert"==i?document.elementFromPoint(t.right-1,(t.top+t.bottom)/2):document.elementFromPoint((t.right+t.left)/2,t.bottom-1))!=r?r.style.pointerEvents="none":n.set(1e3,e)})},Dn.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Fn=function(){};function Wn(e,t){t||(t=En(e));var r=e.display.barWidth,n=e.display.barHeight;zn(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&yn(e),zn(e,En(e)),r=e.display.barWidth,n=e.display.barHeight}function zn(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}Fn.prototype.update=function(){return{bottom:0,right:0}},Fn.prototype.setScrollLeft=function(){},Fn.prototype.setScrollTop=function(){},Fn.prototype.clear=function(){};var Pn={native:Dn,null:Fn};function Hn(r){r.display.scrollbars&&(r.display.scrollbars.clear(),r.display.scrollbars.addClass&&L(r.display.wrapper,r.display.scrollbars.addClass)),r.display.scrollbars=new Pn[r.options.scrollbarStyle](function(e){r.display.wrapper.insertBefore(e,r.display.scrollbarFiller),tt(e,"mousedown",function(){r.state.focused&&setTimeout(function(){return r.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,t){"horizontal"==t?_n(r,e):On(r,e)},r),r.display.scrollbars.addClass&&D(r.display.wrapper,r.display.scrollbars.addClass)}var In=0;function Rn(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++In},t=e.curOp,or?or.ops.push(t):t.ownsGroup=or={ops:[t],delayedCallbacks:[]}}function jn(e){var t=e.curOp;t&&function(e,t){var r=e.ownsGroup;if(r)try{!function(e){var t=e.delayedCallbacks,r=0;do{for(;r<t.length;r++)t[r].call(null);for(var n=0;n<e.ops.length;n++){var i=e.ops[n];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(r<t.length)}(r)}finally{or=null,t(r)}}(t,function(e){for(var t=0;t<e.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,r=0;r<t.length;r++)Bn(t[r]);for(var n=0;n<t.length;n++)(i=t[n]).updatedDisplay=i.mustUpdate&&ii(i.cm,i.update);var i;for(var o=0;o<t.length;o++)qn(t[o]);for(var a=0;a<t.length;a++)Un(t[a]);for(var l=0;l<t.length;l++)Kn(t[l])}(e)})}function Bn(e){var t,r,n=e.cm,i=n.display;!(r=(t=n).display).scrollbarsClipped&&r.scroller.offsetWidth&&(r.nativeBarWidth=r.scroller.offsetWidth-r.scroller.clientWidth,r.heightForcer.style.height=Tr(t)+"px",r.sizer.style.marginBottom=-r.nativeBarWidth+"px",r.sizer.style.borderRightWidth=Tr(t)+"px",r.scrollbarsClipped=!0),e.updateMaxLine&&Ye(n),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<i.viewFrom||e.scrollToPos.to.line>=i.viewTo)||i.maxLineChanged&&n.options.lineWrapping,e.update=e.mustUpdate&&new ni(n,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function qn(e){var t=e.cm,r=t.display;e.updatedDisplay&&yn(t),e.barMeasure=En(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Ar(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Tr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Sr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function Un(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&_n(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var r=e.focus&&e.focus==E();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,r),(e.updatedDisplay||e.startHeight!=t.doc.height)&&Wn(t,e.barMeasure),e.updatedDisplay&&si(t,e.barMeasure),e.selectionChanged&&hn(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),r&&pn(e.cm)}function Kn(e){var t=e.cm,r=t.display,n=t.doc;(e.updatedDisplay&&oi(t,e.update),null==r.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(r.wheelStartX=r.wheelStartY=null),null!=e.scrollTop&&Nn(t,e.scrollTop,e.forceScroll),null!=e.scrollLeft&&_n(t,e.scrollLeft,!0,!0),e.scrollToPos)&&function(e,t){if(!ot(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!c){var o=N("div","​",null,"position: absolute;\n top: "+(t.top-r.viewOffset-xr(e.display))+"px;\n height: "+(t.bottom-t.top+Tr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}(t,function(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==(t=t.ch?ge(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t).sticky?ge(t.line,t.ch+1,"before"):t);for(var o=0;o<5;o++){var a=!1,l=Kr(e,t),s=r&&r!=t?Kr(e,r):l,c=Cn(e,i={left:Math.min(l.left,s.left),top:Math.min(l.top,s.top)-n,right:Math.max(l.left,s.left),bottom:Math.max(l.bottom,s.bottom)+n}),u=e.doc.scrollTop,d=e.doc.scrollLeft;if(null!=c.scrollTop&&(On(e,c.scrollTop),1<Math.abs(e.doc.scrollTop-u)&&(a=!0)),null!=c.scrollLeft&&(_n(e,c.scrollLeft),1<Math.abs(e.doc.scrollLeft-d)&&(a=!0)),!a)break}return i}(t,Ce(n,e.scrollToPos.from),Ce(n,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var a=0;a<i.length;++a)i[a].lines.length||it(i[a],"hide");if(o)for(var l=0;l<o.length;++l)o[l].lines.length&&it(o[l],"unhide");r.wrapper.offsetHeight&&(n.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&it(t,"changes",t,e.changeObjs),e.update&&e.update.finish()}function Vn(e,t){if(e.curOp)return t();Rn(e);try{return t()}finally{jn(e)}}function Gn(e,t){return function(){if(e.curOp)return t.apply(e,arguments);Rn(e);try{return t.apply(e,arguments)}finally{jn(e)}}}function $n(e){return function(){if(this.curOp)return e.apply(this,arguments);Rn(this);try{return e.apply(this,arguments)}finally{jn(this)}}}function Yn(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);Rn(e);try{return t.apply(this,arguments)}finally{jn(e)}}}function Xn(e,t,r,n){null==t&&(t=e.doc.first),null==r&&(r=e.doc.first+e.doc.size),n||(n=0);var i=e.display;if(n&&r<i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)Le&&qe(e.doc,t)<i.viewTo&&Jn(e);else if(r<=i.viewFrom)Le&&Ue(e.doc,r+n)>i.viewFrom?Jn(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)Jn(e);else if(t<=i.viewFrom){var o=Qn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):Jn(e)}else if(r>=i.viewTo){var a=Qn(e,t,t,-1);a?(i.view=i.view.slice(0,a.index),i.viewTo=a.lineN):Jn(e)}else{var l=Qn(e,t,t,-1),s=Qn(e,r,r+n,1);l&&s?(i.view=i.view.slice(0,l.index).concat(ir(e,l.lineN,s.lineN)).concat(i.view.slice(s.index)),i.viewTo+=n):Jn(e)}var c=i.externalMeasured;c&&(r<c.lineN?c.lineN+=n:t<c.lineN+c.size&&(i.externalMeasured=null))}function Zn(e,t,r){e.curOp.viewChanged=!0;var n=e.display,i=e.display.externalMeasured;if(i&&t>=i.lineN&&t<i.lineN+i.size&&(n.externalMeasured=null),!(t<n.viewFrom||t>=n.viewTo)){var o=n.view[ln(e,t)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==R(a,r)&&a.push(r)}}}function Jn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Qn(e,t,r,n){var i,o=ln(e,t),a=e.display.view;if(!Le||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var l=e.display.viewFrom,s=0;s<o;s++)l+=a[s].size;if(l!=t){if(0<n){if(o==a.length-1)return null;i=l+a[o].size-t,o++}else i=l-t;t+=i,r+=i}for(;qe(e.doc,r)!=r;){if(o==(n<0?0:a.length-1))return null;r+=n*a[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function ei(e){for(var t=e.display.view,r=0,n=0;n<t.length;n++){var i=t[n];i.hidden||i.node&&!i.changes||++r}return r}function ti(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highlight.set(t,z(ri,e))}function ri(s){var c=s.doc;if(!(c.highlightFrontier>=s.display.viewTo)){var u=+new Date+s.options.workTime,d=It(s,c.highlightFrontier),f=[];c.iter(d.line,Math.min(c.first+c.size,s.display.viewTo+500),function(e){if(d.line>=s.display.viewFrom){var t=e.styles,r=e.text.length>s.options.maxHighlightLength?_t(c.mode,d.state):null,n=Pt(s,e,d,!0);r&&(d.state=r),e.styles=n.styles;var i=e.styleClasses,o=n.classes;o?e.styleClasses=o:i&&(e.styleClasses=null);for(var a=!t||t.length!=e.styles.length||i!=o&&(!i||!o||i.bgClass!=o.bgClass||i.textClass!=o.textClass),l=0;!a&&l<t.length;++l)a=t[l]!=e.styles[l];a&&f.push(d.line),e.stateAfter=d.save(),d.nextLine()}else e.text.length<=s.options.maxHighlightLength&&Rt(s,e.text,d),e.stateAfter=d.line%5==0?d.save():null,d.nextLine();if(+new Date>u)return ti(s,s.options.workDelay),!0}),c.highlightFrontier=d.line,c.modeFrontier=Math.max(c.modeFrontier,d.line),f.length&&Vn(s,function(){for(var e=0;e<f.length;e++)Zn(s,f[e],"text")})}}var ni=function(e,t,r){var n=e.display;this.viewport=t,this.visible=wn(n,e.doc,t),this.editorIsHidden=!n.wrapper.offsetWidth,this.wrapperHeight=n.wrapper.clientHeight,this.wrapperWidth=n.wrapper.clientWidth,this.oldDisplayWidth=Sr(e),this.force=r,this.dims=tn(e),this.events=[]};function ii(e,t){var r=e.display,n=e.doc;if(t.editorIsHidden)return Jn(e),!1;if(!t.force&&t.visible.from>=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==ei(e))return!1;kn(e)&&(Jn(e),t.dims=tn(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),a=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFrom<o&&o-r.viewFrom<20&&(o=Math.max(n.first,r.viewFrom)),r.viewTo>a&&r.viewTo-a<20&&(a=Math.min(i,r.viewTo)),Le&&(o=qe(e.doc,o),a=Ue(e.doc,a));var l,s,c,u,d=o!=r.viewFrom||a!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;s=o,c=a,0==(u=(l=e).display).view.length||s>=u.viewTo||c<=u.viewFrom?(u.view=ir(l,s,c),u.viewFrom=s):(u.viewFrom>s?u.view=ir(l,s,u.viewFrom).concat(u.view):u.viewFrom<s&&(u.view=u.view.slice(ln(l,s))),u.viewFrom=s,u.viewTo<c?u.view=u.view.concat(ir(l,u.viewTo,c)):u.viewTo>c&&(u.view=u.view.slice(0,ln(l,c)))),u.viewTo=c,r.viewOffset=Ge(se(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var f=ei(e);if(!d&&0==f&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var h=function(e){if(e.hasFocus())return null;var t=E();if(!t||!_(e.display.lineDiv,t))return null;var r={activeElt:t};if(window.getSelection){var n=window.getSelection();n.anchorNode&&n.extend&&_(e.display.lineDiv,n.anchorNode)&&(r.anchorNode=n.anchorNode,r.anchorOffset=n.anchorOffset,r.focusNode=n.focusNode,r.focusOffset=n.focusOffset)}return r}(e);return 4<f&&(r.lineDiv.style.display="none"),function(r,e,t){var n=r.display,i=r.options.lineNumbers,o=n.lineDiv,a=o.firstChild;function l(e){var t=e.nextSibling;return b&&w&&r.display.currentWheelTarget==e?e.style.display="none":e.parentNode.removeChild(e),t}for(var s=n.view,c=n.viewFrom,u=0;u<s.length;u++){var d=s[u];if(d.hidden);else if(d.node&&d.node.parentNode==o){for(;a!=d.node;)a=l(a);var f=i&&null!=e&&e<=c&&d.lineNumber;d.changes&&(-1<R(d.changes,"gutter")&&(f=!1),cr(r,d,c,t)),f&&(M(d.lineNumber),d.lineNumber.appendChild(document.createTextNode(me(r.options,c)))),a=d.node.nextSibling}else{var h=(g=c,v=t,void 0,y=dr(p=r,m=d),m.text=m.node=y.pre,y.bgClass&&(m.bgClass=y.bgClass),y.textClass&&(m.textClass=y.textClass),hr(p,m),pr(p,m,g,v),gr(p,m,v),m.node);o.insertBefore(h,a)}c+=d.size}var p,m,g,v,y;for(;a;)a=l(a)}(e,r.updateLineNumbers,t.dims),4<f&&(r.lineDiv.style.display=""),r.renderedView=r.view,function(e){if(e&&e.activeElt&&e.activeElt!=E()&&(e.activeElt.focus(),e.anchorNode&&_(document.body,e.anchorNode)&&_(document.body,e.focusNode))){var t=window.getSelection(),r=document.createRange();r.setEnd(e.anchorNode,e.anchorOffset),r.collapse(!1),t.removeAllRanges(),t.addRange(r),t.extend(e.focusNode,e.focusOffset)}}(h),M(r.cursorDiv),M(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,d&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,ti(e,400)),!(r.updateLineNumbers=null)}function oi(e,t){for(var r=t.viewport,n=!0;(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Sr(e)||(r&&null!=r.top&&(r={top:Math.min(e.doc.height+kr(e.display)-Lr(e),r.top)}),t.visible=wn(e.display,e.doc,r),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&ii(e,t);n=!1){yn(e);var i=En(e);sn(e),Wn(e,i),si(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function ai(e,t){var r=new ni(e,t);if(ii(e,r)){yn(e),oi(e,r);var n=En(e);sn(e),Wn(e,n),si(e,n),r.finish()}}function li(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px"}function si(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Tr(e)+"px"}function ci(e){var t=e.display.gutters,r=e.options.gutters;M(t);for(var n=0;n<r.length;++n){var i=r[n],o=t.appendChild(N("div",null,"CodeMirror-gutter "+i));"CodeMirror-linenumbers"==i&&((e.display.lineGutter=o).style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=n?"":"none",li(e)}function ui(e){var t=R(e.gutters,"CodeMirror-linenumbers");-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):-1<t&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}ni.prototype.signal=function(e,t){lt(e,t)&&this.events.push(arguments)},ni.prototype.finish=function(){for(var e=0;e<this.events.length;e++)it.apply(null,this.events[e])};var di=0,fi=null;function hi(e){var t=e.wheelDeltaX,r=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==r&&e.detail&&e.axis==e.VERTICAL_AXIS?r=e.detail:null==r&&(r=e.wheelDelta),{x:t,y:r}}function pi(e){var t=hi(e);return t.x*=fi,t.y*=fi,t}function mi(e,t){var r=hi(t),n=r.x,i=r.y,o=e.display,a=o.scroller,l=a.scrollWidth>a.clientWidth,s=a.scrollHeight>a.clientHeight;if(n&&l||i&&s){if(i&&w&&b)e:for(var c=t.target,u=o.view;c!=a;c=c.parentNode)for(var d=0;d<u.length;d++)if(u[d].node==c){e.display.currentWheelTarget=c;break e}if(n&&!m&&!g&&null!=fi)return i&&s&&On(e,Math.max(0,a.scrollTop+i*fi)),_n(e,Math.max(0,a.scrollLeft+n*fi)),(!i||i&&s)&&ct(t),void(o.wheelStartX=null);if(i&&null!=fi){var f=i*fi,h=e.doc.scrollTop,p=h+o.wrapper.clientHeight;f<0?h=Math.max(0,h+f-50):p=Math.min(e.doc.height,p+f+50),ai(e,{top:h,bottom:p})}di<20&&(null==o.wheelStartX?(o.wheelStartX=a.scrollLeft,o.wheelStartY=a.scrollTop,o.wheelDX=n,o.wheelDY=i,setTimeout(function(){if(null!=o.wheelStartX){var e=a.scrollLeft-o.wheelStartX,t=a.scrollTop-o.wheelStartY,r=t&&o.wheelDY&&t/o.wheelDY||e&&o.wheelDX&&e/o.wheelDX;o.wheelStartX=o.wheelStartY=null,r&&(fi=(fi*di+r)/(di+1),++di)}},200)):(o.wheelDX+=n,o.wheelDY+=i))}}x?fi=-.53:m?fi=15:a?fi=-.7:s&&(fi=-1/3);var gi=function(e,t){this.ranges=e,this.primIndex=t};gi.prototype.primary=function(){return this.ranges[this.primIndex]},gi.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var r=this.ranges[t],n=e.ranges[t];if(!ye(r.anchor,n.anchor)||!ye(r.head,n.head))return!1}return!0},gi.prototype.deepCopy=function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new vi(be(this.ranges[t].anchor),be(this.ranges[t].head));return new gi(e,this.primIndex)},gi.prototype.somethingSelected=function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},gi.prototype.contains=function(e,t){t||(t=e);for(var r=0;r<this.ranges.length;r++){var n=this.ranges[r];if(0<=ve(t,n.from())&&ve(e,n.to())<=0)return r}return-1};var vi=function(e,t){this.anchor=e,this.head=t};function yi(e,t,r){var n=e&&e.options.selectionsMayTouch,i=t[r];t.sort(function(e,t){return ve(e.from(),t.from())}),r=R(t,i);for(var o=1;o<t.length;o++){var a=t[o],l=t[o-1],s=ve(l.to(),a.from());if(n&&!a.empty()?0<s:0<=s){var c=xe(l.from(),a.from()),u=we(l.to(),a.to()),d=l.empty()?a.from()==a.head:l.from()==l.head;o<=r&&--r,t.splice(--o,2,new vi(d?u:c,d?c:u))}}return new gi(t,r)}function bi(e,t){return new gi([new vi(e,t||e)],0)}function wi(e){return e.text?ge(e.from.line+e.text.length-1,Y(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function xi(e,t){if(ve(e,t.from)<0)return e;if(ve(e,t.to)<=0)return wi(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=wi(t).ch-t.to.ch),ge(r,n)}function ki(e,t){for(var r=[],n=0;n<e.sel.ranges.length;n++){var i=e.sel.ranges[n];r.push(new vi(xi(i.anchor,t),xi(i.head,t)))}return yi(e.cm,r,e.sel.primIndex)}function Ci(e,t,r){return e.line==t.line?ge(r.line,e.ch-t.ch+r.ch):ge(r.line+(e.line-t.line),e.ch)}function Ti(e){e.doc.mode=At(e.options,e.doc.modeOption),Si(e)}function Si(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,ti(e,100),e.state.modeGen++,e.curOp&&Xn(e)}function Li(e,t){return 0==t.from.ch&&0==t.to.ch&&""==Y(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function Mi(e,n,t,i){function o(e){return t?t[e]:null}function r(e,t,r){!function(e,t,r,n){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),Ee(e),De(e,r);var i=n?n(e):1;i!=e.height&&de(e,i)}(e,t,r,i),lr(e,"change",e,n)}function a(e,t){for(var r=[],n=e;n<t;++n)r.push(new Gt(c[n],o(n),i));return r}var l=n.from,s=n.to,c=n.text,u=se(e,l.line),d=se(e,s.line),f=Y(c),h=o(c.length-1),p=s.line-l.line;if(n.full)e.insert(0,a(0,c.length)),e.remove(c.length,e.size-c.length);else if(Li(e,n)){var m=a(0,c.length-1);r(d,d.text,h),p&&e.remove(l.line,p),m.length&&e.insert(l.line,m)}else if(u==d)if(1==c.length)r(u,u.text.slice(0,l.ch)+f+u.text.slice(s.ch),h);else{var g=a(1,c.length-1);g.push(new Gt(f+u.text.slice(s.ch),h,i)),r(u,u.text.slice(0,l.ch)+c[0],o(0)),e.insert(l.line+1,g)}else if(1==c.length)r(u,u.text.slice(0,l.ch)+c[0]+d.text.slice(s.ch),o(0)),e.remove(l.line+1,p);else{r(u,u.text.slice(0,l.ch)+c[0],o(0)),r(d,f+d.text.slice(s.ch),h);var v=a(1,c.length-1);1<p&&e.remove(l.line+1,p-1),e.insert(l.line+1,v)}lr(e,"change",e,n)}function Ai(e,l,s){!function e(t,r,n){if(t.linked)for(var i=0;i<t.linked.length;++i){var o=t.linked[i];if(o.doc!=r){var a=n&&o.sharedHist;s&&!a||(l(o.doc,a),e(o.doc,t,a))}}}(e,null,!0)}function Oi(e,t){if(t.cm)throw new Error("This document is already in use.");on((e.doc=t).cm=e),Ti(e),Ni(e),e.options.lineWrapping||Ye(e),e.options.mode=t.modeOption,Xn(e)}function Ni(e){("rtl"==e.doc.direction?D:L)(e.display.lineDiv,"CodeMirror-rtl")}function _i(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function Ei(e,t){var r={from:be(t.from),to:wi(t),text:ce(e,t.from,t.to)};return Pi(e,r,t.from.line,t.to.line+1),Ai(e,function(e){return Pi(e,r,t.from.line,t.to.line+1)},!0),r}function Di(e){for(;e.length;){if(!Y(e).ranges)break;e.pop()}}function Fi(e,t,r,n){var i=e.history;i.undone.length=0;var o,a,l,s=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>s-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=(l=i).lastOp==n?(Di(l.done),Y(l.done)):l.done.length&&!Y(l.done).ranges?Y(l.done):1<l.done.length&&!l.done[l.done.length-2].ranges?(l.done.pop(),Y(l.done)):void 0))a=Y(o.changes),0==ve(t.from,t.to)&&0==ve(t.from,a.to)?a.to=wi(t):o.changes.push(Ei(e,t));else{var c=Y(i.done);for(c&&c.ranges||zi(e.sel,i.done),o={changes:[Ei(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,a||it(e,"historyAdded")}function Wi(e,t,r,n){var i,o,a,l,s,c=e.history,u=n&&n.origin;r==c.lastSelOp||u&&c.lastSelOrigin==u&&(c.lastModTime==c.lastSelTime&&c.lastOrigin==u||(i=e,o=u,a=Y(c.done),l=t,"*"==(s=o.charAt(0))||"+"==s&&a.ranges.length==l.ranges.length&&a.somethingSelected()==l.somethingSelected()&&new Date-i.history.lastSelTime<=(i.cm?i.cm.options.historyEventDelay:500)))?c.done[c.done.length-1]=t:zi(t,c.done),c.lastSelTime=+new Date,c.lastSelOrigin=u,c.lastSelOp=r,n&&!1!==n.clearRedo&&Di(c.undone)}function zi(e,t){var r=Y(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Pi(t,r,e,n){var i=r["spans_"+t.id],o=0;t.iter(Math.max(t.first,e),Math.min(t.first+t.size,n),function(e){e.markedSpans&&((i||(i=r["spans_"+t.id]={}))[o]=e.markedSpans),++o})}function Hi(e){if(!e)return null;for(var t,r=0;r<e.length;++r)e[r].marker.explicitlyCleared?t||(t=e.slice(0,r)):t&&t.push(e[r]);return t?t.length?t:null:e}function Ii(e,t){var r=function(e,t){var r=t["spans_"+e.id];if(!r)return null;for(var n=[],i=0;i<t.text.length;++i)n.push(Hi(r[i]));return n}(e,t),n=Ne(e,t);if(!r)return n;if(!n)return r;for(var i=0;i<r.length;++i){var o=r[i],a=n[i];if(o&&a)e:for(var l=0;l<a.length;++l){for(var s=a[l],c=0;c<o.length;++c)if(o[c].marker==s.marker)continue e;o.push(s)}else a&&(r[i]=a)}return r}function Ri(e,t,r){for(var n=[],i=0;i<e.length;++i){var o=e[i];if(o.ranges)n.push(r?gi.prototype.deepCopy.call(o):o);else{var a=o.changes,l=[];n.push({changes:l});for(var s=0;s<a.length;++s){var c=a[s],u=void 0;if(l.push({from:c.from,to:c.to,text:c.text}),t)for(var d in c)(u=d.match(/^spans_(\d+)$/))&&-1<R(t,Number(u[1]))&&(Y(l)[d]=c[d],delete c[d])}}}return n}function ji(e,t,r,n){if(n){var i=e.anchor;if(r){var o=ve(t,i)<0;o!=ve(r,i)<0?(i=t,t=r):o!=ve(t,r)<0&&(t=r)}return new vi(i,t)}return new vi(r||t,t)}function Bi(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),Gi(e,new gi([ji(e.sel.primary(),t,r,i)],0),n)}function qi(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o<e.sel.ranges.length;o++)n[o]=ji(e.sel.ranges[o],t[o],null,i);Gi(e,yi(e.cm,n,e.sel.primIndex),r)}function Ui(e,t,r,n){var i=e.sel.ranges.slice(0);i[t]=r,Gi(e,yi(e.cm,i,e.sel.primIndex),n)}function Ki(e,t,r,n){Gi(e,bi(t,r),n)}function Vi(e,t,r){var n=e.history.done,i=Y(n);i&&i.ranges?$i(e,n[n.length-1]=t,r):Gi(e,t,r)}function Gi(e,t,r){$i(e,t,r),Wi(e,e.sel,e.cm?e.cm.curOp.id:NaN,r)}function $i(e,t,r){var n,i,o,a;(lt(e,"beforeSelectionChange")||e.cm&&lt(e.cm,"beforeSelectionChange"))&&(n=e,o=r,a={ranges:(i=t).ranges,update:function(e){this.ranges=[];for(var t=0;t<e.length;t++)this.ranges[t]=new vi(Ce(n,e[t].anchor),Ce(n,e[t].head))},origin:o&&o.origin},it(n,"beforeSelectionChange",n,a),n.cm&&it(n.cm,"beforeSelectionChange",n.cm,a),t=a.ranges!=i.ranges?yi(n.cm,a.ranges,a.ranges.length-1):i),Yi(e,Zi(e,t,r&&r.bias||(ve(t.primary().head,e.sel.primary().head)<0?-1:1),!0)),r&&!1===r.scroll||!e.cm||Sn(e.cm)}function Yi(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,at(e.cm)),lr(e,"cursorActivity",e))}function Xi(e){Yi(e,Zi(e,e.sel,null,!1))}function Zi(e,t,r,n){for(var i,o=0;o<t.ranges.length;o++){var a=t.ranges[o],l=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],s=Qi(e,a.anchor,l&&l.anchor,r,n),c=Qi(e,a.head,l&&l.head,r,n);(i||s!=a.anchor||c!=a.head)&&(i||(i=t.ranges.slice(0,o)),i[o]=new vi(s,c))}return i?yi(e.cm,i,t.primIndex):t}function Ji(e,t,r,n,i){var o=se(e,t.line);if(o.markedSpans)for(var a=0;a<o.markedSpans.length;++a){var l=o.markedSpans[a],s=l.marker;if((null==l.from||(s.inclusiveLeft?l.from<=t.ch:l.from<t.ch))&&(null==l.to||(s.inclusiveRight?l.to>=t.ch:l.to>t.ch))){if(i&&(it(s,"beforeCursorEnter"),s.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!s.atomic)continue;if(r){var c=s.find(n<0?1:-1),u=void 0;if((n<0?s.inclusiveRight:s.inclusiveLeft)&&(c=eo(e,c,-n,c&&c.line==t.line?o:null)),c&&c.line==t.line&&(u=ve(c,r))&&(n<0?u<0:0<u))return Ji(e,c,t,n,i)}var d=s.find(n<0?-1:1);return(n<0?s.inclusiveLeft:s.inclusiveRight)&&(d=eo(e,d,n,d.line==t.line?o:null)),d?Ji(e,d,t,n,i):null}}return t}function Qi(e,t,r,n,i){var o=n||1,a=Ji(e,t,r,o,i)||!i&&Ji(e,t,r,o,!0)||Ji(e,t,r,-o,i)||!i&&Ji(e,t,r,-o,!0);return a||(e.cantEdit=!0,ge(e.first,0))}function eo(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?Ce(e,ge(t.line-1)):null:0<r&&t.ch==(n||se(e,t.line)).text.length?t.line<e.first+e.size-1?ge(t.line+1,0):null:new ge(t.line,t.ch+r)}function to(e){e.setSelection(ge(e.firstLine(),0),ge(e.lastLine()),q)}function ro(i,e,t){var o={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return o.canceled=!0}};return t&&(o.update=function(e,t,r,n){e&&(o.from=Ce(i,e)),t&&(o.to=Ce(i,t)),r&&(o.text=r),void 0!==n&&(o.origin=n)}),it(i,"beforeChange",i,o),i.cm&&it(i.cm,"beforeChange",i.cm,o),o.canceled?null:{from:o.from,to:o.to,text:o.text,origin:o.origin}}function no(e,t,r){if(e.cm){if(!e.cm.curOp)return Gn(e.cm,no)(e,t,r);if(e.cm.state.suppressEdits)return}if(!(lt(e,"beforeChange")||e.cm&&lt(e.cm,"beforeChange"))||(t=ro(e,t,!0))){var n=Se&&!r&&function(e,t,r){var n=null;if(e.iter(t.line,r.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var r=e.markedSpans[t].marker;!r.readOnly||n&&-1!=R(n,r)||(n||(n=[])).push(r)}}),!n)return null;for(var i=[{from:t,to:r}],o=0;o<n.length;++o)for(var a=n[o],l=a.find(0),s=0;s<i.length;++s){var c=i[s];if(!(ve(c.to,l.from)<0||0<ve(c.from,l.to))){var u=[s,1],d=ve(c.from,l.from),f=ve(c.to,l.to);(d<0||!a.inclusiveLeft&&!d)&&u.push({from:c.from,to:l.from}),(0<f||!a.inclusiveRight&&!f)&&u.push({from:l.to,to:c.to}),i.splice.apply(i,u),s+=u.length-3}}return i}(e,t.from,t.to);if(n)for(var i=n.length-1;0<=i;--i)io(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else io(e,t)}}function io(e,r){if(1!=r.text.length||""!=r.text[0]||0!=ve(r.from,r.to)){var t=ki(e,r);Fi(e,r,t,e.cm?e.cm.curOp.id:NaN),lo(e,r,t,Ne(e,r));var n=[];Ai(e,function(e,t){t||-1!=R(n,e.history)||(fo(e.history,r),n.push(e.history)),lo(e,r,null,Ne(e,r))})}}function oo(i,o,e){var t=i.cm&&i.cm.state.suppressEdits;if(!t||e){for(var a,r=i.history,n=i.sel,l="undo"==o?r.done:r.undone,s="undo"==o?r.undone:r.done,c=0;c<l.length&&(a=l[c],e?!a.ranges||a.equals(i.sel):a.ranges);c++);if(c!=l.length){for(r.lastOrigin=r.lastSelOrigin=null;;){if(!(a=l.pop()).ranges){if(t)return void l.push(a);break}if(zi(a,s),e&&!a.equals(i.sel))return void Gi(i,a,{clearRedo:!1});n=a}var u=[];zi(n,s),s.push({changes:u,generation:r.generation}),r.generation=a.generation||++r.maxGeneration;for(var d=lt(i,"beforeChange")||i.cm&&lt(i.cm,"beforeChange"),f=function(e){var r=a.changes[e];if(r.origin=o,d&&!ro(i,r,!1))return l.length=0,{};u.push(Ei(i,r));var t=e?ki(i,r):Y(l);lo(i,r,t,Ii(i,r)),!e&&i.cm&&i.cm.scrollIntoView({from:r.from,to:wi(r)});var n=[];Ai(i,function(e,t){t||-1!=R(n,e.history)||(fo(e.history,r),n.push(e.history)),lo(e,r,null,Ii(e,r))})},h=a.changes.length-1;0<=h;--h){var p=f(h);if(p)return p.v}}}}function ao(e,t){if(0!=t&&(e.first+=t,e.sel=new gi(X(e.sel.ranges,function(e){return new vi(ge(e.anchor.line+t,e.anchor.ch),ge(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){Xn(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;n<r.viewTo;n++)Zn(e.cm,n,"gutter")}}function lo(e,t,r,n){if(e.cm&&!e.cm.curOp)return Gn(e.cm,lo)(e,t,r,n);if(t.to.line<e.first)ao(e,t.text.length-1-(t.to.line-t.from.line));else if(!(t.from.line>e.lastLine())){if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);ao(e,i),t={from:ge(e.first,0),to:ge(t.to.line+i,t.to.ch),text:[Y(t.text)],origin:t.origin}}var o=e.lastLine();t.to.line>o&&(t={from:t.from,to:ge(o,se(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=ce(e,t.from,t.to),r||(r=ki(e,t)),e.cm?function(e,t,r){var n=e.doc,i=e.display,o=t.from,a=t.to,l=!1,s=o.line;e.options.lineWrapping||(s=fe(Be(se(n,o.line))),n.iter(s,a.line+1,function(e){if(e==i.maxLine)return l=!0}));-1<n.sel.contains(t.from,t.to)&&at(e);Mi(n,t,r,nn(e)),e.options.lineWrapping||(n.iter(s,o.line+t.text.length,function(e){var t=$e(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,l=!1)}),l&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier<t-10)){for(var r=e.first,n=t-1;r<n;n--){var i=se(e,n).stateAfter;if(i&&(!(i instanceof Wt)||n+i.lookAhead<t)){r=n+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,r)}})(n,o.line),ti(e,400);var c=t.text.length-(a.line-o.line)-1;t.full?Xn(e):o.line!=a.line||1!=t.text.length||Li(e.doc,t)?Xn(e,o.line,a.line+1,c):Zn(e,o.line,"text");var u=lt(e,"changes"),d=lt(e,"change");if(d||u){var f={from:o,to:a,text:t.text,removed:t.removed,origin:t.origin};d&&lr(e,"change",e,f),u&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(f)}e.display.selForContextMenu=null}(e.cm,t,n):Mi(e,t,n),$i(e,r,q)}}function so(e,t,r,n,i){var o;n||(n=r),ve(n,r)<0&&(r=(o=[n,r])[0],n=o[1]),"string"==typeof t&&(t=e.splitLines(t)),no(e,{from:r,to:n,text:t,origin:i})}function co(e,t,r,n){r<e.line?e.line+=n:t<e.line&&(e.line=t,e.ch=0)}function uo(e,t,r,n){for(var i=0;i<e.length;++i){var o=e[i],a=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var l=0;l<o.ranges.length;l++)co(o.ranges[l].anchor,t,r,n),co(o.ranges[l].head,t,r,n)}else{for(var s=0;s<o.changes.length;++s){var c=o.changes[s];if(r<c.from.line)c.from=ge(c.from.line+n,c.from.ch),c.to=ge(c.to.line+n,c.to.ch);else if(t<=c.to.line){a=!1;break}}a||(e.splice(0,i+1),i=0)}}}function fo(e,t){var r=t.from.line,n=t.to.line,i=t.text.length-(n-r)-1;uo(e.done,r,n,i),uo(e.undone,r,n,i)}function ho(e,t,r,n){var i=t,o=t;return"number"==typeof t?o=se(e,ke(e,t)):i=fe(t),null==i?null:(n(o,i)&&e.cm&&Zn(e.cm,i,r),o)}function po(e){this.lines=e,this.parent=null;for(var t=0,r=0;r<e.length;++r)e[r].parent=this,t+=e[r].height;this.height=t}function mo(e){this.children=e;for(var t=0,r=0,n=0;n<e.length;++n){var i=e[n];t+=i.chunkSize(),r+=i.height,i.parent=this}this.size=t,this.height=r,this.parent=null}vi.prototype.from=function(){return xe(this.anchor,this.head)},vi.prototype.to=function(){return we(this.anchor,this.head)},vi.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},po.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var r,n=e,i=e+t;n<i;++n){var o=this.lines[n];this.height-=o.height,(r=o).parent=null,Ee(r),lr(o,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,r){this.height+=r,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var n=0;n<t.length;++n)t[n].parent=this},iterN:function(e,t,r){for(var n=e+t;e<n;++e)if(r(this.lines[e]))return!0}},mo.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var r=0;r<this.children.length;++r){var n=this.children[r],i=n.chunkSize();if(e<i){var o=Math.min(t,i-e),a=n.height;if(n.removeInner(e,o),this.height-=a-n.height,i==o&&(this.children.splice(r--,1),n.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(1<this.children.length||!(this.children[0]instanceof po))){var l=[];this.collapse(l),this.children=[new po(l)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,r){this.size+=t.length,this.height+=r;for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<=o){if(i.insertInner(e,t,r),i.lines&&50<i.lines.length){for(var a=i.lines.length%25+25,l=a;l<i.lines.length;){var s=new po(i.lines.slice(l,l+=25));i.height-=s.height,this.children.splice(++n,0,s),s.parent=this}i.lines=i.lines.slice(0,a),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=new mo(e.children.splice(e.children.length-5,5));if(e.parent){e.size-=t.size,e.height-=t.height;var r=R(e.parent.children,e);e.parent.children.splice(r+1,0,t)}else{var n=new mo(e.children);(n.parent=e).children=[n,t],e=n}t.parent=e.parent}while(10<e.children.length);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<o){var a=Math.min(t,o-e);if(i.iterN(e,a,r))return!0;if(0==(t-=a))break;e=0}else e-=o}}};var go=function(e,t,r){if(r)for(var n in r)r.hasOwnProperty(n)&&(this[n]=r[n]);this.doc=e,this.node=t};function vo(e,t,r){Ge(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&Tn(e,r)}go.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,r=this.line,n=fe(r);if(null!=n&&t){for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(r.widgets=null);var o=br(this);de(r,Math.max(0,r.height-o)),e&&(Vn(e,function(){vo(e,r,-o),Zn(e,n,"widget")}),lr(e,"lineWidgetCleared",e,this,n))}},go.prototype.changed=function(){var e=this,t=this.height,r=this.doc.cm,n=this.line;this.height=null;var i=br(this)-t;i&&(Ke(this.doc,n)||de(n,n.height+i),r&&Vn(r,function(){r.curOp.forceUpdate=!0,vo(r,n,i),lr(r,"lineWidgetChanged",r,e,fe(n))}))},st(go);var yo=0,bo=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++yo};function wo(t,n,i,e,r){if(e&&e.shared)return function(e,r,n,i,o){(i=P(i)).shared=!1;var a=[wo(e,r,n,i,o)],l=a[0],s=i.widgetNode;return Ai(e,function(e){s&&(i.widgetNode=s.cloneNode(!0)),a.push(wo(e,Ce(e,r),Ce(e,n),i,o));for(var t=0;t<e.linked.length;++t)if(e.linked[t].isParent)return;l=Y(a)}),new xo(a,l)}(t,n,i,e,r);if(t.cm&&!t.cm.curOp)return Gn(t.cm,wo)(t,n,i,e,r);var o=new bo(t,r),a=ve(n,i);if(e&&P(e,o,!1),0<a||0==a&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=O("span",[o.replacedWith],"CodeMirror-widget"),e.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),e.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(je(t,n.line,n,i,o)||n.line!=i.line&&je(t,i.line,n,i,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Le=!0}o.addToHistory&&Fi(t,{from:n,to:i,origin:"markText"},t.sel,NaN);var l,s=n.line,c=t.cm;if(t.iter(s,i.line+1,function(e){var t,r;c&&o.collapsed&&!c.options.lineWrapping&&Be(e)==c.display.maxLine&&(l=!0),o.collapsed&&s!=n.line&&de(e,0),t=e,r=new Me(o,s==n.line?n.ch:null,s==i.line?i.ch:null),t.markedSpans=t.markedSpans?t.markedSpans.concat([r]):[r],r.marker.attachLine(t),++s}),o.collapsed&&t.iter(n.line,i.line+1,function(e){Ke(t,e)&&de(e,0)}),o.clearOnEnter&&tt(o,"beforeCursorEnter",function(){return o.clear()}),o.readOnly&&(Se=!0,(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++yo,o.atomic=!0),c){if(l&&(c.curOp.updateMaxLine=!0),o.collapsed)Xn(c,n.line,i.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var u=n.line;u<=i.line;u++)Zn(c,u,"text");o.atomic&&Xi(c.doc),lr(c,"markerAdded",c,o)}return o}bo.prototype.clear=function(){var e=this;if(!this.explicitlyCleared){var t=this.doc.cm,r=t&&!t.curOp;if(r&&Rn(t),lt(this,"clear")){var n=this.find();n&&lr(this,"clear",n.from,n.to)}for(var i=null,o=null,a=0;a<this.lines.length;++a){var l=e.lines[a],s=Ae(l.markedSpans,e);t&&!e.collapsed?Zn(t,fe(l),"text"):t&&(null!=s.to&&(o=fe(l)),null!=s.from&&(i=fe(l))),l.markedSpans=Oe(l.markedSpans,s),null==s.from&&e.collapsed&&!Ke(e.doc,l)&&t&&de(l,Qr(t.display))}if(t&&this.collapsed&&!t.options.lineWrapping)for(var c=0;c<this.lines.length;++c){var u=Be(e.lines[c]),d=$e(u);d>t.display.maxLineLength&&(t.display.maxLine=u,t.display.maxLineLength=d,t.display.maxLineChanged=!0)}null!=i&&t&&this.collapsed&&Xn(t,i,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&Xi(t.doc)),t&&lr(t,"markerCleared",t,this,i,o),r&&jn(t),this.parent&&this.parent.clear()}},bo.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i<this.lines.length;++i){var o=this.lines[i],a=Ae(o.markedSpans,this);if(null!=a.from&&(r=ge(t?o:fe(o),a.from),-1==e))return r;if(null!=a.to&&(n=ge(t?o:fe(o),a.to),1==e))return n}return r&&{from:r,to:n}},bo.prototype.changed=function(){var o=this,a=this.find(-1,!0),l=this,s=this.doc.cm;a&&s&&Vn(s,function(){var e=a.line,t=fe(a.line),r=Or(s,t);if(r&&(zr(r),s.curOp.selectionChanged=s.curOp.forceUpdate=!0),s.curOp.updateMaxLine=!0,!Ke(l.doc,e)&&null!=l.height){var n=l.height;l.height=null;var i=br(l)-n;i&&de(e,e.height+i)}lr(s,"markerChanged",s,o)})},bo.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;t.maybeHiddenMarkers&&-1!=R(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},bo.prototype.detachLine=function(e){if(this.lines.splice(R(this.lines,e),1),!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}},st(bo);var xo=function(e,t){this.markers=e,this.primary=t;for(var r=0;r<e.length;++r)e[r].parent=this};function ko(e){return e.findMarks(ge(e.first,0),e.clipPos(ge(e.lastLine())),function(e){return e.parent})}function Co(o){for(var e=function(e){var t=o[e],r=[t.primary.doc];Ai(t.primary.doc,function(e){return r.push(e)});for(var n=0;n<t.markers.length;n++){var i=t.markers[n];-1==R(r,i.doc)&&(i.parent=null,t.markers.splice(n--,1))}},t=0;t<o.length;t++)e(t)}xo.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();lr(this,"clear")}},xo.prototype.find=function(e,t){return this.primary.find(e,t)},st(xo);var To=0,So=function(e,t,r,n,i){if(!(this instanceof So))return new So(e,t,r,n,i);null==r&&(r