diff --git a/app/assets/javascripts/admin/controllers/admin-group.js.es6 b/app/assets/javascripts/admin/controllers/admin-group.js.es6
index 89b448b52a0..012f2da9e8e 100644
--- a/app/assets/javascripts/admin/controllers/admin-group.js.es6
+++ b/app/assets/javascripts/admin/controllers/admin-group.js.es6
@@ -3,12 +3,12 @@ export default Em.ObjectController.extend({
disableSave: false,
currentPage: function() {
- if (this.get("user_count") == 0) { return 0; }
+ if (this.get("user_count") === 0) { return 0; }
return Math.floor(this.get("offset") / this.get("limit")) + 1;
}.property("limit", "offset", "user_count"),
totalPages: function() {
- if (this.get("user_count") == 0) { return 0; }
+ if (this.get("user_count") === 0) { return 0; }
return Math.floor(this.get("user_count") / this.get("limit")) + 1;
}.property("limit", "user_count"),
diff --git a/app/assets/javascripts/admin/controllers/admin-logs-screened-emails.js.es6 b/app/assets/javascripts/admin/controllers/admin-logs-screened-emails.js.es6
index 1d6a083594b..e467be5b176 100644
--- a/app/assets/javascripts/admin/controllers/admin-logs-screened-emails.js.es6
+++ b/app/assets/javascripts/admin/controllers/admin-logs-screened-emails.js.es6
@@ -4,19 +4,19 @@ export default Ember.ArrayController.extend(Discourse.Presence, {
loading: false,
actions: {
- clearBlock: function(row){
+ clearBlock(row){
row.clearBlock().then(function(){
// feeling lazy
window.location.reload();
});
},
- exportScreenedEmailList: function(subject) {
+ exportScreenedEmailList() {
Discourse.ExportCsv.exportScreenedEmailList().then(outputExportResult);
}
},
- show: function() {
+ show() {
var self = this;
self.set('loading', true);
Discourse.ScreenedEmail.findAll().then(function(result) {
diff --git a/app/assets/javascripts/admin/controllers/admin-logs-screened-ip-addresses.js.es6 b/app/assets/javascripts/admin/controllers/admin-logs-screened-ip-addresses.js.es6
index a602973409a..dcbd6505e1f 100644
--- a/app/assets/javascripts/admin/controllers/admin-logs-screened-ip-addresses.js.es6
+++ b/app/assets/javascripts/admin/controllers/admin-logs-screened-ip-addresses.js.es6
@@ -15,15 +15,15 @@ export default Ember.ArrayController.extend(Discourse.Presence, {
}, 250).observes("filter"),
actions: {
- recordAdded: function(arg) {
+ recordAdded(arg) {
this.get("model").unshiftObject(arg);
},
- rollUp: function() {
- var self = this;
+ rollUp() {
+ const self = this;
return bootbox.confirm(I18n.t("admin.logs.screened_ips.roll_up_confirm"), I18n.t("no_value"), I18n.t("yes_value"), function (confirmed) {
if (confirmed) {
- self.set("loading", true)
+ self.set("loading", true);
return Discourse.ScreenedIpAddress.rollUp().then(function(results) {
if (results && results.subnets) {
if (results.subnets.length > 0) {
@@ -39,7 +39,7 @@ export default Ember.ArrayController.extend(Discourse.Presence, {
});
},
- exportScreenedIpList: function(subject) {
+ exportScreenedIpList() {
Discourse.ExportCsv.exportScreenedIpList().then(outputExportResult);
}
}
diff --git a/app/assets/javascripts/admin/controllers/admin-logs-screened-urls.js.es6 b/app/assets/javascripts/admin/controllers/admin-logs-screened-urls.js.es6
index 153a3833729..003dedca089 100644
--- a/app/assets/javascripts/admin/controllers/admin-logs-screened-urls.js.es6
+++ b/app/assets/javascripts/admin/controllers/admin-logs-screened-urls.js.es6
@@ -3,8 +3,8 @@ import { outputExportResult } from 'discourse/lib/export-result';
export default Ember.ArrayController.extend(Discourse.Presence, {
loading: false,
- show: function() {
- var self = this;
+ show() {
+ const self = this;
self.set('loading', true);
Discourse.ScreenedUrl.findAll().then(function(result) {
self.set('model', result);
@@ -13,7 +13,7 @@ export default Ember.ArrayController.extend(Discourse.Presence, {
},
actions: {
- exportScreenedUrlList: function(subject) {
+ exportScreenedUrlList() {
Discourse.ExportCsv.exportScreenedUrlList().then(outputExportResult);
}
}
diff --git a/app/assets/javascripts/admin/routes/admin-groups-index.js.es6 b/app/assets/javascripts/admin/routes/admin-groups-index.js.es6
index 33c42cbb0f9..e650d150fb7 100644
--- a/app/assets/javascripts/admin/routes/admin-groups-index.js.es6
+++ b/app/assets/javascripts/admin/routes/admin-groups-index.js.es6
@@ -2,4 +2,4 @@ export default Discourse.Route.extend({
redirect: function() {
this.transitionTo("adminGroupsType", "custom");
}
-})
+});
diff --git a/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 b/app/assets/javascripts/admin/routes/admin-groups-type.js.es6
index 5c04e25064a..4f944f9dbcf 100644
--- a/app/assets/javascripts/admin/routes/admin-groups-type.js.es6
+++ b/app/assets/javascripts/admin/routes/admin-groups-type.js.es6
@@ -1,17 +1,17 @@
export default Discourse.Route.extend({
- model: function(params) {
+ model(params) {
return Discourse.Group.findAll().then(function(groups) {
return groups.filterBy("type", params.type);
});
},
actions: {
- newGroup: function() {
- var self = this;
+ newGroup() {
+ const self = this;
this.transitionTo("adminGroupsType", "custom").then(function() {
var group = Discourse.Group.create({ automatic: false, visible: true });
self.transitionTo("adminGroup", group);
- })
+ });
}
}
});
diff --git a/app/assets/javascripts/discourse/components/password-field.js.es6 b/app/assets/javascripts/discourse/components/password-field.js.es6
index 902b0a651ff..67fca9b9c96 100644
--- a/app/assets/javascripts/discourse/components/password-field.js.es6
+++ b/app/assets/javascripts/discourse/components/password-field.js.es6
@@ -3,16 +3,11 @@ import TextField from 'discourse/components/text-field';
/**
Same as text-field, but with special features for a password input.
Be sure to test on a variety of browsers and operating systems when changing this logic.
-
- @class PasswordFieldView
- @extends Discourse.TextFieldView
- @namespace Discourse
- @module Discourse
**/
export default TextField.extend({
canToggle: false,
- keyPress: function(e) {
+ keyPress(e) {
if ((e.which >= 65 && e.which <= 90 && !e.shiftKey) || (e.which >= 97 && e.which <= 122 && e.shiftKey)) {
this.set('canToggle', true);
this.set('capsLockOn', true);
@@ -22,17 +17,17 @@ export default TextField.extend({
}
},
- keyUp: function(e) {
- if (e.which == 20 && this.get('canToggle')) {
+ keyUp(e) {
+ if (e.which === 20 && this.get('canToggle')) {
this.toggleProperty('capsLockOn');
}
},
- focusOut: function(e) {
+ focusOut() {
this.set('capsLockOn', false);
},
- focusIn: function() {
+ focusIn() {
this.set('canToggle', false); // can't know the state of caps lock yet. keyPress will figure it out.
}
});
diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6
index b13e46c00d0..bcef6b48263 100644
--- a/app/assets/javascripts/discourse/controllers/composer.js.es6
+++ b/app/assets/javascripts/discourse/controllers/composer.js.es6
@@ -62,7 +62,7 @@ export default DiscourseController.extend({
this.set('model.loading', true);
var composer = this;
return Discourse.Post.load(postId).then(function(post) {
- var quote = Discourse.Quote.build(post, post.get("raw"))
+ var quote = Discourse.Quote.build(post, post.get("raw"));
composer.appendBlockAtCursor(quote);
composer.set('model.loading', false);
});
diff --git a/app/assets/javascripts/discourse/controllers/flag.js.es6 b/app/assets/javascripts/discourse/controllers/flag.js.es6
index 503c6e39989..53bb84b1b6a 100644
--- a/app/assets/javascripts/discourse/controllers/flag.js.es6
+++ b/app/assets/javascripts/discourse/controllers/flag.js.es6
@@ -81,7 +81,7 @@ export default ObjectController.extend(ModalFunctionality, {
if (opts) params = $.extend(params, opts);
this.send('hideModal');
- postAction.act(params).then(function(result) {
+ postAction.act(params).then(function() {
self.send('closeModal');
}, function(errors) {
self.send('closeModal');
diff --git a/app/assets/javascripts/discourse/controllers/quote-button.js.es6 b/app/assets/javascripts/discourse/controllers/quote-button.js.es6
index 23e076242a2..3b0d20c00d7 100644
--- a/app/assets/javascripts/discourse/controllers/quote-button.js.es6
+++ b/app/assets/javascripts/discourse/controllers/quote-button.js.es6
@@ -1,7 +1,6 @@
+/* global assetPath:true */
import DiscourseController from 'discourse/controllers/controller';
-/*global assetPath:true */
-
export default DiscourseController.extend({
needs: ['topic', 'composer'],
@@ -55,7 +54,7 @@ export default DiscourseController.extend({
// create a marker element
var markerElement = document.createElement("span");
// containing a single invisible character
- markerElement.appendChild(document.createTextNode("\ufeff"));
+ markerElement.appendChild(document.createTextNode("\u{feff}"));
// collapse the range at the beginning/end of the selection
range.collapse(!Discourse.Mobile.isMobileDevice);
diff --git a/app/assets/javascripts/discourse/controllers/topic-list-item.js.es6 b/app/assets/javascripts/discourse/controllers/topic-list-item.js.es6
index e5128e2744f..073180ea783 100644
--- a/app/assets/javascripts/discourse/controllers/topic-list-item.js.es6
+++ b/app/assets/javascripts/discourse/controllers/topic-list-item.js.es6
@@ -1,7 +1,7 @@
import ObjectController from 'discourse/controllers/object';
// Handles displaying of a topic as a list item
-export default Ember.ObjectController.extend({
+export default ObjectController.extend({
needs: ['discovery/topics'],
canStar: Em.computed.alias('controllers.discovery/topics.currentUser.id'),
diff --git a/app/assets/javascripts/discourse/controllers/user-posts.js.es6 b/app/assets/javascripts/discourse/controllers/user-posts.js.es6
index eacec20213e..dd2f58f6954 100644
--- a/app/assets/javascripts/discourse/controllers/user-posts.js.es6
+++ b/app/assets/javascripts/discourse/controllers/user-posts.js.es6
@@ -2,6 +2,6 @@ export default Ember.ObjectController.extend({
needs: ["application"],
_showFooter: function() {
- this.set("controllers.application.showFooter", !this.get("canLoadMore"))
+ this.set("controllers.application.showFooter", !this.get("canLoadMore"));
}.observes("canLoadMore")
});
diff --git a/app/assets/javascripts/discourse/helpers/raw.js.es6 b/app/assets/javascripts/discourse/helpers/raw.js.es6
index 4c4580e334c..fc4cb44edee 100644
--- a/app/assets/javascripts/discourse/helpers/raw.js.es6
+++ b/app/assets/javascripts/discourse/helpers/raw.js.es6
@@ -1,7 +1,7 @@
import registerUnbound from 'discourse/helpers/register-unbound';
-function renderRaw(template, templateName, params) {
- params.parent = params.parent || this;
+function renderRaw(ctx, template, templateName, params) {
+ params.parent = params.parent || ctx;
if (!params.view) {
var viewClass = Discourse.__container__.lookupFactory('view:' + templateName);
@@ -20,7 +20,5 @@ registerUnbound('raw', function(templateName, params) {
return;
}
- return renderRaw.call(this, template, templateName, params);
+ return renderRaw(this, template, templateName, params);
});
-
-export { renderRaw };
diff --git a/app/assets/javascripts/discourse/helpers/register-unbound.js.es6 b/app/assets/javascripts/discourse/helpers/register-unbound.js.es6
index 790f77d241a..282cb4e0e5d 100644
--- a/app/assets/javascripts/discourse/helpers/register-unbound.js.es6
+++ b/app/assets/javascripts/discourse/helpers/register-unbound.js.es6
@@ -1,18 +1,17 @@
-var get = Discourse.EmberCompatHandlebars.get;
+const get = Discourse.EmberCompatHandlebars.get;
-export function resolveParams(options) {
- var params = {},
- hash = options.hash;
+function resolveParams(ctx, options) {
+ let params = {};
+ const hash = options.hash;
if (hash) {
- var self = this;
if (options.hashTypes) {
Ember.keys(hash).forEach(function(k) {
- var type = options.hashTypes[k];
+ const type = options.hashTypes[k];
if (type === "STRING") {
params[k] = hash[k];
} else if (type === "ID") {
- params[k] = get(self, hash[k], options);
+ params[k] = get(ctx, hash[k], options);
}
});
} else {
@@ -24,12 +23,10 @@ export function resolveParams(options) {
export default function registerUnbound(name, fn) {
Handlebars.registerHelper(name, function(property, options) {
-
if (options.types && options.types[0] === "ID") {
property = get(this, property, options);
}
- var params = resolveParams.call(this, options);
- return fn.apply(this,[property, params]);
+ return fn.call(this, property, resolveParams(this, options));
});
}
diff --git a/app/assets/javascripts/discourse/helpers/user-status.js.es6 b/app/assets/javascripts/discourse/helpers/user-status.js.es6
index 297dd861266..7976d5b5d1d 100644
--- a/app/assets/javascripts/discourse/helpers/user-status.js.es6
+++ b/app/assets/javascripts/discourse/helpers/user-status.js.es6
@@ -1,6 +1,6 @@
import registerUnbound from 'discourse/helpers/register-unbound';
-var safe = Handlebars.SafeString;
+const Safe = Handlebars.SafeString;
registerUnbound('user-status', function(user) {
if (!user) { return; }
@@ -10,11 +10,11 @@ registerUnbound('user-status', function(user) {
if(Discourse.User.currentProp("admin") || Discourse.User.currentProp("moderator")) {
if(user.get('admin')) {
var adminDesc = I18n.t('user.admin', {user: name});
- return new safe('');
+ return new Safe('');
}
}
if(user.get('moderator')){
var modDesc = I18n.t('user.moderator', {user: name});
- return new safe('');
+ return new Safe('');
}
});
diff --git a/app/assets/javascripts/discourse/initializers/logout.js.es6 b/app/assets/javascripts/discourse/initializers/logout.js.es6
index a65de91d7a2..926ae3beb73 100644
--- a/app/assets/javascripts/discourse/initializers/logout.js.es6
+++ b/app/assets/javascripts/discourse/initializers/logout.js.es6
@@ -8,7 +8,7 @@ export default {
initialize: function () {
if (!Discourse.MessageBus) { return; }
- Discourse.MessageBus.subscribe("/logout", function (user_id) {
+ Discourse.MessageBus.subscribe("/logout", function () {
var refresher = function() {
var redirect = Discourse.SiteSettings.logout_redirect;
if(redirect.length === 0){
@@ -17,7 +17,7 @@ export default {
window.location.href = redirect;
}
};
- bootbox.dialog(I18n.t("logout"), {label: I18n.t("refresh"), callback: refresher}, {onEscape: refresher, backdrop: 'static'})
+ bootbox.dialog(I18n.t("logout"), {label: I18n.t("refresh"), callback: refresher}, {onEscape: refresher, backdrop: 'static'});
});
}
};
diff --git a/app/assets/javascripts/discourse/lib/app-events.js.es6 b/app/assets/javascripts/discourse/lib/app-events.js.es6
index 26135d3f7c5..597c21b83df 100644
--- a/app/assets/javascripts/discourse/lib/app-events.js.es6
+++ b/app/assets/javascripts/discourse/lib/app-events.js.es6
@@ -1,11 +1,10 @@
-export default Ember.Object.extend(Ember.Evented);
var id = 1;
function newKey() {
return "_view_app_event_" + (id++);
}
-export function createViewListener(eventName, cb) {
+function createViewListener(eventName, cb) {
var extension = {};
extension[newKey()] = function() {
this.appEvents.on(eventName, this, cb);
@@ -18,6 +17,9 @@ export function createViewListener(eventName, cb) {
return extension;
}
-export function listenForViewEvent(viewClass, eventName, cb) {
+function listenForViewEvent(viewClass, eventName, cb) {
viewClass.reopen(createViewListener(eventName, cb));
}
+
+export { listenForViewEvent, createViewListener };
+export default Ember.Object.extend(Ember.Evented);
diff --git a/app/assets/javascripts/discourse/lib/autocomplete.js.es6 b/app/assets/javascripts/discourse/lib/autocomplete.js.es6
index c945e37a47c..5dc9b87fd14 100644
--- a/app/assets/javascripts/discourse/lib/autocomplete.js.es6
+++ b/app/assets/javascripts/discourse/lib/autocomplete.js.es6
@@ -270,7 +270,7 @@ export default function(options) {
updateAutoComplete(options.dataSource(""));
}
} else if ((completeStart !== null) && (e.charCode !== 0)) {
- caretPosition = Discourse.Utilities.caretPosition(me[0]),
+ caretPosition = Discourse.Utilities.caretPosition(me[0]);
term = me.val().substring(completeStart + (options.key ? 1 : 0), caretPosition);
term += String.fromCharCode(e.charCode);
updateAutoComplete(options.dataSource(term));
diff --git a/app/assets/javascripts/discourse/lib/emoji/emoji-toolbar.js.es6 b/app/assets/javascripts/discourse/lib/emoji/emoji-toolbar.js.es6
index 2de2a76f54a..b9c7a5656c2 100644
--- a/app/assets/javascripts/discourse/lib/emoji/emoji-toolbar.js.es6
+++ b/app/assets/javascripts/discourse/lib/emoji/emoji-toolbar.js.es6
@@ -136,7 +136,7 @@ var bindEvents = function(page,offset){
$('.emoji-page a').click(function(){
var title = $(this).attr('title');
- trackEmojiUsage(title)
+ trackEmojiUsage(title);
composerController.appendTextAtCursor(":" + title + ":", {space: true});
closeSelector();
return false;
diff --git a/app/assets/javascripts/discourse/mixins/show-footer.js.es6 b/app/assets/javascripts/discourse/mixins/show-footer.js.es6
index 8ae74e967e9..a83fdbcf2d0 100644
--- a/app/assets/javascripts/discourse/mixins/show-footer.js.es6
+++ b/app/assets/javascripts/discourse/mixins/show-footer.js.es6
@@ -13,4 +13,4 @@ export default Em.Mixin.create({
return true;
}
}
-})
+});
diff --git a/app/assets/javascripts/discourse/routes/topic.js.es6 b/app/assets/javascripts/discourse/routes/topic.js.es6
index 31397b3779b..993aeab1623 100644
--- a/app/assets/javascripts/discourse/routes/topic.js.es6
+++ b/app/assets/javascripts/discourse/routes/topic.js.es6
@@ -21,7 +21,7 @@ var TopicRoute = Discourse.Route.extend(ShowFooter, {
cat = model.get('category');
// Only display uncategorized in the title tag if it was renamed
- if (cat && !(cat.get('isUncategorizedCategory') && cat.get('name').toLowerCase() == "uncategorized")) {
+ if (cat && !(cat.get('isUncategorizedCategory') && cat.get('name').toLowerCase() === "uncategorized")) {
var catName = cat.get('name'),
parentCategory = cat.get('parentCategory');
@@ -96,7 +96,6 @@ var TopicRoute = Discourse.Route.extend(ShowFooter, {
// Use replaceState to update the URL once it changes
postChangedRoute: function(currentPost) {
-
// do nothing if we are transitioning to another route
if (isTransitioning || Discourse.TopicRoute.disableReplaceState) { return; }
diff --git a/app/assets/javascripts/discourse/views/topic-admin-menu.js.es6 b/app/assets/javascripts/discourse/views/topic-admin-menu.js.es6
index c205419c0f4..d19b33d9702 100644
--- a/app/assets/javascripts/discourse/views/topic-admin-menu.js.es6
+++ b/app/assets/javascripts/discourse/views/topic-admin-menu.js.es6
@@ -30,7 +30,7 @@ export default Discourse.View.extend({
position: "absolute",
top: location.top - $this.innerHeight() + 5,
left: location.left,
- })
+ });
break;
}
case "fixed": {
@@ -38,7 +38,7 @@ export default Discourse.View.extend({
position: "fixed",
top: location.top,
left: location.left - $this.innerWidth(),
- })
+ });
break;
}
}
diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb
index 666fbe662f2..54f96a52fec 100644
--- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb
+++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb
@@ -99,8 +99,16 @@ module Tilt
# Include JS code for JSHint
unless Rails.env.production?
- req_path = "/assets/#{scope.logical_path}.js"
- @output << "\nwindow.__jshintSrc = window.__jshintSrc || {}; window.__jshintSrc['#{req_path}'] = #{source.to_json};\n"
+ if scope.pathname.to_s =~ /js\.es6/
+ extension = "js.es6"
+ elsif scope.pathname.to_s =~ /\.es6/
+ extension = "es6"
+ else
+ extension = "js"
+ end
+ req_path = "/assets/#{scope.logical_path}.#{extension}"
+
+ @output << "\nwindow.__jshintSrc = window.__jshintSrc || {}; window.__jshintSrc['#{req_path}'] = #{data.to_json};\n"
end
@output
diff --git a/test/javascripts/jshint-test.js.es6.erb b/test/javascripts/jshint-test.js.es6.erb
index f966c43c284..cccd67f15c9 100644
--- a/test/javascripts/jshint-test.js.es6.erb
+++ b/test/javascripts/jshint-test.js.es6.erb
@@ -1,38 +1,17 @@
module("JSHint");
-var qHint = function(name, sourceFile, options, globals) {
- if (sourceFile === undefined || typeof(sourceFile) == "object") {
- // jsHintTest('file.js', [options])
- globals = options;
- options = sourceFile;
- sourceFile = name;
- }
+<%= "const JSHINT_OPTS = #{File.read(File.join(Rails.root, '.jshintrc'))};" %>
+var qHint = function(name, sourceFile) {
return asyncTestDiscourse(name, function() {
if (typeof window.__jshintSrc !== "undefined") {
var src = window.__jshintSrc[sourceFile];
if (src) {
start();
- qHint.validateFile(src, options, globals);
+ qHint.validateFile(src, JSHINT_OPTS);
return;
}
}
-
-
- console.warn("Using AJAX for JSHint " + sourceFile);
-
- qHint.sendRequest(sourceFile, function(req) {
- start();
-
- if (req.status == 200) {
-
- var text = req.responseText;
- qHint.validateFile(text, options, globals);
- } else {
- ok(false, "HTTP error " + req.status +
- " while fetching " + sourceFile);
- }
- });
});
};
@@ -100,6 +79,7 @@ qHint.sendRequest = function (url, callback) {
req.send();
};
+
<%
TO_IGNORE = File.read("#{Rails.root}/.jshintignore").split("\n")
@@ -115,7 +95,7 @@ qHint.sendRequest = function (url, callback) {
end
depend_on filename
- result << "qHint('#{filename}', '/assets/#{filename}', #{File.read(File.join(Rails.root, '.jshintrc'))});\n" if ok
+ result << "qHint('#{filename}', '/assets/#{filename}', JSHINT_OPTS);\n" if ok
end
result
@@ -124,5 +104,5 @@ qHint.sendRequest = function (url, callback) {
<%= jshint("#{Rails.root}/test/**/*.js", "test/javascripts/") %>
<%= jshint("#{Rails.root}/app/assets/javascripts/**/*.js", "app/assets/javascripts/") %>
-
+<%= jshint("#{Rails.root}/app/assets/javascripts/**/*.es6", "app/assets/javascripts/") %>
diff --git a/vendor/assets/javascripts/jshint.js b/vendor/assets/javascripts/jshint.js
index 19155b58f9a..538f9a7099d 100644
--- a/vendor/assets/javascripts/jshint.js
+++ b/vendor/assets/javascripts/jshint.js
@@ -1,50083 +1,44 @@
-// 2.4.0
+/*! 2.6.0 */
var JSHINT;
if (typeof window === 'undefined') window = {};
(function () {
var require;
-require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 65 && i <= 90 || // A-Z
- i === 95 || // _
- i >= 97 && i <= 122; // a-z
+ identifierStartTable[i] =
+ i === 36 || // $
+ i >= 65 && i <= 90 || // A-Z
+ i === 95 || // _
+ i >= 97 && i <= 122; // a-z
}
var identifierPartTable = [];
for (var i = 0; i < 128; i++) {
- identifierPartTable[i] =
- identifierStartTable[i] || // $, _, A-Z, a-z
- i >= 48 && i <= 57; // 0-9
+ identifierPartTable[i] =
+ identifierStartTable[i] || // $, _, A-Z, a-z
+ i >= 48 && i <= 57; // 0-9
}
module.exports = {
- asciiIdentifierStartTable: identifierStartTable,
- asciiIdentifierPartTable: identifierPartTable
+ asciiIdentifierStartTable: identifierStartTable,
+ asciiIdentifierPartTable: identifierPartTable
};
},{}],2:[function(require,module,exports){
-module.exports = [
- 768,
- 769,
- 770,
- 771,
- 772,
- 773,
- 774,
- 775,
- 776,
- 777,
- 778,
- 779,
- 780,
- 781,
- 782,
- 783,
- 784,
- 785,
- 786,
- 787,
- 788,
- 789,
- 790,
- 791,
- 792,
- 793,
- 794,
- 795,
- 796,
- 797,
- 798,
- 799,
- 800,
- 801,
- 802,
- 803,
- 804,
- 805,
- 806,
- 807,
- 808,
- 809,
- 810,
- 811,
- 812,
- 813,
- 814,
- 815,
- 816,
- 817,
- 818,
- 819,
- 820,
- 821,
- 822,
- 823,
- 824,
- 825,
- 826,
- 827,
- 828,
- 829,
- 830,
- 831,
- 832,
- 833,
- 834,
- 835,
- 836,
- 837,
- 838,
- 839,
- 840,
- 841,
- 842,
- 843,
- 844,
- 845,
- 846,
- 847,
- 848,
- 849,
- 850,
- 851,
- 852,
- 853,
- 854,
- 855,
- 856,
- 857,
- 858,
- 859,
- 860,
- 861,
- 862,
- 863,
- 864,
- 865,
- 866,
- 867,
- 868,
- 869,
- 870,
- 871,
- 872,
- 873,
- 874,
- 875,
- 876,
- 877,
- 878,
- 879,
- 1155,
- 1156,
- 1157,
- 1158,
- 1159,
- 1425,
- 1426,
- 1427,
- 1428,
- 1429,
- 1430,
- 1431,
- 1432,
- 1433,
- 1434,
- 1435,
- 1436,
- 1437,
- 1438,
- 1439,
- 1440,
- 1441,
- 1442,
- 1443,
- 1444,
- 1445,
- 1446,
- 1447,
- 1448,
- 1449,
- 1450,
- 1451,
- 1452,
- 1453,
- 1454,
- 1455,
- 1456,
- 1457,
- 1458,
- 1459,
- 1460,
- 1461,
- 1462,
- 1463,
- 1464,
- 1465,
- 1466,
- 1467,
- 1468,
- 1469,
- 1471,
- 1473,
- 1474,
- 1476,
- 1477,
- 1479,
- 1552,
- 1553,
- 1554,
- 1555,
- 1556,
- 1557,
- 1558,
- 1559,
- 1560,
- 1561,
- 1562,
- 1611,
- 1612,
- 1613,
- 1614,
- 1615,
- 1616,
- 1617,
- 1618,
- 1619,
- 1620,
- 1621,
- 1622,
- 1623,
- 1624,
- 1625,
- 1626,
- 1627,
- 1628,
- 1629,
- 1630,
- 1631,
- 1632,
- 1633,
- 1634,
- 1635,
- 1636,
- 1637,
- 1638,
- 1639,
- 1640,
- 1641,
- 1648,
- 1750,
- 1751,
- 1752,
- 1753,
- 1754,
- 1755,
- 1756,
- 1759,
- 1760,
- 1761,
- 1762,
- 1763,
- 1764,
- 1767,
- 1768,
- 1770,
- 1771,
- 1772,
- 1773,
- 1776,
- 1777,
- 1778,
- 1779,
- 1780,
- 1781,
- 1782,
- 1783,
- 1784,
- 1785,
- 1809,
- 1840,
- 1841,
- 1842,
- 1843,
- 1844,
- 1845,
- 1846,
- 1847,
- 1848,
- 1849,
- 1850,
- 1851,
- 1852,
- 1853,
- 1854,
- 1855,
- 1856,
- 1857,
- 1858,
- 1859,
- 1860,
- 1861,
- 1862,
- 1863,
- 1864,
- 1865,
- 1866,
- 1958,
- 1959,
- 1960,
- 1961,
- 1962,
- 1963,
- 1964,
- 1965,
- 1966,
- 1967,
- 1968,
- 1984,
- 1985,
- 1986,
- 1987,
- 1988,
- 1989,
- 1990,
- 1991,
- 1992,
- 1993,
- 2027,
- 2028,
- 2029,
- 2030,
- 2031,
- 2032,
- 2033,
- 2034,
- 2035,
- 2070,
- 2071,
- 2072,
- 2073,
- 2075,
- 2076,
- 2077,
- 2078,
- 2079,
- 2080,
- 2081,
- 2082,
- 2083,
- 2085,
- 2086,
- 2087,
- 2089,
- 2090,
- 2091,
- 2092,
- 2093,
- 2137,
- 2138,
- 2139,
- 2276,
- 2277,
- 2278,
- 2279,
- 2280,
- 2281,
- 2282,
- 2283,
- 2284,
- 2285,
- 2286,
- 2287,
- 2288,
- 2289,
- 2290,
- 2291,
- 2292,
- 2293,
- 2294,
- 2295,
- 2296,
- 2297,
- 2298,
- 2299,
- 2300,
- 2301,
- 2302,
- 2304,
- 2305,
- 2306,
- 2307,
- 2362,
- 2363,
- 2364,
- 2366,
- 2367,
- 2368,
- 2369,
- 2370,
- 2371,
- 2372,
- 2373,
- 2374,
- 2375,
- 2376,
- 2377,
- 2378,
- 2379,
- 2380,
- 2381,
- 2382,
- 2383,
- 2385,
- 2386,
- 2387,
- 2388,
- 2389,
- 2390,
- 2391,
- 2402,
- 2403,
- 2406,
- 2407,
- 2408,
- 2409,
- 2410,
- 2411,
- 2412,
- 2413,
- 2414,
- 2415,
- 2433,
- 2434,
- 2435,
- 2492,
- 2494,
- 2495,
- 2496,
- 2497,
- 2498,
- 2499,
- 2500,
- 2503,
- 2504,
- 2507,
- 2508,
- 2509,
- 2519,
- 2530,
- 2531,
- 2534,
- 2535,
- 2536,
- 2537,
- 2538,
- 2539,
- 2540,
- 2541,
- 2542,
- 2543,
- 2561,
- 2562,
- 2563,
- 2620,
- 2622,
- 2623,
- 2624,
- 2625,
- 2626,
- 2631,
- 2632,
- 2635,
- 2636,
- 2637,
- 2641,
- 2662,
- 2663,
- 2664,
- 2665,
- 2666,
- 2667,
- 2668,
- 2669,
- 2670,
- 2671,
- 2672,
- 2673,
- 2677,
- 2689,
- 2690,
- 2691,
- 2748,
- 2750,
- 2751,
- 2752,
- 2753,
- 2754,
- 2755,
- 2756,
- 2757,
- 2759,
- 2760,
- 2761,
- 2763,
- 2764,
- 2765,
- 2786,
- 2787,
- 2790,
- 2791,
- 2792,
- 2793,
- 2794,
- 2795,
- 2796,
- 2797,
- 2798,
- 2799,
- 2817,
- 2818,
- 2819,
- 2876,
- 2878,
- 2879,
- 2880,
- 2881,
- 2882,
- 2883,
- 2884,
- 2887,
- 2888,
- 2891,
- 2892,
- 2893,
- 2902,
- 2903,
- 2914,
- 2915,
- 2918,
- 2919,
- 2920,
- 2921,
- 2922,
- 2923,
- 2924,
- 2925,
- 2926,
- 2927,
- 2946,
- 3006,
- 3007,
- 3008,
- 3009,
- 3010,
- 3014,
- 3015,
- 3016,
- 3018,
- 3019,
- 3020,
- 3021,
- 3031,
- 3046,
- 3047,
- 3048,
- 3049,
- 3050,
- 3051,
- 3052,
- 3053,
- 3054,
- 3055,
- 3073,
- 3074,
- 3075,
- 3134,
- 3135,
- 3136,
- 3137,
- 3138,
- 3139,
- 3140,
- 3142,
- 3143,
- 3144,
- 3146,
- 3147,
- 3148,
- 3149,
- 3157,
- 3158,
- 3170,
- 3171,
- 3174,
- 3175,
- 3176,
- 3177,
- 3178,
- 3179,
- 3180,
- 3181,
- 3182,
- 3183,
- 3202,
- 3203,
- 3260,
- 3262,
- 3263,
- 3264,
- 3265,
- 3266,
- 3267,
- 3268,
- 3270,
- 3271,
- 3272,
- 3274,
- 3275,
- 3276,
- 3277,
- 3285,
- 3286,
- 3298,
- 3299,
- 3302,
- 3303,
- 3304,
- 3305,
- 3306,
- 3307,
- 3308,
- 3309,
- 3310,
- 3311,
- 3330,
- 3331,
- 3390,
- 3391,
- 3392,
- 3393,
- 3394,
- 3395,
- 3396,
- 3398,
- 3399,
- 3400,
- 3402,
- 3403,
- 3404,
- 3405,
- 3415,
- 3426,
- 3427,
- 3430,
- 3431,
- 3432,
- 3433,
- 3434,
- 3435,
- 3436,
- 3437,
- 3438,
- 3439,
- 3458,
- 3459,
- 3530,
- 3535,
- 3536,
- 3537,
- 3538,
- 3539,
- 3540,
- 3542,
- 3544,
- 3545,
- 3546,
- 3547,
- 3548,
- 3549,
- 3550,
- 3551,
- 3570,
- 3571,
- 3633,
- 3636,
- 3637,
- 3638,
- 3639,
- 3640,
- 3641,
- 3642,
- 3655,
- 3656,
- 3657,
- 3658,
- 3659,
- 3660,
- 3661,
- 3662,
- 3664,
- 3665,
- 3666,
- 3667,
- 3668,
- 3669,
- 3670,
- 3671,
- 3672,
- 3673,
- 3761,
- 3764,
- 3765,
- 3766,
- 3767,
- 3768,
- 3769,
- 3771,
- 3772,
- 3784,
- 3785,
- 3786,
- 3787,
- 3788,
- 3789,
- 3792,
- 3793,
- 3794,
- 3795,
- 3796,
- 3797,
- 3798,
- 3799,
- 3800,
- 3801,
- 3864,
- 3865,
- 3872,
- 3873,
- 3874,
- 3875,
- 3876,
- 3877,
- 3878,
- 3879,
- 3880,
- 3881,
- 3893,
- 3895,
- 3897,
- 3902,
- 3903,
- 3953,
- 3954,
- 3955,
- 3956,
- 3957,
- 3958,
- 3959,
- 3960,
- 3961,
- 3962,
- 3963,
- 3964,
- 3965,
- 3966,
- 3967,
- 3968,
- 3969,
- 3970,
- 3971,
- 3972,
- 3974,
- 3975,
- 3981,
- 3982,
- 3983,
- 3984,
- 3985,
- 3986,
- 3987,
- 3988,
- 3989,
- 3990,
- 3991,
- 3993,
- 3994,
- 3995,
- 3996,
- 3997,
- 3998,
- 3999,
- 4000,
- 4001,
- 4002,
- 4003,
- 4004,
- 4005,
- 4006,
- 4007,
- 4008,
- 4009,
- 4010,
- 4011,
- 4012,
- 4013,
- 4014,
- 4015,
- 4016,
- 4017,
- 4018,
- 4019,
- 4020,
- 4021,
- 4022,
- 4023,
- 4024,
- 4025,
- 4026,
- 4027,
- 4028,
- 4038,
- 4139,
- 4140,
- 4141,
- 4142,
- 4143,
- 4144,
- 4145,
- 4146,
- 4147,
- 4148,
- 4149,
- 4150,
- 4151,
- 4152,
- 4153,
- 4154,
- 4155,
- 4156,
- 4157,
- 4158,
- 4160,
- 4161,
- 4162,
- 4163,
- 4164,
- 4165,
- 4166,
- 4167,
- 4168,
- 4169,
- 4182,
- 4183,
- 4184,
- 4185,
- 4190,
- 4191,
- 4192,
- 4194,
- 4195,
- 4196,
- 4199,
- 4200,
- 4201,
- 4202,
- 4203,
- 4204,
- 4205,
- 4209,
- 4210,
- 4211,
- 4212,
- 4226,
- 4227,
- 4228,
- 4229,
- 4230,
- 4231,
- 4232,
- 4233,
- 4234,
- 4235,
- 4236,
- 4237,
- 4239,
- 4240,
- 4241,
- 4242,
- 4243,
- 4244,
- 4245,
- 4246,
- 4247,
- 4248,
- 4249,
- 4250,
- 4251,
- 4252,
- 4253,
- 4957,
- 4958,
- 4959,
- 5906,
- 5907,
- 5908,
- 5938,
- 5939,
- 5940,
- 5970,
- 5971,
- 6002,
- 6003,
- 6068,
- 6069,
- 6070,
- 6071,
- 6072,
- 6073,
- 6074,
- 6075,
- 6076,
- 6077,
- 6078,
- 6079,
- 6080,
- 6081,
- 6082,
- 6083,
- 6084,
- 6085,
- 6086,
- 6087,
- 6088,
- 6089,
- 6090,
- 6091,
- 6092,
- 6093,
- 6094,
- 6095,
- 6096,
- 6097,
- 6098,
- 6099,
- 6109,
- 6112,
- 6113,
- 6114,
- 6115,
- 6116,
- 6117,
- 6118,
- 6119,
- 6120,
- 6121,
- 6155,
- 6156,
- 6157,
- 6160,
- 6161,
- 6162,
- 6163,
- 6164,
- 6165,
- 6166,
- 6167,
- 6168,
- 6169,
- 6313,
- 6432,
- 6433,
- 6434,
- 6435,
- 6436,
- 6437,
- 6438,
- 6439,
- 6440,
- 6441,
- 6442,
- 6443,
- 6448,
- 6449,
- 6450,
- 6451,
- 6452,
- 6453,
- 6454,
- 6455,
- 6456,
- 6457,
- 6458,
- 6459,
- 6470,
- 6471,
- 6472,
- 6473,
- 6474,
- 6475,
- 6476,
- 6477,
- 6478,
- 6479,
- 6576,
- 6577,
- 6578,
- 6579,
- 6580,
- 6581,
- 6582,
- 6583,
- 6584,
- 6585,
- 6586,
- 6587,
- 6588,
- 6589,
- 6590,
- 6591,
- 6592,
- 6600,
- 6601,
- 6608,
- 6609,
- 6610,
- 6611,
- 6612,
- 6613,
- 6614,
- 6615,
- 6616,
- 6617,
- 6679,
- 6680,
- 6681,
- 6682,
- 6683,
- 6741,
- 6742,
- 6743,
- 6744,
- 6745,
- 6746,
- 6747,
- 6748,
- 6749,
- 6750,
- 6752,
- 6753,
- 6754,
- 6755,
- 6756,
- 6757,
- 6758,
- 6759,
- 6760,
- 6761,
- 6762,
- 6763,
- 6764,
- 6765,
- 6766,
- 6767,
- 6768,
- 6769,
- 6770,
- 6771,
- 6772,
- 6773,
- 6774,
- 6775,
- 6776,
- 6777,
- 6778,
- 6779,
- 6780,
- 6783,
- 6784,
- 6785,
- 6786,
- 6787,
- 6788,
- 6789,
- 6790,
- 6791,
- 6792,
- 6793,
- 6800,
- 6801,
- 6802,
- 6803,
- 6804,
- 6805,
- 6806,
- 6807,
- 6808,
- 6809,
- 6912,
- 6913,
- 6914,
- 6915,
- 6916,
- 6964,
- 6965,
- 6966,
- 6967,
- 6968,
- 6969,
- 6970,
- 6971,
- 6972,
- 6973,
- 6974,
- 6975,
- 6976,
- 6977,
- 6978,
- 6979,
- 6980,
- 6992,
- 6993,
- 6994,
- 6995,
- 6996,
- 6997,
- 6998,
- 6999,
- 7000,
- 7001,
- 7019,
- 7020,
- 7021,
- 7022,
- 7023,
- 7024,
- 7025,
- 7026,
- 7027,
- 7040,
- 7041,
- 7042,
- 7073,
- 7074,
- 7075,
- 7076,
- 7077,
- 7078,
- 7079,
- 7080,
- 7081,
- 7082,
- 7083,
- 7084,
- 7085,
- 7088,
- 7089,
- 7090,
- 7091,
- 7092,
- 7093,
- 7094,
- 7095,
- 7096,
- 7097,
- 7142,
- 7143,
- 7144,
- 7145,
- 7146,
- 7147,
- 7148,
- 7149,
- 7150,
- 7151,
- 7152,
- 7153,
- 7154,
- 7155,
- 7204,
- 7205,
- 7206,
- 7207,
- 7208,
- 7209,
- 7210,
- 7211,
- 7212,
- 7213,
- 7214,
- 7215,
- 7216,
- 7217,
- 7218,
- 7219,
- 7220,
- 7221,
- 7222,
- 7223,
- 7232,
- 7233,
- 7234,
- 7235,
- 7236,
- 7237,
- 7238,
- 7239,
- 7240,
- 7241,
- 7248,
- 7249,
- 7250,
- 7251,
- 7252,
- 7253,
- 7254,
- 7255,
- 7256,
- 7257,
- 7376,
- 7377,
- 7378,
- 7380,
- 7381,
- 7382,
- 7383,
- 7384,
- 7385,
- 7386,
- 7387,
- 7388,
- 7389,
- 7390,
- 7391,
- 7392,
- 7393,
- 7394,
- 7395,
- 7396,
- 7397,
- 7398,
- 7399,
- 7400,
- 7405,
- 7410,
- 7411,
- 7412,
- 7616,
- 7617,
- 7618,
- 7619,
- 7620,
- 7621,
- 7622,
- 7623,
- 7624,
- 7625,
- 7626,
- 7627,
- 7628,
- 7629,
- 7630,
- 7631,
- 7632,
- 7633,
- 7634,
- 7635,
- 7636,
- 7637,
- 7638,
- 7639,
- 7640,
- 7641,
- 7642,
- 7643,
- 7644,
- 7645,
- 7646,
- 7647,
- 7648,
- 7649,
- 7650,
- 7651,
- 7652,
- 7653,
- 7654,
- 7676,
- 7677,
- 7678,
- 7679,
- 8204,
- 8205,
- 8255,
- 8256,
- 8276,
- 8400,
- 8401,
- 8402,
- 8403,
- 8404,
- 8405,
- 8406,
- 8407,
- 8408,
- 8409,
- 8410,
- 8411,
- 8412,
- 8417,
- 8421,
- 8422,
- 8423,
- 8424,
- 8425,
- 8426,
- 8427,
- 8428,
- 8429,
- 8430,
- 8431,
- 8432,
- 11503,
- 11504,
- 11505,
- 11647,
- 11744,
- 11745,
- 11746,
- 11747,
- 11748,
- 11749,
- 11750,
- 11751,
- 11752,
- 11753,
- 11754,
- 11755,
- 11756,
- 11757,
- 11758,
- 11759,
- 11760,
- 11761,
- 11762,
- 11763,
- 11764,
- 11765,
- 11766,
- 11767,
- 11768,
- 11769,
- 11770,
- 11771,
- 11772,
- 11773,
- 11774,
- 11775,
- 12330,
- 12331,
- 12332,
- 12333,
- 12334,
- 12335,
- 12441,
- 12442,
- 42528,
- 42529,
- 42530,
- 42531,
- 42532,
- 42533,
- 42534,
- 42535,
- 42536,
- 42537,
- 42607,
- 42612,
- 42613,
- 42614,
- 42615,
- 42616,
- 42617,
- 42618,
- 42619,
- 42620,
- 42621,
- 42655,
- 42736,
- 42737,
- 43010,
- 43014,
- 43019,
- 43043,
- 43044,
- 43045,
- 43046,
- 43047,
- 43136,
- 43137,
- 43188,
- 43189,
- 43190,
- 43191,
- 43192,
- 43193,
- 43194,
- 43195,
- 43196,
- 43197,
- 43198,
- 43199,
- 43200,
- 43201,
- 43202,
- 43203,
- 43204,
- 43216,
- 43217,
- 43218,
- 43219,
- 43220,
- 43221,
- 43222,
- 43223,
- 43224,
- 43225,
- 43232,
- 43233,
- 43234,
- 43235,
- 43236,
- 43237,
- 43238,
- 43239,
- 43240,
- 43241,
- 43242,
- 43243,
- 43244,
- 43245,
- 43246,
- 43247,
- 43248,
- 43249,
- 43264,
- 43265,
- 43266,
- 43267,
- 43268,
- 43269,
- 43270,
- 43271,
- 43272,
- 43273,
- 43302,
- 43303,
- 43304,
- 43305,
- 43306,
- 43307,
- 43308,
- 43309,
- 43335,
- 43336,
- 43337,
- 43338,
- 43339,
- 43340,
- 43341,
- 43342,
- 43343,
- 43344,
- 43345,
- 43346,
- 43347,
- 43392,
- 43393,
- 43394,
- 43395,
- 43443,
- 43444,
- 43445,
- 43446,
- 43447,
- 43448,
- 43449,
- 43450,
- 43451,
- 43452,
- 43453,
- 43454,
- 43455,
- 43456,
- 43472,
- 43473,
- 43474,
- 43475,
- 43476,
- 43477,
- 43478,
- 43479,
- 43480,
- 43481,
- 43561,
- 43562,
- 43563,
- 43564,
- 43565,
- 43566,
- 43567,
- 43568,
- 43569,
- 43570,
- 43571,
- 43572,
- 43573,
- 43574,
- 43587,
- 43596,
- 43597,
- 43600,
- 43601,
- 43602,
- 43603,
- 43604,
- 43605,
- 43606,
- 43607,
- 43608,
- 43609,
- 43643,
- 43696,
- 43698,
- 43699,
- 43700,
- 43703,
- 43704,
- 43710,
- 43711,
- 43713,
- 43755,
- 43756,
- 43757,
- 43758,
- 43759,
- 43765,
- 43766,
- 44003,
- 44004,
- 44005,
- 44006,
- 44007,
- 44008,
- 44009,
- 44010,
- 44012,
- 44013,
- 44016,
- 44017,
- 44018,
- 44019,
- 44020,
- 44021,
- 44022,
- 44023,
- 44024,
- 44025,
- 64286,
- 65024,
- 65025,
- 65026,
- 65027,
- 65028,
- 65029,
- 65030,
- 65031,
- 65032,
- 65033,
- 65034,
- 65035,
- 65036,
- 65037,
- 65038,
- 65039,
- 65056,
- 65057,
- 65058,
- 65059,
- 65060,
- 65061,
- 65062,
- 65075,
- 65076,
- 65101,
- 65102,
- 65103,
- 65296,
- 65297,
- 65298,
- 65299,
- 65300,
- 65301,
- 65302,
- 65303,
- 65304,
- 65305,
- 65343
-];
-
+var str = '768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,1155,1156,1157,1158,1159,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1471,1473,1474,1476,1477,1479,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1648,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1763,1764,1767,1768,1770,1771,1772,1773,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1809,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,2027,2028,2029,2030,2031,2032,2033,2034,2035,2070,2071,2072,2073,2075,2076,2077,2078,2079,2080,2081,2082,2083,2085,2086,2087,2089,2090,2091,2092,2093,2137,2138,2139,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2304,2305,2306,2307,2362,2363,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2385,2386,2387,2388,2389,2390,2391,2402,2403,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2433,2434,2435,2492,2494,2495,2496,2497,2498,2499,2500,2503,2504,2507,2508,2509,2519,2530,2531,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2561,2562,2563,2620,2622,2623,2624,2625,2626,2631,2632,2635,2636,2637,2641,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2677,2689,2690,2691,2748,2750,2751,2752,2753,2754,2755,2756,2757,2759,2760,2761,2763,2764,2765,2786,2787,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2817,2818,2819,2876,2878,2879,2880,2881,2882,2883,2884,2887,2888,2891,2892,2893,2902,2903,2914,2915,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2946,3006,3007,3008,3009,3010,3014,3015,3016,3018,3019,3020,3021,3031,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3073,3074,3075,3134,3135,3136,3137,3138,3139,3140,3142,3143,3144,3146,3147,3148,3149,3157,3158,3170,3171,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3202,3203,3260,3262,3263,3264,3265,3266,3267,3268,3270,3271,3272,3274,3275,3276,3277,3285,3286,3298,3299,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3330,3331,3390,3391,3392,3393,3394,3395,3396,3398,3399,3400,3402,3403,3404,3405,3415,3426,3427,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3458,3459,3530,3535,3536,3537,3538,3539,3540,3542,3544,3545,3546,3547,3548,3549,3550,3551,3570,3571,3633,3636,3637,3638,3639,3640,3641,3642,3655,3656,3657,3658,3659,3660,3661,3662,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3761,3764,3765,3766,3767,3768,3769,3771,3772,3784,3785,3786,3787,3788,3789,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3864,3865,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3893,3895,3897,3902,3903,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3974,3975,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4038,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4182,4183,4184,4185,4190,4191,4192,4194,4195,4196,4199,4200,4201,4202,4203,4204,4205,4209,4210,4211,4212,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4957,4958,4959,5906,5907,5908,5938,5939,5940,5970,5971,6002,6003,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6109,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6155,6156,6157,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6313,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6600,6601,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6679,6680,6681,6682,6683,6741,6742,6743,6744,6745,6746,6747,6748,6749,6750,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6912,6913,6914,6915,6916,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6992,6993,6994,6995,6996,6997,6998,6999,7000,7001,7019,7020,7021,7022,7023,7024,7025,7026,7027,7040,7041,7042,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7376,7377,7378,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7405,7410,7411,7412,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7676,7677,7678,7679,8204,8205,8255,8256,8276,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8417,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,11503,11504,11505,11647,11744,11745,11746,11747,11748,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,12330,12331,12332,12333,12334,12335,12441,12442,42528,42529,42530,42531,42532,42533,42534,42535,42536,42537,42607,42612,42613,42614,42615,42616,42617,42618,42619,42620,42621,42655,42736,42737,43010,43014,43019,43043,43044,43045,43046,43047,43136,43137,43188,43189,43190,43191,43192,43193,43194,43195,43196,43197,43198,43199,43200,43201,43202,43203,43204,43216,43217,43218,43219,43220,43221,43222,43223,43224,43225,43232,43233,43234,43235,43236,43237,43238,43239,43240,43241,43242,43243,43244,43245,43246,43247,43248,43249,43264,43265,43266,43267,43268,43269,43270,43271,43272,43273,43302,43303,43304,43305,43306,43307,43308,43309,43335,43336,43337,43338,43339,43340,43341,43342,43343,43344,43345,43346,43347,43392,43393,43394,43395,43443,43444,43445,43446,43447,43448,43449,43450,43451,43452,43453,43454,43455,43456,43472,43473,43474,43475,43476,43477,43478,43479,43480,43481,43561,43562,43563,43564,43565,43566,43567,43568,43569,43570,43571,43572,43573,43574,43587,43596,43597,43600,43601,43602,43603,43604,43605,43606,43607,43608,43609,43643,43696,43698,43699,43700,43703,43704,43710,43711,43713,43755,43756,43757,43758,43759,43765,43766,44003,44004,44005,44006,44007,44008,44009,44010,44012,44013,44016,44017,44018,44019,44020,44021,44022,44023,44024,44025,64286,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65056,65057,65058,65059,65060,65061,65062,65075,65076,65101,65102,65103,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65343';
+var arr = str.split(',').map(function(code) {
+ return parseInt(code, 10);
+});
+module.exports = arr;
},{}],3:[function(require,module,exports){
-module.exports = [
- 170,
- 181,
- 186,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255,
- 256,
- 257,
- 258,
- 259,
- 260,
- 261,
- 262,
- 263,
- 264,
- 265,
- 266,
- 267,
- 268,
- 269,
- 270,
- 271,
- 272,
- 273,
- 274,
- 275,
- 276,
- 277,
- 278,
- 279,
- 280,
- 281,
- 282,
- 283,
- 284,
- 285,
- 286,
- 287,
- 288,
- 289,
- 290,
- 291,
- 292,
- 293,
- 294,
- 295,
- 296,
- 297,
- 298,
- 299,
- 300,
- 301,
- 302,
- 303,
- 304,
- 305,
- 306,
- 307,
- 308,
- 309,
- 310,
- 311,
- 312,
- 313,
- 314,
- 315,
- 316,
- 317,
- 318,
- 319,
- 320,
- 321,
- 322,
- 323,
- 324,
- 325,
- 326,
- 327,
- 328,
- 329,
- 330,
- 331,
- 332,
- 333,
- 334,
- 335,
- 336,
- 337,
- 338,
- 339,
- 340,
- 341,
- 342,
- 343,
- 344,
- 345,
- 346,
- 347,
- 348,
- 349,
- 350,
- 351,
- 352,
- 353,
- 354,
- 355,
- 356,
- 357,
- 358,
- 359,
- 360,
- 361,
- 362,
- 363,
- 364,
- 365,
- 366,
- 367,
- 368,
- 369,
- 370,
- 371,
- 372,
- 373,
- 374,
- 375,
- 376,
- 377,
- 378,
- 379,
- 380,
- 381,
- 382,
- 383,
- 384,
- 385,
- 386,
- 387,
- 388,
- 389,
- 390,
- 391,
- 392,
- 393,
- 394,
- 395,
- 396,
- 397,
- 398,
- 399,
- 400,
- 401,
- 402,
- 403,
- 404,
- 405,
- 406,
- 407,
- 408,
- 409,
- 410,
- 411,
- 412,
- 413,
- 414,
- 415,
- 416,
- 417,
- 418,
- 419,
- 420,
- 421,
- 422,
- 423,
- 424,
- 425,
- 426,
- 427,
- 428,
- 429,
- 430,
- 431,
- 432,
- 433,
- 434,
- 435,
- 436,
- 437,
- 438,
- 439,
- 440,
- 441,
- 442,
- 443,
- 444,
- 445,
- 446,
- 447,
- 448,
- 449,
- 450,
- 451,
- 452,
- 453,
- 454,
- 455,
- 456,
- 457,
- 458,
- 459,
- 460,
- 461,
- 462,
- 463,
- 464,
- 465,
- 466,
- 467,
- 468,
- 469,
- 470,
- 471,
- 472,
- 473,
- 474,
- 475,
- 476,
- 477,
- 478,
- 479,
- 480,
- 481,
- 482,
- 483,
- 484,
- 485,
- 486,
- 487,
- 488,
- 489,
- 490,
- 491,
- 492,
- 493,
- 494,
- 495,
- 496,
- 497,
- 498,
- 499,
- 500,
- 501,
- 502,
- 503,
- 504,
- 505,
- 506,
- 507,
- 508,
- 509,
- 510,
- 511,
- 512,
- 513,
- 514,
- 515,
- 516,
- 517,
- 518,
- 519,
- 520,
- 521,
- 522,
- 523,
- 524,
- 525,
- 526,
- 527,
- 528,
- 529,
- 530,
- 531,
- 532,
- 533,
- 534,
- 535,
- 536,
- 537,
- 538,
- 539,
- 540,
- 541,
- 542,
- 543,
- 544,
- 545,
- 546,
- 547,
- 548,
- 549,
- 550,
- 551,
- 552,
- 553,
- 554,
- 555,
- 556,
- 557,
- 558,
- 559,
- 560,
- 561,
- 562,
- 563,
- 564,
- 565,
- 566,
- 567,
- 568,
- 569,
- 570,
- 571,
- 572,
- 573,
- 574,
- 575,
- 576,
- 577,
- 578,
- 579,
- 580,
- 581,
- 582,
- 583,
- 584,
- 585,
- 586,
- 587,
- 588,
- 589,
- 590,
- 591,
- 592,
- 593,
- 594,
- 595,
- 596,
- 597,
- 598,
- 599,
- 600,
- 601,
- 602,
- 603,
- 604,
- 605,
- 606,
- 607,
- 608,
- 609,
- 610,
- 611,
- 612,
- 613,
- 614,
- 615,
- 616,
- 617,
- 618,
- 619,
- 620,
- 621,
- 622,
- 623,
- 624,
- 625,
- 626,
- 627,
- 628,
- 629,
- 630,
- 631,
- 632,
- 633,
- 634,
- 635,
- 636,
- 637,
- 638,
- 639,
- 640,
- 641,
- 642,
- 643,
- 644,
- 645,
- 646,
- 647,
- 648,
- 649,
- 650,
- 651,
- 652,
- 653,
- 654,
- 655,
- 656,
- 657,
- 658,
- 659,
- 660,
- 661,
- 662,
- 663,
- 664,
- 665,
- 666,
- 667,
- 668,
- 669,
- 670,
- 671,
- 672,
- 673,
- 674,
- 675,
- 676,
- 677,
- 678,
- 679,
- 680,
- 681,
- 682,
- 683,
- 684,
- 685,
- 686,
- 687,
- 688,
- 689,
- 690,
- 691,
- 692,
- 693,
- 694,
- 695,
- 696,
- 697,
- 698,
- 699,
- 700,
- 701,
- 702,
- 703,
- 704,
- 705,
- 710,
- 711,
- 712,
- 713,
- 714,
- 715,
- 716,
- 717,
- 718,
- 719,
- 720,
- 721,
- 736,
- 737,
- 738,
- 739,
- 740,
- 748,
- 750,
- 880,
- 881,
- 882,
- 883,
- 884,
- 886,
- 887,
- 890,
- 891,
- 892,
- 893,
- 902,
- 904,
- 905,
- 906,
- 908,
- 910,
- 911,
- 912,
- 913,
- 914,
- 915,
- 916,
- 917,
- 918,
- 919,
- 920,
- 921,
- 922,
- 923,
- 924,
- 925,
- 926,
- 927,
- 928,
- 929,
- 931,
- 932,
- 933,
- 934,
- 935,
- 936,
- 937,
- 938,
- 939,
- 940,
- 941,
- 942,
- 943,
- 944,
- 945,
- 946,
- 947,
- 948,
- 949,
- 950,
- 951,
- 952,
- 953,
- 954,
- 955,
- 956,
- 957,
- 958,
- 959,
- 960,
- 961,
- 962,
- 963,
- 964,
- 965,
- 966,
- 967,
- 968,
- 969,
- 970,
- 971,
- 972,
- 973,
- 974,
- 975,
- 976,
- 977,
- 978,
- 979,
- 980,
- 981,
- 982,
- 983,
- 984,
- 985,
- 986,
- 987,
- 988,
- 989,
- 990,
- 991,
- 992,
- 993,
- 994,
- 995,
- 996,
- 997,
- 998,
- 999,
- 1000,
- 1001,
- 1002,
- 1003,
- 1004,
- 1005,
- 1006,
- 1007,
- 1008,
- 1009,
- 1010,
- 1011,
- 1012,
- 1013,
- 1015,
- 1016,
- 1017,
- 1018,
- 1019,
- 1020,
- 1021,
- 1022,
- 1023,
- 1024,
- 1025,
- 1026,
- 1027,
- 1028,
- 1029,
- 1030,
- 1031,
- 1032,
- 1033,
- 1034,
- 1035,
- 1036,
- 1037,
- 1038,
- 1039,
- 1040,
- 1041,
- 1042,
- 1043,
- 1044,
- 1045,
- 1046,
- 1047,
- 1048,
- 1049,
- 1050,
- 1051,
- 1052,
- 1053,
- 1054,
- 1055,
- 1056,
- 1057,
- 1058,
- 1059,
- 1060,
- 1061,
- 1062,
- 1063,
- 1064,
- 1065,
- 1066,
- 1067,
- 1068,
- 1069,
- 1070,
- 1071,
- 1072,
- 1073,
- 1074,
- 1075,
- 1076,
- 1077,
- 1078,
- 1079,
- 1080,
- 1081,
- 1082,
- 1083,
- 1084,
- 1085,
- 1086,
- 1087,
- 1088,
- 1089,
- 1090,
- 1091,
- 1092,
- 1093,
- 1094,
- 1095,
- 1096,
- 1097,
- 1098,
- 1099,
- 1100,
- 1101,
- 1102,
- 1103,
- 1104,
- 1105,
- 1106,
- 1107,
- 1108,
- 1109,
- 1110,
- 1111,
- 1112,
- 1113,
- 1114,
- 1115,
- 1116,
- 1117,
- 1118,
- 1119,
- 1120,
- 1121,
- 1122,
- 1123,
- 1124,
- 1125,
- 1126,
- 1127,
- 1128,
- 1129,
- 1130,
- 1131,
- 1132,
- 1133,
- 1134,
- 1135,
- 1136,
- 1137,
- 1138,
- 1139,
- 1140,
- 1141,
- 1142,
- 1143,
- 1144,
- 1145,
- 1146,
- 1147,
- 1148,
- 1149,
- 1150,
- 1151,
- 1152,
- 1153,
- 1162,
- 1163,
- 1164,
- 1165,
- 1166,
- 1167,
- 1168,
- 1169,
- 1170,
- 1171,
- 1172,
- 1173,
- 1174,
- 1175,
- 1176,
- 1177,
- 1178,
- 1179,
- 1180,
- 1181,
- 1182,
- 1183,
- 1184,
- 1185,
- 1186,
- 1187,
- 1188,
- 1189,
- 1190,
- 1191,
- 1192,
- 1193,
- 1194,
- 1195,
- 1196,
- 1197,
- 1198,
- 1199,
- 1200,
- 1201,
- 1202,
- 1203,
- 1204,
- 1205,
- 1206,
- 1207,
- 1208,
- 1209,
- 1210,
- 1211,
- 1212,
- 1213,
- 1214,
- 1215,
- 1216,
- 1217,
- 1218,
- 1219,
- 1220,
- 1221,
- 1222,
- 1223,
- 1224,
- 1225,
- 1226,
- 1227,
- 1228,
- 1229,
- 1230,
- 1231,
- 1232,
- 1233,
- 1234,
- 1235,
- 1236,
- 1237,
- 1238,
- 1239,
- 1240,
- 1241,
- 1242,
- 1243,
- 1244,
- 1245,
- 1246,
- 1247,
- 1248,
- 1249,
- 1250,
- 1251,
- 1252,
- 1253,
- 1254,
- 1255,
- 1256,
- 1257,
- 1258,
- 1259,
- 1260,
- 1261,
- 1262,
- 1263,
- 1264,
- 1265,
- 1266,
- 1267,
- 1268,
- 1269,
- 1270,
- 1271,
- 1272,
- 1273,
- 1274,
- 1275,
- 1276,
- 1277,
- 1278,
- 1279,
- 1280,
- 1281,
- 1282,
- 1283,
- 1284,
- 1285,
- 1286,
- 1287,
- 1288,
- 1289,
- 1290,
- 1291,
- 1292,
- 1293,
- 1294,
- 1295,
- 1296,
- 1297,
- 1298,
- 1299,
- 1300,
- 1301,
- 1302,
- 1303,
- 1304,
- 1305,
- 1306,
- 1307,
- 1308,
- 1309,
- 1310,
- 1311,
- 1312,
- 1313,
- 1314,
- 1315,
- 1316,
- 1317,
- 1318,
- 1319,
- 1329,
- 1330,
- 1331,
- 1332,
- 1333,
- 1334,
- 1335,
- 1336,
- 1337,
- 1338,
- 1339,
- 1340,
- 1341,
- 1342,
- 1343,
- 1344,
- 1345,
- 1346,
- 1347,
- 1348,
- 1349,
- 1350,
- 1351,
- 1352,
- 1353,
- 1354,
- 1355,
- 1356,
- 1357,
- 1358,
- 1359,
- 1360,
- 1361,
- 1362,
- 1363,
- 1364,
- 1365,
- 1366,
- 1369,
- 1377,
- 1378,
- 1379,
- 1380,
- 1381,
- 1382,
- 1383,
- 1384,
- 1385,
- 1386,
- 1387,
- 1388,
- 1389,
- 1390,
- 1391,
- 1392,
- 1393,
- 1394,
- 1395,
- 1396,
- 1397,
- 1398,
- 1399,
- 1400,
- 1401,
- 1402,
- 1403,
- 1404,
- 1405,
- 1406,
- 1407,
- 1408,
- 1409,
- 1410,
- 1411,
- 1412,
- 1413,
- 1414,
- 1415,
- 1488,
- 1489,
- 1490,
- 1491,
- 1492,
- 1493,
- 1494,
- 1495,
- 1496,
- 1497,
- 1498,
- 1499,
- 1500,
- 1501,
- 1502,
- 1503,
- 1504,
- 1505,
- 1506,
- 1507,
- 1508,
- 1509,
- 1510,
- 1511,
- 1512,
- 1513,
- 1514,
- 1520,
- 1521,
- 1522,
- 1568,
- 1569,
- 1570,
- 1571,
- 1572,
- 1573,
- 1574,
- 1575,
- 1576,
- 1577,
- 1578,
- 1579,
- 1580,
- 1581,
- 1582,
- 1583,
- 1584,
- 1585,
- 1586,
- 1587,
- 1588,
- 1589,
- 1590,
- 1591,
- 1592,
- 1593,
- 1594,
- 1595,
- 1596,
- 1597,
- 1598,
- 1599,
- 1600,
- 1601,
- 1602,
- 1603,
- 1604,
- 1605,
- 1606,
- 1607,
- 1608,
- 1609,
- 1610,
- 1646,
- 1647,
- 1649,
- 1650,
- 1651,
- 1652,
- 1653,
- 1654,
- 1655,
- 1656,
- 1657,
- 1658,
- 1659,
- 1660,
- 1661,
- 1662,
- 1663,
- 1664,
- 1665,
- 1666,
- 1667,
- 1668,
- 1669,
- 1670,
- 1671,
- 1672,
- 1673,
- 1674,
- 1675,
- 1676,
- 1677,
- 1678,
- 1679,
- 1680,
- 1681,
- 1682,
- 1683,
- 1684,
- 1685,
- 1686,
- 1687,
- 1688,
- 1689,
- 1690,
- 1691,
- 1692,
- 1693,
- 1694,
- 1695,
- 1696,
- 1697,
- 1698,
- 1699,
- 1700,
- 1701,
- 1702,
- 1703,
- 1704,
- 1705,
- 1706,
- 1707,
- 1708,
- 1709,
- 1710,
- 1711,
- 1712,
- 1713,
- 1714,
- 1715,
- 1716,
- 1717,
- 1718,
- 1719,
- 1720,
- 1721,
- 1722,
- 1723,
- 1724,
- 1725,
- 1726,
- 1727,
- 1728,
- 1729,
- 1730,
- 1731,
- 1732,
- 1733,
- 1734,
- 1735,
- 1736,
- 1737,
- 1738,
- 1739,
- 1740,
- 1741,
- 1742,
- 1743,
- 1744,
- 1745,
- 1746,
- 1747,
- 1749,
- 1765,
- 1766,
- 1774,
- 1775,
- 1786,
- 1787,
- 1788,
- 1791,
- 1808,
- 1810,
- 1811,
- 1812,
- 1813,
- 1814,
- 1815,
- 1816,
- 1817,
- 1818,
- 1819,
- 1820,
- 1821,
- 1822,
- 1823,
- 1824,
- 1825,
- 1826,
- 1827,
- 1828,
- 1829,
- 1830,
- 1831,
- 1832,
- 1833,
- 1834,
- 1835,
- 1836,
- 1837,
- 1838,
- 1839,
- 1869,
- 1870,
- 1871,
- 1872,
- 1873,
- 1874,
- 1875,
- 1876,
- 1877,
- 1878,
- 1879,
- 1880,
- 1881,
- 1882,
- 1883,
- 1884,
- 1885,
- 1886,
- 1887,
- 1888,
- 1889,
- 1890,
- 1891,
- 1892,
- 1893,
- 1894,
- 1895,
- 1896,
- 1897,
- 1898,
- 1899,
- 1900,
- 1901,
- 1902,
- 1903,
- 1904,
- 1905,
- 1906,
- 1907,
- 1908,
- 1909,
- 1910,
- 1911,
- 1912,
- 1913,
- 1914,
- 1915,
- 1916,
- 1917,
- 1918,
- 1919,
- 1920,
- 1921,
- 1922,
- 1923,
- 1924,
- 1925,
- 1926,
- 1927,
- 1928,
- 1929,
- 1930,
- 1931,
- 1932,
- 1933,
- 1934,
- 1935,
- 1936,
- 1937,
- 1938,
- 1939,
- 1940,
- 1941,
- 1942,
- 1943,
- 1944,
- 1945,
- 1946,
- 1947,
- 1948,
- 1949,
- 1950,
- 1951,
- 1952,
- 1953,
- 1954,
- 1955,
- 1956,
- 1957,
- 1969,
- 1994,
- 1995,
- 1996,
- 1997,
- 1998,
- 1999,
- 2000,
- 2001,
- 2002,
- 2003,
- 2004,
- 2005,
- 2006,
- 2007,
- 2008,
- 2009,
- 2010,
- 2011,
- 2012,
- 2013,
- 2014,
- 2015,
- 2016,
- 2017,
- 2018,
- 2019,
- 2020,
- 2021,
- 2022,
- 2023,
- 2024,
- 2025,
- 2026,
- 2036,
- 2037,
- 2042,
- 2048,
- 2049,
- 2050,
- 2051,
- 2052,
- 2053,
- 2054,
- 2055,
- 2056,
- 2057,
- 2058,
- 2059,
- 2060,
- 2061,
- 2062,
- 2063,
- 2064,
- 2065,
- 2066,
- 2067,
- 2068,
- 2069,
- 2074,
- 2084,
- 2088,
- 2112,
- 2113,
- 2114,
- 2115,
- 2116,
- 2117,
- 2118,
- 2119,
- 2120,
- 2121,
- 2122,
- 2123,
- 2124,
- 2125,
- 2126,
- 2127,
- 2128,
- 2129,
- 2130,
- 2131,
- 2132,
- 2133,
- 2134,
- 2135,
- 2136,
- 2208,
- 2210,
- 2211,
- 2212,
- 2213,
- 2214,
- 2215,
- 2216,
- 2217,
- 2218,
- 2219,
- 2220,
- 2308,
- 2309,
- 2310,
- 2311,
- 2312,
- 2313,
- 2314,
- 2315,
- 2316,
- 2317,
- 2318,
- 2319,
- 2320,
- 2321,
- 2322,
- 2323,
- 2324,
- 2325,
- 2326,
- 2327,
- 2328,
- 2329,
- 2330,
- 2331,
- 2332,
- 2333,
- 2334,
- 2335,
- 2336,
- 2337,
- 2338,
- 2339,
- 2340,
- 2341,
- 2342,
- 2343,
- 2344,
- 2345,
- 2346,
- 2347,
- 2348,
- 2349,
- 2350,
- 2351,
- 2352,
- 2353,
- 2354,
- 2355,
- 2356,
- 2357,
- 2358,
- 2359,
- 2360,
- 2361,
- 2365,
- 2384,
- 2392,
- 2393,
- 2394,
- 2395,
- 2396,
- 2397,
- 2398,
- 2399,
- 2400,
- 2401,
- 2417,
- 2418,
- 2419,
- 2420,
- 2421,
- 2422,
- 2423,
- 2425,
- 2426,
- 2427,
- 2428,
- 2429,
- 2430,
- 2431,
- 2437,
- 2438,
- 2439,
- 2440,
- 2441,
- 2442,
- 2443,
- 2444,
- 2447,
- 2448,
- 2451,
- 2452,
- 2453,
- 2454,
- 2455,
- 2456,
- 2457,
- 2458,
- 2459,
- 2460,
- 2461,
- 2462,
- 2463,
- 2464,
- 2465,
- 2466,
- 2467,
- 2468,
- 2469,
- 2470,
- 2471,
- 2472,
- 2474,
- 2475,
- 2476,
- 2477,
- 2478,
- 2479,
- 2480,
- 2482,
- 2486,
- 2487,
- 2488,
- 2489,
- 2493,
- 2510,
- 2524,
- 2525,
- 2527,
- 2528,
- 2529,
- 2544,
- 2545,
- 2565,
- 2566,
- 2567,
- 2568,
- 2569,
- 2570,
- 2575,
- 2576,
- 2579,
- 2580,
- 2581,
- 2582,
- 2583,
- 2584,
- 2585,
- 2586,
- 2587,
- 2588,
- 2589,
- 2590,
- 2591,
- 2592,
- 2593,
- 2594,
- 2595,
- 2596,
- 2597,
- 2598,
- 2599,
- 2600,
- 2602,
- 2603,
- 2604,
- 2605,
- 2606,
- 2607,
- 2608,
- 2610,
- 2611,
- 2613,
- 2614,
- 2616,
- 2617,
- 2649,
- 2650,
- 2651,
- 2652,
- 2654,
- 2674,
- 2675,
- 2676,
- 2693,
- 2694,
- 2695,
- 2696,
- 2697,
- 2698,
- 2699,
- 2700,
- 2701,
- 2703,
- 2704,
- 2705,
- 2707,
- 2708,
- 2709,
- 2710,
- 2711,
- 2712,
- 2713,
- 2714,
- 2715,
- 2716,
- 2717,
- 2718,
- 2719,
- 2720,
- 2721,
- 2722,
- 2723,
- 2724,
- 2725,
- 2726,
- 2727,
- 2728,
- 2730,
- 2731,
- 2732,
- 2733,
- 2734,
- 2735,
- 2736,
- 2738,
- 2739,
- 2741,
- 2742,
- 2743,
- 2744,
- 2745,
- 2749,
- 2768,
- 2784,
- 2785,
- 2821,
- 2822,
- 2823,
- 2824,
- 2825,
- 2826,
- 2827,
- 2828,
- 2831,
- 2832,
- 2835,
- 2836,
- 2837,
- 2838,
- 2839,
- 2840,
- 2841,
- 2842,
- 2843,
- 2844,
- 2845,
- 2846,
- 2847,
- 2848,
- 2849,
- 2850,
- 2851,
- 2852,
- 2853,
- 2854,
- 2855,
- 2856,
- 2858,
- 2859,
- 2860,
- 2861,
- 2862,
- 2863,
- 2864,
- 2866,
- 2867,
- 2869,
- 2870,
- 2871,
- 2872,
- 2873,
- 2877,
- 2908,
- 2909,
- 2911,
- 2912,
- 2913,
- 2929,
- 2947,
- 2949,
- 2950,
- 2951,
- 2952,
- 2953,
- 2954,
- 2958,
- 2959,
- 2960,
- 2962,
- 2963,
- 2964,
- 2965,
- 2969,
- 2970,
- 2972,
- 2974,
- 2975,
- 2979,
- 2980,
- 2984,
- 2985,
- 2986,
- 2990,
- 2991,
- 2992,
- 2993,
- 2994,
- 2995,
- 2996,
- 2997,
- 2998,
- 2999,
- 3000,
- 3001,
- 3024,
- 3077,
- 3078,
- 3079,
- 3080,
- 3081,
- 3082,
- 3083,
- 3084,
- 3086,
- 3087,
- 3088,
- 3090,
- 3091,
- 3092,
- 3093,
- 3094,
- 3095,
- 3096,
- 3097,
- 3098,
- 3099,
- 3100,
- 3101,
- 3102,
- 3103,
- 3104,
- 3105,
- 3106,
- 3107,
- 3108,
- 3109,
- 3110,
- 3111,
- 3112,
- 3114,
- 3115,
- 3116,
- 3117,
- 3118,
- 3119,
- 3120,
- 3121,
- 3122,
- 3123,
- 3125,
- 3126,
- 3127,
- 3128,
- 3129,
- 3133,
- 3160,
- 3161,
- 3168,
- 3169,
- 3205,
- 3206,
- 3207,
- 3208,
- 3209,
- 3210,
- 3211,
- 3212,
- 3214,
- 3215,
- 3216,
- 3218,
- 3219,
- 3220,
- 3221,
- 3222,
- 3223,
- 3224,
- 3225,
- 3226,
- 3227,
- 3228,
- 3229,
- 3230,
- 3231,
- 3232,
- 3233,
- 3234,
- 3235,
- 3236,
- 3237,
- 3238,
- 3239,
- 3240,
- 3242,
- 3243,
- 3244,
- 3245,
- 3246,
- 3247,
- 3248,
- 3249,
- 3250,
- 3251,
- 3253,
- 3254,
- 3255,
- 3256,
- 3257,
- 3261,
- 3294,
- 3296,
- 3297,
- 3313,
- 3314,
- 3333,
- 3334,
- 3335,
- 3336,
- 3337,
- 3338,
- 3339,
- 3340,
- 3342,
- 3343,
- 3344,
- 3346,
- 3347,
- 3348,
- 3349,
- 3350,
- 3351,
- 3352,
- 3353,
- 3354,
- 3355,
- 3356,
- 3357,
- 3358,
- 3359,
- 3360,
- 3361,
- 3362,
- 3363,
- 3364,
- 3365,
- 3366,
- 3367,
- 3368,
- 3369,
- 3370,
- 3371,
- 3372,
- 3373,
- 3374,
- 3375,
- 3376,
- 3377,
- 3378,
- 3379,
- 3380,
- 3381,
- 3382,
- 3383,
- 3384,
- 3385,
- 3386,
- 3389,
- 3406,
- 3424,
- 3425,
- 3450,
- 3451,
- 3452,
- 3453,
- 3454,
- 3455,
- 3461,
- 3462,
- 3463,
- 3464,
- 3465,
- 3466,
- 3467,
- 3468,
- 3469,
- 3470,
- 3471,
- 3472,
- 3473,
- 3474,
- 3475,
- 3476,
- 3477,
- 3478,
- 3482,
- 3483,
- 3484,
- 3485,
- 3486,
- 3487,
- 3488,
- 3489,
- 3490,
- 3491,
- 3492,
- 3493,
- 3494,
- 3495,
- 3496,
- 3497,
- 3498,
- 3499,
- 3500,
- 3501,
- 3502,
- 3503,
- 3504,
- 3505,
- 3507,
- 3508,
- 3509,
- 3510,
- 3511,
- 3512,
- 3513,
- 3514,
- 3515,
- 3517,
- 3520,
- 3521,
- 3522,
- 3523,
- 3524,
- 3525,
- 3526,
- 3585,
- 3586,
- 3587,
- 3588,
- 3589,
- 3590,
- 3591,
- 3592,
- 3593,
- 3594,
- 3595,
- 3596,
- 3597,
- 3598,
- 3599,
- 3600,
- 3601,
- 3602,
- 3603,
- 3604,
- 3605,
- 3606,
- 3607,
- 3608,
- 3609,
- 3610,
- 3611,
- 3612,
- 3613,
- 3614,
- 3615,
- 3616,
- 3617,
- 3618,
- 3619,
- 3620,
- 3621,
- 3622,
- 3623,
- 3624,
- 3625,
- 3626,
- 3627,
- 3628,
- 3629,
- 3630,
- 3631,
- 3632,
- 3634,
- 3635,
- 3648,
- 3649,
- 3650,
- 3651,
- 3652,
- 3653,
- 3654,
- 3713,
- 3714,
- 3716,
- 3719,
- 3720,
- 3722,
- 3725,
- 3732,
- 3733,
- 3734,
- 3735,
- 3737,
- 3738,
- 3739,
- 3740,
- 3741,
- 3742,
- 3743,
- 3745,
- 3746,
- 3747,
- 3749,
- 3751,
- 3754,
- 3755,
- 3757,
- 3758,
- 3759,
- 3760,
- 3762,
- 3763,
- 3773,
- 3776,
- 3777,
- 3778,
- 3779,
- 3780,
- 3782,
- 3804,
- 3805,
- 3806,
- 3807,
- 3840,
- 3904,
- 3905,
- 3906,
- 3907,
- 3908,
- 3909,
- 3910,
- 3911,
- 3913,
- 3914,
- 3915,
- 3916,
- 3917,
- 3918,
- 3919,
- 3920,
- 3921,
- 3922,
- 3923,
- 3924,
- 3925,
- 3926,
- 3927,
- 3928,
- 3929,
- 3930,
- 3931,
- 3932,
- 3933,
- 3934,
- 3935,
- 3936,
- 3937,
- 3938,
- 3939,
- 3940,
- 3941,
- 3942,
- 3943,
- 3944,
- 3945,
- 3946,
- 3947,
- 3948,
- 3976,
- 3977,
- 3978,
- 3979,
- 3980,
- 4096,
- 4097,
- 4098,
- 4099,
- 4100,
- 4101,
- 4102,
- 4103,
- 4104,
- 4105,
- 4106,
- 4107,
- 4108,
- 4109,
- 4110,
- 4111,
- 4112,
- 4113,
- 4114,
- 4115,
- 4116,
- 4117,
- 4118,
- 4119,
- 4120,
- 4121,
- 4122,
- 4123,
- 4124,
- 4125,
- 4126,
- 4127,
- 4128,
- 4129,
- 4130,
- 4131,
- 4132,
- 4133,
- 4134,
- 4135,
- 4136,
- 4137,
- 4138,
- 4159,
- 4176,
- 4177,
- 4178,
- 4179,
- 4180,
- 4181,
- 4186,
- 4187,
- 4188,
- 4189,
- 4193,
- 4197,
- 4198,
- 4206,
- 4207,
- 4208,
- 4213,
- 4214,
- 4215,
- 4216,
- 4217,
- 4218,
- 4219,
- 4220,
- 4221,
- 4222,
- 4223,
- 4224,
- 4225,
- 4238,
- 4256,
- 4257,
- 4258,
- 4259,
- 4260,
- 4261,
- 4262,
- 4263,
- 4264,
- 4265,
- 4266,
- 4267,
- 4268,
- 4269,
- 4270,
- 4271,
- 4272,
- 4273,
- 4274,
- 4275,
- 4276,
- 4277,
- 4278,
- 4279,
- 4280,
- 4281,
- 4282,
- 4283,
- 4284,
- 4285,
- 4286,
- 4287,
- 4288,
- 4289,
- 4290,
- 4291,
- 4292,
- 4293,
- 4295,
- 4301,
- 4304,
- 4305,
- 4306,
- 4307,
- 4308,
- 4309,
- 4310,
- 4311,
- 4312,
- 4313,
- 4314,
- 4315,
- 4316,
- 4317,
- 4318,
- 4319,
- 4320,
- 4321,
- 4322,
- 4323,
- 4324,
- 4325,
- 4326,
- 4327,
- 4328,
- 4329,
- 4330,
- 4331,
- 4332,
- 4333,
- 4334,
- 4335,
- 4336,
- 4337,
- 4338,
- 4339,
- 4340,
- 4341,
- 4342,
- 4343,
- 4344,
- 4345,
- 4346,
- 4348,
- 4349,
- 4350,
- 4351,
- 4352,
- 4353,
- 4354,
- 4355,
- 4356,
- 4357,
- 4358,
- 4359,
- 4360,
- 4361,
- 4362,
- 4363,
- 4364,
- 4365,
- 4366,
- 4367,
- 4368,
- 4369,
- 4370,
- 4371,
- 4372,
- 4373,
- 4374,
- 4375,
- 4376,
- 4377,
- 4378,
- 4379,
- 4380,
- 4381,
- 4382,
- 4383,
- 4384,
- 4385,
- 4386,
- 4387,
- 4388,
- 4389,
- 4390,
- 4391,
- 4392,
- 4393,
- 4394,
- 4395,
- 4396,
- 4397,
- 4398,
- 4399,
- 4400,
- 4401,
- 4402,
- 4403,
- 4404,
- 4405,
- 4406,
- 4407,
- 4408,
- 4409,
- 4410,
- 4411,
- 4412,
- 4413,
- 4414,
- 4415,
- 4416,
- 4417,
- 4418,
- 4419,
- 4420,
- 4421,
- 4422,
- 4423,
- 4424,
- 4425,
- 4426,
- 4427,
- 4428,
- 4429,
- 4430,
- 4431,
- 4432,
- 4433,
- 4434,
- 4435,
- 4436,
- 4437,
- 4438,
- 4439,
- 4440,
- 4441,
- 4442,
- 4443,
- 4444,
- 4445,
- 4446,
- 4447,
- 4448,
- 4449,
- 4450,
- 4451,
- 4452,
- 4453,
- 4454,
- 4455,
- 4456,
- 4457,
- 4458,
- 4459,
- 4460,
- 4461,
- 4462,
- 4463,
- 4464,
- 4465,
- 4466,
- 4467,
- 4468,
- 4469,
- 4470,
- 4471,
- 4472,
- 4473,
- 4474,
- 4475,
- 4476,
- 4477,
- 4478,
- 4479,
- 4480,
- 4481,
- 4482,
- 4483,
- 4484,
- 4485,
- 4486,
- 4487,
- 4488,
- 4489,
- 4490,
- 4491,
- 4492,
- 4493,
- 4494,
- 4495,
- 4496,
- 4497,
- 4498,
- 4499,
- 4500,
- 4501,
- 4502,
- 4503,
- 4504,
- 4505,
- 4506,
- 4507,
- 4508,
- 4509,
- 4510,
- 4511,
- 4512,
- 4513,
- 4514,
- 4515,
- 4516,
- 4517,
- 4518,
- 4519,
- 4520,
- 4521,
- 4522,
- 4523,
- 4524,
- 4525,
- 4526,
- 4527,
- 4528,
- 4529,
- 4530,
- 4531,
- 4532,
- 4533,
- 4534,
- 4535,
- 4536,
- 4537,
- 4538,
- 4539,
- 4540,
- 4541,
- 4542,
- 4543,
- 4544,
- 4545,
- 4546,
- 4547,
- 4548,
- 4549,
- 4550,
- 4551,
- 4552,
- 4553,
- 4554,
- 4555,
- 4556,
- 4557,
- 4558,
- 4559,
- 4560,
- 4561,
- 4562,
- 4563,
- 4564,
- 4565,
- 4566,
- 4567,
- 4568,
- 4569,
- 4570,
- 4571,
- 4572,
- 4573,
- 4574,
- 4575,
- 4576,
- 4577,
- 4578,
- 4579,
- 4580,
- 4581,
- 4582,
- 4583,
- 4584,
- 4585,
- 4586,
- 4587,
- 4588,
- 4589,
- 4590,
- 4591,
- 4592,
- 4593,
- 4594,
- 4595,
- 4596,
- 4597,
- 4598,
- 4599,
- 4600,
- 4601,
- 4602,
- 4603,
- 4604,
- 4605,
- 4606,
- 4607,
- 4608,
- 4609,
- 4610,
- 4611,
- 4612,
- 4613,
- 4614,
- 4615,
- 4616,
- 4617,
- 4618,
- 4619,
- 4620,
- 4621,
- 4622,
- 4623,
- 4624,
- 4625,
- 4626,
- 4627,
- 4628,
- 4629,
- 4630,
- 4631,
- 4632,
- 4633,
- 4634,
- 4635,
- 4636,
- 4637,
- 4638,
- 4639,
- 4640,
- 4641,
- 4642,
- 4643,
- 4644,
- 4645,
- 4646,
- 4647,
- 4648,
- 4649,
- 4650,
- 4651,
- 4652,
- 4653,
- 4654,
- 4655,
- 4656,
- 4657,
- 4658,
- 4659,
- 4660,
- 4661,
- 4662,
- 4663,
- 4664,
- 4665,
- 4666,
- 4667,
- 4668,
- 4669,
- 4670,
- 4671,
- 4672,
- 4673,
- 4674,
- 4675,
- 4676,
- 4677,
- 4678,
- 4679,
- 4680,
- 4682,
- 4683,
- 4684,
- 4685,
- 4688,
- 4689,
- 4690,
- 4691,
- 4692,
- 4693,
- 4694,
- 4696,
- 4698,
- 4699,
- 4700,
- 4701,
- 4704,
- 4705,
- 4706,
- 4707,
- 4708,
- 4709,
- 4710,
- 4711,
- 4712,
- 4713,
- 4714,
- 4715,
- 4716,
- 4717,
- 4718,
- 4719,
- 4720,
- 4721,
- 4722,
- 4723,
- 4724,
- 4725,
- 4726,
- 4727,
- 4728,
- 4729,
- 4730,
- 4731,
- 4732,
- 4733,
- 4734,
- 4735,
- 4736,
- 4737,
- 4738,
- 4739,
- 4740,
- 4741,
- 4742,
- 4743,
- 4744,
- 4746,
- 4747,
- 4748,
- 4749,
- 4752,
- 4753,
- 4754,
- 4755,
- 4756,
- 4757,
- 4758,
- 4759,
- 4760,
- 4761,
- 4762,
- 4763,
- 4764,
- 4765,
- 4766,
- 4767,
- 4768,
- 4769,
- 4770,
- 4771,
- 4772,
- 4773,
- 4774,
- 4775,
- 4776,
- 4777,
- 4778,
- 4779,
- 4780,
- 4781,
- 4782,
- 4783,
- 4784,
- 4786,
- 4787,
- 4788,
- 4789,
- 4792,
- 4793,
- 4794,
- 4795,
- 4796,
- 4797,
- 4798,
- 4800,
- 4802,
- 4803,
- 4804,
- 4805,
- 4808,
- 4809,
- 4810,
- 4811,
- 4812,
- 4813,
- 4814,
- 4815,
- 4816,
- 4817,
- 4818,
- 4819,
- 4820,
- 4821,
- 4822,
- 4824,
- 4825,
- 4826,
- 4827,
- 4828,
- 4829,
- 4830,
- 4831,
- 4832,
- 4833,
- 4834,
- 4835,
- 4836,
- 4837,
- 4838,
- 4839,
- 4840,
- 4841,
- 4842,
- 4843,
- 4844,
- 4845,
- 4846,
- 4847,
- 4848,
- 4849,
- 4850,
- 4851,
- 4852,
- 4853,
- 4854,
- 4855,
- 4856,
- 4857,
- 4858,
- 4859,
- 4860,
- 4861,
- 4862,
- 4863,
- 4864,
- 4865,
- 4866,
- 4867,
- 4868,
- 4869,
- 4870,
- 4871,
- 4872,
- 4873,
- 4874,
- 4875,
- 4876,
- 4877,
- 4878,
- 4879,
- 4880,
- 4882,
- 4883,
- 4884,
- 4885,
- 4888,
- 4889,
- 4890,
- 4891,
- 4892,
- 4893,
- 4894,
- 4895,
- 4896,
- 4897,
- 4898,
- 4899,
- 4900,
- 4901,
- 4902,
- 4903,
- 4904,
- 4905,
- 4906,
- 4907,
- 4908,
- 4909,
- 4910,
- 4911,
- 4912,
- 4913,
- 4914,
- 4915,
- 4916,
- 4917,
- 4918,
- 4919,
- 4920,
- 4921,
- 4922,
- 4923,
- 4924,
- 4925,
- 4926,
- 4927,
- 4928,
- 4929,
- 4930,
- 4931,
- 4932,
- 4933,
- 4934,
- 4935,
- 4936,
- 4937,
- 4938,
- 4939,
- 4940,
- 4941,
- 4942,
- 4943,
- 4944,
- 4945,
- 4946,
- 4947,
- 4948,
- 4949,
- 4950,
- 4951,
- 4952,
- 4953,
- 4954,
- 4992,
- 4993,
- 4994,
- 4995,
- 4996,
- 4997,
- 4998,
- 4999,
- 5000,
- 5001,
- 5002,
- 5003,
- 5004,
- 5005,
- 5006,
- 5007,
- 5024,
- 5025,
- 5026,
- 5027,
- 5028,
- 5029,
- 5030,
- 5031,
- 5032,
- 5033,
- 5034,
- 5035,
- 5036,
- 5037,
- 5038,
- 5039,
- 5040,
- 5041,
- 5042,
- 5043,
- 5044,
- 5045,
- 5046,
- 5047,
- 5048,
- 5049,
- 5050,
- 5051,
- 5052,
- 5053,
- 5054,
- 5055,
- 5056,
- 5057,
- 5058,
- 5059,
- 5060,
- 5061,
- 5062,
- 5063,
- 5064,
- 5065,
- 5066,
- 5067,
- 5068,
- 5069,
- 5070,
- 5071,
- 5072,
- 5073,
- 5074,
- 5075,
- 5076,
- 5077,
- 5078,
- 5079,
- 5080,
- 5081,
- 5082,
- 5083,
- 5084,
- 5085,
- 5086,
- 5087,
- 5088,
- 5089,
- 5090,
- 5091,
- 5092,
- 5093,
- 5094,
- 5095,
- 5096,
- 5097,
- 5098,
- 5099,
- 5100,
- 5101,
- 5102,
- 5103,
- 5104,
- 5105,
- 5106,
- 5107,
- 5108,
- 5121,
- 5122,
- 5123,
- 5124,
- 5125,
- 5126,
- 5127,
- 5128,
- 5129,
- 5130,
- 5131,
- 5132,
- 5133,
- 5134,
- 5135,
- 5136,
- 5137,
- 5138,
- 5139,
- 5140,
- 5141,
- 5142,
- 5143,
- 5144,
- 5145,
- 5146,
- 5147,
- 5148,
- 5149,
- 5150,
- 5151,
- 5152,
- 5153,
- 5154,
- 5155,
- 5156,
- 5157,
- 5158,
- 5159,
- 5160,
- 5161,
- 5162,
- 5163,
- 5164,
- 5165,
- 5166,
- 5167,
- 5168,
- 5169,
- 5170,
- 5171,
- 5172,
- 5173,
- 5174,
- 5175,
- 5176,
- 5177,
- 5178,
- 5179,
- 5180,
- 5181,
- 5182,
- 5183,
- 5184,
- 5185,
- 5186,
- 5187,
- 5188,
- 5189,
- 5190,
- 5191,
- 5192,
- 5193,
- 5194,
- 5195,
- 5196,
- 5197,
- 5198,
- 5199,
- 5200,
- 5201,
- 5202,
- 5203,
- 5204,
- 5205,
- 5206,
- 5207,
- 5208,
- 5209,
- 5210,
- 5211,
- 5212,
- 5213,
- 5214,
- 5215,
- 5216,
- 5217,
- 5218,
- 5219,
- 5220,
- 5221,
- 5222,
- 5223,
- 5224,
- 5225,
- 5226,
- 5227,
- 5228,
- 5229,
- 5230,
- 5231,
- 5232,
- 5233,
- 5234,
- 5235,
- 5236,
- 5237,
- 5238,
- 5239,
- 5240,
- 5241,
- 5242,
- 5243,
- 5244,
- 5245,
- 5246,
- 5247,
- 5248,
- 5249,
- 5250,
- 5251,
- 5252,
- 5253,
- 5254,
- 5255,
- 5256,
- 5257,
- 5258,
- 5259,
- 5260,
- 5261,
- 5262,
- 5263,
- 5264,
- 5265,
- 5266,
- 5267,
- 5268,
- 5269,
- 5270,
- 5271,
- 5272,
- 5273,
- 5274,
- 5275,
- 5276,
- 5277,
- 5278,
- 5279,
- 5280,
- 5281,
- 5282,
- 5283,
- 5284,
- 5285,
- 5286,
- 5287,
- 5288,
- 5289,
- 5290,
- 5291,
- 5292,
- 5293,
- 5294,
- 5295,
- 5296,
- 5297,
- 5298,
- 5299,
- 5300,
- 5301,
- 5302,
- 5303,
- 5304,
- 5305,
- 5306,
- 5307,
- 5308,
- 5309,
- 5310,
- 5311,
- 5312,
- 5313,
- 5314,
- 5315,
- 5316,
- 5317,
- 5318,
- 5319,
- 5320,
- 5321,
- 5322,
- 5323,
- 5324,
- 5325,
- 5326,
- 5327,
- 5328,
- 5329,
- 5330,
- 5331,
- 5332,
- 5333,
- 5334,
- 5335,
- 5336,
- 5337,
- 5338,
- 5339,
- 5340,
- 5341,
- 5342,
- 5343,
- 5344,
- 5345,
- 5346,
- 5347,
- 5348,
- 5349,
- 5350,
- 5351,
- 5352,
- 5353,
- 5354,
- 5355,
- 5356,
- 5357,
- 5358,
- 5359,
- 5360,
- 5361,
- 5362,
- 5363,
- 5364,
- 5365,
- 5366,
- 5367,
- 5368,
- 5369,
- 5370,
- 5371,
- 5372,
- 5373,
- 5374,
- 5375,
- 5376,
- 5377,
- 5378,
- 5379,
- 5380,
- 5381,
- 5382,
- 5383,
- 5384,
- 5385,
- 5386,
- 5387,
- 5388,
- 5389,
- 5390,
- 5391,
- 5392,
- 5393,
- 5394,
- 5395,
- 5396,
- 5397,
- 5398,
- 5399,
- 5400,
- 5401,
- 5402,
- 5403,
- 5404,
- 5405,
- 5406,
- 5407,
- 5408,
- 5409,
- 5410,
- 5411,
- 5412,
- 5413,
- 5414,
- 5415,
- 5416,
- 5417,
- 5418,
- 5419,
- 5420,
- 5421,
- 5422,
- 5423,
- 5424,
- 5425,
- 5426,
- 5427,
- 5428,
- 5429,
- 5430,
- 5431,
- 5432,
- 5433,
- 5434,
- 5435,
- 5436,
- 5437,
- 5438,
- 5439,
- 5440,
- 5441,
- 5442,
- 5443,
- 5444,
- 5445,
- 5446,
- 5447,
- 5448,
- 5449,
- 5450,
- 5451,
- 5452,
- 5453,
- 5454,
- 5455,
- 5456,
- 5457,
- 5458,
- 5459,
- 5460,
- 5461,
- 5462,
- 5463,
- 5464,
- 5465,
- 5466,
- 5467,
- 5468,
- 5469,
- 5470,
- 5471,
- 5472,
- 5473,
- 5474,
- 5475,
- 5476,
- 5477,
- 5478,
- 5479,
- 5480,
- 5481,
- 5482,
- 5483,
- 5484,
- 5485,
- 5486,
- 5487,
- 5488,
- 5489,
- 5490,
- 5491,
- 5492,
- 5493,
- 5494,
- 5495,
- 5496,
- 5497,
- 5498,
- 5499,
- 5500,
- 5501,
- 5502,
- 5503,
- 5504,
- 5505,
- 5506,
- 5507,
- 5508,
- 5509,
- 5510,
- 5511,
- 5512,
- 5513,
- 5514,
- 5515,
- 5516,
- 5517,
- 5518,
- 5519,
- 5520,
- 5521,
- 5522,
- 5523,
- 5524,
- 5525,
- 5526,
- 5527,
- 5528,
- 5529,
- 5530,
- 5531,
- 5532,
- 5533,
- 5534,
- 5535,
- 5536,
- 5537,
- 5538,
- 5539,
- 5540,
- 5541,
- 5542,
- 5543,
- 5544,
- 5545,
- 5546,
- 5547,
- 5548,
- 5549,
- 5550,
- 5551,
- 5552,
- 5553,
- 5554,
- 5555,
- 5556,
- 5557,
- 5558,
- 5559,
- 5560,
- 5561,
- 5562,
- 5563,
- 5564,
- 5565,
- 5566,
- 5567,
- 5568,
- 5569,
- 5570,
- 5571,
- 5572,
- 5573,
- 5574,
- 5575,
- 5576,
- 5577,
- 5578,
- 5579,
- 5580,
- 5581,
- 5582,
- 5583,
- 5584,
- 5585,
- 5586,
- 5587,
- 5588,
- 5589,
- 5590,
- 5591,
- 5592,
- 5593,
- 5594,
- 5595,
- 5596,
- 5597,
- 5598,
- 5599,
- 5600,
- 5601,
- 5602,
- 5603,
- 5604,
- 5605,
- 5606,
- 5607,
- 5608,
- 5609,
- 5610,
- 5611,
- 5612,
- 5613,
- 5614,
- 5615,
- 5616,
- 5617,
- 5618,
- 5619,
- 5620,
- 5621,
- 5622,
- 5623,
- 5624,
- 5625,
- 5626,
- 5627,
- 5628,
- 5629,
- 5630,
- 5631,
- 5632,
- 5633,
- 5634,
- 5635,
- 5636,
- 5637,
- 5638,
- 5639,
- 5640,
- 5641,
- 5642,
- 5643,
- 5644,
- 5645,
- 5646,
- 5647,
- 5648,
- 5649,
- 5650,
- 5651,
- 5652,
- 5653,
- 5654,
- 5655,
- 5656,
- 5657,
- 5658,
- 5659,
- 5660,
- 5661,
- 5662,
- 5663,
- 5664,
- 5665,
- 5666,
- 5667,
- 5668,
- 5669,
- 5670,
- 5671,
- 5672,
- 5673,
- 5674,
- 5675,
- 5676,
- 5677,
- 5678,
- 5679,
- 5680,
- 5681,
- 5682,
- 5683,
- 5684,
- 5685,
- 5686,
- 5687,
- 5688,
- 5689,
- 5690,
- 5691,
- 5692,
- 5693,
- 5694,
- 5695,
- 5696,
- 5697,
- 5698,
- 5699,
- 5700,
- 5701,
- 5702,
- 5703,
- 5704,
- 5705,
- 5706,
- 5707,
- 5708,
- 5709,
- 5710,
- 5711,
- 5712,
- 5713,
- 5714,
- 5715,
- 5716,
- 5717,
- 5718,
- 5719,
- 5720,
- 5721,
- 5722,
- 5723,
- 5724,
- 5725,
- 5726,
- 5727,
- 5728,
- 5729,
- 5730,
- 5731,
- 5732,
- 5733,
- 5734,
- 5735,
- 5736,
- 5737,
- 5738,
- 5739,
- 5740,
- 5743,
- 5744,
- 5745,
- 5746,
- 5747,
- 5748,
- 5749,
- 5750,
- 5751,
- 5752,
- 5753,
- 5754,
- 5755,
- 5756,
- 5757,
- 5758,
- 5759,
- 5761,
- 5762,
- 5763,
- 5764,
- 5765,
- 5766,
- 5767,
- 5768,
- 5769,
- 5770,
- 5771,
- 5772,
- 5773,
- 5774,
- 5775,
- 5776,
- 5777,
- 5778,
- 5779,
- 5780,
- 5781,
- 5782,
- 5783,
- 5784,
- 5785,
- 5786,
- 5792,
- 5793,
- 5794,
- 5795,
- 5796,
- 5797,
- 5798,
- 5799,
- 5800,
- 5801,
- 5802,
- 5803,
- 5804,
- 5805,
- 5806,
- 5807,
- 5808,
- 5809,
- 5810,
- 5811,
- 5812,
- 5813,
- 5814,
- 5815,
- 5816,
- 5817,
- 5818,
- 5819,
- 5820,
- 5821,
- 5822,
- 5823,
- 5824,
- 5825,
- 5826,
- 5827,
- 5828,
- 5829,
- 5830,
- 5831,
- 5832,
- 5833,
- 5834,
- 5835,
- 5836,
- 5837,
- 5838,
- 5839,
- 5840,
- 5841,
- 5842,
- 5843,
- 5844,
- 5845,
- 5846,
- 5847,
- 5848,
- 5849,
- 5850,
- 5851,
- 5852,
- 5853,
- 5854,
- 5855,
- 5856,
- 5857,
- 5858,
- 5859,
- 5860,
- 5861,
- 5862,
- 5863,
- 5864,
- 5865,
- 5866,
- 5870,
- 5871,
- 5872,
- 5888,
- 5889,
- 5890,
- 5891,
- 5892,
- 5893,
- 5894,
- 5895,
- 5896,
- 5897,
- 5898,
- 5899,
- 5900,
- 5902,
- 5903,
- 5904,
- 5905,
- 5920,
- 5921,
- 5922,
- 5923,
- 5924,
- 5925,
- 5926,
- 5927,
- 5928,
- 5929,
- 5930,
- 5931,
- 5932,
- 5933,
- 5934,
- 5935,
- 5936,
- 5937,
- 5952,
- 5953,
- 5954,
- 5955,
- 5956,
- 5957,
- 5958,
- 5959,
- 5960,
- 5961,
- 5962,
- 5963,
- 5964,
- 5965,
- 5966,
- 5967,
- 5968,
- 5969,
- 5984,
- 5985,
- 5986,
- 5987,
- 5988,
- 5989,
- 5990,
- 5991,
- 5992,
- 5993,
- 5994,
- 5995,
- 5996,
- 5998,
- 5999,
- 6000,
- 6016,
- 6017,
- 6018,
- 6019,
- 6020,
- 6021,
- 6022,
- 6023,
- 6024,
- 6025,
- 6026,
- 6027,
- 6028,
- 6029,
- 6030,
- 6031,
- 6032,
- 6033,
- 6034,
- 6035,
- 6036,
- 6037,
- 6038,
- 6039,
- 6040,
- 6041,
- 6042,
- 6043,
- 6044,
- 6045,
- 6046,
- 6047,
- 6048,
- 6049,
- 6050,
- 6051,
- 6052,
- 6053,
- 6054,
- 6055,
- 6056,
- 6057,
- 6058,
- 6059,
- 6060,
- 6061,
- 6062,
- 6063,
- 6064,
- 6065,
- 6066,
- 6067,
- 6103,
- 6108,
- 6176,
- 6177,
- 6178,
- 6179,
- 6180,
- 6181,
- 6182,
- 6183,
- 6184,
- 6185,
- 6186,
- 6187,
- 6188,
- 6189,
- 6190,
- 6191,
- 6192,
- 6193,
- 6194,
- 6195,
- 6196,
- 6197,
- 6198,
- 6199,
- 6200,
- 6201,
- 6202,
- 6203,
- 6204,
- 6205,
- 6206,
- 6207,
- 6208,
- 6209,
- 6210,
- 6211,
- 6212,
- 6213,
- 6214,
- 6215,
- 6216,
- 6217,
- 6218,
- 6219,
- 6220,
- 6221,
- 6222,
- 6223,
- 6224,
- 6225,
- 6226,
- 6227,
- 6228,
- 6229,
- 6230,
- 6231,
- 6232,
- 6233,
- 6234,
- 6235,
- 6236,
- 6237,
- 6238,
- 6239,
- 6240,
- 6241,
- 6242,
- 6243,
- 6244,
- 6245,
- 6246,
- 6247,
- 6248,
- 6249,
- 6250,
- 6251,
- 6252,
- 6253,
- 6254,
- 6255,
- 6256,
- 6257,
- 6258,
- 6259,
- 6260,
- 6261,
- 6262,
- 6263,
- 6272,
- 6273,
- 6274,
- 6275,
- 6276,
- 6277,
- 6278,
- 6279,
- 6280,
- 6281,
- 6282,
- 6283,
- 6284,
- 6285,
- 6286,
- 6287,
- 6288,
- 6289,
- 6290,
- 6291,
- 6292,
- 6293,
- 6294,
- 6295,
- 6296,
- 6297,
- 6298,
- 6299,
- 6300,
- 6301,
- 6302,
- 6303,
- 6304,
- 6305,
- 6306,
- 6307,
- 6308,
- 6309,
- 6310,
- 6311,
- 6312,
- 6314,
- 6320,
- 6321,
- 6322,
- 6323,
- 6324,
- 6325,
- 6326,
- 6327,
- 6328,
- 6329,
- 6330,
- 6331,
- 6332,
- 6333,
- 6334,
- 6335,
- 6336,
- 6337,
- 6338,
- 6339,
- 6340,
- 6341,
- 6342,
- 6343,
- 6344,
- 6345,
- 6346,
- 6347,
- 6348,
- 6349,
- 6350,
- 6351,
- 6352,
- 6353,
- 6354,
- 6355,
- 6356,
- 6357,
- 6358,
- 6359,
- 6360,
- 6361,
- 6362,
- 6363,
- 6364,
- 6365,
- 6366,
- 6367,
- 6368,
- 6369,
- 6370,
- 6371,
- 6372,
- 6373,
- 6374,
- 6375,
- 6376,
- 6377,
- 6378,
- 6379,
- 6380,
- 6381,
- 6382,
- 6383,
- 6384,
- 6385,
- 6386,
- 6387,
- 6388,
- 6389,
- 6400,
- 6401,
- 6402,
- 6403,
- 6404,
- 6405,
- 6406,
- 6407,
- 6408,
- 6409,
- 6410,
- 6411,
- 6412,
- 6413,
- 6414,
- 6415,
- 6416,
- 6417,
- 6418,
- 6419,
- 6420,
- 6421,
- 6422,
- 6423,
- 6424,
- 6425,
- 6426,
- 6427,
- 6428,
- 6480,
- 6481,
- 6482,
- 6483,
- 6484,
- 6485,
- 6486,
- 6487,
- 6488,
- 6489,
- 6490,
- 6491,
- 6492,
- 6493,
- 6494,
- 6495,
- 6496,
- 6497,
- 6498,
- 6499,
- 6500,
- 6501,
- 6502,
- 6503,
- 6504,
- 6505,
- 6506,
- 6507,
- 6508,
- 6509,
- 6512,
- 6513,
- 6514,
- 6515,
- 6516,
- 6528,
- 6529,
- 6530,
- 6531,
- 6532,
- 6533,
- 6534,
- 6535,
- 6536,
- 6537,
- 6538,
- 6539,
- 6540,
- 6541,
- 6542,
- 6543,
- 6544,
- 6545,
- 6546,
- 6547,
- 6548,
- 6549,
- 6550,
- 6551,
- 6552,
- 6553,
- 6554,
- 6555,
- 6556,
- 6557,
- 6558,
- 6559,
- 6560,
- 6561,
- 6562,
- 6563,
- 6564,
- 6565,
- 6566,
- 6567,
- 6568,
- 6569,
- 6570,
- 6571,
- 6593,
- 6594,
- 6595,
- 6596,
- 6597,
- 6598,
- 6599,
- 6656,
- 6657,
- 6658,
- 6659,
- 6660,
- 6661,
- 6662,
- 6663,
- 6664,
- 6665,
- 6666,
- 6667,
- 6668,
- 6669,
- 6670,
- 6671,
- 6672,
- 6673,
- 6674,
- 6675,
- 6676,
- 6677,
- 6678,
- 6688,
- 6689,
- 6690,
- 6691,
- 6692,
- 6693,
- 6694,
- 6695,
- 6696,
- 6697,
- 6698,
- 6699,
- 6700,
- 6701,
- 6702,
- 6703,
- 6704,
- 6705,
- 6706,
- 6707,
- 6708,
- 6709,
- 6710,
- 6711,
- 6712,
- 6713,
- 6714,
- 6715,
- 6716,
- 6717,
- 6718,
- 6719,
- 6720,
- 6721,
- 6722,
- 6723,
- 6724,
- 6725,
- 6726,
- 6727,
- 6728,
- 6729,
- 6730,
- 6731,
- 6732,
- 6733,
- 6734,
- 6735,
- 6736,
- 6737,
- 6738,
- 6739,
- 6740,
- 6823,
- 6917,
- 6918,
- 6919,
- 6920,
- 6921,
- 6922,
- 6923,
- 6924,
- 6925,
- 6926,
- 6927,
- 6928,
- 6929,
- 6930,
- 6931,
- 6932,
- 6933,
- 6934,
- 6935,
- 6936,
- 6937,
- 6938,
- 6939,
- 6940,
- 6941,
- 6942,
- 6943,
- 6944,
- 6945,
- 6946,
- 6947,
- 6948,
- 6949,
- 6950,
- 6951,
- 6952,
- 6953,
- 6954,
- 6955,
- 6956,
- 6957,
- 6958,
- 6959,
- 6960,
- 6961,
- 6962,
- 6963,
- 6981,
- 6982,
- 6983,
- 6984,
- 6985,
- 6986,
- 6987,
- 7043,
- 7044,
- 7045,
- 7046,
- 7047,
- 7048,
- 7049,
- 7050,
- 7051,
- 7052,
- 7053,
- 7054,
- 7055,
- 7056,
- 7057,
- 7058,
- 7059,
- 7060,
- 7061,
- 7062,
- 7063,
- 7064,
- 7065,
- 7066,
- 7067,
- 7068,
- 7069,
- 7070,
- 7071,
- 7072,
- 7086,
- 7087,
- 7098,
- 7099,
- 7100,
- 7101,
- 7102,
- 7103,
- 7104,
- 7105,
- 7106,
- 7107,
- 7108,
- 7109,
- 7110,
- 7111,
- 7112,
- 7113,
- 7114,
- 7115,
- 7116,
- 7117,
- 7118,
- 7119,
- 7120,
- 7121,
- 7122,
- 7123,
- 7124,
- 7125,
- 7126,
- 7127,
- 7128,
- 7129,
- 7130,
- 7131,
- 7132,
- 7133,
- 7134,
- 7135,
- 7136,
- 7137,
- 7138,
- 7139,
- 7140,
- 7141,
- 7168,
- 7169,
- 7170,
- 7171,
- 7172,
- 7173,
- 7174,
- 7175,
- 7176,
- 7177,
- 7178,
- 7179,
- 7180,
- 7181,
- 7182,
- 7183,
- 7184,
- 7185,
- 7186,
- 7187,
- 7188,
- 7189,
- 7190,
- 7191,
- 7192,
- 7193,
- 7194,
- 7195,
- 7196,
- 7197,
- 7198,
- 7199,
- 7200,
- 7201,
- 7202,
- 7203,
- 7245,
- 7246,
- 7247,
- 7258,
- 7259,
- 7260,
- 7261,
- 7262,
- 7263,
- 7264,
- 7265,
- 7266,
- 7267,
- 7268,
- 7269,
- 7270,
- 7271,
- 7272,
- 7273,
- 7274,
- 7275,
- 7276,
- 7277,
- 7278,
- 7279,
- 7280,
- 7281,
- 7282,
- 7283,
- 7284,
- 7285,
- 7286,
- 7287,
- 7288,
- 7289,
- 7290,
- 7291,
- 7292,
- 7293,
- 7401,
- 7402,
- 7403,
- 7404,
- 7406,
- 7407,
- 7408,
- 7409,
- 7413,
- 7414,
- 7424,
- 7425,
- 7426,
- 7427,
- 7428,
- 7429,
- 7430,
- 7431,
- 7432,
- 7433,
- 7434,
- 7435,
- 7436,
- 7437,
- 7438,
- 7439,
- 7440,
- 7441,
- 7442,
- 7443,
- 7444,
- 7445,
- 7446,
- 7447,
- 7448,
- 7449,
- 7450,
- 7451,
- 7452,
- 7453,
- 7454,
- 7455,
- 7456,
- 7457,
- 7458,
- 7459,
- 7460,
- 7461,
- 7462,
- 7463,
- 7464,
- 7465,
- 7466,
- 7467,
- 7468,
- 7469,
- 7470,
- 7471,
- 7472,
- 7473,
- 7474,
- 7475,
- 7476,
- 7477,
- 7478,
- 7479,
- 7480,
- 7481,
- 7482,
- 7483,
- 7484,
- 7485,
- 7486,
- 7487,
- 7488,
- 7489,
- 7490,
- 7491,
- 7492,
- 7493,
- 7494,
- 7495,
- 7496,
- 7497,
- 7498,
- 7499,
- 7500,
- 7501,
- 7502,
- 7503,
- 7504,
- 7505,
- 7506,
- 7507,
- 7508,
- 7509,
- 7510,
- 7511,
- 7512,
- 7513,
- 7514,
- 7515,
- 7516,
- 7517,
- 7518,
- 7519,
- 7520,
- 7521,
- 7522,
- 7523,
- 7524,
- 7525,
- 7526,
- 7527,
- 7528,
- 7529,
- 7530,
- 7531,
- 7532,
- 7533,
- 7534,
- 7535,
- 7536,
- 7537,
- 7538,
- 7539,
- 7540,
- 7541,
- 7542,
- 7543,
- 7544,
- 7545,
- 7546,
- 7547,
- 7548,
- 7549,
- 7550,
- 7551,
- 7552,
- 7553,
- 7554,
- 7555,
- 7556,
- 7557,
- 7558,
- 7559,
- 7560,
- 7561,
- 7562,
- 7563,
- 7564,
- 7565,
- 7566,
- 7567,
- 7568,
- 7569,
- 7570,
- 7571,
- 7572,
- 7573,
- 7574,
- 7575,
- 7576,
- 7577,
- 7578,
- 7579,
- 7580,
- 7581,
- 7582,
- 7583,
- 7584,
- 7585,
- 7586,
- 7587,
- 7588,
- 7589,
- 7590,
- 7591,
- 7592,
- 7593,
- 7594,
- 7595,
- 7596,
- 7597,
- 7598,
- 7599,
- 7600,
- 7601,
- 7602,
- 7603,
- 7604,
- 7605,
- 7606,
- 7607,
- 7608,
- 7609,
- 7610,
- 7611,
- 7612,
- 7613,
- 7614,
- 7615,
- 7680,
- 7681,
- 7682,
- 7683,
- 7684,
- 7685,
- 7686,
- 7687,
- 7688,
- 7689,
- 7690,
- 7691,
- 7692,
- 7693,
- 7694,
- 7695,
- 7696,
- 7697,
- 7698,
- 7699,
- 7700,
- 7701,
- 7702,
- 7703,
- 7704,
- 7705,
- 7706,
- 7707,
- 7708,
- 7709,
- 7710,
- 7711,
- 7712,
- 7713,
- 7714,
- 7715,
- 7716,
- 7717,
- 7718,
- 7719,
- 7720,
- 7721,
- 7722,
- 7723,
- 7724,
- 7725,
- 7726,
- 7727,
- 7728,
- 7729,
- 7730,
- 7731,
- 7732,
- 7733,
- 7734,
- 7735,
- 7736,
- 7737,
- 7738,
- 7739,
- 7740,
- 7741,
- 7742,
- 7743,
- 7744,
- 7745,
- 7746,
- 7747,
- 7748,
- 7749,
- 7750,
- 7751,
- 7752,
- 7753,
- 7754,
- 7755,
- 7756,
- 7757,
- 7758,
- 7759,
- 7760,
- 7761,
- 7762,
- 7763,
- 7764,
- 7765,
- 7766,
- 7767,
- 7768,
- 7769,
- 7770,
- 7771,
- 7772,
- 7773,
- 7774,
- 7775,
- 7776,
- 7777,
- 7778,
- 7779,
- 7780,
- 7781,
- 7782,
- 7783,
- 7784,
- 7785,
- 7786,
- 7787,
- 7788,
- 7789,
- 7790,
- 7791,
- 7792,
- 7793,
- 7794,
- 7795,
- 7796,
- 7797,
- 7798,
- 7799,
- 7800,
- 7801,
- 7802,
- 7803,
- 7804,
- 7805,
- 7806,
- 7807,
- 7808,
- 7809,
- 7810,
- 7811,
- 7812,
- 7813,
- 7814,
- 7815,
- 7816,
- 7817,
- 7818,
- 7819,
- 7820,
- 7821,
- 7822,
- 7823,
- 7824,
- 7825,
- 7826,
- 7827,
- 7828,
- 7829,
- 7830,
- 7831,
- 7832,
- 7833,
- 7834,
- 7835,
- 7836,
- 7837,
- 7838,
- 7839,
- 7840,
- 7841,
- 7842,
- 7843,
- 7844,
- 7845,
- 7846,
- 7847,
- 7848,
- 7849,
- 7850,
- 7851,
- 7852,
- 7853,
- 7854,
- 7855,
- 7856,
- 7857,
- 7858,
- 7859,
- 7860,
- 7861,
- 7862,
- 7863,
- 7864,
- 7865,
- 7866,
- 7867,
- 7868,
- 7869,
- 7870,
- 7871,
- 7872,
- 7873,
- 7874,
- 7875,
- 7876,
- 7877,
- 7878,
- 7879,
- 7880,
- 7881,
- 7882,
- 7883,
- 7884,
- 7885,
- 7886,
- 7887,
- 7888,
- 7889,
- 7890,
- 7891,
- 7892,
- 7893,
- 7894,
- 7895,
- 7896,
- 7897,
- 7898,
- 7899,
- 7900,
- 7901,
- 7902,
- 7903,
- 7904,
- 7905,
- 7906,
- 7907,
- 7908,
- 7909,
- 7910,
- 7911,
- 7912,
- 7913,
- 7914,
- 7915,
- 7916,
- 7917,
- 7918,
- 7919,
- 7920,
- 7921,
- 7922,
- 7923,
- 7924,
- 7925,
- 7926,
- 7927,
- 7928,
- 7929,
- 7930,
- 7931,
- 7932,
- 7933,
- 7934,
- 7935,
- 7936,
- 7937,
- 7938,
- 7939,
- 7940,
- 7941,
- 7942,
- 7943,
- 7944,
- 7945,
- 7946,
- 7947,
- 7948,
- 7949,
- 7950,
- 7951,
- 7952,
- 7953,
- 7954,
- 7955,
- 7956,
- 7957,
- 7960,
- 7961,
- 7962,
- 7963,
- 7964,
- 7965,
- 7968,
- 7969,
- 7970,
- 7971,
- 7972,
- 7973,
- 7974,
- 7975,
- 7976,
- 7977,
- 7978,
- 7979,
- 7980,
- 7981,
- 7982,
- 7983,
- 7984,
- 7985,
- 7986,
- 7987,
- 7988,
- 7989,
- 7990,
- 7991,
- 7992,
- 7993,
- 7994,
- 7995,
- 7996,
- 7997,
- 7998,
- 7999,
- 8000,
- 8001,
- 8002,
- 8003,
- 8004,
- 8005,
- 8008,
- 8009,
- 8010,
- 8011,
- 8012,
- 8013,
- 8016,
- 8017,
- 8018,
- 8019,
- 8020,
- 8021,
- 8022,
- 8023,
- 8025,
- 8027,
- 8029,
- 8031,
- 8032,
- 8033,
- 8034,
- 8035,
- 8036,
- 8037,
- 8038,
- 8039,
- 8040,
- 8041,
- 8042,
- 8043,
- 8044,
- 8045,
- 8046,
- 8047,
- 8048,
- 8049,
- 8050,
- 8051,
- 8052,
- 8053,
- 8054,
- 8055,
- 8056,
- 8057,
- 8058,
- 8059,
- 8060,
- 8061,
- 8064,
- 8065,
- 8066,
- 8067,
- 8068,
- 8069,
- 8070,
- 8071,
- 8072,
- 8073,
- 8074,
- 8075,
- 8076,
- 8077,
- 8078,
- 8079,
- 8080,
- 8081,
- 8082,
- 8083,
- 8084,
- 8085,
- 8086,
- 8087,
- 8088,
- 8089,
- 8090,
- 8091,
- 8092,
- 8093,
- 8094,
- 8095,
- 8096,
- 8097,
- 8098,
- 8099,
- 8100,
- 8101,
- 8102,
- 8103,
- 8104,
- 8105,
- 8106,
- 8107,
- 8108,
- 8109,
- 8110,
- 8111,
- 8112,
- 8113,
- 8114,
- 8115,
- 8116,
- 8118,
- 8119,
- 8120,
- 8121,
- 8122,
- 8123,
- 8124,
- 8126,
- 8130,
- 8131,
- 8132,
- 8134,
- 8135,
- 8136,
- 8137,
- 8138,
- 8139,
- 8140,
- 8144,
- 8145,
- 8146,
- 8147,
- 8150,
- 8151,
- 8152,
- 8153,
- 8154,
- 8155,
- 8160,
- 8161,
- 8162,
- 8163,
- 8164,
- 8165,
- 8166,
- 8167,
- 8168,
- 8169,
- 8170,
- 8171,
- 8172,
- 8178,
- 8179,
- 8180,
- 8182,
- 8183,
- 8184,
- 8185,
- 8186,
- 8187,
- 8188,
- 8305,
- 8319,
- 8336,
- 8337,
- 8338,
- 8339,
- 8340,
- 8341,
- 8342,
- 8343,
- 8344,
- 8345,
- 8346,
- 8347,
- 8348,
- 8450,
- 8455,
- 8458,
- 8459,
- 8460,
- 8461,
- 8462,
- 8463,
- 8464,
- 8465,
- 8466,
- 8467,
- 8469,
- 8473,
- 8474,
- 8475,
- 8476,
- 8477,
- 8484,
- 8486,
- 8488,
- 8490,
- 8491,
- 8492,
- 8493,
- 8495,
- 8496,
- 8497,
- 8498,
- 8499,
- 8500,
- 8501,
- 8502,
- 8503,
- 8504,
- 8505,
- 8508,
- 8509,
- 8510,
- 8511,
- 8517,
- 8518,
- 8519,
- 8520,
- 8521,
- 8526,
- 8544,
- 8545,
- 8546,
- 8547,
- 8548,
- 8549,
- 8550,
- 8551,
- 8552,
- 8553,
- 8554,
- 8555,
- 8556,
- 8557,
- 8558,
- 8559,
- 8560,
- 8561,
- 8562,
- 8563,
- 8564,
- 8565,
- 8566,
- 8567,
- 8568,
- 8569,
- 8570,
- 8571,
- 8572,
- 8573,
- 8574,
- 8575,
- 8576,
- 8577,
- 8578,
- 8579,
- 8580,
- 8581,
- 8582,
- 8583,
- 8584,
- 11264,
- 11265,
- 11266,
- 11267,
- 11268,
- 11269,
- 11270,
- 11271,
- 11272,
- 11273,
- 11274,
- 11275,
- 11276,
- 11277,
- 11278,
- 11279,
- 11280,
- 11281,
- 11282,
- 11283,
- 11284,
- 11285,
- 11286,
- 11287,
- 11288,
- 11289,
- 11290,
- 11291,
- 11292,
- 11293,
- 11294,
- 11295,
- 11296,
- 11297,
- 11298,
- 11299,
- 11300,
- 11301,
- 11302,
- 11303,
- 11304,
- 11305,
- 11306,
- 11307,
- 11308,
- 11309,
- 11310,
- 11312,
- 11313,
- 11314,
- 11315,
- 11316,
- 11317,
- 11318,
- 11319,
- 11320,
- 11321,
- 11322,
- 11323,
- 11324,
- 11325,
- 11326,
- 11327,
- 11328,
- 11329,
- 11330,
- 11331,
- 11332,
- 11333,
- 11334,
- 11335,
- 11336,
- 11337,
- 11338,
- 11339,
- 11340,
- 11341,
- 11342,
- 11343,
- 11344,
- 11345,
- 11346,
- 11347,
- 11348,
- 11349,
- 11350,
- 11351,
- 11352,
- 11353,
- 11354,
- 11355,
- 11356,
- 11357,
- 11358,
- 11360,
- 11361,
- 11362,
- 11363,
- 11364,
- 11365,
- 11366,
- 11367,
- 11368,
- 11369,
- 11370,
- 11371,
- 11372,
- 11373,
- 11374,
- 11375,
- 11376,
- 11377,
- 11378,
- 11379,
- 11380,
- 11381,
- 11382,
- 11383,
- 11384,
- 11385,
- 11386,
- 11387,
- 11388,
- 11389,
- 11390,
- 11391,
- 11392,
- 11393,
- 11394,
- 11395,
- 11396,
- 11397,
- 11398,
- 11399,
- 11400,
- 11401,
- 11402,
- 11403,
- 11404,
- 11405,
- 11406,
- 11407,
- 11408,
- 11409,
- 11410,
- 11411,
- 11412,
- 11413,
- 11414,
- 11415,
- 11416,
- 11417,
- 11418,
- 11419,
- 11420,
- 11421,
- 11422,
- 11423,
- 11424,
- 11425,
- 11426,
- 11427,
- 11428,
- 11429,
- 11430,
- 11431,
- 11432,
- 11433,
- 11434,
- 11435,
- 11436,
- 11437,
- 11438,
- 11439,
- 11440,
- 11441,
- 11442,
- 11443,
- 11444,
- 11445,
- 11446,
- 11447,
- 11448,
- 11449,
- 11450,
- 11451,
- 11452,
- 11453,
- 11454,
- 11455,
- 11456,
- 11457,
- 11458,
- 11459,
- 11460,
- 11461,
- 11462,
- 11463,
- 11464,
- 11465,
- 11466,
- 11467,
- 11468,
- 11469,
- 11470,
- 11471,
- 11472,
- 11473,
- 11474,
- 11475,
- 11476,
- 11477,
- 11478,
- 11479,
- 11480,
- 11481,
- 11482,
- 11483,
- 11484,
- 11485,
- 11486,
- 11487,
- 11488,
- 11489,
- 11490,
- 11491,
- 11492,
- 11499,
- 11500,
- 11501,
- 11502,
- 11506,
- 11507,
- 11520,
- 11521,
- 11522,
- 11523,
- 11524,
- 11525,
- 11526,
- 11527,
- 11528,
- 11529,
- 11530,
- 11531,
- 11532,
- 11533,
- 11534,
- 11535,
- 11536,
- 11537,
- 11538,
- 11539,
- 11540,
- 11541,
- 11542,
- 11543,
- 11544,
- 11545,
- 11546,
- 11547,
- 11548,
- 11549,
- 11550,
- 11551,
- 11552,
- 11553,
- 11554,
- 11555,
- 11556,
- 11557,
- 11559,
- 11565,
- 11568,
- 11569,
- 11570,
- 11571,
- 11572,
- 11573,
- 11574,
- 11575,
- 11576,
- 11577,
- 11578,
- 11579,
- 11580,
- 11581,
- 11582,
- 11583,
- 11584,
- 11585,
- 11586,
- 11587,
- 11588,
- 11589,
- 11590,
- 11591,
- 11592,
- 11593,
- 11594,
- 11595,
- 11596,
- 11597,
- 11598,
- 11599,
- 11600,
- 11601,
- 11602,
- 11603,
- 11604,
- 11605,
- 11606,
- 11607,
- 11608,
- 11609,
- 11610,
- 11611,
- 11612,
- 11613,
- 11614,
- 11615,
- 11616,
- 11617,
- 11618,
- 11619,
- 11620,
- 11621,
- 11622,
- 11623,
- 11631,
- 11648,
- 11649,
- 11650,
- 11651,
- 11652,
- 11653,
- 11654,
- 11655,
- 11656,
- 11657,
- 11658,
- 11659,
- 11660,
- 11661,
- 11662,
- 11663,
- 11664,
- 11665,
- 11666,
- 11667,
- 11668,
- 11669,
- 11670,
- 11680,
- 11681,
- 11682,
- 11683,
- 11684,
- 11685,
- 11686,
- 11688,
- 11689,
- 11690,
- 11691,
- 11692,
- 11693,
- 11694,
- 11696,
- 11697,
- 11698,
- 11699,
- 11700,
- 11701,
- 11702,
- 11704,
- 11705,
- 11706,
- 11707,
- 11708,
- 11709,
- 11710,
- 11712,
- 11713,
- 11714,
- 11715,
- 11716,
- 11717,
- 11718,
- 11720,
- 11721,
- 11722,
- 11723,
- 11724,
- 11725,
- 11726,
- 11728,
- 11729,
- 11730,
- 11731,
- 11732,
- 11733,
- 11734,
- 11736,
- 11737,
- 11738,
- 11739,
- 11740,
- 11741,
- 11742,
- 11823,
- 12293,
- 12294,
- 12295,
- 12321,
- 12322,
- 12323,
- 12324,
- 12325,
- 12326,
- 12327,
- 12328,
- 12329,
- 12337,
- 12338,
- 12339,
- 12340,
- 12341,
- 12344,
- 12345,
- 12346,
- 12347,
- 12348,
- 12353,
- 12354,
- 12355,
- 12356,
- 12357,
- 12358,
- 12359,
- 12360,
- 12361,
- 12362,
- 12363,
- 12364,
- 12365,
- 12366,
- 12367,
- 12368,
- 12369,
- 12370,
- 12371,
- 12372,
- 12373,
- 12374,
- 12375,
- 12376,
- 12377,
- 12378,
- 12379,
- 12380,
- 12381,
- 12382,
- 12383,
- 12384,
- 12385,
- 12386,
- 12387,
- 12388,
- 12389,
- 12390,
- 12391,
- 12392,
- 12393,
- 12394,
- 12395,
- 12396,
- 12397,
- 12398,
- 12399,
- 12400,
- 12401,
- 12402,
- 12403,
- 12404,
- 12405,
- 12406,
- 12407,
- 12408,
- 12409,
- 12410,
- 12411,
- 12412,
- 12413,
- 12414,
- 12415,
- 12416,
- 12417,
- 12418,
- 12419,
- 12420,
- 12421,
- 12422,
- 12423,
- 12424,
- 12425,
- 12426,
- 12427,
- 12428,
- 12429,
- 12430,
- 12431,
- 12432,
- 12433,
- 12434,
- 12435,
- 12436,
- 12437,
- 12438,
- 12445,
- 12446,
- 12447,
- 12449,
- 12450,
- 12451,
- 12452,
- 12453,
- 12454,
- 12455,
- 12456,
- 12457,
- 12458,
- 12459,
- 12460,
- 12461,
- 12462,
- 12463,
- 12464,
- 12465,
- 12466,
- 12467,
- 12468,
- 12469,
- 12470,
- 12471,
- 12472,
- 12473,
- 12474,
- 12475,
- 12476,
- 12477,
- 12478,
- 12479,
- 12480,
- 12481,
- 12482,
- 12483,
- 12484,
- 12485,
- 12486,
- 12487,
- 12488,
- 12489,
- 12490,
- 12491,
- 12492,
- 12493,
- 12494,
- 12495,
- 12496,
- 12497,
- 12498,
- 12499,
- 12500,
- 12501,
- 12502,
- 12503,
- 12504,
- 12505,
- 12506,
- 12507,
- 12508,
- 12509,
- 12510,
- 12511,
- 12512,
- 12513,
- 12514,
- 12515,
- 12516,
- 12517,
- 12518,
- 12519,
- 12520,
- 12521,
- 12522,
- 12523,
- 12524,
- 12525,
- 12526,
- 12527,
- 12528,
- 12529,
- 12530,
- 12531,
- 12532,
- 12533,
- 12534,
- 12535,
- 12536,
- 12537,
- 12538,
- 12540,
- 12541,
- 12542,
- 12543,
- 12549,
- 12550,
- 12551,
- 12552,
- 12553,
- 12554,
- 12555,
- 12556,
- 12557,
- 12558,
- 12559,
- 12560,
- 12561,
- 12562,
- 12563,
- 12564,
- 12565,
- 12566,
- 12567,
- 12568,
- 12569,
- 12570,
- 12571,
- 12572,
- 12573,
- 12574,
- 12575,
- 12576,
- 12577,
- 12578,
- 12579,
- 12580,
- 12581,
- 12582,
- 12583,
- 12584,
- 12585,
- 12586,
- 12587,
- 12588,
- 12589,
- 12593,
- 12594,
- 12595,
- 12596,
- 12597,
- 12598,
- 12599,
- 12600,
- 12601,
- 12602,
- 12603,
- 12604,
- 12605,
- 12606,
- 12607,
- 12608,
- 12609,
- 12610,
- 12611,
- 12612,
- 12613,
- 12614,
- 12615,
- 12616,
- 12617,
- 12618,
- 12619,
- 12620,
- 12621,
- 12622,
- 12623,
- 12624,
- 12625,
- 12626,
- 12627,
- 12628,
- 12629,
- 12630,
- 12631,
- 12632,
- 12633,
- 12634,
- 12635,
- 12636,
- 12637,
- 12638,
- 12639,
- 12640,
- 12641,
- 12642,
- 12643,
- 12644,
- 12645,
- 12646,
- 12647,
- 12648,
- 12649,
- 12650,
- 12651,
- 12652,
- 12653,
- 12654,
- 12655,
- 12656,
- 12657,
- 12658,
- 12659,
- 12660,
- 12661,
- 12662,
- 12663,
- 12664,
- 12665,
- 12666,
- 12667,
- 12668,
- 12669,
- 12670,
- 12671,
- 12672,
- 12673,
- 12674,
- 12675,
- 12676,
- 12677,
- 12678,
- 12679,
- 12680,
- 12681,
- 12682,
- 12683,
- 12684,
- 12685,
- 12686,
- 12704,
- 12705,
- 12706,
- 12707,
- 12708,
- 12709,
- 12710,
- 12711,
- 12712,
- 12713,
- 12714,
- 12715,
- 12716,
- 12717,
- 12718,
- 12719,
- 12720,
- 12721,
- 12722,
- 12723,
- 12724,
- 12725,
- 12726,
- 12727,
- 12728,
- 12729,
- 12730,
- 12784,
- 12785,
- 12786,
- 12787,
- 12788,
- 12789,
- 12790,
- 12791,
- 12792,
- 12793,
- 12794,
- 12795,
- 12796,
- 12797,
- 12798,
- 12799,
- 13312,
- 13313,
- 13314,
- 13315,
- 13316,
- 13317,
- 13318,
- 13319,
- 13320,
- 13321,
- 13322,
- 13323,
- 13324,
- 13325,
- 13326,
- 13327,
- 13328,
- 13329,
- 13330,
- 13331,
- 13332,
- 13333,
- 13334,
- 13335,
- 13336,
- 13337,
- 13338,
- 13339,
- 13340,
- 13341,
- 13342,
- 13343,
- 13344,
- 13345,
- 13346,
- 13347,
- 13348,
- 13349,
- 13350,
- 13351,
- 13352,
- 13353,
- 13354,
- 13355,
- 13356,
- 13357,
- 13358,
- 13359,
- 13360,
- 13361,
- 13362,
- 13363,
- 13364,
- 13365,
- 13366,
- 13367,
- 13368,
- 13369,
- 13370,
- 13371,
- 13372,
- 13373,
- 13374,
- 13375,
- 13376,
- 13377,
- 13378,
- 13379,
- 13380,
- 13381,
- 13382,
- 13383,
- 13384,
- 13385,
- 13386,
- 13387,
- 13388,
- 13389,
- 13390,
- 13391,
- 13392,
- 13393,
- 13394,
- 13395,
- 13396,
- 13397,
- 13398,
- 13399,
- 13400,
- 13401,
- 13402,
- 13403,
- 13404,
- 13405,
- 13406,
- 13407,
- 13408,
- 13409,
- 13410,
- 13411,
- 13412,
- 13413,
- 13414,
- 13415,
- 13416,
- 13417,
- 13418,
- 13419,
- 13420,
- 13421,
- 13422,
- 13423,
- 13424,
- 13425,
- 13426,
- 13427,
- 13428,
- 13429,
- 13430,
- 13431,
- 13432,
- 13433,
- 13434,
- 13435,
- 13436,
- 13437,
- 13438,
- 13439,
- 13440,
- 13441,
- 13442,
- 13443,
- 13444,
- 13445,
- 13446,
- 13447,
- 13448,
- 13449,
- 13450,
- 13451,
- 13452,
- 13453,
- 13454,
- 13455,
- 13456,
- 13457,
- 13458,
- 13459,
- 13460,
- 13461,
- 13462,
- 13463,
- 13464,
- 13465,
- 13466,
- 13467,
- 13468,
- 13469,
- 13470,
- 13471,
- 13472,
- 13473,
- 13474,
- 13475,
- 13476,
- 13477,
- 13478,
- 13479,
- 13480,
- 13481,
- 13482,
- 13483,
- 13484,
- 13485,
- 13486,
- 13487,
- 13488,
- 13489,
- 13490,
- 13491,
- 13492,
- 13493,
- 13494,
- 13495,
- 13496,
- 13497,
- 13498,
- 13499,
- 13500,
- 13501,
- 13502,
- 13503,
- 13504,
- 13505,
- 13506,
- 13507,
- 13508,
- 13509,
- 13510,
- 13511,
- 13512,
- 13513,
- 13514,
- 13515,
- 13516,
- 13517,
- 13518,
- 13519,
- 13520,
- 13521,
- 13522,
- 13523,
- 13524,
- 13525,
- 13526,
- 13527,
- 13528,
- 13529,
- 13530,
- 13531,
- 13532,
- 13533,
- 13534,
- 13535,
- 13536,
- 13537,
- 13538,
- 13539,
- 13540,
- 13541,
- 13542,
- 13543,
- 13544,
- 13545,
- 13546,
- 13547,
- 13548,
- 13549,
- 13550,
- 13551,
- 13552,
- 13553,
- 13554,
- 13555,
- 13556,
- 13557,
- 13558,
- 13559,
- 13560,
- 13561,
- 13562,
- 13563,
- 13564,
- 13565,
- 13566,
- 13567,
- 13568,
- 13569,
- 13570,
- 13571,
- 13572,
- 13573,
- 13574,
- 13575,
- 13576,
- 13577,
- 13578,
- 13579,
- 13580,
- 13581,
- 13582,
- 13583,
- 13584,
- 13585,
- 13586,
- 13587,
- 13588,
- 13589,
- 13590,
- 13591,
- 13592,
- 13593,
- 13594,
- 13595,
- 13596,
- 13597,
- 13598,
- 13599,
- 13600,
- 13601,
- 13602,
- 13603,
- 13604,
- 13605,
- 13606,
- 13607,
- 13608,
- 13609,
- 13610,
- 13611,
- 13612,
- 13613,
- 13614,
- 13615,
- 13616,
- 13617,
- 13618,
- 13619,
- 13620,
- 13621,
- 13622,
- 13623,
- 13624,
- 13625,
- 13626,
- 13627,
- 13628,
- 13629,
- 13630,
- 13631,
- 13632,
- 13633,
- 13634,
- 13635,
- 13636,
- 13637,
- 13638,
- 13639,
- 13640,
- 13641,
- 13642,
- 13643,
- 13644,
- 13645,
- 13646,
- 13647,
- 13648,
- 13649,
- 13650,
- 13651,
- 13652,
- 13653,
- 13654,
- 13655,
- 13656,
- 13657,
- 13658,
- 13659,
- 13660,
- 13661,
- 13662,
- 13663,
- 13664,
- 13665,
- 13666,
- 13667,
- 13668,
- 13669,
- 13670,
- 13671,
- 13672,
- 13673,
- 13674,
- 13675,
- 13676,
- 13677,
- 13678,
- 13679,
- 13680,
- 13681,
- 13682,
- 13683,
- 13684,
- 13685,
- 13686,
- 13687,
- 13688,
- 13689,
- 13690,
- 13691,
- 13692,
- 13693,
- 13694,
- 13695,
- 13696,
- 13697,
- 13698,
- 13699,
- 13700,
- 13701,
- 13702,
- 13703,
- 13704,
- 13705,
- 13706,
- 13707,
- 13708,
- 13709,
- 13710,
- 13711,
- 13712,
- 13713,
- 13714,
- 13715,
- 13716,
- 13717,
- 13718,
- 13719,
- 13720,
- 13721,
- 13722,
- 13723,
- 13724,
- 13725,
- 13726,
- 13727,
- 13728,
- 13729,
- 13730,
- 13731,
- 13732,
- 13733,
- 13734,
- 13735,
- 13736,
- 13737,
- 13738,
- 13739,
- 13740,
- 13741,
- 13742,
- 13743,
- 13744,
- 13745,
- 13746,
- 13747,
- 13748,
- 13749,
- 13750,
- 13751,
- 13752,
- 13753,
- 13754,
- 13755,
- 13756,
- 13757,
- 13758,
- 13759,
- 13760,
- 13761,
- 13762,
- 13763,
- 13764,
- 13765,
- 13766,
- 13767,
- 13768,
- 13769,
- 13770,
- 13771,
- 13772,
- 13773,
- 13774,
- 13775,
- 13776,
- 13777,
- 13778,
- 13779,
- 13780,
- 13781,
- 13782,
- 13783,
- 13784,
- 13785,
- 13786,
- 13787,
- 13788,
- 13789,
- 13790,
- 13791,
- 13792,
- 13793,
- 13794,
- 13795,
- 13796,
- 13797,
- 13798,
- 13799,
- 13800,
- 13801,
- 13802,
- 13803,
- 13804,
- 13805,
- 13806,
- 13807,
- 13808,
- 13809,
- 13810,
- 13811,
- 13812,
- 13813,
- 13814,
- 13815,
- 13816,
- 13817,
- 13818,
- 13819,
- 13820,
- 13821,
- 13822,
- 13823,
- 13824,
- 13825,
- 13826,
- 13827,
- 13828,
- 13829,
- 13830,
- 13831,
- 13832,
- 13833,
- 13834,
- 13835,
- 13836,
- 13837,
- 13838,
- 13839,
- 13840,
- 13841,
- 13842,
- 13843,
- 13844,
- 13845,
- 13846,
- 13847,
- 13848,
- 13849,
- 13850,
- 13851,
- 13852,
- 13853,
- 13854,
- 13855,
- 13856,
- 13857,
- 13858,
- 13859,
- 13860,
- 13861,
- 13862,
- 13863,
- 13864,
- 13865,
- 13866,
- 13867,
- 13868,
- 13869,
- 13870,
- 13871,
- 13872,
- 13873,
- 13874,
- 13875,
- 13876,
- 13877,
- 13878,
- 13879,
- 13880,
- 13881,
- 13882,
- 13883,
- 13884,
- 13885,
- 13886,
- 13887,
- 13888,
- 13889,
- 13890,
- 13891,
- 13892,
- 13893,
- 13894,
- 13895,
- 13896,
- 13897,
- 13898,
- 13899,
- 13900,
- 13901,
- 13902,
- 13903,
- 13904,
- 13905,
- 13906,
- 13907,
- 13908,
- 13909,
- 13910,
- 13911,
- 13912,
- 13913,
- 13914,
- 13915,
- 13916,
- 13917,
- 13918,
- 13919,
- 13920,
- 13921,
- 13922,
- 13923,
- 13924,
- 13925,
- 13926,
- 13927,
- 13928,
- 13929,
- 13930,
- 13931,
- 13932,
- 13933,
- 13934,
- 13935,
- 13936,
- 13937,
- 13938,
- 13939,
- 13940,
- 13941,
- 13942,
- 13943,
- 13944,
- 13945,
- 13946,
- 13947,
- 13948,
- 13949,
- 13950,
- 13951,
- 13952,
- 13953,
- 13954,
- 13955,
- 13956,
- 13957,
- 13958,
- 13959,
- 13960,
- 13961,
- 13962,
- 13963,
- 13964,
- 13965,
- 13966,
- 13967,
- 13968,
- 13969,
- 13970,
- 13971,
- 13972,
- 13973,
- 13974,
- 13975,
- 13976,
- 13977,
- 13978,
- 13979,
- 13980,
- 13981,
- 13982,
- 13983,
- 13984,
- 13985,
- 13986,
- 13987,
- 13988,
- 13989,
- 13990,
- 13991,
- 13992,
- 13993,
- 13994,
- 13995,
- 13996,
- 13997,
- 13998,
- 13999,
- 14000,
- 14001,
- 14002,
- 14003,
- 14004,
- 14005,
- 14006,
- 14007,
- 14008,
- 14009,
- 14010,
- 14011,
- 14012,
- 14013,
- 14014,
- 14015,
- 14016,
- 14017,
- 14018,
- 14019,
- 14020,
- 14021,
- 14022,
- 14023,
- 14024,
- 14025,
- 14026,
- 14027,
- 14028,
- 14029,
- 14030,
- 14031,
- 14032,
- 14033,
- 14034,
- 14035,
- 14036,
- 14037,
- 14038,
- 14039,
- 14040,
- 14041,
- 14042,
- 14043,
- 14044,
- 14045,
- 14046,
- 14047,
- 14048,
- 14049,
- 14050,
- 14051,
- 14052,
- 14053,
- 14054,
- 14055,
- 14056,
- 14057,
- 14058,
- 14059,
- 14060,
- 14061,
- 14062,
- 14063,
- 14064,
- 14065,
- 14066,
- 14067,
- 14068,
- 14069,
- 14070,
- 14071,
- 14072,
- 14073,
- 14074,
- 14075,
- 14076,
- 14077,
- 14078,
- 14079,
- 14080,
- 14081,
- 14082,
- 14083,
- 14084,
- 14085,
- 14086,
- 14087,
- 14088,
- 14089,
- 14090,
- 14091,
- 14092,
- 14093,
- 14094,
- 14095,
- 14096,
- 14097,
- 14098,
- 14099,
- 14100,
- 14101,
- 14102,
- 14103,
- 14104,
- 14105,
- 14106,
- 14107,
- 14108,
- 14109,
- 14110,
- 14111,
- 14112,
- 14113,
- 14114,
- 14115,
- 14116,
- 14117,
- 14118,
- 14119,
- 14120,
- 14121,
- 14122,
- 14123,
- 14124,
- 14125,
- 14126,
- 14127,
- 14128,
- 14129,
- 14130,
- 14131,
- 14132,
- 14133,
- 14134,
- 14135,
- 14136,
- 14137,
- 14138,
- 14139,
- 14140,
- 14141,
- 14142,
- 14143,
- 14144,
- 14145,
- 14146,
- 14147,
- 14148,
- 14149,
- 14150,
- 14151,
- 14152,
- 14153,
- 14154,
- 14155,
- 14156,
- 14157,
- 14158,
- 14159,
- 14160,
- 14161,
- 14162,
- 14163,
- 14164,
- 14165,
- 14166,
- 14167,
- 14168,
- 14169,
- 14170,
- 14171,
- 14172,
- 14173,
- 14174,
- 14175,
- 14176,
- 14177,
- 14178,
- 14179,
- 14180,
- 14181,
- 14182,
- 14183,
- 14184,
- 14185,
- 14186,
- 14187,
- 14188,
- 14189,
- 14190,
- 14191,
- 14192,
- 14193,
- 14194,
- 14195,
- 14196,
- 14197,
- 14198,
- 14199,
- 14200,
- 14201,
- 14202,
- 14203,
- 14204,
- 14205,
- 14206,
- 14207,
- 14208,
- 14209,
- 14210,
- 14211,
- 14212,
- 14213,
- 14214,
- 14215,
- 14216,
- 14217,
- 14218,
- 14219,
- 14220,
- 14221,
- 14222,
- 14223,
- 14224,
- 14225,
- 14226,
- 14227,
- 14228,
- 14229,
- 14230,
- 14231,
- 14232,
- 14233,
- 14234,
- 14235,
- 14236,
- 14237,
- 14238,
- 14239,
- 14240,
- 14241,
- 14242,
- 14243,
- 14244,
- 14245,
- 14246,
- 14247,
- 14248,
- 14249,
- 14250,
- 14251,
- 14252,
- 14253,
- 14254,
- 14255,
- 14256,
- 14257,
- 14258,
- 14259,
- 14260,
- 14261,
- 14262,
- 14263,
- 14264,
- 14265,
- 14266,
- 14267,
- 14268,
- 14269,
- 14270,
- 14271,
- 14272,
- 14273,
- 14274,
- 14275,
- 14276,
- 14277,
- 14278,
- 14279,
- 14280,
- 14281,
- 14282,
- 14283,
- 14284,
- 14285,
- 14286,
- 14287,
- 14288,
- 14289,
- 14290,
- 14291,
- 14292,
- 14293,
- 14294,
- 14295,
- 14296,
- 14297,
- 14298,
- 14299,
- 14300,
- 14301,
- 14302,
- 14303,
- 14304,
- 14305,
- 14306,
- 14307,
- 14308,
- 14309,
- 14310,
- 14311,
- 14312,
- 14313,
- 14314,
- 14315,
- 14316,
- 14317,
- 14318,
- 14319,
- 14320,
- 14321,
- 14322,
- 14323,
- 14324,
- 14325,
- 14326,
- 14327,
- 14328,
- 14329,
- 14330,
- 14331,
- 14332,
- 14333,
- 14334,
- 14335,
- 14336,
- 14337,
- 14338,
- 14339,
- 14340,
- 14341,
- 14342,
- 14343,
- 14344,
- 14345,
- 14346,
- 14347,
- 14348,
- 14349,
- 14350,
- 14351,
- 14352,
- 14353,
- 14354,
- 14355,
- 14356,
- 14357,
- 14358,
- 14359,
- 14360,
- 14361,
- 14362,
- 14363,
- 14364,
- 14365,
- 14366,
- 14367,
- 14368,
- 14369,
- 14370,
- 14371,
- 14372,
- 14373,
- 14374,
- 14375,
- 14376,
- 14377,
- 14378,
- 14379,
- 14380,
- 14381,
- 14382,
- 14383,
- 14384,
- 14385,
- 14386,
- 14387,
- 14388,
- 14389,
- 14390,
- 14391,
- 14392,
- 14393,
- 14394,
- 14395,
- 14396,
- 14397,
- 14398,
- 14399,
- 14400,
- 14401,
- 14402,
- 14403,
- 14404,
- 14405,
- 14406,
- 14407,
- 14408,
- 14409,
- 14410,
- 14411,
- 14412,
- 14413,
- 14414,
- 14415,
- 14416,
- 14417,
- 14418,
- 14419,
- 14420,
- 14421,
- 14422,
- 14423,
- 14424,
- 14425,
- 14426,
- 14427,
- 14428,
- 14429,
- 14430,
- 14431,
- 14432,
- 14433,
- 14434,
- 14435,
- 14436,
- 14437,
- 14438,
- 14439,
- 14440,
- 14441,
- 14442,
- 14443,
- 14444,
- 14445,
- 14446,
- 14447,
- 14448,
- 14449,
- 14450,
- 14451,
- 14452,
- 14453,
- 14454,
- 14455,
- 14456,
- 14457,
- 14458,
- 14459,
- 14460,
- 14461,
- 14462,
- 14463,
- 14464,
- 14465,
- 14466,
- 14467,
- 14468,
- 14469,
- 14470,
- 14471,
- 14472,
- 14473,
- 14474,
- 14475,
- 14476,
- 14477,
- 14478,
- 14479,
- 14480,
- 14481,
- 14482,
- 14483,
- 14484,
- 14485,
- 14486,
- 14487,
- 14488,
- 14489,
- 14490,
- 14491,
- 14492,
- 14493,
- 14494,
- 14495,
- 14496,
- 14497,
- 14498,
- 14499,
- 14500,
- 14501,
- 14502,
- 14503,
- 14504,
- 14505,
- 14506,
- 14507,
- 14508,
- 14509,
- 14510,
- 14511,
- 14512,
- 14513,
- 14514,
- 14515,
- 14516,
- 14517,
- 14518,
- 14519,
- 14520,
- 14521,
- 14522,
- 14523,
- 14524,
- 14525,
- 14526,
- 14527,
- 14528,
- 14529,
- 14530,
- 14531,
- 14532,
- 14533,
- 14534,
- 14535,
- 14536,
- 14537,
- 14538,
- 14539,
- 14540,
- 14541,
- 14542,
- 14543,
- 14544,
- 14545,
- 14546,
- 14547,
- 14548,
- 14549,
- 14550,
- 14551,
- 14552,
- 14553,
- 14554,
- 14555,
- 14556,
- 14557,
- 14558,
- 14559,
- 14560,
- 14561,
- 14562,
- 14563,
- 14564,
- 14565,
- 14566,
- 14567,
- 14568,
- 14569,
- 14570,
- 14571,
- 14572,
- 14573,
- 14574,
- 14575,
- 14576,
- 14577,
- 14578,
- 14579,
- 14580,
- 14581,
- 14582,
- 14583,
- 14584,
- 14585,
- 14586,
- 14587,
- 14588,
- 14589,
- 14590,
- 14591,
- 14592,
- 14593,
- 14594,
- 14595,
- 14596,
- 14597,
- 14598,
- 14599,
- 14600,
- 14601,
- 14602,
- 14603,
- 14604,
- 14605,
- 14606,
- 14607,
- 14608,
- 14609,
- 14610,
- 14611,
- 14612,
- 14613,
- 14614,
- 14615,
- 14616,
- 14617,
- 14618,
- 14619,
- 14620,
- 14621,
- 14622,
- 14623,
- 14624,
- 14625,
- 14626,
- 14627,
- 14628,
- 14629,
- 14630,
- 14631,
- 14632,
- 14633,
- 14634,
- 14635,
- 14636,
- 14637,
- 14638,
- 14639,
- 14640,
- 14641,
- 14642,
- 14643,
- 14644,
- 14645,
- 14646,
- 14647,
- 14648,
- 14649,
- 14650,
- 14651,
- 14652,
- 14653,
- 14654,
- 14655,
- 14656,
- 14657,
- 14658,
- 14659,
- 14660,
- 14661,
- 14662,
- 14663,
- 14664,
- 14665,
- 14666,
- 14667,
- 14668,
- 14669,
- 14670,
- 14671,
- 14672,
- 14673,
- 14674,
- 14675,
- 14676,
- 14677,
- 14678,
- 14679,
- 14680,
- 14681,
- 14682,
- 14683,
- 14684,
- 14685,
- 14686,
- 14687,
- 14688,
- 14689,
- 14690,
- 14691,
- 14692,
- 14693,
- 14694,
- 14695,
- 14696,
- 14697,
- 14698,
- 14699,
- 14700,
- 14701,
- 14702,
- 14703,
- 14704,
- 14705,
- 14706,
- 14707,
- 14708,
- 14709,
- 14710,
- 14711,
- 14712,
- 14713,
- 14714,
- 14715,
- 14716,
- 14717,
- 14718,
- 14719,
- 14720,
- 14721,
- 14722,
- 14723,
- 14724,
- 14725,
- 14726,
- 14727,
- 14728,
- 14729,
- 14730,
- 14731,
- 14732,
- 14733,
- 14734,
- 14735,
- 14736,
- 14737,
- 14738,
- 14739,
- 14740,
- 14741,
- 14742,
- 14743,
- 14744,
- 14745,
- 14746,
- 14747,
- 14748,
- 14749,
- 14750,
- 14751,
- 14752,
- 14753,
- 14754,
- 14755,
- 14756,
- 14757,
- 14758,
- 14759,
- 14760,
- 14761,
- 14762,
- 14763,
- 14764,
- 14765,
- 14766,
- 14767,
- 14768,
- 14769,
- 14770,
- 14771,
- 14772,
- 14773,
- 14774,
- 14775,
- 14776,
- 14777,
- 14778,
- 14779,
- 14780,
- 14781,
- 14782,
- 14783,
- 14784,
- 14785,
- 14786,
- 14787,
- 14788,
- 14789,
- 14790,
- 14791,
- 14792,
- 14793,
- 14794,
- 14795,
- 14796,
- 14797,
- 14798,
- 14799,
- 14800,
- 14801,
- 14802,
- 14803,
- 14804,
- 14805,
- 14806,
- 14807,
- 14808,
- 14809,
- 14810,
- 14811,
- 14812,
- 14813,
- 14814,
- 14815,
- 14816,
- 14817,
- 14818,
- 14819,
- 14820,
- 14821,
- 14822,
- 14823,
- 14824,
- 14825,
- 14826,
- 14827,
- 14828,
- 14829,
- 14830,
- 14831,
- 14832,
- 14833,
- 14834,
- 14835,
- 14836,
- 14837,
- 14838,
- 14839,
- 14840,
- 14841,
- 14842,
- 14843,
- 14844,
- 14845,
- 14846,
- 14847,
- 14848,
- 14849,
- 14850,
- 14851,
- 14852,
- 14853,
- 14854,
- 14855,
- 14856,
- 14857,
- 14858,
- 14859,
- 14860,
- 14861,
- 14862,
- 14863,
- 14864,
- 14865,
- 14866,
- 14867,
- 14868,
- 14869,
- 14870,
- 14871,
- 14872,
- 14873,
- 14874,
- 14875,
- 14876,
- 14877,
- 14878,
- 14879,
- 14880,
- 14881,
- 14882,
- 14883,
- 14884,
- 14885,
- 14886,
- 14887,
- 14888,
- 14889,
- 14890,
- 14891,
- 14892,
- 14893,
- 14894,
- 14895,
- 14896,
- 14897,
- 14898,
- 14899,
- 14900,
- 14901,
- 14902,
- 14903,
- 14904,
- 14905,
- 14906,
- 14907,
- 14908,
- 14909,
- 14910,
- 14911,
- 14912,
- 14913,
- 14914,
- 14915,
- 14916,
- 14917,
- 14918,
- 14919,
- 14920,
- 14921,
- 14922,
- 14923,
- 14924,
- 14925,
- 14926,
- 14927,
- 14928,
- 14929,
- 14930,
- 14931,
- 14932,
- 14933,
- 14934,
- 14935,
- 14936,
- 14937,
- 14938,
- 14939,
- 14940,
- 14941,
- 14942,
- 14943,
- 14944,
- 14945,
- 14946,
- 14947,
- 14948,
- 14949,
- 14950,
- 14951,
- 14952,
- 14953,
- 14954,
- 14955,
- 14956,
- 14957,
- 14958,
- 14959,
- 14960,
- 14961,
- 14962,
- 14963,
- 14964,
- 14965,
- 14966,
- 14967,
- 14968,
- 14969,
- 14970,
- 14971,
- 14972,
- 14973,
- 14974,
- 14975,
- 14976,
- 14977,
- 14978,
- 14979,
- 14980,
- 14981,
- 14982,
- 14983,
- 14984,
- 14985,
- 14986,
- 14987,
- 14988,
- 14989,
- 14990,
- 14991,
- 14992,
- 14993,
- 14994,
- 14995,
- 14996,
- 14997,
- 14998,
- 14999,
- 15000,
- 15001,
- 15002,
- 15003,
- 15004,
- 15005,
- 15006,
- 15007,
- 15008,
- 15009,
- 15010,
- 15011,
- 15012,
- 15013,
- 15014,
- 15015,
- 15016,
- 15017,
- 15018,
- 15019,
- 15020,
- 15021,
- 15022,
- 15023,
- 15024,
- 15025,
- 15026,
- 15027,
- 15028,
- 15029,
- 15030,
- 15031,
- 15032,
- 15033,
- 15034,
- 15035,
- 15036,
- 15037,
- 15038,
- 15039,
- 15040,
- 15041,
- 15042,
- 15043,
- 15044,
- 15045,
- 15046,
- 15047,
- 15048,
- 15049,
- 15050,
- 15051,
- 15052,
- 15053,
- 15054,
- 15055,
- 15056,
- 15057,
- 15058,
- 15059,
- 15060,
- 15061,
- 15062,
- 15063,
- 15064,
- 15065,
- 15066,
- 15067,
- 15068,
- 15069,
- 15070,
- 15071,
- 15072,
- 15073,
- 15074,
- 15075,
- 15076,
- 15077,
- 15078,
- 15079,
- 15080,
- 15081,
- 15082,
- 15083,
- 15084,
- 15085,
- 15086,
- 15087,
- 15088,
- 15089,
- 15090,
- 15091,
- 15092,
- 15093,
- 15094,
- 15095,
- 15096,
- 15097,
- 15098,
- 15099,
- 15100,
- 15101,
- 15102,
- 15103,
- 15104,
- 15105,
- 15106,
- 15107,
- 15108,
- 15109,
- 15110,
- 15111,
- 15112,
- 15113,
- 15114,
- 15115,
- 15116,
- 15117,
- 15118,
- 15119,
- 15120,
- 15121,
- 15122,
- 15123,
- 15124,
- 15125,
- 15126,
- 15127,
- 15128,
- 15129,
- 15130,
- 15131,
- 15132,
- 15133,
- 15134,
- 15135,
- 15136,
- 15137,
- 15138,
- 15139,
- 15140,
- 15141,
- 15142,
- 15143,
- 15144,
- 15145,
- 15146,
- 15147,
- 15148,
- 15149,
- 15150,
- 15151,
- 15152,
- 15153,
- 15154,
- 15155,
- 15156,
- 15157,
- 15158,
- 15159,
- 15160,
- 15161,
- 15162,
- 15163,
- 15164,
- 15165,
- 15166,
- 15167,
- 15168,
- 15169,
- 15170,
- 15171,
- 15172,
- 15173,
- 15174,
- 15175,
- 15176,
- 15177,
- 15178,
- 15179,
- 15180,
- 15181,
- 15182,
- 15183,
- 15184,
- 15185,
- 15186,
- 15187,
- 15188,
- 15189,
- 15190,
- 15191,
- 15192,
- 15193,
- 15194,
- 15195,
- 15196,
- 15197,
- 15198,
- 15199,
- 15200,
- 15201,
- 15202,
- 15203,
- 15204,
- 15205,
- 15206,
- 15207,
- 15208,
- 15209,
- 15210,
- 15211,
- 15212,
- 15213,
- 15214,
- 15215,
- 15216,
- 15217,
- 15218,
- 15219,
- 15220,
- 15221,
- 15222,
- 15223,
- 15224,
- 15225,
- 15226,
- 15227,
- 15228,
- 15229,
- 15230,
- 15231,
- 15232,
- 15233,
- 15234,
- 15235,
- 15236,
- 15237,
- 15238,
- 15239,
- 15240,
- 15241,
- 15242,
- 15243,
- 15244,
- 15245,
- 15246,
- 15247,
- 15248,
- 15249,
- 15250,
- 15251,
- 15252,
- 15253,
- 15254,
- 15255,
- 15256,
- 15257,
- 15258,
- 15259,
- 15260,
- 15261,
- 15262,
- 15263,
- 15264,
- 15265,
- 15266,
- 15267,
- 15268,
- 15269,
- 15270,
- 15271,
- 15272,
- 15273,
- 15274,
- 15275,
- 15276,
- 15277,
- 15278,
- 15279,
- 15280,
- 15281,
- 15282,
- 15283,
- 15284,
- 15285,
- 15286,
- 15287,
- 15288,
- 15289,
- 15290,
- 15291,
- 15292,
- 15293,
- 15294,
- 15295,
- 15296,
- 15297,
- 15298,
- 15299,
- 15300,
- 15301,
- 15302,
- 15303,
- 15304,
- 15305,
- 15306,
- 15307,
- 15308,
- 15309,
- 15310,
- 15311,
- 15312,
- 15313,
- 15314,
- 15315,
- 15316,
- 15317,
- 15318,
- 15319,
- 15320,
- 15321,
- 15322,
- 15323,
- 15324,
- 15325,
- 15326,
- 15327,
- 15328,
- 15329,
- 15330,
- 15331,
- 15332,
- 15333,
- 15334,
- 15335,
- 15336,
- 15337,
- 15338,
- 15339,
- 15340,
- 15341,
- 15342,
- 15343,
- 15344,
- 15345,
- 15346,
- 15347,
- 15348,
- 15349,
- 15350,
- 15351,
- 15352,
- 15353,
- 15354,
- 15355,
- 15356,
- 15357,
- 15358,
- 15359,
- 15360,
- 15361,
- 15362,
- 15363,
- 15364,
- 15365,
- 15366,
- 15367,
- 15368,
- 15369,
- 15370,
- 15371,
- 15372,
- 15373,
- 15374,
- 15375,
- 15376,
- 15377,
- 15378,
- 15379,
- 15380,
- 15381,
- 15382,
- 15383,
- 15384,
- 15385,
- 15386,
- 15387,
- 15388,
- 15389,
- 15390,
- 15391,
- 15392,
- 15393,
- 15394,
- 15395,
- 15396,
- 15397,
- 15398,
- 15399,
- 15400,
- 15401,
- 15402,
- 15403,
- 15404,
- 15405,
- 15406,
- 15407,
- 15408,
- 15409,
- 15410,
- 15411,
- 15412,
- 15413,
- 15414,
- 15415,
- 15416,
- 15417,
- 15418,
- 15419,
- 15420,
- 15421,
- 15422,
- 15423,
- 15424,
- 15425,
- 15426,
- 15427,
- 15428,
- 15429,
- 15430,
- 15431,
- 15432,
- 15433,
- 15434,
- 15435,
- 15436,
- 15437,
- 15438,
- 15439,
- 15440,
- 15441,
- 15442,
- 15443,
- 15444,
- 15445,
- 15446,
- 15447,
- 15448,
- 15449,
- 15450,
- 15451,
- 15452,
- 15453,
- 15454,
- 15455,
- 15456,
- 15457,
- 15458,
- 15459,
- 15460,
- 15461,
- 15462,
- 15463,
- 15464,
- 15465,
- 15466,
- 15467,
- 15468,
- 15469,
- 15470,
- 15471,
- 15472,
- 15473,
- 15474,
- 15475,
- 15476,
- 15477,
- 15478,
- 15479,
- 15480,
- 15481,
- 15482,
- 15483,
- 15484,
- 15485,
- 15486,
- 15487,
- 15488,
- 15489,
- 15490,
- 15491,
- 15492,
- 15493,
- 15494,
- 15495,
- 15496,
- 15497,
- 15498,
- 15499,
- 15500,
- 15501,
- 15502,
- 15503,
- 15504,
- 15505,
- 15506,
- 15507,
- 15508,
- 15509,
- 15510,
- 15511,
- 15512,
- 15513,
- 15514,
- 15515,
- 15516,
- 15517,
- 15518,
- 15519,
- 15520,
- 15521,
- 15522,
- 15523,
- 15524,
- 15525,
- 15526,
- 15527,
- 15528,
- 15529,
- 15530,
- 15531,
- 15532,
- 15533,
- 15534,
- 15535,
- 15536,
- 15537,
- 15538,
- 15539,
- 15540,
- 15541,
- 15542,
- 15543,
- 15544,
- 15545,
- 15546,
- 15547,
- 15548,
- 15549,
- 15550,
- 15551,
- 15552,
- 15553,
- 15554,
- 15555,
- 15556,
- 15557,
- 15558,
- 15559,
- 15560,
- 15561,
- 15562,
- 15563,
- 15564,
- 15565,
- 15566,
- 15567,
- 15568,
- 15569,
- 15570,
- 15571,
- 15572,
- 15573,
- 15574,
- 15575,
- 15576,
- 15577,
- 15578,
- 15579,
- 15580,
- 15581,
- 15582,
- 15583,
- 15584,
- 15585,
- 15586,
- 15587,
- 15588,
- 15589,
- 15590,
- 15591,
- 15592,
- 15593,
- 15594,
- 15595,
- 15596,
- 15597,
- 15598,
- 15599,
- 15600,
- 15601,
- 15602,
- 15603,
- 15604,
- 15605,
- 15606,
- 15607,
- 15608,
- 15609,
- 15610,
- 15611,
- 15612,
- 15613,
- 15614,
- 15615,
- 15616,
- 15617,
- 15618,
- 15619,
- 15620,
- 15621,
- 15622,
- 15623,
- 15624,
- 15625,
- 15626,
- 15627,
- 15628,
- 15629,
- 15630,
- 15631,
- 15632,
- 15633,
- 15634,
- 15635,
- 15636,
- 15637,
- 15638,
- 15639,
- 15640,
- 15641,
- 15642,
- 15643,
- 15644,
- 15645,
- 15646,
- 15647,
- 15648,
- 15649,
- 15650,
- 15651,
- 15652,
- 15653,
- 15654,
- 15655,
- 15656,
- 15657,
- 15658,
- 15659,
- 15660,
- 15661,
- 15662,
- 15663,
- 15664,
- 15665,
- 15666,
- 15667,
- 15668,
- 15669,
- 15670,
- 15671,
- 15672,
- 15673,
- 15674,
- 15675,
- 15676,
- 15677,
- 15678,
- 15679,
- 15680,
- 15681,
- 15682,
- 15683,
- 15684,
- 15685,
- 15686,
- 15687,
- 15688,
- 15689,
- 15690,
- 15691,
- 15692,
- 15693,
- 15694,
- 15695,
- 15696,
- 15697,
- 15698,
- 15699,
- 15700,
- 15701,
- 15702,
- 15703,
- 15704,
- 15705,
- 15706,
- 15707,
- 15708,
- 15709,
- 15710,
- 15711,
- 15712,
- 15713,
- 15714,
- 15715,
- 15716,
- 15717,
- 15718,
- 15719,
- 15720,
- 15721,
- 15722,
- 15723,
- 15724,
- 15725,
- 15726,
- 15727,
- 15728,
- 15729,
- 15730,
- 15731,
- 15732,
- 15733,
- 15734,
- 15735,
- 15736,
- 15737,
- 15738,
- 15739,
- 15740,
- 15741,
- 15742,
- 15743,
- 15744,
- 15745,
- 15746,
- 15747,
- 15748,
- 15749,
- 15750,
- 15751,
- 15752,
- 15753,
- 15754,
- 15755,
- 15756,
- 15757,
- 15758,
- 15759,
- 15760,
- 15761,
- 15762,
- 15763,
- 15764,
- 15765,
- 15766,
- 15767,
- 15768,
- 15769,
- 15770,
- 15771,
- 15772,
- 15773,
- 15774,
- 15775,
- 15776,
- 15777,
- 15778,
- 15779,
- 15780,
- 15781,
- 15782,
- 15783,
- 15784,
- 15785,
- 15786,
- 15787,
- 15788,
- 15789,
- 15790,
- 15791,
- 15792,
- 15793,
- 15794,
- 15795,
- 15796,
- 15797,
- 15798,
- 15799,
- 15800,
- 15801,
- 15802,
- 15803,
- 15804,
- 15805,
- 15806,
- 15807,
- 15808,
- 15809,
- 15810,
- 15811,
- 15812,
- 15813,
- 15814,
- 15815,
- 15816,
- 15817,
- 15818,
- 15819,
- 15820,
- 15821,
- 15822,
- 15823,
- 15824,
- 15825,
- 15826,
- 15827,
- 15828,
- 15829,
- 15830,
- 15831,
- 15832,
- 15833,
- 15834,
- 15835,
- 15836,
- 15837,
- 15838,
- 15839,
- 15840,
- 15841,
- 15842,
- 15843,
- 15844,
- 15845,
- 15846,
- 15847,
- 15848,
- 15849,
- 15850,
- 15851,
- 15852,
- 15853,
- 15854,
- 15855,
- 15856,
- 15857,
- 15858,
- 15859,
- 15860,
- 15861,
- 15862,
- 15863,
- 15864,
- 15865,
- 15866,
- 15867,
- 15868,
- 15869,
- 15870,
- 15871,
- 15872,
- 15873,
- 15874,
- 15875,
- 15876,
- 15877,
- 15878,
- 15879,
- 15880,
- 15881,
- 15882,
- 15883,
- 15884,
- 15885,
- 15886,
- 15887,
- 15888,
- 15889,
- 15890,
- 15891,
- 15892,
- 15893,
- 15894,
- 15895,
- 15896,
- 15897,
- 15898,
- 15899,
- 15900,
- 15901,
- 15902,
- 15903,
- 15904,
- 15905,
- 15906,
- 15907,
- 15908,
- 15909,
- 15910,
- 15911,
- 15912,
- 15913,
- 15914,
- 15915,
- 15916,
- 15917,
- 15918,
- 15919,
- 15920,
- 15921,
- 15922,
- 15923,
- 15924,
- 15925,
- 15926,
- 15927,
- 15928,
- 15929,
- 15930,
- 15931,
- 15932,
- 15933,
- 15934,
- 15935,
- 15936,
- 15937,
- 15938,
- 15939,
- 15940,
- 15941,
- 15942,
- 15943,
- 15944,
- 15945,
- 15946,
- 15947,
- 15948,
- 15949,
- 15950,
- 15951,
- 15952,
- 15953,
- 15954,
- 15955,
- 15956,
- 15957,
- 15958,
- 15959,
- 15960,
- 15961,
- 15962,
- 15963,
- 15964,
- 15965,
- 15966,
- 15967,
- 15968,
- 15969,
- 15970,
- 15971,
- 15972,
- 15973,
- 15974,
- 15975,
- 15976,
- 15977,
- 15978,
- 15979,
- 15980,
- 15981,
- 15982,
- 15983,
- 15984,
- 15985,
- 15986,
- 15987,
- 15988,
- 15989,
- 15990,
- 15991,
- 15992,
- 15993,
- 15994,
- 15995,
- 15996,
- 15997,
- 15998,
- 15999,
- 16000,
- 16001,
- 16002,
- 16003,
- 16004,
- 16005,
- 16006,
- 16007,
- 16008,
- 16009,
- 16010,
- 16011,
- 16012,
- 16013,
- 16014,
- 16015,
- 16016,
- 16017,
- 16018,
- 16019,
- 16020,
- 16021,
- 16022,
- 16023,
- 16024,
- 16025,
- 16026,
- 16027,
- 16028,
- 16029,
- 16030,
- 16031,
- 16032,
- 16033,
- 16034,
- 16035,
- 16036,
- 16037,
- 16038,
- 16039,
- 16040,
- 16041,
- 16042,
- 16043,
- 16044,
- 16045,
- 16046,
- 16047,
- 16048,
- 16049,
- 16050,
- 16051,
- 16052,
- 16053,
- 16054,
- 16055,
- 16056,
- 16057,
- 16058,
- 16059,
- 16060,
- 16061,
- 16062,
- 16063,
- 16064,
- 16065,
- 16066,
- 16067,
- 16068,
- 16069,
- 16070,
- 16071,
- 16072,
- 16073,
- 16074,
- 16075,
- 16076,
- 16077,
- 16078,
- 16079,
- 16080,
- 16081,
- 16082,
- 16083,
- 16084,
- 16085,
- 16086,
- 16087,
- 16088,
- 16089,
- 16090,
- 16091,
- 16092,
- 16093,
- 16094,
- 16095,
- 16096,
- 16097,
- 16098,
- 16099,
- 16100,
- 16101,
- 16102,
- 16103,
- 16104,
- 16105,
- 16106,
- 16107,
- 16108,
- 16109,
- 16110,
- 16111,
- 16112,
- 16113,
- 16114,
- 16115,
- 16116,
- 16117,
- 16118,
- 16119,
- 16120,
- 16121,
- 16122,
- 16123,
- 16124,
- 16125,
- 16126,
- 16127,
- 16128,
- 16129,
- 16130,
- 16131,
- 16132,
- 16133,
- 16134,
- 16135,
- 16136,
- 16137,
- 16138,
- 16139,
- 16140,
- 16141,
- 16142,
- 16143,
- 16144,
- 16145,
- 16146,
- 16147,
- 16148,
- 16149,
- 16150,
- 16151,
- 16152,
- 16153,
- 16154,
- 16155,
- 16156,
- 16157,
- 16158,
- 16159,
- 16160,
- 16161,
- 16162,
- 16163,
- 16164,
- 16165,
- 16166,
- 16167,
- 16168,
- 16169,
- 16170,
- 16171,
- 16172,
- 16173,
- 16174,
- 16175,
- 16176,
- 16177,
- 16178,
- 16179,
- 16180,
- 16181,
- 16182,
- 16183,
- 16184,
- 16185,
- 16186,
- 16187,
- 16188,
- 16189,
- 16190,
- 16191,
- 16192,
- 16193,
- 16194,
- 16195,
- 16196,
- 16197,
- 16198,
- 16199,
- 16200,
- 16201,
- 16202,
- 16203,
- 16204,
- 16205,
- 16206,
- 16207,
- 16208,
- 16209,
- 16210,
- 16211,
- 16212,
- 16213,
- 16214,
- 16215,
- 16216,
- 16217,
- 16218,
- 16219,
- 16220,
- 16221,
- 16222,
- 16223,
- 16224,
- 16225,
- 16226,
- 16227,
- 16228,
- 16229,
- 16230,
- 16231,
- 16232,
- 16233,
- 16234,
- 16235,
- 16236,
- 16237,
- 16238,
- 16239,
- 16240,
- 16241,
- 16242,
- 16243,
- 16244,
- 16245,
- 16246,
- 16247,
- 16248,
- 16249,
- 16250,
- 16251,
- 16252,
- 16253,
- 16254,
- 16255,
- 16256,
- 16257,
- 16258,
- 16259,
- 16260,
- 16261,
- 16262,
- 16263,
- 16264,
- 16265,
- 16266,
- 16267,
- 16268,
- 16269,
- 16270,
- 16271,
- 16272,
- 16273,
- 16274,
- 16275,
- 16276,
- 16277,
- 16278,
- 16279,
- 16280,
- 16281,
- 16282,
- 16283,
- 16284,
- 16285,
- 16286,
- 16287,
- 16288,
- 16289,
- 16290,
- 16291,
- 16292,
- 16293,
- 16294,
- 16295,
- 16296,
- 16297,
- 16298,
- 16299,
- 16300,
- 16301,
- 16302,
- 16303,
- 16304,
- 16305,
- 16306,
- 16307,
- 16308,
- 16309,
- 16310,
- 16311,
- 16312,
- 16313,
- 16314,
- 16315,
- 16316,
- 16317,
- 16318,
- 16319,
- 16320,
- 16321,
- 16322,
- 16323,
- 16324,
- 16325,
- 16326,
- 16327,
- 16328,
- 16329,
- 16330,
- 16331,
- 16332,
- 16333,
- 16334,
- 16335,
- 16336,
- 16337,
- 16338,
- 16339,
- 16340,
- 16341,
- 16342,
- 16343,
- 16344,
- 16345,
- 16346,
- 16347,
- 16348,
- 16349,
- 16350,
- 16351,
- 16352,
- 16353,
- 16354,
- 16355,
- 16356,
- 16357,
- 16358,
- 16359,
- 16360,
- 16361,
- 16362,
- 16363,
- 16364,
- 16365,
- 16366,
- 16367,
- 16368,
- 16369,
- 16370,
- 16371,
- 16372,
- 16373,
- 16374,
- 16375,
- 16376,
- 16377,
- 16378,
- 16379,
- 16380,
- 16381,
- 16382,
- 16383,
- 16384,
- 16385,
- 16386,
- 16387,
- 16388,
- 16389,
- 16390,
- 16391,
- 16392,
- 16393,
- 16394,
- 16395,
- 16396,
- 16397,
- 16398,
- 16399,
- 16400,
- 16401,
- 16402,
- 16403,
- 16404,
- 16405,
- 16406,
- 16407,
- 16408,
- 16409,
- 16410,
- 16411,
- 16412,
- 16413,
- 16414,
- 16415,
- 16416,
- 16417,
- 16418,
- 16419,
- 16420,
- 16421,
- 16422,
- 16423,
- 16424,
- 16425,
- 16426,
- 16427,
- 16428,
- 16429,
- 16430,
- 16431,
- 16432,
- 16433,
- 16434,
- 16435,
- 16436,
- 16437,
- 16438,
- 16439,
- 16440,
- 16441,
- 16442,
- 16443,
- 16444,
- 16445,
- 16446,
- 16447,
- 16448,
- 16449,
- 16450,
- 16451,
- 16452,
- 16453,
- 16454,
- 16455,
- 16456,
- 16457,
- 16458,
- 16459,
- 16460,
- 16461,
- 16462,
- 16463,
- 16464,
- 16465,
- 16466,
- 16467,
- 16468,
- 16469,
- 16470,
- 16471,
- 16472,
- 16473,
- 16474,
- 16475,
- 16476,
- 16477,
- 16478,
- 16479,
- 16480,
- 16481,
- 16482,
- 16483,
- 16484,
- 16485,
- 16486,
- 16487,
- 16488,
- 16489,
- 16490,
- 16491,
- 16492,
- 16493,
- 16494,
- 16495,
- 16496,
- 16497,
- 16498,
- 16499,
- 16500,
- 16501,
- 16502,
- 16503,
- 16504,
- 16505,
- 16506,
- 16507,
- 16508,
- 16509,
- 16510,
- 16511,
- 16512,
- 16513,
- 16514,
- 16515,
- 16516,
- 16517,
- 16518,
- 16519,
- 16520,
- 16521,
- 16522,
- 16523,
- 16524,
- 16525,
- 16526,
- 16527,
- 16528,
- 16529,
- 16530,
- 16531,
- 16532,
- 16533,
- 16534,
- 16535,
- 16536,
- 16537,
- 16538,
- 16539,
- 16540,
- 16541,
- 16542,
- 16543,
- 16544,
- 16545,
- 16546,
- 16547,
- 16548,
- 16549,
- 16550,
- 16551,
- 16552,
- 16553,
- 16554,
- 16555,
- 16556,
- 16557,
- 16558,
- 16559,
- 16560,
- 16561,
- 16562,
- 16563,
- 16564,
- 16565,
- 16566,
- 16567,
- 16568,
- 16569,
- 16570,
- 16571,
- 16572,
- 16573,
- 16574,
- 16575,
- 16576,
- 16577,
- 16578,
- 16579,
- 16580,
- 16581,
- 16582,
- 16583,
- 16584,
- 16585,
- 16586,
- 16587,
- 16588,
- 16589,
- 16590,
- 16591,
- 16592,
- 16593,
- 16594,
- 16595,
- 16596,
- 16597,
- 16598,
- 16599,
- 16600,
- 16601,
- 16602,
- 16603,
- 16604,
- 16605,
- 16606,
- 16607,
- 16608,
- 16609,
- 16610,
- 16611,
- 16612,
- 16613,
- 16614,
- 16615,
- 16616,
- 16617,
- 16618,
- 16619,
- 16620,
- 16621,
- 16622,
- 16623,
- 16624,
- 16625,
- 16626,
- 16627,
- 16628,
- 16629,
- 16630,
- 16631,
- 16632,
- 16633,
- 16634,
- 16635,
- 16636,
- 16637,
- 16638,
- 16639,
- 16640,
- 16641,
- 16642,
- 16643,
- 16644,
- 16645,
- 16646,
- 16647,
- 16648,
- 16649,
- 16650,
- 16651,
- 16652,
- 16653,
- 16654,
- 16655,
- 16656,
- 16657,
- 16658,
- 16659,
- 16660,
- 16661,
- 16662,
- 16663,
- 16664,
- 16665,
- 16666,
- 16667,
- 16668,
- 16669,
- 16670,
- 16671,
- 16672,
- 16673,
- 16674,
- 16675,
- 16676,
- 16677,
- 16678,
- 16679,
- 16680,
- 16681,
- 16682,
- 16683,
- 16684,
- 16685,
- 16686,
- 16687,
- 16688,
- 16689,
- 16690,
- 16691,
- 16692,
- 16693,
- 16694,
- 16695,
- 16696,
- 16697,
- 16698,
- 16699,
- 16700,
- 16701,
- 16702,
- 16703,
- 16704,
- 16705,
- 16706,
- 16707,
- 16708,
- 16709,
- 16710,
- 16711,
- 16712,
- 16713,
- 16714,
- 16715,
- 16716,
- 16717,
- 16718,
- 16719,
- 16720,
- 16721,
- 16722,
- 16723,
- 16724,
- 16725,
- 16726,
- 16727,
- 16728,
- 16729,
- 16730,
- 16731,
- 16732,
- 16733,
- 16734,
- 16735,
- 16736,
- 16737,
- 16738,
- 16739,
- 16740,
- 16741,
- 16742,
- 16743,
- 16744,
- 16745,
- 16746,
- 16747,
- 16748,
- 16749,
- 16750,
- 16751,
- 16752,
- 16753,
- 16754,
- 16755,
- 16756,
- 16757,
- 16758,
- 16759,
- 16760,
- 16761,
- 16762,
- 16763,
- 16764,
- 16765,
- 16766,
- 16767,
- 16768,
- 16769,
- 16770,
- 16771,
- 16772,
- 16773,
- 16774,
- 16775,
- 16776,
- 16777,
- 16778,
- 16779,
- 16780,
- 16781,
- 16782,
- 16783,
- 16784,
- 16785,
- 16786,
- 16787,
- 16788,
- 16789,
- 16790,
- 16791,
- 16792,
- 16793,
- 16794,
- 16795,
- 16796,
- 16797,
- 16798,
- 16799,
- 16800,
- 16801,
- 16802,
- 16803,
- 16804,
- 16805,
- 16806,
- 16807,
- 16808,
- 16809,
- 16810,
- 16811,
- 16812,
- 16813,
- 16814,
- 16815,
- 16816,
- 16817,
- 16818,
- 16819,
- 16820,
- 16821,
- 16822,
- 16823,
- 16824,
- 16825,
- 16826,
- 16827,
- 16828,
- 16829,
- 16830,
- 16831,
- 16832,
- 16833,
- 16834,
- 16835,
- 16836,
- 16837,
- 16838,
- 16839,
- 16840,
- 16841,
- 16842,
- 16843,
- 16844,
- 16845,
- 16846,
- 16847,
- 16848,
- 16849,
- 16850,
- 16851,
- 16852,
- 16853,
- 16854,
- 16855,
- 16856,
- 16857,
- 16858,
- 16859,
- 16860,
- 16861,
- 16862,
- 16863,
- 16864,
- 16865,
- 16866,
- 16867,
- 16868,
- 16869,
- 16870,
- 16871,
- 16872,
- 16873,
- 16874,
- 16875,
- 16876,
- 16877,
- 16878,
- 16879,
- 16880,
- 16881,
- 16882,
- 16883,
- 16884,
- 16885,
- 16886,
- 16887,
- 16888,
- 16889,
- 16890,
- 16891,
- 16892,
- 16893,
- 16894,
- 16895,
- 16896,
- 16897,
- 16898,
- 16899,
- 16900,
- 16901,
- 16902,
- 16903,
- 16904,
- 16905,
- 16906,
- 16907,
- 16908,
- 16909,
- 16910,
- 16911,
- 16912,
- 16913,
- 16914,
- 16915,
- 16916,
- 16917,
- 16918,
- 16919,
- 16920,
- 16921,
- 16922,
- 16923,
- 16924,
- 16925,
- 16926,
- 16927,
- 16928,
- 16929,
- 16930,
- 16931,
- 16932,
- 16933,
- 16934,
- 16935,
- 16936,
- 16937,
- 16938,
- 16939,
- 16940,
- 16941,
- 16942,
- 16943,
- 16944,
- 16945,
- 16946,
- 16947,
- 16948,
- 16949,
- 16950,
- 16951,
- 16952,
- 16953,
- 16954,
- 16955,
- 16956,
- 16957,
- 16958,
- 16959,
- 16960,
- 16961,
- 16962,
- 16963,
- 16964,
- 16965,
- 16966,
- 16967,
- 16968,
- 16969,
- 16970,
- 16971,
- 16972,
- 16973,
- 16974,
- 16975,
- 16976,
- 16977,
- 16978,
- 16979,
- 16980,
- 16981,
- 16982,
- 16983,
- 16984,
- 16985,
- 16986,
- 16987,
- 16988,
- 16989,
- 16990,
- 16991,
- 16992,
- 16993,
- 16994,
- 16995,
- 16996,
- 16997,
- 16998,
- 16999,
- 17000,
- 17001,
- 17002,
- 17003,
- 17004,
- 17005,
- 17006,
- 17007,
- 17008,
- 17009,
- 17010,
- 17011,
- 17012,
- 17013,
- 17014,
- 17015,
- 17016,
- 17017,
- 17018,
- 17019,
- 17020,
- 17021,
- 17022,
- 17023,
- 17024,
- 17025,
- 17026,
- 17027,
- 17028,
- 17029,
- 17030,
- 17031,
- 17032,
- 17033,
- 17034,
- 17035,
- 17036,
- 17037,
- 17038,
- 17039,
- 17040,
- 17041,
- 17042,
- 17043,
- 17044,
- 17045,
- 17046,
- 17047,
- 17048,
- 17049,
- 17050,
- 17051,
- 17052,
- 17053,
- 17054,
- 17055,
- 17056,
- 17057,
- 17058,
- 17059,
- 17060,
- 17061,
- 17062,
- 17063,
- 17064,
- 17065,
- 17066,
- 17067,
- 17068,
- 17069,
- 17070,
- 17071,
- 17072,
- 17073,
- 17074,
- 17075,
- 17076,
- 17077,
- 17078,
- 17079,
- 17080,
- 17081,
- 17082,
- 17083,
- 17084,
- 17085,
- 17086,
- 17087,
- 17088,
- 17089,
- 17090,
- 17091,
- 17092,
- 17093,
- 17094,
- 17095,
- 17096,
- 17097,
- 17098,
- 17099,
- 17100,
- 17101,
- 17102,
- 17103,
- 17104,
- 17105,
- 17106,
- 17107,
- 17108,
- 17109,
- 17110,
- 17111,
- 17112,
- 17113,
- 17114,
- 17115,
- 17116,
- 17117,
- 17118,
- 17119,
- 17120,
- 17121,
- 17122,
- 17123,
- 17124,
- 17125,
- 17126,
- 17127,
- 17128,
- 17129,
- 17130,
- 17131,
- 17132,
- 17133,
- 17134,
- 17135,
- 17136,
- 17137,
- 17138,
- 17139,
- 17140,
- 17141,
- 17142,
- 17143,
- 17144,
- 17145,
- 17146,
- 17147,
- 17148,
- 17149,
- 17150,
- 17151,
- 17152,
- 17153,
- 17154,
- 17155,
- 17156,
- 17157,
- 17158,
- 17159,
- 17160,
- 17161,
- 17162,
- 17163,
- 17164,
- 17165,
- 17166,
- 17167,
- 17168,
- 17169,
- 17170,
- 17171,
- 17172,
- 17173,
- 17174,
- 17175,
- 17176,
- 17177,
- 17178,
- 17179,
- 17180,
- 17181,
- 17182,
- 17183,
- 17184,
- 17185,
- 17186,
- 17187,
- 17188,
- 17189,
- 17190,
- 17191,
- 17192,
- 17193,
- 17194,
- 17195,
- 17196,
- 17197,
- 17198,
- 17199,
- 17200,
- 17201,
- 17202,
- 17203,
- 17204,
- 17205,
- 17206,
- 17207,
- 17208,
- 17209,
- 17210,
- 17211,
- 17212,
- 17213,
- 17214,
- 17215,
- 17216,
- 17217,
- 17218,
- 17219,
- 17220,
- 17221,
- 17222,
- 17223,
- 17224,
- 17225,
- 17226,
- 17227,
- 17228,
- 17229,
- 17230,
- 17231,
- 17232,
- 17233,
- 17234,
- 17235,
- 17236,
- 17237,
- 17238,
- 17239,
- 17240,
- 17241,
- 17242,
- 17243,
- 17244,
- 17245,
- 17246,
- 17247,
- 17248,
- 17249,
- 17250,
- 17251,
- 17252,
- 17253,
- 17254,
- 17255,
- 17256,
- 17257,
- 17258,
- 17259,
- 17260,
- 17261,
- 17262,
- 17263,
- 17264,
- 17265,
- 17266,
- 17267,
- 17268,
- 17269,
- 17270,
- 17271,
- 17272,
- 17273,
- 17274,
- 17275,
- 17276,
- 17277,
- 17278,
- 17279,
- 17280,
- 17281,
- 17282,
- 17283,
- 17284,
- 17285,
- 17286,
- 17287,
- 17288,
- 17289,
- 17290,
- 17291,
- 17292,
- 17293,
- 17294,
- 17295,
- 17296,
- 17297,
- 17298,
- 17299,
- 17300,
- 17301,
- 17302,
- 17303,
- 17304,
- 17305,
- 17306,
- 17307,
- 17308,
- 17309,
- 17310,
- 17311,
- 17312,
- 17313,
- 17314,
- 17315,
- 17316,
- 17317,
- 17318,
- 17319,
- 17320,
- 17321,
- 17322,
- 17323,
- 17324,
- 17325,
- 17326,
- 17327,
- 17328,
- 17329,
- 17330,
- 17331,
- 17332,
- 17333,
- 17334,
- 17335,
- 17336,
- 17337,
- 17338,
- 17339,
- 17340,
- 17341,
- 17342,
- 17343,
- 17344,
- 17345,
- 17346,
- 17347,
- 17348,
- 17349,
- 17350,
- 17351,
- 17352,
- 17353,
- 17354,
- 17355,
- 17356,
- 17357,
- 17358,
- 17359,
- 17360,
- 17361,
- 17362,
- 17363,
- 17364,
- 17365,
- 17366,
- 17367,
- 17368,
- 17369,
- 17370,
- 17371,
- 17372,
- 17373,
- 17374,
- 17375,
- 17376,
- 17377,
- 17378,
- 17379,
- 17380,
- 17381,
- 17382,
- 17383,
- 17384,
- 17385,
- 17386,
- 17387,
- 17388,
- 17389,
- 17390,
- 17391,
- 17392,
- 17393,
- 17394,
- 17395,
- 17396,
- 17397,
- 17398,
- 17399,
- 17400,
- 17401,
- 17402,
- 17403,
- 17404,
- 17405,
- 17406,
- 17407,
- 17408,
- 17409,
- 17410,
- 17411,
- 17412,
- 17413,
- 17414,
- 17415,
- 17416,
- 17417,
- 17418,
- 17419,
- 17420,
- 17421,
- 17422,
- 17423,
- 17424,
- 17425,
- 17426,
- 17427,
- 17428,
- 17429,
- 17430,
- 17431,
- 17432,
- 17433,
- 17434,
- 17435,
- 17436,
- 17437,
- 17438,
- 17439,
- 17440,
- 17441,
- 17442,
- 17443,
- 17444,
- 17445,
- 17446,
- 17447,
- 17448,
- 17449,
- 17450,
- 17451,
- 17452,
- 17453,
- 17454,
- 17455,
- 17456,
- 17457,
- 17458,
- 17459,
- 17460,
- 17461,
- 17462,
- 17463,
- 17464,
- 17465,
- 17466,
- 17467,
- 17468,
- 17469,
- 17470,
- 17471,
- 17472,
- 17473,
- 17474,
- 17475,
- 17476,
- 17477,
- 17478,
- 17479,
- 17480,
- 17481,
- 17482,
- 17483,
- 17484,
- 17485,
- 17486,
- 17487,
- 17488,
- 17489,
- 17490,
- 17491,
- 17492,
- 17493,
- 17494,
- 17495,
- 17496,
- 17497,
- 17498,
- 17499,
- 17500,
- 17501,
- 17502,
- 17503,
- 17504,
- 17505,
- 17506,
- 17507,
- 17508,
- 17509,
- 17510,
- 17511,
- 17512,
- 17513,
- 17514,
- 17515,
- 17516,
- 17517,
- 17518,
- 17519,
- 17520,
- 17521,
- 17522,
- 17523,
- 17524,
- 17525,
- 17526,
- 17527,
- 17528,
- 17529,
- 17530,
- 17531,
- 17532,
- 17533,
- 17534,
- 17535,
- 17536,
- 17537,
- 17538,
- 17539,
- 17540,
- 17541,
- 17542,
- 17543,
- 17544,
- 17545,
- 17546,
- 17547,
- 17548,
- 17549,
- 17550,
- 17551,
- 17552,
- 17553,
- 17554,
- 17555,
- 17556,
- 17557,
- 17558,
- 17559,
- 17560,
- 17561,
- 17562,
- 17563,
- 17564,
- 17565,
- 17566,
- 17567,
- 17568,
- 17569,
- 17570,
- 17571,
- 17572,
- 17573,
- 17574,
- 17575,
- 17576,
- 17577,
- 17578,
- 17579,
- 17580,
- 17581,
- 17582,
- 17583,
- 17584,
- 17585,
- 17586,
- 17587,
- 17588,
- 17589,
- 17590,
- 17591,
- 17592,
- 17593,
- 17594,
- 17595,
- 17596,
- 17597,
- 17598,
- 17599,
- 17600,
- 17601,
- 17602,
- 17603,
- 17604,
- 17605,
- 17606,
- 17607,
- 17608,
- 17609,
- 17610,
- 17611,
- 17612,
- 17613,
- 17614,
- 17615,
- 17616,
- 17617,
- 17618,
- 17619,
- 17620,
- 17621,
- 17622,
- 17623,
- 17624,
- 17625,
- 17626,
- 17627,
- 17628,
- 17629,
- 17630,
- 17631,
- 17632,
- 17633,
- 17634,
- 17635,
- 17636,
- 17637,
- 17638,
- 17639,
- 17640,
- 17641,
- 17642,
- 17643,
- 17644,
- 17645,
- 17646,
- 17647,
- 17648,
- 17649,
- 17650,
- 17651,
- 17652,
- 17653,
- 17654,
- 17655,
- 17656,
- 17657,
- 17658,
- 17659,
- 17660,
- 17661,
- 17662,
- 17663,
- 17664,
- 17665,
- 17666,
- 17667,
- 17668,
- 17669,
- 17670,
- 17671,
- 17672,
- 17673,
- 17674,
- 17675,
- 17676,
- 17677,
- 17678,
- 17679,
- 17680,
- 17681,
- 17682,
- 17683,
- 17684,
- 17685,
- 17686,
- 17687,
- 17688,
- 17689,
- 17690,
- 17691,
- 17692,
- 17693,
- 17694,
- 17695,
- 17696,
- 17697,
- 17698,
- 17699,
- 17700,
- 17701,
- 17702,
- 17703,
- 17704,
- 17705,
- 17706,
- 17707,
- 17708,
- 17709,
- 17710,
- 17711,
- 17712,
- 17713,
- 17714,
- 17715,
- 17716,
- 17717,
- 17718,
- 17719,
- 17720,
- 17721,
- 17722,
- 17723,
- 17724,
- 17725,
- 17726,
- 17727,
- 17728,
- 17729,
- 17730,
- 17731,
- 17732,
- 17733,
- 17734,
- 17735,
- 17736,
- 17737,
- 17738,
- 17739,
- 17740,
- 17741,
- 17742,
- 17743,
- 17744,
- 17745,
- 17746,
- 17747,
- 17748,
- 17749,
- 17750,
- 17751,
- 17752,
- 17753,
- 17754,
- 17755,
- 17756,
- 17757,
- 17758,
- 17759,
- 17760,
- 17761,
- 17762,
- 17763,
- 17764,
- 17765,
- 17766,
- 17767,
- 17768,
- 17769,
- 17770,
- 17771,
- 17772,
- 17773,
- 17774,
- 17775,
- 17776,
- 17777,
- 17778,
- 17779,
- 17780,
- 17781,
- 17782,
- 17783,
- 17784,
- 17785,
- 17786,
- 17787,
- 17788,
- 17789,
- 17790,
- 17791,
- 17792,
- 17793,
- 17794,
- 17795,
- 17796,
- 17797,
- 17798,
- 17799,
- 17800,
- 17801,
- 17802,
- 17803,
- 17804,
- 17805,
- 17806,
- 17807,
- 17808,
- 17809,
- 17810,
- 17811,
- 17812,
- 17813,
- 17814,
- 17815,
- 17816,
- 17817,
- 17818,
- 17819,
- 17820,
- 17821,
- 17822,
- 17823,
- 17824,
- 17825,
- 17826,
- 17827,
- 17828,
- 17829,
- 17830,
- 17831,
- 17832,
- 17833,
- 17834,
- 17835,
- 17836,
- 17837,
- 17838,
- 17839,
- 17840,
- 17841,
- 17842,
- 17843,
- 17844,
- 17845,
- 17846,
- 17847,
- 17848,
- 17849,
- 17850,
- 17851,
- 17852,
- 17853,
- 17854,
- 17855,
- 17856,
- 17857,
- 17858,
- 17859,
- 17860,
- 17861,
- 17862,
- 17863,
- 17864,
- 17865,
- 17866,
- 17867,
- 17868,
- 17869,
- 17870,
- 17871,
- 17872,
- 17873,
- 17874,
- 17875,
- 17876,
- 17877,
- 17878,
- 17879,
- 17880,
- 17881,
- 17882,
- 17883,
- 17884,
- 17885,
- 17886,
- 17887,
- 17888,
- 17889,
- 17890,
- 17891,
- 17892,
- 17893,
- 17894,
- 17895,
- 17896,
- 17897,
- 17898,
- 17899,
- 17900,
- 17901,
- 17902,
- 17903,
- 17904,
- 17905,
- 17906,
- 17907,
- 17908,
- 17909,
- 17910,
- 17911,
- 17912,
- 17913,
- 17914,
- 17915,
- 17916,
- 17917,
- 17918,
- 17919,
- 17920,
- 17921,
- 17922,
- 17923,
- 17924,
- 17925,
- 17926,
- 17927,
- 17928,
- 17929,
- 17930,
- 17931,
- 17932,
- 17933,
- 17934,
- 17935,
- 17936,
- 17937,
- 17938,
- 17939,
- 17940,
- 17941,
- 17942,
- 17943,
- 17944,
- 17945,
- 17946,
- 17947,
- 17948,
- 17949,
- 17950,
- 17951,
- 17952,
- 17953,
- 17954,
- 17955,
- 17956,
- 17957,
- 17958,
- 17959,
- 17960,
- 17961,
- 17962,
- 17963,
- 17964,
- 17965,
- 17966,
- 17967,
- 17968,
- 17969,
- 17970,
- 17971,
- 17972,
- 17973,
- 17974,
- 17975,
- 17976,
- 17977,
- 17978,
- 17979,
- 17980,
- 17981,
- 17982,
- 17983,
- 17984,
- 17985,
- 17986,
- 17987,
- 17988,
- 17989,
- 17990,
- 17991,
- 17992,
- 17993,
- 17994,
- 17995,
- 17996,
- 17997,
- 17998,
- 17999,
- 18000,
- 18001,
- 18002,
- 18003,
- 18004,
- 18005,
- 18006,
- 18007,
- 18008,
- 18009,
- 18010,
- 18011,
- 18012,
- 18013,
- 18014,
- 18015,
- 18016,
- 18017,
- 18018,
- 18019,
- 18020,
- 18021,
- 18022,
- 18023,
- 18024,
- 18025,
- 18026,
- 18027,
- 18028,
- 18029,
- 18030,
- 18031,
- 18032,
- 18033,
- 18034,
- 18035,
- 18036,
- 18037,
- 18038,
- 18039,
- 18040,
- 18041,
- 18042,
- 18043,
- 18044,
- 18045,
- 18046,
- 18047,
- 18048,
- 18049,
- 18050,
- 18051,
- 18052,
- 18053,
- 18054,
- 18055,
- 18056,
- 18057,
- 18058,
- 18059,
- 18060,
- 18061,
- 18062,
- 18063,
- 18064,
- 18065,
- 18066,
- 18067,
- 18068,
- 18069,
- 18070,
- 18071,
- 18072,
- 18073,
- 18074,
- 18075,
- 18076,
- 18077,
- 18078,
- 18079,
- 18080,
- 18081,
- 18082,
- 18083,
- 18084,
- 18085,
- 18086,
- 18087,
- 18088,
- 18089,
- 18090,
- 18091,
- 18092,
- 18093,
- 18094,
- 18095,
- 18096,
- 18097,
- 18098,
- 18099,
- 18100,
- 18101,
- 18102,
- 18103,
- 18104,
- 18105,
- 18106,
- 18107,
- 18108,
- 18109,
- 18110,
- 18111,
- 18112,
- 18113,
- 18114,
- 18115,
- 18116,
- 18117,
- 18118,
- 18119,
- 18120,
- 18121,
- 18122,
- 18123,
- 18124,
- 18125,
- 18126,
- 18127,
- 18128,
- 18129,
- 18130,
- 18131,
- 18132,
- 18133,
- 18134,
- 18135,
- 18136,
- 18137,
- 18138,
- 18139,
- 18140,
- 18141,
- 18142,
- 18143,
- 18144,
- 18145,
- 18146,
- 18147,
- 18148,
- 18149,
- 18150,
- 18151,
- 18152,
- 18153,
- 18154,
- 18155,
- 18156,
- 18157,
- 18158,
- 18159,
- 18160,
- 18161,
- 18162,
- 18163,
- 18164,
- 18165,
- 18166,
- 18167,
- 18168,
- 18169,
- 18170,
- 18171,
- 18172,
- 18173,
- 18174,
- 18175,
- 18176,
- 18177,
- 18178,
- 18179,
- 18180,
- 18181,
- 18182,
- 18183,
- 18184,
- 18185,
- 18186,
- 18187,
- 18188,
- 18189,
- 18190,
- 18191,
- 18192,
- 18193,
- 18194,
- 18195,
- 18196,
- 18197,
- 18198,
- 18199,
- 18200,
- 18201,
- 18202,
- 18203,
- 18204,
- 18205,
- 18206,
- 18207,
- 18208,
- 18209,
- 18210,
- 18211,
- 18212,
- 18213,
- 18214,
- 18215,
- 18216,
- 18217,
- 18218,
- 18219,
- 18220,
- 18221,
- 18222,
- 18223,
- 18224,
- 18225,
- 18226,
- 18227,
- 18228,
- 18229,
- 18230,
- 18231,
- 18232,
- 18233,
- 18234,
- 18235,
- 18236,
- 18237,
- 18238,
- 18239,
- 18240,
- 18241,
- 18242,
- 18243,
- 18244,
- 18245,
- 18246,
- 18247,
- 18248,
- 18249,
- 18250,
- 18251,
- 18252,
- 18253,
- 18254,
- 18255,
- 18256,
- 18257,
- 18258,
- 18259,
- 18260,
- 18261,
- 18262,
- 18263,
- 18264,
- 18265,
- 18266,
- 18267,
- 18268,
- 18269,
- 18270,
- 18271,
- 18272,
- 18273,
- 18274,
- 18275,
- 18276,
- 18277,
- 18278,
- 18279,
- 18280,
- 18281,
- 18282,
- 18283,
- 18284,
- 18285,
- 18286,
- 18287,
- 18288,
- 18289,
- 18290,
- 18291,
- 18292,
- 18293,
- 18294,
- 18295,
- 18296,
- 18297,
- 18298,
- 18299,
- 18300,
- 18301,
- 18302,
- 18303,
- 18304,
- 18305,
- 18306,
- 18307,
- 18308,
- 18309,
- 18310,
- 18311,
- 18312,
- 18313,
- 18314,
- 18315,
- 18316,
- 18317,
- 18318,
- 18319,
- 18320,
- 18321,
- 18322,
- 18323,
- 18324,
- 18325,
- 18326,
- 18327,
- 18328,
- 18329,
- 18330,
- 18331,
- 18332,
- 18333,
- 18334,
- 18335,
- 18336,
- 18337,
- 18338,
- 18339,
- 18340,
- 18341,
- 18342,
- 18343,
- 18344,
- 18345,
- 18346,
- 18347,
- 18348,
- 18349,
- 18350,
- 18351,
- 18352,
- 18353,
- 18354,
- 18355,
- 18356,
- 18357,
- 18358,
- 18359,
- 18360,
- 18361,
- 18362,
- 18363,
- 18364,
- 18365,
- 18366,
- 18367,
- 18368,
- 18369,
- 18370,
- 18371,
- 18372,
- 18373,
- 18374,
- 18375,
- 18376,
- 18377,
- 18378,
- 18379,
- 18380,
- 18381,
- 18382,
- 18383,
- 18384,
- 18385,
- 18386,
- 18387,
- 18388,
- 18389,
- 18390,
- 18391,
- 18392,
- 18393,
- 18394,
- 18395,
- 18396,
- 18397,
- 18398,
- 18399,
- 18400,
- 18401,
- 18402,
- 18403,
- 18404,
- 18405,
- 18406,
- 18407,
- 18408,
- 18409,
- 18410,
- 18411,
- 18412,
- 18413,
- 18414,
- 18415,
- 18416,
- 18417,
- 18418,
- 18419,
- 18420,
- 18421,
- 18422,
- 18423,
- 18424,
- 18425,
- 18426,
- 18427,
- 18428,
- 18429,
- 18430,
- 18431,
- 18432,
- 18433,
- 18434,
- 18435,
- 18436,
- 18437,
- 18438,
- 18439,
- 18440,
- 18441,
- 18442,
- 18443,
- 18444,
- 18445,
- 18446,
- 18447,
- 18448,
- 18449,
- 18450,
- 18451,
- 18452,
- 18453,
- 18454,
- 18455,
- 18456,
- 18457,
- 18458,
- 18459,
- 18460,
- 18461,
- 18462,
- 18463,
- 18464,
- 18465,
- 18466,
- 18467,
- 18468,
- 18469,
- 18470,
- 18471,
- 18472,
- 18473,
- 18474,
- 18475,
- 18476,
- 18477,
- 18478,
- 18479,
- 18480,
- 18481,
- 18482,
- 18483,
- 18484,
- 18485,
- 18486,
- 18487,
- 18488,
- 18489,
- 18490,
- 18491,
- 18492,
- 18493,
- 18494,
- 18495,
- 18496,
- 18497,
- 18498,
- 18499,
- 18500,
- 18501,
- 18502,
- 18503,
- 18504,
- 18505,
- 18506,
- 18507,
- 18508,
- 18509,
- 18510,
- 18511,
- 18512,
- 18513,
- 18514,
- 18515,
- 18516,
- 18517,
- 18518,
- 18519,
- 18520,
- 18521,
- 18522,
- 18523,
- 18524,
- 18525,
- 18526,
- 18527,
- 18528,
- 18529,
- 18530,
- 18531,
- 18532,
- 18533,
- 18534,
- 18535,
- 18536,
- 18537,
- 18538,
- 18539,
- 18540,
- 18541,
- 18542,
- 18543,
- 18544,
- 18545,
- 18546,
- 18547,
- 18548,
- 18549,
- 18550,
- 18551,
- 18552,
- 18553,
- 18554,
- 18555,
- 18556,
- 18557,
- 18558,
- 18559,
- 18560,
- 18561,
- 18562,
- 18563,
- 18564,
- 18565,
- 18566,
- 18567,
- 18568,
- 18569,
- 18570,
- 18571,
- 18572,
- 18573,
- 18574,
- 18575,
- 18576,
- 18577,
- 18578,
- 18579,
- 18580,
- 18581,
- 18582,
- 18583,
- 18584,
- 18585,
- 18586,
- 18587,
- 18588,
- 18589,
- 18590,
- 18591,
- 18592,
- 18593,
- 18594,
- 18595,
- 18596,
- 18597,
- 18598,
- 18599,
- 18600,
- 18601,
- 18602,
- 18603,
- 18604,
- 18605,
- 18606,
- 18607,
- 18608,
- 18609,
- 18610,
- 18611,
- 18612,
- 18613,
- 18614,
- 18615,
- 18616,
- 18617,
- 18618,
- 18619,
- 18620,
- 18621,
- 18622,
- 18623,
- 18624,
- 18625,
- 18626,
- 18627,
- 18628,
- 18629,
- 18630,
- 18631,
- 18632,
- 18633,
- 18634,
- 18635,
- 18636,
- 18637,
- 18638,
- 18639,
- 18640,
- 18641,
- 18642,
- 18643,
- 18644,
- 18645,
- 18646,
- 18647,
- 18648,
- 18649,
- 18650,
- 18651,
- 18652,
- 18653,
- 18654,
- 18655,
- 18656,
- 18657,
- 18658,
- 18659,
- 18660,
- 18661,
- 18662,
- 18663,
- 18664,
- 18665,
- 18666,
- 18667,
- 18668,
- 18669,
- 18670,
- 18671,
- 18672,
- 18673,
- 18674,
- 18675,
- 18676,
- 18677,
- 18678,
- 18679,
- 18680,
- 18681,
- 18682,
- 18683,
- 18684,
- 18685,
- 18686,
- 18687,
- 18688,
- 18689,
- 18690,
- 18691,
- 18692,
- 18693,
- 18694,
- 18695,
- 18696,
- 18697,
- 18698,
- 18699,
- 18700,
- 18701,
- 18702,
- 18703,
- 18704,
- 18705,
- 18706,
- 18707,
- 18708,
- 18709,
- 18710,
- 18711,
- 18712,
- 18713,
- 18714,
- 18715,
- 18716,
- 18717,
- 18718,
- 18719,
- 18720,
- 18721,
- 18722,
- 18723,
- 18724,
- 18725,
- 18726,
- 18727,
- 18728,
- 18729,
- 18730,
- 18731,
- 18732,
- 18733,
- 18734,
- 18735,
- 18736,
- 18737,
- 18738,
- 18739,
- 18740,
- 18741,
- 18742,
- 18743,
- 18744,
- 18745,
- 18746,
- 18747,
- 18748,
- 18749,
- 18750,
- 18751,
- 18752,
- 18753,
- 18754,
- 18755,
- 18756,
- 18757,
- 18758,
- 18759,
- 18760,
- 18761,
- 18762,
- 18763,
- 18764,
- 18765,
- 18766,
- 18767,
- 18768,
- 18769,
- 18770,
- 18771,
- 18772,
- 18773,
- 18774,
- 18775,
- 18776,
- 18777,
- 18778,
- 18779,
- 18780,
- 18781,
- 18782,
- 18783,
- 18784,
- 18785,
- 18786,
- 18787,
- 18788,
- 18789,
- 18790,
- 18791,
- 18792,
- 18793,
- 18794,
- 18795,
- 18796,
- 18797,
- 18798,
- 18799,
- 18800,
- 18801,
- 18802,
- 18803,
- 18804,
- 18805,
- 18806,
- 18807,
- 18808,
- 18809,
- 18810,
- 18811,
- 18812,
- 18813,
- 18814,
- 18815,
- 18816,
- 18817,
- 18818,
- 18819,
- 18820,
- 18821,
- 18822,
- 18823,
- 18824,
- 18825,
- 18826,
- 18827,
- 18828,
- 18829,
- 18830,
- 18831,
- 18832,
- 18833,
- 18834,
- 18835,
- 18836,
- 18837,
- 18838,
- 18839,
- 18840,
- 18841,
- 18842,
- 18843,
- 18844,
- 18845,
- 18846,
- 18847,
- 18848,
- 18849,
- 18850,
- 18851,
- 18852,
- 18853,
- 18854,
- 18855,
- 18856,
- 18857,
- 18858,
- 18859,
- 18860,
- 18861,
- 18862,
- 18863,
- 18864,
- 18865,
- 18866,
- 18867,
- 18868,
- 18869,
- 18870,
- 18871,
- 18872,
- 18873,
- 18874,
- 18875,
- 18876,
- 18877,
- 18878,
- 18879,
- 18880,
- 18881,
- 18882,
- 18883,
- 18884,
- 18885,
- 18886,
- 18887,
- 18888,
- 18889,
- 18890,
- 18891,
- 18892,
- 18893,
- 18894,
- 18895,
- 18896,
- 18897,
- 18898,
- 18899,
- 18900,
- 18901,
- 18902,
- 18903,
- 18904,
- 18905,
- 18906,
- 18907,
- 18908,
- 18909,
- 18910,
- 18911,
- 18912,
- 18913,
- 18914,
- 18915,
- 18916,
- 18917,
- 18918,
- 18919,
- 18920,
- 18921,
- 18922,
- 18923,
- 18924,
- 18925,
- 18926,
- 18927,
- 18928,
- 18929,
- 18930,
- 18931,
- 18932,
- 18933,
- 18934,
- 18935,
- 18936,
- 18937,
- 18938,
- 18939,
- 18940,
- 18941,
- 18942,
- 18943,
- 18944,
- 18945,
- 18946,
- 18947,
- 18948,
- 18949,
- 18950,
- 18951,
- 18952,
- 18953,
- 18954,
- 18955,
- 18956,
- 18957,
- 18958,
- 18959,
- 18960,
- 18961,
- 18962,
- 18963,
- 18964,
- 18965,
- 18966,
- 18967,
- 18968,
- 18969,
- 18970,
- 18971,
- 18972,
- 18973,
- 18974,
- 18975,
- 18976,
- 18977,
- 18978,
- 18979,
- 18980,
- 18981,
- 18982,
- 18983,
- 18984,
- 18985,
- 18986,
- 18987,
- 18988,
- 18989,
- 18990,
- 18991,
- 18992,
- 18993,
- 18994,
- 18995,
- 18996,
- 18997,
- 18998,
- 18999,
- 19000,
- 19001,
- 19002,
- 19003,
- 19004,
- 19005,
- 19006,
- 19007,
- 19008,
- 19009,
- 19010,
- 19011,
- 19012,
- 19013,
- 19014,
- 19015,
- 19016,
- 19017,
- 19018,
- 19019,
- 19020,
- 19021,
- 19022,
- 19023,
- 19024,
- 19025,
- 19026,
- 19027,
- 19028,
- 19029,
- 19030,
- 19031,
- 19032,
- 19033,
- 19034,
- 19035,
- 19036,
- 19037,
- 19038,
- 19039,
- 19040,
- 19041,
- 19042,
- 19043,
- 19044,
- 19045,
- 19046,
- 19047,
- 19048,
- 19049,
- 19050,
- 19051,
- 19052,
- 19053,
- 19054,
- 19055,
- 19056,
- 19057,
- 19058,
- 19059,
- 19060,
- 19061,
- 19062,
- 19063,
- 19064,
- 19065,
- 19066,
- 19067,
- 19068,
- 19069,
- 19070,
- 19071,
- 19072,
- 19073,
- 19074,
- 19075,
- 19076,
- 19077,
- 19078,
- 19079,
- 19080,
- 19081,
- 19082,
- 19083,
- 19084,
- 19085,
- 19086,
- 19087,
- 19088,
- 19089,
- 19090,
- 19091,
- 19092,
- 19093,
- 19094,
- 19095,
- 19096,
- 19097,
- 19098,
- 19099,
- 19100,
- 19101,
- 19102,
- 19103,
- 19104,
- 19105,
- 19106,
- 19107,
- 19108,
- 19109,
- 19110,
- 19111,
- 19112,
- 19113,
- 19114,
- 19115,
- 19116,
- 19117,
- 19118,
- 19119,
- 19120,
- 19121,
- 19122,
- 19123,
- 19124,
- 19125,
- 19126,
- 19127,
- 19128,
- 19129,
- 19130,
- 19131,
- 19132,
- 19133,
- 19134,
- 19135,
- 19136,
- 19137,
- 19138,
- 19139,
- 19140,
- 19141,
- 19142,
- 19143,
- 19144,
- 19145,
- 19146,
- 19147,
- 19148,
- 19149,
- 19150,
- 19151,
- 19152,
- 19153,
- 19154,
- 19155,
- 19156,
- 19157,
- 19158,
- 19159,
- 19160,
- 19161,
- 19162,
- 19163,
- 19164,
- 19165,
- 19166,
- 19167,
- 19168,
- 19169,
- 19170,
- 19171,
- 19172,
- 19173,
- 19174,
- 19175,
- 19176,
- 19177,
- 19178,
- 19179,
- 19180,
- 19181,
- 19182,
- 19183,
- 19184,
- 19185,
- 19186,
- 19187,
- 19188,
- 19189,
- 19190,
- 19191,
- 19192,
- 19193,
- 19194,
- 19195,
- 19196,
- 19197,
- 19198,
- 19199,
- 19200,
- 19201,
- 19202,
- 19203,
- 19204,
- 19205,
- 19206,
- 19207,
- 19208,
- 19209,
- 19210,
- 19211,
- 19212,
- 19213,
- 19214,
- 19215,
- 19216,
- 19217,
- 19218,
- 19219,
- 19220,
- 19221,
- 19222,
- 19223,
- 19224,
- 19225,
- 19226,
- 19227,
- 19228,
- 19229,
- 19230,
- 19231,
- 19232,
- 19233,
- 19234,
- 19235,
- 19236,
- 19237,
- 19238,
- 19239,
- 19240,
- 19241,
- 19242,
- 19243,
- 19244,
- 19245,
- 19246,
- 19247,
- 19248,
- 19249,
- 19250,
- 19251,
- 19252,
- 19253,
- 19254,
- 19255,
- 19256,
- 19257,
- 19258,
- 19259,
- 19260,
- 19261,
- 19262,
- 19263,
- 19264,
- 19265,
- 19266,
- 19267,
- 19268,
- 19269,
- 19270,
- 19271,
- 19272,
- 19273,
- 19274,
- 19275,
- 19276,
- 19277,
- 19278,
- 19279,
- 19280,
- 19281,
- 19282,
- 19283,
- 19284,
- 19285,
- 19286,
- 19287,
- 19288,
- 19289,
- 19290,
- 19291,
- 19292,
- 19293,
- 19294,
- 19295,
- 19296,
- 19297,
- 19298,
- 19299,
- 19300,
- 19301,
- 19302,
- 19303,
- 19304,
- 19305,
- 19306,
- 19307,
- 19308,
- 19309,
- 19310,
- 19311,
- 19312,
- 19313,
- 19314,
- 19315,
- 19316,
- 19317,
- 19318,
- 19319,
- 19320,
- 19321,
- 19322,
- 19323,
- 19324,
- 19325,
- 19326,
- 19327,
- 19328,
- 19329,
- 19330,
- 19331,
- 19332,
- 19333,
- 19334,
- 19335,
- 19336,
- 19337,
- 19338,
- 19339,
- 19340,
- 19341,
- 19342,
- 19343,
- 19344,
- 19345,
- 19346,
- 19347,
- 19348,
- 19349,
- 19350,
- 19351,
- 19352,
- 19353,
- 19354,
- 19355,
- 19356,
- 19357,
- 19358,
- 19359,
- 19360,
- 19361,
- 19362,
- 19363,
- 19364,
- 19365,
- 19366,
- 19367,
- 19368,
- 19369,
- 19370,
- 19371,
- 19372,
- 19373,
- 19374,
- 19375,
- 19376,
- 19377,
- 19378,
- 19379,
- 19380,
- 19381,
- 19382,
- 19383,
- 19384,
- 19385,
- 19386,
- 19387,
- 19388,
- 19389,
- 19390,
- 19391,
- 19392,
- 19393,
- 19394,
- 19395,
- 19396,
- 19397,
- 19398,
- 19399,
- 19400,
- 19401,
- 19402,
- 19403,
- 19404,
- 19405,
- 19406,
- 19407,
- 19408,
- 19409,
- 19410,
- 19411,
- 19412,
- 19413,
- 19414,
- 19415,
- 19416,
- 19417,
- 19418,
- 19419,
- 19420,
- 19421,
- 19422,
- 19423,
- 19424,
- 19425,
- 19426,
- 19427,
- 19428,
- 19429,
- 19430,
- 19431,
- 19432,
- 19433,
- 19434,
- 19435,
- 19436,
- 19437,
- 19438,
- 19439,
- 19440,
- 19441,
- 19442,
- 19443,
- 19444,
- 19445,
- 19446,
- 19447,
- 19448,
- 19449,
- 19450,
- 19451,
- 19452,
- 19453,
- 19454,
- 19455,
- 19456,
- 19457,
- 19458,
- 19459,
- 19460,
- 19461,
- 19462,
- 19463,
- 19464,
- 19465,
- 19466,
- 19467,
- 19468,
- 19469,
- 19470,
- 19471,
- 19472,
- 19473,
- 19474,
- 19475,
- 19476,
- 19477,
- 19478,
- 19479,
- 19480,
- 19481,
- 19482,
- 19483,
- 19484,
- 19485,
- 19486,
- 19487,
- 19488,
- 19489,
- 19490,
- 19491,
- 19492,
- 19493,
- 19494,
- 19495,
- 19496,
- 19497,
- 19498,
- 19499,
- 19500,
- 19501,
- 19502,
- 19503,
- 19504,
- 19505,
- 19506,
- 19507,
- 19508,
- 19509,
- 19510,
- 19511,
- 19512,
- 19513,
- 19514,
- 19515,
- 19516,
- 19517,
- 19518,
- 19519,
- 19520,
- 19521,
- 19522,
- 19523,
- 19524,
- 19525,
- 19526,
- 19527,
- 19528,
- 19529,
- 19530,
- 19531,
- 19532,
- 19533,
- 19534,
- 19535,
- 19536,
- 19537,
- 19538,
- 19539,
- 19540,
- 19541,
- 19542,
- 19543,
- 19544,
- 19545,
- 19546,
- 19547,
- 19548,
- 19549,
- 19550,
- 19551,
- 19552,
- 19553,
- 19554,
- 19555,
- 19556,
- 19557,
- 19558,
- 19559,
- 19560,
- 19561,
- 19562,
- 19563,
- 19564,
- 19565,
- 19566,
- 19567,
- 19568,
- 19569,
- 19570,
- 19571,
- 19572,
- 19573,
- 19574,
- 19575,
- 19576,
- 19577,
- 19578,
- 19579,
- 19580,
- 19581,
- 19582,
- 19583,
- 19584,
- 19585,
- 19586,
- 19587,
- 19588,
- 19589,
- 19590,
- 19591,
- 19592,
- 19593,
- 19594,
- 19595,
- 19596,
- 19597,
- 19598,
- 19599,
- 19600,
- 19601,
- 19602,
- 19603,
- 19604,
- 19605,
- 19606,
- 19607,
- 19608,
- 19609,
- 19610,
- 19611,
- 19612,
- 19613,
- 19614,
- 19615,
- 19616,
- 19617,
- 19618,
- 19619,
- 19620,
- 19621,
- 19622,
- 19623,
- 19624,
- 19625,
- 19626,
- 19627,
- 19628,
- 19629,
- 19630,
- 19631,
- 19632,
- 19633,
- 19634,
- 19635,
- 19636,
- 19637,
- 19638,
- 19639,
- 19640,
- 19641,
- 19642,
- 19643,
- 19644,
- 19645,
- 19646,
- 19647,
- 19648,
- 19649,
- 19650,
- 19651,
- 19652,
- 19653,
- 19654,
- 19655,
- 19656,
- 19657,
- 19658,
- 19659,
- 19660,
- 19661,
- 19662,
- 19663,
- 19664,
- 19665,
- 19666,
- 19667,
- 19668,
- 19669,
- 19670,
- 19671,
- 19672,
- 19673,
- 19674,
- 19675,
- 19676,
- 19677,
- 19678,
- 19679,
- 19680,
- 19681,
- 19682,
- 19683,
- 19684,
- 19685,
- 19686,
- 19687,
- 19688,
- 19689,
- 19690,
- 19691,
- 19692,
- 19693,
- 19694,
- 19695,
- 19696,
- 19697,
- 19698,
- 19699,
- 19700,
- 19701,
- 19702,
- 19703,
- 19704,
- 19705,
- 19706,
- 19707,
- 19708,
- 19709,
- 19710,
- 19711,
- 19712,
- 19713,
- 19714,
- 19715,
- 19716,
- 19717,
- 19718,
- 19719,
- 19720,
- 19721,
- 19722,
- 19723,
- 19724,
- 19725,
- 19726,
- 19727,
- 19728,
- 19729,
- 19730,
- 19731,
- 19732,
- 19733,
- 19734,
- 19735,
- 19736,
- 19737,
- 19738,
- 19739,
- 19740,
- 19741,
- 19742,
- 19743,
- 19744,
- 19745,
- 19746,
- 19747,
- 19748,
- 19749,
- 19750,
- 19751,
- 19752,
- 19753,
- 19754,
- 19755,
- 19756,
- 19757,
- 19758,
- 19759,
- 19760,
- 19761,
- 19762,
- 19763,
- 19764,
- 19765,
- 19766,
- 19767,
- 19768,
- 19769,
- 19770,
- 19771,
- 19772,
- 19773,
- 19774,
- 19775,
- 19776,
- 19777,
- 19778,
- 19779,
- 19780,
- 19781,
- 19782,
- 19783,
- 19784,
- 19785,
- 19786,
- 19787,
- 19788,
- 19789,
- 19790,
- 19791,
- 19792,
- 19793,
- 19794,
- 19795,
- 19796,
- 19797,
- 19798,
- 19799,
- 19800,
- 19801,
- 19802,
- 19803,
- 19804,
- 19805,
- 19806,
- 19807,
- 19808,
- 19809,
- 19810,
- 19811,
- 19812,
- 19813,
- 19814,
- 19815,
- 19816,
- 19817,
- 19818,
- 19819,
- 19820,
- 19821,
- 19822,
- 19823,
- 19824,
- 19825,
- 19826,
- 19827,
- 19828,
- 19829,
- 19830,
- 19831,
- 19832,
- 19833,
- 19834,
- 19835,
- 19836,
- 19837,
- 19838,
- 19839,
- 19840,
- 19841,
- 19842,
- 19843,
- 19844,
- 19845,
- 19846,
- 19847,
- 19848,
- 19849,
- 19850,
- 19851,
- 19852,
- 19853,
- 19854,
- 19855,
- 19856,
- 19857,
- 19858,
- 19859,
- 19860,
- 19861,
- 19862,
- 19863,
- 19864,
- 19865,
- 19866,
- 19867,
- 19868,
- 19869,
- 19870,
- 19871,
- 19872,
- 19873,
- 19874,
- 19875,
- 19876,
- 19877,
- 19878,
- 19879,
- 19880,
- 19881,
- 19882,
- 19883,
- 19884,
- 19885,
- 19886,
- 19887,
- 19888,
- 19889,
- 19890,
- 19891,
- 19892,
- 19893,
- 19968,
- 19969,
- 19970,
- 19971,
- 19972,
- 19973,
- 19974,
- 19975,
- 19976,
- 19977,
- 19978,
- 19979,
- 19980,
- 19981,
- 19982,
- 19983,
- 19984,
- 19985,
- 19986,
- 19987,
- 19988,
- 19989,
- 19990,
- 19991,
- 19992,
- 19993,
- 19994,
- 19995,
- 19996,
- 19997,
- 19998,
- 19999,
- 20000,
- 20001,
- 20002,
- 20003,
- 20004,
- 20005,
- 20006,
- 20007,
- 20008,
- 20009,
- 20010,
- 20011,
- 20012,
- 20013,
- 20014,
- 20015,
- 20016,
- 20017,
- 20018,
- 20019,
- 20020,
- 20021,
- 20022,
- 20023,
- 20024,
- 20025,
- 20026,
- 20027,
- 20028,
- 20029,
- 20030,
- 20031,
- 20032,
- 20033,
- 20034,
- 20035,
- 20036,
- 20037,
- 20038,
- 20039,
- 20040,
- 20041,
- 20042,
- 20043,
- 20044,
- 20045,
- 20046,
- 20047,
- 20048,
- 20049,
- 20050,
- 20051,
- 20052,
- 20053,
- 20054,
- 20055,
- 20056,
- 20057,
- 20058,
- 20059,
- 20060,
- 20061,
- 20062,
- 20063,
- 20064,
- 20065,
- 20066,
- 20067,
- 20068,
- 20069,
- 20070,
- 20071,
- 20072,
- 20073,
- 20074,
- 20075,
- 20076,
- 20077,
- 20078,
- 20079,
- 20080,
- 20081,
- 20082,
- 20083,
- 20084,
- 20085,
- 20086,
- 20087,
- 20088,
- 20089,
- 20090,
- 20091,
- 20092,
- 20093,
- 20094,
- 20095,
- 20096,
- 20097,
- 20098,
- 20099,
- 20100,
- 20101,
- 20102,
- 20103,
- 20104,
- 20105,
- 20106,
- 20107,
- 20108,
- 20109,
- 20110,
- 20111,
- 20112,
- 20113,
- 20114,
- 20115,
- 20116,
- 20117,
- 20118,
- 20119,
- 20120,
- 20121,
- 20122,
- 20123,
- 20124,
- 20125,
- 20126,
- 20127,
- 20128,
- 20129,
- 20130,
- 20131,
- 20132,
- 20133,
- 20134,
- 20135,
- 20136,
- 20137,
- 20138,
- 20139,
- 20140,
- 20141,
- 20142,
- 20143,
- 20144,
- 20145,
- 20146,
- 20147,
- 20148,
- 20149,
- 20150,
- 20151,
- 20152,
- 20153,
- 20154,
- 20155,
- 20156,
- 20157,
- 20158,
- 20159,
- 20160,
- 20161,
- 20162,
- 20163,
- 20164,
- 20165,
- 20166,
- 20167,
- 20168,
- 20169,
- 20170,
- 20171,
- 20172,
- 20173,
- 20174,
- 20175,
- 20176,
- 20177,
- 20178,
- 20179,
- 20180,
- 20181,
- 20182,
- 20183,
- 20184,
- 20185,
- 20186,
- 20187,
- 20188,
- 20189,
- 20190,
- 20191,
- 20192,
- 20193,
- 20194,
- 20195,
- 20196,
- 20197,
- 20198,
- 20199,
- 20200,
- 20201,
- 20202,
- 20203,
- 20204,
- 20205,
- 20206,
- 20207,
- 20208,
- 20209,
- 20210,
- 20211,
- 20212,
- 20213,
- 20214,
- 20215,
- 20216,
- 20217,
- 20218,
- 20219,
- 20220,
- 20221,
- 20222,
- 20223,
- 20224,
- 20225,
- 20226,
- 20227,
- 20228,
- 20229,
- 20230,
- 20231,
- 20232,
- 20233,
- 20234,
- 20235,
- 20236,
- 20237,
- 20238,
- 20239,
- 20240,
- 20241,
- 20242,
- 20243,
- 20244,
- 20245,
- 20246,
- 20247,
- 20248,
- 20249,
- 20250,
- 20251,
- 20252,
- 20253,
- 20254,
- 20255,
- 20256,
- 20257,
- 20258,
- 20259,
- 20260,
- 20261,
- 20262,
- 20263,
- 20264,
- 20265,
- 20266,
- 20267,
- 20268,
- 20269,
- 20270,
- 20271,
- 20272,
- 20273,
- 20274,
- 20275,
- 20276,
- 20277,
- 20278,
- 20279,
- 20280,
- 20281,
- 20282,
- 20283,
- 20284,
- 20285,
- 20286,
- 20287,
- 20288,
- 20289,
- 20290,
- 20291,
- 20292,
- 20293,
- 20294,
- 20295,
- 20296,
- 20297,
- 20298,
- 20299,
- 20300,
- 20301,
- 20302,
- 20303,
- 20304,
- 20305,
- 20306,
- 20307,
- 20308,
- 20309,
- 20310,
- 20311,
- 20312,
- 20313,
- 20314,
- 20315,
- 20316,
- 20317,
- 20318,
- 20319,
- 20320,
- 20321,
- 20322,
- 20323,
- 20324,
- 20325,
- 20326,
- 20327,
- 20328,
- 20329,
- 20330,
- 20331,
- 20332,
- 20333,
- 20334,
- 20335,
- 20336,
- 20337,
- 20338,
- 20339,
- 20340,
- 20341,
- 20342,
- 20343,
- 20344,
- 20345,
- 20346,
- 20347,
- 20348,
- 20349,
- 20350,
- 20351,
- 20352,
- 20353,
- 20354,
- 20355,
- 20356,
- 20357,
- 20358,
- 20359,
- 20360,
- 20361,
- 20362,
- 20363,
- 20364,
- 20365,
- 20366,
- 20367,
- 20368,
- 20369,
- 20370,
- 20371,
- 20372,
- 20373,
- 20374,
- 20375,
- 20376,
- 20377,
- 20378,
- 20379,
- 20380,
- 20381,
- 20382,
- 20383,
- 20384,
- 20385,
- 20386,
- 20387,
- 20388,
- 20389,
- 20390,
- 20391,
- 20392,
- 20393,
- 20394,
- 20395,
- 20396,
- 20397,
- 20398,
- 20399,
- 20400,
- 20401,
- 20402,
- 20403,
- 20404,
- 20405,
- 20406,
- 20407,
- 20408,
- 20409,
- 20410,
- 20411,
- 20412,
- 20413,
- 20414,
- 20415,
- 20416,
- 20417,
- 20418,
- 20419,
- 20420,
- 20421,
- 20422,
- 20423,
- 20424,
- 20425,
- 20426,
- 20427,
- 20428,
- 20429,
- 20430,
- 20431,
- 20432,
- 20433,
- 20434,
- 20435,
- 20436,
- 20437,
- 20438,
- 20439,
- 20440,
- 20441,
- 20442,
- 20443,
- 20444,
- 20445,
- 20446,
- 20447,
- 20448,
- 20449,
- 20450,
- 20451,
- 20452,
- 20453,
- 20454,
- 20455,
- 20456,
- 20457,
- 20458,
- 20459,
- 20460,
- 20461,
- 20462,
- 20463,
- 20464,
- 20465,
- 20466,
- 20467,
- 20468,
- 20469,
- 20470,
- 20471,
- 20472,
- 20473,
- 20474,
- 20475,
- 20476,
- 20477,
- 20478,
- 20479,
- 20480,
- 20481,
- 20482,
- 20483,
- 20484,
- 20485,
- 20486,
- 20487,
- 20488,
- 20489,
- 20490,
- 20491,
- 20492,
- 20493,
- 20494,
- 20495,
- 20496,
- 20497,
- 20498,
- 20499,
- 20500,
- 20501,
- 20502,
- 20503,
- 20504,
- 20505,
- 20506,
- 20507,
- 20508,
- 20509,
- 20510,
- 20511,
- 20512,
- 20513,
- 20514,
- 20515,
- 20516,
- 20517,
- 20518,
- 20519,
- 20520,
- 20521,
- 20522,
- 20523,
- 20524,
- 20525,
- 20526,
- 20527,
- 20528,
- 20529,
- 20530,
- 20531,
- 20532,
- 20533,
- 20534,
- 20535,
- 20536,
- 20537,
- 20538,
- 20539,
- 20540,
- 20541,
- 20542,
- 20543,
- 20544,
- 20545,
- 20546,
- 20547,
- 20548,
- 20549,
- 20550,
- 20551,
- 20552,
- 20553,
- 20554,
- 20555,
- 20556,
- 20557,
- 20558,
- 20559,
- 20560,
- 20561,
- 20562,
- 20563,
- 20564,
- 20565,
- 20566,
- 20567,
- 20568,
- 20569,
- 20570,
- 20571,
- 20572,
- 20573,
- 20574,
- 20575,
- 20576,
- 20577,
- 20578,
- 20579,
- 20580,
- 20581,
- 20582,
- 20583,
- 20584,
- 20585,
- 20586,
- 20587,
- 20588,
- 20589,
- 20590,
- 20591,
- 20592,
- 20593,
- 20594,
- 20595,
- 20596,
- 20597,
- 20598,
- 20599,
- 20600,
- 20601,
- 20602,
- 20603,
- 20604,
- 20605,
- 20606,
- 20607,
- 20608,
- 20609,
- 20610,
- 20611,
- 20612,
- 20613,
- 20614,
- 20615,
- 20616,
- 20617,
- 20618,
- 20619,
- 20620,
- 20621,
- 20622,
- 20623,
- 20624,
- 20625,
- 20626,
- 20627,
- 20628,
- 20629,
- 20630,
- 20631,
- 20632,
- 20633,
- 20634,
- 20635,
- 20636,
- 20637,
- 20638,
- 20639,
- 20640,
- 20641,
- 20642,
- 20643,
- 20644,
- 20645,
- 20646,
- 20647,
- 20648,
- 20649,
- 20650,
- 20651,
- 20652,
- 20653,
- 20654,
- 20655,
- 20656,
- 20657,
- 20658,
- 20659,
- 20660,
- 20661,
- 20662,
- 20663,
- 20664,
- 20665,
- 20666,
- 20667,
- 20668,
- 20669,
- 20670,
- 20671,
- 20672,
- 20673,
- 20674,
- 20675,
- 20676,
- 20677,
- 20678,
- 20679,
- 20680,
- 20681,
- 20682,
- 20683,
- 20684,
- 20685,
- 20686,
- 20687,
- 20688,
- 20689,
- 20690,
- 20691,
- 20692,
- 20693,
- 20694,
- 20695,
- 20696,
- 20697,
- 20698,
- 20699,
- 20700,
- 20701,
- 20702,
- 20703,
- 20704,
- 20705,
- 20706,
- 20707,
- 20708,
- 20709,
- 20710,
- 20711,
- 20712,
- 20713,
- 20714,
- 20715,
- 20716,
- 20717,
- 20718,
- 20719,
- 20720,
- 20721,
- 20722,
- 20723,
- 20724,
- 20725,
- 20726,
- 20727,
- 20728,
- 20729,
- 20730,
- 20731,
- 20732,
- 20733,
- 20734,
- 20735,
- 20736,
- 20737,
- 20738,
- 20739,
- 20740,
- 20741,
- 20742,
- 20743,
- 20744,
- 20745,
- 20746,
- 20747,
- 20748,
- 20749,
- 20750,
- 20751,
- 20752,
- 20753,
- 20754,
- 20755,
- 20756,
- 20757,
- 20758,
- 20759,
- 20760,
- 20761,
- 20762,
- 20763,
- 20764,
- 20765,
- 20766,
- 20767,
- 20768,
- 20769,
- 20770,
- 20771,
- 20772,
- 20773,
- 20774,
- 20775,
- 20776,
- 20777,
- 20778,
- 20779,
- 20780,
- 20781,
- 20782,
- 20783,
- 20784,
- 20785,
- 20786,
- 20787,
- 20788,
- 20789,
- 20790,
- 20791,
- 20792,
- 20793,
- 20794,
- 20795,
- 20796,
- 20797,
- 20798,
- 20799,
- 20800,
- 20801,
- 20802,
- 20803,
- 20804,
- 20805,
- 20806,
- 20807,
- 20808,
- 20809,
- 20810,
- 20811,
- 20812,
- 20813,
- 20814,
- 20815,
- 20816,
- 20817,
- 20818,
- 20819,
- 20820,
- 20821,
- 20822,
- 20823,
- 20824,
- 20825,
- 20826,
- 20827,
- 20828,
- 20829,
- 20830,
- 20831,
- 20832,
- 20833,
- 20834,
- 20835,
- 20836,
- 20837,
- 20838,
- 20839,
- 20840,
- 20841,
- 20842,
- 20843,
- 20844,
- 20845,
- 20846,
- 20847,
- 20848,
- 20849,
- 20850,
- 20851,
- 20852,
- 20853,
- 20854,
- 20855,
- 20856,
- 20857,
- 20858,
- 20859,
- 20860,
- 20861,
- 20862,
- 20863,
- 20864,
- 20865,
- 20866,
- 20867,
- 20868,
- 20869,
- 20870,
- 20871,
- 20872,
- 20873,
- 20874,
- 20875,
- 20876,
- 20877,
- 20878,
- 20879,
- 20880,
- 20881,
- 20882,
- 20883,
- 20884,
- 20885,
- 20886,
- 20887,
- 20888,
- 20889,
- 20890,
- 20891,
- 20892,
- 20893,
- 20894,
- 20895,
- 20896,
- 20897,
- 20898,
- 20899,
- 20900,
- 20901,
- 20902,
- 20903,
- 20904,
- 20905,
- 20906,
- 20907,
- 20908,
- 20909,
- 20910,
- 20911,
- 20912,
- 20913,
- 20914,
- 20915,
- 20916,
- 20917,
- 20918,
- 20919,
- 20920,
- 20921,
- 20922,
- 20923,
- 20924,
- 20925,
- 20926,
- 20927,
- 20928,
- 20929,
- 20930,
- 20931,
- 20932,
- 20933,
- 20934,
- 20935,
- 20936,
- 20937,
- 20938,
- 20939,
- 20940,
- 20941,
- 20942,
- 20943,
- 20944,
- 20945,
- 20946,
- 20947,
- 20948,
- 20949,
- 20950,
- 20951,
- 20952,
- 20953,
- 20954,
- 20955,
- 20956,
- 20957,
- 20958,
- 20959,
- 20960,
- 20961,
- 20962,
- 20963,
- 20964,
- 20965,
- 20966,
- 20967,
- 20968,
- 20969,
- 20970,
- 20971,
- 20972,
- 20973,
- 20974,
- 20975,
- 20976,
- 20977,
- 20978,
- 20979,
- 20980,
- 20981,
- 20982,
- 20983,
- 20984,
- 20985,
- 20986,
- 20987,
- 20988,
- 20989,
- 20990,
- 20991,
- 20992,
- 20993,
- 20994,
- 20995,
- 20996,
- 20997,
- 20998,
- 20999,
- 21000,
- 21001,
- 21002,
- 21003,
- 21004,
- 21005,
- 21006,
- 21007,
- 21008,
- 21009,
- 21010,
- 21011,
- 21012,
- 21013,
- 21014,
- 21015,
- 21016,
- 21017,
- 21018,
- 21019,
- 21020,
- 21021,
- 21022,
- 21023,
- 21024,
- 21025,
- 21026,
- 21027,
- 21028,
- 21029,
- 21030,
- 21031,
- 21032,
- 21033,
- 21034,
- 21035,
- 21036,
- 21037,
- 21038,
- 21039,
- 21040,
- 21041,
- 21042,
- 21043,
- 21044,
- 21045,
- 21046,
- 21047,
- 21048,
- 21049,
- 21050,
- 21051,
- 21052,
- 21053,
- 21054,
- 21055,
- 21056,
- 21057,
- 21058,
- 21059,
- 21060,
- 21061,
- 21062,
- 21063,
- 21064,
- 21065,
- 21066,
- 21067,
- 21068,
- 21069,
- 21070,
- 21071,
- 21072,
- 21073,
- 21074,
- 21075,
- 21076,
- 21077,
- 21078,
- 21079,
- 21080,
- 21081,
- 21082,
- 21083,
- 21084,
- 21085,
- 21086,
- 21087,
- 21088,
- 21089,
- 21090,
- 21091,
- 21092,
- 21093,
- 21094,
- 21095,
- 21096,
- 21097,
- 21098,
- 21099,
- 21100,
- 21101,
- 21102,
- 21103,
- 21104,
- 21105,
- 21106,
- 21107,
- 21108,
- 21109,
- 21110,
- 21111,
- 21112,
- 21113,
- 21114,
- 21115,
- 21116,
- 21117,
- 21118,
- 21119,
- 21120,
- 21121,
- 21122,
- 21123,
- 21124,
- 21125,
- 21126,
- 21127,
- 21128,
- 21129,
- 21130,
- 21131,
- 21132,
- 21133,
- 21134,
- 21135,
- 21136,
- 21137,
- 21138,
- 21139,
- 21140,
- 21141,
- 21142,
- 21143,
- 21144,
- 21145,
- 21146,
- 21147,
- 21148,
- 21149,
- 21150,
- 21151,
- 21152,
- 21153,
- 21154,
- 21155,
- 21156,
- 21157,
- 21158,
- 21159,
- 21160,
- 21161,
- 21162,
- 21163,
- 21164,
- 21165,
- 21166,
- 21167,
- 21168,
- 21169,
- 21170,
- 21171,
- 21172,
- 21173,
- 21174,
- 21175,
- 21176,
- 21177,
- 21178,
- 21179,
- 21180,
- 21181,
- 21182,
- 21183,
- 21184,
- 21185,
- 21186,
- 21187,
- 21188,
- 21189,
- 21190,
- 21191,
- 21192,
- 21193,
- 21194,
- 21195,
- 21196,
- 21197,
- 21198,
- 21199,
- 21200,
- 21201,
- 21202,
- 21203,
- 21204,
- 21205,
- 21206,
- 21207,
- 21208,
- 21209,
- 21210,
- 21211,
- 21212,
- 21213,
- 21214,
- 21215,
- 21216,
- 21217,
- 21218,
- 21219,
- 21220,
- 21221,
- 21222,
- 21223,
- 21224,
- 21225,
- 21226,
- 21227,
- 21228,
- 21229,
- 21230,
- 21231,
- 21232,
- 21233,
- 21234,
- 21235,
- 21236,
- 21237,
- 21238,
- 21239,
- 21240,
- 21241,
- 21242,
- 21243,
- 21244,
- 21245,
- 21246,
- 21247,
- 21248,
- 21249,
- 21250,
- 21251,
- 21252,
- 21253,
- 21254,
- 21255,
- 21256,
- 21257,
- 21258,
- 21259,
- 21260,
- 21261,
- 21262,
- 21263,
- 21264,
- 21265,
- 21266,
- 21267,
- 21268,
- 21269,
- 21270,
- 21271,
- 21272,
- 21273,
- 21274,
- 21275,
- 21276,
- 21277,
- 21278,
- 21279,
- 21280,
- 21281,
- 21282,
- 21283,
- 21284,
- 21285,
- 21286,
- 21287,
- 21288,
- 21289,
- 21290,
- 21291,
- 21292,
- 21293,
- 21294,
- 21295,
- 21296,
- 21297,
- 21298,
- 21299,
- 21300,
- 21301,
- 21302,
- 21303,
- 21304,
- 21305,
- 21306,
- 21307,
- 21308,
- 21309,
- 21310,
- 21311,
- 21312,
- 21313,
- 21314,
- 21315,
- 21316,
- 21317,
- 21318,
- 21319,
- 21320,
- 21321,
- 21322,
- 21323,
- 21324,
- 21325,
- 21326,
- 21327,
- 21328,
- 21329,
- 21330,
- 21331,
- 21332,
- 21333,
- 21334,
- 21335,
- 21336,
- 21337,
- 21338,
- 21339,
- 21340,
- 21341,
- 21342,
- 21343,
- 21344,
- 21345,
- 21346,
- 21347,
- 21348,
- 21349,
- 21350,
- 21351,
- 21352,
- 21353,
- 21354,
- 21355,
- 21356,
- 21357,
- 21358,
- 21359,
- 21360,
- 21361,
- 21362,
- 21363,
- 21364,
- 21365,
- 21366,
- 21367,
- 21368,
- 21369,
- 21370,
- 21371,
- 21372,
- 21373,
- 21374,
- 21375,
- 21376,
- 21377,
- 21378,
- 21379,
- 21380,
- 21381,
- 21382,
- 21383,
- 21384,
- 21385,
- 21386,
- 21387,
- 21388,
- 21389,
- 21390,
- 21391,
- 21392,
- 21393,
- 21394,
- 21395,
- 21396,
- 21397,
- 21398,
- 21399,
- 21400,
- 21401,
- 21402,
- 21403,
- 21404,
- 21405,
- 21406,
- 21407,
- 21408,
- 21409,
- 21410,
- 21411,
- 21412,
- 21413,
- 21414,
- 21415,
- 21416,
- 21417,
- 21418,
- 21419,
- 21420,
- 21421,
- 21422,
- 21423,
- 21424,
- 21425,
- 21426,
- 21427,
- 21428,
- 21429,
- 21430,
- 21431,
- 21432,
- 21433,
- 21434,
- 21435,
- 21436,
- 21437,
- 21438,
- 21439,
- 21440,
- 21441,
- 21442,
- 21443,
- 21444,
- 21445,
- 21446,
- 21447,
- 21448,
- 21449,
- 21450,
- 21451,
- 21452,
- 21453,
- 21454,
- 21455,
- 21456,
- 21457,
- 21458,
- 21459,
- 21460,
- 21461,
- 21462,
- 21463,
- 21464,
- 21465,
- 21466,
- 21467,
- 21468,
- 21469,
- 21470,
- 21471,
- 21472,
- 21473,
- 21474,
- 21475,
- 21476,
- 21477,
- 21478,
- 21479,
- 21480,
- 21481,
- 21482,
- 21483,
- 21484,
- 21485,
- 21486,
- 21487,
- 21488,
- 21489,
- 21490,
- 21491,
- 21492,
- 21493,
- 21494,
- 21495,
- 21496,
- 21497,
- 21498,
- 21499,
- 21500,
- 21501,
- 21502,
- 21503,
- 21504,
- 21505,
- 21506,
- 21507,
- 21508,
- 21509,
- 21510,
- 21511,
- 21512,
- 21513,
- 21514,
- 21515,
- 21516,
- 21517,
- 21518,
- 21519,
- 21520,
- 21521,
- 21522,
- 21523,
- 21524,
- 21525,
- 21526,
- 21527,
- 21528,
- 21529,
- 21530,
- 21531,
- 21532,
- 21533,
- 21534,
- 21535,
- 21536,
- 21537,
- 21538,
- 21539,
- 21540,
- 21541,
- 21542,
- 21543,
- 21544,
- 21545,
- 21546,
- 21547,
- 21548,
- 21549,
- 21550,
- 21551,
- 21552,
- 21553,
- 21554,
- 21555,
- 21556,
- 21557,
- 21558,
- 21559,
- 21560,
- 21561,
- 21562,
- 21563,
- 21564,
- 21565,
- 21566,
- 21567,
- 21568,
- 21569,
- 21570,
- 21571,
- 21572,
- 21573,
- 21574,
- 21575,
- 21576,
- 21577,
- 21578,
- 21579,
- 21580,
- 21581,
- 21582,
- 21583,
- 21584,
- 21585,
- 21586,
- 21587,
- 21588,
- 21589,
- 21590,
- 21591,
- 21592,
- 21593,
- 21594,
- 21595,
- 21596,
- 21597,
- 21598,
- 21599,
- 21600,
- 21601,
- 21602,
- 21603,
- 21604,
- 21605,
- 21606,
- 21607,
- 21608,
- 21609,
- 21610,
- 21611,
- 21612,
- 21613,
- 21614,
- 21615,
- 21616,
- 21617,
- 21618,
- 21619,
- 21620,
- 21621,
- 21622,
- 21623,
- 21624,
- 21625,
- 21626,
- 21627,
- 21628,
- 21629,
- 21630,
- 21631,
- 21632,
- 21633,
- 21634,
- 21635,
- 21636,
- 21637,
- 21638,
- 21639,
- 21640,
- 21641,
- 21642,
- 21643,
- 21644,
- 21645,
- 21646,
- 21647,
- 21648,
- 21649,
- 21650,
- 21651,
- 21652,
- 21653,
- 21654,
- 21655,
- 21656,
- 21657,
- 21658,
- 21659,
- 21660,
- 21661,
- 21662,
- 21663,
- 21664,
- 21665,
- 21666,
- 21667,
- 21668,
- 21669,
- 21670,
- 21671,
- 21672,
- 21673,
- 21674,
- 21675,
- 21676,
- 21677,
- 21678,
- 21679,
- 21680,
- 21681,
- 21682,
- 21683,
- 21684,
- 21685,
- 21686,
- 21687,
- 21688,
- 21689,
- 21690,
- 21691,
- 21692,
- 21693,
- 21694,
- 21695,
- 21696,
- 21697,
- 21698,
- 21699,
- 21700,
- 21701,
- 21702,
- 21703,
- 21704,
- 21705,
- 21706,
- 21707,
- 21708,
- 21709,
- 21710,
- 21711,
- 21712,
- 21713,
- 21714,
- 21715,
- 21716,
- 21717,
- 21718,
- 21719,
- 21720,
- 21721,
- 21722,
- 21723,
- 21724,
- 21725,
- 21726,
- 21727,
- 21728,
- 21729,
- 21730,
- 21731,
- 21732,
- 21733,
- 21734,
- 21735,
- 21736,
- 21737,
- 21738,
- 21739,
- 21740,
- 21741,
- 21742,
- 21743,
- 21744,
- 21745,
- 21746,
- 21747,
- 21748,
- 21749,
- 21750,
- 21751,
- 21752,
- 21753,
- 21754,
- 21755,
- 21756,
- 21757,
- 21758,
- 21759,
- 21760,
- 21761,
- 21762,
- 21763,
- 21764,
- 21765,
- 21766,
- 21767,
- 21768,
- 21769,
- 21770,
- 21771,
- 21772,
- 21773,
- 21774,
- 21775,
- 21776,
- 21777,
- 21778,
- 21779,
- 21780,
- 21781,
- 21782,
- 21783,
- 21784,
- 21785,
- 21786,
- 21787,
- 21788,
- 21789,
- 21790,
- 21791,
- 21792,
- 21793,
- 21794,
- 21795,
- 21796,
- 21797,
- 21798,
- 21799,
- 21800,
- 21801,
- 21802,
- 21803,
- 21804,
- 21805,
- 21806,
- 21807,
- 21808,
- 21809,
- 21810,
- 21811,
- 21812,
- 21813,
- 21814,
- 21815,
- 21816,
- 21817,
- 21818,
- 21819,
- 21820,
- 21821,
- 21822,
- 21823,
- 21824,
- 21825,
- 21826,
- 21827,
- 21828,
- 21829,
- 21830,
- 21831,
- 21832,
- 21833,
- 21834,
- 21835,
- 21836,
- 21837,
- 21838,
- 21839,
- 21840,
- 21841,
- 21842,
- 21843,
- 21844,
- 21845,
- 21846,
- 21847,
- 21848,
- 21849,
- 21850,
- 21851,
- 21852,
- 21853,
- 21854,
- 21855,
- 21856,
- 21857,
- 21858,
- 21859,
- 21860,
- 21861,
- 21862,
- 21863,
- 21864,
- 21865,
- 21866,
- 21867,
- 21868,
- 21869,
- 21870,
- 21871,
- 21872,
- 21873,
- 21874,
- 21875,
- 21876,
- 21877,
- 21878,
- 21879,
- 21880,
- 21881,
- 21882,
- 21883,
- 21884,
- 21885,
- 21886,
- 21887,
- 21888,
- 21889,
- 21890,
- 21891,
- 21892,
- 21893,
- 21894,
- 21895,
- 21896,
- 21897,
- 21898,
- 21899,
- 21900,
- 21901,
- 21902,
- 21903,
- 21904,
- 21905,
- 21906,
- 21907,
- 21908,
- 21909,
- 21910,
- 21911,
- 21912,
- 21913,
- 21914,
- 21915,
- 21916,
- 21917,
- 21918,
- 21919,
- 21920,
- 21921,
- 21922,
- 21923,
- 21924,
- 21925,
- 21926,
- 21927,
- 21928,
- 21929,
- 21930,
- 21931,
- 21932,
- 21933,
- 21934,
- 21935,
- 21936,
- 21937,
- 21938,
- 21939,
- 21940,
- 21941,
- 21942,
- 21943,
- 21944,
- 21945,
- 21946,
- 21947,
- 21948,
- 21949,
- 21950,
- 21951,
- 21952,
- 21953,
- 21954,
- 21955,
- 21956,
- 21957,
- 21958,
- 21959,
- 21960,
- 21961,
- 21962,
- 21963,
- 21964,
- 21965,
- 21966,
- 21967,
- 21968,
- 21969,
- 21970,
- 21971,
- 21972,
- 21973,
- 21974,
- 21975,
- 21976,
- 21977,
- 21978,
- 21979,
- 21980,
- 21981,
- 21982,
- 21983,
- 21984,
- 21985,
- 21986,
- 21987,
- 21988,
- 21989,
- 21990,
- 21991,
- 21992,
- 21993,
- 21994,
- 21995,
- 21996,
- 21997,
- 21998,
- 21999,
- 22000,
- 22001,
- 22002,
- 22003,
- 22004,
- 22005,
- 22006,
- 22007,
- 22008,
- 22009,
- 22010,
- 22011,
- 22012,
- 22013,
- 22014,
- 22015,
- 22016,
- 22017,
- 22018,
- 22019,
- 22020,
- 22021,
- 22022,
- 22023,
- 22024,
- 22025,
- 22026,
- 22027,
- 22028,
- 22029,
- 22030,
- 22031,
- 22032,
- 22033,
- 22034,
- 22035,
- 22036,
- 22037,
- 22038,
- 22039,
- 22040,
- 22041,
- 22042,
- 22043,
- 22044,
- 22045,
- 22046,
- 22047,
- 22048,
- 22049,
- 22050,
- 22051,
- 22052,
- 22053,
- 22054,
- 22055,
- 22056,
- 22057,
- 22058,
- 22059,
- 22060,
- 22061,
- 22062,
- 22063,
- 22064,
- 22065,
- 22066,
- 22067,
- 22068,
- 22069,
- 22070,
- 22071,
- 22072,
- 22073,
- 22074,
- 22075,
- 22076,
- 22077,
- 22078,
- 22079,
- 22080,
- 22081,
- 22082,
- 22083,
- 22084,
- 22085,
- 22086,
- 22087,
- 22088,
- 22089,
- 22090,
- 22091,
- 22092,
- 22093,
- 22094,
- 22095,
- 22096,
- 22097,
- 22098,
- 22099,
- 22100,
- 22101,
- 22102,
- 22103,
- 22104,
- 22105,
- 22106,
- 22107,
- 22108,
- 22109,
- 22110,
- 22111,
- 22112,
- 22113,
- 22114,
- 22115,
- 22116,
- 22117,
- 22118,
- 22119,
- 22120,
- 22121,
- 22122,
- 22123,
- 22124,
- 22125,
- 22126,
- 22127,
- 22128,
- 22129,
- 22130,
- 22131,
- 22132,
- 22133,
- 22134,
- 22135,
- 22136,
- 22137,
- 22138,
- 22139,
- 22140,
- 22141,
- 22142,
- 22143,
- 22144,
- 22145,
- 22146,
- 22147,
- 22148,
- 22149,
- 22150,
- 22151,
- 22152,
- 22153,
- 22154,
- 22155,
- 22156,
- 22157,
- 22158,
- 22159,
- 22160,
- 22161,
- 22162,
- 22163,
- 22164,
- 22165,
- 22166,
- 22167,
- 22168,
- 22169,
- 22170,
- 22171,
- 22172,
- 22173,
- 22174,
- 22175,
- 22176,
- 22177,
- 22178,
- 22179,
- 22180,
- 22181,
- 22182,
- 22183,
- 22184,
- 22185,
- 22186,
- 22187,
- 22188,
- 22189,
- 22190,
- 22191,
- 22192,
- 22193,
- 22194,
- 22195,
- 22196,
- 22197,
- 22198,
- 22199,
- 22200,
- 22201,
- 22202,
- 22203,
- 22204,
- 22205,
- 22206,
- 22207,
- 22208,
- 22209,
- 22210,
- 22211,
- 22212,
- 22213,
- 22214,
- 22215,
- 22216,
- 22217,
- 22218,
- 22219,
- 22220,
- 22221,
- 22222,
- 22223,
- 22224,
- 22225,
- 22226,
- 22227,
- 22228,
- 22229,
- 22230,
- 22231,
- 22232,
- 22233,
- 22234,
- 22235,
- 22236,
- 22237,
- 22238,
- 22239,
- 22240,
- 22241,
- 22242,
- 22243,
- 22244,
- 22245,
- 22246,
- 22247,
- 22248,
- 22249,
- 22250,
- 22251,
- 22252,
- 22253,
- 22254,
- 22255,
- 22256,
- 22257,
- 22258,
- 22259,
- 22260,
- 22261,
- 22262,
- 22263,
- 22264,
- 22265,
- 22266,
- 22267,
- 22268,
- 22269,
- 22270,
- 22271,
- 22272,
- 22273,
- 22274,
- 22275,
- 22276,
- 22277,
- 22278,
- 22279,
- 22280,
- 22281,
- 22282,
- 22283,
- 22284,
- 22285,
- 22286,
- 22287,
- 22288,
- 22289,
- 22290,
- 22291,
- 22292,
- 22293,
- 22294,
- 22295,
- 22296,
- 22297,
- 22298,
- 22299,
- 22300,
- 22301,
- 22302,
- 22303,
- 22304,
- 22305,
- 22306,
- 22307,
- 22308,
- 22309,
- 22310,
- 22311,
- 22312,
- 22313,
- 22314,
- 22315,
- 22316,
- 22317,
- 22318,
- 22319,
- 22320,
- 22321,
- 22322,
- 22323,
- 22324,
- 22325,
- 22326,
- 22327,
- 22328,
- 22329,
- 22330,
- 22331,
- 22332,
- 22333,
- 22334,
- 22335,
- 22336,
- 22337,
- 22338,
- 22339,
- 22340,
- 22341,
- 22342,
- 22343,
- 22344,
- 22345,
- 22346,
- 22347,
- 22348,
- 22349,
- 22350,
- 22351,
- 22352,
- 22353,
- 22354,
- 22355,
- 22356,
- 22357,
- 22358,
- 22359,
- 22360,
- 22361,
- 22362,
- 22363,
- 22364,
- 22365,
- 22366,
- 22367,
- 22368,
- 22369,
- 22370,
- 22371,
- 22372,
- 22373,
- 22374,
- 22375,
- 22376,
- 22377,
- 22378,
- 22379,
- 22380,
- 22381,
- 22382,
- 22383,
- 22384,
- 22385,
- 22386,
- 22387,
- 22388,
- 22389,
- 22390,
- 22391,
- 22392,
- 22393,
- 22394,
- 22395,
- 22396,
- 22397,
- 22398,
- 22399,
- 22400,
- 22401,
- 22402,
- 22403,
- 22404,
- 22405,
- 22406,
- 22407,
- 22408,
- 22409,
- 22410,
- 22411,
- 22412,
- 22413,
- 22414,
- 22415,
- 22416,
- 22417,
- 22418,
- 22419,
- 22420,
- 22421,
- 22422,
- 22423,
- 22424,
- 22425,
- 22426,
- 22427,
- 22428,
- 22429,
- 22430,
- 22431,
- 22432,
- 22433,
- 22434,
- 22435,
- 22436,
- 22437,
- 22438,
- 22439,
- 22440,
- 22441,
- 22442,
- 22443,
- 22444,
- 22445,
- 22446,
- 22447,
- 22448,
- 22449,
- 22450,
- 22451,
- 22452,
- 22453,
- 22454,
- 22455,
- 22456,
- 22457,
- 22458,
- 22459,
- 22460,
- 22461,
- 22462,
- 22463,
- 22464,
- 22465,
- 22466,
- 22467,
- 22468,
- 22469,
- 22470,
- 22471,
- 22472,
- 22473,
- 22474,
- 22475,
- 22476,
- 22477,
- 22478,
- 22479,
- 22480,
- 22481,
- 22482,
- 22483,
- 22484,
- 22485,
- 22486,
- 22487,
- 22488,
- 22489,
- 22490,
- 22491,
- 22492,
- 22493,
- 22494,
- 22495,
- 22496,
- 22497,
- 22498,
- 22499,
- 22500,
- 22501,
- 22502,
- 22503,
- 22504,
- 22505,
- 22506,
- 22507,
- 22508,
- 22509,
- 22510,
- 22511,
- 22512,
- 22513,
- 22514,
- 22515,
- 22516,
- 22517,
- 22518,
- 22519,
- 22520,
- 22521,
- 22522,
- 22523,
- 22524,
- 22525,
- 22526,
- 22527,
- 22528,
- 22529,
- 22530,
- 22531,
- 22532,
- 22533,
- 22534,
- 22535,
- 22536,
- 22537,
- 22538,
- 22539,
- 22540,
- 22541,
- 22542,
- 22543,
- 22544,
- 22545,
- 22546,
- 22547,
- 22548,
- 22549,
- 22550,
- 22551,
- 22552,
- 22553,
- 22554,
- 22555,
- 22556,
- 22557,
- 22558,
- 22559,
- 22560,
- 22561,
- 22562,
- 22563,
- 22564,
- 22565,
- 22566,
- 22567,
- 22568,
- 22569,
- 22570,
- 22571,
- 22572,
- 22573,
- 22574,
- 22575,
- 22576,
- 22577,
- 22578,
- 22579,
- 22580,
- 22581,
- 22582,
- 22583,
- 22584,
- 22585,
- 22586,
- 22587,
- 22588,
- 22589,
- 22590,
- 22591,
- 22592,
- 22593,
- 22594,
- 22595,
- 22596,
- 22597,
- 22598,
- 22599,
- 22600,
- 22601,
- 22602,
- 22603,
- 22604,
- 22605,
- 22606,
- 22607,
- 22608,
- 22609,
- 22610,
- 22611,
- 22612,
- 22613,
- 22614,
- 22615,
- 22616,
- 22617,
- 22618,
- 22619,
- 22620,
- 22621,
- 22622,
- 22623,
- 22624,
- 22625,
- 22626,
- 22627,
- 22628,
- 22629,
- 22630,
- 22631,
- 22632,
- 22633,
- 22634,
- 22635,
- 22636,
- 22637,
- 22638,
- 22639,
- 22640,
- 22641,
- 22642,
- 22643,
- 22644,
- 22645,
- 22646,
- 22647,
- 22648,
- 22649,
- 22650,
- 22651,
- 22652,
- 22653,
- 22654,
- 22655,
- 22656,
- 22657,
- 22658,
- 22659,
- 22660,
- 22661,
- 22662,
- 22663,
- 22664,
- 22665,
- 22666,
- 22667,
- 22668,
- 22669,
- 22670,
- 22671,
- 22672,
- 22673,
- 22674,
- 22675,
- 22676,
- 22677,
- 22678,
- 22679,
- 22680,
- 22681,
- 22682,
- 22683,
- 22684,
- 22685,
- 22686,
- 22687,
- 22688,
- 22689,
- 22690,
- 22691,
- 22692,
- 22693,
- 22694,
- 22695,
- 22696,
- 22697,
- 22698,
- 22699,
- 22700,
- 22701,
- 22702,
- 22703,
- 22704,
- 22705,
- 22706,
- 22707,
- 22708,
- 22709,
- 22710,
- 22711,
- 22712,
- 22713,
- 22714,
- 22715,
- 22716,
- 22717,
- 22718,
- 22719,
- 22720,
- 22721,
- 22722,
- 22723,
- 22724,
- 22725,
- 22726,
- 22727,
- 22728,
- 22729,
- 22730,
- 22731,
- 22732,
- 22733,
- 22734,
- 22735,
- 22736,
- 22737,
- 22738,
- 22739,
- 22740,
- 22741,
- 22742,
- 22743,
- 22744,
- 22745,
- 22746,
- 22747,
- 22748,
- 22749,
- 22750,
- 22751,
- 22752,
- 22753,
- 22754,
- 22755,
- 22756,
- 22757,
- 22758,
- 22759,
- 22760,
- 22761,
- 22762,
- 22763,
- 22764,
- 22765,
- 22766,
- 22767,
- 22768,
- 22769,
- 22770,
- 22771,
- 22772,
- 22773,
- 22774,
- 22775,
- 22776,
- 22777,
- 22778,
- 22779,
- 22780,
- 22781,
- 22782,
- 22783,
- 22784,
- 22785,
- 22786,
- 22787,
- 22788,
- 22789,
- 22790,
- 22791,
- 22792,
- 22793,
- 22794,
- 22795,
- 22796,
- 22797,
- 22798,
- 22799,
- 22800,
- 22801,
- 22802,
- 22803,
- 22804,
- 22805,
- 22806,
- 22807,
- 22808,
- 22809,
- 22810,
- 22811,
- 22812,
- 22813,
- 22814,
- 22815,
- 22816,
- 22817,
- 22818,
- 22819,
- 22820,
- 22821,
- 22822,
- 22823,
- 22824,
- 22825,
- 22826,
- 22827,
- 22828,
- 22829,
- 22830,
- 22831,
- 22832,
- 22833,
- 22834,
- 22835,
- 22836,
- 22837,
- 22838,
- 22839,
- 22840,
- 22841,
- 22842,
- 22843,
- 22844,
- 22845,
- 22846,
- 22847,
- 22848,
- 22849,
- 22850,
- 22851,
- 22852,
- 22853,
- 22854,
- 22855,
- 22856,
- 22857,
- 22858,
- 22859,
- 22860,
- 22861,
- 22862,
- 22863,
- 22864,
- 22865,
- 22866,
- 22867,
- 22868,
- 22869,
- 22870,
- 22871,
- 22872,
- 22873,
- 22874,
- 22875,
- 22876,
- 22877,
- 22878,
- 22879,
- 22880,
- 22881,
- 22882,
- 22883,
- 22884,
- 22885,
- 22886,
- 22887,
- 22888,
- 22889,
- 22890,
- 22891,
- 22892,
- 22893,
- 22894,
- 22895,
- 22896,
- 22897,
- 22898,
- 22899,
- 22900,
- 22901,
- 22902,
- 22903,
- 22904,
- 22905,
- 22906,
- 22907,
- 22908,
- 22909,
- 22910,
- 22911,
- 22912,
- 22913,
- 22914,
- 22915,
- 22916,
- 22917,
- 22918,
- 22919,
- 22920,
- 22921,
- 22922,
- 22923,
- 22924,
- 22925,
- 22926,
- 22927,
- 22928,
- 22929,
- 22930,
- 22931,
- 22932,
- 22933,
- 22934,
- 22935,
- 22936,
- 22937,
- 22938,
- 22939,
- 22940,
- 22941,
- 22942,
- 22943,
- 22944,
- 22945,
- 22946,
- 22947,
- 22948,
- 22949,
- 22950,
- 22951,
- 22952,
- 22953,
- 22954,
- 22955,
- 22956,
- 22957,
- 22958,
- 22959,
- 22960,
- 22961,
- 22962,
- 22963,
- 22964,
- 22965,
- 22966,
- 22967,
- 22968,
- 22969,
- 22970,
- 22971,
- 22972,
- 22973,
- 22974,
- 22975,
- 22976,
- 22977,
- 22978,
- 22979,
- 22980,
- 22981,
- 22982,
- 22983,
- 22984,
- 22985,
- 22986,
- 22987,
- 22988,
- 22989,
- 22990,
- 22991,
- 22992,
- 22993,
- 22994,
- 22995,
- 22996,
- 22997,
- 22998,
- 22999,
- 23000,
- 23001,
- 23002,
- 23003,
- 23004,
- 23005,
- 23006,
- 23007,
- 23008,
- 23009,
- 23010,
- 23011,
- 23012,
- 23013,
- 23014,
- 23015,
- 23016,
- 23017,
- 23018,
- 23019,
- 23020,
- 23021,
- 23022,
- 23023,
- 23024,
- 23025,
- 23026,
- 23027,
- 23028,
- 23029,
- 23030,
- 23031,
- 23032,
- 23033,
- 23034,
- 23035,
- 23036,
- 23037,
- 23038,
- 23039,
- 23040,
- 23041,
- 23042,
- 23043,
- 23044,
- 23045,
- 23046,
- 23047,
- 23048,
- 23049,
- 23050,
- 23051,
- 23052,
- 23053,
- 23054,
- 23055,
- 23056,
- 23057,
- 23058,
- 23059,
- 23060,
- 23061,
- 23062,
- 23063,
- 23064,
- 23065,
- 23066,
- 23067,
- 23068,
- 23069,
- 23070,
- 23071,
- 23072,
- 23073,
- 23074,
- 23075,
- 23076,
- 23077,
- 23078,
- 23079,
- 23080,
- 23081,
- 23082,
- 23083,
- 23084,
- 23085,
- 23086,
- 23087,
- 23088,
- 23089,
- 23090,
- 23091,
- 23092,
- 23093,
- 23094,
- 23095,
- 23096,
- 23097,
- 23098,
- 23099,
- 23100,
- 23101,
- 23102,
- 23103,
- 23104,
- 23105,
- 23106,
- 23107,
- 23108,
- 23109,
- 23110,
- 23111,
- 23112,
- 23113,
- 23114,
- 23115,
- 23116,
- 23117,
- 23118,
- 23119,
- 23120,
- 23121,
- 23122,
- 23123,
- 23124,
- 23125,
- 23126,
- 23127,
- 23128,
- 23129,
- 23130,
- 23131,
- 23132,
- 23133,
- 23134,
- 23135,
- 23136,
- 23137,
- 23138,
- 23139,
- 23140,
- 23141,
- 23142,
- 23143,
- 23144,
- 23145,
- 23146,
- 23147,
- 23148,
- 23149,
- 23150,
- 23151,
- 23152,
- 23153,
- 23154,
- 23155,
- 23156,
- 23157,
- 23158,
- 23159,
- 23160,
- 23161,
- 23162,
- 23163,
- 23164,
- 23165,
- 23166,
- 23167,
- 23168,
- 23169,
- 23170,
- 23171,
- 23172,
- 23173,
- 23174,
- 23175,
- 23176,
- 23177,
- 23178,
- 23179,
- 23180,
- 23181,
- 23182,
- 23183,
- 23184,
- 23185,
- 23186,
- 23187,
- 23188,
- 23189,
- 23190,
- 23191,
- 23192,
- 23193,
- 23194,
- 23195,
- 23196,
- 23197,
- 23198,
- 23199,
- 23200,
- 23201,
- 23202,
- 23203,
- 23204,
- 23205,
- 23206,
- 23207,
- 23208,
- 23209,
- 23210,
- 23211,
- 23212,
- 23213,
- 23214,
- 23215,
- 23216,
- 23217,
- 23218,
- 23219,
- 23220,
- 23221,
- 23222,
- 23223,
- 23224,
- 23225,
- 23226,
- 23227,
- 23228,
- 23229,
- 23230,
- 23231,
- 23232,
- 23233,
- 23234,
- 23235,
- 23236,
- 23237,
- 23238,
- 23239,
- 23240,
- 23241,
- 23242,
- 23243,
- 23244,
- 23245,
- 23246,
- 23247,
- 23248,
- 23249,
- 23250,
- 23251,
- 23252,
- 23253,
- 23254,
- 23255,
- 23256,
- 23257,
- 23258,
- 23259,
- 23260,
- 23261,
- 23262,
- 23263,
- 23264,
- 23265,
- 23266,
- 23267,
- 23268,
- 23269,
- 23270,
- 23271,
- 23272,
- 23273,
- 23274,
- 23275,
- 23276,
- 23277,
- 23278,
- 23279,
- 23280,
- 23281,
- 23282,
- 23283,
- 23284,
- 23285,
- 23286,
- 23287,
- 23288,
- 23289,
- 23290,
- 23291,
- 23292,
- 23293,
- 23294,
- 23295,
- 23296,
- 23297,
- 23298,
- 23299,
- 23300,
- 23301,
- 23302,
- 23303,
- 23304,
- 23305,
- 23306,
- 23307,
- 23308,
- 23309,
- 23310,
- 23311,
- 23312,
- 23313,
- 23314,
- 23315,
- 23316,
- 23317,
- 23318,
- 23319,
- 23320,
- 23321,
- 23322,
- 23323,
- 23324,
- 23325,
- 23326,
- 23327,
- 23328,
- 23329,
- 23330,
- 23331,
- 23332,
- 23333,
- 23334,
- 23335,
- 23336,
- 23337,
- 23338,
- 23339,
- 23340,
- 23341,
- 23342,
- 23343,
- 23344,
- 23345,
- 23346,
- 23347,
- 23348,
- 23349,
- 23350,
- 23351,
- 23352,
- 23353,
- 23354,
- 23355,
- 23356,
- 23357,
- 23358,
- 23359,
- 23360,
- 23361,
- 23362,
- 23363,
- 23364,
- 23365,
- 23366,
- 23367,
- 23368,
- 23369,
- 23370,
- 23371,
- 23372,
- 23373,
- 23374,
- 23375,
- 23376,
- 23377,
- 23378,
- 23379,
- 23380,
- 23381,
- 23382,
- 23383,
- 23384,
- 23385,
- 23386,
- 23387,
- 23388,
- 23389,
- 23390,
- 23391,
- 23392,
- 23393,
- 23394,
- 23395,
- 23396,
- 23397,
- 23398,
- 23399,
- 23400,
- 23401,
- 23402,
- 23403,
- 23404,
- 23405,
- 23406,
- 23407,
- 23408,
- 23409,
- 23410,
- 23411,
- 23412,
- 23413,
- 23414,
- 23415,
- 23416,
- 23417,
- 23418,
- 23419,
- 23420,
- 23421,
- 23422,
- 23423,
- 23424,
- 23425,
- 23426,
- 23427,
- 23428,
- 23429,
- 23430,
- 23431,
- 23432,
- 23433,
- 23434,
- 23435,
- 23436,
- 23437,
- 23438,
- 23439,
- 23440,
- 23441,
- 23442,
- 23443,
- 23444,
- 23445,
- 23446,
- 23447,
- 23448,
- 23449,
- 23450,
- 23451,
- 23452,
- 23453,
- 23454,
- 23455,
- 23456,
- 23457,
- 23458,
- 23459,
- 23460,
- 23461,
- 23462,
- 23463,
- 23464,
- 23465,
- 23466,
- 23467,
- 23468,
- 23469,
- 23470,
- 23471,
- 23472,
- 23473,
- 23474,
- 23475,
- 23476,
- 23477,
- 23478,
- 23479,
- 23480,
- 23481,
- 23482,
- 23483,
- 23484,
- 23485,
- 23486,
- 23487,
- 23488,
- 23489,
- 23490,
- 23491,
- 23492,
- 23493,
- 23494,
- 23495,
- 23496,
- 23497,
- 23498,
- 23499,
- 23500,
- 23501,
- 23502,
- 23503,
- 23504,
- 23505,
- 23506,
- 23507,
- 23508,
- 23509,
- 23510,
- 23511,
- 23512,
- 23513,
- 23514,
- 23515,
- 23516,
- 23517,
- 23518,
- 23519,
- 23520,
- 23521,
- 23522,
- 23523,
- 23524,
- 23525,
- 23526,
- 23527,
- 23528,
- 23529,
- 23530,
- 23531,
- 23532,
- 23533,
- 23534,
- 23535,
- 23536,
- 23537,
- 23538,
- 23539,
- 23540,
- 23541,
- 23542,
- 23543,
- 23544,
- 23545,
- 23546,
- 23547,
- 23548,
- 23549,
- 23550,
- 23551,
- 23552,
- 23553,
- 23554,
- 23555,
- 23556,
- 23557,
- 23558,
- 23559,
- 23560,
- 23561,
- 23562,
- 23563,
- 23564,
- 23565,
- 23566,
- 23567,
- 23568,
- 23569,
- 23570,
- 23571,
- 23572,
- 23573,
- 23574,
- 23575,
- 23576,
- 23577,
- 23578,
- 23579,
- 23580,
- 23581,
- 23582,
- 23583,
- 23584,
- 23585,
- 23586,
- 23587,
- 23588,
- 23589,
- 23590,
- 23591,
- 23592,
- 23593,
- 23594,
- 23595,
- 23596,
- 23597,
- 23598,
- 23599,
- 23600,
- 23601,
- 23602,
- 23603,
- 23604,
- 23605,
- 23606,
- 23607,
- 23608,
- 23609,
- 23610,
- 23611,
- 23612,
- 23613,
- 23614,
- 23615,
- 23616,
- 23617,
- 23618,
- 23619,
- 23620,
- 23621,
- 23622,
- 23623,
- 23624,
- 23625,
- 23626,
- 23627,
- 23628,
- 23629,
- 23630,
- 23631,
- 23632,
- 23633,
- 23634,
- 23635,
- 23636,
- 23637,
- 23638,
- 23639,
- 23640,
- 23641,
- 23642,
- 23643,
- 23644,
- 23645,
- 23646,
- 23647,
- 23648,
- 23649,
- 23650,
- 23651,
- 23652,
- 23653,
- 23654,
- 23655,
- 23656,
- 23657,
- 23658,
- 23659,
- 23660,
- 23661,
- 23662,
- 23663,
- 23664,
- 23665,
- 23666,
- 23667,
- 23668,
- 23669,
- 23670,
- 23671,
- 23672,
- 23673,
- 23674,
- 23675,
- 23676,
- 23677,
- 23678,
- 23679,
- 23680,
- 23681,
- 23682,
- 23683,
- 23684,
- 23685,
- 23686,
- 23687,
- 23688,
- 23689,
- 23690,
- 23691,
- 23692,
- 23693,
- 23694,
- 23695,
- 23696,
- 23697,
- 23698,
- 23699,
- 23700,
- 23701,
- 23702,
- 23703,
- 23704,
- 23705,
- 23706,
- 23707,
- 23708,
- 23709,
- 23710,
- 23711,
- 23712,
- 23713,
- 23714,
- 23715,
- 23716,
- 23717,
- 23718,
- 23719,
- 23720,
- 23721,
- 23722,
- 23723,
- 23724,
- 23725,
- 23726,
- 23727,
- 23728,
- 23729,
- 23730,
- 23731,
- 23732,
- 23733,
- 23734,
- 23735,
- 23736,
- 23737,
- 23738,
- 23739,
- 23740,
- 23741,
- 23742,
- 23743,
- 23744,
- 23745,
- 23746,
- 23747,
- 23748,
- 23749,
- 23750,
- 23751,
- 23752,
- 23753,
- 23754,
- 23755,
- 23756,
- 23757,
- 23758,
- 23759,
- 23760,
- 23761,
- 23762,
- 23763,
- 23764,
- 23765,
- 23766,
- 23767,
- 23768,
- 23769,
- 23770,
- 23771,
- 23772,
- 23773,
- 23774,
- 23775,
- 23776,
- 23777,
- 23778,
- 23779,
- 23780,
- 23781,
- 23782,
- 23783,
- 23784,
- 23785,
- 23786,
- 23787,
- 23788,
- 23789,
- 23790,
- 23791,
- 23792,
- 23793,
- 23794,
- 23795,
- 23796,
- 23797,
- 23798,
- 23799,
- 23800,
- 23801,
- 23802,
- 23803,
- 23804,
- 23805,
- 23806,
- 23807,
- 23808,
- 23809,
- 23810,
- 23811,
- 23812,
- 23813,
- 23814,
- 23815,
- 23816,
- 23817,
- 23818,
- 23819,
- 23820,
- 23821,
- 23822,
- 23823,
- 23824,
- 23825,
- 23826,
- 23827,
- 23828,
- 23829,
- 23830,
- 23831,
- 23832,
- 23833,
- 23834,
- 23835,
- 23836,
- 23837,
- 23838,
- 23839,
- 23840,
- 23841,
- 23842,
- 23843,
- 23844,
- 23845,
- 23846,
- 23847,
- 23848,
- 23849,
- 23850,
- 23851,
- 23852,
- 23853,
- 23854,
- 23855,
- 23856,
- 23857,
- 23858,
- 23859,
- 23860,
- 23861,
- 23862,
- 23863,
- 23864,
- 23865,
- 23866,
- 23867,
- 23868,
- 23869,
- 23870,
- 23871,
- 23872,
- 23873,
- 23874,
- 23875,
- 23876,
- 23877,
- 23878,
- 23879,
- 23880,
- 23881,
- 23882,
- 23883,
- 23884,
- 23885,
- 23886,
- 23887,
- 23888,
- 23889,
- 23890,
- 23891,
- 23892,
- 23893,
- 23894,
- 23895,
- 23896,
- 23897,
- 23898,
- 23899,
- 23900,
- 23901,
- 23902,
- 23903,
- 23904,
- 23905,
- 23906,
- 23907,
- 23908,
- 23909,
- 23910,
- 23911,
- 23912,
- 23913,
- 23914,
- 23915,
- 23916,
- 23917,
- 23918,
- 23919,
- 23920,
- 23921,
- 23922,
- 23923,
- 23924,
- 23925,
- 23926,
- 23927,
- 23928,
- 23929,
- 23930,
- 23931,
- 23932,
- 23933,
- 23934,
- 23935,
- 23936,
- 23937,
- 23938,
- 23939,
- 23940,
- 23941,
- 23942,
- 23943,
- 23944,
- 23945,
- 23946,
- 23947,
- 23948,
- 23949,
- 23950,
- 23951,
- 23952,
- 23953,
- 23954,
- 23955,
- 23956,
- 23957,
- 23958,
- 23959,
- 23960,
- 23961,
- 23962,
- 23963,
- 23964,
- 23965,
- 23966,
- 23967,
- 23968,
- 23969,
- 23970,
- 23971,
- 23972,
- 23973,
- 23974,
- 23975,
- 23976,
- 23977,
- 23978,
- 23979,
- 23980,
- 23981,
- 23982,
- 23983,
- 23984,
- 23985,
- 23986,
- 23987,
- 23988,
- 23989,
- 23990,
- 23991,
- 23992,
- 23993,
- 23994,
- 23995,
- 23996,
- 23997,
- 23998,
- 23999,
- 24000,
- 24001,
- 24002,
- 24003,
- 24004,
- 24005,
- 24006,
- 24007,
- 24008,
- 24009,
- 24010,
- 24011,
- 24012,
- 24013,
- 24014,
- 24015,
- 24016,
- 24017,
- 24018,
- 24019,
- 24020,
- 24021,
- 24022,
- 24023,
- 24024,
- 24025,
- 24026,
- 24027,
- 24028,
- 24029,
- 24030,
- 24031,
- 24032,
- 24033,
- 24034,
- 24035,
- 24036,
- 24037,
- 24038,
- 24039,
- 24040,
- 24041,
- 24042,
- 24043,
- 24044,
- 24045,
- 24046,
- 24047,
- 24048,
- 24049,
- 24050,
- 24051,
- 24052,
- 24053,
- 24054,
- 24055,
- 24056,
- 24057,
- 24058,
- 24059,
- 24060,
- 24061,
- 24062,
- 24063,
- 24064,
- 24065,
- 24066,
- 24067,
- 24068,
- 24069,
- 24070,
- 24071,
- 24072,
- 24073,
- 24074,
- 24075,
- 24076,
- 24077,
- 24078,
- 24079,
- 24080,
- 24081,
- 24082,
- 24083,
- 24084,
- 24085,
- 24086,
- 24087,
- 24088,
- 24089,
- 24090,
- 24091,
- 24092,
- 24093,
- 24094,
- 24095,
- 24096,
- 24097,
- 24098,
- 24099,
- 24100,
- 24101,
- 24102,
- 24103,
- 24104,
- 24105,
- 24106,
- 24107,
- 24108,
- 24109,
- 24110,
- 24111,
- 24112,
- 24113,
- 24114,
- 24115,
- 24116,
- 24117,
- 24118,
- 24119,
- 24120,
- 24121,
- 24122,
- 24123,
- 24124,
- 24125,
- 24126,
- 24127,
- 24128,
- 24129,
- 24130,
- 24131,
- 24132,
- 24133,
- 24134,
- 24135,
- 24136,
- 24137,
- 24138,
- 24139,
- 24140,
- 24141,
- 24142,
- 24143,
- 24144,
- 24145,
- 24146,
- 24147,
- 24148,
- 24149,
- 24150,
- 24151,
- 24152,
- 24153,
- 24154,
- 24155,
- 24156,
- 24157,
- 24158,
- 24159,
- 24160,
- 24161,
- 24162,
- 24163,
- 24164,
- 24165,
- 24166,
- 24167,
- 24168,
- 24169,
- 24170,
- 24171,
- 24172,
- 24173,
- 24174,
- 24175,
- 24176,
- 24177,
- 24178,
- 24179,
- 24180,
- 24181,
- 24182,
- 24183,
- 24184,
- 24185,
- 24186,
- 24187,
- 24188,
- 24189,
- 24190,
- 24191,
- 24192,
- 24193,
- 24194,
- 24195,
- 24196,
- 24197,
- 24198,
- 24199,
- 24200,
- 24201,
- 24202,
- 24203,
- 24204,
- 24205,
- 24206,
- 24207,
- 24208,
- 24209,
- 24210,
- 24211,
- 24212,
- 24213,
- 24214,
- 24215,
- 24216,
- 24217,
- 24218,
- 24219,
- 24220,
- 24221,
- 24222,
- 24223,
- 24224,
- 24225,
- 24226,
- 24227,
- 24228,
- 24229,
- 24230,
- 24231,
- 24232,
- 24233,
- 24234,
- 24235,
- 24236,
- 24237,
- 24238,
- 24239,
- 24240,
- 24241,
- 24242,
- 24243,
- 24244,
- 24245,
- 24246,
- 24247,
- 24248,
- 24249,
- 24250,
- 24251,
- 24252,
- 24253,
- 24254,
- 24255,
- 24256,
- 24257,
- 24258,
- 24259,
- 24260,
- 24261,
- 24262,
- 24263,
- 24264,
- 24265,
- 24266,
- 24267,
- 24268,
- 24269,
- 24270,
- 24271,
- 24272,
- 24273,
- 24274,
- 24275,
- 24276,
- 24277,
- 24278,
- 24279,
- 24280,
- 24281,
- 24282,
- 24283,
- 24284,
- 24285,
- 24286,
- 24287,
- 24288,
- 24289,
- 24290,
- 24291,
- 24292,
- 24293,
- 24294,
- 24295,
- 24296,
- 24297,
- 24298,
- 24299,
- 24300,
- 24301,
- 24302,
- 24303,
- 24304,
- 24305,
- 24306,
- 24307,
- 24308,
- 24309,
- 24310,
- 24311,
- 24312,
- 24313,
- 24314,
- 24315,
- 24316,
- 24317,
- 24318,
- 24319,
- 24320,
- 24321,
- 24322,
- 24323,
- 24324,
- 24325,
- 24326,
- 24327,
- 24328,
- 24329,
- 24330,
- 24331,
- 24332,
- 24333,
- 24334,
- 24335,
- 24336,
- 24337,
- 24338,
- 24339,
- 24340,
- 24341,
- 24342,
- 24343,
- 24344,
- 24345,
- 24346,
- 24347,
- 24348,
- 24349,
- 24350,
- 24351,
- 24352,
- 24353,
- 24354,
- 24355,
- 24356,
- 24357,
- 24358,
- 24359,
- 24360,
- 24361,
- 24362,
- 24363,
- 24364,
- 24365,
- 24366,
- 24367,
- 24368,
- 24369,
- 24370,
- 24371,
- 24372,
- 24373,
- 24374,
- 24375,
- 24376,
- 24377,
- 24378,
- 24379,
- 24380,
- 24381,
- 24382,
- 24383,
- 24384,
- 24385,
- 24386,
- 24387,
- 24388,
- 24389,
- 24390,
- 24391,
- 24392,
- 24393,
- 24394,
- 24395,
- 24396,
- 24397,
- 24398,
- 24399,
- 24400,
- 24401,
- 24402,
- 24403,
- 24404,
- 24405,
- 24406,
- 24407,
- 24408,
- 24409,
- 24410,
- 24411,
- 24412,
- 24413,
- 24414,
- 24415,
- 24416,
- 24417,
- 24418,
- 24419,
- 24420,
- 24421,
- 24422,
- 24423,
- 24424,
- 24425,
- 24426,
- 24427,
- 24428,
- 24429,
- 24430,
- 24431,
- 24432,
- 24433,
- 24434,
- 24435,
- 24436,
- 24437,
- 24438,
- 24439,
- 24440,
- 24441,
- 24442,
- 24443,
- 24444,
- 24445,
- 24446,
- 24447,
- 24448,
- 24449,
- 24450,
- 24451,
- 24452,
- 24453,
- 24454,
- 24455,
- 24456,
- 24457,
- 24458,
- 24459,
- 24460,
- 24461,
- 24462,
- 24463,
- 24464,
- 24465,
- 24466,
- 24467,
- 24468,
- 24469,
- 24470,
- 24471,
- 24472,
- 24473,
- 24474,
- 24475,
- 24476,
- 24477,
- 24478,
- 24479,
- 24480,
- 24481,
- 24482,
- 24483,
- 24484,
- 24485,
- 24486,
- 24487,
- 24488,
- 24489,
- 24490,
- 24491,
- 24492,
- 24493,
- 24494,
- 24495,
- 24496,
- 24497,
- 24498,
- 24499,
- 24500,
- 24501,
- 24502,
- 24503,
- 24504,
- 24505,
- 24506,
- 24507,
- 24508,
- 24509,
- 24510,
- 24511,
- 24512,
- 24513,
- 24514,
- 24515,
- 24516,
- 24517,
- 24518,
- 24519,
- 24520,
- 24521,
- 24522,
- 24523,
- 24524,
- 24525,
- 24526,
- 24527,
- 24528,
- 24529,
- 24530,
- 24531,
- 24532,
- 24533,
- 24534,
- 24535,
- 24536,
- 24537,
- 24538,
- 24539,
- 24540,
- 24541,
- 24542,
- 24543,
- 24544,
- 24545,
- 24546,
- 24547,
- 24548,
- 24549,
- 24550,
- 24551,
- 24552,
- 24553,
- 24554,
- 24555,
- 24556,
- 24557,
- 24558,
- 24559,
- 24560,
- 24561,
- 24562,
- 24563,
- 24564,
- 24565,
- 24566,
- 24567,
- 24568,
- 24569,
- 24570,
- 24571,
- 24572,
- 24573,
- 24574,
- 24575,
- 24576,
- 24577,
- 24578,
- 24579,
- 24580,
- 24581,
- 24582,
- 24583,
- 24584,
- 24585,
- 24586,
- 24587,
- 24588,
- 24589,
- 24590,
- 24591,
- 24592,
- 24593,
- 24594,
- 24595,
- 24596,
- 24597,
- 24598,
- 24599,
- 24600,
- 24601,
- 24602,
- 24603,
- 24604,
- 24605,
- 24606,
- 24607,
- 24608,
- 24609,
- 24610,
- 24611,
- 24612,
- 24613,
- 24614,
- 24615,
- 24616,
- 24617,
- 24618,
- 24619,
- 24620,
- 24621,
- 24622,
- 24623,
- 24624,
- 24625,
- 24626,
- 24627,
- 24628,
- 24629,
- 24630,
- 24631,
- 24632,
- 24633,
- 24634,
- 24635,
- 24636,
- 24637,
- 24638,
- 24639,
- 24640,
- 24641,
- 24642,
- 24643,
- 24644,
- 24645,
- 24646,
- 24647,
- 24648,
- 24649,
- 24650,
- 24651,
- 24652,
- 24653,
- 24654,
- 24655,
- 24656,
- 24657,
- 24658,
- 24659,
- 24660,
- 24661,
- 24662,
- 24663,
- 24664,
- 24665,
- 24666,
- 24667,
- 24668,
- 24669,
- 24670,
- 24671,
- 24672,
- 24673,
- 24674,
- 24675,
- 24676,
- 24677,
- 24678,
- 24679,
- 24680,
- 24681,
- 24682,
- 24683,
- 24684,
- 24685,
- 24686,
- 24687,
- 24688,
- 24689,
- 24690,
- 24691,
- 24692,
- 24693,
- 24694,
- 24695,
- 24696,
- 24697,
- 24698,
- 24699,
- 24700,
- 24701,
- 24702,
- 24703,
- 24704,
- 24705,
- 24706,
- 24707,
- 24708,
- 24709,
- 24710,
- 24711,
- 24712,
- 24713,
- 24714,
- 24715,
- 24716,
- 24717,
- 24718,
- 24719,
- 24720,
- 24721,
- 24722,
- 24723,
- 24724,
- 24725,
- 24726,
- 24727,
- 24728,
- 24729,
- 24730,
- 24731,
- 24732,
- 24733,
- 24734,
- 24735,
- 24736,
- 24737,
- 24738,
- 24739,
- 24740,
- 24741,
- 24742,
- 24743,
- 24744,
- 24745,
- 24746,
- 24747,
- 24748,
- 24749,
- 24750,
- 24751,
- 24752,
- 24753,
- 24754,
- 24755,
- 24756,
- 24757,
- 24758,
- 24759,
- 24760,
- 24761,
- 24762,
- 24763,
- 24764,
- 24765,
- 24766,
- 24767,
- 24768,
- 24769,
- 24770,
- 24771,
- 24772,
- 24773,
- 24774,
- 24775,
- 24776,
- 24777,
- 24778,
- 24779,
- 24780,
- 24781,
- 24782,
- 24783,
- 24784,
- 24785,
- 24786,
- 24787,
- 24788,
- 24789,
- 24790,
- 24791,
- 24792,
- 24793,
- 24794,
- 24795,
- 24796,
- 24797,
- 24798,
- 24799,
- 24800,
- 24801,
- 24802,
- 24803,
- 24804,
- 24805,
- 24806,
- 24807,
- 24808,
- 24809,
- 24810,
- 24811,
- 24812,
- 24813,
- 24814,
- 24815,
- 24816,
- 24817,
- 24818,
- 24819,
- 24820,
- 24821,
- 24822,
- 24823,
- 24824,
- 24825,
- 24826,
- 24827,
- 24828,
- 24829,
- 24830,
- 24831,
- 24832,
- 24833,
- 24834,
- 24835,
- 24836,
- 24837,
- 24838,
- 24839,
- 24840,
- 24841,
- 24842,
- 24843,
- 24844,
- 24845,
- 24846,
- 24847,
- 24848,
- 24849,
- 24850,
- 24851,
- 24852,
- 24853,
- 24854,
- 24855,
- 24856,
- 24857,
- 24858,
- 24859,
- 24860,
- 24861,
- 24862,
- 24863,
- 24864,
- 24865,
- 24866,
- 24867,
- 24868,
- 24869,
- 24870,
- 24871,
- 24872,
- 24873,
- 24874,
- 24875,
- 24876,
- 24877,
- 24878,
- 24879,
- 24880,
- 24881,
- 24882,
- 24883,
- 24884,
- 24885,
- 24886,
- 24887,
- 24888,
- 24889,
- 24890,
- 24891,
- 24892,
- 24893,
- 24894,
- 24895,
- 24896,
- 24897,
- 24898,
- 24899,
- 24900,
- 24901,
- 24902,
- 24903,
- 24904,
- 24905,
- 24906,
- 24907,
- 24908,
- 24909,
- 24910,
- 24911,
- 24912,
- 24913,
- 24914,
- 24915,
- 24916,
- 24917,
- 24918,
- 24919,
- 24920,
- 24921,
- 24922,
- 24923,
- 24924,
- 24925,
- 24926,
- 24927,
- 24928,
- 24929,
- 24930,
- 24931,
- 24932,
- 24933,
- 24934,
- 24935,
- 24936,
- 24937,
- 24938,
- 24939,
- 24940,
- 24941,
- 24942,
- 24943,
- 24944,
- 24945,
- 24946,
- 24947,
- 24948,
- 24949,
- 24950,
- 24951,
- 24952,
- 24953,
- 24954,
- 24955,
- 24956,
- 24957,
- 24958,
- 24959,
- 24960,
- 24961,
- 24962,
- 24963,
- 24964,
- 24965,
- 24966,
- 24967,
- 24968,
- 24969,
- 24970,
- 24971,
- 24972,
- 24973,
- 24974,
- 24975,
- 24976,
- 24977,
- 24978,
- 24979,
- 24980,
- 24981,
- 24982,
- 24983,
- 24984,
- 24985,
- 24986,
- 24987,
- 24988,
- 24989,
- 24990,
- 24991,
- 24992,
- 24993,
- 24994,
- 24995,
- 24996,
- 24997,
- 24998,
- 24999,
- 25000,
- 25001,
- 25002,
- 25003,
- 25004,
- 25005,
- 25006,
- 25007,
- 25008,
- 25009,
- 25010,
- 25011,
- 25012,
- 25013,
- 25014,
- 25015,
- 25016,
- 25017,
- 25018,
- 25019,
- 25020,
- 25021,
- 25022,
- 25023,
- 25024,
- 25025,
- 25026,
- 25027,
- 25028,
- 25029,
- 25030,
- 25031,
- 25032,
- 25033,
- 25034,
- 25035,
- 25036,
- 25037,
- 25038,
- 25039,
- 25040,
- 25041,
- 25042,
- 25043,
- 25044,
- 25045,
- 25046,
- 25047,
- 25048,
- 25049,
- 25050,
- 25051,
- 25052,
- 25053,
- 25054,
- 25055,
- 25056,
- 25057,
- 25058,
- 25059,
- 25060,
- 25061,
- 25062,
- 25063,
- 25064,
- 25065,
- 25066,
- 25067,
- 25068,
- 25069,
- 25070,
- 25071,
- 25072,
- 25073,
- 25074,
- 25075,
- 25076,
- 25077,
- 25078,
- 25079,
- 25080,
- 25081,
- 25082,
- 25083,
- 25084,
- 25085,
- 25086,
- 25087,
- 25088,
- 25089,
- 25090,
- 25091,
- 25092,
- 25093,
- 25094,
- 25095,
- 25096,
- 25097,
- 25098,
- 25099,
- 25100,
- 25101,
- 25102,
- 25103,
- 25104,
- 25105,
- 25106,
- 25107,
- 25108,
- 25109,
- 25110,
- 25111,
- 25112,
- 25113,
- 25114,
- 25115,
- 25116,
- 25117,
- 25118,
- 25119,
- 25120,
- 25121,
- 25122,
- 25123,
- 25124,
- 25125,
- 25126,
- 25127,
- 25128,
- 25129,
- 25130,
- 25131,
- 25132,
- 25133,
- 25134,
- 25135,
- 25136,
- 25137,
- 25138,
- 25139,
- 25140,
- 25141,
- 25142,
- 25143,
- 25144,
- 25145,
- 25146,
- 25147,
- 25148,
- 25149,
- 25150,
- 25151,
- 25152,
- 25153,
- 25154,
- 25155,
- 25156,
- 25157,
- 25158,
- 25159,
- 25160,
- 25161,
- 25162,
- 25163,
- 25164,
- 25165,
- 25166,
- 25167,
- 25168,
- 25169,
- 25170,
- 25171,
- 25172,
- 25173,
- 25174,
- 25175,
- 25176,
- 25177,
- 25178,
- 25179,
- 25180,
- 25181,
- 25182,
- 25183,
- 25184,
- 25185,
- 25186,
- 25187,
- 25188,
- 25189,
- 25190,
- 25191,
- 25192,
- 25193,
- 25194,
- 25195,
- 25196,
- 25197,
- 25198,
- 25199,
- 25200,
- 25201,
- 25202,
- 25203,
- 25204,
- 25205,
- 25206,
- 25207,
- 25208,
- 25209,
- 25210,
- 25211,
- 25212,
- 25213,
- 25214,
- 25215,
- 25216,
- 25217,
- 25218,
- 25219,
- 25220,
- 25221,
- 25222,
- 25223,
- 25224,
- 25225,
- 25226,
- 25227,
- 25228,
- 25229,
- 25230,
- 25231,
- 25232,
- 25233,
- 25234,
- 25235,
- 25236,
- 25237,
- 25238,
- 25239,
- 25240,
- 25241,
- 25242,
- 25243,
- 25244,
- 25245,
- 25246,
- 25247,
- 25248,
- 25249,
- 25250,
- 25251,
- 25252,
- 25253,
- 25254,
- 25255,
- 25256,
- 25257,
- 25258,
- 25259,
- 25260,
- 25261,
- 25262,
- 25263,
- 25264,
- 25265,
- 25266,
- 25267,
- 25268,
- 25269,
- 25270,
- 25271,
- 25272,
- 25273,
- 25274,
- 25275,
- 25276,
- 25277,
- 25278,
- 25279,
- 25280,
- 25281,
- 25282,
- 25283,
- 25284,
- 25285,
- 25286,
- 25287,
- 25288,
- 25289,
- 25290,
- 25291,
- 25292,
- 25293,
- 25294,
- 25295,
- 25296,
- 25297,
- 25298,
- 25299,
- 25300,
- 25301,
- 25302,
- 25303,
- 25304,
- 25305,
- 25306,
- 25307,
- 25308,
- 25309,
- 25310,
- 25311,
- 25312,
- 25313,
- 25314,
- 25315,
- 25316,
- 25317,
- 25318,
- 25319,
- 25320,
- 25321,
- 25322,
- 25323,
- 25324,
- 25325,
- 25326,
- 25327,
- 25328,
- 25329,
- 25330,
- 25331,
- 25332,
- 25333,
- 25334,
- 25335,
- 25336,
- 25337,
- 25338,
- 25339,
- 25340,
- 25341,
- 25342,
- 25343,
- 25344,
- 25345,
- 25346,
- 25347,
- 25348,
- 25349,
- 25350,
- 25351,
- 25352,
- 25353,
- 25354,
- 25355,
- 25356,
- 25357,
- 25358,
- 25359,
- 25360,
- 25361,
- 25362,
- 25363,
- 25364,
- 25365,
- 25366,
- 25367,
- 25368,
- 25369,
- 25370,
- 25371,
- 25372,
- 25373,
- 25374,
- 25375,
- 25376,
- 25377,
- 25378,
- 25379,
- 25380,
- 25381,
- 25382,
- 25383,
- 25384,
- 25385,
- 25386,
- 25387,
- 25388,
- 25389,
- 25390,
- 25391,
- 25392,
- 25393,
- 25394,
- 25395,
- 25396,
- 25397,
- 25398,
- 25399,
- 25400,
- 25401,
- 25402,
- 25403,
- 25404,
- 25405,
- 25406,
- 25407,
- 25408,
- 25409,
- 25410,
- 25411,
- 25412,
- 25413,
- 25414,
- 25415,
- 25416,
- 25417,
- 25418,
- 25419,
- 25420,
- 25421,
- 25422,
- 25423,
- 25424,
- 25425,
- 25426,
- 25427,
- 25428,
- 25429,
- 25430,
- 25431,
- 25432,
- 25433,
- 25434,
- 25435,
- 25436,
- 25437,
- 25438,
- 25439,
- 25440,
- 25441,
- 25442,
- 25443,
- 25444,
- 25445,
- 25446,
- 25447,
- 25448,
- 25449,
- 25450,
- 25451,
- 25452,
- 25453,
- 25454,
- 25455,
- 25456,
- 25457,
- 25458,
- 25459,
- 25460,
- 25461,
- 25462,
- 25463,
- 25464,
- 25465,
- 25466,
- 25467,
- 25468,
- 25469,
- 25470,
- 25471,
- 25472,
- 25473,
- 25474,
- 25475,
- 25476,
- 25477,
- 25478,
- 25479,
- 25480,
- 25481,
- 25482,
- 25483,
- 25484,
- 25485,
- 25486,
- 25487,
- 25488,
- 25489,
- 25490,
- 25491,
- 25492,
- 25493,
- 25494,
- 25495,
- 25496,
- 25497,
- 25498,
- 25499,
- 25500,
- 25501,
- 25502,
- 25503,
- 25504,
- 25505,
- 25506,
- 25507,
- 25508,
- 25509,
- 25510,
- 25511,
- 25512,
- 25513,
- 25514,
- 25515,
- 25516,
- 25517,
- 25518,
- 25519,
- 25520,
- 25521,
- 25522,
- 25523,
- 25524,
- 25525,
- 25526,
- 25527,
- 25528,
- 25529,
- 25530,
- 25531,
- 25532,
- 25533,
- 25534,
- 25535,
- 25536,
- 25537,
- 25538,
- 25539,
- 25540,
- 25541,
- 25542,
- 25543,
- 25544,
- 25545,
- 25546,
- 25547,
- 25548,
- 25549,
- 25550,
- 25551,
- 25552,
- 25553,
- 25554,
- 25555,
- 25556,
- 25557,
- 25558,
- 25559,
- 25560,
- 25561,
- 25562,
- 25563,
- 25564,
- 25565,
- 25566,
- 25567,
- 25568,
- 25569,
- 25570,
- 25571,
- 25572,
- 25573,
- 25574,
- 25575,
- 25576,
- 25577,
- 25578,
- 25579,
- 25580,
- 25581,
- 25582,
- 25583,
- 25584,
- 25585,
- 25586,
- 25587,
- 25588,
- 25589,
- 25590,
- 25591,
- 25592,
- 25593,
- 25594,
- 25595,
- 25596,
- 25597,
- 25598,
- 25599,
- 25600,
- 25601,
- 25602,
- 25603,
- 25604,
- 25605,
- 25606,
- 25607,
- 25608,
- 25609,
- 25610,
- 25611,
- 25612,
- 25613,
- 25614,
- 25615,
- 25616,
- 25617,
- 25618,
- 25619,
- 25620,
- 25621,
- 25622,
- 25623,
- 25624,
- 25625,
- 25626,
- 25627,
- 25628,
- 25629,
- 25630,
- 25631,
- 25632,
- 25633,
- 25634,
- 25635,
- 25636,
- 25637,
- 25638,
- 25639,
- 25640,
- 25641,
- 25642,
- 25643,
- 25644,
- 25645,
- 25646,
- 25647,
- 25648,
- 25649,
- 25650,
- 25651,
- 25652,
- 25653,
- 25654,
- 25655,
- 25656,
- 25657,
- 25658,
- 25659,
- 25660,
- 25661,
- 25662,
- 25663,
- 25664,
- 25665,
- 25666,
- 25667,
- 25668,
- 25669,
- 25670,
- 25671,
- 25672,
- 25673,
- 25674,
- 25675,
- 25676,
- 25677,
- 25678,
- 25679,
- 25680,
- 25681,
- 25682,
- 25683,
- 25684,
- 25685,
- 25686,
- 25687,
- 25688,
- 25689,
- 25690,
- 25691,
- 25692,
- 25693,
- 25694,
- 25695,
- 25696,
- 25697,
- 25698,
- 25699,
- 25700,
- 25701,
- 25702,
- 25703,
- 25704,
- 25705,
- 25706,
- 25707,
- 25708,
- 25709,
- 25710,
- 25711,
- 25712,
- 25713,
- 25714,
- 25715,
- 25716,
- 25717,
- 25718,
- 25719,
- 25720,
- 25721,
- 25722,
- 25723,
- 25724,
- 25725,
- 25726,
- 25727,
- 25728,
- 25729,
- 25730,
- 25731,
- 25732,
- 25733,
- 25734,
- 25735,
- 25736,
- 25737,
- 25738,
- 25739,
- 25740,
- 25741,
- 25742,
- 25743,
- 25744,
- 25745,
- 25746,
- 25747,
- 25748,
- 25749,
- 25750,
- 25751,
- 25752,
- 25753,
- 25754,
- 25755,
- 25756,
- 25757,
- 25758,
- 25759,
- 25760,
- 25761,
- 25762,
- 25763,
- 25764,
- 25765,
- 25766,
- 25767,
- 25768,
- 25769,
- 25770,
- 25771,
- 25772,
- 25773,
- 25774,
- 25775,
- 25776,
- 25777,
- 25778,
- 25779,
- 25780,
- 25781,
- 25782,
- 25783,
- 25784,
- 25785,
- 25786,
- 25787,
- 25788,
- 25789,
- 25790,
- 25791,
- 25792,
- 25793,
- 25794,
- 25795,
- 25796,
- 25797,
- 25798,
- 25799,
- 25800,
- 25801,
- 25802,
- 25803,
- 25804,
- 25805,
- 25806,
- 25807,
- 25808,
- 25809,
- 25810,
- 25811,
- 25812,
- 25813,
- 25814,
- 25815,
- 25816,
- 25817,
- 25818,
- 25819,
- 25820,
- 25821,
- 25822,
- 25823,
- 25824,
- 25825,
- 25826,
- 25827,
- 25828,
- 25829,
- 25830,
- 25831,
- 25832,
- 25833,
- 25834,
- 25835,
- 25836,
- 25837,
- 25838,
- 25839,
- 25840,
- 25841,
- 25842,
- 25843,
- 25844,
- 25845,
- 25846,
- 25847,
- 25848,
- 25849,
- 25850,
- 25851,
- 25852,
- 25853,
- 25854,
- 25855,
- 25856,
- 25857,
- 25858,
- 25859,
- 25860,
- 25861,
- 25862,
- 25863,
- 25864,
- 25865,
- 25866,
- 25867,
- 25868,
- 25869,
- 25870,
- 25871,
- 25872,
- 25873,
- 25874,
- 25875,
- 25876,
- 25877,
- 25878,
- 25879,
- 25880,
- 25881,
- 25882,
- 25883,
- 25884,
- 25885,
- 25886,
- 25887,
- 25888,
- 25889,
- 25890,
- 25891,
- 25892,
- 25893,
- 25894,
- 25895,
- 25896,
- 25897,
- 25898,
- 25899,
- 25900,
- 25901,
- 25902,
- 25903,
- 25904,
- 25905,
- 25906,
- 25907,
- 25908,
- 25909,
- 25910,
- 25911,
- 25912,
- 25913,
- 25914,
- 25915,
- 25916,
- 25917,
- 25918,
- 25919,
- 25920,
- 25921,
- 25922,
- 25923,
- 25924,
- 25925,
- 25926,
- 25927,
- 25928,
- 25929,
- 25930,
- 25931,
- 25932,
- 25933,
- 25934,
- 25935,
- 25936,
- 25937,
- 25938,
- 25939,
- 25940,
- 25941,
- 25942,
- 25943,
- 25944,
- 25945,
- 25946,
- 25947,
- 25948,
- 25949,
- 25950,
- 25951,
- 25952,
- 25953,
- 25954,
- 25955,
- 25956,
- 25957,
- 25958,
- 25959,
- 25960,
- 25961,
- 25962,
- 25963,
- 25964,
- 25965,
- 25966,
- 25967,
- 25968,
- 25969,
- 25970,
- 25971,
- 25972,
- 25973,
- 25974,
- 25975,
- 25976,
- 25977,
- 25978,
- 25979,
- 25980,
- 25981,
- 25982,
- 25983,
- 25984,
- 25985,
- 25986,
- 25987,
- 25988,
- 25989,
- 25990,
- 25991,
- 25992,
- 25993,
- 25994,
- 25995,
- 25996,
- 25997,
- 25998,
- 25999,
- 26000,
- 26001,
- 26002,
- 26003,
- 26004,
- 26005,
- 26006,
- 26007,
- 26008,
- 26009,
- 26010,
- 26011,
- 26012,
- 26013,
- 26014,
- 26015,
- 26016,
- 26017,
- 26018,
- 26019,
- 26020,
- 26021,
- 26022,
- 26023,
- 26024,
- 26025,
- 26026,
- 26027,
- 26028,
- 26029,
- 26030,
- 26031,
- 26032,
- 26033,
- 26034,
- 26035,
- 26036,
- 26037,
- 26038,
- 26039,
- 26040,
- 26041,
- 26042,
- 26043,
- 26044,
- 26045,
- 26046,
- 26047,
- 26048,
- 26049,
- 26050,
- 26051,
- 26052,
- 26053,
- 26054,
- 26055,
- 26056,
- 26057,
- 26058,
- 26059,
- 26060,
- 26061,
- 26062,
- 26063,
- 26064,
- 26065,
- 26066,
- 26067,
- 26068,
- 26069,
- 26070,
- 26071,
- 26072,
- 26073,
- 26074,
- 26075,
- 26076,
- 26077,
- 26078,
- 26079,
- 26080,
- 26081,
- 26082,
- 26083,
- 26084,
- 26085,
- 26086,
- 26087,
- 26088,
- 26089,
- 26090,
- 26091,
- 26092,
- 26093,
- 26094,
- 26095,
- 26096,
- 26097,
- 26098,
- 26099,
- 26100,
- 26101,
- 26102,
- 26103,
- 26104,
- 26105,
- 26106,
- 26107,
- 26108,
- 26109,
- 26110,
- 26111,
- 26112,
- 26113,
- 26114,
- 26115,
- 26116,
- 26117,
- 26118,
- 26119,
- 26120,
- 26121,
- 26122,
- 26123,
- 26124,
- 26125,
- 26126,
- 26127,
- 26128,
- 26129,
- 26130,
- 26131,
- 26132,
- 26133,
- 26134,
- 26135,
- 26136,
- 26137,
- 26138,
- 26139,
- 26140,
- 26141,
- 26142,
- 26143,
- 26144,
- 26145,
- 26146,
- 26147,
- 26148,
- 26149,
- 26150,
- 26151,
- 26152,
- 26153,
- 26154,
- 26155,
- 26156,
- 26157,
- 26158,
- 26159,
- 26160,
- 26161,
- 26162,
- 26163,
- 26164,
- 26165,
- 26166,
- 26167,
- 26168,
- 26169,
- 26170,
- 26171,
- 26172,
- 26173,
- 26174,
- 26175,
- 26176,
- 26177,
- 26178,
- 26179,
- 26180,
- 26181,
- 26182,
- 26183,
- 26184,
- 26185,
- 26186,
- 26187,
- 26188,
- 26189,
- 26190,
- 26191,
- 26192,
- 26193,
- 26194,
- 26195,
- 26196,
- 26197,
- 26198,
- 26199,
- 26200,
- 26201,
- 26202,
- 26203,
- 26204,
- 26205,
- 26206,
- 26207,
- 26208,
- 26209,
- 26210,
- 26211,
- 26212,
- 26213,
- 26214,
- 26215,
- 26216,
- 26217,
- 26218,
- 26219,
- 26220,
- 26221,
- 26222,
- 26223,
- 26224,
- 26225,
- 26226,
- 26227,
- 26228,
- 26229,
- 26230,
- 26231,
- 26232,
- 26233,
- 26234,
- 26235,
- 26236,
- 26237,
- 26238,
- 26239,
- 26240,
- 26241,
- 26242,
- 26243,
- 26244,
- 26245,
- 26246,
- 26247,
- 26248,
- 26249,
- 26250,
- 26251,
- 26252,
- 26253,
- 26254,
- 26255,
- 26256,
- 26257,
- 26258,
- 26259,
- 26260,
- 26261,
- 26262,
- 26263,
- 26264,
- 26265,
- 26266,
- 26267,
- 26268,
- 26269,
- 26270,
- 26271,
- 26272,
- 26273,
- 26274,
- 26275,
- 26276,
- 26277,
- 26278,
- 26279,
- 26280,
- 26281,
- 26282,
- 26283,
- 26284,
- 26285,
- 26286,
- 26287,
- 26288,
- 26289,
- 26290,
- 26291,
- 26292,
- 26293,
- 26294,
- 26295,
- 26296,
- 26297,
- 26298,
- 26299,
- 26300,
- 26301,
- 26302,
- 26303,
- 26304,
- 26305,
- 26306,
- 26307,
- 26308,
- 26309,
- 26310,
- 26311,
- 26312,
- 26313,
- 26314,
- 26315,
- 26316,
- 26317,
- 26318,
- 26319,
- 26320,
- 26321,
- 26322,
- 26323,
- 26324,
- 26325,
- 26326,
- 26327,
- 26328,
- 26329,
- 26330,
- 26331,
- 26332,
- 26333,
- 26334,
- 26335,
- 26336,
- 26337,
- 26338,
- 26339,
- 26340,
- 26341,
- 26342,
- 26343,
- 26344,
- 26345,
- 26346,
- 26347,
- 26348,
- 26349,
- 26350,
- 26351,
- 26352,
- 26353,
- 26354,
- 26355,
- 26356,
- 26357,
- 26358,
- 26359,
- 26360,
- 26361,
- 26362,
- 26363,
- 26364,
- 26365,
- 26366,
- 26367,
- 26368,
- 26369,
- 26370,
- 26371,
- 26372,
- 26373,
- 26374,
- 26375,
- 26376,
- 26377,
- 26378,
- 26379,
- 26380,
- 26381,
- 26382,
- 26383,
- 26384,
- 26385,
- 26386,
- 26387,
- 26388,
- 26389,
- 26390,
- 26391,
- 26392,
- 26393,
- 26394,
- 26395,
- 26396,
- 26397,
- 26398,
- 26399,
- 26400,
- 26401,
- 26402,
- 26403,
- 26404,
- 26405,
- 26406,
- 26407,
- 26408,
- 26409,
- 26410,
- 26411,
- 26412,
- 26413,
- 26414,
- 26415,
- 26416,
- 26417,
- 26418,
- 26419,
- 26420,
- 26421,
- 26422,
- 26423,
- 26424,
- 26425,
- 26426,
- 26427,
- 26428,
- 26429,
- 26430,
- 26431,
- 26432,
- 26433,
- 26434,
- 26435,
- 26436,
- 26437,
- 26438,
- 26439,
- 26440,
- 26441,
- 26442,
- 26443,
- 26444,
- 26445,
- 26446,
- 26447,
- 26448,
- 26449,
- 26450,
- 26451,
- 26452,
- 26453,
- 26454,
- 26455,
- 26456,
- 26457,
- 26458,
- 26459,
- 26460,
- 26461,
- 26462,
- 26463,
- 26464,
- 26465,
- 26466,
- 26467,
- 26468,
- 26469,
- 26470,
- 26471,
- 26472,
- 26473,
- 26474,
- 26475,
- 26476,
- 26477,
- 26478,
- 26479,
- 26480,
- 26481,
- 26482,
- 26483,
- 26484,
- 26485,
- 26486,
- 26487,
- 26488,
- 26489,
- 26490,
- 26491,
- 26492,
- 26493,
- 26494,
- 26495,
- 26496,
- 26497,
- 26498,
- 26499,
- 26500,
- 26501,
- 26502,
- 26503,
- 26504,
- 26505,
- 26506,
- 26507,
- 26508,
- 26509,
- 26510,
- 26511,
- 26512,
- 26513,
- 26514,
- 26515,
- 26516,
- 26517,
- 26518,
- 26519,
- 26520,
- 26521,
- 26522,
- 26523,
- 26524,
- 26525,
- 26526,
- 26527,
- 26528,
- 26529,
- 26530,
- 26531,
- 26532,
- 26533,
- 26534,
- 26535,
- 26536,
- 26537,
- 26538,
- 26539,
- 26540,
- 26541,
- 26542,
- 26543,
- 26544,
- 26545,
- 26546,
- 26547,
- 26548,
- 26549,
- 26550,
- 26551,
- 26552,
- 26553,
- 26554,
- 26555,
- 26556,
- 26557,
- 26558,
- 26559,
- 26560,
- 26561,
- 26562,
- 26563,
- 26564,
- 26565,
- 26566,
- 26567,
- 26568,
- 26569,
- 26570,
- 26571,
- 26572,
- 26573,
- 26574,
- 26575,
- 26576,
- 26577,
- 26578,
- 26579,
- 26580,
- 26581,
- 26582,
- 26583,
- 26584,
- 26585,
- 26586,
- 26587,
- 26588,
- 26589,
- 26590,
- 26591,
- 26592,
- 26593,
- 26594,
- 26595,
- 26596,
- 26597,
- 26598,
- 26599,
- 26600,
- 26601,
- 26602,
- 26603,
- 26604,
- 26605,
- 26606,
- 26607,
- 26608,
- 26609,
- 26610,
- 26611,
- 26612,
- 26613,
- 26614,
- 26615,
- 26616,
- 26617,
- 26618,
- 26619,
- 26620,
- 26621,
- 26622,
- 26623,
- 26624,
- 26625,
- 26626,
- 26627,
- 26628,
- 26629,
- 26630,
- 26631,
- 26632,
- 26633,
- 26634,
- 26635,
- 26636,
- 26637,
- 26638,
- 26639,
- 26640,
- 26641,
- 26642,
- 26643,
- 26644,
- 26645,
- 26646,
- 26647,
- 26648,
- 26649,
- 26650,
- 26651,
- 26652,
- 26653,
- 26654,
- 26655,
- 26656,
- 26657,
- 26658,
- 26659,
- 26660,
- 26661,
- 26662,
- 26663,
- 26664,
- 26665,
- 26666,
- 26667,
- 26668,
- 26669,
- 26670,
- 26671,
- 26672,
- 26673,
- 26674,
- 26675,
- 26676,
- 26677,
- 26678,
- 26679,
- 26680,
- 26681,
- 26682,
- 26683,
- 26684,
- 26685,
- 26686,
- 26687,
- 26688,
- 26689,
- 26690,
- 26691,
- 26692,
- 26693,
- 26694,
- 26695,
- 26696,
- 26697,
- 26698,
- 26699,
- 26700,
- 26701,
- 26702,
- 26703,
- 26704,
- 26705,
- 26706,
- 26707,
- 26708,
- 26709,
- 26710,
- 26711,
- 26712,
- 26713,
- 26714,
- 26715,
- 26716,
- 26717,
- 26718,
- 26719,
- 26720,
- 26721,
- 26722,
- 26723,
- 26724,
- 26725,
- 26726,
- 26727,
- 26728,
- 26729,
- 26730,
- 26731,
- 26732,
- 26733,
- 26734,
- 26735,
- 26736,
- 26737,
- 26738,
- 26739,
- 26740,
- 26741,
- 26742,
- 26743,
- 26744,
- 26745,
- 26746,
- 26747,
- 26748,
- 26749,
- 26750,
- 26751,
- 26752,
- 26753,
- 26754,
- 26755,
- 26756,
- 26757,
- 26758,
- 26759,
- 26760,
- 26761,
- 26762,
- 26763,
- 26764,
- 26765,
- 26766,
- 26767,
- 26768,
- 26769,
- 26770,
- 26771,
- 26772,
- 26773,
- 26774,
- 26775,
- 26776,
- 26777,
- 26778,
- 26779,
- 26780,
- 26781,
- 26782,
- 26783,
- 26784,
- 26785,
- 26786,
- 26787,
- 26788,
- 26789,
- 26790,
- 26791,
- 26792,
- 26793,
- 26794,
- 26795,
- 26796,
- 26797,
- 26798,
- 26799,
- 26800,
- 26801,
- 26802,
- 26803,
- 26804,
- 26805,
- 26806,
- 26807,
- 26808,
- 26809,
- 26810,
- 26811,
- 26812,
- 26813,
- 26814,
- 26815,
- 26816,
- 26817,
- 26818,
- 26819,
- 26820,
- 26821,
- 26822,
- 26823,
- 26824,
- 26825,
- 26826,
- 26827,
- 26828,
- 26829,
- 26830,
- 26831,
- 26832,
- 26833,
- 26834,
- 26835,
- 26836,
- 26837,
- 26838,
- 26839,
- 26840,
- 26841,
- 26842,
- 26843,
- 26844,
- 26845,
- 26846,
- 26847,
- 26848,
- 26849,
- 26850,
- 26851,
- 26852,
- 26853,
- 26854,
- 26855,
- 26856,
- 26857,
- 26858,
- 26859,
- 26860,
- 26861,
- 26862,
- 26863,
- 26864,
- 26865,
- 26866,
- 26867,
- 26868,
- 26869,
- 26870,
- 26871,
- 26872,
- 26873,
- 26874,
- 26875,
- 26876,
- 26877,
- 26878,
- 26879,
- 26880,
- 26881,
- 26882,
- 26883,
- 26884,
- 26885,
- 26886,
- 26887,
- 26888,
- 26889,
- 26890,
- 26891,
- 26892,
- 26893,
- 26894,
- 26895,
- 26896,
- 26897,
- 26898,
- 26899,
- 26900,
- 26901,
- 26902,
- 26903,
- 26904,
- 26905,
- 26906,
- 26907,
- 26908,
- 26909,
- 26910,
- 26911,
- 26912,
- 26913,
- 26914,
- 26915,
- 26916,
- 26917,
- 26918,
- 26919,
- 26920,
- 26921,
- 26922,
- 26923,
- 26924,
- 26925,
- 26926,
- 26927,
- 26928,
- 26929,
- 26930,
- 26931,
- 26932,
- 26933,
- 26934,
- 26935,
- 26936,
- 26937,
- 26938,
- 26939,
- 26940,
- 26941,
- 26942,
- 26943,
- 26944,
- 26945,
- 26946,
- 26947,
- 26948,
- 26949,
- 26950,
- 26951,
- 26952,
- 26953,
- 26954,
- 26955,
- 26956,
- 26957,
- 26958,
- 26959,
- 26960,
- 26961,
- 26962,
- 26963,
- 26964,
- 26965,
- 26966,
- 26967,
- 26968,
- 26969,
- 26970,
- 26971,
- 26972,
- 26973,
- 26974,
- 26975,
- 26976,
- 26977,
- 26978,
- 26979,
- 26980,
- 26981,
- 26982,
- 26983,
- 26984,
- 26985,
- 26986,
- 26987,
- 26988,
- 26989,
- 26990,
- 26991,
- 26992,
- 26993,
- 26994,
- 26995,
- 26996,
- 26997,
- 26998,
- 26999,
- 27000,
- 27001,
- 27002,
- 27003,
- 27004,
- 27005,
- 27006,
- 27007,
- 27008,
- 27009,
- 27010,
- 27011,
- 27012,
- 27013,
- 27014,
- 27015,
- 27016,
- 27017,
- 27018,
- 27019,
- 27020,
- 27021,
- 27022,
- 27023,
- 27024,
- 27025,
- 27026,
- 27027,
- 27028,
- 27029,
- 27030,
- 27031,
- 27032,
- 27033,
- 27034,
- 27035,
- 27036,
- 27037,
- 27038,
- 27039,
- 27040,
- 27041,
- 27042,
- 27043,
- 27044,
- 27045,
- 27046,
- 27047,
- 27048,
- 27049,
- 27050,
- 27051,
- 27052,
- 27053,
- 27054,
- 27055,
- 27056,
- 27057,
- 27058,
- 27059,
- 27060,
- 27061,
- 27062,
- 27063,
- 27064,
- 27065,
- 27066,
- 27067,
- 27068,
- 27069,
- 27070,
- 27071,
- 27072,
- 27073,
- 27074,
- 27075,
- 27076,
- 27077,
- 27078,
- 27079,
- 27080,
- 27081,
- 27082,
- 27083,
- 27084,
- 27085,
- 27086,
- 27087,
- 27088,
- 27089,
- 27090,
- 27091,
- 27092,
- 27093,
- 27094,
- 27095,
- 27096,
- 27097,
- 27098,
- 27099,
- 27100,
- 27101,
- 27102,
- 27103,
- 27104,
- 27105,
- 27106,
- 27107,
- 27108,
- 27109,
- 27110,
- 27111,
- 27112,
- 27113,
- 27114,
- 27115,
- 27116,
- 27117,
- 27118,
- 27119,
- 27120,
- 27121,
- 27122,
- 27123,
- 27124,
- 27125,
- 27126,
- 27127,
- 27128,
- 27129,
- 27130,
- 27131,
- 27132,
- 27133,
- 27134,
- 27135,
- 27136,
- 27137,
- 27138,
- 27139,
- 27140,
- 27141,
- 27142,
- 27143,
- 27144,
- 27145,
- 27146,
- 27147,
- 27148,
- 27149,
- 27150,
- 27151,
- 27152,
- 27153,
- 27154,
- 27155,
- 27156,
- 27157,
- 27158,
- 27159,
- 27160,
- 27161,
- 27162,
- 27163,
- 27164,
- 27165,
- 27166,
- 27167,
- 27168,
- 27169,
- 27170,
- 27171,
- 27172,
- 27173,
- 27174,
- 27175,
- 27176,
- 27177,
- 27178,
- 27179,
- 27180,
- 27181,
- 27182,
- 27183,
- 27184,
- 27185,
- 27186,
- 27187,
- 27188,
- 27189,
- 27190,
- 27191,
- 27192,
- 27193,
- 27194,
- 27195,
- 27196,
- 27197,
- 27198,
- 27199,
- 27200,
- 27201,
- 27202,
- 27203,
- 27204,
- 27205,
- 27206,
- 27207,
- 27208,
- 27209,
- 27210,
- 27211,
- 27212,
- 27213,
- 27214,
- 27215,
- 27216,
- 27217,
- 27218,
- 27219,
- 27220,
- 27221,
- 27222,
- 27223,
- 27224,
- 27225,
- 27226,
- 27227,
- 27228,
- 27229,
- 27230,
- 27231,
- 27232,
- 27233,
- 27234,
- 27235,
- 27236,
- 27237,
- 27238,
- 27239,
- 27240,
- 27241,
- 27242,
- 27243,
- 27244,
- 27245,
- 27246,
- 27247,
- 27248,
- 27249,
- 27250,
- 27251,
- 27252,
- 27253,
- 27254,
- 27255,
- 27256,
- 27257,
- 27258,
- 27259,
- 27260,
- 27261,
- 27262,
- 27263,
- 27264,
- 27265,
- 27266,
- 27267,
- 27268,
- 27269,
- 27270,
- 27271,
- 27272,
- 27273,
- 27274,
- 27275,
- 27276,
- 27277,
- 27278,
- 27279,
- 27280,
- 27281,
- 27282,
- 27283,
- 27284,
- 27285,
- 27286,
- 27287,
- 27288,
- 27289,
- 27290,
- 27291,
- 27292,
- 27293,
- 27294,
- 27295,
- 27296,
- 27297,
- 27298,
- 27299,
- 27300,
- 27301,
- 27302,
- 27303,
- 27304,
- 27305,
- 27306,
- 27307,
- 27308,
- 27309,
- 27310,
- 27311,
- 27312,
- 27313,
- 27314,
- 27315,
- 27316,
- 27317,
- 27318,
- 27319,
- 27320,
- 27321,
- 27322,
- 27323,
- 27324,
- 27325,
- 27326,
- 27327,
- 27328,
- 27329,
- 27330,
- 27331,
- 27332,
- 27333,
- 27334,
- 27335,
- 27336,
- 27337,
- 27338,
- 27339,
- 27340,
- 27341,
- 27342,
- 27343,
- 27344,
- 27345,
- 27346,
- 27347,
- 27348,
- 27349,
- 27350,
- 27351,
- 27352,
- 27353,
- 27354,
- 27355,
- 27356,
- 27357,
- 27358,
- 27359,
- 27360,
- 27361,
- 27362,
- 27363,
- 27364,
- 27365,
- 27366,
- 27367,
- 27368,
- 27369,
- 27370,
- 27371,
- 27372,
- 27373,
- 27374,
- 27375,
- 27376,
- 27377,
- 27378,
- 27379,
- 27380,
- 27381,
- 27382,
- 27383,
- 27384,
- 27385,
- 27386,
- 27387,
- 27388,
- 27389,
- 27390,
- 27391,
- 27392,
- 27393,
- 27394,
- 27395,
- 27396,
- 27397,
- 27398,
- 27399,
- 27400,
- 27401,
- 27402,
- 27403,
- 27404,
- 27405,
- 27406,
- 27407,
- 27408,
- 27409,
- 27410,
- 27411,
- 27412,
- 27413,
- 27414,
- 27415,
- 27416,
- 27417,
- 27418,
- 27419,
- 27420,
- 27421,
- 27422,
- 27423,
- 27424,
- 27425,
- 27426,
- 27427,
- 27428,
- 27429,
- 27430,
- 27431,
- 27432,
- 27433,
- 27434,
- 27435,
- 27436,
- 27437,
- 27438,
- 27439,
- 27440,
- 27441,
- 27442,
- 27443,
- 27444,
- 27445,
- 27446,
- 27447,
- 27448,
- 27449,
- 27450,
- 27451,
- 27452,
- 27453,
- 27454,
- 27455,
- 27456,
- 27457,
- 27458,
- 27459,
- 27460,
- 27461,
- 27462,
- 27463,
- 27464,
- 27465,
- 27466,
- 27467,
- 27468,
- 27469,
- 27470,
- 27471,
- 27472,
- 27473,
- 27474,
- 27475,
- 27476,
- 27477,
- 27478,
- 27479,
- 27480,
- 27481,
- 27482,
- 27483,
- 27484,
- 27485,
- 27486,
- 27487,
- 27488,
- 27489,
- 27490,
- 27491,
- 27492,
- 27493,
- 27494,
- 27495,
- 27496,
- 27497,
- 27498,
- 27499,
- 27500,
- 27501,
- 27502,
- 27503,
- 27504,
- 27505,
- 27506,
- 27507,
- 27508,
- 27509,
- 27510,
- 27511,
- 27512,
- 27513,
- 27514,
- 27515,
- 27516,
- 27517,
- 27518,
- 27519,
- 27520,
- 27521,
- 27522,
- 27523,
- 27524,
- 27525,
- 27526,
- 27527,
- 27528,
- 27529,
- 27530,
- 27531,
- 27532,
- 27533,
- 27534,
- 27535,
- 27536,
- 27537,
- 27538,
- 27539,
- 27540,
- 27541,
- 27542,
- 27543,
- 27544,
- 27545,
- 27546,
- 27547,
- 27548,
- 27549,
- 27550,
- 27551,
- 27552,
- 27553,
- 27554,
- 27555,
- 27556,
- 27557,
- 27558,
- 27559,
- 27560,
- 27561,
- 27562,
- 27563,
- 27564,
- 27565,
- 27566,
- 27567,
- 27568,
- 27569,
- 27570,
- 27571,
- 27572,
- 27573,
- 27574,
- 27575,
- 27576,
- 27577,
- 27578,
- 27579,
- 27580,
- 27581,
- 27582,
- 27583,
- 27584,
- 27585,
- 27586,
- 27587,
- 27588,
- 27589,
- 27590,
- 27591,
- 27592,
- 27593,
- 27594,
- 27595,
- 27596,
- 27597,
- 27598,
- 27599,
- 27600,
- 27601,
- 27602,
- 27603,
- 27604,
- 27605,
- 27606,
- 27607,
- 27608,
- 27609,
- 27610,
- 27611,
- 27612,
- 27613,
- 27614,
- 27615,
- 27616,
- 27617,
- 27618,
- 27619,
- 27620,
- 27621,
- 27622,
- 27623,
- 27624,
- 27625,
- 27626,
- 27627,
- 27628,
- 27629,
- 27630,
- 27631,
- 27632,
- 27633,
- 27634,
- 27635,
- 27636,
- 27637,
- 27638,
- 27639,
- 27640,
- 27641,
- 27642,
- 27643,
- 27644,
- 27645,
- 27646,
- 27647,
- 27648,
- 27649,
- 27650,
- 27651,
- 27652,
- 27653,
- 27654,
- 27655,
- 27656,
- 27657,
- 27658,
- 27659,
- 27660,
- 27661,
- 27662,
- 27663,
- 27664,
- 27665,
- 27666,
- 27667,
- 27668,
- 27669,
- 27670,
- 27671,
- 27672,
- 27673,
- 27674,
- 27675,
- 27676,
- 27677,
- 27678,
- 27679,
- 27680,
- 27681,
- 27682,
- 27683,
- 27684,
- 27685,
- 27686,
- 27687,
- 27688,
- 27689,
- 27690,
- 27691,
- 27692,
- 27693,
- 27694,
- 27695,
- 27696,
- 27697,
- 27698,
- 27699,
- 27700,
- 27701,
- 27702,
- 27703,
- 27704,
- 27705,
- 27706,
- 27707,
- 27708,
- 27709,
- 27710,
- 27711,
- 27712,
- 27713,
- 27714,
- 27715,
- 27716,
- 27717,
- 27718,
- 27719,
- 27720,
- 27721,
- 27722,
- 27723,
- 27724,
- 27725,
- 27726,
- 27727,
- 27728,
- 27729,
- 27730,
- 27731,
- 27732,
- 27733,
- 27734,
- 27735,
- 27736,
- 27737,
- 27738,
- 27739,
- 27740,
- 27741,
- 27742,
- 27743,
- 27744,
- 27745,
- 27746,
- 27747,
- 27748,
- 27749,
- 27750,
- 27751,
- 27752,
- 27753,
- 27754,
- 27755,
- 27756,
- 27757,
- 27758,
- 27759,
- 27760,
- 27761,
- 27762,
- 27763,
- 27764,
- 27765,
- 27766,
- 27767,
- 27768,
- 27769,
- 27770,
- 27771,
- 27772,
- 27773,
- 27774,
- 27775,
- 27776,
- 27777,
- 27778,
- 27779,
- 27780,
- 27781,
- 27782,
- 27783,
- 27784,
- 27785,
- 27786,
- 27787,
- 27788,
- 27789,
- 27790,
- 27791,
- 27792,
- 27793,
- 27794,
- 27795,
- 27796,
- 27797,
- 27798,
- 27799,
- 27800,
- 27801,
- 27802,
- 27803,
- 27804,
- 27805,
- 27806,
- 27807,
- 27808,
- 27809,
- 27810,
- 27811,
- 27812,
- 27813,
- 27814,
- 27815,
- 27816,
- 27817,
- 27818,
- 27819,
- 27820,
- 27821,
- 27822,
- 27823,
- 27824,
- 27825,
- 27826,
- 27827,
- 27828,
- 27829,
- 27830,
- 27831,
- 27832,
- 27833,
- 27834,
- 27835,
- 27836,
- 27837,
- 27838,
- 27839,
- 27840,
- 27841,
- 27842,
- 27843,
- 27844,
- 27845,
- 27846,
- 27847,
- 27848,
- 27849,
- 27850,
- 27851,
- 27852,
- 27853,
- 27854,
- 27855,
- 27856,
- 27857,
- 27858,
- 27859,
- 27860,
- 27861,
- 27862,
- 27863,
- 27864,
- 27865,
- 27866,
- 27867,
- 27868,
- 27869,
- 27870,
- 27871,
- 27872,
- 27873,
- 27874,
- 27875,
- 27876,
- 27877,
- 27878,
- 27879,
- 27880,
- 27881,
- 27882,
- 27883,
- 27884,
- 27885,
- 27886,
- 27887,
- 27888,
- 27889,
- 27890,
- 27891,
- 27892,
- 27893,
- 27894,
- 27895,
- 27896,
- 27897,
- 27898,
- 27899,
- 27900,
- 27901,
- 27902,
- 27903,
- 27904,
- 27905,
- 27906,
- 27907,
- 27908,
- 27909,
- 27910,
- 27911,
- 27912,
- 27913,
- 27914,
- 27915,
- 27916,
- 27917,
- 27918,
- 27919,
- 27920,
- 27921,
- 27922,
- 27923,
- 27924,
- 27925,
- 27926,
- 27927,
- 27928,
- 27929,
- 27930,
- 27931,
- 27932,
- 27933,
- 27934,
- 27935,
- 27936,
- 27937,
- 27938,
- 27939,
- 27940,
- 27941,
- 27942,
- 27943,
- 27944,
- 27945,
- 27946,
- 27947,
- 27948,
- 27949,
- 27950,
- 27951,
- 27952,
- 27953,
- 27954,
- 27955,
- 27956,
- 27957,
- 27958,
- 27959,
- 27960,
- 27961,
- 27962,
- 27963,
- 27964,
- 27965,
- 27966,
- 27967,
- 27968,
- 27969,
- 27970,
- 27971,
- 27972,
- 27973,
- 27974,
- 27975,
- 27976,
- 27977,
- 27978,
- 27979,
- 27980,
- 27981,
- 27982,
- 27983,
- 27984,
- 27985,
- 27986,
- 27987,
- 27988,
- 27989,
- 27990,
- 27991,
- 27992,
- 27993,
- 27994,
- 27995,
- 27996,
- 27997,
- 27998,
- 27999,
- 28000,
- 28001,
- 28002,
- 28003,
- 28004,
- 28005,
- 28006,
- 28007,
- 28008,
- 28009,
- 28010,
- 28011,
- 28012,
- 28013,
- 28014,
- 28015,
- 28016,
- 28017,
- 28018,
- 28019,
- 28020,
- 28021,
- 28022,
- 28023,
- 28024,
- 28025,
- 28026,
- 28027,
- 28028,
- 28029,
- 28030,
- 28031,
- 28032,
- 28033,
- 28034,
- 28035,
- 28036,
- 28037,
- 28038,
- 28039,
- 28040,
- 28041,
- 28042,
- 28043,
- 28044,
- 28045,
- 28046,
- 28047,
- 28048,
- 28049,
- 28050,
- 28051,
- 28052,
- 28053,
- 28054,
- 28055,
- 28056,
- 28057,
- 28058,
- 28059,
- 28060,
- 28061,
- 28062,
- 28063,
- 28064,
- 28065,
- 28066,
- 28067,
- 28068,
- 28069,
- 28070,
- 28071,
- 28072,
- 28073,
- 28074,
- 28075,
- 28076,
- 28077,
- 28078,
- 28079,
- 28080,
- 28081,
- 28082,
- 28083,
- 28084,
- 28085,
- 28086,
- 28087,
- 28088,
- 28089,
- 28090,
- 28091,
- 28092,
- 28093,
- 28094,
- 28095,
- 28096,
- 28097,
- 28098,
- 28099,
- 28100,
- 28101,
- 28102,
- 28103,
- 28104,
- 28105,
- 28106,
- 28107,
- 28108,
- 28109,
- 28110,
- 28111,
- 28112,
- 28113,
- 28114,
- 28115,
- 28116,
- 28117,
- 28118,
- 28119,
- 28120,
- 28121,
- 28122,
- 28123,
- 28124,
- 28125,
- 28126,
- 28127,
- 28128,
- 28129,
- 28130,
- 28131,
- 28132,
- 28133,
- 28134,
- 28135,
- 28136,
- 28137,
- 28138,
- 28139,
- 28140,
- 28141,
- 28142,
- 28143,
- 28144,
- 28145,
- 28146,
- 28147,
- 28148,
- 28149,
- 28150,
- 28151,
- 28152,
- 28153,
- 28154,
- 28155,
- 28156,
- 28157,
- 28158,
- 28159,
- 28160,
- 28161,
- 28162,
- 28163,
- 28164,
- 28165,
- 28166,
- 28167,
- 28168,
- 28169,
- 28170,
- 28171,
- 28172,
- 28173,
- 28174,
- 28175,
- 28176,
- 28177,
- 28178,
- 28179,
- 28180,
- 28181,
- 28182,
- 28183,
- 28184,
- 28185,
- 28186,
- 28187,
- 28188,
- 28189,
- 28190,
- 28191,
- 28192,
- 28193,
- 28194,
- 28195,
- 28196,
- 28197,
- 28198,
- 28199,
- 28200,
- 28201,
- 28202,
- 28203,
- 28204,
- 28205,
- 28206,
- 28207,
- 28208,
- 28209,
- 28210,
- 28211,
- 28212,
- 28213,
- 28214,
- 28215,
- 28216,
- 28217,
- 28218,
- 28219,
- 28220,
- 28221,
- 28222,
- 28223,
- 28224,
- 28225,
- 28226,
- 28227,
- 28228,
- 28229,
- 28230,
- 28231,
- 28232,
- 28233,
- 28234,
- 28235,
- 28236,
- 28237,
- 28238,
- 28239,
- 28240,
- 28241,
- 28242,
- 28243,
- 28244,
- 28245,
- 28246,
- 28247,
- 28248,
- 28249,
- 28250,
- 28251,
- 28252,
- 28253,
- 28254,
- 28255,
- 28256,
- 28257,
- 28258,
- 28259,
- 28260,
- 28261,
- 28262,
- 28263,
- 28264,
- 28265,
- 28266,
- 28267,
- 28268,
- 28269,
- 28270,
- 28271,
- 28272,
- 28273,
- 28274,
- 28275,
- 28276,
- 28277,
- 28278,
- 28279,
- 28280,
- 28281,
- 28282,
- 28283,
- 28284,
- 28285,
- 28286,
- 28287,
- 28288,
- 28289,
- 28290,
- 28291,
- 28292,
- 28293,
- 28294,
- 28295,
- 28296,
- 28297,
- 28298,
- 28299,
- 28300,
- 28301,
- 28302,
- 28303,
- 28304,
- 28305,
- 28306,
- 28307,
- 28308,
- 28309,
- 28310,
- 28311,
- 28312,
- 28313,
- 28314,
- 28315,
- 28316,
- 28317,
- 28318,
- 28319,
- 28320,
- 28321,
- 28322,
- 28323,
- 28324,
- 28325,
- 28326,
- 28327,
- 28328,
- 28329,
- 28330,
- 28331,
- 28332,
- 28333,
- 28334,
- 28335,
- 28336,
- 28337,
- 28338,
- 28339,
- 28340,
- 28341,
- 28342,
- 28343,
- 28344,
- 28345,
- 28346,
- 28347,
- 28348,
- 28349,
- 28350,
- 28351,
- 28352,
- 28353,
- 28354,
- 28355,
- 28356,
- 28357,
- 28358,
- 28359,
- 28360,
- 28361,
- 28362,
- 28363,
- 28364,
- 28365,
- 28366,
- 28367,
- 28368,
- 28369,
- 28370,
- 28371,
- 28372,
- 28373,
- 28374,
- 28375,
- 28376,
- 28377,
- 28378,
- 28379,
- 28380,
- 28381,
- 28382,
- 28383,
- 28384,
- 28385,
- 28386,
- 28387,
- 28388,
- 28389,
- 28390,
- 28391,
- 28392,
- 28393,
- 28394,
- 28395,
- 28396,
- 28397,
- 28398,
- 28399,
- 28400,
- 28401,
- 28402,
- 28403,
- 28404,
- 28405,
- 28406,
- 28407,
- 28408,
- 28409,
- 28410,
- 28411,
- 28412,
- 28413,
- 28414,
- 28415,
- 28416,
- 28417,
- 28418,
- 28419,
- 28420,
- 28421,
- 28422,
- 28423,
- 28424,
- 28425,
- 28426,
- 28427,
- 28428,
- 28429,
- 28430,
- 28431,
- 28432,
- 28433,
- 28434,
- 28435,
- 28436,
- 28437,
- 28438,
- 28439,
- 28440,
- 28441,
- 28442,
- 28443,
- 28444,
- 28445,
- 28446,
- 28447,
- 28448,
- 28449,
- 28450,
- 28451,
- 28452,
- 28453,
- 28454,
- 28455,
- 28456,
- 28457,
- 28458,
- 28459,
- 28460,
- 28461,
- 28462,
- 28463,
- 28464,
- 28465,
- 28466,
- 28467,
- 28468,
- 28469,
- 28470,
- 28471,
- 28472,
- 28473,
- 28474,
- 28475,
- 28476,
- 28477,
- 28478,
- 28479,
- 28480,
- 28481,
- 28482,
- 28483,
- 28484,
- 28485,
- 28486,
- 28487,
- 28488,
- 28489,
- 28490,
- 28491,
- 28492,
- 28493,
- 28494,
- 28495,
- 28496,
- 28497,
- 28498,
- 28499,
- 28500,
- 28501,
- 28502,
- 28503,
- 28504,
- 28505,
- 28506,
- 28507,
- 28508,
- 28509,
- 28510,
- 28511,
- 28512,
- 28513,
- 28514,
- 28515,
- 28516,
- 28517,
- 28518,
- 28519,
- 28520,
- 28521,
- 28522,
- 28523,
- 28524,
- 28525,
- 28526,
- 28527,
- 28528,
- 28529,
- 28530,
- 28531,
- 28532,
- 28533,
- 28534,
- 28535,
- 28536,
- 28537,
- 28538,
- 28539,
- 28540,
- 28541,
- 28542,
- 28543,
- 28544,
- 28545,
- 28546,
- 28547,
- 28548,
- 28549,
- 28550,
- 28551,
- 28552,
- 28553,
- 28554,
- 28555,
- 28556,
- 28557,
- 28558,
- 28559,
- 28560,
- 28561,
- 28562,
- 28563,
- 28564,
- 28565,
- 28566,
- 28567,
- 28568,
- 28569,
- 28570,
- 28571,
- 28572,
- 28573,
- 28574,
- 28575,
- 28576,
- 28577,
- 28578,
- 28579,
- 28580,
- 28581,
- 28582,
- 28583,
- 28584,
- 28585,
- 28586,
- 28587,
- 28588,
- 28589,
- 28590,
- 28591,
- 28592,
- 28593,
- 28594,
- 28595,
- 28596,
- 28597,
- 28598,
- 28599,
- 28600,
- 28601,
- 28602,
- 28603,
- 28604,
- 28605,
- 28606,
- 28607,
- 28608,
- 28609,
- 28610,
- 28611,
- 28612,
- 28613,
- 28614,
- 28615,
- 28616,
- 28617,
- 28618,
- 28619,
- 28620,
- 28621,
- 28622,
- 28623,
- 28624,
- 28625,
- 28626,
- 28627,
- 28628,
- 28629,
- 28630,
- 28631,
- 28632,
- 28633,
- 28634,
- 28635,
- 28636,
- 28637,
- 28638,
- 28639,
- 28640,
- 28641,
- 28642,
- 28643,
- 28644,
- 28645,
- 28646,
- 28647,
- 28648,
- 28649,
- 28650,
- 28651,
- 28652,
- 28653,
- 28654,
- 28655,
- 28656,
- 28657,
- 28658,
- 28659,
- 28660,
- 28661,
- 28662,
- 28663,
- 28664,
- 28665,
- 28666,
- 28667,
- 28668,
- 28669,
- 28670,
- 28671,
- 28672,
- 28673,
- 28674,
- 28675,
- 28676,
- 28677,
- 28678,
- 28679,
- 28680,
- 28681,
- 28682,
- 28683,
- 28684,
- 28685,
- 28686,
- 28687,
- 28688,
- 28689,
- 28690,
- 28691,
- 28692,
- 28693,
- 28694,
- 28695,
- 28696,
- 28697,
- 28698,
- 28699,
- 28700,
- 28701,
- 28702,
- 28703,
- 28704,
- 28705,
- 28706,
- 28707,
- 28708,
- 28709,
- 28710,
- 28711,
- 28712,
- 28713,
- 28714,
- 28715,
- 28716,
- 28717,
- 28718,
- 28719,
- 28720,
- 28721,
- 28722,
- 28723,
- 28724,
- 28725,
- 28726,
- 28727,
- 28728,
- 28729,
- 28730,
- 28731,
- 28732,
- 28733,
- 28734,
- 28735,
- 28736,
- 28737,
- 28738,
- 28739,
- 28740,
- 28741,
- 28742,
- 28743,
- 28744,
- 28745,
- 28746,
- 28747,
- 28748,
- 28749,
- 28750,
- 28751,
- 28752,
- 28753,
- 28754,
- 28755,
- 28756,
- 28757,
- 28758,
- 28759,
- 28760,
- 28761,
- 28762,
- 28763,
- 28764,
- 28765,
- 28766,
- 28767,
- 28768,
- 28769,
- 28770,
- 28771,
- 28772,
- 28773,
- 28774,
- 28775,
- 28776,
- 28777,
- 28778,
- 28779,
- 28780,
- 28781,
- 28782,
- 28783,
- 28784,
- 28785,
- 28786,
- 28787,
- 28788,
- 28789,
- 28790,
- 28791,
- 28792,
- 28793,
- 28794,
- 28795,
- 28796,
- 28797,
- 28798,
- 28799,
- 28800,
- 28801,
- 28802,
- 28803,
- 28804,
- 28805,
- 28806,
- 28807,
- 28808,
- 28809,
- 28810,
- 28811,
- 28812,
- 28813,
- 28814,
- 28815,
- 28816,
- 28817,
- 28818,
- 28819,
- 28820,
- 28821,
- 28822,
- 28823,
- 28824,
- 28825,
- 28826,
- 28827,
- 28828,
- 28829,
- 28830,
- 28831,
- 28832,
- 28833,
- 28834,
- 28835,
- 28836,
- 28837,
- 28838,
- 28839,
- 28840,
- 28841,
- 28842,
- 28843,
- 28844,
- 28845,
- 28846,
- 28847,
- 28848,
- 28849,
- 28850,
- 28851,
- 28852,
- 28853,
- 28854,
- 28855,
- 28856,
- 28857,
- 28858,
- 28859,
- 28860,
- 28861,
- 28862,
- 28863,
- 28864,
- 28865,
- 28866,
- 28867,
- 28868,
- 28869,
- 28870,
- 28871,
- 28872,
- 28873,
- 28874,
- 28875,
- 28876,
- 28877,
- 28878,
- 28879,
- 28880,
- 28881,
- 28882,
- 28883,
- 28884,
- 28885,
- 28886,
- 28887,
- 28888,
- 28889,
- 28890,
- 28891,
- 28892,
- 28893,
- 28894,
- 28895,
- 28896,
- 28897,
- 28898,
- 28899,
- 28900,
- 28901,
- 28902,
- 28903,
- 28904,
- 28905,
- 28906,
- 28907,
- 28908,
- 28909,
- 28910,
- 28911,
- 28912,
- 28913,
- 28914,
- 28915,
- 28916,
- 28917,
- 28918,
- 28919,
- 28920,
- 28921,
- 28922,
- 28923,
- 28924,
- 28925,
- 28926,
- 28927,
- 28928,
- 28929,
- 28930,
- 28931,
- 28932,
- 28933,
- 28934,
- 28935,
- 28936,
- 28937,
- 28938,
- 28939,
- 28940,
- 28941,
- 28942,
- 28943,
- 28944,
- 28945,
- 28946,
- 28947,
- 28948,
- 28949,
- 28950,
- 28951,
- 28952,
- 28953,
- 28954,
- 28955,
- 28956,
- 28957,
- 28958,
- 28959,
- 28960,
- 28961,
- 28962,
- 28963,
- 28964,
- 28965,
- 28966,
- 28967,
- 28968,
- 28969,
- 28970,
- 28971,
- 28972,
- 28973,
- 28974,
- 28975,
- 28976,
- 28977,
- 28978,
- 28979,
- 28980,
- 28981,
- 28982,
- 28983,
- 28984,
- 28985,
- 28986,
- 28987,
- 28988,
- 28989,
- 28990,
- 28991,
- 28992,
- 28993,
- 28994,
- 28995,
- 28996,
- 28997,
- 28998,
- 28999,
- 29000,
- 29001,
- 29002,
- 29003,
- 29004,
- 29005,
- 29006,
- 29007,
- 29008,
- 29009,
- 29010,
- 29011,
- 29012,
- 29013,
- 29014,
- 29015,
- 29016,
- 29017,
- 29018,
- 29019,
- 29020,
- 29021,
- 29022,
- 29023,
- 29024,
- 29025,
- 29026,
- 29027,
- 29028,
- 29029,
- 29030,
- 29031,
- 29032,
- 29033,
- 29034,
- 29035,
- 29036,
- 29037,
- 29038,
- 29039,
- 29040,
- 29041,
- 29042,
- 29043,
- 29044,
- 29045,
- 29046,
- 29047,
- 29048,
- 29049,
- 29050,
- 29051,
- 29052,
- 29053,
- 29054,
- 29055,
- 29056,
- 29057,
- 29058,
- 29059,
- 29060,
- 29061,
- 29062,
- 29063,
- 29064,
- 29065,
- 29066,
- 29067,
- 29068,
- 29069,
- 29070,
- 29071,
- 29072,
- 29073,
- 29074,
- 29075,
- 29076,
- 29077,
- 29078,
- 29079,
- 29080,
- 29081,
- 29082,
- 29083,
- 29084,
- 29085,
- 29086,
- 29087,
- 29088,
- 29089,
- 29090,
- 29091,
- 29092,
- 29093,
- 29094,
- 29095,
- 29096,
- 29097,
- 29098,
- 29099,
- 29100,
- 29101,
- 29102,
- 29103,
- 29104,
- 29105,
- 29106,
- 29107,
- 29108,
- 29109,
- 29110,
- 29111,
- 29112,
- 29113,
- 29114,
- 29115,
- 29116,
- 29117,
- 29118,
- 29119,
- 29120,
- 29121,
- 29122,
- 29123,
- 29124,
- 29125,
- 29126,
- 29127,
- 29128,
- 29129,
- 29130,
- 29131,
- 29132,
- 29133,
- 29134,
- 29135,
- 29136,
- 29137,
- 29138,
- 29139,
- 29140,
- 29141,
- 29142,
- 29143,
- 29144,
- 29145,
- 29146,
- 29147,
- 29148,
- 29149,
- 29150,
- 29151,
- 29152,
- 29153,
- 29154,
- 29155,
- 29156,
- 29157,
- 29158,
- 29159,
- 29160,
- 29161,
- 29162,
- 29163,
- 29164,
- 29165,
- 29166,
- 29167,
- 29168,
- 29169,
- 29170,
- 29171,
- 29172,
- 29173,
- 29174,
- 29175,
- 29176,
- 29177,
- 29178,
- 29179,
- 29180,
- 29181,
- 29182,
- 29183,
- 29184,
- 29185,
- 29186,
- 29187,
- 29188,
- 29189,
- 29190,
- 29191,
- 29192,
- 29193,
- 29194,
- 29195,
- 29196,
- 29197,
- 29198,
- 29199,
- 29200,
- 29201,
- 29202,
- 29203,
- 29204,
- 29205,
- 29206,
- 29207,
- 29208,
- 29209,
- 29210,
- 29211,
- 29212,
- 29213,
- 29214,
- 29215,
- 29216,
- 29217,
- 29218,
- 29219,
- 29220,
- 29221,
- 29222,
- 29223,
- 29224,
- 29225,
- 29226,
- 29227,
- 29228,
- 29229,
- 29230,
- 29231,
- 29232,
- 29233,
- 29234,
- 29235,
- 29236,
- 29237,
- 29238,
- 29239,
- 29240,
- 29241,
- 29242,
- 29243,
- 29244,
- 29245,
- 29246,
- 29247,
- 29248,
- 29249,
- 29250,
- 29251,
- 29252,
- 29253,
- 29254,
- 29255,
- 29256,
- 29257,
- 29258,
- 29259,
- 29260,
- 29261,
- 29262,
- 29263,
- 29264,
- 29265,
- 29266,
- 29267,
- 29268,
- 29269,
- 29270,
- 29271,
- 29272,
- 29273,
- 29274,
- 29275,
- 29276,
- 29277,
- 29278,
- 29279,
- 29280,
- 29281,
- 29282,
- 29283,
- 29284,
- 29285,
- 29286,
- 29287,
- 29288,
- 29289,
- 29290,
- 29291,
- 29292,
- 29293,
- 29294,
- 29295,
- 29296,
- 29297,
- 29298,
- 29299,
- 29300,
- 29301,
- 29302,
- 29303,
- 29304,
- 29305,
- 29306,
- 29307,
- 29308,
- 29309,
- 29310,
- 29311,
- 29312,
- 29313,
- 29314,
- 29315,
- 29316,
- 29317,
- 29318,
- 29319,
- 29320,
- 29321,
- 29322,
- 29323,
- 29324,
- 29325,
- 29326,
- 29327,
- 29328,
- 29329,
- 29330,
- 29331,
- 29332,
- 29333,
- 29334,
- 29335,
- 29336,
- 29337,
- 29338,
- 29339,
- 29340,
- 29341,
- 29342,
- 29343,
- 29344,
- 29345,
- 29346,
- 29347,
- 29348,
- 29349,
- 29350,
- 29351,
- 29352,
- 29353,
- 29354,
- 29355,
- 29356,
- 29357,
- 29358,
- 29359,
- 29360,
- 29361,
- 29362,
- 29363,
- 29364,
- 29365,
- 29366,
- 29367,
- 29368,
- 29369,
- 29370,
- 29371,
- 29372,
- 29373,
- 29374,
- 29375,
- 29376,
- 29377,
- 29378,
- 29379,
- 29380,
- 29381,
- 29382,
- 29383,
- 29384,
- 29385,
- 29386,
- 29387,
- 29388,
- 29389,
- 29390,
- 29391,
- 29392,
- 29393,
- 29394,
- 29395,
- 29396,
- 29397,
- 29398,
- 29399,
- 29400,
- 29401,
- 29402,
- 29403,
- 29404,
- 29405,
- 29406,
- 29407,
- 29408,
- 29409,
- 29410,
- 29411,
- 29412,
- 29413,
- 29414,
- 29415,
- 29416,
- 29417,
- 29418,
- 29419,
- 29420,
- 29421,
- 29422,
- 29423,
- 29424,
- 29425,
- 29426,
- 29427,
- 29428,
- 29429,
- 29430,
- 29431,
- 29432,
- 29433,
- 29434,
- 29435,
- 29436,
- 29437,
- 29438,
- 29439,
- 29440,
- 29441,
- 29442,
- 29443,
- 29444,
- 29445,
- 29446,
- 29447,
- 29448,
- 29449,
- 29450,
- 29451,
- 29452,
- 29453,
- 29454,
- 29455,
- 29456,
- 29457,
- 29458,
- 29459,
- 29460,
- 29461,
- 29462,
- 29463,
- 29464,
- 29465,
- 29466,
- 29467,
- 29468,
- 29469,
- 29470,
- 29471,
- 29472,
- 29473,
- 29474,
- 29475,
- 29476,
- 29477,
- 29478,
- 29479,
- 29480,
- 29481,
- 29482,
- 29483,
- 29484,
- 29485,
- 29486,
- 29487,
- 29488,
- 29489,
- 29490,
- 29491,
- 29492,
- 29493,
- 29494,
- 29495,
- 29496,
- 29497,
- 29498,
- 29499,
- 29500,
- 29501,
- 29502,
- 29503,
- 29504,
- 29505,
- 29506,
- 29507,
- 29508,
- 29509,
- 29510,
- 29511,
- 29512,
- 29513,
- 29514,
- 29515,
- 29516,
- 29517,
- 29518,
- 29519,
- 29520,
- 29521,
- 29522,
- 29523,
- 29524,
- 29525,
- 29526,
- 29527,
- 29528,
- 29529,
- 29530,
- 29531,
- 29532,
- 29533,
- 29534,
- 29535,
- 29536,
- 29537,
- 29538,
- 29539,
- 29540,
- 29541,
- 29542,
- 29543,
- 29544,
- 29545,
- 29546,
- 29547,
- 29548,
- 29549,
- 29550,
- 29551,
- 29552,
- 29553,
- 29554,
- 29555,
- 29556,
- 29557,
- 29558,
- 29559,
- 29560,
- 29561,
- 29562,
- 29563,
- 29564,
- 29565,
- 29566,
- 29567,
- 29568,
- 29569,
- 29570,
- 29571,
- 29572,
- 29573,
- 29574,
- 29575,
- 29576,
- 29577,
- 29578,
- 29579,
- 29580,
- 29581,
- 29582,
- 29583,
- 29584,
- 29585,
- 29586,
- 29587,
- 29588,
- 29589,
- 29590,
- 29591,
- 29592,
- 29593,
- 29594,
- 29595,
- 29596,
- 29597,
- 29598,
- 29599,
- 29600,
- 29601,
- 29602,
- 29603,
- 29604,
- 29605,
- 29606,
- 29607,
- 29608,
- 29609,
- 29610,
- 29611,
- 29612,
- 29613,
- 29614,
- 29615,
- 29616,
- 29617,
- 29618,
- 29619,
- 29620,
- 29621,
- 29622,
- 29623,
- 29624,
- 29625,
- 29626,
- 29627,
- 29628,
- 29629,
- 29630,
- 29631,
- 29632,
- 29633,
- 29634,
- 29635,
- 29636,
- 29637,
- 29638,
- 29639,
- 29640,
- 29641,
- 29642,
- 29643,
- 29644,
- 29645,
- 29646,
- 29647,
- 29648,
- 29649,
- 29650,
- 29651,
- 29652,
- 29653,
- 29654,
- 29655,
- 29656,
- 29657,
- 29658,
- 29659,
- 29660,
- 29661,
- 29662,
- 29663,
- 29664,
- 29665,
- 29666,
- 29667,
- 29668,
- 29669,
- 29670,
- 29671,
- 29672,
- 29673,
- 29674,
- 29675,
- 29676,
- 29677,
- 29678,
- 29679,
- 29680,
- 29681,
- 29682,
- 29683,
- 29684,
- 29685,
- 29686,
- 29687,
- 29688,
- 29689,
- 29690,
- 29691,
- 29692,
- 29693,
- 29694,
- 29695,
- 29696,
- 29697,
- 29698,
- 29699,
- 29700,
- 29701,
- 29702,
- 29703,
- 29704,
- 29705,
- 29706,
- 29707,
- 29708,
- 29709,
- 29710,
- 29711,
- 29712,
- 29713,
- 29714,
- 29715,
- 29716,
- 29717,
- 29718,
- 29719,
- 29720,
- 29721,
- 29722,
- 29723,
- 29724,
- 29725,
- 29726,
- 29727,
- 29728,
- 29729,
- 29730,
- 29731,
- 29732,
- 29733,
- 29734,
- 29735,
- 29736,
- 29737,
- 29738,
- 29739,
- 29740,
- 29741,
- 29742,
- 29743,
- 29744,
- 29745,
- 29746,
- 29747,
- 29748,
- 29749,
- 29750,
- 29751,
- 29752,
- 29753,
- 29754,
- 29755,
- 29756,
- 29757,
- 29758,
- 29759,
- 29760,
- 29761,
- 29762,
- 29763,
- 29764,
- 29765,
- 29766,
- 29767,
- 29768,
- 29769,
- 29770,
- 29771,
- 29772,
- 29773,
- 29774,
- 29775,
- 29776,
- 29777,
- 29778,
- 29779,
- 29780,
- 29781,
- 29782,
- 29783,
- 29784,
- 29785,
- 29786,
- 29787,
- 29788,
- 29789,
- 29790,
- 29791,
- 29792,
- 29793,
- 29794,
- 29795,
- 29796,
- 29797,
- 29798,
- 29799,
- 29800,
- 29801,
- 29802,
- 29803,
- 29804,
- 29805,
- 29806,
- 29807,
- 29808,
- 29809,
- 29810,
- 29811,
- 29812,
- 29813,
- 29814,
- 29815,
- 29816,
- 29817,
- 29818,
- 29819,
- 29820,
- 29821,
- 29822,
- 29823,
- 29824,
- 29825,
- 29826,
- 29827,
- 29828,
- 29829,
- 29830,
- 29831,
- 29832,
- 29833,
- 29834,
- 29835,
- 29836,
- 29837,
- 29838,
- 29839,
- 29840,
- 29841,
- 29842,
- 29843,
- 29844,
- 29845,
- 29846,
- 29847,
- 29848,
- 29849,
- 29850,
- 29851,
- 29852,
- 29853,
- 29854,
- 29855,
- 29856,
- 29857,
- 29858,
- 29859,
- 29860,
- 29861,
- 29862,
- 29863,
- 29864,
- 29865,
- 29866,
- 29867,
- 29868,
- 29869,
- 29870,
- 29871,
- 29872,
- 29873,
- 29874,
- 29875,
- 29876,
- 29877,
- 29878,
- 29879,
- 29880,
- 29881,
- 29882,
- 29883,
- 29884,
- 29885,
- 29886,
- 29887,
- 29888,
- 29889,
- 29890,
- 29891,
- 29892,
- 29893,
- 29894,
- 29895,
- 29896,
- 29897,
- 29898,
- 29899,
- 29900,
- 29901,
- 29902,
- 29903,
- 29904,
- 29905,
- 29906,
- 29907,
- 29908,
- 29909,
- 29910,
- 29911,
- 29912,
- 29913,
- 29914,
- 29915,
- 29916,
- 29917,
- 29918,
- 29919,
- 29920,
- 29921,
- 29922,
- 29923,
- 29924,
- 29925,
- 29926,
- 29927,
- 29928,
- 29929,
- 29930,
- 29931,
- 29932,
- 29933,
- 29934,
- 29935,
- 29936,
- 29937,
- 29938,
- 29939,
- 29940,
- 29941,
- 29942,
- 29943,
- 29944,
- 29945,
- 29946,
- 29947,
- 29948,
- 29949,
- 29950,
- 29951,
- 29952,
- 29953,
- 29954,
- 29955,
- 29956,
- 29957,
- 29958,
- 29959,
- 29960,
- 29961,
- 29962,
- 29963,
- 29964,
- 29965,
- 29966,
- 29967,
- 29968,
- 29969,
- 29970,
- 29971,
- 29972,
- 29973,
- 29974,
- 29975,
- 29976,
- 29977,
- 29978,
- 29979,
- 29980,
- 29981,
- 29982,
- 29983,
- 29984,
- 29985,
- 29986,
- 29987,
- 29988,
- 29989,
- 29990,
- 29991,
- 29992,
- 29993,
- 29994,
- 29995,
- 29996,
- 29997,
- 29998,
- 29999,
- 30000,
- 30001,
- 30002,
- 30003,
- 30004,
- 30005,
- 30006,
- 30007,
- 30008,
- 30009,
- 30010,
- 30011,
- 30012,
- 30013,
- 30014,
- 30015,
- 30016,
- 30017,
- 30018,
- 30019,
- 30020,
- 30021,
- 30022,
- 30023,
- 30024,
- 30025,
- 30026,
- 30027,
- 30028,
- 30029,
- 30030,
- 30031,
- 30032,
- 30033,
- 30034,
- 30035,
- 30036,
- 30037,
- 30038,
- 30039,
- 30040,
- 30041,
- 30042,
- 30043,
- 30044,
- 30045,
- 30046,
- 30047,
- 30048,
- 30049,
- 30050,
- 30051,
- 30052,
- 30053,
- 30054,
- 30055,
- 30056,
- 30057,
- 30058,
- 30059,
- 30060,
- 30061,
- 30062,
- 30063,
- 30064,
- 30065,
- 30066,
- 30067,
- 30068,
- 30069,
- 30070,
- 30071,
- 30072,
- 30073,
- 30074,
- 30075,
- 30076,
- 30077,
- 30078,
- 30079,
- 30080,
- 30081,
- 30082,
- 30083,
- 30084,
- 30085,
- 30086,
- 30087,
- 30088,
- 30089,
- 30090,
- 30091,
- 30092,
- 30093,
- 30094,
- 30095,
- 30096,
- 30097,
- 30098,
- 30099,
- 30100,
- 30101,
- 30102,
- 30103,
- 30104,
- 30105,
- 30106,
- 30107,
- 30108,
- 30109,
- 30110,
- 30111,
- 30112,
- 30113,
- 30114,
- 30115,
- 30116,
- 30117,
- 30118,
- 30119,
- 30120,
- 30121,
- 30122,
- 30123,
- 30124,
- 30125,
- 30126,
- 30127,
- 30128,
- 30129,
- 30130,
- 30131,
- 30132,
- 30133,
- 30134,
- 30135,
- 30136,
- 30137,
- 30138,
- 30139,
- 30140,
- 30141,
- 30142,
- 30143,
- 30144,
- 30145,
- 30146,
- 30147,
- 30148,
- 30149,
- 30150,
- 30151,
- 30152,
- 30153,
- 30154,
- 30155,
- 30156,
- 30157,
- 30158,
- 30159,
- 30160,
- 30161,
- 30162,
- 30163,
- 30164,
- 30165,
- 30166,
- 30167,
- 30168,
- 30169,
- 30170,
- 30171,
- 30172,
- 30173,
- 30174,
- 30175,
- 30176,
- 30177,
- 30178,
- 30179,
- 30180,
- 30181,
- 30182,
- 30183,
- 30184,
- 30185,
- 30186,
- 30187,
- 30188,
- 30189,
- 30190,
- 30191,
- 30192,
- 30193,
- 30194,
- 30195,
- 30196,
- 30197,
- 30198,
- 30199,
- 30200,
- 30201,
- 30202,
- 30203,
- 30204,
- 30205,
- 30206,
- 30207,
- 30208,
- 30209,
- 30210,
- 30211,
- 30212,
- 30213,
- 30214,
- 30215,
- 30216,
- 30217,
- 30218,
- 30219,
- 30220,
- 30221,
- 30222,
- 30223,
- 30224,
- 30225,
- 30226,
- 30227,
- 30228,
- 30229,
- 30230,
- 30231,
- 30232,
- 30233,
- 30234,
- 30235,
- 30236,
- 30237,
- 30238,
- 30239,
- 30240,
- 30241,
- 30242,
- 30243,
- 30244,
- 30245,
- 30246,
- 30247,
- 30248,
- 30249,
- 30250,
- 30251,
- 30252,
- 30253,
- 30254,
- 30255,
- 30256,
- 30257,
- 30258,
- 30259,
- 30260,
- 30261,
- 30262,
- 30263,
- 30264,
- 30265,
- 30266,
- 30267,
- 30268,
- 30269,
- 30270,
- 30271,
- 30272,
- 30273,
- 30274,
- 30275,
- 30276,
- 30277,
- 30278,
- 30279,
- 30280,
- 30281,
- 30282,
- 30283,
- 30284,
- 30285,
- 30286,
- 30287,
- 30288,
- 30289,
- 30290,
- 30291,
- 30292,
- 30293,
- 30294,
- 30295,
- 30296,
- 30297,
- 30298,
- 30299,
- 30300,
- 30301,
- 30302,
- 30303,
- 30304,
- 30305,
- 30306,
- 30307,
- 30308,
- 30309,
- 30310,
- 30311,
- 30312,
- 30313,
- 30314,
- 30315,
- 30316,
- 30317,
- 30318,
- 30319,
- 30320,
- 30321,
- 30322,
- 30323,
- 30324,
- 30325,
- 30326,
- 30327,
- 30328,
- 30329,
- 30330,
- 30331,
- 30332,
- 30333,
- 30334,
- 30335,
- 30336,
- 30337,
- 30338,
- 30339,
- 30340,
- 30341,
- 30342,
- 30343,
- 30344,
- 30345,
- 30346,
- 30347,
- 30348,
- 30349,
- 30350,
- 30351,
- 30352,
- 30353,
- 30354,
- 30355,
- 30356,
- 30357,
- 30358,
- 30359,
- 30360,
- 30361,
- 30362,
- 30363,
- 30364,
- 30365,
- 30366,
- 30367,
- 30368,
- 30369,
- 30370,
- 30371,
- 30372,
- 30373,
- 30374,
- 30375,
- 30376,
- 30377,
- 30378,
- 30379,
- 30380,
- 30381,
- 30382,
- 30383,
- 30384,
- 30385,
- 30386,
- 30387,
- 30388,
- 30389,
- 30390,
- 30391,
- 30392,
- 30393,
- 30394,
- 30395,
- 30396,
- 30397,
- 30398,
- 30399,
- 30400,
- 30401,
- 30402,
- 30403,
- 30404,
- 30405,
- 30406,
- 30407,
- 30408,
- 30409,
- 30410,
- 30411,
- 30412,
- 30413,
- 30414,
- 30415,
- 30416,
- 30417,
- 30418,
- 30419,
- 30420,
- 30421,
- 30422,
- 30423,
- 30424,
- 30425,
- 30426,
- 30427,
- 30428,
- 30429,
- 30430,
- 30431,
- 30432,
- 30433,
- 30434,
- 30435,
- 30436,
- 30437,
- 30438,
- 30439,
- 30440,
- 30441,
- 30442,
- 30443,
- 30444,
- 30445,
- 30446,
- 30447,
- 30448,
- 30449,
- 30450,
- 30451,
- 30452,
- 30453,
- 30454,
- 30455,
- 30456,
- 30457,
- 30458,
- 30459,
- 30460,
- 30461,
- 30462,
- 30463,
- 30464,
- 30465,
- 30466,
- 30467,
- 30468,
- 30469,
- 30470,
- 30471,
- 30472,
- 30473,
- 30474,
- 30475,
- 30476,
- 30477,
- 30478,
- 30479,
- 30480,
- 30481,
- 30482,
- 30483,
- 30484,
- 30485,
- 30486,
- 30487,
- 30488,
- 30489,
- 30490,
- 30491,
- 30492,
- 30493,
- 30494,
- 30495,
- 30496,
- 30497,
- 30498,
- 30499,
- 30500,
- 30501,
- 30502,
- 30503,
- 30504,
- 30505,
- 30506,
- 30507,
- 30508,
- 30509,
- 30510,
- 30511,
- 30512,
- 30513,
- 30514,
- 30515,
- 30516,
- 30517,
- 30518,
- 30519,
- 30520,
- 30521,
- 30522,
- 30523,
- 30524,
- 30525,
- 30526,
- 30527,
- 30528,
- 30529,
- 30530,
- 30531,
- 30532,
- 30533,
- 30534,
- 30535,
- 30536,
- 30537,
- 30538,
- 30539,
- 30540,
- 30541,
- 30542,
- 30543,
- 30544,
- 30545,
- 30546,
- 30547,
- 30548,
- 30549,
- 30550,
- 30551,
- 30552,
- 30553,
- 30554,
- 30555,
- 30556,
- 30557,
- 30558,
- 30559,
- 30560,
- 30561,
- 30562,
- 30563,
- 30564,
- 30565,
- 30566,
- 30567,
- 30568,
- 30569,
- 30570,
- 30571,
- 30572,
- 30573,
- 30574,
- 30575,
- 30576,
- 30577,
- 30578,
- 30579,
- 30580,
- 30581,
- 30582,
- 30583,
- 30584,
- 30585,
- 30586,
- 30587,
- 30588,
- 30589,
- 30590,
- 30591,
- 30592,
- 30593,
- 30594,
- 30595,
- 30596,
- 30597,
- 30598,
- 30599,
- 30600,
- 30601,
- 30602,
- 30603,
- 30604,
- 30605,
- 30606,
- 30607,
- 30608,
- 30609,
- 30610,
- 30611,
- 30612,
- 30613,
- 30614,
- 30615,
- 30616,
- 30617,
- 30618,
- 30619,
- 30620,
- 30621,
- 30622,
- 30623,
- 30624,
- 30625,
- 30626,
- 30627,
- 30628,
- 30629,
- 30630,
- 30631,
- 30632,
- 30633,
- 30634,
- 30635,
- 30636,
- 30637,
- 30638,
- 30639,
- 30640,
- 30641,
- 30642,
- 30643,
- 30644,
- 30645,
- 30646,
- 30647,
- 30648,
- 30649,
- 30650,
- 30651,
- 30652,
- 30653,
- 30654,
- 30655,
- 30656,
- 30657,
- 30658,
- 30659,
- 30660,
- 30661,
- 30662,
- 30663,
- 30664,
- 30665,
- 30666,
- 30667,
- 30668,
- 30669,
- 30670,
- 30671,
- 30672,
- 30673,
- 30674,
- 30675,
- 30676,
- 30677,
- 30678,
- 30679,
- 30680,
- 30681,
- 30682,
- 30683,
- 30684,
- 30685,
- 30686,
- 30687,
- 30688,
- 30689,
- 30690,
- 30691,
- 30692,
- 30693,
- 30694,
- 30695,
- 30696,
- 30697,
- 30698,
- 30699,
- 30700,
- 30701,
- 30702,
- 30703,
- 30704,
- 30705,
- 30706,
- 30707,
- 30708,
- 30709,
- 30710,
- 30711,
- 30712,
- 30713,
- 30714,
- 30715,
- 30716,
- 30717,
- 30718,
- 30719,
- 30720,
- 30721,
- 30722,
- 30723,
- 30724,
- 30725,
- 30726,
- 30727,
- 30728,
- 30729,
- 30730,
- 30731,
- 30732,
- 30733,
- 30734,
- 30735,
- 30736,
- 30737,
- 30738,
- 30739,
- 30740,
- 30741,
- 30742,
- 30743,
- 30744,
- 30745,
- 30746,
- 30747,
- 30748,
- 30749,
- 30750,
- 30751,
- 30752,
- 30753,
- 30754,
- 30755,
- 30756,
- 30757,
- 30758,
- 30759,
- 30760,
- 30761,
- 30762,
- 30763,
- 30764,
- 30765,
- 30766,
- 30767,
- 30768,
- 30769,
- 30770,
- 30771,
- 30772,
- 30773,
- 30774,
- 30775,
- 30776,
- 30777,
- 30778,
- 30779,
- 30780,
- 30781,
- 30782,
- 30783,
- 30784,
- 30785,
- 30786,
- 30787,
- 30788,
- 30789,
- 30790,
- 30791,
- 30792,
- 30793,
- 30794,
- 30795,
- 30796,
- 30797,
- 30798,
- 30799,
- 30800,
- 30801,
- 30802,
- 30803,
- 30804,
- 30805,
- 30806,
- 30807,
- 30808,
- 30809,
- 30810,
- 30811,
- 30812,
- 30813,
- 30814,
- 30815,
- 30816,
- 30817,
- 30818,
- 30819,
- 30820,
- 30821,
- 30822,
- 30823,
- 30824,
- 30825,
- 30826,
- 30827,
- 30828,
- 30829,
- 30830,
- 30831,
- 30832,
- 30833,
- 30834,
- 30835,
- 30836,
- 30837,
- 30838,
- 30839,
- 30840,
- 30841,
- 30842,
- 30843,
- 30844,
- 30845,
- 30846,
- 30847,
- 30848,
- 30849,
- 30850,
- 30851,
- 30852,
- 30853,
- 30854,
- 30855,
- 30856,
- 30857,
- 30858,
- 30859,
- 30860,
- 30861,
- 30862,
- 30863,
- 30864,
- 30865,
- 30866,
- 30867,
- 30868,
- 30869,
- 30870,
- 30871,
- 30872,
- 30873,
- 30874,
- 30875,
- 30876,
- 30877,
- 30878,
- 30879,
- 30880,
- 30881,
- 30882,
- 30883,
- 30884,
- 30885,
- 30886,
- 30887,
- 30888,
- 30889,
- 30890,
- 30891,
- 30892,
- 30893,
- 30894,
- 30895,
- 30896,
- 30897,
- 30898,
- 30899,
- 30900,
- 30901,
- 30902,
- 30903,
- 30904,
- 30905,
- 30906,
- 30907,
- 30908,
- 30909,
- 30910,
- 30911,
- 30912,
- 30913,
- 30914,
- 30915,
- 30916,
- 30917,
- 30918,
- 30919,
- 30920,
- 30921,
- 30922,
- 30923,
- 30924,
- 30925,
- 30926,
- 30927,
- 30928,
- 30929,
- 30930,
- 30931,
- 30932,
- 30933,
- 30934,
- 30935,
- 30936,
- 30937,
- 30938,
- 30939,
- 30940,
- 30941,
- 30942,
- 30943,
- 30944,
- 30945,
- 30946,
- 30947,
- 30948,
- 30949,
- 30950,
- 30951,
- 30952,
- 30953,
- 30954,
- 30955,
- 30956,
- 30957,
- 30958,
- 30959,
- 30960,
- 30961,
- 30962,
- 30963,
- 30964,
- 30965,
- 30966,
- 30967,
- 30968,
- 30969,
- 30970,
- 30971,
- 30972,
- 30973,
- 30974,
- 30975,
- 30976,
- 30977,
- 30978,
- 30979,
- 30980,
- 30981,
- 30982,
- 30983,
- 30984,
- 30985,
- 30986,
- 30987,
- 30988,
- 30989,
- 30990,
- 30991,
- 30992,
- 30993,
- 30994,
- 30995,
- 30996,
- 30997,
- 30998,
- 30999,
- 31000,
- 31001,
- 31002,
- 31003,
- 31004,
- 31005,
- 31006,
- 31007,
- 31008,
- 31009,
- 31010,
- 31011,
- 31012,
- 31013,
- 31014,
- 31015,
- 31016,
- 31017,
- 31018,
- 31019,
- 31020,
- 31021,
- 31022,
- 31023,
- 31024,
- 31025,
- 31026,
- 31027,
- 31028,
- 31029,
- 31030,
- 31031,
- 31032,
- 31033,
- 31034,
- 31035,
- 31036,
- 31037,
- 31038,
- 31039,
- 31040,
- 31041,
- 31042,
- 31043,
- 31044,
- 31045,
- 31046,
- 31047,
- 31048,
- 31049,
- 31050,
- 31051,
- 31052,
- 31053,
- 31054,
- 31055,
- 31056,
- 31057,
- 31058,
- 31059,
- 31060,
- 31061,
- 31062,
- 31063,
- 31064,
- 31065,
- 31066,
- 31067,
- 31068,
- 31069,
- 31070,
- 31071,
- 31072,
- 31073,
- 31074,
- 31075,
- 31076,
- 31077,
- 31078,
- 31079,
- 31080,
- 31081,
- 31082,
- 31083,
- 31084,
- 31085,
- 31086,
- 31087,
- 31088,
- 31089,
- 31090,
- 31091,
- 31092,
- 31093,
- 31094,
- 31095,
- 31096,
- 31097,
- 31098,
- 31099,
- 31100,
- 31101,
- 31102,
- 31103,
- 31104,
- 31105,
- 31106,
- 31107,
- 31108,
- 31109,
- 31110,
- 31111,
- 31112,
- 31113,
- 31114,
- 31115,
- 31116,
- 31117,
- 31118,
- 31119,
- 31120,
- 31121,
- 31122,
- 31123,
- 31124,
- 31125,
- 31126,
- 31127,
- 31128,
- 31129,
- 31130,
- 31131,
- 31132,
- 31133,
- 31134,
- 31135,
- 31136,
- 31137,
- 31138,
- 31139,
- 31140,
- 31141,
- 31142,
- 31143,
- 31144,
- 31145,
- 31146,
- 31147,
- 31148,
- 31149,
- 31150,
- 31151,
- 31152,
- 31153,
- 31154,
- 31155,
- 31156,
- 31157,
- 31158,
- 31159,
- 31160,
- 31161,
- 31162,
- 31163,
- 31164,
- 31165,
- 31166,
- 31167,
- 31168,
- 31169,
- 31170,
- 31171,
- 31172,
- 31173,
- 31174,
- 31175,
- 31176,
- 31177,
- 31178,
- 31179,
- 31180,
- 31181,
- 31182,
- 31183,
- 31184,
- 31185,
- 31186,
- 31187,
- 31188,
- 31189,
- 31190,
- 31191,
- 31192,
- 31193,
- 31194,
- 31195,
- 31196,
- 31197,
- 31198,
- 31199,
- 31200,
- 31201,
- 31202,
- 31203,
- 31204,
- 31205,
- 31206,
- 31207,
- 31208,
- 31209,
- 31210,
- 31211,
- 31212,
- 31213,
- 31214,
- 31215,
- 31216,
- 31217,
- 31218,
- 31219,
- 31220,
- 31221,
- 31222,
- 31223,
- 31224,
- 31225,
- 31226,
- 31227,
- 31228,
- 31229,
- 31230,
- 31231,
- 31232,
- 31233,
- 31234,
- 31235,
- 31236,
- 31237,
- 31238,
- 31239,
- 31240,
- 31241,
- 31242,
- 31243,
- 31244,
- 31245,
- 31246,
- 31247,
- 31248,
- 31249,
- 31250,
- 31251,
- 31252,
- 31253,
- 31254,
- 31255,
- 31256,
- 31257,
- 31258,
- 31259,
- 31260,
- 31261,
- 31262,
- 31263,
- 31264,
- 31265,
- 31266,
- 31267,
- 31268,
- 31269,
- 31270,
- 31271,
- 31272,
- 31273,
- 31274,
- 31275,
- 31276,
- 31277,
- 31278,
- 31279,
- 31280,
- 31281,
- 31282,
- 31283,
- 31284,
- 31285,
- 31286,
- 31287,
- 31288,
- 31289,
- 31290,
- 31291,
- 31292,
- 31293,
- 31294,
- 31295,
- 31296,
- 31297,
- 31298,
- 31299,
- 31300,
- 31301,
- 31302,
- 31303,
- 31304,
- 31305,
- 31306,
- 31307,
- 31308,
- 31309,
- 31310,
- 31311,
- 31312,
- 31313,
- 31314,
- 31315,
- 31316,
- 31317,
- 31318,
- 31319,
- 31320,
- 31321,
- 31322,
- 31323,
- 31324,
- 31325,
- 31326,
- 31327,
- 31328,
- 31329,
- 31330,
- 31331,
- 31332,
- 31333,
- 31334,
- 31335,
- 31336,
- 31337,
- 31338,
- 31339,
- 31340,
- 31341,
- 31342,
- 31343,
- 31344,
- 31345,
- 31346,
- 31347,
- 31348,
- 31349,
- 31350,
- 31351,
- 31352,
- 31353,
- 31354,
- 31355,
- 31356,
- 31357,
- 31358,
- 31359,
- 31360,
- 31361,
- 31362,
- 31363,
- 31364,
- 31365,
- 31366,
- 31367,
- 31368,
- 31369,
- 31370,
- 31371,
- 31372,
- 31373,
- 31374,
- 31375,
- 31376,
- 31377,
- 31378,
- 31379,
- 31380,
- 31381,
- 31382,
- 31383,
- 31384,
- 31385,
- 31386,
- 31387,
- 31388,
- 31389,
- 31390,
- 31391,
- 31392,
- 31393,
- 31394,
- 31395,
- 31396,
- 31397,
- 31398,
- 31399,
- 31400,
- 31401,
- 31402,
- 31403,
- 31404,
- 31405,
- 31406,
- 31407,
- 31408,
- 31409,
- 31410,
- 31411,
- 31412,
- 31413,
- 31414,
- 31415,
- 31416,
- 31417,
- 31418,
- 31419,
- 31420,
- 31421,
- 31422,
- 31423,
- 31424,
- 31425,
- 31426,
- 31427,
- 31428,
- 31429,
- 31430,
- 31431,
- 31432,
- 31433,
- 31434,
- 31435,
- 31436,
- 31437,
- 31438,
- 31439,
- 31440,
- 31441,
- 31442,
- 31443,
- 31444,
- 31445,
- 31446,
- 31447,
- 31448,
- 31449,
- 31450,
- 31451,
- 31452,
- 31453,
- 31454,
- 31455,
- 31456,
- 31457,
- 31458,
- 31459,
- 31460,
- 31461,
- 31462,
- 31463,
- 31464,
- 31465,
- 31466,
- 31467,
- 31468,
- 31469,
- 31470,
- 31471,
- 31472,
- 31473,
- 31474,
- 31475,
- 31476,
- 31477,
- 31478,
- 31479,
- 31480,
- 31481,
- 31482,
- 31483,
- 31484,
- 31485,
- 31486,
- 31487,
- 31488,
- 31489,
- 31490,
- 31491,
- 31492,
- 31493,
- 31494,
- 31495,
- 31496,
- 31497,
- 31498,
- 31499,
- 31500,
- 31501,
- 31502,
- 31503,
- 31504,
- 31505,
- 31506,
- 31507,
- 31508,
- 31509,
- 31510,
- 31511,
- 31512,
- 31513,
- 31514,
- 31515,
- 31516,
- 31517,
- 31518,
- 31519,
- 31520,
- 31521,
- 31522,
- 31523,
- 31524,
- 31525,
- 31526,
- 31527,
- 31528,
- 31529,
- 31530,
- 31531,
- 31532,
- 31533,
- 31534,
- 31535,
- 31536,
- 31537,
- 31538,
- 31539,
- 31540,
- 31541,
- 31542,
- 31543,
- 31544,
- 31545,
- 31546,
- 31547,
- 31548,
- 31549,
- 31550,
- 31551,
- 31552,
- 31553,
- 31554,
- 31555,
- 31556,
- 31557,
- 31558,
- 31559,
- 31560,
- 31561,
- 31562,
- 31563,
- 31564,
- 31565,
- 31566,
- 31567,
- 31568,
- 31569,
- 31570,
- 31571,
- 31572,
- 31573,
- 31574,
- 31575,
- 31576,
- 31577,
- 31578,
- 31579,
- 31580,
- 31581,
- 31582,
- 31583,
- 31584,
- 31585,
- 31586,
- 31587,
- 31588,
- 31589,
- 31590,
- 31591,
- 31592,
- 31593,
- 31594,
- 31595,
- 31596,
- 31597,
- 31598,
- 31599,
- 31600,
- 31601,
- 31602,
- 31603,
- 31604,
- 31605,
- 31606,
- 31607,
- 31608,
- 31609,
- 31610,
- 31611,
- 31612,
- 31613,
- 31614,
- 31615,
- 31616,
- 31617,
- 31618,
- 31619,
- 31620,
- 31621,
- 31622,
- 31623,
- 31624,
- 31625,
- 31626,
- 31627,
- 31628,
- 31629,
- 31630,
- 31631,
- 31632,
- 31633,
- 31634,
- 31635,
- 31636,
- 31637,
- 31638,
- 31639,
- 31640,
- 31641,
- 31642,
- 31643,
- 31644,
- 31645,
- 31646,
- 31647,
- 31648,
- 31649,
- 31650,
- 31651,
- 31652,
- 31653,
- 31654,
- 31655,
- 31656,
- 31657,
- 31658,
- 31659,
- 31660,
- 31661,
- 31662,
- 31663,
- 31664,
- 31665,
- 31666,
- 31667,
- 31668,
- 31669,
- 31670,
- 31671,
- 31672,
- 31673,
- 31674,
- 31675,
- 31676,
- 31677,
- 31678,
- 31679,
- 31680,
- 31681,
- 31682,
- 31683,
- 31684,
- 31685,
- 31686,
- 31687,
- 31688,
- 31689,
- 31690,
- 31691,
- 31692,
- 31693,
- 31694,
- 31695,
- 31696,
- 31697,
- 31698,
- 31699,
- 31700,
- 31701,
- 31702,
- 31703,
- 31704,
- 31705,
- 31706,
- 31707,
- 31708,
- 31709,
- 31710,
- 31711,
- 31712,
- 31713,
- 31714,
- 31715,
- 31716,
- 31717,
- 31718,
- 31719,
- 31720,
- 31721,
- 31722,
- 31723,
- 31724,
- 31725,
- 31726,
- 31727,
- 31728,
- 31729,
- 31730,
- 31731,
- 31732,
- 31733,
- 31734,
- 31735,
- 31736,
- 31737,
- 31738,
- 31739,
- 31740,
- 31741,
- 31742,
- 31743,
- 31744,
- 31745,
- 31746,
- 31747,
- 31748,
- 31749,
- 31750,
- 31751,
- 31752,
- 31753,
- 31754,
- 31755,
- 31756,
- 31757,
- 31758,
- 31759,
- 31760,
- 31761,
- 31762,
- 31763,
- 31764,
- 31765,
- 31766,
- 31767,
- 31768,
- 31769,
- 31770,
- 31771,
- 31772,
- 31773,
- 31774,
- 31775,
- 31776,
- 31777,
- 31778,
- 31779,
- 31780,
- 31781,
- 31782,
- 31783,
- 31784,
- 31785,
- 31786,
- 31787,
- 31788,
- 31789,
- 31790,
- 31791,
- 31792,
- 31793,
- 31794,
- 31795,
- 31796,
- 31797,
- 31798,
- 31799,
- 31800,
- 31801,
- 31802,
- 31803,
- 31804,
- 31805,
- 31806,
- 31807,
- 31808,
- 31809,
- 31810,
- 31811,
- 31812,
- 31813,
- 31814,
- 31815,
- 31816,
- 31817,
- 31818,
- 31819,
- 31820,
- 31821,
- 31822,
- 31823,
- 31824,
- 31825,
- 31826,
- 31827,
- 31828,
- 31829,
- 31830,
- 31831,
- 31832,
- 31833,
- 31834,
- 31835,
- 31836,
- 31837,
- 31838,
- 31839,
- 31840,
- 31841,
- 31842,
- 31843,
- 31844,
- 31845,
- 31846,
- 31847,
- 31848,
- 31849,
- 31850,
- 31851,
- 31852,
- 31853,
- 31854,
- 31855,
- 31856,
- 31857,
- 31858,
- 31859,
- 31860,
- 31861,
- 31862,
- 31863,
- 31864,
- 31865,
- 31866,
- 31867,
- 31868,
- 31869,
- 31870,
- 31871,
- 31872,
- 31873,
- 31874,
- 31875,
- 31876,
- 31877,
- 31878,
- 31879,
- 31880,
- 31881,
- 31882,
- 31883,
- 31884,
- 31885,
- 31886,
- 31887,
- 31888,
- 31889,
- 31890,
- 31891,
- 31892,
- 31893,
- 31894,
- 31895,
- 31896,
- 31897,
- 31898,
- 31899,
- 31900,
- 31901,
- 31902,
- 31903,
- 31904,
- 31905,
- 31906,
- 31907,
- 31908,
- 31909,
- 31910,
- 31911,
- 31912,
- 31913,
- 31914,
- 31915,
- 31916,
- 31917,
- 31918,
- 31919,
- 31920,
- 31921,
- 31922,
- 31923,
- 31924,
- 31925,
- 31926,
- 31927,
- 31928,
- 31929,
- 31930,
- 31931,
- 31932,
- 31933,
- 31934,
- 31935,
- 31936,
- 31937,
- 31938,
- 31939,
- 31940,
- 31941,
- 31942,
- 31943,
- 31944,
- 31945,
- 31946,
- 31947,
- 31948,
- 31949,
- 31950,
- 31951,
- 31952,
- 31953,
- 31954,
- 31955,
- 31956,
- 31957,
- 31958,
- 31959,
- 31960,
- 31961,
- 31962,
- 31963,
- 31964,
- 31965,
- 31966,
- 31967,
- 31968,
- 31969,
- 31970,
- 31971,
- 31972,
- 31973,
- 31974,
- 31975,
- 31976,
- 31977,
- 31978,
- 31979,
- 31980,
- 31981,
- 31982,
- 31983,
- 31984,
- 31985,
- 31986,
- 31987,
- 31988,
- 31989,
- 31990,
- 31991,
- 31992,
- 31993,
- 31994,
- 31995,
- 31996,
- 31997,
- 31998,
- 31999,
- 32000,
- 32001,
- 32002,
- 32003,
- 32004,
- 32005,
- 32006,
- 32007,
- 32008,
- 32009,
- 32010,
- 32011,
- 32012,
- 32013,
- 32014,
- 32015,
- 32016,
- 32017,
- 32018,
- 32019,
- 32020,
- 32021,
- 32022,
- 32023,
- 32024,
- 32025,
- 32026,
- 32027,
- 32028,
- 32029,
- 32030,
- 32031,
- 32032,
- 32033,
- 32034,
- 32035,
- 32036,
- 32037,
- 32038,
- 32039,
- 32040,
- 32041,
- 32042,
- 32043,
- 32044,
- 32045,
- 32046,
- 32047,
- 32048,
- 32049,
- 32050,
- 32051,
- 32052,
- 32053,
- 32054,
- 32055,
- 32056,
- 32057,
- 32058,
- 32059,
- 32060,
- 32061,
- 32062,
- 32063,
- 32064,
- 32065,
- 32066,
- 32067,
- 32068,
- 32069,
- 32070,
- 32071,
- 32072,
- 32073,
- 32074,
- 32075,
- 32076,
- 32077,
- 32078,
- 32079,
- 32080,
- 32081,
- 32082,
- 32083,
- 32084,
- 32085,
- 32086,
- 32087,
- 32088,
- 32089,
- 32090,
- 32091,
- 32092,
- 32093,
- 32094,
- 32095,
- 32096,
- 32097,
- 32098,
- 32099,
- 32100,
- 32101,
- 32102,
- 32103,
- 32104,
- 32105,
- 32106,
- 32107,
- 32108,
- 32109,
- 32110,
- 32111,
- 32112,
- 32113,
- 32114,
- 32115,
- 32116,
- 32117,
- 32118,
- 32119,
- 32120,
- 32121,
- 32122,
- 32123,
- 32124,
- 32125,
- 32126,
- 32127,
- 32128,
- 32129,
- 32130,
- 32131,
- 32132,
- 32133,
- 32134,
- 32135,
- 32136,
- 32137,
- 32138,
- 32139,
- 32140,
- 32141,
- 32142,
- 32143,
- 32144,
- 32145,
- 32146,
- 32147,
- 32148,
- 32149,
- 32150,
- 32151,
- 32152,
- 32153,
- 32154,
- 32155,
- 32156,
- 32157,
- 32158,
- 32159,
- 32160,
- 32161,
- 32162,
- 32163,
- 32164,
- 32165,
- 32166,
- 32167,
- 32168,
- 32169,
- 32170,
- 32171,
- 32172,
- 32173,
- 32174,
- 32175,
- 32176,
- 32177,
- 32178,
- 32179,
- 32180,
- 32181,
- 32182,
- 32183,
- 32184,
- 32185,
- 32186,
- 32187,
- 32188,
- 32189,
- 32190,
- 32191,
- 32192,
- 32193,
- 32194,
- 32195,
- 32196,
- 32197,
- 32198,
- 32199,
- 32200,
- 32201,
- 32202,
- 32203,
- 32204,
- 32205,
- 32206,
- 32207,
- 32208,
- 32209,
- 32210,
- 32211,
- 32212,
- 32213,
- 32214,
- 32215,
- 32216,
- 32217,
- 32218,
- 32219,
- 32220,
- 32221,
- 32222,
- 32223,
- 32224,
- 32225,
- 32226,
- 32227,
- 32228,
- 32229,
- 32230,
- 32231,
- 32232,
- 32233,
- 32234,
- 32235,
- 32236,
- 32237,
- 32238,
- 32239,
- 32240,
- 32241,
- 32242,
- 32243,
- 32244,
- 32245,
- 32246,
- 32247,
- 32248,
- 32249,
- 32250,
- 32251,
- 32252,
- 32253,
- 32254,
- 32255,
- 32256,
- 32257,
- 32258,
- 32259,
- 32260,
- 32261,
- 32262,
- 32263,
- 32264,
- 32265,
- 32266,
- 32267,
- 32268,
- 32269,
- 32270,
- 32271,
- 32272,
- 32273,
- 32274,
- 32275,
- 32276,
- 32277,
- 32278,
- 32279,
- 32280,
- 32281,
- 32282,
- 32283,
- 32284,
- 32285,
- 32286,
- 32287,
- 32288,
- 32289,
- 32290,
- 32291,
- 32292,
- 32293,
- 32294,
- 32295,
- 32296,
- 32297,
- 32298,
- 32299,
- 32300,
- 32301,
- 32302,
- 32303,
- 32304,
- 32305,
- 32306,
- 32307,
- 32308,
- 32309,
- 32310,
- 32311,
- 32312,
- 32313,
- 32314,
- 32315,
- 32316,
- 32317,
- 32318,
- 32319,
- 32320,
- 32321,
- 32322,
- 32323,
- 32324,
- 32325,
- 32326,
- 32327,
- 32328,
- 32329,
- 32330,
- 32331,
- 32332,
- 32333,
- 32334,
- 32335,
- 32336,
- 32337,
- 32338,
- 32339,
- 32340,
- 32341,
- 32342,
- 32343,
- 32344,
- 32345,
- 32346,
- 32347,
- 32348,
- 32349,
- 32350,
- 32351,
- 32352,
- 32353,
- 32354,
- 32355,
- 32356,
- 32357,
- 32358,
- 32359,
- 32360,
- 32361,
- 32362,
- 32363,
- 32364,
- 32365,
- 32366,
- 32367,
- 32368,
- 32369,
- 32370,
- 32371,
- 32372,
- 32373,
- 32374,
- 32375,
- 32376,
- 32377,
- 32378,
- 32379,
- 32380,
- 32381,
- 32382,
- 32383,
- 32384,
- 32385,
- 32386,
- 32387,
- 32388,
- 32389,
- 32390,
- 32391,
- 32392,
- 32393,
- 32394,
- 32395,
- 32396,
- 32397,
- 32398,
- 32399,
- 32400,
- 32401,
- 32402,
- 32403,
- 32404,
- 32405,
- 32406,
- 32407,
- 32408,
- 32409,
- 32410,
- 32411,
- 32412,
- 32413,
- 32414,
- 32415,
- 32416,
- 32417,
- 32418,
- 32419,
- 32420,
- 32421,
- 32422,
- 32423,
- 32424,
- 32425,
- 32426,
- 32427,
- 32428,
- 32429,
- 32430,
- 32431,
- 32432,
- 32433,
- 32434,
- 32435,
- 32436,
- 32437,
- 32438,
- 32439,
- 32440,
- 32441,
- 32442,
- 32443,
- 32444,
- 32445,
- 32446,
- 32447,
- 32448,
- 32449,
- 32450,
- 32451,
- 32452,
- 32453,
- 32454,
- 32455,
- 32456,
- 32457,
- 32458,
- 32459,
- 32460,
- 32461,
- 32462,
- 32463,
- 32464,
- 32465,
- 32466,
- 32467,
- 32468,
- 32469,
- 32470,
- 32471,
- 32472,
- 32473,
- 32474,
- 32475,
- 32476,
- 32477,
- 32478,
- 32479,
- 32480,
- 32481,
- 32482,
- 32483,
- 32484,
- 32485,
- 32486,
- 32487,
- 32488,
- 32489,
- 32490,
- 32491,
- 32492,
- 32493,
- 32494,
- 32495,
- 32496,
- 32497,
- 32498,
- 32499,
- 32500,
- 32501,
- 32502,
- 32503,
- 32504,
- 32505,
- 32506,
- 32507,
- 32508,
- 32509,
- 32510,
- 32511,
- 32512,
- 32513,
- 32514,
- 32515,
- 32516,
- 32517,
- 32518,
- 32519,
- 32520,
- 32521,
- 32522,
- 32523,
- 32524,
- 32525,
- 32526,
- 32527,
- 32528,
- 32529,
- 32530,
- 32531,
- 32532,
- 32533,
- 32534,
- 32535,
- 32536,
- 32537,
- 32538,
- 32539,
- 32540,
- 32541,
- 32542,
- 32543,
- 32544,
- 32545,
- 32546,
- 32547,
- 32548,
- 32549,
- 32550,
- 32551,
- 32552,
- 32553,
- 32554,
- 32555,
- 32556,
- 32557,
- 32558,
- 32559,
- 32560,
- 32561,
- 32562,
- 32563,
- 32564,
- 32565,
- 32566,
- 32567,
- 32568,
- 32569,
- 32570,
- 32571,
- 32572,
- 32573,
- 32574,
- 32575,
- 32576,
- 32577,
- 32578,
- 32579,
- 32580,
- 32581,
- 32582,
- 32583,
- 32584,
- 32585,
- 32586,
- 32587,
- 32588,
- 32589,
- 32590,
- 32591,
- 32592,
- 32593,
- 32594,
- 32595,
- 32596,
- 32597,
- 32598,
- 32599,
- 32600,
- 32601,
- 32602,
- 32603,
- 32604,
- 32605,
- 32606,
- 32607,
- 32608,
- 32609,
- 32610,
- 32611,
- 32612,
- 32613,
- 32614,
- 32615,
- 32616,
- 32617,
- 32618,
- 32619,
- 32620,
- 32621,
- 32622,
- 32623,
- 32624,
- 32625,
- 32626,
- 32627,
- 32628,
- 32629,
- 32630,
- 32631,
- 32632,
- 32633,
- 32634,
- 32635,
- 32636,
- 32637,
- 32638,
- 32639,
- 32640,
- 32641,
- 32642,
- 32643,
- 32644,
- 32645,
- 32646,
- 32647,
- 32648,
- 32649,
- 32650,
- 32651,
- 32652,
- 32653,
- 32654,
- 32655,
- 32656,
- 32657,
- 32658,
- 32659,
- 32660,
- 32661,
- 32662,
- 32663,
- 32664,
- 32665,
- 32666,
- 32667,
- 32668,
- 32669,
- 32670,
- 32671,
- 32672,
- 32673,
- 32674,
- 32675,
- 32676,
- 32677,
- 32678,
- 32679,
- 32680,
- 32681,
- 32682,
- 32683,
- 32684,
- 32685,
- 32686,
- 32687,
- 32688,
- 32689,
- 32690,
- 32691,
- 32692,
- 32693,
- 32694,
- 32695,
- 32696,
- 32697,
- 32698,
- 32699,
- 32700,
- 32701,
- 32702,
- 32703,
- 32704,
- 32705,
- 32706,
- 32707,
- 32708,
- 32709,
- 32710,
- 32711,
- 32712,
- 32713,
- 32714,
- 32715,
- 32716,
- 32717,
- 32718,
- 32719,
- 32720,
- 32721,
- 32722,
- 32723,
- 32724,
- 32725,
- 32726,
- 32727,
- 32728,
- 32729,
- 32730,
- 32731,
- 32732,
- 32733,
- 32734,
- 32735,
- 32736,
- 32737,
- 32738,
- 32739,
- 32740,
- 32741,
- 32742,
- 32743,
- 32744,
- 32745,
- 32746,
- 32747,
- 32748,
- 32749,
- 32750,
- 32751,
- 32752,
- 32753,
- 32754,
- 32755,
- 32756,
- 32757,
- 32758,
- 32759,
- 32760,
- 32761,
- 32762,
- 32763,
- 32764,
- 32765,
- 32766,
- 32767,
- 32768,
- 32769,
- 32770,
- 32771,
- 32772,
- 32773,
- 32774,
- 32775,
- 32776,
- 32777,
- 32778,
- 32779,
- 32780,
- 32781,
- 32782,
- 32783,
- 32784,
- 32785,
- 32786,
- 32787,
- 32788,
- 32789,
- 32790,
- 32791,
- 32792,
- 32793,
- 32794,
- 32795,
- 32796,
- 32797,
- 32798,
- 32799,
- 32800,
- 32801,
- 32802,
- 32803,
- 32804,
- 32805,
- 32806,
- 32807,
- 32808,
- 32809,
- 32810,
- 32811,
- 32812,
- 32813,
- 32814,
- 32815,
- 32816,
- 32817,
- 32818,
- 32819,
- 32820,
- 32821,
- 32822,
- 32823,
- 32824,
- 32825,
- 32826,
- 32827,
- 32828,
- 32829,
- 32830,
- 32831,
- 32832,
- 32833,
- 32834,
- 32835,
- 32836,
- 32837,
- 32838,
- 32839,
- 32840,
- 32841,
- 32842,
- 32843,
- 32844,
- 32845,
- 32846,
- 32847,
- 32848,
- 32849,
- 32850,
- 32851,
- 32852,
- 32853,
- 32854,
- 32855,
- 32856,
- 32857,
- 32858,
- 32859,
- 32860,
- 32861,
- 32862,
- 32863,
- 32864,
- 32865,
- 32866,
- 32867,
- 32868,
- 32869,
- 32870,
- 32871,
- 32872,
- 32873,
- 32874,
- 32875,
- 32876,
- 32877,
- 32878,
- 32879,
- 32880,
- 32881,
- 32882,
- 32883,
- 32884,
- 32885,
- 32886,
- 32887,
- 32888,
- 32889,
- 32890,
- 32891,
- 32892,
- 32893,
- 32894,
- 32895,
- 32896,
- 32897,
- 32898,
- 32899,
- 32900,
- 32901,
- 32902,
- 32903,
- 32904,
- 32905,
- 32906,
- 32907,
- 32908,
- 32909,
- 32910,
- 32911,
- 32912,
- 32913,
- 32914,
- 32915,
- 32916,
- 32917,
- 32918,
- 32919,
- 32920,
- 32921,
- 32922,
- 32923,
- 32924,
- 32925,
- 32926,
- 32927,
- 32928,
- 32929,
- 32930,
- 32931,
- 32932,
- 32933,
- 32934,
- 32935,
- 32936,
- 32937,
- 32938,
- 32939,
- 32940,
- 32941,
- 32942,
- 32943,
- 32944,
- 32945,
- 32946,
- 32947,
- 32948,
- 32949,
- 32950,
- 32951,
- 32952,
- 32953,
- 32954,
- 32955,
- 32956,
- 32957,
- 32958,
- 32959,
- 32960,
- 32961,
- 32962,
- 32963,
- 32964,
- 32965,
- 32966,
- 32967,
- 32968,
- 32969,
- 32970,
- 32971,
- 32972,
- 32973,
- 32974,
- 32975,
- 32976,
- 32977,
- 32978,
- 32979,
- 32980,
- 32981,
- 32982,
- 32983,
- 32984,
- 32985,
- 32986,
- 32987,
- 32988,
- 32989,
- 32990,
- 32991,
- 32992,
- 32993,
- 32994,
- 32995,
- 32996,
- 32997,
- 32998,
- 32999,
- 33000,
- 33001,
- 33002,
- 33003,
- 33004,
- 33005,
- 33006,
- 33007,
- 33008,
- 33009,
- 33010,
- 33011,
- 33012,
- 33013,
- 33014,
- 33015,
- 33016,
- 33017,
- 33018,
- 33019,
- 33020,
- 33021,
- 33022,
- 33023,
- 33024,
- 33025,
- 33026,
- 33027,
- 33028,
- 33029,
- 33030,
- 33031,
- 33032,
- 33033,
- 33034,
- 33035,
- 33036,
- 33037,
- 33038,
- 33039,
- 33040,
- 33041,
- 33042,
- 33043,
- 33044,
- 33045,
- 33046,
- 33047,
- 33048,
- 33049,
- 33050,
- 33051,
- 33052,
- 33053,
- 33054,
- 33055,
- 33056,
- 33057,
- 33058,
- 33059,
- 33060,
- 33061,
- 33062,
- 33063,
- 33064,
- 33065,
- 33066,
- 33067,
- 33068,
- 33069,
- 33070,
- 33071,
- 33072,
- 33073,
- 33074,
- 33075,
- 33076,
- 33077,
- 33078,
- 33079,
- 33080,
- 33081,
- 33082,
- 33083,
- 33084,
- 33085,
- 33086,
- 33087,
- 33088,
- 33089,
- 33090,
- 33091,
- 33092,
- 33093,
- 33094,
- 33095,
- 33096,
- 33097,
- 33098,
- 33099,
- 33100,
- 33101,
- 33102,
- 33103,
- 33104,
- 33105,
- 33106,
- 33107,
- 33108,
- 33109,
- 33110,
- 33111,
- 33112,
- 33113,
- 33114,
- 33115,
- 33116,
- 33117,
- 33118,
- 33119,
- 33120,
- 33121,
- 33122,
- 33123,
- 33124,
- 33125,
- 33126,
- 33127,
- 33128,
- 33129,
- 33130,
- 33131,
- 33132,
- 33133,
- 33134,
- 33135,
- 33136,
- 33137,
- 33138,
- 33139,
- 33140,
- 33141,
- 33142,
- 33143,
- 33144,
- 33145,
- 33146,
- 33147,
- 33148,
- 33149,
- 33150,
- 33151,
- 33152,
- 33153,
- 33154,
- 33155,
- 33156,
- 33157,
- 33158,
- 33159,
- 33160,
- 33161,
- 33162,
- 33163,
- 33164,
- 33165,
- 33166,
- 33167,
- 33168,
- 33169,
- 33170,
- 33171,
- 33172,
- 33173,
- 33174,
- 33175,
- 33176,
- 33177,
- 33178,
- 33179,
- 33180,
- 33181,
- 33182,
- 33183,
- 33184,
- 33185,
- 33186,
- 33187,
- 33188,
- 33189,
- 33190,
- 33191,
- 33192,
- 33193,
- 33194,
- 33195,
- 33196,
- 33197,
- 33198,
- 33199,
- 33200,
- 33201,
- 33202,
- 33203,
- 33204,
- 33205,
- 33206,
- 33207,
- 33208,
- 33209,
- 33210,
- 33211,
- 33212,
- 33213,
- 33214,
- 33215,
- 33216,
- 33217,
- 33218,
- 33219,
- 33220,
- 33221,
- 33222,
- 33223,
- 33224,
- 33225,
- 33226,
- 33227,
- 33228,
- 33229,
- 33230,
- 33231,
- 33232,
- 33233,
- 33234,
- 33235,
- 33236,
- 33237,
- 33238,
- 33239,
- 33240,
- 33241,
- 33242,
- 33243,
- 33244,
- 33245,
- 33246,
- 33247,
- 33248,
- 33249,
- 33250,
- 33251,
- 33252,
- 33253,
- 33254,
- 33255,
- 33256,
- 33257,
- 33258,
- 33259,
- 33260,
- 33261,
- 33262,
- 33263,
- 33264,
- 33265,
- 33266,
- 33267,
- 33268,
- 33269,
- 33270,
- 33271,
- 33272,
- 33273,
- 33274,
- 33275,
- 33276,
- 33277,
- 33278,
- 33279,
- 33280,
- 33281,
- 33282,
- 33283,
- 33284,
- 33285,
- 33286,
- 33287,
- 33288,
- 33289,
- 33290,
- 33291,
- 33292,
- 33293,
- 33294,
- 33295,
- 33296,
- 33297,
- 33298,
- 33299,
- 33300,
- 33301,
- 33302,
- 33303,
- 33304,
- 33305,
- 33306,
- 33307,
- 33308,
- 33309,
- 33310,
- 33311,
- 33312,
- 33313,
- 33314,
- 33315,
- 33316,
- 33317,
- 33318,
- 33319,
- 33320,
- 33321,
- 33322,
- 33323,
- 33324,
- 33325,
- 33326,
- 33327,
- 33328,
- 33329,
- 33330,
- 33331,
- 33332,
- 33333,
- 33334,
- 33335,
- 33336,
- 33337,
- 33338,
- 33339,
- 33340,
- 33341,
- 33342,
- 33343,
- 33344,
- 33345,
- 33346,
- 33347,
- 33348,
- 33349,
- 33350,
- 33351,
- 33352,
- 33353,
- 33354,
- 33355,
- 33356,
- 33357,
- 33358,
- 33359,
- 33360,
- 33361,
- 33362,
- 33363,
- 33364,
- 33365,
- 33366,
- 33367,
- 33368,
- 33369,
- 33370,
- 33371,
- 33372,
- 33373,
- 33374,
- 33375,
- 33376,
- 33377,
- 33378,
- 33379,
- 33380,
- 33381,
- 33382,
- 33383,
- 33384,
- 33385,
- 33386,
- 33387,
- 33388,
- 33389,
- 33390,
- 33391,
- 33392,
- 33393,
- 33394,
- 33395,
- 33396,
- 33397,
- 33398,
- 33399,
- 33400,
- 33401,
- 33402,
- 33403,
- 33404,
- 33405,
- 33406,
- 33407,
- 33408,
- 33409,
- 33410,
- 33411,
- 33412,
- 33413,
- 33414,
- 33415,
- 33416,
- 33417,
- 33418,
- 33419,
- 33420,
- 33421,
- 33422,
- 33423,
- 33424,
- 33425,
- 33426,
- 33427,
- 33428,
- 33429,
- 33430,
- 33431,
- 33432,
- 33433,
- 33434,
- 33435,
- 33436,
- 33437,
- 33438,
- 33439,
- 33440,
- 33441,
- 33442,
- 33443,
- 33444,
- 33445,
- 33446,
- 33447,
- 33448,
- 33449,
- 33450,
- 33451,
- 33452,
- 33453,
- 33454,
- 33455,
- 33456,
- 33457,
- 33458,
- 33459,
- 33460,
- 33461,
- 33462,
- 33463,
- 33464,
- 33465,
- 33466,
- 33467,
- 33468,
- 33469,
- 33470,
- 33471,
- 33472,
- 33473,
- 33474,
- 33475,
- 33476,
- 33477,
- 33478,
- 33479,
- 33480,
- 33481,
- 33482,
- 33483,
- 33484,
- 33485,
- 33486,
- 33487,
- 33488,
- 33489,
- 33490,
- 33491,
- 33492,
- 33493,
- 33494,
- 33495,
- 33496,
- 33497,
- 33498,
- 33499,
- 33500,
- 33501,
- 33502,
- 33503,
- 33504,
- 33505,
- 33506,
- 33507,
- 33508,
- 33509,
- 33510,
- 33511,
- 33512,
- 33513,
- 33514,
- 33515,
- 33516,
- 33517,
- 33518,
- 33519,
- 33520,
- 33521,
- 33522,
- 33523,
- 33524,
- 33525,
- 33526,
- 33527,
- 33528,
- 33529,
- 33530,
- 33531,
- 33532,
- 33533,
- 33534,
- 33535,
- 33536,
- 33537,
- 33538,
- 33539,
- 33540,
- 33541,
- 33542,
- 33543,
- 33544,
- 33545,
- 33546,
- 33547,
- 33548,
- 33549,
- 33550,
- 33551,
- 33552,
- 33553,
- 33554,
- 33555,
- 33556,
- 33557,
- 33558,
- 33559,
- 33560,
- 33561,
- 33562,
- 33563,
- 33564,
- 33565,
- 33566,
- 33567,
- 33568,
- 33569,
- 33570,
- 33571,
- 33572,
- 33573,
- 33574,
- 33575,
- 33576,
- 33577,
- 33578,
- 33579,
- 33580,
- 33581,
- 33582,
- 33583,
- 33584,
- 33585,
- 33586,
- 33587,
- 33588,
- 33589,
- 33590,
- 33591,
- 33592,
- 33593,
- 33594,
- 33595,
- 33596,
- 33597,
- 33598,
- 33599,
- 33600,
- 33601,
- 33602,
- 33603,
- 33604,
- 33605,
- 33606,
- 33607,
- 33608,
- 33609,
- 33610,
- 33611,
- 33612,
- 33613,
- 33614,
- 33615,
- 33616,
- 33617,
- 33618,
- 33619,
- 33620,
- 33621,
- 33622,
- 33623,
- 33624,
- 33625,
- 33626,
- 33627,
- 33628,
- 33629,
- 33630,
- 33631,
- 33632,
- 33633,
- 33634,
- 33635,
- 33636,
- 33637,
- 33638,
- 33639,
- 33640,
- 33641,
- 33642,
- 33643,
- 33644,
- 33645,
- 33646,
- 33647,
- 33648,
- 33649,
- 33650,
- 33651,
- 33652,
- 33653,
- 33654,
- 33655,
- 33656,
- 33657,
- 33658,
- 33659,
- 33660,
- 33661,
- 33662,
- 33663,
- 33664,
- 33665,
- 33666,
- 33667,
- 33668,
- 33669,
- 33670,
- 33671,
- 33672,
- 33673,
- 33674,
- 33675,
- 33676,
- 33677,
- 33678,
- 33679,
- 33680,
- 33681,
- 33682,
- 33683,
- 33684,
- 33685,
- 33686,
- 33687,
- 33688,
- 33689,
- 33690,
- 33691,
- 33692,
- 33693,
- 33694,
- 33695,
- 33696,
- 33697,
- 33698,
- 33699,
- 33700,
- 33701,
- 33702,
- 33703,
- 33704,
- 33705,
- 33706,
- 33707,
- 33708,
- 33709,
- 33710,
- 33711,
- 33712,
- 33713,
- 33714,
- 33715,
- 33716,
- 33717,
- 33718,
- 33719,
- 33720,
- 33721,
- 33722,
- 33723,
- 33724,
- 33725,
- 33726,
- 33727,
- 33728,
- 33729,
- 33730,
- 33731,
- 33732,
- 33733,
- 33734,
- 33735,
- 33736,
- 33737,
- 33738,
- 33739,
- 33740,
- 33741,
- 33742,
- 33743,
- 33744,
- 33745,
- 33746,
- 33747,
- 33748,
- 33749,
- 33750,
- 33751,
- 33752,
- 33753,
- 33754,
- 33755,
- 33756,
- 33757,
- 33758,
- 33759,
- 33760,
- 33761,
- 33762,
- 33763,
- 33764,
- 33765,
- 33766,
- 33767,
- 33768,
- 33769,
- 33770,
- 33771,
- 33772,
- 33773,
- 33774,
- 33775,
- 33776,
- 33777,
- 33778,
- 33779,
- 33780,
- 33781,
- 33782,
- 33783,
- 33784,
- 33785,
- 33786,
- 33787,
- 33788,
- 33789,
- 33790,
- 33791,
- 33792,
- 33793,
- 33794,
- 33795,
- 33796,
- 33797,
- 33798,
- 33799,
- 33800,
- 33801,
- 33802,
- 33803,
- 33804,
- 33805,
- 33806,
- 33807,
- 33808,
- 33809,
- 33810,
- 33811,
- 33812,
- 33813,
- 33814,
- 33815,
- 33816,
- 33817,
- 33818,
- 33819,
- 33820,
- 33821,
- 33822,
- 33823,
- 33824,
- 33825,
- 33826,
- 33827,
- 33828,
- 33829,
- 33830,
- 33831,
- 33832,
- 33833,
- 33834,
- 33835,
- 33836,
- 33837,
- 33838,
- 33839,
- 33840,
- 33841,
- 33842,
- 33843,
- 33844,
- 33845,
- 33846,
- 33847,
- 33848,
- 33849,
- 33850,
- 33851,
- 33852,
- 33853,
- 33854,
- 33855,
- 33856,
- 33857,
- 33858,
- 33859,
- 33860,
- 33861,
- 33862,
- 33863,
- 33864,
- 33865,
- 33866,
- 33867,
- 33868,
- 33869,
- 33870,
- 33871,
- 33872,
- 33873,
- 33874,
- 33875,
- 33876,
- 33877,
- 33878,
- 33879,
- 33880,
- 33881,
- 33882,
- 33883,
- 33884,
- 33885,
- 33886,
- 33887,
- 33888,
- 33889,
- 33890,
- 33891,
- 33892,
- 33893,
- 33894,
- 33895,
- 33896,
- 33897,
- 33898,
- 33899,
- 33900,
- 33901,
- 33902,
- 33903,
- 33904,
- 33905,
- 33906,
- 33907,
- 33908,
- 33909,
- 33910,
- 33911,
- 33912,
- 33913,
- 33914,
- 33915,
- 33916,
- 33917,
- 33918,
- 33919,
- 33920,
- 33921,
- 33922,
- 33923,
- 33924,
- 33925,
- 33926,
- 33927,
- 33928,
- 33929,
- 33930,
- 33931,
- 33932,
- 33933,
- 33934,
- 33935,
- 33936,
- 33937,
- 33938,
- 33939,
- 33940,
- 33941,
- 33942,
- 33943,
- 33944,
- 33945,
- 33946,
- 33947,
- 33948,
- 33949,
- 33950,
- 33951,
- 33952,
- 33953,
- 33954,
- 33955,
- 33956,
- 33957,
- 33958,
- 33959,
- 33960,
- 33961,
- 33962,
- 33963,
- 33964,
- 33965,
- 33966,
- 33967,
- 33968,
- 33969,
- 33970,
- 33971,
- 33972,
- 33973,
- 33974,
- 33975,
- 33976,
- 33977,
- 33978,
- 33979,
- 33980,
- 33981,
- 33982,
- 33983,
- 33984,
- 33985,
- 33986,
- 33987,
- 33988,
- 33989,
- 33990,
- 33991,
- 33992,
- 33993,
- 33994,
- 33995,
- 33996,
- 33997,
- 33998,
- 33999,
- 34000,
- 34001,
- 34002,
- 34003,
- 34004,
- 34005,
- 34006,
- 34007,
- 34008,
- 34009,
- 34010,
- 34011,
- 34012,
- 34013,
- 34014,
- 34015,
- 34016,
- 34017,
- 34018,
- 34019,
- 34020,
- 34021,
- 34022,
- 34023,
- 34024,
- 34025,
- 34026,
- 34027,
- 34028,
- 34029,
- 34030,
- 34031,
- 34032,
- 34033,
- 34034,
- 34035,
- 34036,
- 34037,
- 34038,
- 34039,
- 34040,
- 34041,
- 34042,
- 34043,
- 34044,
- 34045,
- 34046,
- 34047,
- 34048,
- 34049,
- 34050,
- 34051,
- 34052,
- 34053,
- 34054,
- 34055,
- 34056,
- 34057,
- 34058,
- 34059,
- 34060,
- 34061,
- 34062,
- 34063,
- 34064,
- 34065,
- 34066,
- 34067,
- 34068,
- 34069,
- 34070,
- 34071,
- 34072,
- 34073,
- 34074,
- 34075,
- 34076,
- 34077,
- 34078,
- 34079,
- 34080,
- 34081,
- 34082,
- 34083,
- 34084,
- 34085,
- 34086,
- 34087,
- 34088,
- 34089,
- 34090,
- 34091,
- 34092,
- 34093,
- 34094,
- 34095,
- 34096,
- 34097,
- 34098,
- 34099,
- 34100,
- 34101,
- 34102,
- 34103,
- 34104,
- 34105,
- 34106,
- 34107,
- 34108,
- 34109,
- 34110,
- 34111,
- 34112,
- 34113,
- 34114,
- 34115,
- 34116,
- 34117,
- 34118,
- 34119,
- 34120,
- 34121,
- 34122,
- 34123,
- 34124,
- 34125,
- 34126,
- 34127,
- 34128,
- 34129,
- 34130,
- 34131,
- 34132,
- 34133,
- 34134,
- 34135,
- 34136,
- 34137,
- 34138,
- 34139,
- 34140,
- 34141,
- 34142,
- 34143,
- 34144,
- 34145,
- 34146,
- 34147,
- 34148,
- 34149,
- 34150,
- 34151,
- 34152,
- 34153,
- 34154,
- 34155,
- 34156,
- 34157,
- 34158,
- 34159,
- 34160,
- 34161,
- 34162,
- 34163,
- 34164,
- 34165,
- 34166,
- 34167,
- 34168,
- 34169,
- 34170,
- 34171,
- 34172,
- 34173,
- 34174,
- 34175,
- 34176,
- 34177,
- 34178,
- 34179,
- 34180,
- 34181,
- 34182,
- 34183,
- 34184,
- 34185,
- 34186,
- 34187,
- 34188,
- 34189,
- 34190,
- 34191,
- 34192,
- 34193,
- 34194,
- 34195,
- 34196,
- 34197,
- 34198,
- 34199,
- 34200,
- 34201,
- 34202,
- 34203,
- 34204,
- 34205,
- 34206,
- 34207,
- 34208,
- 34209,
- 34210,
- 34211,
- 34212,
- 34213,
- 34214,
- 34215,
- 34216,
- 34217,
- 34218,
- 34219,
- 34220,
- 34221,
- 34222,
- 34223,
- 34224,
- 34225,
- 34226,
- 34227,
- 34228,
- 34229,
- 34230,
- 34231,
- 34232,
- 34233,
- 34234,
- 34235,
- 34236,
- 34237,
- 34238,
- 34239,
- 34240,
- 34241,
- 34242,
- 34243,
- 34244,
- 34245,
- 34246,
- 34247,
- 34248,
- 34249,
- 34250,
- 34251,
- 34252,
- 34253,
- 34254,
- 34255,
- 34256,
- 34257,
- 34258,
- 34259,
- 34260,
- 34261,
- 34262,
- 34263,
- 34264,
- 34265,
- 34266,
- 34267,
- 34268,
- 34269,
- 34270,
- 34271,
- 34272,
- 34273,
- 34274,
- 34275,
- 34276,
- 34277,
- 34278,
- 34279,
- 34280,
- 34281,
- 34282,
- 34283,
- 34284,
- 34285,
- 34286,
- 34287,
- 34288,
- 34289,
- 34290,
- 34291,
- 34292,
- 34293,
- 34294,
- 34295,
- 34296,
- 34297,
- 34298,
- 34299,
- 34300,
- 34301,
- 34302,
- 34303,
- 34304,
- 34305,
- 34306,
- 34307,
- 34308,
- 34309,
- 34310,
- 34311,
- 34312,
- 34313,
- 34314,
- 34315,
- 34316,
- 34317,
- 34318,
- 34319,
- 34320,
- 34321,
- 34322,
- 34323,
- 34324,
- 34325,
- 34326,
- 34327,
- 34328,
- 34329,
- 34330,
- 34331,
- 34332,
- 34333,
- 34334,
- 34335,
- 34336,
- 34337,
- 34338,
- 34339,
- 34340,
- 34341,
- 34342,
- 34343,
- 34344,
- 34345,
- 34346,
- 34347,
- 34348,
- 34349,
- 34350,
- 34351,
- 34352,
- 34353,
- 34354,
- 34355,
- 34356,
- 34357,
- 34358,
- 34359,
- 34360,
- 34361,
- 34362,
- 34363,
- 34364,
- 34365,
- 34366,
- 34367,
- 34368,
- 34369,
- 34370,
- 34371,
- 34372,
- 34373,
- 34374,
- 34375,
- 34376,
- 34377,
- 34378,
- 34379,
- 34380,
- 34381,
- 34382,
- 34383,
- 34384,
- 34385,
- 34386,
- 34387,
- 34388,
- 34389,
- 34390,
- 34391,
- 34392,
- 34393,
- 34394,
- 34395,
- 34396,
- 34397,
- 34398,
- 34399,
- 34400,
- 34401,
- 34402,
- 34403,
- 34404,
- 34405,
- 34406,
- 34407,
- 34408,
- 34409,
- 34410,
- 34411,
- 34412,
- 34413,
- 34414,
- 34415,
- 34416,
- 34417,
- 34418,
- 34419,
- 34420,
- 34421,
- 34422,
- 34423,
- 34424,
- 34425,
- 34426,
- 34427,
- 34428,
- 34429,
- 34430,
- 34431,
- 34432,
- 34433,
- 34434,
- 34435,
- 34436,
- 34437,
- 34438,
- 34439,
- 34440,
- 34441,
- 34442,
- 34443,
- 34444,
- 34445,
- 34446,
- 34447,
- 34448,
- 34449,
- 34450,
- 34451,
- 34452,
- 34453,
- 34454,
- 34455,
- 34456,
- 34457,
- 34458,
- 34459,
- 34460,
- 34461,
- 34462,
- 34463,
- 34464,
- 34465,
- 34466,
- 34467,
- 34468,
- 34469,
- 34470,
- 34471,
- 34472,
- 34473,
- 34474,
- 34475,
- 34476,
- 34477,
- 34478,
- 34479,
- 34480,
- 34481,
- 34482,
- 34483,
- 34484,
- 34485,
- 34486,
- 34487,
- 34488,
- 34489,
- 34490,
- 34491,
- 34492,
- 34493,
- 34494,
- 34495,
- 34496,
- 34497,
- 34498,
- 34499,
- 34500,
- 34501,
- 34502,
- 34503,
- 34504,
- 34505,
- 34506,
- 34507,
- 34508,
- 34509,
- 34510,
- 34511,
- 34512,
- 34513,
- 34514,
- 34515,
- 34516,
- 34517,
- 34518,
- 34519,
- 34520,
- 34521,
- 34522,
- 34523,
- 34524,
- 34525,
- 34526,
- 34527,
- 34528,
- 34529,
- 34530,
- 34531,
- 34532,
- 34533,
- 34534,
- 34535,
- 34536,
- 34537,
- 34538,
- 34539,
- 34540,
- 34541,
- 34542,
- 34543,
- 34544,
- 34545,
- 34546,
- 34547,
- 34548,
- 34549,
- 34550,
- 34551,
- 34552,
- 34553,
- 34554,
- 34555,
- 34556,
- 34557,
- 34558,
- 34559,
- 34560,
- 34561,
- 34562,
- 34563,
- 34564,
- 34565,
- 34566,
- 34567,
- 34568,
- 34569,
- 34570,
- 34571,
- 34572,
- 34573,
- 34574,
- 34575,
- 34576,
- 34577,
- 34578,
- 34579,
- 34580,
- 34581,
- 34582,
- 34583,
- 34584,
- 34585,
- 34586,
- 34587,
- 34588,
- 34589,
- 34590,
- 34591,
- 34592,
- 34593,
- 34594,
- 34595,
- 34596,
- 34597,
- 34598,
- 34599,
- 34600,
- 34601,
- 34602,
- 34603,
- 34604,
- 34605,
- 34606,
- 34607,
- 34608,
- 34609,
- 34610,
- 34611,
- 34612,
- 34613,
- 34614,
- 34615,
- 34616,
- 34617,
- 34618,
- 34619,
- 34620,
- 34621,
- 34622,
- 34623,
- 34624,
- 34625,
- 34626,
- 34627,
- 34628,
- 34629,
- 34630,
- 34631,
- 34632,
- 34633,
- 34634,
- 34635,
- 34636,
- 34637,
- 34638,
- 34639,
- 34640,
- 34641,
- 34642,
- 34643,
- 34644,
- 34645,
- 34646,
- 34647,
- 34648,
- 34649,
- 34650,
- 34651,
- 34652,
- 34653,
- 34654,
- 34655,
- 34656,
- 34657,
- 34658,
- 34659,
- 34660,
- 34661,
- 34662,
- 34663,
- 34664,
- 34665,
- 34666,
- 34667,
- 34668,
- 34669,
- 34670,
- 34671,
- 34672,
- 34673,
- 34674,
- 34675,
- 34676,
- 34677,
- 34678,
- 34679,
- 34680,
- 34681,
- 34682,
- 34683,
- 34684,
- 34685,
- 34686,
- 34687,
- 34688,
- 34689,
- 34690,
- 34691,
- 34692,
- 34693,
- 34694,
- 34695,
- 34696,
- 34697,
- 34698,
- 34699,
- 34700,
- 34701,
- 34702,
- 34703,
- 34704,
- 34705,
- 34706,
- 34707,
- 34708,
- 34709,
- 34710,
- 34711,
- 34712,
- 34713,
- 34714,
- 34715,
- 34716,
- 34717,
- 34718,
- 34719,
- 34720,
- 34721,
- 34722,
- 34723,
- 34724,
- 34725,
- 34726,
- 34727,
- 34728,
- 34729,
- 34730,
- 34731,
- 34732,
- 34733,
- 34734,
- 34735,
- 34736,
- 34737,
- 34738,
- 34739,
- 34740,
- 34741,
- 34742,
- 34743,
- 34744,
- 34745,
- 34746,
- 34747,
- 34748,
- 34749,
- 34750,
- 34751,
- 34752,
- 34753,
- 34754,
- 34755,
- 34756,
- 34757,
- 34758,
- 34759,
- 34760,
- 34761,
- 34762,
- 34763,
- 34764,
- 34765,
- 34766,
- 34767,
- 34768,
- 34769,
- 34770,
- 34771,
- 34772,
- 34773,
- 34774,
- 34775,
- 34776,
- 34777,
- 34778,
- 34779,
- 34780,
- 34781,
- 34782,
- 34783,
- 34784,
- 34785,
- 34786,
- 34787,
- 34788,
- 34789,
- 34790,
- 34791,
- 34792,
- 34793,
- 34794,
- 34795,
- 34796,
- 34797,
- 34798,
- 34799,
- 34800,
- 34801,
- 34802,
- 34803,
- 34804,
- 34805,
- 34806,
- 34807,
- 34808,
- 34809,
- 34810,
- 34811,
- 34812,
- 34813,
- 34814,
- 34815,
- 34816,
- 34817,
- 34818,
- 34819,
- 34820,
- 34821,
- 34822,
- 34823,
- 34824,
- 34825,
- 34826,
- 34827,
- 34828,
- 34829,
- 34830,
- 34831,
- 34832,
- 34833,
- 34834,
- 34835,
- 34836,
- 34837,
- 34838,
- 34839,
- 34840,
- 34841,
- 34842,
- 34843,
- 34844,
- 34845,
- 34846,
- 34847,
- 34848,
- 34849,
- 34850,
- 34851,
- 34852,
- 34853,
- 34854,
- 34855,
- 34856,
- 34857,
- 34858,
- 34859,
- 34860,
- 34861,
- 34862,
- 34863,
- 34864,
- 34865,
- 34866,
- 34867,
- 34868,
- 34869,
- 34870,
- 34871,
- 34872,
- 34873,
- 34874,
- 34875,
- 34876,
- 34877,
- 34878,
- 34879,
- 34880,
- 34881,
- 34882,
- 34883,
- 34884,
- 34885,
- 34886,
- 34887,
- 34888,
- 34889,
- 34890,
- 34891,
- 34892,
- 34893,
- 34894,
- 34895,
- 34896,
- 34897,
- 34898,
- 34899,
- 34900,
- 34901,
- 34902,
- 34903,
- 34904,
- 34905,
- 34906,
- 34907,
- 34908,
- 34909,
- 34910,
- 34911,
- 34912,
- 34913,
- 34914,
- 34915,
- 34916,
- 34917,
- 34918,
- 34919,
- 34920,
- 34921,
- 34922,
- 34923,
- 34924,
- 34925,
- 34926,
- 34927,
- 34928,
- 34929,
- 34930,
- 34931,
- 34932,
- 34933,
- 34934,
- 34935,
- 34936,
- 34937,
- 34938,
- 34939,
- 34940,
- 34941,
- 34942,
- 34943,
- 34944,
- 34945,
- 34946,
- 34947,
- 34948,
- 34949,
- 34950,
- 34951,
- 34952,
- 34953,
- 34954,
- 34955,
- 34956,
- 34957,
- 34958,
- 34959,
- 34960,
- 34961,
- 34962,
- 34963,
- 34964,
- 34965,
- 34966,
- 34967,
- 34968,
- 34969,
- 34970,
- 34971,
- 34972,
- 34973,
- 34974,
- 34975,
- 34976,
- 34977,
- 34978,
- 34979,
- 34980,
- 34981,
- 34982,
- 34983,
- 34984,
- 34985,
- 34986,
- 34987,
- 34988,
- 34989,
- 34990,
- 34991,
- 34992,
- 34993,
- 34994,
- 34995,
- 34996,
- 34997,
- 34998,
- 34999,
- 35000,
- 35001,
- 35002,
- 35003,
- 35004,
- 35005,
- 35006,
- 35007,
- 35008,
- 35009,
- 35010,
- 35011,
- 35012,
- 35013,
- 35014,
- 35015,
- 35016,
- 35017,
- 35018,
- 35019,
- 35020,
- 35021,
- 35022,
- 35023,
- 35024,
- 35025,
- 35026,
- 35027,
- 35028,
- 35029,
- 35030,
- 35031,
- 35032,
- 35033,
- 35034,
- 35035,
- 35036,
- 35037,
- 35038,
- 35039,
- 35040,
- 35041,
- 35042,
- 35043,
- 35044,
- 35045,
- 35046,
- 35047,
- 35048,
- 35049,
- 35050,
- 35051,
- 35052,
- 35053,
- 35054,
- 35055,
- 35056,
- 35057,
- 35058,
- 35059,
- 35060,
- 35061,
- 35062,
- 35063,
- 35064,
- 35065,
- 35066,
- 35067,
- 35068,
- 35069,
- 35070,
- 35071,
- 35072,
- 35073,
- 35074,
- 35075,
- 35076,
- 35077,
- 35078,
- 35079,
- 35080,
- 35081,
- 35082,
- 35083,
- 35084,
- 35085,
- 35086,
- 35087,
- 35088,
- 35089,
- 35090,
- 35091,
- 35092,
- 35093,
- 35094,
- 35095,
- 35096,
- 35097,
- 35098,
- 35099,
- 35100,
- 35101,
- 35102,
- 35103,
- 35104,
- 35105,
- 35106,
- 35107,
- 35108,
- 35109,
- 35110,
- 35111,
- 35112,
- 35113,
- 35114,
- 35115,
- 35116,
- 35117,
- 35118,
- 35119,
- 35120,
- 35121,
- 35122,
- 35123,
- 35124,
- 35125,
- 35126,
- 35127,
- 35128,
- 35129,
- 35130,
- 35131,
- 35132,
- 35133,
- 35134,
- 35135,
- 35136,
- 35137,
- 35138,
- 35139,
- 35140,
- 35141,
- 35142,
- 35143,
- 35144,
- 35145,
- 35146,
- 35147,
- 35148,
- 35149,
- 35150,
- 35151,
- 35152,
- 35153,
- 35154,
- 35155,
- 35156,
- 35157,
- 35158,
- 35159,
- 35160,
- 35161,
- 35162,
- 35163,
- 35164,
- 35165,
- 35166,
- 35167,
- 35168,
- 35169,
- 35170,
- 35171,
- 35172,
- 35173,
- 35174,
- 35175,
- 35176,
- 35177,
- 35178,
- 35179,
- 35180,
- 35181,
- 35182,
- 35183,
- 35184,
- 35185,
- 35186,
- 35187,
- 35188,
- 35189,
- 35190,
- 35191,
- 35192,
- 35193,
- 35194,
- 35195,
- 35196,
- 35197,
- 35198,
- 35199,
- 35200,
- 35201,
- 35202,
- 35203,
- 35204,
- 35205,
- 35206,
- 35207,
- 35208,
- 35209,
- 35210,
- 35211,
- 35212,
- 35213,
- 35214,
- 35215,
- 35216,
- 35217,
- 35218,
- 35219,
- 35220,
- 35221,
- 35222,
- 35223,
- 35224,
- 35225,
- 35226,
- 35227,
- 35228,
- 35229,
- 35230,
- 35231,
- 35232,
- 35233,
- 35234,
- 35235,
- 35236,
- 35237,
- 35238,
- 35239,
- 35240,
- 35241,
- 35242,
- 35243,
- 35244,
- 35245,
- 35246,
- 35247,
- 35248,
- 35249,
- 35250,
- 35251,
- 35252,
- 35253,
- 35254,
- 35255,
- 35256,
- 35257,
- 35258,
- 35259,
- 35260,
- 35261,
- 35262,
- 35263,
- 35264,
- 35265,
- 35266,
- 35267,
- 35268,
- 35269,
- 35270,
- 35271,
- 35272,
- 35273,
- 35274,
- 35275,
- 35276,
- 35277,
- 35278,
- 35279,
- 35280,
- 35281,
- 35282,
- 35283,
- 35284,
- 35285,
- 35286,
- 35287,
- 35288,
- 35289,
- 35290,
- 35291,
- 35292,
- 35293,
- 35294,
- 35295,
- 35296,
- 35297,
- 35298,
- 35299,
- 35300,
- 35301,
- 35302,
- 35303,
- 35304,
- 35305,
- 35306,
- 35307,
- 35308,
- 35309,
- 35310,
- 35311,
- 35312,
- 35313,
- 35314,
- 35315,
- 35316,
- 35317,
- 35318,
- 35319,
- 35320,
- 35321,
- 35322,
- 35323,
- 35324,
- 35325,
- 35326,
- 35327,
- 35328,
- 35329,
- 35330,
- 35331,
- 35332,
- 35333,
- 35334,
- 35335,
- 35336,
- 35337,
- 35338,
- 35339,
- 35340,
- 35341,
- 35342,
- 35343,
- 35344,
- 35345,
- 35346,
- 35347,
- 35348,
- 35349,
- 35350,
- 35351,
- 35352,
- 35353,
- 35354,
- 35355,
- 35356,
- 35357,
- 35358,
- 35359,
- 35360,
- 35361,
- 35362,
- 35363,
- 35364,
- 35365,
- 35366,
- 35367,
- 35368,
- 35369,
- 35370,
- 35371,
- 35372,
- 35373,
- 35374,
- 35375,
- 35376,
- 35377,
- 35378,
- 35379,
- 35380,
- 35381,
- 35382,
- 35383,
- 35384,
- 35385,
- 35386,
- 35387,
- 35388,
- 35389,
- 35390,
- 35391,
- 35392,
- 35393,
- 35394,
- 35395,
- 35396,
- 35397,
- 35398,
- 35399,
- 35400,
- 35401,
- 35402,
- 35403,
- 35404,
- 35405,
- 35406,
- 35407,
- 35408,
- 35409,
- 35410,
- 35411,
- 35412,
- 35413,
- 35414,
- 35415,
- 35416,
- 35417,
- 35418,
- 35419,
- 35420,
- 35421,
- 35422,
- 35423,
- 35424,
- 35425,
- 35426,
- 35427,
- 35428,
- 35429,
- 35430,
- 35431,
- 35432,
- 35433,
- 35434,
- 35435,
- 35436,
- 35437,
- 35438,
- 35439,
- 35440,
- 35441,
- 35442,
- 35443,
- 35444,
- 35445,
- 35446,
- 35447,
- 35448,
- 35449,
- 35450,
- 35451,
- 35452,
- 35453,
- 35454,
- 35455,
- 35456,
- 35457,
- 35458,
- 35459,
- 35460,
- 35461,
- 35462,
- 35463,
- 35464,
- 35465,
- 35466,
- 35467,
- 35468,
- 35469,
- 35470,
- 35471,
- 35472,
- 35473,
- 35474,
- 35475,
- 35476,
- 35477,
- 35478,
- 35479,
- 35480,
- 35481,
- 35482,
- 35483,
- 35484,
- 35485,
- 35486,
- 35487,
- 35488,
- 35489,
- 35490,
- 35491,
- 35492,
- 35493,
- 35494,
- 35495,
- 35496,
- 35497,
- 35498,
- 35499,
- 35500,
- 35501,
- 35502,
- 35503,
- 35504,
- 35505,
- 35506,
- 35507,
- 35508,
- 35509,
- 35510,
- 35511,
- 35512,
- 35513,
- 35514,
- 35515,
- 35516,
- 35517,
- 35518,
- 35519,
- 35520,
- 35521,
- 35522,
- 35523,
- 35524,
- 35525,
- 35526,
- 35527,
- 35528,
- 35529,
- 35530,
- 35531,
- 35532,
- 35533,
- 35534,
- 35535,
- 35536,
- 35537,
- 35538,
- 35539,
- 35540,
- 35541,
- 35542,
- 35543,
- 35544,
- 35545,
- 35546,
- 35547,
- 35548,
- 35549,
- 35550,
- 35551,
- 35552,
- 35553,
- 35554,
- 35555,
- 35556,
- 35557,
- 35558,
- 35559,
- 35560,
- 35561,
- 35562,
- 35563,
- 35564,
- 35565,
- 35566,
- 35567,
- 35568,
- 35569,
- 35570,
- 35571,
- 35572,
- 35573,
- 35574,
- 35575,
- 35576,
- 35577,
- 35578,
- 35579,
- 35580,
- 35581,
- 35582,
- 35583,
- 35584,
- 35585,
- 35586,
- 35587,
- 35588,
- 35589,
- 35590,
- 35591,
- 35592,
- 35593,
- 35594,
- 35595,
- 35596,
- 35597,
- 35598,
- 35599,
- 35600,
- 35601,
- 35602,
- 35603,
- 35604,
- 35605,
- 35606,
- 35607,
- 35608,
- 35609,
- 35610,
- 35611,
- 35612,
- 35613,
- 35614,
- 35615,
- 35616,
- 35617,
- 35618,
- 35619,
- 35620,
- 35621,
- 35622,
- 35623,
- 35624,
- 35625,
- 35626,
- 35627,
- 35628,
- 35629,
- 35630,
- 35631,
- 35632,
- 35633,
- 35634,
- 35635,
- 35636,
- 35637,
- 35638,
- 35639,
- 35640,
- 35641,
- 35642,
- 35643,
- 35644,
- 35645,
- 35646,
- 35647,
- 35648,
- 35649,
- 35650,
- 35651,
- 35652,
- 35653,
- 35654,
- 35655,
- 35656,
- 35657,
- 35658,
- 35659,
- 35660,
- 35661,
- 35662,
- 35663,
- 35664,
- 35665,
- 35666,
- 35667,
- 35668,
- 35669,
- 35670,
- 35671,
- 35672,
- 35673,
- 35674,
- 35675,
- 35676,
- 35677,
- 35678,
- 35679,
- 35680,
- 35681,
- 35682,
- 35683,
- 35684,
- 35685,
- 35686,
- 35687,
- 35688,
- 35689,
- 35690,
- 35691,
- 35692,
- 35693,
- 35694,
- 35695,
- 35696,
- 35697,
- 35698,
- 35699,
- 35700,
- 35701,
- 35702,
- 35703,
- 35704,
- 35705,
- 35706,
- 35707,
- 35708,
- 35709,
- 35710,
- 35711,
- 35712,
- 35713,
- 35714,
- 35715,
- 35716,
- 35717,
- 35718,
- 35719,
- 35720,
- 35721,
- 35722,
- 35723,
- 35724,
- 35725,
- 35726,
- 35727,
- 35728,
- 35729,
- 35730,
- 35731,
- 35732,
- 35733,
- 35734,
- 35735,
- 35736,
- 35737,
- 35738,
- 35739,
- 35740,
- 35741,
- 35742,
- 35743,
- 35744,
- 35745,
- 35746,
- 35747,
- 35748,
- 35749,
- 35750,
- 35751,
- 35752,
- 35753,
- 35754,
- 35755,
- 35756,
- 35757,
- 35758,
- 35759,
- 35760,
- 35761,
- 35762,
- 35763,
- 35764,
- 35765,
- 35766,
- 35767,
- 35768,
- 35769,
- 35770,
- 35771,
- 35772,
- 35773,
- 35774,
- 35775,
- 35776,
- 35777,
- 35778,
- 35779,
- 35780,
- 35781,
- 35782,
- 35783,
- 35784,
- 35785,
- 35786,
- 35787,
- 35788,
- 35789,
- 35790,
- 35791,
- 35792,
- 35793,
- 35794,
- 35795,
- 35796,
- 35797,
- 35798,
- 35799,
- 35800,
- 35801,
- 35802,
- 35803,
- 35804,
- 35805,
- 35806,
- 35807,
- 35808,
- 35809,
- 35810,
- 35811,
- 35812,
- 35813,
- 35814,
- 35815,
- 35816,
- 35817,
- 35818,
- 35819,
- 35820,
- 35821,
- 35822,
- 35823,
- 35824,
- 35825,
- 35826,
- 35827,
- 35828,
- 35829,
- 35830,
- 35831,
- 35832,
- 35833,
- 35834,
- 35835,
- 35836,
- 35837,
- 35838,
- 35839,
- 35840,
- 35841,
- 35842,
- 35843,
- 35844,
- 35845,
- 35846,
- 35847,
- 35848,
- 35849,
- 35850,
- 35851,
- 35852,
- 35853,
- 35854,
- 35855,
- 35856,
- 35857,
- 35858,
- 35859,
- 35860,
- 35861,
- 35862,
- 35863,
- 35864,
- 35865,
- 35866,
- 35867,
- 35868,
- 35869,
- 35870,
- 35871,
- 35872,
- 35873,
- 35874,
- 35875,
- 35876,
- 35877,
- 35878,
- 35879,
- 35880,
- 35881,
- 35882,
- 35883,
- 35884,
- 35885,
- 35886,
- 35887,
- 35888,
- 35889,
- 35890,
- 35891,
- 35892,
- 35893,
- 35894,
- 35895,
- 35896,
- 35897,
- 35898,
- 35899,
- 35900,
- 35901,
- 35902,
- 35903,
- 35904,
- 35905,
- 35906,
- 35907,
- 35908,
- 35909,
- 35910,
- 35911,
- 35912,
- 35913,
- 35914,
- 35915,
- 35916,
- 35917,
- 35918,
- 35919,
- 35920,
- 35921,
- 35922,
- 35923,
- 35924,
- 35925,
- 35926,
- 35927,
- 35928,
- 35929,
- 35930,
- 35931,
- 35932,
- 35933,
- 35934,
- 35935,
- 35936,
- 35937,
- 35938,
- 35939,
- 35940,
- 35941,
- 35942,
- 35943,
- 35944,
- 35945,
- 35946,
- 35947,
- 35948,
- 35949,
- 35950,
- 35951,
- 35952,
- 35953,
- 35954,
- 35955,
- 35956,
- 35957,
- 35958,
- 35959,
- 35960,
- 35961,
- 35962,
- 35963,
- 35964,
- 35965,
- 35966,
- 35967,
- 35968,
- 35969,
- 35970,
- 35971,
- 35972,
- 35973,
- 35974,
- 35975,
- 35976,
- 35977,
- 35978,
- 35979,
- 35980,
- 35981,
- 35982,
- 35983,
- 35984,
- 35985,
- 35986,
- 35987,
- 35988,
- 35989,
- 35990,
- 35991,
- 35992,
- 35993,
- 35994,
- 35995,
- 35996,
- 35997,
- 35998,
- 35999,
- 36000,
- 36001,
- 36002,
- 36003,
- 36004,
- 36005,
- 36006,
- 36007,
- 36008,
- 36009,
- 36010,
- 36011,
- 36012,
- 36013,
- 36014,
- 36015,
- 36016,
- 36017,
- 36018,
- 36019,
- 36020,
- 36021,
- 36022,
- 36023,
- 36024,
- 36025,
- 36026,
- 36027,
- 36028,
- 36029,
- 36030,
- 36031,
- 36032,
- 36033,
- 36034,
- 36035,
- 36036,
- 36037,
- 36038,
- 36039,
- 36040,
- 36041,
- 36042,
- 36043,
- 36044,
- 36045,
- 36046,
- 36047,
- 36048,
- 36049,
- 36050,
- 36051,
- 36052,
- 36053,
- 36054,
- 36055,
- 36056,
- 36057,
- 36058,
- 36059,
- 36060,
- 36061,
- 36062,
- 36063,
- 36064,
- 36065,
- 36066,
- 36067,
- 36068,
- 36069,
- 36070,
- 36071,
- 36072,
- 36073,
- 36074,
- 36075,
- 36076,
- 36077,
- 36078,
- 36079,
- 36080,
- 36081,
- 36082,
- 36083,
- 36084,
- 36085,
- 36086,
- 36087,
- 36088,
- 36089,
- 36090,
- 36091,
- 36092,
- 36093,
- 36094,
- 36095,
- 36096,
- 36097,
- 36098,
- 36099,
- 36100,
- 36101,
- 36102,
- 36103,
- 36104,
- 36105,
- 36106,
- 36107,
- 36108,
- 36109,
- 36110,
- 36111,
- 36112,
- 36113,
- 36114,
- 36115,
- 36116,
- 36117,
- 36118,
- 36119,
- 36120,
- 36121,
- 36122,
- 36123,
- 36124,
- 36125,
- 36126,
- 36127,
- 36128,
- 36129,
- 36130,
- 36131,
- 36132,
- 36133,
- 36134,
- 36135,
- 36136,
- 36137,
- 36138,
- 36139,
- 36140,
- 36141,
- 36142,
- 36143,
- 36144,
- 36145,
- 36146,
- 36147,
- 36148,
- 36149,
- 36150,
- 36151,
- 36152,
- 36153,
- 36154,
- 36155,
- 36156,
- 36157,
- 36158,
- 36159,
- 36160,
- 36161,
- 36162,
- 36163,
- 36164,
- 36165,
- 36166,
- 36167,
- 36168,
- 36169,
- 36170,
- 36171,
- 36172,
- 36173,
- 36174,
- 36175,
- 36176,
- 36177,
- 36178,
- 36179,
- 36180,
- 36181,
- 36182,
- 36183,
- 36184,
- 36185,
- 36186,
- 36187,
- 36188,
- 36189,
- 36190,
- 36191,
- 36192,
- 36193,
- 36194,
- 36195,
- 36196,
- 36197,
- 36198,
- 36199,
- 36200,
- 36201,
- 36202,
- 36203,
- 36204,
- 36205,
- 36206,
- 36207,
- 36208,
- 36209,
- 36210,
- 36211,
- 36212,
- 36213,
- 36214,
- 36215,
- 36216,
- 36217,
- 36218,
- 36219,
- 36220,
- 36221,
- 36222,
- 36223,
- 36224,
- 36225,
- 36226,
- 36227,
- 36228,
- 36229,
- 36230,
- 36231,
- 36232,
- 36233,
- 36234,
- 36235,
- 36236,
- 36237,
- 36238,
- 36239,
- 36240,
- 36241,
- 36242,
- 36243,
- 36244,
- 36245,
- 36246,
- 36247,
- 36248,
- 36249,
- 36250,
- 36251,
- 36252,
- 36253,
- 36254,
- 36255,
- 36256,
- 36257,
- 36258,
- 36259,
- 36260,
- 36261,
- 36262,
- 36263,
- 36264,
- 36265,
- 36266,
- 36267,
- 36268,
- 36269,
- 36270,
- 36271,
- 36272,
- 36273,
- 36274,
- 36275,
- 36276,
- 36277,
- 36278,
- 36279,
- 36280,
- 36281,
- 36282,
- 36283,
- 36284,
- 36285,
- 36286,
- 36287,
- 36288,
- 36289,
- 36290,
- 36291,
- 36292,
- 36293,
- 36294,
- 36295,
- 36296,
- 36297,
- 36298,
- 36299,
- 36300,
- 36301,
- 36302,
- 36303,
- 36304,
- 36305,
- 36306,
- 36307,
- 36308,
- 36309,
- 36310,
- 36311,
- 36312,
- 36313,
- 36314,
- 36315,
- 36316,
- 36317,
- 36318,
- 36319,
- 36320,
- 36321,
- 36322,
- 36323,
- 36324,
- 36325,
- 36326,
- 36327,
- 36328,
- 36329,
- 36330,
- 36331,
- 36332,
- 36333,
- 36334,
- 36335,
- 36336,
- 36337,
- 36338,
- 36339,
- 36340,
- 36341,
- 36342,
- 36343,
- 36344,
- 36345,
- 36346,
- 36347,
- 36348,
- 36349,
- 36350,
- 36351,
- 36352,
- 36353,
- 36354,
- 36355,
- 36356,
- 36357,
- 36358,
- 36359,
- 36360,
- 36361,
- 36362,
- 36363,
- 36364,
- 36365,
- 36366,
- 36367,
- 36368,
- 36369,
- 36370,
- 36371,
- 36372,
- 36373,
- 36374,
- 36375,
- 36376,
- 36377,
- 36378,
- 36379,
- 36380,
- 36381,
- 36382,
- 36383,
- 36384,
- 36385,
- 36386,
- 36387,
- 36388,
- 36389,
- 36390,
- 36391,
- 36392,
- 36393,
- 36394,
- 36395,
- 36396,
- 36397,
- 36398,
- 36399,
- 36400,
- 36401,
- 36402,
- 36403,
- 36404,
- 36405,
- 36406,
- 36407,
- 36408,
- 36409,
- 36410,
- 36411,
- 36412,
- 36413,
- 36414,
- 36415,
- 36416,
- 36417,
- 36418,
- 36419,
- 36420,
- 36421,
- 36422,
- 36423,
- 36424,
- 36425,
- 36426,
- 36427,
- 36428,
- 36429,
- 36430,
- 36431,
- 36432,
- 36433,
- 36434,
- 36435,
- 36436,
- 36437,
- 36438,
- 36439,
- 36440,
- 36441,
- 36442,
- 36443,
- 36444,
- 36445,
- 36446,
- 36447,
- 36448,
- 36449,
- 36450,
- 36451,
- 36452,
- 36453,
- 36454,
- 36455,
- 36456,
- 36457,
- 36458,
- 36459,
- 36460,
- 36461,
- 36462,
- 36463,
- 36464,
- 36465,
- 36466,
- 36467,
- 36468,
- 36469,
- 36470,
- 36471,
- 36472,
- 36473,
- 36474,
- 36475,
- 36476,
- 36477,
- 36478,
- 36479,
- 36480,
- 36481,
- 36482,
- 36483,
- 36484,
- 36485,
- 36486,
- 36487,
- 36488,
- 36489,
- 36490,
- 36491,
- 36492,
- 36493,
- 36494,
- 36495,
- 36496,
- 36497,
- 36498,
- 36499,
- 36500,
- 36501,
- 36502,
- 36503,
- 36504,
- 36505,
- 36506,
- 36507,
- 36508,
- 36509,
- 36510,
- 36511,
- 36512,
- 36513,
- 36514,
- 36515,
- 36516,
- 36517,
- 36518,
- 36519,
- 36520,
- 36521,
- 36522,
- 36523,
- 36524,
- 36525,
- 36526,
- 36527,
- 36528,
- 36529,
- 36530,
- 36531,
- 36532,
- 36533,
- 36534,
- 36535,
- 36536,
- 36537,
- 36538,
- 36539,
- 36540,
- 36541,
- 36542,
- 36543,
- 36544,
- 36545,
- 36546,
- 36547,
- 36548,
- 36549,
- 36550,
- 36551,
- 36552,
- 36553,
- 36554,
- 36555,
- 36556,
- 36557,
- 36558,
- 36559,
- 36560,
- 36561,
- 36562,
- 36563,
- 36564,
- 36565,
- 36566,
- 36567,
- 36568,
- 36569,
- 36570,
- 36571,
- 36572,
- 36573,
- 36574,
- 36575,
- 36576,
- 36577,
- 36578,
- 36579,
- 36580,
- 36581,
- 36582,
- 36583,
- 36584,
- 36585,
- 36586,
- 36587,
- 36588,
- 36589,
- 36590,
- 36591,
- 36592,
- 36593,
- 36594,
- 36595,
- 36596,
- 36597,
- 36598,
- 36599,
- 36600,
- 36601,
- 36602,
- 36603,
- 36604,
- 36605,
- 36606,
- 36607,
- 36608,
- 36609,
- 36610,
- 36611,
- 36612,
- 36613,
- 36614,
- 36615,
- 36616,
- 36617,
- 36618,
- 36619,
- 36620,
- 36621,
- 36622,
- 36623,
- 36624,
- 36625,
- 36626,
- 36627,
- 36628,
- 36629,
- 36630,
- 36631,
- 36632,
- 36633,
- 36634,
- 36635,
- 36636,
- 36637,
- 36638,
- 36639,
- 36640,
- 36641,
- 36642,
- 36643,
- 36644,
- 36645,
- 36646,
- 36647,
- 36648,
- 36649,
- 36650,
- 36651,
- 36652,
- 36653,
- 36654,
- 36655,
- 36656,
- 36657,
- 36658,
- 36659,
- 36660,
- 36661,
- 36662,
- 36663,
- 36664,
- 36665,
- 36666,
- 36667,
- 36668,
- 36669,
- 36670,
- 36671,
- 36672,
- 36673,
- 36674,
- 36675,
- 36676,
- 36677,
- 36678,
- 36679,
- 36680,
- 36681,
- 36682,
- 36683,
- 36684,
- 36685,
- 36686,
- 36687,
- 36688,
- 36689,
- 36690,
- 36691,
- 36692,
- 36693,
- 36694,
- 36695,
- 36696,
- 36697,
- 36698,
- 36699,
- 36700,
- 36701,
- 36702,
- 36703,
- 36704,
- 36705,
- 36706,
- 36707,
- 36708,
- 36709,
- 36710,
- 36711,
- 36712,
- 36713,
- 36714,
- 36715,
- 36716,
- 36717,
- 36718,
- 36719,
- 36720,
- 36721,
- 36722,
- 36723,
- 36724,
- 36725,
- 36726,
- 36727,
- 36728,
- 36729,
- 36730,
- 36731,
- 36732,
- 36733,
- 36734,
- 36735,
- 36736,
- 36737,
- 36738,
- 36739,
- 36740,
- 36741,
- 36742,
- 36743,
- 36744,
- 36745,
- 36746,
- 36747,
- 36748,
- 36749,
- 36750,
- 36751,
- 36752,
- 36753,
- 36754,
- 36755,
- 36756,
- 36757,
- 36758,
- 36759,
- 36760,
- 36761,
- 36762,
- 36763,
- 36764,
- 36765,
- 36766,
- 36767,
- 36768,
- 36769,
- 36770,
- 36771,
- 36772,
- 36773,
- 36774,
- 36775,
- 36776,
- 36777,
- 36778,
- 36779,
- 36780,
- 36781,
- 36782,
- 36783,
- 36784,
- 36785,
- 36786,
- 36787,
- 36788,
- 36789,
- 36790,
- 36791,
- 36792,
- 36793,
- 36794,
- 36795,
- 36796,
- 36797,
- 36798,
- 36799,
- 36800,
- 36801,
- 36802,
- 36803,
- 36804,
- 36805,
- 36806,
- 36807,
- 36808,
- 36809,
- 36810,
- 36811,
- 36812,
- 36813,
- 36814,
- 36815,
- 36816,
- 36817,
- 36818,
- 36819,
- 36820,
- 36821,
- 36822,
- 36823,
- 36824,
- 36825,
- 36826,
- 36827,
- 36828,
- 36829,
- 36830,
- 36831,
- 36832,
- 36833,
- 36834,
- 36835,
- 36836,
- 36837,
- 36838,
- 36839,
- 36840,
- 36841,
- 36842,
- 36843,
- 36844,
- 36845,
- 36846,
- 36847,
- 36848,
- 36849,
- 36850,
- 36851,
- 36852,
- 36853,
- 36854,
- 36855,
- 36856,
- 36857,
- 36858,
- 36859,
- 36860,
- 36861,
- 36862,
- 36863,
- 36864,
- 36865,
- 36866,
- 36867,
- 36868,
- 36869,
- 36870,
- 36871,
- 36872,
- 36873,
- 36874,
- 36875,
- 36876,
- 36877,
- 36878,
- 36879,
- 36880,
- 36881,
- 36882,
- 36883,
- 36884,
- 36885,
- 36886,
- 36887,
- 36888,
- 36889,
- 36890,
- 36891,
- 36892,
- 36893,
- 36894,
- 36895,
- 36896,
- 36897,
- 36898,
- 36899,
- 36900,
- 36901,
- 36902,
- 36903,
- 36904,
- 36905,
- 36906,
- 36907,
- 36908,
- 36909,
- 36910,
- 36911,
- 36912,
- 36913,
- 36914,
- 36915,
- 36916,
- 36917,
- 36918,
- 36919,
- 36920,
- 36921,
- 36922,
- 36923,
- 36924,
- 36925,
- 36926,
- 36927,
- 36928,
- 36929,
- 36930,
- 36931,
- 36932,
- 36933,
- 36934,
- 36935,
- 36936,
- 36937,
- 36938,
- 36939,
- 36940,
- 36941,
- 36942,
- 36943,
- 36944,
- 36945,
- 36946,
- 36947,
- 36948,
- 36949,
- 36950,
- 36951,
- 36952,
- 36953,
- 36954,
- 36955,
- 36956,
- 36957,
- 36958,
- 36959,
- 36960,
- 36961,
- 36962,
- 36963,
- 36964,
- 36965,
- 36966,
- 36967,
- 36968,
- 36969,
- 36970,
- 36971,
- 36972,
- 36973,
- 36974,
- 36975,
- 36976,
- 36977,
- 36978,
- 36979,
- 36980,
- 36981,
- 36982,
- 36983,
- 36984,
- 36985,
- 36986,
- 36987,
- 36988,
- 36989,
- 36990,
- 36991,
- 36992,
- 36993,
- 36994,
- 36995,
- 36996,
- 36997,
- 36998,
- 36999,
- 37000,
- 37001,
- 37002,
- 37003,
- 37004,
- 37005,
- 37006,
- 37007,
- 37008,
- 37009,
- 37010,
- 37011,
- 37012,
- 37013,
- 37014,
- 37015,
- 37016,
- 37017,
- 37018,
- 37019,
- 37020,
- 37021,
- 37022,
- 37023,
- 37024,
- 37025,
- 37026,
- 37027,
- 37028,
- 37029,
- 37030,
- 37031,
- 37032,
- 37033,
- 37034,
- 37035,
- 37036,
- 37037,
- 37038,
- 37039,
- 37040,
- 37041,
- 37042,
- 37043,
- 37044,
- 37045,
- 37046,
- 37047,
- 37048,
- 37049,
- 37050,
- 37051,
- 37052,
- 37053,
- 37054,
- 37055,
- 37056,
- 37057,
- 37058,
- 37059,
- 37060,
- 37061,
- 37062,
- 37063,
- 37064,
- 37065,
- 37066,
- 37067,
- 37068,
- 37069,
- 37070,
- 37071,
- 37072,
- 37073,
- 37074,
- 37075,
- 37076,
- 37077,
- 37078,
- 37079,
- 37080,
- 37081,
- 37082,
- 37083,
- 37084,
- 37085,
- 37086,
- 37087,
- 37088,
- 37089,
- 37090,
- 37091,
- 37092,
- 37093,
- 37094,
- 37095,
- 37096,
- 37097,
- 37098,
- 37099,
- 37100,
- 37101,
- 37102,
- 37103,
- 37104,
- 37105,
- 37106,
- 37107,
- 37108,
- 37109,
- 37110,
- 37111,
- 37112,
- 37113,
- 37114,
- 37115,
- 37116,
- 37117,
- 37118,
- 37119,
- 37120,
- 37121,
- 37122,
- 37123,
- 37124,
- 37125,
- 37126,
- 37127,
- 37128,
- 37129,
- 37130,
- 37131,
- 37132,
- 37133,
- 37134,
- 37135,
- 37136,
- 37137,
- 37138,
- 37139,
- 37140,
- 37141,
- 37142,
- 37143,
- 37144,
- 37145,
- 37146,
- 37147,
- 37148,
- 37149,
- 37150,
- 37151,
- 37152,
- 37153,
- 37154,
- 37155,
- 37156,
- 37157,
- 37158,
- 37159,
- 37160,
- 37161,
- 37162,
- 37163,
- 37164,
- 37165,
- 37166,
- 37167,
- 37168,
- 37169,
- 37170,
- 37171,
- 37172,
- 37173,
- 37174,
- 37175,
- 37176,
- 37177,
- 37178,
- 37179,
- 37180,
- 37181,
- 37182,
- 37183,
- 37184,
- 37185,
- 37186,
- 37187,
- 37188,
- 37189,
- 37190,
- 37191,
- 37192,
- 37193,
- 37194,
- 37195,
- 37196,
- 37197,
- 37198,
- 37199,
- 37200,
- 37201,
- 37202,
- 37203,
- 37204,
- 37205,
- 37206,
- 37207,
- 37208,
- 37209,
- 37210,
- 37211,
- 37212,
- 37213,
- 37214,
- 37215,
- 37216,
- 37217,
- 37218,
- 37219,
- 37220,
- 37221,
- 37222,
- 37223,
- 37224,
- 37225,
- 37226,
- 37227,
- 37228,
- 37229,
- 37230,
- 37231,
- 37232,
- 37233,
- 37234,
- 37235,
- 37236,
- 37237,
- 37238,
- 37239,
- 37240,
- 37241,
- 37242,
- 37243,
- 37244,
- 37245,
- 37246,
- 37247,
- 37248,
- 37249,
- 37250,
- 37251,
- 37252,
- 37253,
- 37254,
- 37255,
- 37256,
- 37257,
- 37258,
- 37259,
- 37260,
- 37261,
- 37262,
- 37263,
- 37264,
- 37265,
- 37266,
- 37267,
- 37268,
- 37269,
- 37270,
- 37271,
- 37272,
- 37273,
- 37274,
- 37275,
- 37276,
- 37277,
- 37278,
- 37279,
- 37280,
- 37281,
- 37282,
- 37283,
- 37284,
- 37285,
- 37286,
- 37287,
- 37288,
- 37289,
- 37290,
- 37291,
- 37292,
- 37293,
- 37294,
- 37295,
- 37296,
- 37297,
- 37298,
- 37299,
- 37300,
- 37301,
- 37302,
- 37303,
- 37304,
- 37305,
- 37306,
- 37307,
- 37308,
- 37309,
- 37310,
- 37311,
- 37312,
- 37313,
- 37314,
- 37315,
- 37316,
- 37317,
- 37318,
- 37319,
- 37320,
- 37321,
- 37322,
- 37323,
- 37324,
- 37325,
- 37326,
- 37327,
- 37328,
- 37329,
- 37330,
- 37331,
- 37332,
- 37333,
- 37334,
- 37335,
- 37336,
- 37337,
- 37338,
- 37339,
- 37340,
- 37341,
- 37342,
- 37343,
- 37344,
- 37345,
- 37346,
- 37347,
- 37348,
- 37349,
- 37350,
- 37351,
- 37352,
- 37353,
- 37354,
- 37355,
- 37356,
- 37357,
- 37358,
- 37359,
- 37360,
- 37361,
- 37362,
- 37363,
- 37364,
- 37365,
- 37366,
- 37367,
- 37368,
- 37369,
- 37370,
- 37371,
- 37372,
- 37373,
- 37374,
- 37375,
- 37376,
- 37377,
- 37378,
- 37379,
- 37380,
- 37381,
- 37382,
- 37383,
- 37384,
- 37385,
- 37386,
- 37387,
- 37388,
- 37389,
- 37390,
- 37391,
- 37392,
- 37393,
- 37394,
- 37395,
- 37396,
- 37397,
- 37398,
- 37399,
- 37400,
- 37401,
- 37402,
- 37403,
- 37404,
- 37405,
- 37406,
- 37407,
- 37408,
- 37409,
- 37410,
- 37411,
- 37412,
- 37413,
- 37414,
- 37415,
- 37416,
- 37417,
- 37418,
- 37419,
- 37420,
- 37421,
- 37422,
- 37423,
- 37424,
- 37425,
- 37426,
- 37427,
- 37428,
- 37429,
- 37430,
- 37431,
- 37432,
- 37433,
- 37434,
- 37435,
- 37436,
- 37437,
- 37438,
- 37439,
- 37440,
- 37441,
- 37442,
- 37443,
- 37444,
- 37445,
- 37446,
- 37447,
- 37448,
- 37449,
- 37450,
- 37451,
- 37452,
- 37453,
- 37454,
- 37455,
- 37456,
- 37457,
- 37458,
- 37459,
- 37460,
- 37461,
- 37462,
- 37463,
- 37464,
- 37465,
- 37466,
- 37467,
- 37468,
- 37469,
- 37470,
- 37471,
- 37472,
- 37473,
- 37474,
- 37475,
- 37476,
- 37477,
- 37478,
- 37479,
- 37480,
- 37481,
- 37482,
- 37483,
- 37484,
- 37485,
- 37486,
- 37487,
- 37488,
- 37489,
- 37490,
- 37491,
- 37492,
- 37493,
- 37494,
- 37495,
- 37496,
- 37497,
- 37498,
- 37499,
- 37500,
- 37501,
- 37502,
- 37503,
- 37504,
- 37505,
- 37506,
- 37507,
- 37508,
- 37509,
- 37510,
- 37511,
- 37512,
- 37513,
- 37514,
- 37515,
- 37516,
- 37517,
- 37518,
- 37519,
- 37520,
- 37521,
- 37522,
- 37523,
- 37524,
- 37525,
- 37526,
- 37527,
- 37528,
- 37529,
- 37530,
- 37531,
- 37532,
- 37533,
- 37534,
- 37535,
- 37536,
- 37537,
- 37538,
- 37539,
- 37540,
- 37541,
- 37542,
- 37543,
- 37544,
- 37545,
- 37546,
- 37547,
- 37548,
- 37549,
- 37550,
- 37551,
- 37552,
- 37553,
- 37554,
- 37555,
- 37556,
- 37557,
- 37558,
- 37559,
- 37560,
- 37561,
- 37562,
- 37563,
- 37564,
- 37565,
- 37566,
- 37567,
- 37568,
- 37569,
- 37570,
- 37571,
- 37572,
- 37573,
- 37574,
- 37575,
- 37576,
- 37577,
- 37578,
- 37579,
- 37580,
- 37581,
- 37582,
- 37583,
- 37584,
- 37585,
- 37586,
- 37587,
- 37588,
- 37589,
- 37590,
- 37591,
- 37592,
- 37593,
- 37594,
- 37595,
- 37596,
- 37597,
- 37598,
- 37599,
- 37600,
- 37601,
- 37602,
- 37603,
- 37604,
- 37605,
- 37606,
- 37607,
- 37608,
- 37609,
- 37610,
- 37611,
- 37612,
- 37613,
- 37614,
- 37615,
- 37616,
- 37617,
- 37618,
- 37619,
- 37620,
- 37621,
- 37622,
- 37623,
- 37624,
- 37625,
- 37626,
- 37627,
- 37628,
- 37629,
- 37630,
- 37631,
- 37632,
- 37633,
- 37634,
- 37635,
- 37636,
- 37637,
- 37638,
- 37639,
- 37640,
- 37641,
- 37642,
- 37643,
- 37644,
- 37645,
- 37646,
- 37647,
- 37648,
- 37649,
- 37650,
- 37651,
- 37652,
- 37653,
- 37654,
- 37655,
- 37656,
- 37657,
- 37658,
- 37659,
- 37660,
- 37661,
- 37662,
- 37663,
- 37664,
- 37665,
- 37666,
- 37667,
- 37668,
- 37669,
- 37670,
- 37671,
- 37672,
- 37673,
- 37674,
- 37675,
- 37676,
- 37677,
- 37678,
- 37679,
- 37680,
- 37681,
- 37682,
- 37683,
- 37684,
- 37685,
- 37686,
- 37687,
- 37688,
- 37689,
- 37690,
- 37691,
- 37692,
- 37693,
- 37694,
- 37695,
- 37696,
- 37697,
- 37698,
- 37699,
- 37700,
- 37701,
- 37702,
- 37703,
- 37704,
- 37705,
- 37706,
- 37707,
- 37708,
- 37709,
- 37710,
- 37711,
- 37712,
- 37713,
- 37714,
- 37715,
- 37716,
- 37717,
- 37718,
- 37719,
- 37720,
- 37721,
- 37722,
- 37723,
- 37724,
- 37725,
- 37726,
- 37727,
- 37728,
- 37729,
- 37730,
- 37731,
- 37732,
- 37733,
- 37734,
- 37735,
- 37736,
- 37737,
- 37738,
- 37739,
- 37740,
- 37741,
- 37742,
- 37743,
- 37744,
- 37745,
- 37746,
- 37747,
- 37748,
- 37749,
- 37750,
- 37751,
- 37752,
- 37753,
- 37754,
- 37755,
- 37756,
- 37757,
- 37758,
- 37759,
- 37760,
- 37761,
- 37762,
- 37763,
- 37764,
- 37765,
- 37766,
- 37767,
- 37768,
- 37769,
- 37770,
- 37771,
- 37772,
- 37773,
- 37774,
- 37775,
- 37776,
- 37777,
- 37778,
- 37779,
- 37780,
- 37781,
- 37782,
- 37783,
- 37784,
- 37785,
- 37786,
- 37787,
- 37788,
- 37789,
- 37790,
- 37791,
- 37792,
- 37793,
- 37794,
- 37795,
- 37796,
- 37797,
- 37798,
- 37799,
- 37800,
- 37801,
- 37802,
- 37803,
- 37804,
- 37805,
- 37806,
- 37807,
- 37808,
- 37809,
- 37810,
- 37811,
- 37812,
- 37813,
- 37814,
- 37815,
- 37816,
- 37817,
- 37818,
- 37819,
- 37820,
- 37821,
- 37822,
- 37823,
- 37824,
- 37825,
- 37826,
- 37827,
- 37828,
- 37829,
- 37830,
- 37831,
- 37832,
- 37833,
- 37834,
- 37835,
- 37836,
- 37837,
- 37838,
- 37839,
- 37840,
- 37841,
- 37842,
- 37843,
- 37844,
- 37845,
- 37846,
- 37847,
- 37848,
- 37849,
- 37850,
- 37851,
- 37852,
- 37853,
- 37854,
- 37855,
- 37856,
- 37857,
- 37858,
- 37859,
- 37860,
- 37861,
- 37862,
- 37863,
- 37864,
- 37865,
- 37866,
- 37867,
- 37868,
- 37869,
- 37870,
- 37871,
- 37872,
- 37873,
- 37874,
- 37875,
- 37876,
- 37877,
- 37878,
- 37879,
- 37880,
- 37881,
- 37882,
- 37883,
- 37884,
- 37885,
- 37886,
- 37887,
- 37888,
- 37889,
- 37890,
- 37891,
- 37892,
- 37893,
- 37894,
- 37895,
- 37896,
- 37897,
- 37898,
- 37899,
- 37900,
- 37901,
- 37902,
- 37903,
- 37904,
- 37905,
- 37906,
- 37907,
- 37908,
- 37909,
- 37910,
- 37911,
- 37912,
- 37913,
- 37914,
- 37915,
- 37916,
- 37917,
- 37918,
- 37919,
- 37920,
- 37921,
- 37922,
- 37923,
- 37924,
- 37925,
- 37926,
- 37927,
- 37928,
- 37929,
- 37930,
- 37931,
- 37932,
- 37933,
- 37934,
- 37935,
- 37936,
- 37937,
- 37938,
- 37939,
- 37940,
- 37941,
- 37942,
- 37943,
- 37944,
- 37945,
- 37946,
- 37947,
- 37948,
- 37949,
- 37950,
- 37951,
- 37952,
- 37953,
- 37954,
- 37955,
- 37956,
- 37957,
- 37958,
- 37959,
- 37960,
- 37961,
- 37962,
- 37963,
- 37964,
- 37965,
- 37966,
- 37967,
- 37968,
- 37969,
- 37970,
- 37971,
- 37972,
- 37973,
- 37974,
- 37975,
- 37976,
- 37977,
- 37978,
- 37979,
- 37980,
- 37981,
- 37982,
- 37983,
- 37984,
- 37985,
- 37986,
- 37987,
- 37988,
- 37989,
- 37990,
- 37991,
- 37992,
- 37993,
- 37994,
- 37995,
- 37996,
- 37997,
- 37998,
- 37999,
- 38000,
- 38001,
- 38002,
- 38003,
- 38004,
- 38005,
- 38006,
- 38007,
- 38008,
- 38009,
- 38010,
- 38011,
- 38012,
- 38013,
- 38014,
- 38015,
- 38016,
- 38017,
- 38018,
- 38019,
- 38020,
- 38021,
- 38022,
- 38023,
- 38024,
- 38025,
- 38026,
- 38027,
- 38028,
- 38029,
- 38030,
- 38031,
- 38032,
- 38033,
- 38034,
- 38035,
- 38036,
- 38037,
- 38038,
- 38039,
- 38040,
- 38041,
- 38042,
- 38043,
- 38044,
- 38045,
- 38046,
- 38047,
- 38048,
- 38049,
- 38050,
- 38051,
- 38052,
- 38053,
- 38054,
- 38055,
- 38056,
- 38057,
- 38058,
- 38059,
- 38060,
- 38061,
- 38062,
- 38063,
- 38064,
- 38065,
- 38066,
- 38067,
- 38068,
- 38069,
- 38070,
- 38071,
- 38072,
- 38073,
- 38074,
- 38075,
- 38076,
- 38077,
- 38078,
- 38079,
- 38080,
- 38081,
- 38082,
- 38083,
- 38084,
- 38085,
- 38086,
- 38087,
- 38088,
- 38089,
- 38090,
- 38091,
- 38092,
- 38093,
- 38094,
- 38095,
- 38096,
- 38097,
- 38098,
- 38099,
- 38100,
- 38101,
- 38102,
- 38103,
- 38104,
- 38105,
- 38106,
- 38107,
- 38108,
- 38109,
- 38110,
- 38111,
- 38112,
- 38113,
- 38114,
- 38115,
- 38116,
- 38117,
- 38118,
- 38119,
- 38120,
- 38121,
- 38122,
- 38123,
- 38124,
- 38125,
- 38126,
- 38127,
- 38128,
- 38129,
- 38130,
- 38131,
- 38132,
- 38133,
- 38134,
- 38135,
- 38136,
- 38137,
- 38138,
- 38139,
- 38140,
- 38141,
- 38142,
- 38143,
- 38144,
- 38145,
- 38146,
- 38147,
- 38148,
- 38149,
- 38150,
- 38151,
- 38152,
- 38153,
- 38154,
- 38155,
- 38156,
- 38157,
- 38158,
- 38159,
- 38160,
- 38161,
- 38162,
- 38163,
- 38164,
- 38165,
- 38166,
- 38167,
- 38168,
- 38169,
- 38170,
- 38171,
- 38172,
- 38173,
- 38174,
- 38175,
- 38176,
- 38177,
- 38178,
- 38179,
- 38180,
- 38181,
- 38182,
- 38183,
- 38184,
- 38185,
- 38186,
- 38187,
- 38188,
- 38189,
- 38190,
- 38191,
- 38192,
- 38193,
- 38194,
- 38195,
- 38196,
- 38197,
- 38198,
- 38199,
- 38200,
- 38201,
- 38202,
- 38203,
- 38204,
- 38205,
- 38206,
- 38207,
- 38208,
- 38209,
- 38210,
- 38211,
- 38212,
- 38213,
- 38214,
- 38215,
- 38216,
- 38217,
- 38218,
- 38219,
- 38220,
- 38221,
- 38222,
- 38223,
- 38224,
- 38225,
- 38226,
- 38227,
- 38228,
- 38229,
- 38230,
- 38231,
- 38232,
- 38233,
- 38234,
- 38235,
- 38236,
- 38237,
- 38238,
- 38239,
- 38240,
- 38241,
- 38242,
- 38243,
- 38244,
- 38245,
- 38246,
- 38247,
- 38248,
- 38249,
- 38250,
- 38251,
- 38252,
- 38253,
- 38254,
- 38255,
- 38256,
- 38257,
- 38258,
- 38259,
- 38260,
- 38261,
- 38262,
- 38263,
- 38264,
- 38265,
- 38266,
- 38267,
- 38268,
- 38269,
- 38270,
- 38271,
- 38272,
- 38273,
- 38274,
- 38275,
- 38276,
- 38277,
- 38278,
- 38279,
- 38280,
- 38281,
- 38282,
- 38283,
- 38284,
- 38285,
- 38286,
- 38287,
- 38288,
- 38289,
- 38290,
- 38291,
- 38292,
- 38293,
- 38294,
- 38295,
- 38296,
- 38297,
- 38298,
- 38299,
- 38300,
- 38301,
- 38302,
- 38303,
- 38304,
- 38305,
- 38306,
- 38307,
- 38308,
- 38309,
- 38310,
- 38311,
- 38312,
- 38313,
- 38314,
- 38315,
- 38316,
- 38317,
- 38318,
- 38319,
- 38320,
- 38321,
- 38322,
- 38323,
- 38324,
- 38325,
- 38326,
- 38327,
- 38328,
- 38329,
- 38330,
- 38331,
- 38332,
- 38333,
- 38334,
- 38335,
- 38336,
- 38337,
- 38338,
- 38339,
- 38340,
- 38341,
- 38342,
- 38343,
- 38344,
- 38345,
- 38346,
- 38347,
- 38348,
- 38349,
- 38350,
- 38351,
- 38352,
- 38353,
- 38354,
- 38355,
- 38356,
- 38357,
- 38358,
- 38359,
- 38360,
- 38361,
- 38362,
- 38363,
- 38364,
- 38365,
- 38366,
- 38367,
- 38368,
- 38369,
- 38370,
- 38371,
- 38372,
- 38373,
- 38374,
- 38375,
- 38376,
- 38377,
- 38378,
- 38379,
- 38380,
- 38381,
- 38382,
- 38383,
- 38384,
- 38385,
- 38386,
- 38387,
- 38388,
- 38389,
- 38390,
- 38391,
- 38392,
- 38393,
- 38394,
- 38395,
- 38396,
- 38397,
- 38398,
- 38399,
- 38400,
- 38401,
- 38402,
- 38403,
- 38404,
- 38405,
- 38406,
- 38407,
- 38408,
- 38409,
- 38410,
- 38411,
- 38412,
- 38413,
- 38414,
- 38415,
- 38416,
- 38417,
- 38418,
- 38419,
- 38420,
- 38421,
- 38422,
- 38423,
- 38424,
- 38425,
- 38426,
- 38427,
- 38428,
- 38429,
- 38430,
- 38431,
- 38432,
- 38433,
- 38434,
- 38435,
- 38436,
- 38437,
- 38438,
- 38439,
- 38440,
- 38441,
- 38442,
- 38443,
- 38444,
- 38445,
- 38446,
- 38447,
- 38448,
- 38449,
- 38450,
- 38451,
- 38452,
- 38453,
- 38454,
- 38455,
- 38456,
- 38457,
- 38458,
- 38459,
- 38460,
- 38461,
- 38462,
- 38463,
- 38464,
- 38465,
- 38466,
- 38467,
- 38468,
- 38469,
- 38470,
- 38471,
- 38472,
- 38473,
- 38474,
- 38475,
- 38476,
- 38477,
- 38478,
- 38479,
- 38480,
- 38481,
- 38482,
- 38483,
- 38484,
- 38485,
- 38486,
- 38487,
- 38488,
- 38489,
- 38490,
- 38491,
- 38492,
- 38493,
- 38494,
- 38495,
- 38496,
- 38497,
- 38498,
- 38499,
- 38500,
- 38501,
- 38502,
- 38503,
- 38504,
- 38505,
- 38506,
- 38507,
- 38508,
- 38509,
- 38510,
- 38511,
- 38512,
- 38513,
- 38514,
- 38515,
- 38516,
- 38517,
- 38518,
- 38519,
- 38520,
- 38521,
- 38522,
- 38523,
- 38524,
- 38525,
- 38526,
- 38527,
- 38528,
- 38529,
- 38530,
- 38531,
- 38532,
- 38533,
- 38534,
- 38535,
- 38536,
- 38537,
- 38538,
- 38539,
- 38540,
- 38541,
- 38542,
- 38543,
- 38544,
- 38545,
- 38546,
- 38547,
- 38548,
- 38549,
- 38550,
- 38551,
- 38552,
- 38553,
- 38554,
- 38555,
- 38556,
- 38557,
- 38558,
- 38559,
- 38560,
- 38561,
- 38562,
- 38563,
- 38564,
- 38565,
- 38566,
- 38567,
- 38568,
- 38569,
- 38570,
- 38571,
- 38572,
- 38573,
- 38574,
- 38575,
- 38576,
- 38577,
- 38578,
- 38579,
- 38580,
- 38581,
- 38582,
- 38583,
- 38584,
- 38585,
- 38586,
- 38587,
- 38588,
- 38589,
- 38590,
- 38591,
- 38592,
- 38593,
- 38594,
- 38595,
- 38596,
- 38597,
- 38598,
- 38599,
- 38600,
- 38601,
- 38602,
- 38603,
- 38604,
- 38605,
- 38606,
- 38607,
- 38608,
- 38609,
- 38610,
- 38611,
- 38612,
- 38613,
- 38614,
- 38615,
- 38616,
- 38617,
- 38618,
- 38619,
- 38620,
- 38621,
- 38622,
- 38623,
- 38624,
- 38625,
- 38626,
- 38627,
- 38628,
- 38629,
- 38630,
- 38631,
- 38632,
- 38633,
- 38634,
- 38635,
- 38636,
- 38637,
- 38638,
- 38639,
- 38640,
- 38641,
- 38642,
- 38643,
- 38644,
- 38645,
- 38646,
- 38647,
- 38648,
- 38649,
- 38650,
- 38651,
- 38652,
- 38653,
- 38654,
- 38655,
- 38656,
- 38657,
- 38658,
- 38659,
- 38660,
- 38661,
- 38662,
- 38663,
- 38664,
- 38665,
- 38666,
- 38667,
- 38668,
- 38669,
- 38670,
- 38671,
- 38672,
- 38673,
- 38674,
- 38675,
- 38676,
- 38677,
- 38678,
- 38679,
- 38680,
- 38681,
- 38682,
- 38683,
- 38684,
- 38685,
- 38686,
- 38687,
- 38688,
- 38689,
- 38690,
- 38691,
- 38692,
- 38693,
- 38694,
- 38695,
- 38696,
- 38697,
- 38698,
- 38699,
- 38700,
- 38701,
- 38702,
- 38703,
- 38704,
- 38705,
- 38706,
- 38707,
- 38708,
- 38709,
- 38710,
- 38711,
- 38712,
- 38713,
- 38714,
- 38715,
- 38716,
- 38717,
- 38718,
- 38719,
- 38720,
- 38721,
- 38722,
- 38723,
- 38724,
- 38725,
- 38726,
- 38727,
- 38728,
- 38729,
- 38730,
- 38731,
- 38732,
- 38733,
- 38734,
- 38735,
- 38736,
- 38737,
- 38738,
- 38739,
- 38740,
- 38741,
- 38742,
- 38743,
- 38744,
- 38745,
- 38746,
- 38747,
- 38748,
- 38749,
- 38750,
- 38751,
- 38752,
- 38753,
- 38754,
- 38755,
- 38756,
- 38757,
- 38758,
- 38759,
- 38760,
- 38761,
- 38762,
- 38763,
- 38764,
- 38765,
- 38766,
- 38767,
- 38768,
- 38769,
- 38770,
- 38771,
- 38772,
- 38773,
- 38774,
- 38775,
- 38776,
- 38777,
- 38778,
- 38779,
- 38780,
- 38781,
- 38782,
- 38783,
- 38784,
- 38785,
- 38786,
- 38787,
- 38788,
- 38789,
- 38790,
- 38791,
- 38792,
- 38793,
- 38794,
- 38795,
- 38796,
- 38797,
- 38798,
- 38799,
- 38800,
- 38801,
- 38802,
- 38803,
- 38804,
- 38805,
- 38806,
- 38807,
- 38808,
- 38809,
- 38810,
- 38811,
- 38812,
- 38813,
- 38814,
- 38815,
- 38816,
- 38817,
- 38818,
- 38819,
- 38820,
- 38821,
- 38822,
- 38823,
- 38824,
- 38825,
- 38826,
- 38827,
- 38828,
- 38829,
- 38830,
- 38831,
- 38832,
- 38833,
- 38834,
- 38835,
- 38836,
- 38837,
- 38838,
- 38839,
- 38840,
- 38841,
- 38842,
- 38843,
- 38844,
- 38845,
- 38846,
- 38847,
- 38848,
- 38849,
- 38850,
- 38851,
- 38852,
- 38853,
- 38854,
- 38855,
- 38856,
- 38857,
- 38858,
- 38859,
- 38860,
- 38861,
- 38862,
- 38863,
- 38864,
- 38865,
- 38866,
- 38867,
- 38868,
- 38869,
- 38870,
- 38871,
- 38872,
- 38873,
- 38874,
- 38875,
- 38876,
- 38877,
- 38878,
- 38879,
- 38880,
- 38881,
- 38882,
- 38883,
- 38884,
- 38885,
- 38886,
- 38887,
- 38888,
- 38889,
- 38890,
- 38891,
- 38892,
- 38893,
- 38894,
- 38895,
- 38896,
- 38897,
- 38898,
- 38899,
- 38900,
- 38901,
- 38902,
- 38903,
- 38904,
- 38905,
- 38906,
- 38907,
- 38908,
- 38909,
- 38910,
- 38911,
- 38912,
- 38913,
- 38914,
- 38915,
- 38916,
- 38917,
- 38918,
- 38919,
- 38920,
- 38921,
- 38922,
- 38923,
- 38924,
- 38925,
- 38926,
- 38927,
- 38928,
- 38929,
- 38930,
- 38931,
- 38932,
- 38933,
- 38934,
- 38935,
- 38936,
- 38937,
- 38938,
- 38939,
- 38940,
- 38941,
- 38942,
- 38943,
- 38944,
- 38945,
- 38946,
- 38947,
- 38948,
- 38949,
- 38950,
- 38951,
- 38952,
- 38953,
- 38954,
- 38955,
- 38956,
- 38957,
- 38958,
- 38959,
- 38960,
- 38961,
- 38962,
- 38963,
- 38964,
- 38965,
- 38966,
- 38967,
- 38968,
- 38969,
- 38970,
- 38971,
- 38972,
- 38973,
- 38974,
- 38975,
- 38976,
- 38977,
- 38978,
- 38979,
- 38980,
- 38981,
- 38982,
- 38983,
- 38984,
- 38985,
- 38986,
- 38987,
- 38988,
- 38989,
- 38990,
- 38991,
- 38992,
- 38993,
- 38994,
- 38995,
- 38996,
- 38997,
- 38998,
- 38999,
- 39000,
- 39001,
- 39002,
- 39003,
- 39004,
- 39005,
- 39006,
- 39007,
- 39008,
- 39009,
- 39010,
- 39011,
- 39012,
- 39013,
- 39014,
- 39015,
- 39016,
- 39017,
- 39018,
- 39019,
- 39020,
- 39021,
- 39022,
- 39023,
- 39024,
- 39025,
- 39026,
- 39027,
- 39028,
- 39029,
- 39030,
- 39031,
- 39032,
- 39033,
- 39034,
- 39035,
- 39036,
- 39037,
- 39038,
- 39039,
- 39040,
- 39041,
- 39042,
- 39043,
- 39044,
- 39045,
- 39046,
- 39047,
- 39048,
- 39049,
- 39050,
- 39051,
- 39052,
- 39053,
- 39054,
- 39055,
- 39056,
- 39057,
- 39058,
- 39059,
- 39060,
- 39061,
- 39062,
- 39063,
- 39064,
- 39065,
- 39066,
- 39067,
- 39068,
- 39069,
- 39070,
- 39071,
- 39072,
- 39073,
- 39074,
- 39075,
- 39076,
- 39077,
- 39078,
- 39079,
- 39080,
- 39081,
- 39082,
- 39083,
- 39084,
- 39085,
- 39086,
- 39087,
- 39088,
- 39089,
- 39090,
- 39091,
- 39092,
- 39093,
- 39094,
- 39095,
- 39096,
- 39097,
- 39098,
- 39099,
- 39100,
- 39101,
- 39102,
- 39103,
- 39104,
- 39105,
- 39106,
- 39107,
- 39108,
- 39109,
- 39110,
- 39111,
- 39112,
- 39113,
- 39114,
- 39115,
- 39116,
- 39117,
- 39118,
- 39119,
- 39120,
- 39121,
- 39122,
- 39123,
- 39124,
- 39125,
- 39126,
- 39127,
- 39128,
- 39129,
- 39130,
- 39131,
- 39132,
- 39133,
- 39134,
- 39135,
- 39136,
- 39137,
- 39138,
- 39139,
- 39140,
- 39141,
- 39142,
- 39143,
- 39144,
- 39145,
- 39146,
- 39147,
- 39148,
- 39149,
- 39150,
- 39151,
- 39152,
- 39153,
- 39154,
- 39155,
- 39156,
- 39157,
- 39158,
- 39159,
- 39160,
- 39161,
- 39162,
- 39163,
- 39164,
- 39165,
- 39166,
- 39167,
- 39168,
- 39169,
- 39170,
- 39171,
- 39172,
- 39173,
- 39174,
- 39175,
- 39176,
- 39177,
- 39178,
- 39179,
- 39180,
- 39181,
- 39182,
- 39183,
- 39184,
- 39185,
- 39186,
- 39187,
- 39188,
- 39189,
- 39190,
- 39191,
- 39192,
- 39193,
- 39194,
- 39195,
- 39196,
- 39197,
- 39198,
- 39199,
- 39200,
- 39201,
- 39202,
- 39203,
- 39204,
- 39205,
- 39206,
- 39207,
- 39208,
- 39209,
- 39210,
- 39211,
- 39212,
- 39213,
- 39214,
- 39215,
- 39216,
- 39217,
- 39218,
- 39219,
- 39220,
- 39221,
- 39222,
- 39223,
- 39224,
- 39225,
- 39226,
- 39227,
- 39228,
- 39229,
- 39230,
- 39231,
- 39232,
- 39233,
- 39234,
- 39235,
- 39236,
- 39237,
- 39238,
- 39239,
- 39240,
- 39241,
- 39242,
- 39243,
- 39244,
- 39245,
- 39246,
- 39247,
- 39248,
- 39249,
- 39250,
- 39251,
- 39252,
- 39253,
- 39254,
- 39255,
- 39256,
- 39257,
- 39258,
- 39259,
- 39260,
- 39261,
- 39262,
- 39263,
- 39264,
- 39265,
- 39266,
- 39267,
- 39268,
- 39269,
- 39270,
- 39271,
- 39272,
- 39273,
- 39274,
- 39275,
- 39276,
- 39277,
- 39278,
- 39279,
- 39280,
- 39281,
- 39282,
- 39283,
- 39284,
- 39285,
- 39286,
- 39287,
- 39288,
- 39289,
- 39290,
- 39291,
- 39292,
- 39293,
- 39294,
- 39295,
- 39296,
- 39297,
- 39298,
- 39299,
- 39300,
- 39301,
- 39302,
- 39303,
- 39304,
- 39305,
- 39306,
- 39307,
- 39308,
- 39309,
- 39310,
- 39311,
- 39312,
- 39313,
- 39314,
- 39315,
- 39316,
- 39317,
- 39318,
- 39319,
- 39320,
- 39321,
- 39322,
- 39323,
- 39324,
- 39325,
- 39326,
- 39327,
- 39328,
- 39329,
- 39330,
- 39331,
- 39332,
- 39333,
- 39334,
- 39335,
- 39336,
- 39337,
- 39338,
- 39339,
- 39340,
- 39341,
- 39342,
- 39343,
- 39344,
- 39345,
- 39346,
- 39347,
- 39348,
- 39349,
- 39350,
- 39351,
- 39352,
- 39353,
- 39354,
- 39355,
- 39356,
- 39357,
- 39358,
- 39359,
- 39360,
- 39361,
- 39362,
- 39363,
- 39364,
- 39365,
- 39366,
- 39367,
- 39368,
- 39369,
- 39370,
- 39371,
- 39372,
- 39373,
- 39374,
- 39375,
- 39376,
- 39377,
- 39378,
- 39379,
- 39380,
- 39381,
- 39382,
- 39383,
- 39384,
- 39385,
- 39386,
- 39387,
- 39388,
- 39389,
- 39390,
- 39391,
- 39392,
- 39393,
- 39394,
- 39395,
- 39396,
- 39397,
- 39398,
- 39399,
- 39400,
- 39401,
- 39402,
- 39403,
- 39404,
- 39405,
- 39406,
- 39407,
- 39408,
- 39409,
- 39410,
- 39411,
- 39412,
- 39413,
- 39414,
- 39415,
- 39416,
- 39417,
- 39418,
- 39419,
- 39420,
- 39421,
- 39422,
- 39423,
- 39424,
- 39425,
- 39426,
- 39427,
- 39428,
- 39429,
- 39430,
- 39431,
- 39432,
- 39433,
- 39434,
- 39435,
- 39436,
- 39437,
- 39438,
- 39439,
- 39440,
- 39441,
- 39442,
- 39443,
- 39444,
- 39445,
- 39446,
- 39447,
- 39448,
- 39449,
- 39450,
- 39451,
- 39452,
- 39453,
- 39454,
- 39455,
- 39456,
- 39457,
- 39458,
- 39459,
- 39460,
- 39461,
- 39462,
- 39463,
- 39464,
- 39465,
- 39466,
- 39467,
- 39468,
- 39469,
- 39470,
- 39471,
- 39472,
- 39473,
- 39474,
- 39475,
- 39476,
- 39477,
- 39478,
- 39479,
- 39480,
- 39481,
- 39482,
- 39483,
- 39484,
- 39485,
- 39486,
- 39487,
- 39488,
- 39489,
- 39490,
- 39491,
- 39492,
- 39493,
- 39494,
- 39495,
- 39496,
- 39497,
- 39498,
- 39499,
- 39500,
- 39501,
- 39502,
- 39503,
- 39504,
- 39505,
- 39506,
- 39507,
- 39508,
- 39509,
- 39510,
- 39511,
- 39512,
- 39513,
- 39514,
- 39515,
- 39516,
- 39517,
- 39518,
- 39519,
- 39520,
- 39521,
- 39522,
- 39523,
- 39524,
- 39525,
- 39526,
- 39527,
- 39528,
- 39529,
- 39530,
- 39531,
- 39532,
- 39533,
- 39534,
- 39535,
- 39536,
- 39537,
- 39538,
- 39539,
- 39540,
- 39541,
- 39542,
- 39543,
- 39544,
- 39545,
- 39546,
- 39547,
- 39548,
- 39549,
- 39550,
- 39551,
- 39552,
- 39553,
- 39554,
- 39555,
- 39556,
- 39557,
- 39558,
- 39559,
- 39560,
- 39561,
- 39562,
- 39563,
- 39564,
- 39565,
- 39566,
- 39567,
- 39568,
- 39569,
- 39570,
- 39571,
- 39572,
- 39573,
- 39574,
- 39575,
- 39576,
- 39577,
- 39578,
- 39579,
- 39580,
- 39581,
- 39582,
- 39583,
- 39584,
- 39585,
- 39586,
- 39587,
- 39588,
- 39589,
- 39590,
- 39591,
- 39592,
- 39593,
- 39594,
- 39595,
- 39596,
- 39597,
- 39598,
- 39599,
- 39600,
- 39601,
- 39602,
- 39603,
- 39604,
- 39605,
- 39606,
- 39607,
- 39608,
- 39609,
- 39610,
- 39611,
- 39612,
- 39613,
- 39614,
- 39615,
- 39616,
- 39617,
- 39618,
- 39619,
- 39620,
- 39621,
- 39622,
- 39623,
- 39624,
- 39625,
- 39626,
- 39627,
- 39628,
- 39629,
- 39630,
- 39631,
- 39632,
- 39633,
- 39634,
- 39635,
- 39636,
- 39637,
- 39638,
- 39639,
- 39640,
- 39641,
- 39642,
- 39643,
- 39644,
- 39645,
- 39646,
- 39647,
- 39648,
- 39649,
- 39650,
- 39651,
- 39652,
- 39653,
- 39654,
- 39655,
- 39656,
- 39657,
- 39658,
- 39659,
- 39660,
- 39661,
- 39662,
- 39663,
- 39664,
- 39665,
- 39666,
- 39667,
- 39668,
- 39669,
- 39670,
- 39671,
- 39672,
- 39673,
- 39674,
- 39675,
- 39676,
- 39677,
- 39678,
- 39679,
- 39680,
- 39681,
- 39682,
- 39683,
- 39684,
- 39685,
- 39686,
- 39687,
- 39688,
- 39689,
- 39690,
- 39691,
- 39692,
- 39693,
- 39694,
- 39695,
- 39696,
- 39697,
- 39698,
- 39699,
- 39700,
- 39701,
- 39702,
- 39703,
- 39704,
- 39705,
- 39706,
- 39707,
- 39708,
- 39709,
- 39710,
- 39711,
- 39712,
- 39713,
- 39714,
- 39715,
- 39716,
- 39717,
- 39718,
- 39719,
- 39720,
- 39721,
- 39722,
- 39723,
- 39724,
- 39725,
- 39726,
- 39727,
- 39728,
- 39729,
- 39730,
- 39731,
- 39732,
- 39733,
- 39734,
- 39735,
- 39736,
- 39737,
- 39738,
- 39739,
- 39740,
- 39741,
- 39742,
- 39743,
- 39744,
- 39745,
- 39746,
- 39747,
- 39748,
- 39749,
- 39750,
- 39751,
- 39752,
- 39753,
- 39754,
- 39755,
- 39756,
- 39757,
- 39758,
- 39759,
- 39760,
- 39761,
- 39762,
- 39763,
- 39764,
- 39765,
- 39766,
- 39767,
- 39768,
- 39769,
- 39770,
- 39771,
- 39772,
- 39773,
- 39774,
- 39775,
- 39776,
- 39777,
- 39778,
- 39779,
- 39780,
- 39781,
- 39782,
- 39783,
- 39784,
- 39785,
- 39786,
- 39787,
- 39788,
- 39789,
- 39790,
- 39791,
- 39792,
- 39793,
- 39794,
- 39795,
- 39796,
- 39797,
- 39798,
- 39799,
- 39800,
- 39801,
- 39802,
- 39803,
- 39804,
- 39805,
- 39806,
- 39807,
- 39808,
- 39809,
- 39810,
- 39811,
- 39812,
- 39813,
- 39814,
- 39815,
- 39816,
- 39817,
- 39818,
- 39819,
- 39820,
- 39821,
- 39822,
- 39823,
- 39824,
- 39825,
- 39826,
- 39827,
- 39828,
- 39829,
- 39830,
- 39831,
- 39832,
- 39833,
- 39834,
- 39835,
- 39836,
- 39837,
- 39838,
- 39839,
- 39840,
- 39841,
- 39842,
- 39843,
- 39844,
- 39845,
- 39846,
- 39847,
- 39848,
- 39849,
- 39850,
- 39851,
- 39852,
- 39853,
- 39854,
- 39855,
- 39856,
- 39857,
- 39858,
- 39859,
- 39860,
- 39861,
- 39862,
- 39863,
- 39864,
- 39865,
- 39866,
- 39867,
- 39868,
- 39869,
- 39870,
- 39871,
- 39872,
- 39873,
- 39874,
- 39875,
- 39876,
- 39877,
- 39878,
- 39879,
- 39880,
- 39881,
- 39882,
- 39883,
- 39884,
- 39885,
- 39886,
- 39887,
- 39888,
- 39889,
- 39890,
- 39891,
- 39892,
- 39893,
- 39894,
- 39895,
- 39896,
- 39897,
- 39898,
- 39899,
- 39900,
- 39901,
- 39902,
- 39903,
- 39904,
- 39905,
- 39906,
- 39907,
- 39908,
- 39909,
- 39910,
- 39911,
- 39912,
- 39913,
- 39914,
- 39915,
- 39916,
- 39917,
- 39918,
- 39919,
- 39920,
- 39921,
- 39922,
- 39923,
- 39924,
- 39925,
- 39926,
- 39927,
- 39928,
- 39929,
- 39930,
- 39931,
- 39932,
- 39933,
- 39934,
- 39935,
- 39936,
- 39937,
- 39938,
- 39939,
- 39940,
- 39941,
- 39942,
- 39943,
- 39944,
- 39945,
- 39946,
- 39947,
- 39948,
- 39949,
- 39950,
- 39951,
- 39952,
- 39953,
- 39954,
- 39955,
- 39956,
- 39957,
- 39958,
- 39959,
- 39960,
- 39961,
- 39962,
- 39963,
- 39964,
- 39965,
- 39966,
- 39967,
- 39968,
- 39969,
- 39970,
- 39971,
- 39972,
- 39973,
- 39974,
- 39975,
- 39976,
- 39977,
- 39978,
- 39979,
- 39980,
- 39981,
- 39982,
- 39983,
- 39984,
- 39985,
- 39986,
- 39987,
- 39988,
- 39989,
- 39990,
- 39991,
- 39992,
- 39993,
- 39994,
- 39995,
- 39996,
- 39997,
- 39998,
- 39999,
- 40000,
- 40001,
- 40002,
- 40003,
- 40004,
- 40005,
- 40006,
- 40007,
- 40008,
- 40009,
- 40010,
- 40011,
- 40012,
- 40013,
- 40014,
- 40015,
- 40016,
- 40017,
- 40018,
- 40019,
- 40020,
- 40021,
- 40022,
- 40023,
- 40024,
- 40025,
- 40026,
- 40027,
- 40028,
- 40029,
- 40030,
- 40031,
- 40032,
- 40033,
- 40034,
- 40035,
- 40036,
- 40037,
- 40038,
- 40039,
- 40040,
- 40041,
- 40042,
- 40043,
- 40044,
- 40045,
- 40046,
- 40047,
- 40048,
- 40049,
- 40050,
- 40051,
- 40052,
- 40053,
- 40054,
- 40055,
- 40056,
- 40057,
- 40058,
- 40059,
- 40060,
- 40061,
- 40062,
- 40063,
- 40064,
- 40065,
- 40066,
- 40067,
- 40068,
- 40069,
- 40070,
- 40071,
- 40072,
- 40073,
- 40074,
- 40075,
- 40076,
- 40077,
- 40078,
- 40079,
- 40080,
- 40081,
- 40082,
- 40083,
- 40084,
- 40085,
- 40086,
- 40087,
- 40088,
- 40089,
- 40090,
- 40091,
- 40092,
- 40093,
- 40094,
- 40095,
- 40096,
- 40097,
- 40098,
- 40099,
- 40100,
- 40101,
- 40102,
- 40103,
- 40104,
- 40105,
- 40106,
- 40107,
- 40108,
- 40109,
- 40110,
- 40111,
- 40112,
- 40113,
- 40114,
- 40115,
- 40116,
- 40117,
- 40118,
- 40119,
- 40120,
- 40121,
- 40122,
- 40123,
- 40124,
- 40125,
- 40126,
- 40127,
- 40128,
- 40129,
- 40130,
- 40131,
- 40132,
- 40133,
- 40134,
- 40135,
- 40136,
- 40137,
- 40138,
- 40139,
- 40140,
- 40141,
- 40142,
- 40143,
- 40144,
- 40145,
- 40146,
- 40147,
- 40148,
- 40149,
- 40150,
- 40151,
- 40152,
- 40153,
- 40154,
- 40155,
- 40156,
- 40157,
- 40158,
- 40159,
- 40160,
- 40161,
- 40162,
- 40163,
- 40164,
- 40165,
- 40166,
- 40167,
- 40168,
- 40169,
- 40170,
- 40171,
- 40172,
- 40173,
- 40174,
- 40175,
- 40176,
- 40177,
- 40178,
- 40179,
- 40180,
- 40181,
- 40182,
- 40183,
- 40184,
- 40185,
- 40186,
- 40187,
- 40188,
- 40189,
- 40190,
- 40191,
- 40192,
- 40193,
- 40194,
- 40195,
- 40196,
- 40197,
- 40198,
- 40199,
- 40200,
- 40201,
- 40202,
- 40203,
- 40204,
- 40205,
- 40206,
- 40207,
- 40208,
- 40209,
- 40210,
- 40211,
- 40212,
- 40213,
- 40214,
- 40215,
- 40216,
- 40217,
- 40218,
- 40219,
- 40220,
- 40221,
- 40222,
- 40223,
- 40224,
- 40225,
- 40226,
- 40227,
- 40228,
- 40229,
- 40230,
- 40231,
- 40232,
- 40233,
- 40234,
- 40235,
- 40236,
- 40237,
- 40238,
- 40239,
- 40240,
- 40241,
- 40242,
- 40243,
- 40244,
- 40245,
- 40246,
- 40247,
- 40248,
- 40249,
- 40250,
- 40251,
- 40252,
- 40253,
- 40254,
- 40255,
- 40256,
- 40257,
- 40258,
- 40259,
- 40260,
- 40261,
- 40262,
- 40263,
- 40264,
- 40265,
- 40266,
- 40267,
- 40268,
- 40269,
- 40270,
- 40271,
- 40272,
- 40273,
- 40274,
- 40275,
- 40276,
- 40277,
- 40278,
- 40279,
- 40280,
- 40281,
- 40282,
- 40283,
- 40284,
- 40285,
- 40286,
- 40287,
- 40288,
- 40289,
- 40290,
- 40291,
- 40292,
- 40293,
- 40294,
- 40295,
- 40296,
- 40297,
- 40298,
- 40299,
- 40300,
- 40301,
- 40302,
- 40303,
- 40304,
- 40305,
- 40306,
- 40307,
- 40308,
- 40309,
- 40310,
- 40311,
- 40312,
- 40313,
- 40314,
- 40315,
- 40316,
- 40317,
- 40318,
- 40319,
- 40320,
- 40321,
- 40322,
- 40323,
- 40324,
- 40325,
- 40326,
- 40327,
- 40328,
- 40329,
- 40330,
- 40331,
- 40332,
- 40333,
- 40334,
- 40335,
- 40336,
- 40337,
- 40338,
- 40339,
- 40340,
- 40341,
- 40342,
- 40343,
- 40344,
- 40345,
- 40346,
- 40347,
- 40348,
- 40349,
- 40350,
- 40351,
- 40352,
- 40353,
- 40354,
- 40355,
- 40356,
- 40357,
- 40358,
- 40359,
- 40360,
- 40361,
- 40362,
- 40363,
- 40364,
- 40365,
- 40366,
- 40367,
- 40368,
- 40369,
- 40370,
- 40371,
- 40372,
- 40373,
- 40374,
- 40375,
- 40376,
- 40377,
- 40378,
- 40379,
- 40380,
- 40381,
- 40382,
- 40383,
- 40384,
- 40385,
- 40386,
- 40387,
- 40388,
- 40389,
- 40390,
- 40391,
- 40392,
- 40393,
- 40394,
- 40395,
- 40396,
- 40397,
- 40398,
- 40399,
- 40400,
- 40401,
- 40402,
- 40403,
- 40404,
- 40405,
- 40406,
- 40407,
- 40408,
- 40409,
- 40410,
- 40411,
- 40412,
- 40413,
- 40414,
- 40415,
- 40416,
- 40417,
- 40418,
- 40419,
- 40420,
- 40421,
- 40422,
- 40423,
- 40424,
- 40425,
- 40426,
- 40427,
- 40428,
- 40429,
- 40430,
- 40431,
- 40432,
- 40433,
- 40434,
- 40435,
- 40436,
- 40437,
- 40438,
- 40439,
- 40440,
- 40441,
- 40442,
- 40443,
- 40444,
- 40445,
- 40446,
- 40447,
- 40448,
- 40449,
- 40450,
- 40451,
- 40452,
- 40453,
- 40454,
- 40455,
- 40456,
- 40457,
- 40458,
- 40459,
- 40460,
- 40461,
- 40462,
- 40463,
- 40464,
- 40465,
- 40466,
- 40467,
- 40468,
- 40469,
- 40470,
- 40471,
- 40472,
- 40473,
- 40474,
- 40475,
- 40476,
- 40477,
- 40478,
- 40479,
- 40480,
- 40481,
- 40482,
- 40483,
- 40484,
- 40485,
- 40486,
- 40487,
- 40488,
- 40489,
- 40490,
- 40491,
- 40492,
- 40493,
- 40494,
- 40495,
- 40496,
- 40497,
- 40498,
- 40499,
- 40500,
- 40501,
- 40502,
- 40503,
- 40504,
- 40505,
- 40506,
- 40507,
- 40508,
- 40509,
- 40510,
- 40511,
- 40512,
- 40513,
- 40514,
- 40515,
- 40516,
- 40517,
- 40518,
- 40519,
- 40520,
- 40521,
- 40522,
- 40523,
- 40524,
- 40525,
- 40526,
- 40527,
- 40528,
- 40529,
- 40530,
- 40531,
- 40532,
- 40533,
- 40534,
- 40535,
- 40536,
- 40537,
- 40538,
- 40539,
- 40540,
- 40541,
- 40542,
- 40543,
- 40544,
- 40545,
- 40546,
- 40547,
- 40548,
- 40549,
- 40550,
- 40551,
- 40552,
- 40553,
- 40554,
- 40555,
- 40556,
- 40557,
- 40558,
- 40559,
- 40560,
- 40561,
- 40562,
- 40563,
- 40564,
- 40565,
- 40566,
- 40567,
- 40568,
- 40569,
- 40570,
- 40571,
- 40572,
- 40573,
- 40574,
- 40575,
- 40576,
- 40577,
- 40578,
- 40579,
- 40580,
- 40581,
- 40582,
- 40583,
- 40584,
- 40585,
- 40586,
- 40587,
- 40588,
- 40589,
- 40590,
- 40591,
- 40592,
- 40593,
- 40594,
- 40595,
- 40596,
- 40597,
- 40598,
- 40599,
- 40600,
- 40601,
- 40602,
- 40603,
- 40604,
- 40605,
- 40606,
- 40607,
- 40608,
- 40609,
- 40610,
- 40611,
- 40612,
- 40613,
- 40614,
- 40615,
- 40616,
- 40617,
- 40618,
- 40619,
- 40620,
- 40621,
- 40622,
- 40623,
- 40624,
- 40625,
- 40626,
- 40627,
- 40628,
- 40629,
- 40630,
- 40631,
- 40632,
- 40633,
- 40634,
- 40635,
- 40636,
- 40637,
- 40638,
- 40639,
- 40640,
- 40641,
- 40642,
- 40643,
- 40644,
- 40645,
- 40646,
- 40647,
- 40648,
- 40649,
- 40650,
- 40651,
- 40652,
- 40653,
- 40654,
- 40655,
- 40656,
- 40657,
- 40658,
- 40659,
- 40660,
- 40661,
- 40662,
- 40663,
- 40664,
- 40665,
- 40666,
- 40667,
- 40668,
- 40669,
- 40670,
- 40671,
- 40672,
- 40673,
- 40674,
- 40675,
- 40676,
- 40677,
- 40678,
- 40679,
- 40680,
- 40681,
- 40682,
- 40683,
- 40684,
- 40685,
- 40686,
- 40687,
- 40688,
- 40689,
- 40690,
- 40691,
- 40692,
- 40693,
- 40694,
- 40695,
- 40696,
- 40697,
- 40698,
- 40699,
- 40700,
- 40701,
- 40702,
- 40703,
- 40704,
- 40705,
- 40706,
- 40707,
- 40708,
- 40709,
- 40710,
- 40711,
- 40712,
- 40713,
- 40714,
- 40715,
- 40716,
- 40717,
- 40718,
- 40719,
- 40720,
- 40721,
- 40722,
- 40723,
- 40724,
- 40725,
- 40726,
- 40727,
- 40728,
- 40729,
- 40730,
- 40731,
- 40732,
- 40733,
- 40734,
- 40735,
- 40736,
- 40737,
- 40738,
- 40739,
- 40740,
- 40741,
- 40742,
- 40743,
- 40744,
- 40745,
- 40746,
- 40747,
- 40748,
- 40749,
- 40750,
- 40751,
- 40752,
- 40753,
- 40754,
- 40755,
- 40756,
- 40757,
- 40758,
- 40759,
- 40760,
- 40761,
- 40762,
- 40763,
- 40764,
- 40765,
- 40766,
- 40767,
- 40768,
- 40769,
- 40770,
- 40771,
- 40772,
- 40773,
- 40774,
- 40775,
- 40776,
- 40777,
- 40778,
- 40779,
- 40780,
- 40781,
- 40782,
- 40783,
- 40784,
- 40785,
- 40786,
- 40787,
- 40788,
- 40789,
- 40790,
- 40791,
- 40792,
- 40793,
- 40794,
- 40795,
- 40796,
- 40797,
- 40798,
- 40799,
- 40800,
- 40801,
- 40802,
- 40803,
- 40804,
- 40805,
- 40806,
- 40807,
- 40808,
- 40809,
- 40810,
- 40811,
- 40812,
- 40813,
- 40814,
- 40815,
- 40816,
- 40817,
- 40818,
- 40819,
- 40820,
- 40821,
- 40822,
- 40823,
- 40824,
- 40825,
- 40826,
- 40827,
- 40828,
- 40829,
- 40830,
- 40831,
- 40832,
- 40833,
- 40834,
- 40835,
- 40836,
- 40837,
- 40838,
- 40839,
- 40840,
- 40841,
- 40842,
- 40843,
- 40844,
- 40845,
- 40846,
- 40847,
- 40848,
- 40849,
- 40850,
- 40851,
- 40852,
- 40853,
- 40854,
- 40855,
- 40856,
- 40857,
- 40858,
- 40859,
- 40860,
- 40861,
- 40862,
- 40863,
- 40864,
- 40865,
- 40866,
- 40867,
- 40868,
- 40869,
- 40870,
- 40871,
- 40872,
- 40873,
- 40874,
- 40875,
- 40876,
- 40877,
- 40878,
- 40879,
- 40880,
- 40881,
- 40882,
- 40883,
- 40884,
- 40885,
- 40886,
- 40887,
- 40888,
- 40889,
- 40890,
- 40891,
- 40892,
- 40893,
- 40894,
- 40895,
- 40896,
- 40897,
- 40898,
- 40899,
- 40900,
- 40901,
- 40902,
- 40903,
- 40904,
- 40905,
- 40906,
- 40907,
- 40908,
- 40960,
- 40961,
- 40962,
- 40963,
- 40964,
- 40965,
- 40966,
- 40967,
- 40968,
- 40969,
- 40970,
- 40971,
- 40972,
- 40973,
- 40974,
- 40975,
- 40976,
- 40977,
- 40978,
- 40979,
- 40980,
- 40981,
- 40982,
- 40983,
- 40984,
- 40985,
- 40986,
- 40987,
- 40988,
- 40989,
- 40990,
- 40991,
- 40992,
- 40993,
- 40994,
- 40995,
- 40996,
- 40997,
- 40998,
- 40999,
- 41000,
- 41001,
- 41002,
- 41003,
- 41004,
- 41005,
- 41006,
- 41007,
- 41008,
- 41009,
- 41010,
- 41011,
- 41012,
- 41013,
- 41014,
- 41015,
- 41016,
- 41017,
- 41018,
- 41019,
- 41020,
- 41021,
- 41022,
- 41023,
- 41024,
- 41025,
- 41026,
- 41027,
- 41028,
- 41029,
- 41030,
- 41031,
- 41032,
- 41033,
- 41034,
- 41035,
- 41036,
- 41037,
- 41038,
- 41039,
- 41040,
- 41041,
- 41042,
- 41043,
- 41044,
- 41045,
- 41046,
- 41047,
- 41048,
- 41049,
- 41050,
- 41051,
- 41052,
- 41053,
- 41054,
- 41055,
- 41056,
- 41057,
- 41058,
- 41059,
- 41060,
- 41061,
- 41062,
- 41063,
- 41064,
- 41065,
- 41066,
- 41067,
- 41068,
- 41069,
- 41070,
- 41071,
- 41072,
- 41073,
- 41074,
- 41075,
- 41076,
- 41077,
- 41078,
- 41079,
- 41080,
- 41081,
- 41082,
- 41083,
- 41084,
- 41085,
- 41086,
- 41087,
- 41088,
- 41089,
- 41090,
- 41091,
- 41092,
- 41093,
- 41094,
- 41095,
- 41096,
- 41097,
- 41098,
- 41099,
- 41100,
- 41101,
- 41102,
- 41103,
- 41104,
- 41105,
- 41106,
- 41107,
- 41108,
- 41109,
- 41110,
- 41111,
- 41112,
- 41113,
- 41114,
- 41115,
- 41116,
- 41117,
- 41118,
- 41119,
- 41120,
- 41121,
- 41122,
- 41123,
- 41124,
- 41125,
- 41126,
- 41127,
- 41128,
- 41129,
- 41130,
- 41131,
- 41132,
- 41133,
- 41134,
- 41135,
- 41136,
- 41137,
- 41138,
- 41139,
- 41140,
- 41141,
- 41142,
- 41143,
- 41144,
- 41145,
- 41146,
- 41147,
- 41148,
- 41149,
- 41150,
- 41151,
- 41152,
- 41153,
- 41154,
- 41155,
- 41156,
- 41157,
- 41158,
- 41159,
- 41160,
- 41161,
- 41162,
- 41163,
- 41164,
- 41165,
- 41166,
- 41167,
- 41168,
- 41169,
- 41170,
- 41171,
- 41172,
- 41173,
- 41174,
- 41175,
- 41176,
- 41177,
- 41178,
- 41179,
- 41180,
- 41181,
- 41182,
- 41183,
- 41184,
- 41185,
- 41186,
- 41187,
- 41188,
- 41189,
- 41190,
- 41191,
- 41192,
- 41193,
- 41194,
- 41195,
- 41196,
- 41197,
- 41198,
- 41199,
- 41200,
- 41201,
- 41202,
- 41203,
- 41204,
- 41205,
- 41206,
- 41207,
- 41208,
- 41209,
- 41210,
- 41211,
- 41212,
- 41213,
- 41214,
- 41215,
- 41216,
- 41217,
- 41218,
- 41219,
- 41220,
- 41221,
- 41222,
- 41223,
- 41224,
- 41225,
- 41226,
- 41227,
- 41228,
- 41229,
- 41230,
- 41231,
- 41232,
- 41233,
- 41234,
- 41235,
- 41236,
- 41237,
- 41238,
- 41239,
- 41240,
- 41241,
- 41242,
- 41243,
- 41244,
- 41245,
- 41246,
- 41247,
- 41248,
- 41249,
- 41250,
- 41251,
- 41252,
- 41253,
- 41254,
- 41255,
- 41256,
- 41257,
- 41258,
- 41259,
- 41260,
- 41261,
- 41262,
- 41263,
- 41264,
- 41265,
- 41266,
- 41267,
- 41268,
- 41269,
- 41270,
- 41271,
- 41272,
- 41273,
- 41274,
- 41275,
- 41276,
- 41277,
- 41278,
- 41279,
- 41280,
- 41281,
- 41282,
- 41283,
- 41284,
- 41285,
- 41286,
- 41287,
- 41288,
- 41289,
- 41290,
- 41291,
- 41292,
- 41293,
- 41294,
- 41295,
- 41296,
- 41297,
- 41298,
- 41299,
- 41300,
- 41301,
- 41302,
- 41303,
- 41304,
- 41305,
- 41306,
- 41307,
- 41308,
- 41309,
- 41310,
- 41311,
- 41312,
- 41313,
- 41314,
- 41315,
- 41316,
- 41317,
- 41318,
- 41319,
- 41320,
- 41321,
- 41322,
- 41323,
- 41324,
- 41325,
- 41326,
- 41327,
- 41328,
- 41329,
- 41330,
- 41331,
- 41332,
- 41333,
- 41334,
- 41335,
- 41336,
- 41337,
- 41338,
- 41339,
- 41340,
- 41341,
- 41342,
- 41343,
- 41344,
- 41345,
- 41346,
- 41347,
- 41348,
- 41349,
- 41350,
- 41351,
- 41352,
- 41353,
- 41354,
- 41355,
- 41356,
- 41357,
- 41358,
- 41359,
- 41360,
- 41361,
- 41362,
- 41363,
- 41364,
- 41365,
- 41366,
- 41367,
- 41368,
- 41369,
- 41370,
- 41371,
- 41372,
- 41373,
- 41374,
- 41375,
- 41376,
- 41377,
- 41378,
- 41379,
- 41380,
- 41381,
- 41382,
- 41383,
- 41384,
- 41385,
- 41386,
- 41387,
- 41388,
- 41389,
- 41390,
- 41391,
- 41392,
- 41393,
- 41394,
- 41395,
- 41396,
- 41397,
- 41398,
- 41399,
- 41400,
- 41401,
- 41402,
- 41403,
- 41404,
- 41405,
- 41406,
- 41407,
- 41408,
- 41409,
- 41410,
- 41411,
- 41412,
- 41413,
- 41414,
- 41415,
- 41416,
- 41417,
- 41418,
- 41419,
- 41420,
- 41421,
- 41422,
- 41423,
- 41424,
- 41425,
- 41426,
- 41427,
- 41428,
- 41429,
- 41430,
- 41431,
- 41432,
- 41433,
- 41434,
- 41435,
- 41436,
- 41437,
- 41438,
- 41439,
- 41440,
- 41441,
- 41442,
- 41443,
- 41444,
- 41445,
- 41446,
- 41447,
- 41448,
- 41449,
- 41450,
- 41451,
- 41452,
- 41453,
- 41454,
- 41455,
- 41456,
- 41457,
- 41458,
- 41459,
- 41460,
- 41461,
- 41462,
- 41463,
- 41464,
- 41465,
- 41466,
- 41467,
- 41468,
- 41469,
- 41470,
- 41471,
- 41472,
- 41473,
- 41474,
- 41475,
- 41476,
- 41477,
- 41478,
- 41479,
- 41480,
- 41481,
- 41482,
- 41483,
- 41484,
- 41485,
- 41486,
- 41487,
- 41488,
- 41489,
- 41490,
- 41491,
- 41492,
- 41493,
- 41494,
- 41495,
- 41496,
- 41497,
- 41498,
- 41499,
- 41500,
- 41501,
- 41502,
- 41503,
- 41504,
- 41505,
- 41506,
- 41507,
- 41508,
- 41509,
- 41510,
- 41511,
- 41512,
- 41513,
- 41514,
- 41515,
- 41516,
- 41517,
- 41518,
- 41519,
- 41520,
- 41521,
- 41522,
- 41523,
- 41524,
- 41525,
- 41526,
- 41527,
- 41528,
- 41529,
- 41530,
- 41531,
- 41532,
- 41533,
- 41534,
- 41535,
- 41536,
- 41537,
- 41538,
- 41539,
- 41540,
- 41541,
- 41542,
- 41543,
- 41544,
- 41545,
- 41546,
- 41547,
- 41548,
- 41549,
- 41550,
- 41551,
- 41552,
- 41553,
- 41554,
- 41555,
- 41556,
- 41557,
- 41558,
- 41559,
- 41560,
- 41561,
- 41562,
- 41563,
- 41564,
- 41565,
- 41566,
- 41567,
- 41568,
- 41569,
- 41570,
- 41571,
- 41572,
- 41573,
- 41574,
- 41575,
- 41576,
- 41577,
- 41578,
- 41579,
- 41580,
- 41581,
- 41582,
- 41583,
- 41584,
- 41585,
- 41586,
- 41587,
- 41588,
- 41589,
- 41590,
- 41591,
- 41592,
- 41593,
- 41594,
- 41595,
- 41596,
- 41597,
- 41598,
- 41599,
- 41600,
- 41601,
- 41602,
- 41603,
- 41604,
- 41605,
- 41606,
- 41607,
- 41608,
- 41609,
- 41610,
- 41611,
- 41612,
- 41613,
- 41614,
- 41615,
- 41616,
- 41617,
- 41618,
- 41619,
- 41620,
- 41621,
- 41622,
- 41623,
- 41624,
- 41625,
- 41626,
- 41627,
- 41628,
- 41629,
- 41630,
- 41631,
- 41632,
- 41633,
- 41634,
- 41635,
- 41636,
- 41637,
- 41638,
- 41639,
- 41640,
- 41641,
- 41642,
- 41643,
- 41644,
- 41645,
- 41646,
- 41647,
- 41648,
- 41649,
- 41650,
- 41651,
- 41652,
- 41653,
- 41654,
- 41655,
- 41656,
- 41657,
- 41658,
- 41659,
- 41660,
- 41661,
- 41662,
- 41663,
- 41664,
- 41665,
- 41666,
- 41667,
- 41668,
- 41669,
- 41670,
- 41671,
- 41672,
- 41673,
- 41674,
- 41675,
- 41676,
- 41677,
- 41678,
- 41679,
- 41680,
- 41681,
- 41682,
- 41683,
- 41684,
- 41685,
- 41686,
- 41687,
- 41688,
- 41689,
- 41690,
- 41691,
- 41692,
- 41693,
- 41694,
- 41695,
- 41696,
- 41697,
- 41698,
- 41699,
- 41700,
- 41701,
- 41702,
- 41703,
- 41704,
- 41705,
- 41706,
- 41707,
- 41708,
- 41709,
- 41710,
- 41711,
- 41712,
- 41713,
- 41714,
- 41715,
- 41716,
- 41717,
- 41718,
- 41719,
- 41720,
- 41721,
- 41722,
- 41723,
- 41724,
- 41725,
- 41726,
- 41727,
- 41728,
- 41729,
- 41730,
- 41731,
- 41732,
- 41733,
- 41734,
- 41735,
- 41736,
- 41737,
- 41738,
- 41739,
- 41740,
- 41741,
- 41742,
- 41743,
- 41744,
- 41745,
- 41746,
- 41747,
- 41748,
- 41749,
- 41750,
- 41751,
- 41752,
- 41753,
- 41754,
- 41755,
- 41756,
- 41757,
- 41758,
- 41759,
- 41760,
- 41761,
- 41762,
- 41763,
- 41764,
- 41765,
- 41766,
- 41767,
- 41768,
- 41769,
- 41770,
- 41771,
- 41772,
- 41773,
- 41774,
- 41775,
- 41776,
- 41777,
- 41778,
- 41779,
- 41780,
- 41781,
- 41782,
- 41783,
- 41784,
- 41785,
- 41786,
- 41787,
- 41788,
- 41789,
- 41790,
- 41791,
- 41792,
- 41793,
- 41794,
- 41795,
- 41796,
- 41797,
- 41798,
- 41799,
- 41800,
- 41801,
- 41802,
- 41803,
- 41804,
- 41805,
- 41806,
- 41807,
- 41808,
- 41809,
- 41810,
- 41811,
- 41812,
- 41813,
- 41814,
- 41815,
- 41816,
- 41817,
- 41818,
- 41819,
- 41820,
- 41821,
- 41822,
- 41823,
- 41824,
- 41825,
- 41826,
- 41827,
- 41828,
- 41829,
- 41830,
- 41831,
- 41832,
- 41833,
- 41834,
- 41835,
- 41836,
- 41837,
- 41838,
- 41839,
- 41840,
- 41841,
- 41842,
- 41843,
- 41844,
- 41845,
- 41846,
- 41847,
- 41848,
- 41849,
- 41850,
- 41851,
- 41852,
- 41853,
- 41854,
- 41855,
- 41856,
- 41857,
- 41858,
- 41859,
- 41860,
- 41861,
- 41862,
- 41863,
- 41864,
- 41865,
- 41866,
- 41867,
- 41868,
- 41869,
- 41870,
- 41871,
- 41872,
- 41873,
- 41874,
- 41875,
- 41876,
- 41877,
- 41878,
- 41879,
- 41880,
- 41881,
- 41882,
- 41883,
- 41884,
- 41885,
- 41886,
- 41887,
- 41888,
- 41889,
- 41890,
- 41891,
- 41892,
- 41893,
- 41894,
- 41895,
- 41896,
- 41897,
- 41898,
- 41899,
- 41900,
- 41901,
- 41902,
- 41903,
- 41904,
- 41905,
- 41906,
- 41907,
- 41908,
- 41909,
- 41910,
- 41911,
- 41912,
- 41913,
- 41914,
- 41915,
- 41916,
- 41917,
- 41918,
- 41919,
- 41920,
- 41921,
- 41922,
- 41923,
- 41924,
- 41925,
- 41926,
- 41927,
- 41928,
- 41929,
- 41930,
- 41931,
- 41932,
- 41933,
- 41934,
- 41935,
- 41936,
- 41937,
- 41938,
- 41939,
- 41940,
- 41941,
- 41942,
- 41943,
- 41944,
- 41945,
- 41946,
- 41947,
- 41948,
- 41949,
- 41950,
- 41951,
- 41952,
- 41953,
- 41954,
- 41955,
- 41956,
- 41957,
- 41958,
- 41959,
- 41960,
- 41961,
- 41962,
- 41963,
- 41964,
- 41965,
- 41966,
- 41967,
- 41968,
- 41969,
- 41970,
- 41971,
- 41972,
- 41973,
- 41974,
- 41975,
- 41976,
- 41977,
- 41978,
- 41979,
- 41980,
- 41981,
- 41982,
- 41983,
- 41984,
- 41985,
- 41986,
- 41987,
- 41988,
- 41989,
- 41990,
- 41991,
- 41992,
- 41993,
- 41994,
- 41995,
- 41996,
- 41997,
- 41998,
- 41999,
- 42000,
- 42001,
- 42002,
- 42003,
- 42004,
- 42005,
- 42006,
- 42007,
- 42008,
- 42009,
- 42010,
- 42011,
- 42012,
- 42013,
- 42014,
- 42015,
- 42016,
- 42017,
- 42018,
- 42019,
- 42020,
- 42021,
- 42022,
- 42023,
- 42024,
- 42025,
- 42026,
- 42027,
- 42028,
- 42029,
- 42030,
- 42031,
- 42032,
- 42033,
- 42034,
- 42035,
- 42036,
- 42037,
- 42038,
- 42039,
- 42040,
- 42041,
- 42042,
- 42043,
- 42044,
- 42045,
- 42046,
- 42047,
- 42048,
- 42049,
- 42050,
- 42051,
- 42052,
- 42053,
- 42054,
- 42055,
- 42056,
- 42057,
- 42058,
- 42059,
- 42060,
- 42061,
- 42062,
- 42063,
- 42064,
- 42065,
- 42066,
- 42067,
- 42068,
- 42069,
- 42070,
- 42071,
- 42072,
- 42073,
- 42074,
- 42075,
- 42076,
- 42077,
- 42078,
- 42079,
- 42080,
- 42081,
- 42082,
- 42083,
- 42084,
- 42085,
- 42086,
- 42087,
- 42088,
- 42089,
- 42090,
- 42091,
- 42092,
- 42093,
- 42094,
- 42095,
- 42096,
- 42097,
- 42098,
- 42099,
- 42100,
- 42101,
- 42102,
- 42103,
- 42104,
- 42105,
- 42106,
- 42107,
- 42108,
- 42109,
- 42110,
- 42111,
- 42112,
- 42113,
- 42114,
- 42115,
- 42116,
- 42117,
- 42118,
- 42119,
- 42120,
- 42121,
- 42122,
- 42123,
- 42124,
- 42192,
- 42193,
- 42194,
- 42195,
- 42196,
- 42197,
- 42198,
- 42199,
- 42200,
- 42201,
- 42202,
- 42203,
- 42204,
- 42205,
- 42206,
- 42207,
- 42208,
- 42209,
- 42210,
- 42211,
- 42212,
- 42213,
- 42214,
- 42215,
- 42216,
- 42217,
- 42218,
- 42219,
- 42220,
- 42221,
- 42222,
- 42223,
- 42224,
- 42225,
- 42226,
- 42227,
- 42228,
- 42229,
- 42230,
- 42231,
- 42232,
- 42233,
- 42234,
- 42235,
- 42236,
- 42237,
- 42240,
- 42241,
- 42242,
- 42243,
- 42244,
- 42245,
- 42246,
- 42247,
- 42248,
- 42249,
- 42250,
- 42251,
- 42252,
- 42253,
- 42254,
- 42255,
- 42256,
- 42257,
- 42258,
- 42259,
- 42260,
- 42261,
- 42262,
- 42263,
- 42264,
- 42265,
- 42266,
- 42267,
- 42268,
- 42269,
- 42270,
- 42271,
- 42272,
- 42273,
- 42274,
- 42275,
- 42276,
- 42277,
- 42278,
- 42279,
- 42280,
- 42281,
- 42282,
- 42283,
- 42284,
- 42285,
- 42286,
- 42287,
- 42288,
- 42289,
- 42290,
- 42291,
- 42292,
- 42293,
- 42294,
- 42295,
- 42296,
- 42297,
- 42298,
- 42299,
- 42300,
- 42301,
- 42302,
- 42303,
- 42304,
- 42305,
- 42306,
- 42307,
- 42308,
- 42309,
- 42310,
- 42311,
- 42312,
- 42313,
- 42314,
- 42315,
- 42316,
- 42317,
- 42318,
- 42319,
- 42320,
- 42321,
- 42322,
- 42323,
- 42324,
- 42325,
- 42326,
- 42327,
- 42328,
- 42329,
- 42330,
- 42331,
- 42332,
- 42333,
- 42334,
- 42335,
- 42336,
- 42337,
- 42338,
- 42339,
- 42340,
- 42341,
- 42342,
- 42343,
- 42344,
- 42345,
- 42346,
- 42347,
- 42348,
- 42349,
- 42350,
- 42351,
- 42352,
- 42353,
- 42354,
- 42355,
- 42356,
- 42357,
- 42358,
- 42359,
- 42360,
- 42361,
- 42362,
- 42363,
- 42364,
- 42365,
- 42366,
- 42367,
- 42368,
- 42369,
- 42370,
- 42371,
- 42372,
- 42373,
- 42374,
- 42375,
- 42376,
- 42377,
- 42378,
- 42379,
- 42380,
- 42381,
- 42382,
- 42383,
- 42384,
- 42385,
- 42386,
- 42387,
- 42388,
- 42389,
- 42390,
- 42391,
- 42392,
- 42393,
- 42394,
- 42395,
- 42396,
- 42397,
- 42398,
- 42399,
- 42400,
- 42401,
- 42402,
- 42403,
- 42404,
- 42405,
- 42406,
- 42407,
- 42408,
- 42409,
- 42410,
- 42411,
- 42412,
- 42413,
- 42414,
- 42415,
- 42416,
- 42417,
- 42418,
- 42419,
- 42420,
- 42421,
- 42422,
- 42423,
- 42424,
- 42425,
- 42426,
- 42427,
- 42428,
- 42429,
- 42430,
- 42431,
- 42432,
- 42433,
- 42434,
- 42435,
- 42436,
- 42437,
- 42438,
- 42439,
- 42440,
- 42441,
- 42442,
- 42443,
- 42444,
- 42445,
- 42446,
- 42447,
- 42448,
- 42449,
- 42450,
- 42451,
- 42452,
- 42453,
- 42454,
- 42455,
- 42456,
- 42457,
- 42458,
- 42459,
- 42460,
- 42461,
- 42462,
- 42463,
- 42464,
- 42465,
- 42466,
- 42467,
- 42468,
- 42469,
- 42470,
- 42471,
- 42472,
- 42473,
- 42474,
- 42475,
- 42476,
- 42477,
- 42478,
- 42479,
- 42480,
- 42481,
- 42482,
- 42483,
- 42484,
- 42485,
- 42486,
- 42487,
- 42488,
- 42489,
- 42490,
- 42491,
- 42492,
- 42493,
- 42494,
- 42495,
- 42496,
- 42497,
- 42498,
- 42499,
- 42500,
- 42501,
- 42502,
- 42503,
- 42504,
- 42505,
- 42506,
- 42507,
- 42508,
- 42512,
- 42513,
- 42514,
- 42515,
- 42516,
- 42517,
- 42518,
- 42519,
- 42520,
- 42521,
- 42522,
- 42523,
- 42524,
- 42525,
- 42526,
- 42527,
- 42538,
- 42539,
- 42560,
- 42561,
- 42562,
- 42563,
- 42564,
- 42565,
- 42566,
- 42567,
- 42568,
- 42569,
- 42570,
- 42571,
- 42572,
- 42573,
- 42574,
- 42575,
- 42576,
- 42577,
- 42578,
- 42579,
- 42580,
- 42581,
- 42582,
- 42583,
- 42584,
- 42585,
- 42586,
- 42587,
- 42588,
- 42589,
- 42590,
- 42591,
- 42592,
- 42593,
- 42594,
- 42595,
- 42596,
- 42597,
- 42598,
- 42599,
- 42600,
- 42601,
- 42602,
- 42603,
- 42604,
- 42605,
- 42606,
- 42623,
- 42624,
- 42625,
- 42626,
- 42627,
- 42628,
- 42629,
- 42630,
- 42631,
- 42632,
- 42633,
- 42634,
- 42635,
- 42636,
- 42637,
- 42638,
- 42639,
- 42640,
- 42641,
- 42642,
- 42643,
- 42644,
- 42645,
- 42646,
- 42647,
- 42656,
- 42657,
- 42658,
- 42659,
- 42660,
- 42661,
- 42662,
- 42663,
- 42664,
- 42665,
- 42666,
- 42667,
- 42668,
- 42669,
- 42670,
- 42671,
- 42672,
- 42673,
- 42674,
- 42675,
- 42676,
- 42677,
- 42678,
- 42679,
- 42680,
- 42681,
- 42682,
- 42683,
- 42684,
- 42685,
- 42686,
- 42687,
- 42688,
- 42689,
- 42690,
- 42691,
- 42692,
- 42693,
- 42694,
- 42695,
- 42696,
- 42697,
- 42698,
- 42699,
- 42700,
- 42701,
- 42702,
- 42703,
- 42704,
- 42705,
- 42706,
- 42707,
- 42708,
- 42709,
- 42710,
- 42711,
- 42712,
- 42713,
- 42714,
- 42715,
- 42716,
- 42717,
- 42718,
- 42719,
- 42720,
- 42721,
- 42722,
- 42723,
- 42724,
- 42725,
- 42726,
- 42727,
- 42728,
- 42729,
- 42730,
- 42731,
- 42732,
- 42733,
- 42734,
- 42735,
- 42775,
- 42776,
- 42777,
- 42778,
- 42779,
- 42780,
- 42781,
- 42782,
- 42783,
- 42786,
- 42787,
- 42788,
- 42789,
- 42790,
- 42791,
- 42792,
- 42793,
- 42794,
- 42795,
- 42796,
- 42797,
- 42798,
- 42799,
- 42800,
- 42801,
- 42802,
- 42803,
- 42804,
- 42805,
- 42806,
- 42807,
- 42808,
- 42809,
- 42810,
- 42811,
- 42812,
- 42813,
- 42814,
- 42815,
- 42816,
- 42817,
- 42818,
- 42819,
- 42820,
- 42821,
- 42822,
- 42823,
- 42824,
- 42825,
- 42826,
- 42827,
- 42828,
- 42829,
- 42830,
- 42831,
- 42832,
- 42833,
- 42834,
- 42835,
- 42836,
- 42837,
- 42838,
- 42839,
- 42840,
- 42841,
- 42842,
- 42843,
- 42844,
- 42845,
- 42846,
- 42847,
- 42848,
- 42849,
- 42850,
- 42851,
- 42852,
- 42853,
- 42854,
- 42855,
- 42856,
- 42857,
- 42858,
- 42859,
- 42860,
- 42861,
- 42862,
- 42863,
- 42864,
- 42865,
- 42866,
- 42867,
- 42868,
- 42869,
- 42870,
- 42871,
- 42872,
- 42873,
- 42874,
- 42875,
- 42876,
- 42877,
- 42878,
- 42879,
- 42880,
- 42881,
- 42882,
- 42883,
- 42884,
- 42885,
- 42886,
- 42887,
- 42888,
- 42891,
- 42892,
- 42893,
- 42894,
- 42896,
- 42897,
- 42898,
- 42899,
- 42912,
- 42913,
- 42914,
- 42915,
- 42916,
- 42917,
- 42918,
- 42919,
- 42920,
- 42921,
- 42922,
- 43000,
- 43001,
- 43002,
- 43003,
- 43004,
- 43005,
- 43006,
- 43007,
- 43008,
- 43009,
- 43011,
- 43012,
- 43013,
- 43015,
- 43016,
- 43017,
- 43018,
- 43020,
- 43021,
- 43022,
- 43023,
- 43024,
- 43025,
- 43026,
- 43027,
- 43028,
- 43029,
- 43030,
- 43031,
- 43032,
- 43033,
- 43034,
- 43035,
- 43036,
- 43037,
- 43038,
- 43039,
- 43040,
- 43041,
- 43042,
- 43072,
- 43073,
- 43074,
- 43075,
- 43076,
- 43077,
- 43078,
- 43079,
- 43080,
- 43081,
- 43082,
- 43083,
- 43084,
- 43085,
- 43086,
- 43087,
- 43088,
- 43089,
- 43090,
- 43091,
- 43092,
- 43093,
- 43094,
- 43095,
- 43096,
- 43097,
- 43098,
- 43099,
- 43100,
- 43101,
- 43102,
- 43103,
- 43104,
- 43105,
- 43106,
- 43107,
- 43108,
- 43109,
- 43110,
- 43111,
- 43112,
- 43113,
- 43114,
- 43115,
- 43116,
- 43117,
- 43118,
- 43119,
- 43120,
- 43121,
- 43122,
- 43123,
- 43138,
- 43139,
- 43140,
- 43141,
- 43142,
- 43143,
- 43144,
- 43145,
- 43146,
- 43147,
- 43148,
- 43149,
- 43150,
- 43151,
- 43152,
- 43153,
- 43154,
- 43155,
- 43156,
- 43157,
- 43158,
- 43159,
- 43160,
- 43161,
- 43162,
- 43163,
- 43164,
- 43165,
- 43166,
- 43167,
- 43168,
- 43169,
- 43170,
- 43171,
- 43172,
- 43173,
- 43174,
- 43175,
- 43176,
- 43177,
- 43178,
- 43179,
- 43180,
- 43181,
- 43182,
- 43183,
- 43184,
- 43185,
- 43186,
- 43187,
- 43250,
- 43251,
- 43252,
- 43253,
- 43254,
- 43255,
- 43259,
- 43274,
- 43275,
- 43276,
- 43277,
- 43278,
- 43279,
- 43280,
- 43281,
- 43282,
- 43283,
- 43284,
- 43285,
- 43286,
- 43287,
- 43288,
- 43289,
- 43290,
- 43291,
- 43292,
- 43293,
- 43294,
- 43295,
- 43296,
- 43297,
- 43298,
- 43299,
- 43300,
- 43301,
- 43312,
- 43313,
- 43314,
- 43315,
- 43316,
- 43317,
- 43318,
- 43319,
- 43320,
- 43321,
- 43322,
- 43323,
- 43324,
- 43325,
- 43326,
- 43327,
- 43328,
- 43329,
- 43330,
- 43331,
- 43332,
- 43333,
- 43334,
- 43360,
- 43361,
- 43362,
- 43363,
- 43364,
- 43365,
- 43366,
- 43367,
- 43368,
- 43369,
- 43370,
- 43371,
- 43372,
- 43373,
- 43374,
- 43375,
- 43376,
- 43377,
- 43378,
- 43379,
- 43380,
- 43381,
- 43382,
- 43383,
- 43384,
- 43385,
- 43386,
- 43387,
- 43388,
- 43396,
- 43397,
- 43398,
- 43399,
- 43400,
- 43401,
- 43402,
- 43403,
- 43404,
- 43405,
- 43406,
- 43407,
- 43408,
- 43409,
- 43410,
- 43411,
- 43412,
- 43413,
- 43414,
- 43415,
- 43416,
- 43417,
- 43418,
- 43419,
- 43420,
- 43421,
- 43422,
- 43423,
- 43424,
- 43425,
- 43426,
- 43427,
- 43428,
- 43429,
- 43430,
- 43431,
- 43432,
- 43433,
- 43434,
- 43435,
- 43436,
- 43437,
- 43438,
- 43439,
- 43440,
- 43441,
- 43442,
- 43471,
- 43520,
- 43521,
- 43522,
- 43523,
- 43524,
- 43525,
- 43526,
- 43527,
- 43528,
- 43529,
- 43530,
- 43531,
- 43532,
- 43533,
- 43534,
- 43535,
- 43536,
- 43537,
- 43538,
- 43539,
- 43540,
- 43541,
- 43542,
- 43543,
- 43544,
- 43545,
- 43546,
- 43547,
- 43548,
- 43549,
- 43550,
- 43551,
- 43552,
- 43553,
- 43554,
- 43555,
- 43556,
- 43557,
- 43558,
- 43559,
- 43560,
- 43584,
- 43585,
- 43586,
- 43588,
- 43589,
- 43590,
- 43591,
- 43592,
- 43593,
- 43594,
- 43595,
- 43616,
- 43617,
- 43618,
- 43619,
- 43620,
- 43621,
- 43622,
- 43623,
- 43624,
- 43625,
- 43626,
- 43627,
- 43628,
- 43629,
- 43630,
- 43631,
- 43632,
- 43633,
- 43634,
- 43635,
- 43636,
- 43637,
- 43638,
- 43642,
- 43648,
- 43649,
- 43650,
- 43651,
- 43652,
- 43653,
- 43654,
- 43655,
- 43656,
- 43657,
- 43658,
- 43659,
- 43660,
- 43661,
- 43662,
- 43663,
- 43664,
- 43665,
- 43666,
- 43667,
- 43668,
- 43669,
- 43670,
- 43671,
- 43672,
- 43673,
- 43674,
- 43675,
- 43676,
- 43677,
- 43678,
- 43679,
- 43680,
- 43681,
- 43682,
- 43683,
- 43684,
- 43685,
- 43686,
- 43687,
- 43688,
- 43689,
- 43690,
- 43691,
- 43692,
- 43693,
- 43694,
- 43695,
- 43697,
- 43701,
- 43702,
- 43705,
- 43706,
- 43707,
- 43708,
- 43709,
- 43712,
- 43714,
- 43739,
- 43740,
- 43741,
- 43744,
- 43745,
- 43746,
- 43747,
- 43748,
- 43749,
- 43750,
- 43751,
- 43752,
- 43753,
- 43754,
- 43762,
- 43763,
- 43764,
- 43777,
- 43778,
- 43779,
- 43780,
- 43781,
- 43782,
- 43785,
- 43786,
- 43787,
- 43788,
- 43789,
- 43790,
- 43793,
- 43794,
- 43795,
- 43796,
- 43797,
- 43798,
- 43808,
- 43809,
- 43810,
- 43811,
- 43812,
- 43813,
- 43814,
- 43816,
- 43817,
- 43818,
- 43819,
- 43820,
- 43821,
- 43822,
- 43968,
- 43969,
- 43970,
- 43971,
- 43972,
- 43973,
- 43974,
- 43975,
- 43976,
- 43977,
- 43978,
- 43979,
- 43980,
- 43981,
- 43982,
- 43983,
- 43984,
- 43985,
- 43986,
- 43987,
- 43988,
- 43989,
- 43990,
- 43991,
- 43992,
- 43993,
- 43994,
- 43995,
- 43996,
- 43997,
- 43998,
- 43999,
- 44000,
- 44001,
- 44002,
- 44032,
- 44033,
- 44034,
- 44035,
- 44036,
- 44037,
- 44038,
- 44039,
- 44040,
- 44041,
- 44042,
- 44043,
- 44044,
- 44045,
- 44046,
- 44047,
- 44048,
- 44049,
- 44050,
- 44051,
- 44052,
- 44053,
- 44054,
- 44055,
- 44056,
- 44057,
- 44058,
- 44059,
- 44060,
- 44061,
- 44062,
- 44063,
- 44064,
- 44065,
- 44066,
- 44067,
- 44068,
- 44069,
- 44070,
- 44071,
- 44072,
- 44073,
- 44074,
- 44075,
- 44076,
- 44077,
- 44078,
- 44079,
- 44080,
- 44081,
- 44082,
- 44083,
- 44084,
- 44085,
- 44086,
- 44087,
- 44088,
- 44089,
- 44090,
- 44091,
- 44092,
- 44093,
- 44094,
- 44095,
- 44096,
- 44097,
- 44098,
- 44099,
- 44100,
- 44101,
- 44102,
- 44103,
- 44104,
- 44105,
- 44106,
- 44107,
- 44108,
- 44109,
- 44110,
- 44111,
- 44112,
- 44113,
- 44114,
- 44115,
- 44116,
- 44117,
- 44118,
- 44119,
- 44120,
- 44121,
- 44122,
- 44123,
- 44124,
- 44125,
- 44126,
- 44127,
- 44128,
- 44129,
- 44130,
- 44131,
- 44132,
- 44133,
- 44134,
- 44135,
- 44136,
- 44137,
- 44138,
- 44139,
- 44140,
- 44141,
- 44142,
- 44143,
- 44144,
- 44145,
- 44146,
- 44147,
- 44148,
- 44149,
- 44150,
- 44151,
- 44152,
- 44153,
- 44154,
- 44155,
- 44156,
- 44157,
- 44158,
- 44159,
- 44160,
- 44161,
- 44162,
- 44163,
- 44164,
- 44165,
- 44166,
- 44167,
- 44168,
- 44169,
- 44170,
- 44171,
- 44172,
- 44173,
- 44174,
- 44175,
- 44176,
- 44177,
- 44178,
- 44179,
- 44180,
- 44181,
- 44182,
- 44183,
- 44184,
- 44185,
- 44186,
- 44187,
- 44188,
- 44189,
- 44190,
- 44191,
- 44192,
- 44193,
- 44194,
- 44195,
- 44196,
- 44197,
- 44198,
- 44199,
- 44200,
- 44201,
- 44202,
- 44203,
- 44204,
- 44205,
- 44206,
- 44207,
- 44208,
- 44209,
- 44210,
- 44211,
- 44212,
- 44213,
- 44214,
- 44215,
- 44216,
- 44217,
- 44218,
- 44219,
- 44220,
- 44221,
- 44222,
- 44223,
- 44224,
- 44225,
- 44226,
- 44227,
- 44228,
- 44229,
- 44230,
- 44231,
- 44232,
- 44233,
- 44234,
- 44235,
- 44236,
- 44237,
- 44238,
- 44239,
- 44240,
- 44241,
- 44242,
- 44243,
- 44244,
- 44245,
- 44246,
- 44247,
- 44248,
- 44249,
- 44250,
- 44251,
- 44252,
- 44253,
- 44254,
- 44255,
- 44256,
- 44257,
- 44258,
- 44259,
- 44260,
- 44261,
- 44262,
- 44263,
- 44264,
- 44265,
- 44266,
- 44267,
- 44268,
- 44269,
- 44270,
- 44271,
- 44272,
- 44273,
- 44274,
- 44275,
- 44276,
- 44277,
- 44278,
- 44279,
- 44280,
- 44281,
- 44282,
- 44283,
- 44284,
- 44285,
- 44286,
- 44287,
- 44288,
- 44289,
- 44290,
- 44291,
- 44292,
- 44293,
- 44294,
- 44295,
- 44296,
- 44297,
- 44298,
- 44299,
- 44300,
- 44301,
- 44302,
- 44303,
- 44304,
- 44305,
- 44306,
- 44307,
- 44308,
- 44309,
- 44310,
- 44311,
- 44312,
- 44313,
- 44314,
- 44315,
- 44316,
- 44317,
- 44318,
- 44319,
- 44320,
- 44321,
- 44322,
- 44323,
- 44324,
- 44325,
- 44326,
- 44327,
- 44328,
- 44329,
- 44330,
- 44331,
- 44332,
- 44333,
- 44334,
- 44335,
- 44336,
- 44337,
- 44338,
- 44339,
- 44340,
- 44341,
- 44342,
- 44343,
- 44344,
- 44345,
- 44346,
- 44347,
- 44348,
- 44349,
- 44350,
- 44351,
- 44352,
- 44353,
- 44354,
- 44355,
- 44356,
- 44357,
- 44358,
- 44359,
- 44360,
- 44361,
- 44362,
- 44363,
- 44364,
- 44365,
- 44366,
- 44367,
- 44368,
- 44369,
- 44370,
- 44371,
- 44372,
- 44373,
- 44374,
- 44375,
- 44376,
- 44377,
- 44378,
- 44379,
- 44380,
- 44381,
- 44382,
- 44383,
- 44384,
- 44385,
- 44386,
- 44387,
- 44388,
- 44389,
- 44390,
- 44391,
- 44392,
- 44393,
- 44394,
- 44395,
- 44396,
- 44397,
- 44398,
- 44399,
- 44400,
- 44401,
- 44402,
- 44403,
- 44404,
- 44405,
- 44406,
- 44407,
- 44408,
- 44409,
- 44410,
- 44411,
- 44412,
- 44413,
- 44414,
- 44415,
- 44416,
- 44417,
- 44418,
- 44419,
- 44420,
- 44421,
- 44422,
- 44423,
- 44424,
- 44425,
- 44426,
- 44427,
- 44428,
- 44429,
- 44430,
- 44431,
- 44432,
- 44433,
- 44434,
- 44435,
- 44436,
- 44437,
- 44438,
- 44439,
- 44440,
- 44441,
- 44442,
- 44443,
- 44444,
- 44445,
- 44446,
- 44447,
- 44448,
- 44449,
- 44450,
- 44451,
- 44452,
- 44453,
- 44454,
- 44455,
- 44456,
- 44457,
- 44458,
- 44459,
- 44460,
- 44461,
- 44462,
- 44463,
- 44464,
- 44465,
- 44466,
- 44467,
- 44468,
- 44469,
- 44470,
- 44471,
- 44472,
- 44473,
- 44474,
- 44475,
- 44476,
- 44477,
- 44478,
- 44479,
- 44480,
- 44481,
- 44482,
- 44483,
- 44484,
- 44485,
- 44486,
- 44487,
- 44488,
- 44489,
- 44490,
- 44491,
- 44492,
- 44493,
- 44494,
- 44495,
- 44496,
- 44497,
- 44498,
- 44499,
- 44500,
- 44501,
- 44502,
- 44503,
- 44504,
- 44505,
- 44506,
- 44507,
- 44508,
- 44509,
- 44510,
- 44511,
- 44512,
- 44513,
- 44514,
- 44515,
- 44516,
- 44517,
- 44518,
- 44519,
- 44520,
- 44521,
- 44522,
- 44523,
- 44524,
- 44525,
- 44526,
- 44527,
- 44528,
- 44529,
- 44530,
- 44531,
- 44532,
- 44533,
- 44534,
- 44535,
- 44536,
- 44537,
- 44538,
- 44539,
- 44540,
- 44541,
- 44542,
- 44543,
- 44544,
- 44545,
- 44546,
- 44547,
- 44548,
- 44549,
- 44550,
- 44551,
- 44552,
- 44553,
- 44554,
- 44555,
- 44556,
- 44557,
- 44558,
- 44559,
- 44560,
- 44561,
- 44562,
- 44563,
- 44564,
- 44565,
- 44566,
- 44567,
- 44568,
- 44569,
- 44570,
- 44571,
- 44572,
- 44573,
- 44574,
- 44575,
- 44576,
- 44577,
- 44578,
- 44579,
- 44580,
- 44581,
- 44582,
- 44583,
- 44584,
- 44585,
- 44586,
- 44587,
- 44588,
- 44589,
- 44590,
- 44591,
- 44592,
- 44593,
- 44594,
- 44595,
- 44596,
- 44597,
- 44598,
- 44599,
- 44600,
- 44601,
- 44602,
- 44603,
- 44604,
- 44605,
- 44606,
- 44607,
- 44608,
- 44609,
- 44610,
- 44611,
- 44612,
- 44613,
- 44614,
- 44615,
- 44616,
- 44617,
- 44618,
- 44619,
- 44620,
- 44621,
- 44622,
- 44623,
- 44624,
- 44625,
- 44626,
- 44627,
- 44628,
- 44629,
- 44630,
- 44631,
- 44632,
- 44633,
- 44634,
- 44635,
- 44636,
- 44637,
- 44638,
- 44639,
- 44640,
- 44641,
- 44642,
- 44643,
- 44644,
- 44645,
- 44646,
- 44647,
- 44648,
- 44649,
- 44650,
- 44651,
- 44652,
- 44653,
- 44654,
- 44655,
- 44656,
- 44657,
- 44658,
- 44659,
- 44660,
- 44661,
- 44662,
- 44663,
- 44664,
- 44665,
- 44666,
- 44667,
- 44668,
- 44669,
- 44670,
- 44671,
- 44672,
- 44673,
- 44674,
- 44675,
- 44676,
- 44677,
- 44678,
- 44679,
- 44680,
- 44681,
- 44682,
- 44683,
- 44684,
- 44685,
- 44686,
- 44687,
- 44688,
- 44689,
- 44690,
- 44691,
- 44692,
- 44693,
- 44694,
- 44695,
- 44696,
- 44697,
- 44698,
- 44699,
- 44700,
- 44701,
- 44702,
- 44703,
- 44704,
- 44705,
- 44706,
- 44707,
- 44708,
- 44709,
- 44710,
- 44711,
- 44712,
- 44713,
- 44714,
- 44715,
- 44716,
- 44717,
- 44718,
- 44719,
- 44720,
- 44721,
- 44722,
- 44723,
- 44724,
- 44725,
- 44726,
- 44727,
- 44728,
- 44729,
- 44730,
- 44731,
- 44732,
- 44733,
- 44734,
- 44735,
- 44736,
- 44737,
- 44738,
- 44739,
- 44740,
- 44741,
- 44742,
- 44743,
- 44744,
- 44745,
- 44746,
- 44747,
- 44748,
- 44749,
- 44750,
- 44751,
- 44752,
- 44753,
- 44754,
- 44755,
- 44756,
- 44757,
- 44758,
- 44759,
- 44760,
- 44761,
- 44762,
- 44763,
- 44764,
- 44765,
- 44766,
- 44767,
- 44768,
- 44769,
- 44770,
- 44771,
- 44772,
- 44773,
- 44774,
- 44775,
- 44776,
- 44777,
- 44778,
- 44779,
- 44780,
- 44781,
- 44782,
- 44783,
- 44784,
- 44785,
- 44786,
- 44787,
- 44788,
- 44789,
- 44790,
- 44791,
- 44792,
- 44793,
- 44794,
- 44795,
- 44796,
- 44797,
- 44798,
- 44799,
- 44800,
- 44801,
- 44802,
- 44803,
- 44804,
- 44805,
- 44806,
- 44807,
- 44808,
- 44809,
- 44810,
- 44811,
- 44812,
- 44813,
- 44814,
- 44815,
- 44816,
- 44817,
- 44818,
- 44819,
- 44820,
- 44821,
- 44822,
- 44823,
- 44824,
- 44825,
- 44826,
- 44827,
- 44828,
- 44829,
- 44830,
- 44831,
- 44832,
- 44833,
- 44834,
- 44835,
- 44836,
- 44837,
- 44838,
- 44839,
- 44840,
- 44841,
- 44842,
- 44843,
- 44844,
- 44845,
- 44846,
- 44847,
- 44848,
- 44849,
- 44850,
- 44851,
- 44852,
- 44853,
- 44854,
- 44855,
- 44856,
- 44857,
- 44858,
- 44859,
- 44860,
- 44861,
- 44862,
- 44863,
- 44864,
- 44865,
- 44866,
- 44867,
- 44868,
- 44869,
- 44870,
- 44871,
- 44872,
- 44873,
- 44874,
- 44875,
- 44876,
- 44877,
- 44878,
- 44879,
- 44880,
- 44881,
- 44882,
- 44883,
- 44884,
- 44885,
- 44886,
- 44887,
- 44888,
- 44889,
- 44890,
- 44891,
- 44892,
- 44893,
- 44894,
- 44895,
- 44896,
- 44897,
- 44898,
- 44899,
- 44900,
- 44901,
- 44902,
- 44903,
- 44904,
- 44905,
- 44906,
- 44907,
- 44908,
- 44909,
- 44910,
- 44911,
- 44912,
- 44913,
- 44914,
- 44915,
- 44916,
- 44917,
- 44918,
- 44919,
- 44920,
- 44921,
- 44922,
- 44923,
- 44924,
- 44925,
- 44926,
- 44927,
- 44928,
- 44929,
- 44930,
- 44931,
- 44932,
- 44933,
- 44934,
- 44935,
- 44936,
- 44937,
- 44938,
- 44939,
- 44940,
- 44941,
- 44942,
- 44943,
- 44944,
- 44945,
- 44946,
- 44947,
- 44948,
- 44949,
- 44950,
- 44951,
- 44952,
- 44953,
- 44954,
- 44955,
- 44956,
- 44957,
- 44958,
- 44959,
- 44960,
- 44961,
- 44962,
- 44963,
- 44964,
- 44965,
- 44966,
- 44967,
- 44968,
- 44969,
- 44970,
- 44971,
- 44972,
- 44973,
- 44974,
- 44975,
- 44976,
- 44977,
- 44978,
- 44979,
- 44980,
- 44981,
- 44982,
- 44983,
- 44984,
- 44985,
- 44986,
- 44987,
- 44988,
- 44989,
- 44990,
- 44991,
- 44992,
- 44993,
- 44994,
- 44995,
- 44996,
- 44997,
- 44998,
- 44999,
- 45000,
- 45001,
- 45002,
- 45003,
- 45004,
- 45005,
- 45006,
- 45007,
- 45008,
- 45009,
- 45010,
- 45011,
- 45012,
- 45013,
- 45014,
- 45015,
- 45016,
- 45017,
- 45018,
- 45019,
- 45020,
- 45021,
- 45022,
- 45023,
- 45024,
- 45025,
- 45026,
- 45027,
- 45028,
- 45029,
- 45030,
- 45031,
- 45032,
- 45033,
- 45034,
- 45035,
- 45036,
- 45037,
- 45038,
- 45039,
- 45040,
- 45041,
- 45042,
- 45043,
- 45044,
- 45045,
- 45046,
- 45047,
- 45048,
- 45049,
- 45050,
- 45051,
- 45052,
- 45053,
- 45054,
- 45055,
- 45056,
- 45057,
- 45058,
- 45059,
- 45060,
- 45061,
- 45062,
- 45063,
- 45064,
- 45065,
- 45066,
- 45067,
- 45068,
- 45069,
- 45070,
- 45071,
- 45072,
- 45073,
- 45074,
- 45075,
- 45076,
- 45077,
- 45078,
- 45079,
- 45080,
- 45081,
- 45082,
- 45083,
- 45084,
- 45085,
- 45086,
- 45087,
- 45088,
- 45089,
- 45090,
- 45091,
- 45092,
- 45093,
- 45094,
- 45095,
- 45096,
- 45097,
- 45098,
- 45099,
- 45100,
- 45101,
- 45102,
- 45103,
- 45104,
- 45105,
- 45106,
- 45107,
- 45108,
- 45109,
- 45110,
- 45111,
- 45112,
- 45113,
- 45114,
- 45115,
- 45116,
- 45117,
- 45118,
- 45119,
- 45120,
- 45121,
- 45122,
- 45123,
- 45124,
- 45125,
- 45126,
- 45127,
- 45128,
- 45129,
- 45130,
- 45131,
- 45132,
- 45133,
- 45134,
- 45135,
- 45136,
- 45137,
- 45138,
- 45139,
- 45140,
- 45141,
- 45142,
- 45143,
- 45144,
- 45145,
- 45146,
- 45147,
- 45148,
- 45149,
- 45150,
- 45151,
- 45152,
- 45153,
- 45154,
- 45155,
- 45156,
- 45157,
- 45158,
- 45159,
- 45160,
- 45161,
- 45162,
- 45163,
- 45164,
- 45165,
- 45166,
- 45167,
- 45168,
- 45169,
- 45170,
- 45171,
- 45172,
- 45173,
- 45174,
- 45175,
- 45176,
- 45177,
- 45178,
- 45179,
- 45180,
- 45181,
- 45182,
- 45183,
- 45184,
- 45185,
- 45186,
- 45187,
- 45188,
- 45189,
- 45190,
- 45191,
- 45192,
- 45193,
- 45194,
- 45195,
- 45196,
- 45197,
- 45198,
- 45199,
- 45200,
- 45201,
- 45202,
- 45203,
- 45204,
- 45205,
- 45206,
- 45207,
- 45208,
- 45209,
- 45210,
- 45211,
- 45212,
- 45213,
- 45214,
- 45215,
- 45216,
- 45217,
- 45218,
- 45219,
- 45220,
- 45221,
- 45222,
- 45223,
- 45224,
- 45225,
- 45226,
- 45227,
- 45228,
- 45229,
- 45230,
- 45231,
- 45232,
- 45233,
- 45234,
- 45235,
- 45236,
- 45237,
- 45238,
- 45239,
- 45240,
- 45241,
- 45242,
- 45243,
- 45244,
- 45245,
- 45246,
- 45247,
- 45248,
- 45249,
- 45250,
- 45251,
- 45252,
- 45253,
- 45254,
- 45255,
- 45256,
- 45257,
- 45258,
- 45259,
- 45260,
- 45261,
- 45262,
- 45263,
- 45264,
- 45265,
- 45266,
- 45267,
- 45268,
- 45269,
- 45270,
- 45271,
- 45272,
- 45273,
- 45274,
- 45275,
- 45276,
- 45277,
- 45278,
- 45279,
- 45280,
- 45281,
- 45282,
- 45283,
- 45284,
- 45285,
- 45286,
- 45287,
- 45288,
- 45289,
- 45290,
- 45291,
- 45292,
- 45293,
- 45294,
- 45295,
- 45296,
- 45297,
- 45298,
- 45299,
- 45300,
- 45301,
- 45302,
- 45303,
- 45304,
- 45305,
- 45306,
- 45307,
- 45308,
- 45309,
- 45310,
- 45311,
- 45312,
- 45313,
- 45314,
- 45315,
- 45316,
- 45317,
- 45318,
- 45319,
- 45320,
- 45321,
- 45322,
- 45323,
- 45324,
- 45325,
- 45326,
- 45327,
- 45328,
- 45329,
- 45330,
- 45331,
- 45332,
- 45333,
- 45334,
- 45335,
- 45336,
- 45337,
- 45338,
- 45339,
- 45340,
- 45341,
- 45342,
- 45343,
- 45344,
- 45345,
- 45346,
- 45347,
- 45348,
- 45349,
- 45350,
- 45351,
- 45352,
- 45353,
- 45354,
- 45355,
- 45356,
- 45357,
- 45358,
- 45359,
- 45360,
- 45361,
- 45362,
- 45363,
- 45364,
- 45365,
- 45366,
- 45367,
- 45368,
- 45369,
- 45370,
- 45371,
- 45372,
- 45373,
- 45374,
- 45375,
- 45376,
- 45377,
- 45378,
- 45379,
- 45380,
- 45381,
- 45382,
- 45383,
- 45384,
- 45385,
- 45386,
- 45387,
- 45388,
- 45389,
- 45390,
- 45391,
- 45392,
- 45393,
- 45394,
- 45395,
- 45396,
- 45397,
- 45398,
- 45399,
- 45400,
- 45401,
- 45402,
- 45403,
- 45404,
- 45405,
- 45406,
- 45407,
- 45408,
- 45409,
- 45410,
- 45411,
- 45412,
- 45413,
- 45414,
- 45415,
- 45416,
- 45417,
- 45418,
- 45419,
- 45420,
- 45421,
- 45422,
- 45423,
- 45424,
- 45425,
- 45426,
- 45427,
- 45428,
- 45429,
- 45430,
- 45431,
- 45432,
- 45433,
- 45434,
- 45435,
- 45436,
- 45437,
- 45438,
- 45439,
- 45440,
- 45441,
- 45442,
- 45443,
- 45444,
- 45445,
- 45446,
- 45447,
- 45448,
- 45449,
- 45450,
- 45451,
- 45452,
- 45453,
- 45454,
- 45455,
- 45456,
- 45457,
- 45458,
- 45459,
- 45460,
- 45461,
- 45462,
- 45463,
- 45464,
- 45465,
- 45466,
- 45467,
- 45468,
- 45469,
- 45470,
- 45471,
- 45472,
- 45473,
- 45474,
- 45475,
- 45476,
- 45477,
- 45478,
- 45479,
- 45480,
- 45481,
- 45482,
- 45483,
- 45484,
- 45485,
- 45486,
- 45487,
- 45488,
- 45489,
- 45490,
- 45491,
- 45492,
- 45493,
- 45494,
- 45495,
- 45496,
- 45497,
- 45498,
- 45499,
- 45500,
- 45501,
- 45502,
- 45503,
- 45504,
- 45505,
- 45506,
- 45507,
- 45508,
- 45509,
- 45510,
- 45511,
- 45512,
- 45513,
- 45514,
- 45515,
- 45516,
- 45517,
- 45518,
- 45519,
- 45520,
- 45521,
- 45522,
- 45523,
- 45524,
- 45525,
- 45526,
- 45527,
- 45528,
- 45529,
- 45530,
- 45531,
- 45532,
- 45533,
- 45534,
- 45535,
- 45536,
- 45537,
- 45538,
- 45539,
- 45540,
- 45541,
- 45542,
- 45543,
- 45544,
- 45545,
- 45546,
- 45547,
- 45548,
- 45549,
- 45550,
- 45551,
- 45552,
- 45553,
- 45554,
- 45555,
- 45556,
- 45557,
- 45558,
- 45559,
- 45560,
- 45561,
- 45562,
- 45563,
- 45564,
- 45565,
- 45566,
- 45567,
- 45568,
- 45569,
- 45570,
- 45571,
- 45572,
- 45573,
- 45574,
- 45575,
- 45576,
- 45577,
- 45578,
- 45579,
- 45580,
- 45581,
- 45582,
- 45583,
- 45584,
- 45585,
- 45586,
- 45587,
- 45588,
- 45589,
- 45590,
- 45591,
- 45592,
- 45593,
- 45594,
- 45595,
- 45596,
- 45597,
- 45598,
- 45599,
- 45600,
- 45601,
- 45602,
- 45603,
- 45604,
- 45605,
- 45606,
- 45607,
- 45608,
- 45609,
- 45610,
- 45611,
- 45612,
- 45613,
- 45614,
- 45615,
- 45616,
- 45617,
- 45618,
- 45619,
- 45620,
- 45621,
- 45622,
- 45623,
- 45624,
- 45625,
- 45626,
- 45627,
- 45628,
- 45629,
- 45630,
- 45631,
- 45632,
- 45633,
- 45634,
- 45635,
- 45636,
- 45637,
- 45638,
- 45639,
- 45640,
- 45641,
- 45642,
- 45643,
- 45644,
- 45645,
- 45646,
- 45647,
- 45648,
- 45649,
- 45650,
- 45651,
- 45652,
- 45653,
- 45654,
- 45655,
- 45656,
- 45657,
- 45658,
- 45659,
- 45660,
- 45661,
- 45662,
- 45663,
- 45664,
- 45665,
- 45666,
- 45667,
- 45668,
- 45669,
- 45670,
- 45671,
- 45672,
- 45673,
- 45674,
- 45675,
- 45676,
- 45677,
- 45678,
- 45679,
- 45680,
- 45681,
- 45682,
- 45683,
- 45684,
- 45685,
- 45686,
- 45687,
- 45688,
- 45689,
- 45690,
- 45691,
- 45692,
- 45693,
- 45694,
- 45695,
- 45696,
- 45697,
- 45698,
- 45699,
- 45700,
- 45701,
- 45702,
- 45703,
- 45704,
- 45705,
- 45706,
- 45707,
- 45708,
- 45709,
- 45710,
- 45711,
- 45712,
- 45713,
- 45714,
- 45715,
- 45716,
- 45717,
- 45718,
- 45719,
- 45720,
- 45721,
- 45722,
- 45723,
- 45724,
- 45725,
- 45726,
- 45727,
- 45728,
- 45729,
- 45730,
- 45731,
- 45732,
- 45733,
- 45734,
- 45735,
- 45736,
- 45737,
- 45738,
- 45739,
- 45740,
- 45741,
- 45742,
- 45743,
- 45744,
- 45745,
- 45746,
- 45747,
- 45748,
- 45749,
- 45750,
- 45751,
- 45752,
- 45753,
- 45754,
- 45755,
- 45756,
- 45757,
- 45758,
- 45759,
- 45760,
- 45761,
- 45762,
- 45763,
- 45764,
- 45765,
- 45766,
- 45767,
- 45768,
- 45769,
- 45770,
- 45771,
- 45772,
- 45773,
- 45774,
- 45775,
- 45776,
- 45777,
- 45778,
- 45779,
- 45780,
- 45781,
- 45782,
- 45783,
- 45784,
- 45785,
- 45786,
- 45787,
- 45788,
- 45789,
- 45790,
- 45791,
- 45792,
- 45793,
- 45794,
- 45795,
- 45796,
- 45797,
- 45798,
- 45799,
- 45800,
- 45801,
- 45802,
- 45803,
- 45804,
- 45805,
- 45806,
- 45807,
- 45808,
- 45809,
- 45810,
- 45811,
- 45812,
- 45813,
- 45814,
- 45815,
- 45816,
- 45817,
- 45818,
- 45819,
- 45820,
- 45821,
- 45822,
- 45823,
- 45824,
- 45825,
- 45826,
- 45827,
- 45828,
- 45829,
- 45830,
- 45831,
- 45832,
- 45833,
- 45834,
- 45835,
- 45836,
- 45837,
- 45838,
- 45839,
- 45840,
- 45841,
- 45842,
- 45843,
- 45844,
- 45845,
- 45846,
- 45847,
- 45848,
- 45849,
- 45850,
- 45851,
- 45852,
- 45853,
- 45854,
- 45855,
- 45856,
- 45857,
- 45858,
- 45859,
- 45860,
- 45861,
- 45862,
- 45863,
- 45864,
- 45865,
- 45866,
- 45867,
- 45868,
- 45869,
- 45870,
- 45871,
- 45872,
- 45873,
- 45874,
- 45875,
- 45876,
- 45877,
- 45878,
- 45879,
- 45880,
- 45881,
- 45882,
- 45883,
- 45884,
- 45885,
- 45886,
- 45887,
- 45888,
- 45889,
- 45890,
- 45891,
- 45892,
- 45893,
- 45894,
- 45895,
- 45896,
- 45897,
- 45898,
- 45899,
- 45900,
- 45901,
- 45902,
- 45903,
- 45904,
- 45905,
- 45906,
- 45907,
- 45908,
- 45909,
- 45910,
- 45911,
- 45912,
- 45913,
- 45914,
- 45915,
- 45916,
- 45917,
- 45918,
- 45919,
- 45920,
- 45921,
- 45922,
- 45923,
- 45924,
- 45925,
- 45926,
- 45927,
- 45928,
- 45929,
- 45930,
- 45931,
- 45932,
- 45933,
- 45934,
- 45935,
- 45936,
- 45937,
- 45938,
- 45939,
- 45940,
- 45941,
- 45942,
- 45943,
- 45944,
- 45945,
- 45946,
- 45947,
- 45948,
- 45949,
- 45950,
- 45951,
- 45952,
- 45953,
- 45954,
- 45955,
- 45956,
- 45957,
- 45958,
- 45959,
- 45960,
- 45961,
- 45962,
- 45963,
- 45964,
- 45965,
- 45966,
- 45967,
- 45968,
- 45969,
- 45970,
- 45971,
- 45972,
- 45973,
- 45974,
- 45975,
- 45976,
- 45977,
- 45978,
- 45979,
- 45980,
- 45981,
- 45982,
- 45983,
- 45984,
- 45985,
- 45986,
- 45987,
- 45988,
- 45989,
- 45990,
- 45991,
- 45992,
- 45993,
- 45994,
- 45995,
- 45996,
- 45997,
- 45998,
- 45999,
- 46000,
- 46001,
- 46002,
- 46003,
- 46004,
- 46005,
- 46006,
- 46007,
- 46008,
- 46009,
- 46010,
- 46011,
- 46012,
- 46013,
- 46014,
- 46015,
- 46016,
- 46017,
- 46018,
- 46019,
- 46020,
- 46021,
- 46022,
- 46023,
- 46024,
- 46025,
- 46026,
- 46027,
- 46028,
- 46029,
- 46030,
- 46031,
- 46032,
- 46033,
- 46034,
- 46035,
- 46036,
- 46037,
- 46038,
- 46039,
- 46040,
- 46041,
- 46042,
- 46043,
- 46044,
- 46045,
- 46046,
- 46047,
- 46048,
- 46049,
- 46050,
- 46051,
- 46052,
- 46053,
- 46054,
- 46055,
- 46056,
- 46057,
- 46058,
- 46059,
- 46060,
- 46061,
- 46062,
- 46063,
- 46064,
- 46065,
- 46066,
- 46067,
- 46068,
- 46069,
- 46070,
- 46071,
- 46072,
- 46073,
- 46074,
- 46075,
- 46076,
- 46077,
- 46078,
- 46079,
- 46080,
- 46081,
- 46082,
- 46083,
- 46084,
- 46085,
- 46086,
- 46087,
- 46088,
- 46089,
- 46090,
- 46091,
- 46092,
- 46093,
- 46094,
- 46095,
- 46096,
- 46097,
- 46098,
- 46099,
- 46100,
- 46101,
- 46102,
- 46103,
- 46104,
- 46105,
- 46106,
- 46107,
- 46108,
- 46109,
- 46110,
- 46111,
- 46112,
- 46113,
- 46114,
- 46115,
- 46116,
- 46117,
- 46118,
- 46119,
- 46120,
- 46121,
- 46122,
- 46123,
- 46124,
- 46125,
- 46126,
- 46127,
- 46128,
- 46129,
- 46130,
- 46131,
- 46132,
- 46133,
- 46134,
- 46135,
- 46136,
- 46137,
- 46138,
- 46139,
- 46140,
- 46141,
- 46142,
- 46143,
- 46144,
- 46145,
- 46146,
- 46147,
- 46148,
- 46149,
- 46150,
- 46151,
- 46152,
- 46153,
- 46154,
- 46155,
- 46156,
- 46157,
- 46158,
- 46159,
- 46160,
- 46161,
- 46162,
- 46163,
- 46164,
- 46165,
- 46166,
- 46167,
- 46168,
- 46169,
- 46170,
- 46171,
- 46172,
- 46173,
- 46174,
- 46175,
- 46176,
- 46177,
- 46178,
- 46179,
- 46180,
- 46181,
- 46182,
- 46183,
- 46184,
- 46185,
- 46186,
- 46187,
- 46188,
- 46189,
- 46190,
- 46191,
- 46192,
- 46193,
- 46194,
- 46195,
- 46196,
- 46197,
- 46198,
- 46199,
- 46200,
- 46201,
- 46202,
- 46203,
- 46204,
- 46205,
- 46206,
- 46207,
- 46208,
- 46209,
- 46210,
- 46211,
- 46212,
- 46213,
- 46214,
- 46215,
- 46216,
- 46217,
- 46218,
- 46219,
- 46220,
- 46221,
- 46222,
- 46223,
- 46224,
- 46225,
- 46226,
- 46227,
- 46228,
- 46229,
- 46230,
- 46231,
- 46232,
- 46233,
- 46234,
- 46235,
- 46236,
- 46237,
- 46238,
- 46239,
- 46240,
- 46241,
- 46242,
- 46243,
- 46244,
- 46245,
- 46246,
- 46247,
- 46248,
- 46249,
- 46250,
- 46251,
- 46252,
- 46253,
- 46254,
- 46255,
- 46256,
- 46257,
- 46258,
- 46259,
- 46260,
- 46261,
- 46262,
- 46263,
- 46264,
- 46265,
- 46266,
- 46267,
- 46268,
- 46269,
- 46270,
- 46271,
- 46272,
- 46273,
- 46274,
- 46275,
- 46276,
- 46277,
- 46278,
- 46279,
- 46280,
- 46281,
- 46282,
- 46283,
- 46284,
- 46285,
- 46286,
- 46287,
- 46288,
- 46289,
- 46290,
- 46291,
- 46292,
- 46293,
- 46294,
- 46295,
- 46296,
- 46297,
- 46298,
- 46299,
- 46300,
- 46301,
- 46302,
- 46303,
- 46304,
- 46305,
- 46306,
- 46307,
- 46308,
- 46309,
- 46310,
- 46311,
- 46312,
- 46313,
- 46314,
- 46315,
- 46316,
- 46317,
- 46318,
- 46319,
- 46320,
- 46321,
- 46322,
- 46323,
- 46324,
- 46325,
- 46326,
- 46327,
- 46328,
- 46329,
- 46330,
- 46331,
- 46332,
- 46333,
- 46334,
- 46335,
- 46336,
- 46337,
- 46338,
- 46339,
- 46340,
- 46341,
- 46342,
- 46343,
- 46344,
- 46345,
- 46346,
- 46347,
- 46348,
- 46349,
- 46350,
- 46351,
- 46352,
- 46353,
- 46354,
- 46355,
- 46356,
- 46357,
- 46358,
- 46359,
- 46360,
- 46361,
- 46362,
- 46363,
- 46364,
- 46365,
- 46366,
- 46367,
- 46368,
- 46369,
- 46370,
- 46371,
- 46372,
- 46373,
- 46374,
- 46375,
- 46376,
- 46377,
- 46378,
- 46379,
- 46380,
- 46381,
- 46382,
- 46383,
- 46384,
- 46385,
- 46386,
- 46387,
- 46388,
- 46389,
- 46390,
- 46391,
- 46392,
- 46393,
- 46394,
- 46395,
- 46396,
- 46397,
- 46398,
- 46399,
- 46400,
- 46401,
- 46402,
- 46403,
- 46404,
- 46405,
- 46406,
- 46407,
- 46408,
- 46409,
- 46410,
- 46411,
- 46412,
- 46413,
- 46414,
- 46415,
- 46416,
- 46417,
- 46418,
- 46419,
- 46420,
- 46421,
- 46422,
- 46423,
- 46424,
- 46425,
- 46426,
- 46427,
- 46428,
- 46429,
- 46430,
- 46431,
- 46432,
- 46433,
- 46434,
- 46435,
- 46436,
- 46437,
- 46438,
- 46439,
- 46440,
- 46441,
- 46442,
- 46443,
- 46444,
- 46445,
- 46446,
- 46447,
- 46448,
- 46449,
- 46450,
- 46451,
- 46452,
- 46453,
- 46454,
- 46455,
- 46456,
- 46457,
- 46458,
- 46459,
- 46460,
- 46461,
- 46462,
- 46463,
- 46464,
- 46465,
- 46466,
- 46467,
- 46468,
- 46469,
- 46470,
- 46471,
- 46472,
- 46473,
- 46474,
- 46475,
- 46476,
- 46477,
- 46478,
- 46479,
- 46480,
- 46481,
- 46482,
- 46483,
- 46484,
- 46485,
- 46486,
- 46487,
- 46488,
- 46489,
- 46490,
- 46491,
- 46492,
- 46493,
- 46494,
- 46495,
- 46496,
- 46497,
- 46498,
- 46499,
- 46500,
- 46501,
- 46502,
- 46503,
- 46504,
- 46505,
- 46506,
- 46507,
- 46508,
- 46509,
- 46510,
- 46511,
- 46512,
- 46513,
- 46514,
- 46515,
- 46516,
- 46517,
- 46518,
- 46519,
- 46520,
- 46521,
- 46522,
- 46523,
- 46524,
- 46525,
- 46526,
- 46527,
- 46528,
- 46529,
- 46530,
- 46531,
- 46532,
- 46533,
- 46534,
- 46535,
- 46536,
- 46537,
- 46538,
- 46539,
- 46540,
- 46541,
- 46542,
- 46543,
- 46544,
- 46545,
- 46546,
- 46547,
- 46548,
- 46549,
- 46550,
- 46551,
- 46552,
- 46553,
- 46554,
- 46555,
- 46556,
- 46557,
- 46558,
- 46559,
- 46560,
- 46561,
- 46562,
- 46563,
- 46564,
- 46565,
- 46566,
- 46567,
- 46568,
- 46569,
- 46570,
- 46571,
- 46572,
- 46573,
- 46574,
- 46575,
- 46576,
- 46577,
- 46578,
- 46579,
- 46580,
- 46581,
- 46582,
- 46583,
- 46584,
- 46585,
- 46586,
- 46587,
- 46588,
- 46589,
- 46590,
- 46591,
- 46592,
- 46593,
- 46594,
- 46595,
- 46596,
- 46597,
- 46598,
- 46599,
- 46600,
- 46601,
- 46602,
- 46603,
- 46604,
- 46605,
- 46606,
- 46607,
- 46608,
- 46609,
- 46610,
- 46611,
- 46612,
- 46613,
- 46614,
- 46615,
- 46616,
- 46617,
- 46618,
- 46619,
- 46620,
- 46621,
- 46622,
- 46623,
- 46624,
- 46625,
- 46626,
- 46627,
- 46628,
- 46629,
- 46630,
- 46631,
- 46632,
- 46633,
- 46634,
- 46635,
- 46636,
- 46637,
- 46638,
- 46639,
- 46640,
- 46641,
- 46642,
- 46643,
- 46644,
- 46645,
- 46646,
- 46647,
- 46648,
- 46649,
- 46650,
- 46651,
- 46652,
- 46653,
- 46654,
- 46655,
- 46656,
- 46657,
- 46658,
- 46659,
- 46660,
- 46661,
- 46662,
- 46663,
- 46664,
- 46665,
- 46666,
- 46667,
- 46668,
- 46669,
- 46670,
- 46671,
- 46672,
- 46673,
- 46674,
- 46675,
- 46676,
- 46677,
- 46678,
- 46679,
- 46680,
- 46681,
- 46682,
- 46683,
- 46684,
- 46685,
- 46686,
- 46687,
- 46688,
- 46689,
- 46690,
- 46691,
- 46692,
- 46693,
- 46694,
- 46695,
- 46696,
- 46697,
- 46698,
- 46699,
- 46700,
- 46701,
- 46702,
- 46703,
- 46704,
- 46705,
- 46706,
- 46707,
- 46708,
- 46709,
- 46710,
- 46711,
- 46712,
- 46713,
- 46714,
- 46715,
- 46716,
- 46717,
- 46718,
- 46719,
- 46720,
- 46721,
- 46722,
- 46723,
- 46724,
- 46725,
- 46726,
- 46727,
- 46728,
- 46729,
- 46730,
- 46731,
- 46732,
- 46733,
- 46734,
- 46735,
- 46736,
- 46737,
- 46738,
- 46739,
- 46740,
- 46741,
- 46742,
- 46743,
- 46744,
- 46745,
- 46746,
- 46747,
- 46748,
- 46749,
- 46750,
- 46751,
- 46752,
- 46753,
- 46754,
- 46755,
- 46756,
- 46757,
- 46758,
- 46759,
- 46760,
- 46761,
- 46762,
- 46763,
- 46764,
- 46765,
- 46766,
- 46767,
- 46768,
- 46769,
- 46770,
- 46771,
- 46772,
- 46773,
- 46774,
- 46775,
- 46776,
- 46777,
- 46778,
- 46779,
- 46780,
- 46781,
- 46782,
- 46783,
- 46784,
- 46785,
- 46786,
- 46787,
- 46788,
- 46789,
- 46790,
- 46791,
- 46792,
- 46793,
- 46794,
- 46795,
- 46796,
- 46797,
- 46798,
- 46799,
- 46800,
- 46801,
- 46802,
- 46803,
- 46804,
- 46805,
- 46806,
- 46807,
- 46808,
- 46809,
- 46810,
- 46811,
- 46812,
- 46813,
- 46814,
- 46815,
- 46816,
- 46817,
- 46818,
- 46819,
- 46820,
- 46821,
- 46822,
- 46823,
- 46824,
- 46825,
- 46826,
- 46827,
- 46828,
- 46829,
- 46830,
- 46831,
- 46832,
- 46833,
- 46834,
- 46835,
- 46836,
- 46837,
- 46838,
- 46839,
- 46840,
- 46841,
- 46842,
- 46843,
- 46844,
- 46845,
- 46846,
- 46847,
- 46848,
- 46849,
- 46850,
- 46851,
- 46852,
- 46853,
- 46854,
- 46855,
- 46856,
- 46857,
- 46858,
- 46859,
- 46860,
- 46861,
- 46862,
- 46863,
- 46864,
- 46865,
- 46866,
- 46867,
- 46868,
- 46869,
- 46870,
- 46871,
- 46872,
- 46873,
- 46874,
- 46875,
- 46876,
- 46877,
- 46878,
- 46879,
- 46880,
- 46881,
- 46882,
- 46883,
- 46884,
- 46885,
- 46886,
- 46887,
- 46888,
- 46889,
- 46890,
- 46891,
- 46892,
- 46893,
- 46894,
- 46895,
- 46896,
- 46897,
- 46898,
- 46899,
- 46900,
- 46901,
- 46902,
- 46903,
- 46904,
- 46905,
- 46906,
- 46907,
- 46908,
- 46909,
- 46910,
- 46911,
- 46912,
- 46913,
- 46914,
- 46915,
- 46916,
- 46917,
- 46918,
- 46919,
- 46920,
- 46921,
- 46922,
- 46923,
- 46924,
- 46925,
- 46926,
- 46927,
- 46928,
- 46929,
- 46930,
- 46931,
- 46932,
- 46933,
- 46934,
- 46935,
- 46936,
- 46937,
- 46938,
- 46939,
- 46940,
- 46941,
- 46942,
- 46943,
- 46944,
- 46945,
- 46946,
- 46947,
- 46948,
- 46949,
- 46950,
- 46951,
- 46952,
- 46953,
- 46954,
- 46955,
- 46956,
- 46957,
- 46958,
- 46959,
- 46960,
- 46961,
- 46962,
- 46963,
- 46964,
- 46965,
- 46966,
- 46967,
- 46968,
- 46969,
- 46970,
- 46971,
- 46972,
- 46973,
- 46974,
- 46975,
- 46976,
- 46977,
- 46978,
- 46979,
- 46980,
- 46981,
- 46982,
- 46983,
- 46984,
- 46985,
- 46986,
- 46987,
- 46988,
- 46989,
- 46990,
- 46991,
- 46992,
- 46993,
- 46994,
- 46995,
- 46996,
- 46997,
- 46998,
- 46999,
- 47000,
- 47001,
- 47002,
- 47003,
- 47004,
- 47005,
- 47006,
- 47007,
- 47008,
- 47009,
- 47010,
- 47011,
- 47012,
- 47013,
- 47014,
- 47015,
- 47016,
- 47017,
- 47018,
- 47019,
- 47020,
- 47021,
- 47022,
- 47023,
- 47024,
- 47025,
- 47026,
- 47027,
- 47028,
- 47029,
- 47030,
- 47031,
- 47032,
- 47033,
- 47034,
- 47035,
- 47036,
- 47037,
- 47038,
- 47039,
- 47040,
- 47041,
- 47042,
- 47043,
- 47044,
- 47045,
- 47046,
- 47047,
- 47048,
- 47049,
- 47050,
- 47051,
- 47052,
- 47053,
- 47054,
- 47055,
- 47056,
- 47057,
- 47058,
- 47059,
- 47060,
- 47061,
- 47062,
- 47063,
- 47064,
- 47065,
- 47066,
- 47067,
- 47068,
- 47069,
- 47070,
- 47071,
- 47072,
- 47073,
- 47074,
- 47075,
- 47076,
- 47077,
- 47078,
- 47079,
- 47080,
- 47081,
- 47082,
- 47083,
- 47084,
- 47085,
- 47086,
- 47087,
- 47088,
- 47089,
- 47090,
- 47091,
- 47092,
- 47093,
- 47094,
- 47095,
- 47096,
- 47097,
- 47098,
- 47099,
- 47100,
- 47101,
- 47102,
- 47103,
- 47104,
- 47105,
- 47106,
- 47107,
- 47108,
- 47109,
- 47110,
- 47111,
- 47112,
- 47113,
- 47114,
- 47115,
- 47116,
- 47117,
- 47118,
- 47119,
- 47120,
- 47121,
- 47122,
- 47123,
- 47124,
- 47125,
- 47126,
- 47127,
- 47128,
- 47129,
- 47130,
- 47131,
- 47132,
- 47133,
- 47134,
- 47135,
- 47136,
- 47137,
- 47138,
- 47139,
- 47140,
- 47141,
- 47142,
- 47143,
- 47144,
- 47145,
- 47146,
- 47147,
- 47148,
- 47149,
- 47150,
- 47151,
- 47152,
- 47153,
- 47154,
- 47155,
- 47156,
- 47157,
- 47158,
- 47159,
- 47160,
- 47161,
- 47162,
- 47163,
- 47164,
- 47165,
- 47166,
- 47167,
- 47168,
- 47169,
- 47170,
- 47171,
- 47172,
- 47173,
- 47174,
- 47175,
- 47176,
- 47177,
- 47178,
- 47179,
- 47180,
- 47181,
- 47182,
- 47183,
- 47184,
- 47185,
- 47186,
- 47187,
- 47188,
- 47189,
- 47190,
- 47191,
- 47192,
- 47193,
- 47194,
- 47195,
- 47196,
- 47197,
- 47198,
- 47199,
- 47200,
- 47201,
- 47202,
- 47203,
- 47204,
- 47205,
- 47206,
- 47207,
- 47208,
- 47209,
- 47210,
- 47211,
- 47212,
- 47213,
- 47214,
- 47215,
- 47216,
- 47217,
- 47218,
- 47219,
- 47220,
- 47221,
- 47222,
- 47223,
- 47224,
- 47225,
- 47226,
- 47227,
- 47228,
- 47229,
- 47230,
- 47231,
- 47232,
- 47233,
- 47234,
- 47235,
- 47236,
- 47237,
- 47238,
- 47239,
- 47240,
- 47241,
- 47242,
- 47243,
- 47244,
- 47245,
- 47246,
- 47247,
- 47248,
- 47249,
- 47250,
- 47251,
- 47252,
- 47253,
- 47254,
- 47255,
- 47256,
- 47257,
- 47258,
- 47259,
- 47260,
- 47261,
- 47262,
- 47263,
- 47264,
- 47265,
- 47266,
- 47267,
- 47268,
- 47269,
- 47270,
- 47271,
- 47272,
- 47273,
- 47274,
- 47275,
- 47276,
- 47277,
- 47278,
- 47279,
- 47280,
- 47281,
- 47282,
- 47283,
- 47284,
- 47285,
- 47286,
- 47287,
- 47288,
- 47289,
- 47290,
- 47291,
- 47292,
- 47293,
- 47294,
- 47295,
- 47296,
- 47297,
- 47298,
- 47299,
- 47300,
- 47301,
- 47302,
- 47303,
- 47304,
- 47305,
- 47306,
- 47307,
- 47308,
- 47309,
- 47310,
- 47311,
- 47312,
- 47313,
- 47314,
- 47315,
- 47316,
- 47317,
- 47318,
- 47319,
- 47320,
- 47321,
- 47322,
- 47323,
- 47324,
- 47325,
- 47326,
- 47327,
- 47328,
- 47329,
- 47330,
- 47331,
- 47332,
- 47333,
- 47334,
- 47335,
- 47336,
- 47337,
- 47338,
- 47339,
- 47340,
- 47341,
- 47342,
- 47343,
- 47344,
- 47345,
- 47346,
- 47347,
- 47348,
- 47349,
- 47350,
- 47351,
- 47352,
- 47353,
- 47354,
- 47355,
- 47356,
- 47357,
- 47358,
- 47359,
- 47360,
- 47361,
- 47362,
- 47363,
- 47364,
- 47365,
- 47366,
- 47367,
- 47368,
- 47369,
- 47370,
- 47371,
- 47372,
- 47373,
- 47374,
- 47375,
- 47376,
- 47377,
- 47378,
- 47379,
- 47380,
- 47381,
- 47382,
- 47383,
- 47384,
- 47385,
- 47386,
- 47387,
- 47388,
- 47389,
- 47390,
- 47391,
- 47392,
- 47393,
- 47394,
- 47395,
- 47396,
- 47397,
- 47398,
- 47399,
- 47400,
- 47401,
- 47402,
- 47403,
- 47404,
- 47405,
- 47406,
- 47407,
- 47408,
- 47409,
- 47410,
- 47411,
- 47412,
- 47413,
- 47414,
- 47415,
- 47416,
- 47417,
- 47418,
- 47419,
- 47420,
- 47421,
- 47422,
- 47423,
- 47424,
- 47425,
- 47426,
- 47427,
- 47428,
- 47429,
- 47430,
- 47431,
- 47432,
- 47433,
- 47434,
- 47435,
- 47436,
- 47437,
- 47438,
- 47439,
- 47440,
- 47441,
- 47442,
- 47443,
- 47444,
- 47445,
- 47446,
- 47447,
- 47448,
- 47449,
- 47450,
- 47451,
- 47452,
- 47453,
- 47454,
- 47455,
- 47456,
- 47457,
- 47458,
- 47459,
- 47460,
- 47461,
- 47462,
- 47463,
- 47464,
- 47465,
- 47466,
- 47467,
- 47468,
- 47469,
- 47470,
- 47471,
- 47472,
- 47473,
- 47474,
- 47475,
- 47476,
- 47477,
- 47478,
- 47479,
- 47480,
- 47481,
- 47482,
- 47483,
- 47484,
- 47485,
- 47486,
- 47487,
- 47488,
- 47489,
- 47490,
- 47491,
- 47492,
- 47493,
- 47494,
- 47495,
- 47496,
- 47497,
- 47498,
- 47499,
- 47500,
- 47501,
- 47502,
- 47503,
- 47504,
- 47505,
- 47506,
- 47507,
- 47508,
- 47509,
- 47510,
- 47511,
- 47512,
- 47513,
- 47514,
- 47515,
- 47516,
- 47517,
- 47518,
- 47519,
- 47520,
- 47521,
- 47522,
- 47523,
- 47524,
- 47525,
- 47526,
- 47527,
- 47528,
- 47529,
- 47530,
- 47531,
- 47532,
- 47533,
- 47534,
- 47535,
- 47536,
- 47537,
- 47538,
- 47539,
- 47540,
- 47541,
- 47542,
- 47543,
- 47544,
- 47545,
- 47546,
- 47547,
- 47548,
- 47549,
- 47550,
- 47551,
- 47552,
- 47553,
- 47554,
- 47555,
- 47556,
- 47557,
- 47558,
- 47559,
- 47560,
- 47561,
- 47562,
- 47563,
- 47564,
- 47565,
- 47566,
- 47567,
- 47568,
- 47569,
- 47570,
- 47571,
- 47572,
- 47573,
- 47574,
- 47575,
- 47576,
- 47577,
- 47578,
- 47579,
- 47580,
- 47581,
- 47582,
- 47583,
- 47584,
- 47585,
- 47586,
- 47587,
- 47588,
- 47589,
- 47590,
- 47591,
- 47592,
- 47593,
- 47594,
- 47595,
- 47596,
- 47597,
- 47598,
- 47599,
- 47600,
- 47601,
- 47602,
- 47603,
- 47604,
- 47605,
- 47606,
- 47607,
- 47608,
- 47609,
- 47610,
- 47611,
- 47612,
- 47613,
- 47614,
- 47615,
- 47616,
- 47617,
- 47618,
- 47619,
- 47620,
- 47621,
- 47622,
- 47623,
- 47624,
- 47625,
- 47626,
- 47627,
- 47628,
- 47629,
- 47630,
- 47631,
- 47632,
- 47633,
- 47634,
- 47635,
- 47636,
- 47637,
- 47638,
- 47639,
- 47640,
- 47641,
- 47642,
- 47643,
- 47644,
- 47645,
- 47646,
- 47647,
- 47648,
- 47649,
- 47650,
- 47651,
- 47652,
- 47653,
- 47654,
- 47655,
- 47656,
- 47657,
- 47658,
- 47659,
- 47660,
- 47661,
- 47662,
- 47663,
- 47664,
- 47665,
- 47666,
- 47667,
- 47668,
- 47669,
- 47670,
- 47671,
- 47672,
- 47673,
- 47674,
- 47675,
- 47676,
- 47677,
- 47678,
- 47679,
- 47680,
- 47681,
- 47682,
- 47683,
- 47684,
- 47685,
- 47686,
- 47687,
- 47688,
- 47689,
- 47690,
- 47691,
- 47692,
- 47693,
- 47694,
- 47695,
- 47696,
- 47697,
- 47698,
- 47699,
- 47700,
- 47701,
- 47702,
- 47703,
- 47704,
- 47705,
- 47706,
- 47707,
- 47708,
- 47709,
- 47710,
- 47711,
- 47712,
- 47713,
- 47714,
- 47715,
- 47716,
- 47717,
- 47718,
- 47719,
- 47720,
- 47721,
- 47722,
- 47723,
- 47724,
- 47725,
- 47726,
- 47727,
- 47728,
- 47729,
- 47730,
- 47731,
- 47732,
- 47733,
- 47734,
- 47735,
- 47736,
- 47737,
- 47738,
- 47739,
- 47740,
- 47741,
- 47742,
- 47743,
- 47744,
- 47745,
- 47746,
- 47747,
- 47748,
- 47749,
- 47750,
- 47751,
- 47752,
- 47753,
- 47754,
- 47755,
- 47756,
- 47757,
- 47758,
- 47759,
- 47760,
- 47761,
- 47762,
- 47763,
- 47764,
- 47765,
- 47766,
- 47767,
- 47768,
- 47769,
- 47770,
- 47771,
- 47772,
- 47773,
- 47774,
- 47775,
- 47776,
- 47777,
- 47778,
- 47779,
- 47780,
- 47781,
- 47782,
- 47783,
- 47784,
- 47785,
- 47786,
- 47787,
- 47788,
- 47789,
- 47790,
- 47791,
- 47792,
- 47793,
- 47794,
- 47795,
- 47796,
- 47797,
- 47798,
- 47799,
- 47800,
- 47801,
- 47802,
- 47803,
- 47804,
- 47805,
- 47806,
- 47807,
- 47808,
- 47809,
- 47810,
- 47811,
- 47812,
- 47813,
- 47814,
- 47815,
- 47816,
- 47817,
- 47818,
- 47819,
- 47820,
- 47821,
- 47822,
- 47823,
- 47824,
- 47825,
- 47826,
- 47827,
- 47828,
- 47829,
- 47830,
- 47831,
- 47832,
- 47833,
- 47834,
- 47835,
- 47836,
- 47837,
- 47838,
- 47839,
- 47840,
- 47841,
- 47842,
- 47843,
- 47844,
- 47845,
- 47846,
- 47847,
- 47848,
- 47849,
- 47850,
- 47851,
- 47852,
- 47853,
- 47854,
- 47855,
- 47856,
- 47857,
- 47858,
- 47859,
- 47860,
- 47861,
- 47862,
- 47863,
- 47864,
- 47865,
- 47866,
- 47867,
- 47868,
- 47869,
- 47870,
- 47871,
- 47872,
- 47873,
- 47874,
- 47875,
- 47876,
- 47877,
- 47878,
- 47879,
- 47880,
- 47881,
- 47882,
- 47883,
- 47884,
- 47885,
- 47886,
- 47887,
- 47888,
- 47889,
- 47890,
- 47891,
- 47892,
- 47893,
- 47894,
- 47895,
- 47896,
- 47897,
- 47898,
- 47899,
- 47900,
- 47901,
- 47902,
- 47903,
- 47904,
- 47905,
- 47906,
- 47907,
- 47908,
- 47909,
- 47910,
- 47911,
- 47912,
- 47913,
- 47914,
- 47915,
- 47916,
- 47917,
- 47918,
- 47919,
- 47920,
- 47921,
- 47922,
- 47923,
- 47924,
- 47925,
- 47926,
- 47927,
- 47928,
- 47929,
- 47930,
- 47931,
- 47932,
- 47933,
- 47934,
- 47935,
- 47936,
- 47937,
- 47938,
- 47939,
- 47940,
- 47941,
- 47942,
- 47943,
- 47944,
- 47945,
- 47946,
- 47947,
- 47948,
- 47949,
- 47950,
- 47951,
- 47952,
- 47953,
- 47954,
- 47955,
- 47956,
- 47957,
- 47958,
- 47959,
- 47960,
- 47961,
- 47962,
- 47963,
- 47964,
- 47965,
- 47966,
- 47967,
- 47968,
- 47969,
- 47970,
- 47971,
- 47972,
- 47973,
- 47974,
- 47975,
- 47976,
- 47977,
- 47978,
- 47979,
- 47980,
- 47981,
- 47982,
- 47983,
- 47984,
- 47985,
- 47986,
- 47987,
- 47988,
- 47989,
- 47990,
- 47991,
- 47992,
- 47993,
- 47994,
- 47995,
- 47996,
- 47997,
- 47998,
- 47999,
- 48000,
- 48001,
- 48002,
- 48003,
- 48004,
- 48005,
- 48006,
- 48007,
- 48008,
- 48009,
- 48010,
- 48011,
- 48012,
- 48013,
- 48014,
- 48015,
- 48016,
- 48017,
- 48018,
- 48019,
- 48020,
- 48021,
- 48022,
- 48023,
- 48024,
- 48025,
- 48026,
- 48027,
- 48028,
- 48029,
- 48030,
- 48031,
- 48032,
- 48033,
- 48034,
- 48035,
- 48036,
- 48037,
- 48038,
- 48039,
- 48040,
- 48041,
- 48042,
- 48043,
- 48044,
- 48045,
- 48046,
- 48047,
- 48048,
- 48049,
- 48050,
- 48051,
- 48052,
- 48053,
- 48054,
- 48055,
- 48056,
- 48057,
- 48058,
- 48059,
- 48060,
- 48061,
- 48062,
- 48063,
- 48064,
- 48065,
- 48066,
- 48067,
- 48068,
- 48069,
- 48070,
- 48071,
- 48072,
- 48073,
- 48074,
- 48075,
- 48076,
- 48077,
- 48078,
- 48079,
- 48080,
- 48081,
- 48082,
- 48083,
- 48084,
- 48085,
- 48086,
- 48087,
- 48088,
- 48089,
- 48090,
- 48091,
- 48092,
- 48093,
- 48094,
- 48095,
- 48096,
- 48097,
- 48098,
- 48099,
- 48100,
- 48101,
- 48102,
- 48103,
- 48104,
- 48105,
- 48106,
- 48107,
- 48108,
- 48109,
- 48110,
- 48111,
- 48112,
- 48113,
- 48114,
- 48115,
- 48116,
- 48117,
- 48118,
- 48119,
- 48120,
- 48121,
- 48122,
- 48123,
- 48124,
- 48125,
- 48126,
- 48127,
- 48128,
- 48129,
- 48130,
- 48131,
- 48132,
- 48133,
- 48134,
- 48135,
- 48136,
- 48137,
- 48138,
- 48139,
- 48140,
- 48141,
- 48142,
- 48143,
- 48144,
- 48145,
- 48146,
- 48147,
- 48148,
- 48149,
- 48150,
- 48151,
- 48152,
- 48153,
- 48154,
- 48155,
- 48156,
- 48157,
- 48158,
- 48159,
- 48160,
- 48161,
- 48162,
- 48163,
- 48164,
- 48165,
- 48166,
- 48167,
- 48168,
- 48169,
- 48170,
- 48171,
- 48172,
- 48173,
- 48174,
- 48175,
- 48176,
- 48177,
- 48178,
- 48179,
- 48180,
- 48181,
- 48182,
- 48183,
- 48184,
- 48185,
- 48186,
- 48187,
- 48188,
- 48189,
- 48190,
- 48191,
- 48192,
- 48193,
- 48194,
- 48195,
- 48196,
- 48197,
- 48198,
- 48199,
- 48200,
- 48201,
- 48202,
- 48203,
- 48204,
- 48205,
- 48206,
- 48207,
- 48208,
- 48209,
- 48210,
- 48211,
- 48212,
- 48213,
- 48214,
- 48215,
- 48216,
- 48217,
- 48218,
- 48219,
- 48220,
- 48221,
- 48222,
- 48223,
- 48224,
- 48225,
- 48226,
- 48227,
- 48228,
- 48229,
- 48230,
- 48231,
- 48232,
- 48233,
- 48234,
- 48235,
- 48236,
- 48237,
- 48238,
- 48239,
- 48240,
- 48241,
- 48242,
- 48243,
- 48244,
- 48245,
- 48246,
- 48247,
- 48248,
- 48249,
- 48250,
- 48251,
- 48252,
- 48253,
- 48254,
- 48255,
- 48256,
- 48257,
- 48258,
- 48259,
- 48260,
- 48261,
- 48262,
- 48263,
- 48264,
- 48265,
- 48266,
- 48267,
- 48268,
- 48269,
- 48270,
- 48271,
- 48272,
- 48273,
- 48274,
- 48275,
- 48276,
- 48277,
- 48278,
- 48279,
- 48280,
- 48281,
- 48282,
- 48283,
- 48284,
- 48285,
- 48286,
- 48287,
- 48288,
- 48289,
- 48290,
- 48291,
- 48292,
- 48293,
- 48294,
- 48295,
- 48296,
- 48297,
- 48298,
- 48299,
- 48300,
- 48301,
- 48302,
- 48303,
- 48304,
- 48305,
- 48306,
- 48307,
- 48308,
- 48309,
- 48310,
- 48311,
- 48312,
- 48313,
- 48314,
- 48315,
- 48316,
- 48317,
- 48318,
- 48319,
- 48320,
- 48321,
- 48322,
- 48323,
- 48324,
- 48325,
- 48326,
- 48327,
- 48328,
- 48329,
- 48330,
- 48331,
- 48332,
- 48333,
- 48334,
- 48335,
- 48336,
- 48337,
- 48338,
- 48339,
- 48340,
- 48341,
- 48342,
- 48343,
- 48344,
- 48345,
- 48346,
- 48347,
- 48348,
- 48349,
- 48350,
- 48351,
- 48352,
- 48353,
- 48354,
- 48355,
- 48356,
- 48357,
- 48358,
- 48359,
- 48360,
- 48361,
- 48362,
- 48363,
- 48364,
- 48365,
- 48366,
- 48367,
- 48368,
- 48369,
- 48370,
- 48371,
- 48372,
- 48373,
- 48374,
- 48375,
- 48376,
- 48377,
- 48378,
- 48379,
- 48380,
- 48381,
- 48382,
- 48383,
- 48384,
- 48385,
- 48386,
- 48387,
- 48388,
- 48389,
- 48390,
- 48391,
- 48392,
- 48393,
- 48394,
- 48395,
- 48396,
- 48397,
- 48398,
- 48399,
- 48400,
- 48401,
- 48402,
- 48403,
- 48404,
- 48405,
- 48406,
- 48407,
- 48408,
- 48409,
- 48410,
- 48411,
- 48412,
- 48413,
- 48414,
- 48415,
- 48416,
- 48417,
- 48418,
- 48419,
- 48420,
- 48421,
- 48422,
- 48423,
- 48424,
- 48425,
- 48426,
- 48427,
- 48428,
- 48429,
- 48430,
- 48431,
- 48432,
- 48433,
- 48434,
- 48435,
- 48436,
- 48437,
- 48438,
- 48439,
- 48440,
- 48441,
- 48442,
- 48443,
- 48444,
- 48445,
- 48446,
- 48447,
- 48448,
- 48449,
- 48450,
- 48451,
- 48452,
- 48453,
- 48454,
- 48455,
- 48456,
- 48457,
- 48458,
- 48459,
- 48460,
- 48461,
- 48462,
- 48463,
- 48464,
- 48465,
- 48466,
- 48467,
- 48468,
- 48469,
- 48470,
- 48471,
- 48472,
- 48473,
- 48474,
- 48475,
- 48476,
- 48477,
- 48478,
- 48479,
- 48480,
- 48481,
- 48482,
- 48483,
- 48484,
- 48485,
- 48486,
- 48487,
- 48488,
- 48489,
- 48490,
- 48491,
- 48492,
- 48493,
- 48494,
- 48495,
- 48496,
- 48497,
- 48498,
- 48499,
- 48500,
- 48501,
- 48502,
- 48503,
- 48504,
- 48505,
- 48506,
- 48507,
- 48508,
- 48509,
- 48510,
- 48511,
- 48512,
- 48513,
- 48514,
- 48515,
- 48516,
- 48517,
- 48518,
- 48519,
- 48520,
- 48521,
- 48522,
- 48523,
- 48524,
- 48525,
- 48526,
- 48527,
- 48528,
- 48529,
- 48530,
- 48531,
- 48532,
- 48533,
- 48534,
- 48535,
- 48536,
- 48537,
- 48538,
- 48539,
- 48540,
- 48541,
- 48542,
- 48543,
- 48544,
- 48545,
- 48546,
- 48547,
- 48548,
- 48549,
- 48550,
- 48551,
- 48552,
- 48553,
- 48554,
- 48555,
- 48556,
- 48557,
- 48558,
- 48559,
- 48560,
- 48561,
- 48562,
- 48563,
- 48564,
- 48565,
- 48566,
- 48567,
- 48568,
- 48569,
- 48570,
- 48571,
- 48572,
- 48573,
- 48574,
- 48575,
- 48576,
- 48577,
- 48578,
- 48579,
- 48580,
- 48581,
- 48582,
- 48583,
- 48584,
- 48585,
- 48586,
- 48587,
- 48588,
- 48589,
- 48590,
- 48591,
- 48592,
- 48593,
- 48594,
- 48595,
- 48596,
- 48597,
- 48598,
- 48599,
- 48600,
- 48601,
- 48602,
- 48603,
- 48604,
- 48605,
- 48606,
- 48607,
- 48608,
- 48609,
- 48610,
- 48611,
- 48612,
- 48613,
- 48614,
- 48615,
- 48616,
- 48617,
- 48618,
- 48619,
- 48620,
- 48621,
- 48622,
- 48623,
- 48624,
- 48625,
- 48626,
- 48627,
- 48628,
- 48629,
- 48630,
- 48631,
- 48632,
- 48633,
- 48634,
- 48635,
- 48636,
- 48637,
- 48638,
- 48639,
- 48640,
- 48641,
- 48642,
- 48643,
- 48644,
- 48645,
- 48646,
- 48647,
- 48648,
- 48649,
- 48650,
- 48651,
- 48652,
- 48653,
- 48654,
- 48655,
- 48656,
- 48657,
- 48658,
- 48659,
- 48660,
- 48661,
- 48662,
- 48663,
- 48664,
- 48665,
- 48666,
- 48667,
- 48668,
- 48669,
- 48670,
- 48671,
- 48672,
- 48673,
- 48674,
- 48675,
- 48676,
- 48677,
- 48678,
- 48679,
- 48680,
- 48681,
- 48682,
- 48683,
- 48684,
- 48685,
- 48686,
- 48687,
- 48688,
- 48689,
- 48690,
- 48691,
- 48692,
- 48693,
- 48694,
- 48695,
- 48696,
- 48697,
- 48698,
- 48699,
- 48700,
- 48701,
- 48702,
- 48703,
- 48704,
- 48705,
- 48706,
- 48707,
- 48708,
- 48709,
- 48710,
- 48711,
- 48712,
- 48713,
- 48714,
- 48715,
- 48716,
- 48717,
- 48718,
- 48719,
- 48720,
- 48721,
- 48722,
- 48723,
- 48724,
- 48725,
- 48726,
- 48727,
- 48728,
- 48729,
- 48730,
- 48731,
- 48732,
- 48733,
- 48734,
- 48735,
- 48736,
- 48737,
- 48738,
- 48739,
- 48740,
- 48741,
- 48742,
- 48743,
- 48744,
- 48745,
- 48746,
- 48747,
- 48748,
- 48749,
- 48750,
- 48751,
- 48752,
- 48753,
- 48754,
- 48755,
- 48756,
- 48757,
- 48758,
- 48759,
- 48760,
- 48761,
- 48762,
- 48763,
- 48764,
- 48765,
- 48766,
- 48767,
- 48768,
- 48769,
- 48770,
- 48771,
- 48772,
- 48773,
- 48774,
- 48775,
- 48776,
- 48777,
- 48778,
- 48779,
- 48780,
- 48781,
- 48782,
- 48783,
- 48784,
- 48785,
- 48786,
- 48787,
- 48788,
- 48789,
- 48790,
- 48791,
- 48792,
- 48793,
- 48794,
- 48795,
- 48796,
- 48797,
- 48798,
- 48799,
- 48800,
- 48801,
- 48802,
- 48803,
- 48804,
- 48805,
- 48806,
- 48807,
- 48808,
- 48809,
- 48810,
- 48811,
- 48812,
- 48813,
- 48814,
- 48815,
- 48816,
- 48817,
- 48818,
- 48819,
- 48820,
- 48821,
- 48822,
- 48823,
- 48824,
- 48825,
- 48826,
- 48827,
- 48828,
- 48829,
- 48830,
- 48831,
- 48832,
- 48833,
- 48834,
- 48835,
- 48836,
- 48837,
- 48838,
- 48839,
- 48840,
- 48841,
- 48842,
- 48843,
- 48844,
- 48845,
- 48846,
- 48847,
- 48848,
- 48849,
- 48850,
- 48851,
- 48852,
- 48853,
- 48854,
- 48855,
- 48856,
- 48857,
- 48858,
- 48859,
- 48860,
- 48861,
- 48862,
- 48863,
- 48864,
- 48865,
- 48866,
- 48867,
- 48868,
- 48869,
- 48870,
- 48871,
- 48872,
- 48873,
- 48874,
- 48875,
- 48876,
- 48877,
- 48878,
- 48879,
- 48880,
- 48881,
- 48882,
- 48883,
- 48884,
- 48885,
- 48886,
- 48887,
- 48888,
- 48889,
- 48890,
- 48891,
- 48892,
- 48893,
- 48894,
- 48895,
- 48896,
- 48897,
- 48898,
- 48899,
- 48900,
- 48901,
- 48902,
- 48903,
- 48904,
- 48905,
- 48906,
- 48907,
- 48908,
- 48909,
- 48910,
- 48911,
- 48912,
- 48913,
- 48914,
- 48915,
- 48916,
- 48917,
- 48918,
- 48919,
- 48920,
- 48921,
- 48922,
- 48923,
- 48924,
- 48925,
- 48926,
- 48927,
- 48928,
- 48929,
- 48930,
- 48931,
- 48932,
- 48933,
- 48934,
- 48935,
- 48936,
- 48937,
- 48938,
- 48939,
- 48940,
- 48941,
- 48942,
- 48943,
- 48944,
- 48945,
- 48946,
- 48947,
- 48948,
- 48949,
- 48950,
- 48951,
- 48952,
- 48953,
- 48954,
- 48955,
- 48956,
- 48957,
- 48958,
- 48959,
- 48960,
- 48961,
- 48962,
- 48963,
- 48964,
- 48965,
- 48966,
- 48967,
- 48968,
- 48969,
- 48970,
- 48971,
- 48972,
- 48973,
- 48974,
- 48975,
- 48976,
- 48977,
- 48978,
- 48979,
- 48980,
- 48981,
- 48982,
- 48983,
- 48984,
- 48985,
- 48986,
- 48987,
- 48988,
- 48989,
- 48990,
- 48991,
- 48992,
- 48993,
- 48994,
- 48995,
- 48996,
- 48997,
- 48998,
- 48999,
- 49000,
- 49001,
- 49002,
- 49003,
- 49004,
- 49005,
- 49006,
- 49007,
- 49008,
- 49009,
- 49010,
- 49011,
- 49012,
- 49013,
- 49014,
- 49015,
- 49016,
- 49017,
- 49018,
- 49019,
- 49020,
- 49021,
- 49022,
- 49023,
- 49024,
- 49025,
- 49026,
- 49027,
- 49028,
- 49029,
- 49030,
- 49031,
- 49032,
- 49033,
- 49034,
- 49035,
- 49036,
- 49037,
- 49038,
- 49039,
- 49040,
- 49041,
- 49042,
- 49043,
- 49044,
- 49045,
- 49046,
- 49047,
- 49048,
- 49049,
- 49050,
- 49051,
- 49052,
- 49053,
- 49054,
- 49055,
- 49056,
- 49057,
- 49058,
- 49059,
- 49060,
- 49061,
- 49062,
- 49063,
- 49064,
- 49065,
- 49066,
- 49067,
- 49068,
- 49069,
- 49070,
- 49071,
- 49072,
- 49073,
- 49074,
- 49075,
- 49076,
- 49077,
- 49078,
- 49079,
- 49080,
- 49081,
- 49082,
- 49083,
- 49084,
- 49085,
- 49086,
- 49087,
- 49088,
- 49089,
- 49090,
- 49091,
- 49092,
- 49093,
- 49094,
- 49095,
- 49096,
- 49097,
- 49098,
- 49099,
- 49100,
- 49101,
- 49102,
- 49103,
- 49104,
- 49105,
- 49106,
- 49107,
- 49108,
- 49109,
- 49110,
- 49111,
- 49112,
- 49113,
- 49114,
- 49115,
- 49116,
- 49117,
- 49118,
- 49119,
- 49120,
- 49121,
- 49122,
- 49123,
- 49124,
- 49125,
- 49126,
- 49127,
- 49128,
- 49129,
- 49130,
- 49131,
- 49132,
- 49133,
- 49134,
- 49135,
- 49136,
- 49137,
- 49138,
- 49139,
- 49140,
- 49141,
- 49142,
- 49143,
- 49144,
- 49145,
- 49146,
- 49147,
- 49148,
- 49149,
- 49150,
- 49151,
- 49152,
- 49153,
- 49154,
- 49155,
- 49156,
- 49157,
- 49158,
- 49159,
- 49160,
- 49161,
- 49162,
- 49163,
- 49164,
- 49165,
- 49166,
- 49167,
- 49168,
- 49169,
- 49170,
- 49171,
- 49172,
- 49173,
- 49174,
- 49175,
- 49176,
- 49177,
- 49178,
- 49179,
- 49180,
- 49181,
- 49182,
- 49183,
- 49184,
- 49185,
- 49186,
- 49187,
- 49188,
- 49189,
- 49190,
- 49191,
- 49192,
- 49193,
- 49194,
- 49195,
- 49196,
- 49197,
- 49198,
- 49199,
- 49200,
- 49201,
- 49202,
- 49203,
- 49204,
- 49205,
- 49206,
- 49207,
- 49208,
- 49209,
- 49210,
- 49211,
- 49212,
- 49213,
- 49214,
- 49215,
- 49216,
- 49217,
- 49218,
- 49219,
- 49220,
- 49221,
- 49222,
- 49223,
- 49224,
- 49225,
- 49226,
- 49227,
- 49228,
- 49229,
- 49230,
- 49231,
- 49232,
- 49233,
- 49234,
- 49235,
- 49236,
- 49237,
- 49238,
- 49239,
- 49240,
- 49241,
- 49242,
- 49243,
- 49244,
- 49245,
- 49246,
- 49247,
- 49248,
- 49249,
- 49250,
- 49251,
- 49252,
- 49253,
- 49254,
- 49255,
- 49256,
- 49257,
- 49258,
- 49259,
- 49260,
- 49261,
- 49262,
- 49263,
- 49264,
- 49265,
- 49266,
- 49267,
- 49268,
- 49269,
- 49270,
- 49271,
- 49272,
- 49273,
- 49274,
- 49275,
- 49276,
- 49277,
- 49278,
- 49279,
- 49280,
- 49281,
- 49282,
- 49283,
- 49284,
- 49285,
- 49286,
- 49287,
- 49288,
- 49289,
- 49290,
- 49291,
- 49292,
- 49293,
- 49294,
- 49295,
- 49296,
- 49297,
- 49298,
- 49299,
- 49300,
- 49301,
- 49302,
- 49303,
- 49304,
- 49305,
- 49306,
- 49307,
- 49308,
- 49309,
- 49310,
- 49311,
- 49312,
- 49313,
- 49314,
- 49315,
- 49316,
- 49317,
- 49318,
- 49319,
- 49320,
- 49321,
- 49322,
- 49323,
- 49324,
- 49325,
- 49326,
- 49327,
- 49328,
- 49329,
- 49330,
- 49331,
- 49332,
- 49333,
- 49334,
- 49335,
- 49336,
- 49337,
- 49338,
- 49339,
- 49340,
- 49341,
- 49342,
- 49343,
- 49344,
- 49345,
- 49346,
- 49347,
- 49348,
- 49349,
- 49350,
- 49351,
- 49352,
- 49353,
- 49354,
- 49355,
- 49356,
- 49357,
- 49358,
- 49359,
- 49360,
- 49361,
- 49362,
- 49363,
- 49364,
- 49365,
- 49366,
- 49367,
- 49368,
- 49369,
- 49370,
- 49371,
- 49372,
- 49373,
- 49374,
- 49375,
- 49376,
- 49377,
- 49378,
- 49379,
- 49380,
- 49381,
- 49382,
- 49383,
- 49384,
- 49385,
- 49386,
- 49387,
- 49388,
- 49389,
- 49390,
- 49391,
- 49392,
- 49393,
- 49394,
- 49395,
- 49396,
- 49397,
- 49398,
- 49399,
- 49400,
- 49401,
- 49402,
- 49403,
- 49404,
- 49405,
- 49406,
- 49407,
- 49408,
- 49409,
- 49410,
- 49411,
- 49412,
- 49413,
- 49414,
- 49415,
- 49416,
- 49417,
- 49418,
- 49419,
- 49420,
- 49421,
- 49422,
- 49423,
- 49424,
- 49425,
- 49426,
- 49427,
- 49428,
- 49429,
- 49430,
- 49431,
- 49432,
- 49433,
- 49434,
- 49435,
- 49436,
- 49437,
- 49438,
- 49439,
- 49440,
- 49441,
- 49442,
- 49443,
- 49444,
- 49445,
- 49446,
- 49447,
- 49448,
- 49449,
- 49450,
- 49451,
- 49452,
- 49453,
- 49454,
- 49455,
- 49456,
- 49457,
- 49458,
- 49459,
- 49460,
- 49461,
- 49462,
- 49463,
- 49464,
- 49465,
- 49466,
- 49467,
- 49468,
- 49469,
- 49470,
- 49471,
- 49472,
- 49473,
- 49474,
- 49475,
- 49476,
- 49477,
- 49478,
- 49479,
- 49480,
- 49481,
- 49482,
- 49483,
- 49484,
- 49485,
- 49486,
- 49487,
- 49488,
- 49489,
- 49490,
- 49491,
- 49492,
- 49493,
- 49494,
- 49495,
- 49496,
- 49497,
- 49498,
- 49499,
- 49500,
- 49501,
- 49502,
- 49503,
- 49504,
- 49505,
- 49506,
- 49507,
- 49508,
- 49509,
- 49510,
- 49511,
- 49512,
- 49513,
- 49514,
- 49515,
- 49516,
- 49517,
- 49518,
- 49519,
- 49520,
- 49521,
- 49522,
- 49523,
- 49524,
- 49525,
- 49526,
- 49527,
- 49528,
- 49529,
- 49530,
- 49531,
- 49532,
- 49533,
- 49534,
- 49535,
- 49536,
- 49537,
- 49538,
- 49539,
- 49540,
- 49541,
- 49542,
- 49543,
- 49544,
- 49545,
- 49546,
- 49547,
- 49548,
- 49549,
- 49550,
- 49551,
- 49552,
- 49553,
- 49554,
- 49555,
- 49556,
- 49557,
- 49558,
- 49559,
- 49560,
- 49561,
- 49562,
- 49563,
- 49564,
- 49565,
- 49566,
- 49567,
- 49568,
- 49569,
- 49570,
- 49571,
- 49572,
- 49573,
- 49574,
- 49575,
- 49576,
- 49577,
- 49578,
- 49579,
- 49580,
- 49581,
- 49582,
- 49583,
- 49584,
- 49585,
- 49586,
- 49587,
- 49588,
- 49589,
- 49590,
- 49591,
- 49592,
- 49593,
- 49594,
- 49595,
- 49596,
- 49597,
- 49598,
- 49599,
- 49600,
- 49601,
- 49602,
- 49603,
- 49604,
- 49605,
- 49606,
- 49607,
- 49608,
- 49609,
- 49610,
- 49611,
- 49612,
- 49613,
- 49614,
- 49615,
- 49616,
- 49617,
- 49618,
- 49619,
- 49620,
- 49621,
- 49622,
- 49623,
- 49624,
- 49625,
- 49626,
- 49627,
- 49628,
- 49629,
- 49630,
- 49631,
- 49632,
- 49633,
- 49634,
- 49635,
- 49636,
- 49637,
- 49638,
- 49639,
- 49640,
- 49641,
- 49642,
- 49643,
- 49644,
- 49645,
- 49646,
- 49647,
- 49648,
- 49649,
- 49650,
- 49651,
- 49652,
- 49653,
- 49654,
- 49655,
- 49656,
- 49657,
- 49658,
- 49659,
- 49660,
- 49661,
- 49662,
- 49663,
- 49664,
- 49665,
- 49666,
- 49667,
- 49668,
- 49669,
- 49670,
- 49671,
- 49672,
- 49673,
- 49674,
- 49675,
- 49676,
- 49677,
- 49678,
- 49679,
- 49680,
- 49681,
- 49682,
- 49683,
- 49684,
- 49685,
- 49686,
- 49687,
- 49688,
- 49689,
- 49690,
- 49691,
- 49692,
- 49693,
- 49694,
- 49695,
- 49696,
- 49697,
- 49698,
- 49699,
- 49700,
- 49701,
- 49702,
- 49703,
- 49704,
- 49705,
- 49706,
- 49707,
- 49708,
- 49709,
- 49710,
- 49711,
- 49712,
- 49713,
- 49714,
- 49715,
- 49716,
- 49717,
- 49718,
- 49719,
- 49720,
- 49721,
- 49722,
- 49723,
- 49724,
- 49725,
- 49726,
- 49727,
- 49728,
- 49729,
- 49730,
- 49731,
- 49732,
- 49733,
- 49734,
- 49735,
- 49736,
- 49737,
- 49738,
- 49739,
- 49740,
- 49741,
- 49742,
- 49743,
- 49744,
- 49745,
- 49746,
- 49747,
- 49748,
- 49749,
- 49750,
- 49751,
- 49752,
- 49753,
- 49754,
- 49755,
- 49756,
- 49757,
- 49758,
- 49759,
- 49760,
- 49761,
- 49762,
- 49763,
- 49764,
- 49765,
- 49766,
- 49767,
- 49768,
- 49769,
- 49770,
- 49771,
- 49772,
- 49773,
- 49774,
- 49775,
- 49776,
- 49777,
- 49778,
- 49779,
- 49780,
- 49781,
- 49782,
- 49783,
- 49784,
- 49785,
- 49786,
- 49787,
- 49788,
- 49789,
- 49790,
- 49791,
- 49792,
- 49793,
- 49794,
- 49795,
- 49796,
- 49797,
- 49798,
- 49799,
- 49800,
- 49801,
- 49802,
- 49803,
- 49804,
- 49805,
- 49806,
- 49807,
- 49808,
- 49809,
- 49810,
- 49811,
- 49812,
- 49813,
- 49814,
- 49815,
- 49816,
- 49817,
- 49818,
- 49819,
- 49820,
- 49821,
- 49822,
- 49823,
- 49824,
- 49825,
- 49826,
- 49827,
- 49828,
- 49829,
- 49830,
- 49831,
- 49832,
- 49833,
- 49834,
- 49835,
- 49836,
- 49837,
- 49838,
- 49839,
- 49840,
- 49841,
- 49842,
- 49843,
- 49844,
- 49845,
- 49846,
- 49847,
- 49848,
- 49849,
- 49850,
- 49851,
- 49852,
- 49853,
- 49854,
- 49855,
- 49856,
- 49857,
- 49858,
- 49859,
- 49860,
- 49861,
- 49862,
- 49863,
- 49864,
- 49865,
- 49866,
- 49867,
- 49868,
- 49869,
- 49870,
- 49871,
- 49872,
- 49873,
- 49874,
- 49875,
- 49876,
- 49877,
- 49878,
- 49879,
- 49880,
- 49881,
- 49882,
- 49883,
- 49884,
- 49885,
- 49886,
- 49887,
- 49888,
- 49889,
- 49890,
- 49891,
- 49892,
- 49893,
- 49894,
- 49895,
- 49896,
- 49897,
- 49898,
- 49899,
- 49900,
- 49901,
- 49902,
- 49903,
- 49904,
- 49905,
- 49906,
- 49907,
- 49908,
- 49909,
- 49910,
- 49911,
- 49912,
- 49913,
- 49914,
- 49915,
- 49916,
- 49917,
- 49918,
- 49919,
- 49920,
- 49921,
- 49922,
- 49923,
- 49924,
- 49925,
- 49926,
- 49927,
- 49928,
- 49929,
- 49930,
- 49931,
- 49932,
- 49933,
- 49934,
- 49935,
- 49936,
- 49937,
- 49938,
- 49939,
- 49940,
- 49941,
- 49942,
- 49943,
- 49944,
- 49945,
- 49946,
- 49947,
- 49948,
- 49949,
- 49950,
- 49951,
- 49952,
- 49953,
- 49954,
- 49955,
- 49956,
- 49957,
- 49958,
- 49959,
- 49960,
- 49961,
- 49962,
- 49963,
- 49964,
- 49965,
- 49966,
- 49967,
- 49968,
- 49969,
- 49970,
- 49971,
- 49972,
- 49973,
- 49974,
- 49975,
- 49976,
- 49977,
- 49978,
- 49979,
- 49980,
- 49981,
- 49982,
- 49983,
- 49984,
- 49985,
- 49986,
- 49987,
- 49988,
- 49989,
- 49990,
- 49991,
- 49992,
- 49993,
- 49994,
- 49995,
- 49996,
- 49997,
- 49998,
- 49999,
- 50000,
- 50001,
- 50002,
- 50003,
- 50004,
- 50005,
- 50006,
- 50007,
- 50008,
- 50009,
- 50010,
- 50011,
- 50012,
- 50013,
- 50014,
- 50015,
- 50016,
- 50017,
- 50018,
- 50019,
- 50020,
- 50021,
- 50022,
- 50023,
- 50024,
- 50025,
- 50026,
- 50027,
- 50028,
- 50029,
- 50030,
- 50031,
- 50032,
- 50033,
- 50034,
- 50035,
- 50036,
- 50037,
- 50038,
- 50039,
- 50040,
- 50041,
- 50042,
- 50043,
- 50044,
- 50045,
- 50046,
- 50047,
- 50048,
- 50049,
- 50050,
- 50051,
- 50052,
- 50053,
- 50054,
- 50055,
- 50056,
- 50057,
- 50058,
- 50059,
- 50060,
- 50061,
- 50062,
- 50063,
- 50064,
- 50065,
- 50066,
- 50067,
- 50068,
- 50069,
- 50070,
- 50071,
- 50072,
- 50073,
- 50074,
- 50075,
- 50076,
- 50077,
- 50078,
- 50079,
- 50080,
- 50081,
- 50082,
- 50083,
- 50084,
- 50085,
- 50086,
- 50087,
- 50088,
- 50089,
- 50090,
- 50091,
- 50092,
- 50093,
- 50094,
- 50095,
- 50096,
- 50097,
- 50098,
- 50099,
- 50100,
- 50101,
- 50102,
- 50103,
- 50104,
- 50105,
- 50106,
- 50107,
- 50108,
- 50109,
- 50110,
- 50111,
- 50112,
- 50113,
- 50114,
- 50115,
- 50116,
- 50117,
- 50118,
- 50119,
- 50120,
- 50121,
- 50122,
- 50123,
- 50124,
- 50125,
- 50126,
- 50127,
- 50128,
- 50129,
- 50130,
- 50131,
- 50132,
- 50133,
- 50134,
- 50135,
- 50136,
- 50137,
- 50138,
- 50139,
- 50140,
- 50141,
- 50142,
- 50143,
- 50144,
- 50145,
- 50146,
- 50147,
- 50148,
- 50149,
- 50150,
- 50151,
- 50152,
- 50153,
- 50154,
- 50155,
- 50156,
- 50157,
- 50158,
- 50159,
- 50160,
- 50161,
- 50162,
- 50163,
- 50164,
- 50165,
- 50166,
- 50167,
- 50168,
- 50169,
- 50170,
- 50171,
- 50172,
- 50173,
- 50174,
- 50175,
- 50176,
- 50177,
- 50178,
- 50179,
- 50180,
- 50181,
- 50182,
- 50183,
- 50184,
- 50185,
- 50186,
- 50187,
- 50188,
- 50189,
- 50190,
- 50191,
- 50192,
- 50193,
- 50194,
- 50195,
- 50196,
- 50197,
- 50198,
- 50199,
- 50200,
- 50201,
- 50202,
- 50203,
- 50204,
- 50205,
- 50206,
- 50207,
- 50208,
- 50209,
- 50210,
- 50211,
- 50212,
- 50213,
- 50214,
- 50215,
- 50216,
- 50217,
- 50218,
- 50219,
- 50220,
- 50221,
- 50222,
- 50223,
- 50224,
- 50225,
- 50226,
- 50227,
- 50228,
- 50229,
- 50230,
- 50231,
- 50232,
- 50233,
- 50234,
- 50235,
- 50236,
- 50237,
- 50238,
- 50239,
- 50240,
- 50241,
- 50242,
- 50243,
- 50244,
- 50245,
- 50246,
- 50247,
- 50248,
- 50249,
- 50250,
- 50251,
- 50252,
- 50253,
- 50254,
- 50255,
- 50256,
- 50257,
- 50258,
- 50259,
- 50260,
- 50261,
- 50262,
- 50263,
- 50264,
- 50265,
- 50266,
- 50267,
- 50268,
- 50269,
- 50270,
- 50271,
- 50272,
- 50273,
- 50274,
- 50275,
- 50276,
- 50277,
- 50278,
- 50279,
- 50280,
- 50281,
- 50282,
- 50283,
- 50284,
- 50285,
- 50286,
- 50287,
- 50288,
- 50289,
- 50290,
- 50291,
- 50292,
- 50293,
- 50294,
- 50295,
- 50296,
- 50297,
- 50298,
- 50299,
- 50300,
- 50301,
- 50302,
- 50303,
- 50304,
- 50305,
- 50306,
- 50307,
- 50308,
- 50309,
- 50310,
- 50311,
- 50312,
- 50313,
- 50314,
- 50315,
- 50316,
- 50317,
- 50318,
- 50319,
- 50320,
- 50321,
- 50322,
- 50323,
- 50324,
- 50325,
- 50326,
- 50327,
- 50328,
- 50329,
- 50330,
- 50331,
- 50332,
- 50333,
- 50334,
- 50335,
- 50336,
- 50337,
- 50338,
- 50339,
- 50340,
- 50341,
- 50342,
- 50343,
- 50344,
- 50345,
- 50346,
- 50347,
- 50348,
- 50349,
- 50350,
- 50351,
- 50352,
- 50353,
- 50354,
- 50355,
- 50356,
- 50357,
- 50358,
- 50359,
- 50360,
- 50361,
- 50362,
- 50363,
- 50364,
- 50365,
- 50366,
- 50367,
- 50368,
- 50369,
- 50370,
- 50371,
- 50372,
- 50373,
- 50374,
- 50375,
- 50376,
- 50377,
- 50378,
- 50379,
- 50380,
- 50381,
- 50382,
- 50383,
- 50384,
- 50385,
- 50386,
- 50387,
- 50388,
- 50389,
- 50390,
- 50391,
- 50392,
- 50393,
- 50394,
- 50395,
- 50396,
- 50397,
- 50398,
- 50399,
- 50400,
- 50401,
- 50402,
- 50403,
- 50404,
- 50405,
- 50406,
- 50407,
- 50408,
- 50409,
- 50410,
- 50411,
- 50412,
- 50413,
- 50414,
- 50415,
- 50416,
- 50417,
- 50418,
- 50419,
- 50420,
- 50421,
- 50422,
- 50423,
- 50424,
- 50425,
- 50426,
- 50427,
- 50428,
- 50429,
- 50430,
- 50431,
- 50432,
- 50433,
- 50434,
- 50435,
- 50436,
- 50437,
- 50438,
- 50439,
- 50440,
- 50441,
- 50442,
- 50443,
- 50444,
- 50445,
- 50446,
- 50447,
- 50448,
- 50449,
- 50450,
- 50451,
- 50452,
- 50453,
- 50454,
- 50455,
- 50456,
- 50457,
- 50458,
- 50459,
- 50460,
- 50461,
- 50462,
- 50463,
- 50464,
- 50465,
- 50466,
- 50467,
- 50468,
- 50469,
- 50470,
- 50471,
- 50472,
- 50473,
- 50474,
- 50475,
- 50476,
- 50477,
- 50478,
- 50479,
- 50480,
- 50481,
- 50482,
- 50483,
- 50484,
- 50485,
- 50486,
- 50487,
- 50488,
- 50489,
- 50490,
- 50491,
- 50492,
- 50493,
- 50494,
- 50495,
- 50496,
- 50497,
- 50498,
- 50499,
- 50500,
- 50501,
- 50502,
- 50503,
- 50504,
- 50505,
- 50506,
- 50507,
- 50508,
- 50509,
- 50510,
- 50511,
- 50512,
- 50513,
- 50514,
- 50515,
- 50516,
- 50517,
- 50518,
- 50519,
- 50520,
- 50521,
- 50522,
- 50523,
- 50524,
- 50525,
- 50526,
- 50527,
- 50528,
- 50529,
- 50530,
- 50531,
- 50532,
- 50533,
- 50534,
- 50535,
- 50536,
- 50537,
- 50538,
- 50539,
- 50540,
- 50541,
- 50542,
- 50543,
- 50544,
- 50545,
- 50546,
- 50547,
- 50548,
- 50549,
- 50550,
- 50551,
- 50552,
- 50553,
- 50554,
- 50555,
- 50556,
- 50557,
- 50558,
- 50559,
- 50560,
- 50561,
- 50562,
- 50563,
- 50564,
- 50565,
- 50566,
- 50567,
- 50568,
- 50569,
- 50570,
- 50571,
- 50572,
- 50573,
- 50574,
- 50575,
- 50576,
- 50577,
- 50578,
- 50579,
- 50580,
- 50581,
- 50582,
- 50583,
- 50584,
- 50585,
- 50586,
- 50587,
- 50588,
- 50589,
- 50590,
- 50591,
- 50592,
- 50593,
- 50594,
- 50595,
- 50596,
- 50597,
- 50598,
- 50599,
- 50600,
- 50601,
- 50602,
- 50603,
- 50604,
- 50605,
- 50606,
- 50607,
- 50608,
- 50609,
- 50610,
- 50611,
- 50612,
- 50613,
- 50614,
- 50615,
- 50616,
- 50617,
- 50618,
- 50619,
- 50620,
- 50621,
- 50622,
- 50623,
- 50624,
- 50625,
- 50626,
- 50627,
- 50628,
- 50629,
- 50630,
- 50631,
- 50632,
- 50633,
- 50634,
- 50635,
- 50636,
- 50637,
- 50638,
- 50639,
- 50640,
- 50641,
- 50642,
- 50643,
- 50644,
- 50645,
- 50646,
- 50647,
- 50648,
- 50649,
- 50650,
- 50651,
- 50652,
- 50653,
- 50654,
- 50655,
- 50656,
- 50657,
- 50658,
- 50659,
- 50660,
- 50661,
- 50662,
- 50663,
- 50664,
- 50665,
- 50666,
- 50667,
- 50668,
- 50669,
- 50670,
- 50671,
- 50672,
- 50673,
- 50674,
- 50675,
- 50676,
- 50677,
- 50678,
- 50679,
- 50680,
- 50681,
- 50682,
- 50683,
- 50684,
- 50685,
- 50686,
- 50687,
- 50688,
- 50689,
- 50690,
- 50691,
- 50692,
- 50693,
- 50694,
- 50695,
- 50696,
- 50697,
- 50698,
- 50699,
- 50700,
- 50701,
- 50702,
- 50703,
- 50704,
- 50705,
- 50706,
- 50707,
- 50708,
- 50709,
- 50710,
- 50711,
- 50712,
- 50713,
- 50714,
- 50715,
- 50716,
- 50717,
- 50718,
- 50719,
- 50720,
- 50721,
- 50722,
- 50723,
- 50724,
- 50725,
- 50726,
- 50727,
- 50728,
- 50729,
- 50730,
- 50731,
- 50732,
- 50733,
- 50734,
- 50735,
- 50736,
- 50737,
- 50738,
- 50739,
- 50740,
- 50741,
- 50742,
- 50743,
- 50744,
- 50745,
- 50746,
- 50747,
- 50748,
- 50749,
- 50750,
- 50751,
- 50752,
- 50753,
- 50754,
- 50755,
- 50756,
- 50757,
- 50758,
- 50759,
- 50760,
- 50761,
- 50762,
- 50763,
- 50764,
- 50765,
- 50766,
- 50767,
- 50768,
- 50769,
- 50770,
- 50771,
- 50772,
- 50773,
- 50774,
- 50775,
- 50776,
- 50777,
- 50778,
- 50779,
- 50780,
- 50781,
- 50782,
- 50783,
- 50784,
- 50785,
- 50786,
- 50787,
- 50788,
- 50789,
- 50790,
- 50791,
- 50792,
- 50793,
- 50794,
- 50795,
- 50796,
- 50797,
- 50798,
- 50799,
- 50800,
- 50801,
- 50802,
- 50803,
- 50804,
- 50805,
- 50806,
- 50807,
- 50808,
- 50809,
- 50810,
- 50811,
- 50812,
- 50813,
- 50814,
- 50815,
- 50816,
- 50817,
- 50818,
- 50819,
- 50820,
- 50821,
- 50822,
- 50823,
- 50824,
- 50825,
- 50826,
- 50827,
- 50828,
- 50829,
- 50830,
- 50831,
- 50832,
- 50833,
- 50834,
- 50835,
- 50836,
- 50837,
- 50838,
- 50839,
- 50840,
- 50841,
- 50842,
- 50843,
- 50844,
- 50845,
- 50846,
- 50847,
- 50848,
- 50849,
- 50850,
- 50851,
- 50852,
- 50853,
- 50854,
- 50855,
- 50856,
- 50857,
- 50858,
- 50859,
- 50860,
- 50861,
- 50862,
- 50863,
- 50864,
- 50865,
- 50866,
- 50867,
- 50868,
- 50869,
- 50870,
- 50871,
- 50872,
- 50873,
- 50874,
- 50875,
- 50876,
- 50877,
- 50878,
- 50879,
- 50880,
- 50881,
- 50882,
- 50883,
- 50884,
- 50885,
- 50886,
- 50887,
- 50888,
- 50889,
- 50890,
- 50891,
- 50892,
- 50893,
- 50894,
- 50895,
- 50896,
- 50897,
- 50898,
- 50899,
- 50900,
- 50901,
- 50902,
- 50903,
- 50904,
- 50905,
- 50906,
- 50907,
- 50908,
- 50909,
- 50910,
- 50911,
- 50912,
- 50913,
- 50914,
- 50915,
- 50916,
- 50917,
- 50918,
- 50919,
- 50920,
- 50921,
- 50922,
- 50923,
- 50924,
- 50925,
- 50926,
- 50927,
- 50928,
- 50929,
- 50930,
- 50931,
- 50932,
- 50933,
- 50934,
- 50935,
- 50936,
- 50937,
- 50938,
- 50939,
- 50940,
- 50941,
- 50942,
- 50943,
- 50944,
- 50945,
- 50946,
- 50947,
- 50948,
- 50949,
- 50950,
- 50951,
- 50952,
- 50953,
- 50954,
- 50955,
- 50956,
- 50957,
- 50958,
- 50959,
- 50960,
- 50961,
- 50962,
- 50963,
- 50964,
- 50965,
- 50966,
- 50967,
- 50968,
- 50969,
- 50970,
- 50971,
- 50972,
- 50973,
- 50974,
- 50975,
- 50976,
- 50977,
- 50978,
- 50979,
- 50980,
- 50981,
- 50982,
- 50983,
- 50984,
- 50985,
- 50986,
- 50987,
- 50988,
- 50989,
- 50990,
- 50991,
- 50992,
- 50993,
- 50994,
- 50995,
- 50996,
- 50997,
- 50998,
- 50999,
- 51000,
- 51001,
- 51002,
- 51003,
- 51004,
- 51005,
- 51006,
- 51007,
- 51008,
- 51009,
- 51010,
- 51011,
- 51012,
- 51013,
- 51014,
- 51015,
- 51016,
- 51017,
- 51018,
- 51019,
- 51020,
- 51021,
- 51022,
- 51023,
- 51024,
- 51025,
- 51026,
- 51027,
- 51028,
- 51029,
- 51030,
- 51031,
- 51032,
- 51033,
- 51034,
- 51035,
- 51036,
- 51037,
- 51038,
- 51039,
- 51040,
- 51041,
- 51042,
- 51043,
- 51044,
- 51045,
- 51046,
- 51047,
- 51048,
- 51049,
- 51050,
- 51051,
- 51052,
- 51053,
- 51054,
- 51055,
- 51056,
- 51057,
- 51058,
- 51059,
- 51060,
- 51061,
- 51062,
- 51063,
- 51064,
- 51065,
- 51066,
- 51067,
- 51068,
- 51069,
- 51070,
- 51071,
- 51072,
- 51073,
- 51074,
- 51075,
- 51076,
- 51077,
- 51078,
- 51079,
- 51080,
- 51081,
- 51082,
- 51083,
- 51084,
- 51085,
- 51086,
- 51087,
- 51088,
- 51089,
- 51090,
- 51091,
- 51092,
- 51093,
- 51094,
- 51095,
- 51096,
- 51097,
- 51098,
- 51099,
- 51100,
- 51101,
- 51102,
- 51103,
- 51104,
- 51105,
- 51106,
- 51107,
- 51108,
- 51109,
- 51110,
- 51111,
- 51112,
- 51113,
- 51114,
- 51115,
- 51116,
- 51117,
- 51118,
- 51119,
- 51120,
- 51121,
- 51122,
- 51123,
- 51124,
- 51125,
- 51126,
- 51127,
- 51128,
- 51129,
- 51130,
- 51131,
- 51132,
- 51133,
- 51134,
- 51135,
- 51136,
- 51137,
- 51138,
- 51139,
- 51140,
- 51141,
- 51142,
- 51143,
- 51144,
- 51145,
- 51146,
- 51147,
- 51148,
- 51149,
- 51150,
- 51151,
- 51152,
- 51153,
- 51154,
- 51155,
- 51156,
- 51157,
- 51158,
- 51159,
- 51160,
- 51161,
- 51162,
- 51163,
- 51164,
- 51165,
- 51166,
- 51167,
- 51168,
- 51169,
- 51170,
- 51171,
- 51172,
- 51173,
- 51174,
- 51175,
- 51176,
- 51177,
- 51178,
- 51179,
- 51180,
- 51181,
- 51182,
- 51183,
- 51184,
- 51185,
- 51186,
- 51187,
- 51188,
- 51189,
- 51190,
- 51191,
- 51192,
- 51193,
- 51194,
- 51195,
- 51196,
- 51197,
- 51198,
- 51199,
- 51200,
- 51201,
- 51202,
- 51203,
- 51204,
- 51205,
- 51206,
- 51207,
- 51208,
- 51209,
- 51210,
- 51211,
- 51212,
- 51213,
- 51214,
- 51215,
- 51216,
- 51217,
- 51218,
- 51219,
- 51220,
- 51221,
- 51222,
- 51223,
- 51224,
- 51225,
- 51226,
- 51227,
- 51228,
- 51229,
- 51230,
- 51231,
- 51232,
- 51233,
- 51234,
- 51235,
- 51236,
- 51237,
- 51238,
- 51239,
- 51240,
- 51241,
- 51242,
- 51243,
- 51244,
- 51245,
- 51246,
- 51247,
- 51248,
- 51249,
- 51250,
- 51251,
- 51252,
- 51253,
- 51254,
- 51255,
- 51256,
- 51257,
- 51258,
- 51259,
- 51260,
- 51261,
- 51262,
- 51263,
- 51264,
- 51265,
- 51266,
- 51267,
- 51268,
- 51269,
- 51270,
- 51271,
- 51272,
- 51273,
- 51274,
- 51275,
- 51276,
- 51277,
- 51278,
- 51279,
- 51280,
- 51281,
- 51282,
- 51283,
- 51284,
- 51285,
- 51286,
- 51287,
- 51288,
- 51289,
- 51290,
- 51291,
- 51292,
- 51293,
- 51294,
- 51295,
- 51296,
- 51297,
- 51298,
- 51299,
- 51300,
- 51301,
- 51302,
- 51303,
- 51304,
- 51305,
- 51306,
- 51307,
- 51308,
- 51309,
- 51310,
- 51311,
- 51312,
- 51313,
- 51314,
- 51315,
- 51316,
- 51317,
- 51318,
- 51319,
- 51320,
- 51321,
- 51322,
- 51323,
- 51324,
- 51325,
- 51326,
- 51327,
- 51328,
- 51329,
- 51330,
- 51331,
- 51332,
- 51333,
- 51334,
- 51335,
- 51336,
- 51337,
- 51338,
- 51339,
- 51340,
- 51341,
- 51342,
- 51343,
- 51344,
- 51345,
- 51346,
- 51347,
- 51348,
- 51349,
- 51350,
- 51351,
- 51352,
- 51353,
- 51354,
- 51355,
- 51356,
- 51357,
- 51358,
- 51359,
- 51360,
- 51361,
- 51362,
- 51363,
- 51364,
- 51365,
- 51366,
- 51367,
- 51368,
- 51369,
- 51370,
- 51371,
- 51372,
- 51373,
- 51374,
- 51375,
- 51376,
- 51377,
- 51378,
- 51379,
- 51380,
- 51381,
- 51382,
- 51383,
- 51384,
- 51385,
- 51386,
- 51387,
- 51388,
- 51389,
- 51390,
- 51391,
- 51392,
- 51393,
- 51394,
- 51395,
- 51396,
- 51397,
- 51398,
- 51399,
- 51400,
- 51401,
- 51402,
- 51403,
- 51404,
- 51405,
- 51406,
- 51407,
- 51408,
- 51409,
- 51410,
- 51411,
- 51412,
- 51413,
- 51414,
- 51415,
- 51416,
- 51417,
- 51418,
- 51419,
- 51420,
- 51421,
- 51422,
- 51423,
- 51424,
- 51425,
- 51426,
- 51427,
- 51428,
- 51429,
- 51430,
- 51431,
- 51432,
- 51433,
- 51434,
- 51435,
- 51436,
- 51437,
- 51438,
- 51439,
- 51440,
- 51441,
- 51442,
- 51443,
- 51444,
- 51445,
- 51446,
- 51447,
- 51448,
- 51449,
- 51450,
- 51451,
- 51452,
- 51453,
- 51454,
- 51455,
- 51456,
- 51457,
- 51458,
- 51459,
- 51460,
- 51461,
- 51462,
- 51463,
- 51464,
- 51465,
- 51466,
- 51467,
- 51468,
- 51469,
- 51470,
- 51471,
- 51472,
- 51473,
- 51474,
- 51475,
- 51476,
- 51477,
- 51478,
- 51479,
- 51480,
- 51481,
- 51482,
- 51483,
- 51484,
- 51485,
- 51486,
- 51487,
- 51488,
- 51489,
- 51490,
- 51491,
- 51492,
- 51493,
- 51494,
- 51495,
- 51496,
- 51497,
- 51498,
- 51499,
- 51500,
- 51501,
- 51502,
- 51503,
- 51504,
- 51505,
- 51506,
- 51507,
- 51508,
- 51509,
- 51510,
- 51511,
- 51512,
- 51513,
- 51514,
- 51515,
- 51516,
- 51517,
- 51518,
- 51519,
- 51520,
- 51521,
- 51522,
- 51523,
- 51524,
- 51525,
- 51526,
- 51527,
- 51528,
- 51529,
- 51530,
- 51531,
- 51532,
- 51533,
- 51534,
- 51535,
- 51536,
- 51537,
- 51538,
- 51539,
- 51540,
- 51541,
- 51542,
- 51543,
- 51544,
- 51545,
- 51546,
- 51547,
- 51548,
- 51549,
- 51550,
- 51551,
- 51552,
- 51553,
- 51554,
- 51555,
- 51556,
- 51557,
- 51558,
- 51559,
- 51560,
- 51561,
- 51562,
- 51563,
- 51564,
- 51565,
- 51566,
- 51567,
- 51568,
- 51569,
- 51570,
- 51571,
- 51572,
- 51573,
- 51574,
- 51575,
- 51576,
- 51577,
- 51578,
- 51579,
- 51580,
- 51581,
- 51582,
- 51583,
- 51584,
- 51585,
- 51586,
- 51587,
- 51588,
- 51589,
- 51590,
- 51591,
- 51592,
- 51593,
- 51594,
- 51595,
- 51596,
- 51597,
- 51598,
- 51599,
- 51600,
- 51601,
- 51602,
- 51603,
- 51604,
- 51605,
- 51606,
- 51607,
- 51608,
- 51609,
- 51610,
- 51611,
- 51612,
- 51613,
- 51614,
- 51615,
- 51616,
- 51617,
- 51618,
- 51619,
- 51620,
- 51621,
- 51622,
- 51623,
- 51624,
- 51625,
- 51626,
- 51627,
- 51628,
- 51629,
- 51630,
- 51631,
- 51632,
- 51633,
- 51634,
- 51635,
- 51636,
- 51637,
- 51638,
- 51639,
- 51640,
- 51641,
- 51642,
- 51643,
- 51644,
- 51645,
- 51646,
- 51647,
- 51648,
- 51649,
- 51650,
- 51651,
- 51652,
- 51653,
- 51654,
- 51655,
- 51656,
- 51657,
- 51658,
- 51659,
- 51660,
- 51661,
- 51662,
- 51663,
- 51664,
- 51665,
- 51666,
- 51667,
- 51668,
- 51669,
- 51670,
- 51671,
- 51672,
- 51673,
- 51674,
- 51675,
- 51676,
- 51677,
- 51678,
- 51679,
- 51680,
- 51681,
- 51682,
- 51683,
- 51684,
- 51685,
- 51686,
- 51687,
- 51688,
- 51689,
- 51690,
- 51691,
- 51692,
- 51693,
- 51694,
- 51695,
- 51696,
- 51697,
- 51698,
- 51699,
- 51700,
- 51701,
- 51702,
- 51703,
- 51704,
- 51705,
- 51706,
- 51707,
- 51708,
- 51709,
- 51710,
- 51711,
- 51712,
- 51713,
- 51714,
- 51715,
- 51716,
- 51717,
- 51718,
- 51719,
- 51720,
- 51721,
- 51722,
- 51723,
- 51724,
- 51725,
- 51726,
- 51727,
- 51728,
- 51729,
- 51730,
- 51731,
- 51732,
- 51733,
- 51734,
- 51735,
- 51736,
- 51737,
- 51738,
- 51739,
- 51740,
- 51741,
- 51742,
- 51743,
- 51744,
- 51745,
- 51746,
- 51747,
- 51748,
- 51749,
- 51750,
- 51751,
- 51752,
- 51753,
- 51754,
- 51755,
- 51756,
- 51757,
- 51758,
- 51759,
- 51760,
- 51761,
- 51762,
- 51763,
- 51764,
- 51765,
- 51766,
- 51767,
- 51768,
- 51769,
- 51770,
- 51771,
- 51772,
- 51773,
- 51774,
- 51775,
- 51776,
- 51777,
- 51778,
- 51779,
- 51780,
- 51781,
- 51782,
- 51783,
- 51784,
- 51785,
- 51786,
- 51787,
- 51788,
- 51789,
- 51790,
- 51791,
- 51792,
- 51793,
- 51794,
- 51795,
- 51796,
- 51797,
- 51798,
- 51799,
- 51800,
- 51801,
- 51802,
- 51803,
- 51804,
- 51805,
- 51806,
- 51807,
- 51808,
- 51809,
- 51810,
- 51811,
- 51812,
- 51813,
- 51814,
- 51815,
- 51816,
- 51817,
- 51818,
- 51819,
- 51820,
- 51821,
- 51822,
- 51823,
- 51824,
- 51825,
- 51826,
- 51827,
- 51828,
- 51829,
- 51830,
- 51831,
- 51832,
- 51833,
- 51834,
- 51835,
- 51836,
- 51837,
- 51838,
- 51839,
- 51840,
- 51841,
- 51842,
- 51843,
- 51844,
- 51845,
- 51846,
- 51847,
- 51848,
- 51849,
- 51850,
- 51851,
- 51852,
- 51853,
- 51854,
- 51855,
- 51856,
- 51857,
- 51858,
- 51859,
- 51860,
- 51861,
- 51862,
- 51863,
- 51864,
- 51865,
- 51866,
- 51867,
- 51868,
- 51869,
- 51870,
- 51871,
- 51872,
- 51873,
- 51874,
- 51875,
- 51876,
- 51877,
- 51878,
- 51879,
- 51880,
- 51881,
- 51882,
- 51883,
- 51884,
- 51885,
- 51886,
- 51887,
- 51888,
- 51889,
- 51890,
- 51891,
- 51892,
- 51893,
- 51894,
- 51895,
- 51896,
- 51897,
- 51898,
- 51899,
- 51900,
- 51901,
- 51902,
- 51903,
- 51904,
- 51905,
- 51906,
- 51907,
- 51908,
- 51909,
- 51910,
- 51911,
- 51912,
- 51913,
- 51914,
- 51915,
- 51916,
- 51917,
- 51918,
- 51919,
- 51920,
- 51921,
- 51922,
- 51923,
- 51924,
- 51925,
- 51926,
- 51927,
- 51928,
- 51929,
- 51930,
- 51931,
- 51932,
- 51933,
- 51934,
- 51935,
- 51936,
- 51937,
- 51938,
- 51939,
- 51940,
- 51941,
- 51942,
- 51943,
- 51944,
- 51945,
- 51946,
- 51947,
- 51948,
- 51949,
- 51950,
- 51951,
- 51952,
- 51953,
- 51954,
- 51955,
- 51956,
- 51957,
- 51958,
- 51959,
- 51960,
- 51961,
- 51962,
- 51963,
- 51964,
- 51965,
- 51966,
- 51967,
- 51968,
- 51969,
- 51970,
- 51971,
- 51972,
- 51973,
- 51974,
- 51975,
- 51976,
- 51977,
- 51978,
- 51979,
- 51980,
- 51981,
- 51982,
- 51983,
- 51984,
- 51985,
- 51986,
- 51987,
- 51988,
- 51989,
- 51990,
- 51991,
- 51992,
- 51993,
- 51994,
- 51995,
- 51996,
- 51997,
- 51998,
- 51999,
- 52000,
- 52001,
- 52002,
- 52003,
- 52004,
- 52005,
- 52006,
- 52007,
- 52008,
- 52009,
- 52010,
- 52011,
- 52012,
- 52013,
- 52014,
- 52015,
- 52016,
- 52017,
- 52018,
- 52019,
- 52020,
- 52021,
- 52022,
- 52023,
- 52024,
- 52025,
- 52026,
- 52027,
- 52028,
- 52029,
- 52030,
- 52031,
- 52032,
- 52033,
- 52034,
- 52035,
- 52036,
- 52037,
- 52038,
- 52039,
- 52040,
- 52041,
- 52042,
- 52043,
- 52044,
- 52045,
- 52046,
- 52047,
- 52048,
- 52049,
- 52050,
- 52051,
- 52052,
- 52053,
- 52054,
- 52055,
- 52056,
- 52057,
- 52058,
- 52059,
- 52060,
- 52061,
- 52062,
- 52063,
- 52064,
- 52065,
- 52066,
- 52067,
- 52068,
- 52069,
- 52070,
- 52071,
- 52072,
- 52073,
- 52074,
- 52075,
- 52076,
- 52077,
- 52078,
- 52079,
- 52080,
- 52081,
- 52082,
- 52083,
- 52084,
- 52085,
- 52086,
- 52087,
- 52088,
- 52089,
- 52090,
- 52091,
- 52092,
- 52093,
- 52094,
- 52095,
- 52096,
- 52097,
- 52098,
- 52099,
- 52100,
- 52101,
- 52102,
- 52103,
- 52104,
- 52105,
- 52106,
- 52107,
- 52108,
- 52109,
- 52110,
- 52111,
- 52112,
- 52113,
- 52114,
- 52115,
- 52116,
- 52117,
- 52118,
- 52119,
- 52120,
- 52121,
- 52122,
- 52123,
- 52124,
- 52125,
- 52126,
- 52127,
- 52128,
- 52129,
- 52130,
- 52131,
- 52132,
- 52133,
- 52134,
- 52135,
- 52136,
- 52137,
- 52138,
- 52139,
- 52140,
- 52141,
- 52142,
- 52143,
- 52144,
- 52145,
- 52146,
- 52147,
- 52148,
- 52149,
- 52150,
- 52151,
- 52152,
- 52153,
- 52154,
- 52155,
- 52156,
- 52157,
- 52158,
- 52159,
- 52160,
- 52161,
- 52162,
- 52163,
- 52164,
- 52165,
- 52166,
- 52167,
- 52168,
- 52169,
- 52170,
- 52171,
- 52172,
- 52173,
- 52174,
- 52175,
- 52176,
- 52177,
- 52178,
- 52179,
- 52180,
- 52181,
- 52182,
- 52183,
- 52184,
- 52185,
- 52186,
- 52187,
- 52188,
- 52189,
- 52190,
- 52191,
- 52192,
- 52193,
- 52194,
- 52195,
- 52196,
- 52197,
- 52198,
- 52199,
- 52200,
- 52201,
- 52202,
- 52203,
- 52204,
- 52205,
- 52206,
- 52207,
- 52208,
- 52209,
- 52210,
- 52211,
- 52212,
- 52213,
- 52214,
- 52215,
- 52216,
- 52217,
- 52218,
- 52219,
- 52220,
- 52221,
- 52222,
- 52223,
- 52224,
- 52225,
- 52226,
- 52227,
- 52228,
- 52229,
- 52230,
- 52231,
- 52232,
- 52233,
- 52234,
- 52235,
- 52236,
- 52237,
- 52238,
- 52239,
- 52240,
- 52241,
- 52242,
- 52243,
- 52244,
- 52245,
- 52246,
- 52247,
- 52248,
- 52249,
- 52250,
- 52251,
- 52252,
- 52253,
- 52254,
- 52255,
- 52256,
- 52257,
- 52258,
- 52259,
- 52260,
- 52261,
- 52262,
- 52263,
- 52264,
- 52265,
- 52266,
- 52267,
- 52268,
- 52269,
- 52270,
- 52271,
- 52272,
- 52273,
- 52274,
- 52275,
- 52276,
- 52277,
- 52278,
- 52279,
- 52280,
- 52281,
- 52282,
- 52283,
- 52284,
- 52285,
- 52286,
- 52287,
- 52288,
- 52289,
- 52290,
- 52291,
- 52292,
- 52293,
- 52294,
- 52295,
- 52296,
- 52297,
- 52298,
- 52299,
- 52300,
- 52301,
- 52302,
- 52303,
- 52304,
- 52305,
- 52306,
- 52307,
- 52308,
- 52309,
- 52310,
- 52311,
- 52312,
- 52313,
- 52314,
- 52315,
- 52316,
- 52317,
- 52318,
- 52319,
- 52320,
- 52321,
- 52322,
- 52323,
- 52324,
- 52325,
- 52326,
- 52327,
- 52328,
- 52329,
- 52330,
- 52331,
- 52332,
- 52333,
- 52334,
- 52335,
- 52336,
- 52337,
- 52338,
- 52339,
- 52340,
- 52341,
- 52342,
- 52343,
- 52344,
- 52345,
- 52346,
- 52347,
- 52348,
- 52349,
- 52350,
- 52351,
- 52352,
- 52353,
- 52354,
- 52355,
- 52356,
- 52357,
- 52358,
- 52359,
- 52360,
- 52361,
- 52362,
- 52363,
- 52364,
- 52365,
- 52366,
- 52367,
- 52368,
- 52369,
- 52370,
- 52371,
- 52372,
- 52373,
- 52374,
- 52375,
- 52376,
- 52377,
- 52378,
- 52379,
- 52380,
- 52381,
- 52382,
- 52383,
- 52384,
- 52385,
- 52386,
- 52387,
- 52388,
- 52389,
- 52390,
- 52391,
- 52392,
- 52393,
- 52394,
- 52395,
- 52396,
- 52397,
- 52398,
- 52399,
- 52400,
- 52401,
- 52402,
- 52403,
- 52404,
- 52405,
- 52406,
- 52407,
- 52408,
- 52409,
- 52410,
- 52411,
- 52412,
- 52413,
- 52414,
- 52415,
- 52416,
- 52417,
- 52418,
- 52419,
- 52420,
- 52421,
- 52422,
- 52423,
- 52424,
- 52425,
- 52426,
- 52427,
- 52428,
- 52429,
- 52430,
- 52431,
- 52432,
- 52433,
- 52434,
- 52435,
- 52436,
- 52437,
- 52438,
- 52439,
- 52440,
- 52441,
- 52442,
- 52443,
- 52444,
- 52445,
- 52446,
- 52447,
- 52448,
- 52449,
- 52450,
- 52451,
- 52452,
- 52453,
- 52454,
- 52455,
- 52456,
- 52457,
- 52458,
- 52459,
- 52460,
- 52461,
- 52462,
- 52463,
- 52464,
- 52465,
- 52466,
- 52467,
- 52468,
- 52469,
- 52470,
- 52471,
- 52472,
- 52473,
- 52474,
- 52475,
- 52476,
- 52477,
- 52478,
- 52479,
- 52480,
- 52481,
- 52482,
- 52483,
- 52484,
- 52485,
- 52486,
- 52487,
- 52488,
- 52489,
- 52490,
- 52491,
- 52492,
- 52493,
- 52494,
- 52495,
- 52496,
- 52497,
- 52498,
- 52499,
- 52500,
- 52501,
- 52502,
- 52503,
- 52504,
- 52505,
- 52506,
- 52507,
- 52508,
- 52509,
- 52510,
- 52511,
- 52512,
- 52513,
- 52514,
- 52515,
- 52516,
- 52517,
- 52518,
- 52519,
- 52520,
- 52521,
- 52522,
- 52523,
- 52524,
- 52525,
- 52526,
- 52527,
- 52528,
- 52529,
- 52530,
- 52531,
- 52532,
- 52533,
- 52534,
- 52535,
- 52536,
- 52537,
- 52538,
- 52539,
- 52540,
- 52541,
- 52542,
- 52543,
- 52544,
- 52545,
- 52546,
- 52547,
- 52548,
- 52549,
- 52550,
- 52551,
- 52552,
- 52553,
- 52554,
- 52555,
- 52556,
- 52557,
- 52558,
- 52559,
- 52560,
- 52561,
- 52562,
- 52563,
- 52564,
- 52565,
- 52566,
- 52567,
- 52568,
- 52569,
- 52570,
- 52571,
- 52572,
- 52573,
- 52574,
- 52575,
- 52576,
- 52577,
- 52578,
- 52579,
- 52580,
- 52581,
- 52582,
- 52583,
- 52584,
- 52585,
- 52586,
- 52587,
- 52588,
- 52589,
- 52590,
- 52591,
- 52592,
- 52593,
- 52594,
- 52595,
- 52596,
- 52597,
- 52598,
- 52599,
- 52600,
- 52601,
- 52602,
- 52603,
- 52604,
- 52605,
- 52606,
- 52607,
- 52608,
- 52609,
- 52610,
- 52611,
- 52612,
- 52613,
- 52614,
- 52615,
- 52616,
- 52617,
- 52618,
- 52619,
- 52620,
- 52621,
- 52622,
- 52623,
- 52624,
- 52625,
- 52626,
- 52627,
- 52628,
- 52629,
- 52630,
- 52631,
- 52632,
- 52633,
- 52634,
- 52635,
- 52636,
- 52637,
- 52638,
- 52639,
- 52640,
- 52641,
- 52642,
- 52643,
- 52644,
- 52645,
- 52646,
- 52647,
- 52648,
- 52649,
- 52650,
- 52651,
- 52652,
- 52653,
- 52654,
- 52655,
- 52656,
- 52657,
- 52658,
- 52659,
- 52660,
- 52661,
- 52662,
- 52663,
- 52664,
- 52665,
- 52666,
- 52667,
- 52668,
- 52669,
- 52670,
- 52671,
- 52672,
- 52673,
- 52674,
- 52675,
- 52676,
- 52677,
- 52678,
- 52679,
- 52680,
- 52681,
- 52682,
- 52683,
- 52684,
- 52685,
- 52686,
- 52687,
- 52688,
- 52689,
- 52690,
- 52691,
- 52692,
- 52693,
- 52694,
- 52695,
- 52696,
- 52697,
- 52698,
- 52699,
- 52700,
- 52701,
- 52702,
- 52703,
- 52704,
- 52705,
- 52706,
- 52707,
- 52708,
- 52709,
- 52710,
- 52711,
- 52712,
- 52713,
- 52714,
- 52715,
- 52716,
- 52717,
- 52718,
- 52719,
- 52720,
- 52721,
- 52722,
- 52723,
- 52724,
- 52725,
- 52726,
- 52727,
- 52728,
- 52729,
- 52730,
- 52731,
- 52732,
- 52733,
- 52734,
- 52735,
- 52736,
- 52737,
- 52738,
- 52739,
- 52740,
- 52741,
- 52742,
- 52743,
- 52744,
- 52745,
- 52746,
- 52747,
- 52748,
- 52749,
- 52750,
- 52751,
- 52752,
- 52753,
- 52754,
- 52755,
- 52756,
- 52757,
- 52758,
- 52759,
- 52760,
- 52761,
- 52762,
- 52763,
- 52764,
- 52765,
- 52766,
- 52767,
- 52768,
- 52769,
- 52770,
- 52771,
- 52772,
- 52773,
- 52774,
- 52775,
- 52776,
- 52777,
- 52778,
- 52779,
- 52780,
- 52781,
- 52782,
- 52783,
- 52784,
- 52785,
- 52786,
- 52787,
- 52788,
- 52789,
- 52790,
- 52791,
- 52792,
- 52793,
- 52794,
- 52795,
- 52796,
- 52797,
- 52798,
- 52799,
- 52800,
- 52801,
- 52802,
- 52803,
- 52804,
- 52805,
- 52806,
- 52807,
- 52808,
- 52809,
- 52810,
- 52811,
- 52812,
- 52813,
- 52814,
- 52815,
- 52816,
- 52817,
- 52818,
- 52819,
- 52820,
- 52821,
- 52822,
- 52823,
- 52824,
- 52825,
- 52826,
- 52827,
- 52828,
- 52829,
- 52830,
- 52831,
- 52832,
- 52833,
- 52834,
- 52835,
- 52836,
- 52837,
- 52838,
- 52839,
- 52840,
- 52841,
- 52842,
- 52843,
- 52844,
- 52845,
- 52846,
- 52847,
- 52848,
- 52849,
- 52850,
- 52851,
- 52852,
- 52853,
- 52854,
- 52855,
- 52856,
- 52857,
- 52858,
- 52859,
- 52860,
- 52861,
- 52862,
- 52863,
- 52864,
- 52865,
- 52866,
- 52867,
- 52868,
- 52869,
- 52870,
- 52871,
- 52872,
- 52873,
- 52874,
- 52875,
- 52876,
- 52877,
- 52878,
- 52879,
- 52880,
- 52881,
- 52882,
- 52883,
- 52884,
- 52885,
- 52886,
- 52887,
- 52888,
- 52889,
- 52890,
- 52891,
- 52892,
- 52893,
- 52894,
- 52895,
- 52896,
- 52897,
- 52898,
- 52899,
- 52900,
- 52901,
- 52902,
- 52903,
- 52904,
- 52905,
- 52906,
- 52907,
- 52908,
- 52909,
- 52910,
- 52911,
- 52912,
- 52913,
- 52914,
- 52915,
- 52916,
- 52917,
- 52918,
- 52919,
- 52920,
- 52921,
- 52922,
- 52923,
- 52924,
- 52925,
- 52926,
- 52927,
- 52928,
- 52929,
- 52930,
- 52931,
- 52932,
- 52933,
- 52934,
- 52935,
- 52936,
- 52937,
- 52938,
- 52939,
- 52940,
- 52941,
- 52942,
- 52943,
- 52944,
- 52945,
- 52946,
- 52947,
- 52948,
- 52949,
- 52950,
- 52951,
- 52952,
- 52953,
- 52954,
- 52955,
- 52956,
- 52957,
- 52958,
- 52959,
- 52960,
- 52961,
- 52962,
- 52963,
- 52964,
- 52965,
- 52966,
- 52967,
- 52968,
- 52969,
- 52970,
- 52971,
- 52972,
- 52973,
- 52974,
- 52975,
- 52976,
- 52977,
- 52978,
- 52979,
- 52980,
- 52981,
- 52982,
- 52983,
- 52984,
- 52985,
- 52986,
- 52987,
- 52988,
- 52989,
- 52990,
- 52991,
- 52992,
- 52993,
- 52994,
- 52995,
- 52996,
- 52997,
- 52998,
- 52999,
- 53000,
- 53001,
- 53002,
- 53003,
- 53004,
- 53005,
- 53006,
- 53007,
- 53008,
- 53009,
- 53010,
- 53011,
- 53012,
- 53013,
- 53014,
- 53015,
- 53016,
- 53017,
- 53018,
- 53019,
- 53020,
- 53021,
- 53022,
- 53023,
- 53024,
- 53025,
- 53026,
- 53027,
- 53028,
- 53029,
- 53030,
- 53031,
- 53032,
- 53033,
- 53034,
- 53035,
- 53036,
- 53037,
- 53038,
- 53039,
- 53040,
- 53041,
- 53042,
- 53043,
- 53044,
- 53045,
- 53046,
- 53047,
- 53048,
- 53049,
- 53050,
- 53051,
- 53052,
- 53053,
- 53054,
- 53055,
- 53056,
- 53057,
- 53058,
- 53059,
- 53060,
- 53061,
- 53062,
- 53063,
- 53064,
- 53065,
- 53066,
- 53067,
- 53068,
- 53069,
- 53070,
- 53071,
- 53072,
- 53073,
- 53074,
- 53075,
- 53076,
- 53077,
- 53078,
- 53079,
- 53080,
- 53081,
- 53082,
- 53083,
- 53084,
- 53085,
- 53086,
- 53087,
- 53088,
- 53089,
- 53090,
- 53091,
- 53092,
- 53093,
- 53094,
- 53095,
- 53096,
- 53097,
- 53098,
- 53099,
- 53100,
- 53101,
- 53102,
- 53103,
- 53104,
- 53105,
- 53106,
- 53107,
- 53108,
- 53109,
- 53110,
- 53111,
- 53112,
- 53113,
- 53114,
- 53115,
- 53116,
- 53117,
- 53118,
- 53119,
- 53120,
- 53121,
- 53122,
- 53123,
- 53124,
- 53125,
- 53126,
- 53127,
- 53128,
- 53129,
- 53130,
- 53131,
- 53132,
- 53133,
- 53134,
- 53135,
- 53136,
- 53137,
- 53138,
- 53139,
- 53140,
- 53141,
- 53142,
- 53143,
- 53144,
- 53145,
- 53146,
- 53147,
- 53148,
- 53149,
- 53150,
- 53151,
- 53152,
- 53153,
- 53154,
- 53155,
- 53156,
- 53157,
- 53158,
- 53159,
- 53160,
- 53161,
- 53162,
- 53163,
- 53164,
- 53165,
- 53166,
- 53167,
- 53168,
- 53169,
- 53170,
- 53171,
- 53172,
- 53173,
- 53174,
- 53175,
- 53176,
- 53177,
- 53178,
- 53179,
- 53180,
- 53181,
- 53182,
- 53183,
- 53184,
- 53185,
- 53186,
- 53187,
- 53188,
- 53189,
- 53190,
- 53191,
- 53192,
- 53193,
- 53194,
- 53195,
- 53196,
- 53197,
- 53198,
- 53199,
- 53200,
- 53201,
- 53202,
- 53203,
- 53204,
- 53205,
- 53206,
- 53207,
- 53208,
- 53209,
- 53210,
- 53211,
- 53212,
- 53213,
- 53214,
- 53215,
- 53216,
- 53217,
- 53218,
- 53219,
- 53220,
- 53221,
- 53222,
- 53223,
- 53224,
- 53225,
- 53226,
- 53227,
- 53228,
- 53229,
- 53230,
- 53231,
- 53232,
- 53233,
- 53234,
- 53235,
- 53236,
- 53237,
- 53238,
- 53239,
- 53240,
- 53241,
- 53242,
- 53243,
- 53244,
- 53245,
- 53246,
- 53247,
- 53248,
- 53249,
- 53250,
- 53251,
- 53252,
- 53253,
- 53254,
- 53255,
- 53256,
- 53257,
- 53258,
- 53259,
- 53260,
- 53261,
- 53262,
- 53263,
- 53264,
- 53265,
- 53266,
- 53267,
- 53268,
- 53269,
- 53270,
- 53271,
- 53272,
- 53273,
- 53274,
- 53275,
- 53276,
- 53277,
- 53278,
- 53279,
- 53280,
- 53281,
- 53282,
- 53283,
- 53284,
- 53285,
- 53286,
- 53287,
- 53288,
- 53289,
- 53290,
- 53291,
- 53292,
- 53293,
- 53294,
- 53295,
- 53296,
- 53297,
- 53298,
- 53299,
- 53300,
- 53301,
- 53302,
- 53303,
- 53304,
- 53305,
- 53306,
- 53307,
- 53308,
- 53309,
- 53310,
- 53311,
- 53312,
- 53313,
- 53314,
- 53315,
- 53316,
- 53317,
- 53318,
- 53319,
- 53320,
- 53321,
- 53322,
- 53323,
- 53324,
- 53325,
- 53326,
- 53327,
- 53328,
- 53329,
- 53330,
- 53331,
- 53332,
- 53333,
- 53334,
- 53335,
- 53336,
- 53337,
- 53338,
- 53339,
- 53340,
- 53341,
- 53342,
- 53343,
- 53344,
- 53345,
- 53346,
- 53347,
- 53348,
- 53349,
- 53350,
- 53351,
- 53352,
- 53353,
- 53354,
- 53355,
- 53356,
- 53357,
- 53358,
- 53359,
- 53360,
- 53361,
- 53362,
- 53363,
- 53364,
- 53365,
- 53366,
- 53367,
- 53368,
- 53369,
- 53370,
- 53371,
- 53372,
- 53373,
- 53374,
- 53375,
- 53376,
- 53377,
- 53378,
- 53379,
- 53380,
- 53381,
- 53382,
- 53383,
- 53384,
- 53385,
- 53386,
- 53387,
- 53388,
- 53389,
- 53390,
- 53391,
- 53392,
- 53393,
- 53394,
- 53395,
- 53396,
- 53397,
- 53398,
- 53399,
- 53400,
- 53401,
- 53402,
- 53403,
- 53404,
- 53405,
- 53406,
- 53407,
- 53408,
- 53409,
- 53410,
- 53411,
- 53412,
- 53413,
- 53414,
- 53415,
- 53416,
- 53417,
- 53418,
- 53419,
- 53420,
- 53421,
- 53422,
- 53423,
- 53424,
- 53425,
- 53426,
- 53427,
- 53428,
- 53429,
- 53430,
- 53431,
- 53432,
- 53433,
- 53434,
- 53435,
- 53436,
- 53437,
- 53438,
- 53439,
- 53440,
- 53441,
- 53442,
- 53443,
- 53444,
- 53445,
- 53446,
- 53447,
- 53448,
- 53449,
- 53450,
- 53451,
- 53452,
- 53453,
- 53454,
- 53455,
- 53456,
- 53457,
- 53458,
- 53459,
- 53460,
- 53461,
- 53462,
- 53463,
- 53464,
- 53465,
- 53466,
- 53467,
- 53468,
- 53469,
- 53470,
- 53471,
- 53472,
- 53473,
- 53474,
- 53475,
- 53476,
- 53477,
- 53478,
- 53479,
- 53480,
- 53481,
- 53482,
- 53483,
- 53484,
- 53485,
- 53486,
- 53487,
- 53488,
- 53489,
- 53490,
- 53491,
- 53492,
- 53493,
- 53494,
- 53495,
- 53496,
- 53497,
- 53498,
- 53499,
- 53500,
- 53501,
- 53502,
- 53503,
- 53504,
- 53505,
- 53506,
- 53507,
- 53508,
- 53509,
- 53510,
- 53511,
- 53512,
- 53513,
- 53514,
- 53515,
- 53516,
- 53517,
- 53518,
- 53519,
- 53520,
- 53521,
- 53522,
- 53523,
- 53524,
- 53525,
- 53526,
- 53527,
- 53528,
- 53529,
- 53530,
- 53531,
- 53532,
- 53533,
- 53534,
- 53535,
- 53536,
- 53537,
- 53538,
- 53539,
- 53540,
- 53541,
- 53542,
- 53543,
- 53544,
- 53545,
- 53546,
- 53547,
- 53548,
- 53549,
- 53550,
- 53551,
- 53552,
- 53553,
- 53554,
- 53555,
- 53556,
- 53557,
- 53558,
- 53559,
- 53560,
- 53561,
- 53562,
- 53563,
- 53564,
- 53565,
- 53566,
- 53567,
- 53568,
- 53569,
- 53570,
- 53571,
- 53572,
- 53573,
- 53574,
- 53575,
- 53576,
- 53577,
- 53578,
- 53579,
- 53580,
- 53581,
- 53582,
- 53583,
- 53584,
- 53585,
- 53586,
- 53587,
- 53588,
- 53589,
- 53590,
- 53591,
- 53592,
- 53593,
- 53594,
- 53595,
- 53596,
- 53597,
- 53598,
- 53599,
- 53600,
- 53601,
- 53602,
- 53603,
- 53604,
- 53605,
- 53606,
- 53607,
- 53608,
- 53609,
- 53610,
- 53611,
- 53612,
- 53613,
- 53614,
- 53615,
- 53616,
- 53617,
- 53618,
- 53619,
- 53620,
- 53621,
- 53622,
- 53623,
- 53624,
- 53625,
- 53626,
- 53627,
- 53628,
- 53629,
- 53630,
- 53631,
- 53632,
- 53633,
- 53634,
- 53635,
- 53636,
- 53637,
- 53638,
- 53639,
- 53640,
- 53641,
- 53642,
- 53643,
- 53644,
- 53645,
- 53646,
- 53647,
- 53648,
- 53649,
- 53650,
- 53651,
- 53652,
- 53653,
- 53654,
- 53655,
- 53656,
- 53657,
- 53658,
- 53659,
- 53660,
- 53661,
- 53662,
- 53663,
- 53664,
- 53665,
- 53666,
- 53667,
- 53668,
- 53669,
- 53670,
- 53671,
- 53672,
- 53673,
- 53674,
- 53675,
- 53676,
- 53677,
- 53678,
- 53679,
- 53680,
- 53681,
- 53682,
- 53683,
- 53684,
- 53685,
- 53686,
- 53687,
- 53688,
- 53689,
- 53690,
- 53691,
- 53692,
- 53693,
- 53694,
- 53695,
- 53696,
- 53697,
- 53698,
- 53699,
- 53700,
- 53701,
- 53702,
- 53703,
- 53704,
- 53705,
- 53706,
- 53707,
- 53708,
- 53709,
- 53710,
- 53711,
- 53712,
- 53713,
- 53714,
- 53715,
- 53716,
- 53717,
- 53718,
- 53719,
- 53720,
- 53721,
- 53722,
- 53723,
- 53724,
- 53725,
- 53726,
- 53727,
- 53728,
- 53729,
- 53730,
- 53731,
- 53732,
- 53733,
- 53734,
- 53735,
- 53736,
- 53737,
- 53738,
- 53739,
- 53740,
- 53741,
- 53742,
- 53743,
- 53744,
- 53745,
- 53746,
- 53747,
- 53748,
- 53749,
- 53750,
- 53751,
- 53752,
- 53753,
- 53754,
- 53755,
- 53756,
- 53757,
- 53758,
- 53759,
- 53760,
- 53761,
- 53762,
- 53763,
- 53764,
- 53765,
- 53766,
- 53767,
- 53768,
- 53769,
- 53770,
- 53771,
- 53772,
- 53773,
- 53774,
- 53775,
- 53776,
- 53777,
- 53778,
- 53779,
- 53780,
- 53781,
- 53782,
- 53783,
- 53784,
- 53785,
- 53786,
- 53787,
- 53788,
- 53789,
- 53790,
- 53791,
- 53792,
- 53793,
- 53794,
- 53795,
- 53796,
- 53797,
- 53798,
- 53799,
- 53800,
- 53801,
- 53802,
- 53803,
- 53804,
- 53805,
- 53806,
- 53807,
- 53808,
- 53809,
- 53810,
- 53811,
- 53812,
- 53813,
- 53814,
- 53815,
- 53816,
- 53817,
- 53818,
- 53819,
- 53820,
- 53821,
- 53822,
- 53823,
- 53824,
- 53825,
- 53826,
- 53827,
- 53828,
- 53829,
- 53830,
- 53831,
- 53832,
- 53833,
- 53834,
- 53835,
- 53836,
- 53837,
- 53838,
- 53839,
- 53840,
- 53841,
- 53842,
- 53843,
- 53844,
- 53845,
- 53846,
- 53847,
- 53848,
- 53849,
- 53850,
- 53851,
- 53852,
- 53853,
- 53854,
- 53855,
- 53856,
- 53857,
- 53858,
- 53859,
- 53860,
- 53861,
- 53862,
- 53863,
- 53864,
- 53865,
- 53866,
- 53867,
- 53868,
- 53869,
- 53870,
- 53871,
- 53872,
- 53873,
- 53874,
- 53875,
- 53876,
- 53877,
- 53878,
- 53879,
- 53880,
- 53881,
- 53882,
- 53883,
- 53884,
- 53885,
- 53886,
- 53887,
- 53888,
- 53889,
- 53890,
- 53891,
- 53892,
- 53893,
- 53894,
- 53895,
- 53896,
- 53897,
- 53898,
- 53899,
- 53900,
- 53901,
- 53902,
- 53903,
- 53904,
- 53905,
- 53906,
- 53907,
- 53908,
- 53909,
- 53910,
- 53911,
- 53912,
- 53913,
- 53914,
- 53915,
- 53916,
- 53917,
- 53918,
- 53919,
- 53920,
- 53921,
- 53922,
- 53923,
- 53924,
- 53925,
- 53926,
- 53927,
- 53928,
- 53929,
- 53930,
- 53931,
- 53932,
- 53933,
- 53934,
- 53935,
- 53936,
- 53937,
- 53938,
- 53939,
- 53940,
- 53941,
- 53942,
- 53943,
- 53944,
- 53945,
- 53946,
- 53947,
- 53948,
- 53949,
- 53950,
- 53951,
- 53952,
- 53953,
- 53954,
- 53955,
- 53956,
- 53957,
- 53958,
- 53959,
- 53960,
- 53961,
- 53962,
- 53963,
- 53964,
- 53965,
- 53966,
- 53967,
- 53968,
- 53969,
- 53970,
- 53971,
- 53972,
- 53973,
- 53974,
- 53975,
- 53976,
- 53977,
- 53978,
- 53979,
- 53980,
- 53981,
- 53982,
- 53983,
- 53984,
- 53985,
- 53986,
- 53987,
- 53988,
- 53989,
- 53990,
- 53991,
- 53992,
- 53993,
- 53994,
- 53995,
- 53996,
- 53997,
- 53998,
- 53999,
- 54000,
- 54001,
- 54002,
- 54003,
- 54004,
- 54005,
- 54006,
- 54007,
- 54008,
- 54009,
- 54010,
- 54011,
- 54012,
- 54013,
- 54014,
- 54015,
- 54016,
- 54017,
- 54018,
- 54019,
- 54020,
- 54021,
- 54022,
- 54023,
- 54024,
- 54025,
- 54026,
- 54027,
- 54028,
- 54029,
- 54030,
- 54031,
- 54032,
- 54033,
- 54034,
- 54035,
- 54036,
- 54037,
- 54038,
- 54039,
- 54040,
- 54041,
- 54042,
- 54043,
- 54044,
- 54045,
- 54046,
- 54047,
- 54048,
- 54049,
- 54050,
- 54051,
- 54052,
- 54053,
- 54054,
- 54055,
- 54056,
- 54057,
- 54058,
- 54059,
- 54060,
- 54061,
- 54062,
- 54063,
- 54064,
- 54065,
- 54066,
- 54067,
- 54068,
- 54069,
- 54070,
- 54071,
- 54072,
- 54073,
- 54074,
- 54075,
- 54076,
- 54077,
- 54078,
- 54079,
- 54080,
- 54081,
- 54082,
- 54083,
- 54084,
- 54085,
- 54086,
- 54087,
- 54088,
- 54089,
- 54090,
- 54091,
- 54092,
- 54093,
- 54094,
- 54095,
- 54096,
- 54097,
- 54098,
- 54099,
- 54100,
- 54101,
- 54102,
- 54103,
- 54104,
- 54105,
- 54106,
- 54107,
- 54108,
- 54109,
- 54110,
- 54111,
- 54112,
- 54113,
- 54114,
- 54115,
- 54116,
- 54117,
- 54118,
- 54119,
- 54120,
- 54121,
- 54122,
- 54123,
- 54124,
- 54125,
- 54126,
- 54127,
- 54128,
- 54129,
- 54130,
- 54131,
- 54132,
- 54133,
- 54134,
- 54135,
- 54136,
- 54137,
- 54138,
- 54139,
- 54140,
- 54141,
- 54142,
- 54143,
- 54144,
- 54145,
- 54146,
- 54147,
- 54148,
- 54149,
- 54150,
- 54151,
- 54152,
- 54153,
- 54154,
- 54155,
- 54156,
- 54157,
- 54158,
- 54159,
- 54160,
- 54161,
- 54162,
- 54163,
- 54164,
- 54165,
- 54166,
- 54167,
- 54168,
- 54169,
- 54170,
- 54171,
- 54172,
- 54173,
- 54174,
- 54175,
- 54176,
- 54177,
- 54178,
- 54179,
- 54180,
- 54181,
- 54182,
- 54183,
- 54184,
- 54185,
- 54186,
- 54187,
- 54188,
- 54189,
- 54190,
- 54191,
- 54192,
- 54193,
- 54194,
- 54195,
- 54196,
- 54197,
- 54198,
- 54199,
- 54200,
- 54201,
- 54202,
- 54203,
- 54204,
- 54205,
- 54206,
- 54207,
- 54208,
- 54209,
- 54210,
- 54211,
- 54212,
- 54213,
- 54214,
- 54215,
- 54216,
- 54217,
- 54218,
- 54219,
- 54220,
- 54221,
- 54222,
- 54223,
- 54224,
- 54225,
- 54226,
- 54227,
- 54228,
- 54229,
- 54230,
- 54231,
- 54232,
- 54233,
- 54234,
- 54235,
- 54236,
- 54237,
- 54238,
- 54239,
- 54240,
- 54241,
- 54242,
- 54243,
- 54244,
- 54245,
- 54246,
- 54247,
- 54248,
- 54249,
- 54250,
- 54251,
- 54252,
- 54253,
- 54254,
- 54255,
- 54256,
- 54257,
- 54258,
- 54259,
- 54260,
- 54261,
- 54262,
- 54263,
- 54264,
- 54265,
- 54266,
- 54267,
- 54268,
- 54269,
- 54270,
- 54271,
- 54272,
- 54273,
- 54274,
- 54275,
- 54276,
- 54277,
- 54278,
- 54279,
- 54280,
- 54281,
- 54282,
- 54283,
- 54284,
- 54285,
- 54286,
- 54287,
- 54288,
- 54289,
- 54290,
- 54291,
- 54292,
- 54293,
- 54294,
- 54295,
- 54296,
- 54297,
- 54298,
- 54299,
- 54300,
- 54301,
- 54302,
- 54303,
- 54304,
- 54305,
- 54306,
- 54307,
- 54308,
- 54309,
- 54310,
- 54311,
- 54312,
- 54313,
- 54314,
- 54315,
- 54316,
- 54317,
- 54318,
- 54319,
- 54320,
- 54321,
- 54322,
- 54323,
- 54324,
- 54325,
- 54326,
- 54327,
- 54328,
- 54329,
- 54330,
- 54331,
- 54332,
- 54333,
- 54334,
- 54335,
- 54336,
- 54337,
- 54338,
- 54339,
- 54340,
- 54341,
- 54342,
- 54343,
- 54344,
- 54345,
- 54346,
- 54347,
- 54348,
- 54349,
- 54350,
- 54351,
- 54352,
- 54353,
- 54354,
- 54355,
- 54356,
- 54357,
- 54358,
- 54359,
- 54360,
- 54361,
- 54362,
- 54363,
- 54364,
- 54365,
- 54366,
- 54367,
- 54368,
- 54369,
- 54370,
- 54371,
- 54372,
- 54373,
- 54374,
- 54375,
- 54376,
- 54377,
- 54378,
- 54379,
- 54380,
- 54381,
- 54382,
- 54383,
- 54384,
- 54385,
- 54386,
- 54387,
- 54388,
- 54389,
- 54390,
- 54391,
- 54392,
- 54393,
- 54394,
- 54395,
- 54396,
- 54397,
- 54398,
- 54399,
- 54400,
- 54401,
- 54402,
- 54403,
- 54404,
- 54405,
- 54406,
- 54407,
- 54408,
- 54409,
- 54410,
- 54411,
- 54412,
- 54413,
- 54414,
- 54415,
- 54416,
- 54417,
- 54418,
- 54419,
- 54420,
- 54421,
- 54422,
- 54423,
- 54424,
- 54425,
- 54426,
- 54427,
- 54428,
- 54429,
- 54430,
- 54431,
- 54432,
- 54433,
- 54434,
- 54435,
- 54436,
- 54437,
- 54438,
- 54439,
- 54440,
- 54441,
- 54442,
- 54443,
- 54444,
- 54445,
- 54446,
- 54447,
- 54448,
- 54449,
- 54450,
- 54451,
- 54452,
- 54453,
- 54454,
- 54455,
- 54456,
- 54457,
- 54458,
- 54459,
- 54460,
- 54461,
- 54462,
- 54463,
- 54464,
- 54465,
- 54466,
- 54467,
- 54468,
- 54469,
- 54470,
- 54471,
- 54472,
- 54473,
- 54474,
- 54475,
- 54476,
- 54477,
- 54478,
- 54479,
- 54480,
- 54481,
- 54482,
- 54483,
- 54484,
- 54485,
- 54486,
- 54487,
- 54488,
- 54489,
- 54490,
- 54491,
- 54492,
- 54493,
- 54494,
- 54495,
- 54496,
- 54497,
- 54498,
- 54499,
- 54500,
- 54501,
- 54502,
- 54503,
- 54504,
- 54505,
- 54506,
- 54507,
- 54508,
- 54509,
- 54510,
- 54511,
- 54512,
- 54513,
- 54514,
- 54515,
- 54516,
- 54517,
- 54518,
- 54519,
- 54520,
- 54521,
- 54522,
- 54523,
- 54524,
- 54525,
- 54526,
- 54527,
- 54528,
- 54529,
- 54530,
- 54531,
- 54532,
- 54533,
- 54534,
- 54535,
- 54536,
- 54537,
- 54538,
- 54539,
- 54540,
- 54541,
- 54542,
- 54543,
- 54544,
- 54545,
- 54546,
- 54547,
- 54548,
- 54549,
- 54550,
- 54551,
- 54552,
- 54553,
- 54554,
- 54555,
- 54556,
- 54557,
- 54558,
- 54559,
- 54560,
- 54561,
- 54562,
- 54563,
- 54564,
- 54565,
- 54566,
- 54567,
- 54568,
- 54569,
- 54570,
- 54571,
- 54572,
- 54573,
- 54574,
- 54575,
- 54576,
- 54577,
- 54578,
- 54579,
- 54580,
- 54581,
- 54582,
- 54583,
- 54584,
- 54585,
- 54586,
- 54587,
- 54588,
- 54589,
- 54590,
- 54591,
- 54592,
- 54593,
- 54594,
- 54595,
- 54596,
- 54597,
- 54598,
- 54599,
- 54600,
- 54601,
- 54602,
- 54603,
- 54604,
- 54605,
- 54606,
- 54607,
- 54608,
- 54609,
- 54610,
- 54611,
- 54612,
- 54613,
- 54614,
- 54615,
- 54616,
- 54617,
- 54618,
- 54619,
- 54620,
- 54621,
- 54622,
- 54623,
- 54624,
- 54625,
- 54626,
- 54627,
- 54628,
- 54629,
- 54630,
- 54631,
- 54632,
- 54633,
- 54634,
- 54635,
- 54636,
- 54637,
- 54638,
- 54639,
- 54640,
- 54641,
- 54642,
- 54643,
- 54644,
- 54645,
- 54646,
- 54647,
- 54648,
- 54649,
- 54650,
- 54651,
- 54652,
- 54653,
- 54654,
- 54655,
- 54656,
- 54657,
- 54658,
- 54659,
- 54660,
- 54661,
- 54662,
- 54663,
- 54664,
- 54665,
- 54666,
- 54667,
- 54668,
- 54669,
- 54670,
- 54671,
- 54672,
- 54673,
- 54674,
- 54675,
- 54676,
- 54677,
- 54678,
- 54679,
- 54680,
- 54681,
- 54682,
- 54683,
- 54684,
- 54685,
- 54686,
- 54687,
- 54688,
- 54689,
- 54690,
- 54691,
- 54692,
- 54693,
- 54694,
- 54695,
- 54696,
- 54697,
- 54698,
- 54699,
- 54700,
- 54701,
- 54702,
- 54703,
- 54704,
- 54705,
- 54706,
- 54707,
- 54708,
- 54709,
- 54710,
- 54711,
- 54712,
- 54713,
- 54714,
- 54715,
- 54716,
- 54717,
- 54718,
- 54719,
- 54720,
- 54721,
- 54722,
- 54723,
- 54724,
- 54725,
- 54726,
- 54727,
- 54728,
- 54729,
- 54730,
- 54731,
- 54732,
- 54733,
- 54734,
- 54735,
- 54736,
- 54737,
- 54738,
- 54739,
- 54740,
- 54741,
- 54742,
- 54743,
- 54744,
- 54745,
- 54746,
- 54747,
- 54748,
- 54749,
- 54750,
- 54751,
- 54752,
- 54753,
- 54754,
- 54755,
- 54756,
- 54757,
- 54758,
- 54759,
- 54760,
- 54761,
- 54762,
- 54763,
- 54764,
- 54765,
- 54766,
- 54767,
- 54768,
- 54769,
- 54770,
- 54771,
- 54772,
- 54773,
- 54774,
- 54775,
- 54776,
- 54777,
- 54778,
- 54779,
- 54780,
- 54781,
- 54782,
- 54783,
- 54784,
- 54785,
- 54786,
- 54787,
- 54788,
- 54789,
- 54790,
- 54791,
- 54792,
- 54793,
- 54794,
- 54795,
- 54796,
- 54797,
- 54798,
- 54799,
- 54800,
- 54801,
- 54802,
- 54803,
- 54804,
- 54805,
- 54806,
- 54807,
- 54808,
- 54809,
- 54810,
- 54811,
- 54812,
- 54813,
- 54814,
- 54815,
- 54816,
- 54817,
- 54818,
- 54819,
- 54820,
- 54821,
- 54822,
- 54823,
- 54824,
- 54825,
- 54826,
- 54827,
- 54828,
- 54829,
- 54830,
- 54831,
- 54832,
- 54833,
- 54834,
- 54835,
- 54836,
- 54837,
- 54838,
- 54839,
- 54840,
- 54841,
- 54842,
- 54843,
- 54844,
- 54845,
- 54846,
- 54847,
- 54848,
- 54849,
- 54850,
- 54851,
- 54852,
- 54853,
- 54854,
- 54855,
- 54856,
- 54857,
- 54858,
- 54859,
- 54860,
- 54861,
- 54862,
- 54863,
- 54864,
- 54865,
- 54866,
- 54867,
- 54868,
- 54869,
- 54870,
- 54871,
- 54872,
- 54873,
- 54874,
- 54875,
- 54876,
- 54877,
- 54878,
- 54879,
- 54880,
- 54881,
- 54882,
- 54883,
- 54884,
- 54885,
- 54886,
- 54887,
- 54888,
- 54889,
- 54890,
- 54891,
- 54892,
- 54893,
- 54894,
- 54895,
- 54896,
- 54897,
- 54898,
- 54899,
- 54900,
- 54901,
- 54902,
- 54903,
- 54904,
- 54905,
- 54906,
- 54907,
- 54908,
- 54909,
- 54910,
- 54911,
- 54912,
- 54913,
- 54914,
- 54915,
- 54916,
- 54917,
- 54918,
- 54919,
- 54920,
- 54921,
- 54922,
- 54923,
- 54924,
- 54925,
- 54926,
- 54927,
- 54928,
- 54929,
- 54930,
- 54931,
- 54932,
- 54933,
- 54934,
- 54935,
- 54936,
- 54937,
- 54938,
- 54939,
- 54940,
- 54941,
- 54942,
- 54943,
- 54944,
- 54945,
- 54946,
- 54947,
- 54948,
- 54949,
- 54950,
- 54951,
- 54952,
- 54953,
- 54954,
- 54955,
- 54956,
- 54957,
- 54958,
- 54959,
- 54960,
- 54961,
- 54962,
- 54963,
- 54964,
- 54965,
- 54966,
- 54967,
- 54968,
- 54969,
- 54970,
- 54971,
- 54972,
- 54973,
- 54974,
- 54975,
- 54976,
- 54977,
- 54978,
- 54979,
- 54980,
- 54981,
- 54982,
- 54983,
- 54984,
- 54985,
- 54986,
- 54987,
- 54988,
- 54989,
- 54990,
- 54991,
- 54992,
- 54993,
- 54994,
- 54995,
- 54996,
- 54997,
- 54998,
- 54999,
- 55000,
- 55001,
- 55002,
- 55003,
- 55004,
- 55005,
- 55006,
- 55007,
- 55008,
- 55009,
- 55010,
- 55011,
- 55012,
- 55013,
- 55014,
- 55015,
- 55016,
- 55017,
- 55018,
- 55019,
- 55020,
- 55021,
- 55022,
- 55023,
- 55024,
- 55025,
- 55026,
- 55027,
- 55028,
- 55029,
- 55030,
- 55031,
- 55032,
- 55033,
- 55034,
- 55035,
- 55036,
- 55037,
- 55038,
- 55039,
- 55040,
- 55041,
- 55042,
- 55043,
- 55044,
- 55045,
- 55046,
- 55047,
- 55048,
- 55049,
- 55050,
- 55051,
- 55052,
- 55053,
- 55054,
- 55055,
- 55056,
- 55057,
- 55058,
- 55059,
- 55060,
- 55061,
- 55062,
- 55063,
- 55064,
- 55065,
- 55066,
- 55067,
- 55068,
- 55069,
- 55070,
- 55071,
- 55072,
- 55073,
- 55074,
- 55075,
- 55076,
- 55077,
- 55078,
- 55079,
- 55080,
- 55081,
- 55082,
- 55083,
- 55084,
- 55085,
- 55086,
- 55087,
- 55088,
- 55089,
- 55090,
- 55091,
- 55092,
- 55093,
- 55094,
- 55095,
- 55096,
- 55097,
- 55098,
- 55099,
- 55100,
- 55101,
- 55102,
- 55103,
- 55104,
- 55105,
- 55106,
- 55107,
- 55108,
- 55109,
- 55110,
- 55111,
- 55112,
- 55113,
- 55114,
- 55115,
- 55116,
- 55117,
- 55118,
- 55119,
- 55120,
- 55121,
- 55122,
- 55123,
- 55124,
- 55125,
- 55126,
- 55127,
- 55128,
- 55129,
- 55130,
- 55131,
- 55132,
- 55133,
- 55134,
- 55135,
- 55136,
- 55137,
- 55138,
- 55139,
- 55140,
- 55141,
- 55142,
- 55143,
- 55144,
- 55145,
- 55146,
- 55147,
- 55148,
- 55149,
- 55150,
- 55151,
- 55152,
- 55153,
- 55154,
- 55155,
- 55156,
- 55157,
- 55158,
- 55159,
- 55160,
- 55161,
- 55162,
- 55163,
- 55164,
- 55165,
- 55166,
- 55167,
- 55168,
- 55169,
- 55170,
- 55171,
- 55172,
- 55173,
- 55174,
- 55175,
- 55176,
- 55177,
- 55178,
- 55179,
- 55180,
- 55181,
- 55182,
- 55183,
- 55184,
- 55185,
- 55186,
- 55187,
- 55188,
- 55189,
- 55190,
- 55191,
- 55192,
- 55193,
- 55194,
- 55195,
- 55196,
- 55197,
- 55198,
- 55199,
- 55200,
- 55201,
- 55202,
- 55203,
- 55216,
- 55217,
- 55218,
- 55219,
- 55220,
- 55221,
- 55222,
- 55223,
- 55224,
- 55225,
- 55226,
- 55227,
- 55228,
- 55229,
- 55230,
- 55231,
- 55232,
- 55233,
- 55234,
- 55235,
- 55236,
- 55237,
- 55238,
- 55243,
- 55244,
- 55245,
- 55246,
- 55247,
- 55248,
- 55249,
- 55250,
- 55251,
- 55252,
- 55253,
- 55254,
- 55255,
- 55256,
- 55257,
- 55258,
- 55259,
- 55260,
- 55261,
- 55262,
- 55263,
- 55264,
- 55265,
- 55266,
- 55267,
- 55268,
- 55269,
- 55270,
- 55271,
- 55272,
- 55273,
- 55274,
- 55275,
- 55276,
- 55277,
- 55278,
- 55279,
- 55280,
- 55281,
- 55282,
- 55283,
- 55284,
- 55285,
- 55286,
- 55287,
- 55288,
- 55289,
- 55290,
- 55291,
- 63744,
- 63745,
- 63746,
- 63747,
- 63748,
- 63749,
- 63750,
- 63751,
- 63752,
- 63753,
- 63754,
- 63755,
- 63756,
- 63757,
- 63758,
- 63759,
- 63760,
- 63761,
- 63762,
- 63763,
- 63764,
- 63765,
- 63766,
- 63767,
- 63768,
- 63769,
- 63770,
- 63771,
- 63772,
- 63773,
- 63774,
- 63775,
- 63776,
- 63777,
- 63778,
- 63779,
- 63780,
- 63781,
- 63782,
- 63783,
- 63784,
- 63785,
- 63786,
- 63787,
- 63788,
- 63789,
- 63790,
- 63791,
- 63792,
- 63793,
- 63794,
- 63795,
- 63796,
- 63797,
- 63798,
- 63799,
- 63800,
- 63801,
- 63802,
- 63803,
- 63804,
- 63805,
- 63806,
- 63807,
- 63808,
- 63809,
- 63810,
- 63811,
- 63812,
- 63813,
- 63814,
- 63815,
- 63816,
- 63817,
- 63818,
- 63819,
- 63820,
- 63821,
- 63822,
- 63823,
- 63824,
- 63825,
- 63826,
- 63827,
- 63828,
- 63829,
- 63830,
- 63831,
- 63832,
- 63833,
- 63834,
- 63835,
- 63836,
- 63837,
- 63838,
- 63839,
- 63840,
- 63841,
- 63842,
- 63843,
- 63844,
- 63845,
- 63846,
- 63847,
- 63848,
- 63849,
- 63850,
- 63851,
- 63852,
- 63853,
- 63854,
- 63855,
- 63856,
- 63857,
- 63858,
- 63859,
- 63860,
- 63861,
- 63862,
- 63863,
- 63864,
- 63865,
- 63866,
- 63867,
- 63868,
- 63869,
- 63870,
- 63871,
- 63872,
- 63873,
- 63874,
- 63875,
- 63876,
- 63877,
- 63878,
- 63879,
- 63880,
- 63881,
- 63882,
- 63883,
- 63884,
- 63885,
- 63886,
- 63887,
- 63888,
- 63889,
- 63890,
- 63891,
- 63892,
- 63893,
- 63894,
- 63895,
- 63896,
- 63897,
- 63898,
- 63899,
- 63900,
- 63901,
- 63902,
- 63903,
- 63904,
- 63905,
- 63906,
- 63907,
- 63908,
- 63909,
- 63910,
- 63911,
- 63912,
- 63913,
- 63914,
- 63915,
- 63916,
- 63917,
- 63918,
- 63919,
- 63920,
- 63921,
- 63922,
- 63923,
- 63924,
- 63925,
- 63926,
- 63927,
- 63928,
- 63929,
- 63930,
- 63931,
- 63932,
- 63933,
- 63934,
- 63935,
- 63936,
- 63937,
- 63938,
- 63939,
- 63940,
- 63941,
- 63942,
- 63943,
- 63944,
- 63945,
- 63946,
- 63947,
- 63948,
- 63949,
- 63950,
- 63951,
- 63952,
- 63953,
- 63954,
- 63955,
- 63956,
- 63957,
- 63958,
- 63959,
- 63960,
- 63961,
- 63962,
- 63963,
- 63964,
- 63965,
- 63966,
- 63967,
- 63968,
- 63969,
- 63970,
- 63971,
- 63972,
- 63973,
- 63974,
- 63975,
- 63976,
- 63977,
- 63978,
- 63979,
- 63980,
- 63981,
- 63982,
- 63983,
- 63984,
- 63985,
- 63986,
- 63987,
- 63988,
- 63989,
- 63990,
- 63991,
- 63992,
- 63993,
- 63994,
- 63995,
- 63996,
- 63997,
- 63998,
- 63999,
- 64000,
- 64001,
- 64002,
- 64003,
- 64004,
- 64005,
- 64006,
- 64007,
- 64008,
- 64009,
- 64010,
- 64011,
- 64012,
- 64013,
- 64014,
- 64015,
- 64016,
- 64017,
- 64018,
- 64019,
- 64020,
- 64021,
- 64022,
- 64023,
- 64024,
- 64025,
- 64026,
- 64027,
- 64028,
- 64029,
- 64030,
- 64031,
- 64032,
- 64033,
- 64034,
- 64035,
- 64036,
- 64037,
- 64038,
- 64039,
- 64040,
- 64041,
- 64042,
- 64043,
- 64044,
- 64045,
- 64046,
- 64047,
- 64048,
- 64049,
- 64050,
- 64051,
- 64052,
- 64053,
- 64054,
- 64055,
- 64056,
- 64057,
- 64058,
- 64059,
- 64060,
- 64061,
- 64062,
- 64063,
- 64064,
- 64065,
- 64066,
- 64067,
- 64068,
- 64069,
- 64070,
- 64071,
- 64072,
- 64073,
- 64074,
- 64075,
- 64076,
- 64077,
- 64078,
- 64079,
- 64080,
- 64081,
- 64082,
- 64083,
- 64084,
- 64085,
- 64086,
- 64087,
- 64088,
- 64089,
- 64090,
- 64091,
- 64092,
- 64093,
- 64094,
- 64095,
- 64096,
- 64097,
- 64098,
- 64099,
- 64100,
- 64101,
- 64102,
- 64103,
- 64104,
- 64105,
- 64106,
- 64107,
- 64108,
- 64109,
- 64112,
- 64113,
- 64114,
- 64115,
- 64116,
- 64117,
- 64118,
- 64119,
- 64120,
- 64121,
- 64122,
- 64123,
- 64124,
- 64125,
- 64126,
- 64127,
- 64128,
- 64129,
- 64130,
- 64131,
- 64132,
- 64133,
- 64134,
- 64135,
- 64136,
- 64137,
- 64138,
- 64139,
- 64140,
- 64141,
- 64142,
- 64143,
- 64144,
- 64145,
- 64146,
- 64147,
- 64148,
- 64149,
- 64150,
- 64151,
- 64152,
- 64153,
- 64154,
- 64155,
- 64156,
- 64157,
- 64158,
- 64159,
- 64160,
- 64161,
- 64162,
- 64163,
- 64164,
- 64165,
- 64166,
- 64167,
- 64168,
- 64169,
- 64170,
- 64171,
- 64172,
- 64173,
- 64174,
- 64175,
- 64176,
- 64177,
- 64178,
- 64179,
- 64180,
- 64181,
- 64182,
- 64183,
- 64184,
- 64185,
- 64186,
- 64187,
- 64188,
- 64189,
- 64190,
- 64191,
- 64192,
- 64193,
- 64194,
- 64195,
- 64196,
- 64197,
- 64198,
- 64199,
- 64200,
- 64201,
- 64202,
- 64203,
- 64204,
- 64205,
- 64206,
- 64207,
- 64208,
- 64209,
- 64210,
- 64211,
- 64212,
- 64213,
- 64214,
- 64215,
- 64216,
- 64217,
- 64256,
- 64257,
- 64258,
- 64259,
- 64260,
- 64261,
- 64262,
- 64275,
- 64276,
- 64277,
- 64278,
- 64279,
- 64285,
- 64287,
- 64288,
- 64289,
- 64290,
- 64291,
- 64292,
- 64293,
- 64294,
- 64295,
- 64296,
- 64298,
- 64299,
- 64300,
- 64301,
- 64302,
- 64303,
- 64304,
- 64305,
- 64306,
- 64307,
- 64308,
- 64309,
- 64310,
- 64312,
- 64313,
- 64314,
- 64315,
- 64316,
- 64318,
- 64320,
- 64321,
- 64323,
- 64324,
- 64326,
- 64327,
- 64328,
- 64329,
- 64330,
- 64331,
- 64332,
- 64333,
- 64334,
- 64335,
- 64336,
- 64337,
- 64338,
- 64339,
- 64340,
- 64341,
- 64342,
- 64343,
- 64344,
- 64345,
- 64346,
- 64347,
- 64348,
- 64349,
- 64350,
- 64351,
- 64352,
- 64353,
- 64354,
- 64355,
- 64356,
- 64357,
- 64358,
- 64359,
- 64360,
- 64361,
- 64362,
- 64363,
- 64364,
- 64365,
- 64366,
- 64367,
- 64368,
- 64369,
- 64370,
- 64371,
- 64372,
- 64373,
- 64374,
- 64375,
- 64376,
- 64377,
- 64378,
- 64379,
- 64380,
- 64381,
- 64382,
- 64383,
- 64384,
- 64385,
- 64386,
- 64387,
- 64388,
- 64389,
- 64390,
- 64391,
- 64392,
- 64393,
- 64394,
- 64395,
- 64396,
- 64397,
- 64398,
- 64399,
- 64400,
- 64401,
- 64402,
- 64403,
- 64404,
- 64405,
- 64406,
- 64407,
- 64408,
- 64409,
- 64410,
- 64411,
- 64412,
- 64413,
- 64414,
- 64415,
- 64416,
- 64417,
- 64418,
- 64419,
- 64420,
- 64421,
- 64422,
- 64423,
- 64424,
- 64425,
- 64426,
- 64427,
- 64428,
- 64429,
- 64430,
- 64431,
- 64432,
- 64433,
- 64467,
- 64468,
- 64469,
- 64470,
- 64471,
- 64472,
- 64473,
- 64474,
- 64475,
- 64476,
- 64477,
- 64478,
- 64479,
- 64480,
- 64481,
- 64482,
- 64483,
- 64484,
- 64485,
- 64486,
- 64487,
- 64488,
- 64489,
- 64490,
- 64491,
- 64492,
- 64493,
- 64494,
- 64495,
- 64496,
- 64497,
- 64498,
- 64499,
- 64500,
- 64501,
- 64502,
- 64503,
- 64504,
- 64505,
- 64506,
- 64507,
- 64508,
- 64509,
- 64510,
- 64511,
- 64512,
- 64513,
- 64514,
- 64515,
- 64516,
- 64517,
- 64518,
- 64519,
- 64520,
- 64521,
- 64522,
- 64523,
- 64524,
- 64525,
- 64526,
- 64527,
- 64528,
- 64529,
- 64530,
- 64531,
- 64532,
- 64533,
- 64534,
- 64535,
- 64536,
- 64537,
- 64538,
- 64539,
- 64540,
- 64541,
- 64542,
- 64543,
- 64544,
- 64545,
- 64546,
- 64547,
- 64548,
- 64549,
- 64550,
- 64551,
- 64552,
- 64553,
- 64554,
- 64555,
- 64556,
- 64557,
- 64558,
- 64559,
- 64560,
- 64561,
- 64562,
- 64563,
- 64564,
- 64565,
- 64566,
- 64567,
- 64568,
- 64569,
- 64570,
- 64571,
- 64572,
- 64573,
- 64574,
- 64575,
- 64576,
- 64577,
- 64578,
- 64579,
- 64580,
- 64581,
- 64582,
- 64583,
- 64584,
- 64585,
- 64586,
- 64587,
- 64588,
- 64589,
- 64590,
- 64591,
- 64592,
- 64593,
- 64594,
- 64595,
- 64596,
- 64597,
- 64598,
- 64599,
- 64600,
- 64601,
- 64602,
- 64603,
- 64604,
- 64605,
- 64606,
- 64607,
- 64608,
- 64609,
- 64610,
- 64611,
- 64612,
- 64613,
- 64614,
- 64615,
- 64616,
- 64617,
- 64618,
- 64619,
- 64620,
- 64621,
- 64622,
- 64623,
- 64624,
- 64625,
- 64626,
- 64627,
- 64628,
- 64629,
- 64630,
- 64631,
- 64632,
- 64633,
- 64634,
- 64635,
- 64636,
- 64637,
- 64638,
- 64639,
- 64640,
- 64641,
- 64642,
- 64643,
- 64644,
- 64645,
- 64646,
- 64647,
- 64648,
- 64649,
- 64650,
- 64651,
- 64652,
- 64653,
- 64654,
- 64655,
- 64656,
- 64657,
- 64658,
- 64659,
- 64660,
- 64661,
- 64662,
- 64663,
- 64664,
- 64665,
- 64666,
- 64667,
- 64668,
- 64669,
- 64670,
- 64671,
- 64672,
- 64673,
- 64674,
- 64675,
- 64676,
- 64677,
- 64678,
- 64679,
- 64680,
- 64681,
- 64682,
- 64683,
- 64684,
- 64685,
- 64686,
- 64687,
- 64688,
- 64689,
- 64690,
- 64691,
- 64692,
- 64693,
- 64694,
- 64695,
- 64696,
- 64697,
- 64698,
- 64699,
- 64700,
- 64701,
- 64702,
- 64703,
- 64704,
- 64705,
- 64706,
- 64707,
- 64708,
- 64709,
- 64710,
- 64711,
- 64712,
- 64713,
- 64714,
- 64715,
- 64716,
- 64717,
- 64718,
- 64719,
- 64720,
- 64721,
- 64722,
- 64723,
- 64724,
- 64725,
- 64726,
- 64727,
- 64728,
- 64729,
- 64730,
- 64731,
- 64732,
- 64733,
- 64734,
- 64735,
- 64736,
- 64737,
- 64738,
- 64739,
- 64740,
- 64741,
- 64742,
- 64743,
- 64744,
- 64745,
- 64746,
- 64747,
- 64748,
- 64749,
- 64750,
- 64751,
- 64752,
- 64753,
- 64754,
- 64755,
- 64756,
- 64757,
- 64758,
- 64759,
- 64760,
- 64761,
- 64762,
- 64763,
- 64764,
- 64765,
- 64766,
- 64767,
- 64768,
- 64769,
- 64770,
- 64771,
- 64772,
- 64773,
- 64774,
- 64775,
- 64776,
- 64777,
- 64778,
- 64779,
- 64780,
- 64781,
- 64782,
- 64783,
- 64784,
- 64785,
- 64786,
- 64787,
- 64788,
- 64789,
- 64790,
- 64791,
- 64792,
- 64793,
- 64794,
- 64795,
- 64796,
- 64797,
- 64798,
- 64799,
- 64800,
- 64801,
- 64802,
- 64803,
- 64804,
- 64805,
- 64806,
- 64807,
- 64808,
- 64809,
- 64810,
- 64811,
- 64812,
- 64813,
- 64814,
- 64815,
- 64816,
- 64817,
- 64818,
- 64819,
- 64820,
- 64821,
- 64822,
- 64823,
- 64824,
- 64825,
- 64826,
- 64827,
- 64828,
- 64829,
- 64848,
- 64849,
- 64850,
- 64851,
- 64852,
- 64853,
- 64854,
- 64855,
- 64856,
- 64857,
- 64858,
- 64859,
- 64860,
- 64861,
- 64862,
- 64863,
- 64864,
- 64865,
- 64866,
- 64867,
- 64868,
- 64869,
- 64870,
- 64871,
- 64872,
- 64873,
- 64874,
- 64875,
- 64876,
- 64877,
- 64878,
- 64879,
- 64880,
- 64881,
- 64882,
- 64883,
- 64884,
- 64885,
- 64886,
- 64887,
- 64888,
- 64889,
- 64890,
- 64891,
- 64892,
- 64893,
- 64894,
- 64895,
- 64896,
- 64897,
- 64898,
- 64899,
- 64900,
- 64901,
- 64902,
- 64903,
- 64904,
- 64905,
- 64906,
- 64907,
- 64908,
- 64909,
- 64910,
- 64911,
- 64914,
- 64915,
- 64916,
- 64917,
- 64918,
- 64919,
- 64920,
- 64921,
- 64922,
- 64923,
- 64924,
- 64925,
- 64926,
- 64927,
- 64928,
- 64929,
- 64930,
- 64931,
- 64932,
- 64933,
- 64934,
- 64935,
- 64936,
- 64937,
- 64938,
- 64939,
- 64940,
- 64941,
- 64942,
- 64943,
- 64944,
- 64945,
- 64946,
- 64947,
- 64948,
- 64949,
- 64950,
- 64951,
- 64952,
- 64953,
- 64954,
- 64955,
- 64956,
- 64957,
- 64958,
- 64959,
- 64960,
- 64961,
- 64962,
- 64963,
- 64964,
- 64965,
- 64966,
- 64967,
- 65008,
- 65009,
- 65010,
- 65011,
- 65012,
- 65013,
- 65014,
- 65015,
- 65016,
- 65017,
- 65018,
- 65019,
- 65136,
- 65137,
- 65138,
- 65139,
- 65140,
- 65142,
- 65143,
- 65144,
- 65145,
- 65146,
- 65147,
- 65148,
- 65149,
- 65150,
- 65151,
- 65152,
- 65153,
- 65154,
- 65155,
- 65156,
- 65157,
- 65158,
- 65159,
- 65160,
- 65161,
- 65162,
- 65163,
- 65164,
- 65165,
- 65166,
- 65167,
- 65168,
- 65169,
- 65170,
- 65171,
- 65172,
- 65173,
- 65174,
- 65175,
- 65176,
- 65177,
- 65178,
- 65179,
- 65180,
- 65181,
- 65182,
- 65183,
- 65184,
- 65185,
- 65186,
- 65187,
- 65188,
- 65189,
- 65190,
- 65191,
- 65192,
- 65193,
- 65194,
- 65195,
- 65196,
- 65197,
- 65198,
- 65199,
- 65200,
- 65201,
- 65202,
- 65203,
- 65204,
- 65205,
- 65206,
- 65207,
- 65208,
- 65209,
- 65210,
- 65211,
- 65212,
- 65213,
- 65214,
- 65215,
- 65216,
- 65217,
- 65218,
- 65219,
- 65220,
- 65221,
- 65222,
- 65223,
- 65224,
- 65225,
- 65226,
- 65227,
- 65228,
- 65229,
- 65230,
- 65231,
- 65232,
- 65233,
- 65234,
- 65235,
- 65236,
- 65237,
- 65238,
- 65239,
- 65240,
- 65241,
- 65242,
- 65243,
- 65244,
- 65245,
- 65246,
- 65247,
- 65248,
- 65249,
- 65250,
- 65251,
- 65252,
- 65253,
- 65254,
- 65255,
- 65256,
- 65257,
- 65258,
- 65259,
- 65260,
- 65261,
- 65262,
- 65263,
- 65264,
- 65265,
- 65266,
- 65267,
- 65268,
- 65269,
- 65270,
- 65271,
- 65272,
- 65273,
- 65274,
- 65275,
- 65276,
- 65313,
- 65314,
- 65315,
- 65316,
- 65317,
- 65318,
- 65319,
- 65320,
- 65321,
- 65322,
- 65323,
- 65324,
- 65325,
- 65326,
- 65327,
- 65328,
- 65329,
- 65330,
- 65331,
- 65332,
- 65333,
- 65334,
- 65335,
- 65336,
- 65337,
- 65338,
- 65345,
- 65346,
- 65347,
- 65348,
- 65349,
- 65350,
- 65351,
- 65352,
- 65353,
- 65354,
- 65355,
- 65356,
- 65357,
- 65358,
- 65359,
- 65360,
- 65361,
- 65362,
- 65363,
- 65364,
- 65365,
- 65366,
- 65367,
- 65368,
- 65369,
- 65370,
- 65382,
- 65383,
- 65384,
- 65385,
- 65386,
- 65387,
- 65388,
- 65389,
- 65390,
- 65391,
- 65392,
- 65393,
- 65394,
- 65395,
- 65396,
- 65397,
- 65398,
- 65399,
- 65400,
- 65401,
- 65402,
- 65403,
- 65404,
- 65405,
- 65406,
- 65407,
- 65408,
- 65409,
- 65410,
- 65411,
- 65412,
- 65413,
- 65414,
- 65415,
- 65416,
- 65417,
- 65418,
- 65419,
- 65420,
- 65421,
- 65422,
- 65423,
- 65424,
- 65425,
- 65426,
- 65427,
- 65428,
- 65429,
- 65430,
- 65431,
- 65432,
- 65433,
- 65434,
- 65435,
- 65436,
- 65437,
- 65438,
- 65439,
- 65440,
- 65441,
- 65442,
- 65443,
- 65444,
- 65445,
- 65446,
- 65447,
- 65448,
- 65449,
- 65450,
- 65451,
- 65452,
- 65453,
- 65454,
- 65455,
- 65456,
- 65457,
- 65458,
- 65459,
- 65460,
- 65461,
- 65462,
- 65463,
- 65464,
- 65465,
- 65466,
- 65467,
- 65468,
- 65469,
- 65470,
- 65474,
- 65475,
- 65476,
- 65477,
- 65478,
- 65479,
- 65482,
- 65483,
- 65484,
- 65485,
- 65486,
- 65487,
- 65490,
- 65491,
- 65492,
- 65493,
- 65494,
- 65495,
- 65498,
- 65499,
- 65500
-];
-
+var str = '170,181,186,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,710,711,712,713,714,715,716,717,718,719,720,721,736,737,738,739,740,748,750,880,881,882,883,884,886,887,890,891,892,893,902,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1369,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1749,1765,1766,1774,1775,1786,1787,1788,1791,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2365,2384,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2417,2418,2419,2420,2421,2422,2423,2425,2426,2427,2428,2429,2430,2431,2437,2438,2439,2440,2441,2442,2443,2444,2447,2448,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2474,2475,2476,2477,2478,2479,2480,2482,2486,2487,2488,2489,2493,2510,2524,2525,2527,2528,2529,2544,2545,2565,2566,2567,2568,2569,2570,2575,2576,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2602,2603,2604,2605,2606,2607,2608,2610,2611,2613,2614,2616,2617,2649,2650,2651,2652,2654,2674,2675,2676,2693,2694,2695,2696,2697,2698,2699,2700,2701,2703,2704,2705,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2730,2731,2732,2733,2734,2735,2736,2738,2739,2741,2742,2743,2744,2745,2749,2768,2784,2785,2821,2822,2823,2824,2825,2826,2827,2828,2831,2832,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2858,2859,2860,2861,2862,2863,2864,2866,2867,2869,2870,2871,2872,2873,2877,2908,2909,2911,2912,2913,2929,2947,2949,2950,2951,2952,2953,2954,2958,2959,2960,2962,2963,2964,2965,2969,2970,2972,2974,2975,2979,2980,2984,2985,2986,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3024,3077,3078,3079,3080,3081,3082,3083,3084,3086,3087,3088,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3125,3126,3127,3128,3129,3133,3160,3161,3168,3169,3205,3206,3207,3208,3209,3210,3211,3212,3214,3215,3216,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3253,3254,3255,3256,3257,3261,3294,3296,3297,3313,3314,3333,3334,3335,3336,3337,3338,3339,3340,3342,3343,3344,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3389,3406,3424,3425,3450,3451,3452,3453,3454,3455,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3507,3508,3509,3510,3511,3512,3513,3514,3515,3517,3520,3521,3522,3523,3524,3525,3526,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3634,3635,3648,3649,3650,3651,3652,3653,3654,3713,3714,3716,3719,3720,3722,3725,3732,3733,3734,3735,3737,3738,3739,3740,3741,3742,3743,3745,3746,3747,3749,3751,3754,3755,3757,3758,3759,3760,3762,3763,3773,3776,3777,3778,3779,3780,3782,3804,3805,3806,3807,3840,3904,3905,3906,3907,3908,3909,3910,3911,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3976,3977,3978,3979,3980,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4159,4176,4177,4178,4179,4180,4181,4186,4187,4188,4189,4193,4197,4198,4206,4207,4208,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4238,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4295,4301,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,4519,4520,4521,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4682,4683,4684,4685,4688,4689,4690,4691,4692,4693,4694,4696,4698,4699,4700,4701,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4746,4747,4748,4749,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782,4783,4784,4786,4787,4788,4789,4792,4793,4794,4795,4796,4797,4798,4800,4802,4803,4804,4805,4808,4809,4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4882,4883,4884,4885,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5792,5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5870,5871,5872,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5902,5903,5904,5905,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5998,5999,6000,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6103,6108,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6314,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6480,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6512,6513,6514,6515,6516,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6570,6571,6593,6594,6595,6596,6597,6598,6599,6656,6657,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674,6675,6676,6677,6678,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6823,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6981,6982,6983,6984,6985,6986,6987,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7086,7087,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7245,7246,7247,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7401,7402,7403,7404,7406,7407,7408,7409,7413,7414,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7960,7961,7962,7963,7964,7965,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000,8001,8002,8003,8004,8005,8008,8009,8010,8011,8012,8013,8016,8017,8018,8019,8020,8021,8022,8023,8025,8027,8029,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8118,8119,8120,8121,8122,8123,8124,8126,8130,8131,8132,8134,8135,8136,8137,8138,8139,8140,8144,8145,8146,8147,8150,8151,8152,8153,8154,8155,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8178,8179,8180,8182,8183,8184,8185,8186,8187,8188,8305,8319,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8450,8455,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8469,8473,8474,8475,8476,8477,8484,8486,8488,8490,8491,8492,8493,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8508,8509,8510,8511,8517,8518,8519,8520,8521,8526,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11312,11313,11314,11315,11316,11317,11318,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,11348,11349,11350,11351,11352,11353,11354,11355,11356,11357,11358,11360,11361,11362,11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11396,11397,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410,11411,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425,11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,11499,11500,11501,11502,11506,11507,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,11530,11531,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11559,11565,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11631,11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11680,11681,11682,11683,11684,11685,11686,11688,11689,11690,11691,11692,11693,11694,11696,11697,11698,11699,11700,11701,11702,11704,11705,11706,11707,11708,11709,11710,11712,11713,11714,11715,11716,11717,11718,11720,11721,11722,11723,11724,11725,11726,11728,11729,11730,11731,11732,11733,11734,11736,11737,11738,11739,11740,11741,11742,11823,12293,12294,12295,12321,12322,12323,12324,12325,12326,12327,12328,12329,12337,12338,12339,12340,12341,12344,12345,12346,12347,12348,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,12445,12446,12447,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12540,12541,12542,12543,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327,13328,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339,13340,13341,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351,13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382,13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430,13431,13432,13433,13434,13435,13436,13437,13438,13439,13440,13441,13442,13443,13444,13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,13458,13459,13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,13471,13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603,13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634,13635,13636,13637,13638,13639,13640,13641,13642,13643,13644,13645,13646,13647,13648,13649,13650,13651,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696,13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712,13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,13775,13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855,13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903,13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951,13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967,13968,13969,13970,13971,13972,13973,13974,13975,13976,13977,13978,13979,13980,13981,13982,13983,13984,13985,13986,13987,13988,13989,13990,13991,13992,13993,13994,13995,13996,13997,13998,13999,14000,14001,14002,14003,14004,14005,14006,14007,14008,14009,14010,14011,14012,14013,14014,14015,14016,14017,14018,14019,14020,14021,14022,14023,14024,14025,14026,14027,14028,14029,14030,14031,14032,14033,14034,14035,14036,14037,14038,14039,14040,14041,14042,14043,14044,14045,14046,14047,14048,14049,14050,14051,14052,14053,14054,14055,14056,14057,14058,14059,14060,14061,14062,14063,14064,14065,14066,14067,14068,14069,14070,14071,14072,14073,14074,14075,14076,14077,14078,14079,14080,14081,14082,14083,14084,14085,14086,14087,14088,14089,14090,14091,14092,14093,14094,14095,14096,14097,14098,14099,14100,14101,14102,14103,14104,14105,14106,14107,14108,14109,14110,14111,14112,14113,14114,14115,14116,14117,14118,14119,14120,14121,14122,14123,14124,14125,14126,14127,14128,14129,14130,14131,14132,14133,14134,14135,14136,14137,14138,14139,14140,14141,14142,14143,14144,14145,14146,14147,14148,14149,14150,14151,14152,14153,14154,14155,14156,14157,14158,14159,14160,14161,14162,14163,14164,14165,14166,14167,14168,14169,14170,14171,14172,14173,14174,14175,14176,14177,14178,14179,14180,14181,14182,14183,14184,14185,14186,14187,14188,14189,14190,14191,14192,14193,14194,14195,14196,14197,14198,14199,14200,14201,14202,14203,14204,14205,14206,14207,14208,14209,14210,14211,14212,14213,14214,14215,14216,14217,14218,14219,14220,14221,14222,14223,14224,14225,14226,14227,14228,14229,14230,14231,14232,14233,14234,14235,14236,14237,14238,14239,14240,14241,14242,14243,14244,14245,14246,14247,14248,14249,14250,14251,14252,14253,14254,14255,14256,14257,14258,14259,14260,14261,14262,14263,14264,14265,14266,14267,14268,14269,14270,14271,14272,14273,14274,14275,14276,14277,14278,14279,14280,14281,14282,14283,14284,14285,14286,14287,14288,14289,14290,14291,14292,14293,14294,14295,14296,14297,14298,14299,14300,14301,14302,14303,14304,14305,14306,14307,14308,14309,14310,14311,14312,14313,14314,14315,14316,14317,14318,14319,14320,14321,14322,14323,14324,14325,14326,14327,14328,14329,14330,14331,14332,14333,14334,14335,14336,14337,14338,14339,14340,14341,14342,14343,14344,14345,14346,14347,14348,14349,14350,14351,14352,14353,14354,14355,14356,14357,14358,14359,14360,14361,14362,14363,14364,14365,14366,14367,14368,14369,14370,14371,14372,14373,14374,14375,14376,14377,14378,14379,14380,14381,14382,14383,14384,14385,14386,14387,14388,14389,14390,14391,14392,14393,14394,14395,14396,14397,14398,14399,14400,14401,14402,14403,14404,14405,14406,14407,14408,14409,14410,14411,14412,14413,14414,14415,14416,14417,14418,14419,14420,14421,14422,14423,14424,14425,14426,14427,14428,14429,14430,14431,14432,14433,14434,14435,14436,14437,14438,14439,14440,14441,14442,14443,14444,14445,14446,14447,14448,14449,14450,14451,14452,14453,14454,14455,14456,14457,14458,14459,14460,14461,14462,14463,14464,14465,14466,14467,14468,14469,14470,14471,14472,14473,14474,14475,14476,14477,14478,14479,14480,14481,14482,14483,14484,14485,14486,14487,14488,14489,14490,14491,14492,14493,14494,14495,14496,14497,14498,14499,14500,14501,14502,14503,14504,14505,14506,14507,14508,14509,14510,14511,14512,14513,14514,14515,14516,14517,14518,14519,14520,14521,14522,14523,14524,14525,14526,14527,14528,14529,14530,14531,14532,14533,14534,14535,14536,14537,14538,14539,14540,14541,14542,14543,14544,14545,14546,14547,14548,14549,14550,14551,14552,14553,14554,14555,14556,14557,14558,14559,14560,14561,14562,14563,14564,14565,14566,14567,14568,14569,14570,14571,14572,14573,14574,14575,14576,14577,14578,14579,14580,14581,14582,14583,14584,14585,14586,14587,14588,14589,14590,14591,14592,14593,14594,14595,14596,14597,14598,14599,14600,14601,14602,14603,14604,14605,14606,14607,14608,14609,14610,14611,14612,14613,14614,14615,14616,14617,14618,14619,14620,14621,14622,14623,14624,14625,14626,14627,14628,14629,14630,14631,14632,14633,14634,14635,14636,14637,14638,14639,14640,14641,14642,14643,14644,14645,14646,14647,14648,14649,14650,14651,14652,14653,14654,14655,14656,14657,14658,14659,14660,14661,14662,14663,14664,14665,14666,14667,14668,14669,14670,14671,14672,14673,14674,14675,14676,14677,14678,14679,14680,14681,14682,14683,14684,14685,14686,14687,14688,14689,14690,14691,14692,14693,14694,14695,14696,14697,14698,14699,14700,14701,14702,14703,14704,14705,14706,14707,14708,14709,14710,14711,14712,14713,14714,14715,14716,14717,14718,14719,14720,14721,14722,14723,14724,14725,14726,14727,14728,14729,14730,14731,14732,14733,14734,14735,14736,14737,14738,14739,14740,14741,14742,14743,14744,14745,14746,14747,14748,14749,14750,14751,14752,14753,14754,14755,14756,14757,14758,14759,14760,14761,14762,14763,14764,14765,14766,14767,14768,14769,14770,14771,14772,14773,14774,14775,14776,14777,14778,14779,14780,14781,14782,14783,14784,14785,14786,14787,14788,14789,14790,14791,14792,14793,14794,14795,14796,14797,14798,14799,14800,14801,14802,14803,14804,14805,14806,14807,14808,14809,14810,14811,14812,14813,14814,14815,14816,14817,14818,14819,14820,14821,14822,14823,14824,14825,14826,14827,14828,14829,14830,14831,14832,14833,14834,14835,14836,14837,14838,14839,14840,14841,14842,14843,14844,14845,14846,14847,14848,14849,14850,14851,14852,14853,14854,14855,14856,14857,14858,14859,14860,14861,14862,14863,14864,14865,14866,14867,14868,14869,14870,14871,14872,14873,14874,14875,14876,14877,14878,14879,14880,14881,14882,14883,14884,14885,14886,14887,14888,14889,14890,14891,14892,14893,14894,14895,14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907,14908,14909,14910,14911,14912,14913,14914,14915,14916,14917,14918,14919,14920,14921,14922,14923,14924,14925,14926,14927,14928,14929,14930,14931,14932,14933,14934,14935,14936,14937,14938,14939,14940,14941,14942,14943,14944,14945,14946,14947,14948,14949,14950,14951,14952,14953,14954,14955,14956,14957,14958,14959,14960,14961,14962,14963,14964,14965,14966,14967,14968,14969,14970,14971,14972,14973,14974,14975,14976,14977,14978,14979,14980,14981,14982,14983,14984,14985,14986,14987,14988,14989,14990,14991,14992,14993,14994,14995,14996,14997,14998,14999,15000,15001,15002,15003,15004,15005,15006,15007,15008,15009,15010,15011,15012,15013,15014,15015,15016,15017,15018,15019,15020,15021,15022,15023,15024,15025,15026,15027,15028,15029,15030,15031,15032,15033,15034,15035,15036,15037,15038,15039,15040,15041,15042,15043,15044,15045,15046,15047,15048,15049,15050,15051,15052,15053,15054,15055,15056,15057,15058,15059,15060,15061,15062,15063,15064,15065,15066,15067,15068,15069,15070,15071,15072,15073,15074,15075,15076,15077,15078,15079,15080,15081,15082,15083,15084,15085,15086,15087,15088,15089,15090,15091,15092,15093,15094,15095,15096,15097,15098,15099,15100,15101,15102,15103,15104,15105,15106,15107,15108,15109,15110,15111,15112,15113,15114,15115,15116,15117,15118,15119,15120,15121,15122,15123,15124,15125,15126,15127,15128,15129,15130,15131,15132,15133,15134,15135,15136,15137,15138,15139,15140,15141,15142,15143,15144,15145,15146,15147,15148,15149,15150,15151,15152,15153,15154,15155,15156,15157,15158,15159,15160,15161,15162,15163,15164,15165,15166,15167,15168,15169,15170,15171,15172,15173,15174,15175,15176,15177,15178,15179,15180,15181,15182,15183,15184,15185,15186,15187,15188,15189,15190,15191,15192,15193,15194,15195,15196,15197,15198,15199,15200,15201,15202,15203,15204,15205,15206,15207,15208,15209,15210,15211,15212,15213,15214,15215,15216,15217,15218,15219,15220,15221,15222,15223,15224,15225,15226,15227,15228,15229,15230,15231,15232,15233,15234,15235,15236,15237,15238,15239,15240,15241,15242,15243,15244,15245,15246,15247,15248,15249,15250,15251,15252,15253,15254,15255,15256,15257,15258,15259,15260,15261,15262,15263,15264,15265,15266,15267,15268,15269,15270,15271,15272,15273,15274,15275,15276,15277,15278,15279,15280,15281,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,15300,15301,15302,15303,15304,15305,15306,15307,15308,15309,15310,15311,15312,15313,15314,15315,15316,15317,15318,15319,15320,15321,15322,15323,15324,15325,15326,15327,15328,15329,15330,15331,15332,15333,15334,15335,15336,15337,15338,15339,15340,15341,15342,15343,15344,15345,15346,15347,15348,15349,15350,15351,15352,15353,15354,15355,15356,15357,15358,15359,15360,15361,15362,15363,15364,15365,15366,15367,15368,15369,15370,15371,15372,15373,15374,15375,15376,15377,15378,15379,15380,15381,15382,15383,15384,15385,15386,15387,15388,15389,15390,15391,15392,15393,15394,15395,15396,15397,15398,15399,15400,15401,15402,15403,15404,15405,15406,15407,15408,15409,15410,15411,15412,15413,15414,15415,15416,15417,15418,15419,15420,15421,15422,15423,15424,15425,15426,15427,15428,15429,15430,15431,15432,15433,15434,15435,15436,15437,15438,15439,15440,15441,15442,15443,15444,15445,15446,15447,15448,15449,15450,15451,15452,15453,15454,15455,15456,15457,15458,15459,15460,15461,15462,15463,15464,15465,15466,15467,15468,15469,15470,15471,15472,15473,15474,15475,15476,15477,15478,15479,15480,15481,15482,15483,15484,15485,15486,15487,15488,15489,15490,15491,15492,15493,15494,15495,15496,15497,15498,15499,15500,15501,15502,15503,15504,15505,15506,15507,15508,15509,15510,15511,15512,15513,15514,15515,15516,15517,15518,15519,15520,15521,15522,15523,15524,15525,15526,15527,15528,15529,15530,15531,15532,15533,15534,15535,15536,15537,15538,15539,15540,15541,15542,15543,15544,15545,15546,15547,15548,15549,15550,15551,15552,15553,15554,15555,15556,15557,15558,15559,15560,15561,15562,15563,15564,15565,15566,15567,15568,15569,15570,15571,15572,15573,15574,15575,15576,15577,15578,15579,15580,15581,15582,15583,15584,15585,15586,15587,15588,15589,15590,15591,15592,15593,15594,15595,15596,15597,15598,15599,15600,15601,15602,15603,15604,15605,15606,15607,15608,15609,15610,15611,15612,15613,15614,15615,15616,15617,15618,15619,15620,15621,15622,15623,15624,15625,15626,15627,15628,15629,15630,15631,15632,15633,15634,15635,15636,15637,15638,15639,15640,15641,15642,15643,15644,15645,15646,15647,15648,15649,15650,15651,15652,15653,15654,15655,15656,15657,15658,15659,15660,15661,15662,15663,15664,15665,15666,15667,15668,15669,15670,15671,15672,15673,15674,15675,15676,15677,15678,15679,15680,15681,15682,15683,15684,15685,15686,15687,15688,15689,15690,15691,15692,15693,15694,15695,15696,15697,15698,15699,15700,15701,15702,15703,15704,15705,15706,15707,15708,15709,15710,15711,15712,15713,15714,15715,15716,15717,15718,15719,15720,15721,15722,15723,15724,15725,15726,15727,15728,15729,15730,15731,15732,15733,15734,15735,15736,15737,15738,15739,15740,15741,15742,15743,15744,15745,15746,15747,15748,15749,15750,15751,15752,15753,15754,15755,15756,15757,15758,15759,15760,15761,15762,15763,15764,15765,15766,15767,15768,15769,15770,15771,15772,15773,15774,15775,15776,15777,15778,15779,15780,15781,15782,15783,15784,15785,15786,15787,15788,15789,15790,15791,15792,15793,15794,15795,15796,15797,15798,15799,15800,15801,15802,15803,15804,15805,15806,15807,15808,15809,15810,15811,15812,15813,15814,15815,15816,15817,15818,15819,15820,15821,15822,15823,15824,15825,15826,15827,15828,15829,15830,15831,15832,15833,15834,15835,15836,15837,15838,15839,15840,15841,15842,15843,15844,15845,15846,15847,15848,15849,15850,15851,15852,15853,15854,15855,15856,15857,15858,15859,15860,15861,15862,15863,15864,15865,15866,15867,15868,15869,15870,15871,15872,15873,15874,15875,15876,15877,15878,15879,15880,15881,15882,15883,15884,15885,15886,15887,15888,15889,15890,15891,15892,15893,15894,15895,15896,15897,15898,15899,15900,15901,15902,15903,15904,15905,15906,15907,15908,15909,15910,15911,15912,15913,15914,15915,15916,15917,15918,15919,15920,15921,15922,15923,15924,15925,15926,15927,15928,15929,15930,15931,15932,15933,15934,15935,15936,15937,15938,15939,15940,15941,15942,15943,15944,15945,15946,15947,15948,15949,15950,15951,15952,15953,15954,15955,15956,15957,15958,15959,15960,15961,15962,15963,15964,15965,15966,15967,15968,15969,15970,15971,15972,15973,15974,15975,15976,15977,15978,15979,15980,15981,15982,15983,15984,15985,15986,15987,15988,15989,15990,15991,15992,15993,15994,15995,15996,15997,15998,15999,16000,16001,16002,16003,16004,16005,16006,16007,16008,16009,16010,16011,16012,16013,16014,16015,16016,16017,16018,16019,16020,16021,16022,16023,16024,16025,16026,16027,16028,16029,16030,16031,16032,16033,16034,16035,16036,16037,16038,16039,16040,16041,16042,16043,16044,16045,16046,16047,16048,16049,16050,16051,16052,16053,16054,16055,16056,16057,16058,16059,16060,16061,16062,16063,16064,16065,16066,16067,16068,16069,16070,16071,16072,16073,16074,16075,16076,16077,16078,16079,16080,16081,16082,16083,16084,16085,16086,16087,16088,16089,16090,16091,16092,16093,16094,16095,16096,16097,16098,16099,16100,16101,16102,16103,16104,16105,16106,16107,16108,16109,16110,16111,16112,16113,16114,16115,16116,16117,16118,16119,16120,16121,16122,16123,16124,16125,16126,16127,16128,16129,16130,16131,16132,16133,16134,16135,16136,16137,16138,16139,16140,16141,16142,16143,16144,16145,16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167,16168,16169,16170,16171,16172,16173,16174,16175,16176,16177,16178,16179,16180,16181,16182,16183,16184,16185,16186,16187,16188,16189,16190,16191,16192,16193,16194,16195,16196,16197,16198,16199,16200,16201,16202,16203,16204,16205,16206,16207,16208,16209,16210,16211,16212,16213,16214,16215,16216,16217,16218,16219,16220,16221,16222,16223,16224,16225,16226,16227,16228,16229,16230,16231,16232,16233,16234,16235,16236,16237,16238,16239,16240,16241,16242,16243,16244,16245,16246,16247,16248,16249,16250,16251,16252,16253,16254,16255,16256,16257,16258,16259,16260,16261,16262,16263,16264,16265,16266,16267,16268,16269,16270,16271,16272,16273,16274,16275,16276,16277,16278,16279,16280,16281,16282,16283,16284,16285,16286,16287,16288,16289,16290,16291,16292,16293,16294,16295,16296,16297,16298,16299,16300,16301,16302,16303,16304,16305,16306,16307,16308,16309,16310,16311,16312,16313,16314,16315,16316,16317,16318,16319,16320,16321,16322,16323,16324,16325,16326,16327,16328,16329,16330,16331,16332,16333,16334,16335,16336,16337,16338,16339,16340,16341,16342,16343,16344,16345,16346,16347,16348,16349,16350,16351,16352,16353,16354,16355,16356,16357,16358,16359,16360,16361,16362,16363,16364,16365,16366,16367,16368,16369,16370,16371,16372,16373,16374,16375,16376,16377,16378,16379,16380,16381,16382,16383,16384,16385,16386,16387,16388,16389,16390,16391,16392,16393,16394,16395,16396,16397,16398,16399,16400,16401,16402,16403,16404,16405,16406,16407,16408,16409,16410,16411,16412,16413,16414,16415,16416,16417,16418,16419,16420,16421,16422,16423,16424,16425,16426,16427,16428,16429,16430,16431,16432,16433,16434,16435,16436,16437,16438,16439,16440,16441,16442,16443,16444,16445,16446,16447,16448,16449,16450,16451,16452,16453,16454,16455,16456,16457,16458,16459,16460,16461,16462,16463,16464,16465,16466,16467,16468,16469,16470,16471,16472,16473,16474,16475,16476,16477,16478,16479,16480,16481,16482,16483,16484,16485,16486,16487,16488,16489,16490,16491,16492,16493,16494,16495,16496,16497,16498,16499,16500,16501,16502,16503,16504,16505,16506,16507,16508,16509,16510,16511,16512,16513,16514,16515,16516,16517,16518,16519,16520,16521,16522,16523,16524,16525,16526,16527,16528,16529,16530,16531,16532,16533,16534,16535,16536,16537,16538,16539,16540,16541,16542,16543,16544,16545,16546,16547,16548,16549,16550,16551,16552,16553,16554,16555,16556,16557,16558,16559,16560,16561,16562,16563,16564,16565,16566,16567,16568,16569,16570,16571,16572,16573,16574,16575,16576,16577,16578,16579,16580,16581,16582,16583,16584,16585,16586,16587,16588,16589,16590,16591,16592,16593,16594,16595,16596,16597,16598,16599,16600,16601,16602,16603,16604,16605,16606,16607,16608,16609,16610,16611,16612,16613,16614,16615,16616,16617,16618,16619,16620,16621,16622,16623,16624,16625,16626,16627,16628,16629,16630,16631,16632,16633,16634,16635,16636,16637,16638,16639,16640,16641,16642,16643,16644,16645,16646,16647,16648,16649,16650,16651,16652,16653,16654,16655,16656,16657,16658,16659,16660,16661,16662,16663,16664,16665,16666,16667,16668,16669,16670,16671,16672,16673,16674,16675,16676,16677,16678,16679,16680,16681,16682,16683,16684,16685,16686,16687,16688,16689,16690,16691,16692,16693,16694,16695,16696,16697,16698,16699,16700,16701,16702,16703,16704,16705,16706,16707,16708,16709,16710,16711,16712,16713,16714,16715,16716,16717,16718,16719,16720,16721,16722,16723,16724,16725,16726,16727,16728,16729,16730,16731,16732,16733,16734,16735,16736,16737,16738,16739,16740,16741,16742,16743,16744,16745,16746,16747,16748,16749,16750,16751,16752,16753,16754,16755,16756,16757,16758,16759,16760,16761,16762,16763,16764,16765,16766,16767,16768,16769,16770,16771,16772,16773,16774,16775,16776,16777,16778,16779,16780,16781,16782,16783,16784,16785,16786,16787,16788,16789,16790,16791,16792,16793,16794,16795,16796,16797,16798,16799,16800,16801,16802,16803,16804,16805,16806,16807,16808,16809,16810,16811,16812,16813,16814,16815,16816,16817,16818,16819,16820,16821,16822,16823,16824,16825,16826,16827,16828,16829,16830,16831,16832,16833,16834,16835,16836,16837,16838,16839,16840,16841,16842,16843,16844,16845,16846,16847,16848,16849,16850,16851,16852,16853,16854,16855,16856,16857,16858,16859,16860,16861,16862,16863,16864,16865,16866,16867,16868,16869,16870,16871,16872,16873,16874,16875,16876,16877,16878,16879,16880,16881,16882,16883,16884,16885,16886,16887,16888,16889,16890,16891,16892,16893,16894,16895,16896,16897,16898,16899,16900,16901,16902,16903,16904,16905,16906,16907,16908,16909,16910,16911,16912,16913,16914,16915,16916,16917,16918,16919,16920,16921,16922,16923,16924,16925,16926,16927,16928,16929,16930,16931,16932,16933,16934,16935,16936,16937,16938,16939,16940,16941,16942,16943,16944,16945,16946,16947,16948,16949,16950,16951,16952,16953,16954,16955,16956,16957,16958,16959,16960,16961,16962,16963,16964,16965,16966,16967,16968,16969,16970,16971,16972,16973,16974,16975,16976,16977,16978,16979,16980,16981,16982,16983,16984,16985,16986,16987,16988,16989,16990,16991,16992,16993,16994,16995,16996,16997,16998,16999,17000,17001,17002,17003,17004,17005,17006,17007,17008,17009,17010,17011,17012,17013,17014,17015,17016,17017,17018,17019,17020,17021,17022,17023,17024,17025,17026,17027,17028,17029,17030,17031,17032,17033,17034,17035,17036,17037,17038,17039,17040,17041,17042,17043,17044,17045,17046,17047,17048,17049,17050,17051,17052,17053,17054,17055,17056,17057,17058,17059,17060,17061,17062,17063,17064,17065,17066,17067,17068,17069,17070,17071,17072,17073,17074,17075,17076,17077,17078,17079,17080,17081,17082,17083,17084,17085,17086,17087,17088,17089,17090,17091,17092,17093,17094,17095,17096,17097,17098,17099,17100,17101,17102,17103,17104,17105,17106,17107,17108,17109,17110,17111,17112,17113,17114,17115,17116,17117,17118,17119,17120,17121,17122,17123,17124,17125,17126,17127,17128,17129,17130,17131,17132,17133,17134,17135,17136,17137,17138,17139,17140,17141,17142,17143,17144,17145,17146,17147,17148,17149,17150,17151,17152,17153,17154,17155,17156,17157,17158,17159,17160,17161,17162,17163,17164,17165,17166,17167,17168,17169,17170,17171,17172,17173,17174,17175,17176,17177,17178,17179,17180,17181,17182,17183,17184,17185,17186,17187,17188,17189,17190,17191,17192,17193,17194,17195,17196,17197,17198,17199,17200,17201,17202,17203,17204,17205,17206,17207,17208,17209,17210,17211,17212,17213,17214,17215,17216,17217,17218,17219,17220,17221,17222,17223,17224,17225,17226,17227,17228,17229,17230,17231,17232,17233,17234,17235,17236,17237,17238,17239,17240,17241,17242,17243,17244,17245,17246,17247,17248,17249,17250,17251,17252,17253,17254,17255,17256,17257,17258,17259,17260,17261,17262,17263,17264,17265,17266,17267,17268,17269,17270,17271,17272,17273,17274,17275,17276,17277,17278,17279,17280,17281,17282,17283,17284,17285,17286,17287,17288,17289,17290,17291,17292,17293,17294,17295,17296,17297,17298,17299,17300,17301,17302,17303,17304,17305,17306,17307,17308,17309,17310,17311,17312,17313,17314,17315,17316,17317,17318,17319,17320,17321,17322,17323,17324,17325,17326,17327,17328,17329,17330,17331,17332,17333,17334,17335,17336,17337,17338,17339,17340,17341,17342,17343,17344,17345,17346,17347,17348,17349,17350,17351,17352,17353,17354,17355,17356,17357,17358,17359,17360,17361,17362,17363,17364,17365,17366,17367,17368,17369,17370,17371,17372,17373,17374,17375,17376,17377,17378,17379,17380,17381,17382,17383,17384,17385,17386,17387,17388,17389,17390,17391,17392,17393,17394,17395,17396,17397,17398,17399,17400,17401,17402,17403,17404,17405,17406,17407,17408,17409,17410,17411,17412,17413,17414,17415,17416,17417,17418,17419,17420,17421,17422,17423,17424,17425,17426,17427,17428,17429,17430,17431,17432,17433,17434,17435,17436,17437,17438,17439,17440,17441,17442,17443,17444,17445,17446,17447,17448,17449,17450,17451,17452,17453,17454,17455,17456,17457,17458,17459,17460,17461,17462,17463,17464,17465,17466,17467,17468,17469,17470,17471,17472,17473,17474,17475,17476,17477,17478,17479,17480,17481,17482,17483,17484,17485,17486,17487,17488,17489,17490,17491,17492,17493,17494,17495,17496,17497,17498,17499,17500,17501,17502,17503,17504,17505,17506,17507,17508,17509,17510,17511,17512,17513,17514,17515,17516,17517,17518,17519,17520,17521,17522,17523,17524,17525,17526,17527,17528,17529,17530,17531,17532,17533,17534,17535,17536,17537,17538,17539,17540,17541,17542,17543,17544,17545,17546,17547,17548,17549,17550,17551,17552,17553,17554,17555,17556,17557,17558,17559,17560,17561,17562,17563,17564,17565,17566,17567,17568,17569,17570,17571,17572,17573,17574,17575,17576,17577,17578,17579,17580,17581,17582,17583,17584,17585,17586,17587,17588,17589,17590,17591,17592,17593,17594,17595,17596,17597,17598,17599,17600,17601,17602,17603,17604,17605,17606,17607,17608,17609,17610,17611,17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,17640,17641,17642,17643,17644,17645,17646,17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683,17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695,17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707,17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719,17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731,17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743,17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755,17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767,17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779,17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791,17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803,17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815,17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827,17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839,17840,17841,17842,17843,17844,17845,17846,17847,17848,17849,17850,17851,17852,17853,17854,17855,17856,17857,17858,17859,17860,17861,17862,17863,17864,17865,17866,17867,17868,17869,17870,17871,17872,17873,17874,17875,17876,17877,17878,17879,17880,17881,17882,17883,17884,17885,17886,17887,17888,17889,17890,17891,17892,17893,17894,17895,17896,17897,17898,17899,17900,17901,17902,17903,17904,17905,17906,17907,17908,17909,17910,17911,17912,17913,17914,17915,17916,17917,17918,17919,17920,17921,17922,17923,17924,17925,17926,17927,17928,17929,17930,17931,17932,17933,17934,17935,17936,17937,17938,17939,17940,17941,17942,17943,17944,17945,17946,17947,17948,17949,17950,17951,17952,17953,17954,17955,17956,17957,17958,17959,17960,17961,17962,17963,17964,17965,17966,17967,17968,17969,17970,17971,17972,17973,17974,17975,17976,17977,17978,17979,17980,17981,17982,17983,17984,17985,17986,17987,17988,17989,17990,17991,17992,17993,17994,17995,17996,17997,17998,17999,18000,18001,18002,18003,18004,18005,18006,18007,18008,18009,18010,18011,18012,18013,18014,18015,18016,18017,18018,18019,18020,18021,18022,18023,18024,18025,18026,18027,18028,18029,18030,18031,18032,18033,18034,18035,18036,18037,18038,18039,18040,18041,18042,18043,18044,18045,18046,18047,18048,18049,18050,18051,18052,18053,18054,18055,18056,18057,18058,18059,18060,18061,18062,18063,18064,18065,18066,18067,18068,18069,18070,18071,18072,18073,18074,18075,18076,18077,18078,18079,18080,18081,18082,18083,18084,18085,18086,18087,18088,18089,18090,18091,18092,18093,18094,18095,18096,18097,18098,18099,18100,18101,18102,18103,18104,18105,18106,18107,18108,18109,18110,18111,18112,18113,18114,18115,18116,18117,18118,18119,18120,18121,18122,18123,18124,18125,18126,18127,18128,18129,18130,18131,18132,18133,18134,18135,18136,18137,18138,18139,18140,18141,18142,18143,18144,18145,18146,18147,18148,18149,18150,18151,18152,18153,18154,18155,18156,18157,18158,18159,18160,18161,18162,18163,18164,18165,18166,18167,18168,18169,18170,18171,18172,18173,18174,18175,18176,18177,18178,18179,18180,18181,18182,18183,18184,18185,18186,18187,18188,18189,18190,18191,18192,18193,18194,18195,18196,18197,18198,18199,18200,18201,18202,18203,18204,18205,18206,18207,18208,18209,18210,18211,18212,18213,18214,18215,18216,18217,18218,18219,18220,18221,18222,18223,18224,18225,18226,18227,18228,18229,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,18242,18243,18244,18245,18246,18247,18248,18249,18250,18251,18252,18253,18254,18255,18256,18257,18258,18259,18260,18261,18262,18263,18264,18265,18266,18267,18268,18269,18270,18271,18272,18273,18274,18275,18276,18277,18278,18279,18280,18281,18282,18283,18284,18285,18286,18287,18288,18289,18290,18291,18292,18293,18294,18295,18296,18297,18298,18299,18300,18301,18302,18303,18304,18305,18306,18307,18308,18309,18310,18311,18312,18313,18314,18315,18316,18317,18318,18319,18320,18321,18322,18323,18324,18325,18326,18327,18328,18329,18330,18331,18332,18333,18334,18335,18336,18337,18338,18339,18340,18341,18342,18343,18344,18345,18346,18347,18348,18349,18350,18351,18352,18353,18354,18355,18356,18357,18358,18359,18360,18361,18362,18363,18364,18365,18366,18367,18368,18369,18370,18371,18372,18373,18374,18375,18376,18377,18378,18379,18380,18381,18382,18383,18384,18385,18386,18387,18388,18389,18390,18391,18392,18393,18394,18395,18396,18397,18398,18399,18400,18401,18402,18403,18404,18405,18406,18407,18408,18409,18410,18411,18412,18413,18414,18415,18416,18417,18418,18419,18420,18421,18422,18423,18424,18425,18426,18427,18428,18429,18430,18431,18432,18433,18434,18435,18436,18437,18438,18439,18440,18441,18442,18443,18444,18445,18446,18447,18448,18449,18450,18451,18452,18453,18454,18455,18456,18457,18458,18459,18460,18461,18462,18463,18464,18465,18466,18467,18468,18469,18470,18471,18472,18473,18474,18475,18476,18477,18478,18479,18480,18481,18482,18483,18484,18485,18486,18487,18488,18489,18490,18491,18492,18493,18494,18495,18496,18497,18498,18499,18500,18501,18502,18503,18504,18505,18506,18507,18508,18509,18510,18511,18512,18513,18514,18515,18516,18517,18518,18519,18520,18521,18522,18523,18524,18525,18526,18527,18528,18529,18530,18531,18532,18533,18534,18535,18536,18537,18538,18539,18540,18541,18542,18543,18544,18545,18546,18547,18548,18549,18550,18551,18552,18553,18554,18555,18556,18557,18558,18559,18560,18561,18562,18563,18564,18565,18566,18567,18568,18569,18570,18571,18572,18573,18574,18575,18576,18577,18578,18579,18580,18581,18582,18583,18584,18585,18586,18587,18588,18589,18590,18591,18592,18593,18594,18595,18596,18597,18598,18599,18600,18601,18602,18603,18604,18605,18606,18607,18608,18609,18610,18611,18612,18613,18614,18615,18616,18617,18618,18619,18620,18621,18622,18623,18624,18625,18626,18627,18628,18629,18630,18631,18632,18633,18634,18635,18636,18637,18638,18639,18640,18641,18642,18643,18644,18645,18646,18647,18648,18649,18650,18651,18652,18653,18654,18655,18656,18657,18658,18659,18660,18661,18662,18663,18664,18665,18666,18667,18668,18669,18670,18671,18672,18673,18674,18675,18676,18677,18678,18679,18680,18681,18682,18683,18684,18685,18686,18687,18688,18689,18690,18691,18692,18693,18694,18695,18696,18697,18698,18699,18700,18701,18702,18703,18704,18705,18706,18707,18708,18709,18710,18711,18712,18713,18714,18715,18716,18717,18718,18719,18720,18721,18722,18723,18724,18725,18726,18727,18728,18729,18730,18731,18732,18733,18734,18735,18736,18737,18738,18739,18740,18741,18742,18743,18744,18745,18746,18747,18748,18749,18750,18751,18752,18753,18754,18755,18756,18757,18758,18759,18760,18761,18762,18763,18764,18765,18766,18767,18768,18769,18770,18771,18772,18773,18774,18775,18776,18777,18778,18779,18780,18781,18782,18783,18784,18785,18786,18787,18788,18789,18790,18791,18792,18793,18794,18795,18796,18797,18798,18799,18800,18801,18802,18803,18804,18805,18806,18807,18808,18809,18810,18811,18812,18813,18814,18815,18816,18817,18818,18819,18820,18821,18822,18823,18824,18825,18826,18827,18828,18829,18830,18831,18832,18833,18834,18835,18836,18837,18838,18839,18840,18841,18842,18843,18844,18845,18846,18847,18848,18849,18850,18851,18852,18853,18854,18855,18856,18857,18858,18859,18860,18861,18862,18863,18864,18865,18866,18867,18868,18869,18870,18871,18872,18873,18874,18875,18876,18877,18878,18879,18880,18881,18882,18883,18884,18885,18886,18887,18888,18889,18890,18891,18892,18893,18894,18895,18896,18897,18898,18899,18900,18901,18902,18903,18904,18905,18906,18907,18908,18909,18910,18911,18912,18913,18914,18915,18916,18917,18918,18919,18920,18921,18922,18923,18924,18925,18926,18927,18928,18929,18930,18931,18932,18933,18934,18935,18936,18937,18938,18939,18940,18941,18942,18943,18944,18945,18946,18947,18948,18949,18950,18951,18952,18953,18954,18955,18956,18957,18958,18959,18960,18961,18962,18963,18964,18965,18966,18967,18968,18969,18970,18971,18972,18973,18974,18975,18976,18977,18978,18979,18980,18981,18982,18983,18984,18985,18986,18987,18988,18989,18990,18991,18992,18993,18994,18995,18996,18997,18998,18999,19000,19001,19002,19003,19004,19005,19006,19007,19008,19009,19010,19011,19012,19013,19014,19015,19016,19017,19018,19019,19020,19021,19022,19023,19024,19025,19026,19027,19028,19029,19030,19031,19032,19033,19034,19035,19036,19037,19038,19039,19040,19041,19042,19043,19044,19045,19046,19047,19048,19049,19050,19051,19052,19053,19054,19055,19056,19057,19058,19059,19060,19061,19062,19063,19064,19065,19066,19067,19068,19069,19070,19071,19072,19073,19074,19075,19076,19077,19078,19079,19080,19081,19082,19083,19084,19085,19086,19087,19088,19089,19090,19091,19092,19093,19094,19095,19096,19097,19098,19099,19100,19101,19102,19103,19104,19105,19106,19107,19108,19109,19110,19111,19112,19113,19114,19115,19116,19117,19118,19119,19120,19121,19122,19123,19124,19125,19126,19127,19128,19129,19130,19131,19132,19133,19134,19135,19136,19137,19138,19139,19140,19141,19142,19143,19144,19145,19146,19147,19148,19149,19150,19151,19152,19153,19154,19155,19156,19157,19158,19159,19160,19161,19162,19163,19164,19165,19166,19167,19168,19169,19170,19171,19172,19173,19174,19175,19176,19177,19178,19179,19180,19181,19182,19183,19184,19185,19186,19187,19188,19189,19190,19191,19192,19193,19194,19195,19196,19197,19198,19199,19200,19201,19202,19203,19204,19205,19206,19207,19208,19209,19210,19211,19212,19213,19214,19215,19216,19217,19218,19219,19220,19221,19222,19223,19224,19225,19226,19227,19228,19229,19230,19231,19232,19233,19234,19235,19236,19237,19238,19239,19240,19241,19242,19243,19244,19245,19246,19247,19248,19249,19250,19251,19252,19253,19254,19255,19256,19257,19258,19259,19260,19261,19262,19263,19264,19265,19266,19267,19268,19269,19270,19271,19272,19273,19274,19275,19276,19277,19278,19279,19280,19281,19282,19283,19284,19285,19286,19287,19288,19289,19290,19291,19292,19293,19294,19295,19296,19297,19298,19299,19300,19301,19302,19303,19304,19305,19306,19307,19308,19309,19310,19311,19312,19313,19314,19315,19316,19317,19318,19319,19320,19321,19322,19323,19324,19325,19326,19327,19328,19329,19330,19331,19332,19333,19334,19335,19336,19337,19338,19339,19340,19341,19342,19343,19344,19345,19346,19347,19348,19349,19350,19351,19352,19353,19354,19355,19356,19357,19358,19359,19360,19361,19362,19363,19364,19365,19366,19367,19368,19369,19370,19371,19372,19373,19374,19375,19376,19377,19378,19379,19380,19381,19382,19383,19384,19385,19386,19387,19388,19389,19390,19391,19392,19393,19394,19395,19396,19397,19398,19399,19400,19401,19402,19403,19404,19405,19406,19407,19408,19409,19410,19411,19412,19413,19414,19415,19416,19417,19418,19419,19420,19421,19422,19423,19424,19425,19426,19427,19428,19429,19430,19431,19432,19433,19434,19435,19436,19437,19438,19439,19440,19441,19442,19443,19444,19445,19446,19447,19448,19449,19450,19451,19452,19453,19454,19455,19456,19457,19458,19459,19460,19461,19462,19463,19464,19465,19466,19467,19468,19469,19470,19471,19472,19473,19474,19475,19476,19477,19478,19479,19480,19481,19482,19483,19484,19485,19486,19487,19488,19489,19490,19491,19492,19493,19494,19495,19496,19497,19498,19499,19500,19501,19502,19503,19504,19505,19506,19507,19508,19509,19510,19511,19512,19513,19514,19515,19516,19517,19518,19519,19520,19521,19522,19523,19524,19525,19526,19527,19528,19529,19530,19531,19532,19533,19534,19535,19536,19537,19538,19539,19540,19541,19542,19543,19544,19545,19546,19547,19548,19549,19550,19551,19552,19553,19554,19555,19556,19557,19558,19559,19560,19561,19562,19563,19564,19565,19566,19567,19568,19569,19570,19571,19572,19573,19574,19575,19576,19577,19578,19579,19580,19581,19582,19583,19584,19585,19586,19587,19588,19589,19590,19591,19592,19593,19594,19595,19596,19597,19598,19599,19600,19601,19602,19603,19604,19605,19606,19607,19608,19609,19610,19611,19612,19613,19614,19615,19616,19617,19618,19619,19620,19621,19622,19623,19624,19625,19626,19627,19628,19629,19630,19631,19632,19633,19634,19635,19636,19637,19638,19639,19640,19641,19642,19643,19644,19645,19646,19647,19648,19649,19650,19651,19652,19653,19654,19655,19656,19657,19658,19659,19660,19661,19662,19663,19664,19665,19666,19667,19668,19669,19670,19671,19672,19673,19674,19675,19676,19677,19678,19679,19680,19681,19682,19683,19684,19685,19686,19687,19688,19689,19690,19691,19692,19693,19694,19695,19696,19697,19698,19699,19700,19701,19702,19703,19704,19705,19706,19707,19708,19709,19710,19711,19712,19713,19714,19715,19716,19717,19718,19719,19720,19721,19722,19723,19724,19725,19726,19727,19728,19729,19730,19731,19732,19733,19734,19735,19736,19737,19738,19739,19740,19741,19742,19743,19744,19745,19746,19747,19748,19749,19750,19751,19752,19753,19754,19755,19756,19757,19758,19759,19760,19761,19762,19763,19764,19765,19766,19767,19768,19769,19770,19771,19772,19773,19774,19775,19776,19777,19778,19779,19780,19781,19782,19783,19784,19785,19786,19787,19788,19789,19790,19791,19792,19793,19794,19795,19796,19797,19798,19799,19800,19801,19802,19803,19804,19805,19806,19807,19808,19809,19810,19811,19812,19813,19814,19815,19816,19817,19818,19819,19820,19821,19822,19823,19824,19825,19826,19827,19828,19829,19830,19831,19832,19833,19834,19835,19836,19837,19838,19839,19840,19841,19842,19843,19844,19845,19846,19847,19848,19849,19850,19851,19852,19853,19854,19855,19856,19857,19858,19859,19860,19861,19862,19863,19864,19865,19866,19867,19868,19869,19870,19871,19872,19873,19874,19875,19876,19877,19878,19879,19880,19881,19882,19883,19884,19885,19886,19887,19888,19889,19890,19891,19892,19893,19968,19969,19970,19971,19972,19973,19974,19975,19976,19977,19978,19979,19980,19981,19982,19983,19984,19985,19986,19987,19988,19989,19990,19991,19992,19993,19994,19995,19996,19997,19998,19999,20000,20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011,20012,20013,20014,20015,20016,20017,20018,20019,20020,20021,20022,20023,20024,20025,20026,20027,20028,20029,20030,20031,20032,20033,20034,20035,20036,20037,20038,20039,20040,20041,20042,20043,20044,20045,20046,20047,20048,20049,20050,20051,20052,20053,20054,20055,20056,20057,20058,20059,20060,20061,20062,20063,20064,20065,20066,20067,20068,20069,20070,20071,20072,20073,20074,20075,20076,20077,20078,20079,20080,20081,20082,20083,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20094,20095,20096,20097,20098,20099,20100,20101,20102,20103,20104,20105,20106,20107,20108,20109,20110,20111,20112,20113,20114,20115,20116,20117,20118,20119,20120,20121,20122,20123,20124,20125,20126,20127,20128,20129,20130,20131,20132,20133,20134,20135,20136,20137,20138,20139,20140,20141,20142,20143,20144,20145,20146,20147,20148,20149,20150,20151,20152,20153,20154,20155,20156,20157,20158,20159,20160,20161,20162,20163,20164,20165,20166,20167,20168,20169,20170,20171,20172,20173,20174,20175,20176,20177,20178,20179,20180,20181,20182,20183,20184,20185,20186,20187,20188,20189,20190,20191,20192,20193,20194,20195,20196,20197,20198,20199,20200,20201,20202,20203,20204,20205,20206,20207,20208,20209,20210,20211,20212,20213,20214,20215,20216,20217,20218,20219,20220,20221,20222,20223,20224,20225,20226,20227,20228,20229,20230,20231,20232,20233,20234,20235,20236,20237,20238,20239,20240,20241,20242,20243,20244,20245,20246,20247,20248,20249,20250,20251,20252,20253,20254,20255,20256,20257,20258,20259,20260,20261,20262,20263,20264,20265,20266,20267,20268,20269,20270,20271,20272,20273,20274,20275,20276,20277,20278,20279,20280,20281,20282,20283,20284,20285,20286,20287,20288,20289,20290,20291,20292,20293,20294,20295,20296,20297,20298,20299,20300,20301,20302,20303,20304,20305,20306,20307,20308,20309,20310,20311,20312,20313,20314,20315,20316,20317,20318,20319,20320,20321,20322,20323,20324,20325,20326,20327,20328,20329,20330,20331,20332,20333,20334,20335,20336,20337,20338,20339,20340,20341,20342,20343,20344,20345,20346,20347,20348,20349,20350,20351,20352,20353,20354,20355,20356,20357,20358,20359,20360,20361,20362,20363,20364,20365,20366,20367,20368,20369,20370,20371,20372,20373,20374,20375,20376,20377,20378,20379,20380,20381,20382,20383,20384,20385,20386,20387,20388,20389,20390,20391,20392,20393,20394,20395,20396,20397,20398,20399,20400,20401,20402,20403,20404,20405,20406,20407,20408,20409,20410,20411,20412,20413,20414,20415,20416,20417,20418,20419,20420,20421,20422,20423,20424,20425,20426,20427,20428,20429,20430,20431,20432,20433,20434,20435,20436,20437,20438,20439,20440,20441,20442,20443,20444,20445,20446,20447,20448,20449,20450,20451,20452,20453,20454,20455,20456,20457,20458,20459,20460,20461,20462,20463,20464,20465,20466,20467,20468,20469,20470,20471,20472,20473,20474,20475,20476,20477,20478,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20492,20493,20494,20495,20496,20497,20498,20499,20500,20501,20502,20503,20504,20505,20506,20507,20508,20509,20510,20511,20512,20513,20514,20515,20516,20517,20518,20519,20520,20521,20522,20523,20524,20525,20526,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20538,20539,20540,20541,20542,20543,20544,20545,20546,20547,20548,20549,20550,20551,20552,20553,20554,20555,20556,20557,20558,20559,20560,20561,20562,20563,20564,20565,20566,20567,20568,20569,20570,20571,20572,20573,20574,20575,20576,20577,20578,20579,20580,20581,20582,20583,20584,20585,20586,20587,20588,20589,20590,20591,20592,20593,20594,20595,20596,20597,20598,20599,20600,20601,20602,20603,20604,20605,20606,20607,20608,20609,20610,20611,20612,20613,20614,20615,20616,20617,20618,20619,20620,20621,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20643,20644,20645,20646,20647,20648,20649,20650,20651,20652,20653,20654,20655,20656,20657,20658,20659,20660,20661,20662,20663,20664,20665,20666,20667,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20687,20688,20689,20690,20691,20692,20693,20694,20695,20696,20697,20698,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20710,20711,20712,20713,20714,20715,20716,20717,20718,20719,20720,20721,20722,20723,20724,20725,20726,20727,20728,20729,20730,20731,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20742,20743,20744,20745,20746,20747,20748,20749,20750,20751,20752,20753,20754,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20769,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20799,20800,20801,20802,20803,20804,20805,20806,20807,20808,20809,20810,20811,20812,20813,20814,20815,20816,20817,20818,20819,20820,20821,20822,20823,20824,20825,20826,20827,20828,20829,20830,20831,20832,20833,20834,20835,20836,20837,20838,20839,20840,20841,20842,20843,20844,20845,20846,20847,20848,20849,20850,20851,20852,20853,20854,20855,20856,20857,20858,20859,20860,20861,20862,20863,20864,20865,20866,20867,20868,20869,20870,20871,20872,20873,20874,20875,20876,20877,20878,20879,20880,20881,20882,20883,20884,20885,20886,20887,20888,20889,20890,20891,20892,20893,20894,20895,20896,20897,20898,20899,20900,20901,20902,20903,20904,20905,20906,20907,20908,20909,20910,20911,20912,20913,20914,20915,20916,20917,20918,20919,20920,20921,20922,20923,20924,20925,20926,20927,20928,20929,20930,20931,20932,20933,20934,20935,20936,20937,20938,20939,20940,20941,20942,20943,20944,20945,20946,20947,20948,20949,20950,20951,20952,20953,20954,20955,20956,20957,20958,20959,20960,20961,20962,20963,20964,20965,20966,20967,20968,20969,20970,20971,20972,20973,20974,20975,20976,20977,20978,20979,20980,20981,20982,20983,20984,20985,20986,20987,20988,20989,20990,20991,20992,20993,20994,20995,20996,20997,20998,20999,21000,21001,21002,21003,21004,21005,21006,21007,21008,21009,21010,21011,21012,21013,21014,21015,21016,21017,21018,21019,21020,21021,21022,21023,21024,21025,21026,21027,21028,21029,21030,21031,21032,21033,21034,21035,21036,21037,21038,21039,21040,21041,21042,21043,21044,21045,21046,21047,21048,21049,21050,21051,21052,21053,21054,21055,21056,21057,21058,21059,21060,21061,21062,21063,21064,21065,21066,21067,21068,21069,21070,21071,21072,21073,21074,21075,21076,21077,21078,21079,21080,21081,21082,21083,21084,21085,21086,21087,21088,21089,21090,21091,21092,21093,21094,21095,21096,21097,21098,21099,21100,21101,21102,21103,21104,21105,21106,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21117,21118,21119,21120,21121,21122,21123,21124,21125,21126,21127,21128,21129,21130,21131,21132,21133,21134,21135,21136,21137,21138,21139,21140,21141,21142,21143,21144,21145,21146,21147,21148,21149,21150,21151,21152,21153,21154,21155,21156,21157,21158,21159,21160,21161,21162,21163,21164,21165,21166,21167,21168,21169,21170,21171,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21182,21183,21184,21185,21186,21187,21188,21189,21190,21191,21192,21193,21194,21195,21196,21197,21198,21199,21200,21201,21202,21203,21204,21205,21206,21207,21208,21209,21210,21211,21212,21213,21214,21215,21216,21217,21218,21219,21220,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21232,21233,21234,21235,21236,21237,21238,21239,21240,21241,21242,21243,21244,21245,21246,21247,21248,21249,21250,21251,21252,21253,21254,21255,21256,21257,21258,21259,21260,21261,21262,21263,21264,21265,21266,21267,21268,21269,21270,21271,21272,21273,21274,21275,21276,21277,21278,21279,21280,21281,21282,21283,21284,21285,21286,21287,21288,21289,21290,21291,21292,21293,21294,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21305,21306,21307,21308,21309,21310,21311,21312,21313,21314,21315,21316,21317,21318,21319,21320,21321,21322,21323,21324,21325,21326,21327,21328,21329,21330,21331,21332,21333,21334,21335,21336,21337,21338,21339,21340,21341,21342,21343,21344,21345,21346,21347,21348,21349,21350,21351,21352,21353,21354,21355,21356,21357,21358,21359,21360,21361,21362,21363,21364,21365,21366,21367,21368,21369,21370,21371,21372,21373,21374,21375,21376,21377,21378,21379,21380,21381,21382,21383,21384,21385,21386,21387,21388,21389,21390,21391,21392,21393,21394,21395,21396,21397,21398,21399,21400,21401,21402,21403,21404,21405,21406,21407,21408,21409,21410,21411,21412,21413,21414,21415,21416,21417,21418,21419,21420,21421,21422,21423,21424,21425,21426,21427,21428,21429,21430,21431,21432,21433,21434,21435,21436,21437,21438,21439,21440,21441,21442,21443,21444,21445,21446,21447,21448,21449,21450,21451,21452,21453,21454,21455,21456,21457,21458,21459,21460,21461,21462,21463,21464,21465,21466,21467,21468,21469,21470,21471,21472,21473,21474,21475,21476,21477,21478,21479,21480,21481,21482,21483,21484,21485,21486,21487,21488,21489,21490,21491,21492,21493,21494,21495,21496,21497,21498,21499,21500,21501,21502,21503,21504,21505,21506,21507,21508,21509,21510,21511,21512,21513,21514,21515,21516,21517,21518,21519,21520,21521,21522,21523,21524,21525,21526,21527,21528,21529,21530,21531,21532,21533,21534,21535,21536,21537,21538,21539,21540,21541,21542,21543,21544,21545,21546,21547,21548,21549,21550,21551,21552,21553,21554,21555,21556,21557,21558,21559,21560,21561,21562,21563,21564,21565,21566,21567,21568,21569,21570,21571,21572,21573,21574,21575,21576,21577,21578,21579,21580,21581,21582,21583,21584,21585,21586,21587,21588,21589,21590,21591,21592,21593,21594,21595,21596,21597,21598,21599,21600,21601,21602,21603,21604,21605,21606,21607,21608,21609,21610,21611,21612,21613,21614,21615,21616,21617,21618,21619,21620,21621,21622,21623,21624,21625,21626,21627,21628,21629,21630,21631,21632,21633,21634,21635,21636,21637,21638,21639,21640,21641,21642,21643,21644,21645,21646,21647,21648,21649,21650,21651,21652,21653,21654,21655,21656,21657,21658,21659,21660,21661,21662,21663,21664,21665,21666,21667,21668,21669,21670,21671,21672,21673,21674,21675,21676,21677,21678,21679,21680,21681,21682,21683,21684,21685,21686,21687,21688,21689,21690,21691,21692,21693,21694,21695,21696,21697,21698,21699,21700,21701,21702,21703,21704,21705,21706,21707,21708,21709,21710,21711,21712,21713,21714,21715,21716,21717,21718,21719,21720,21721,21722,21723,21724,21725,21726,21727,21728,21729,21730,21731,21732,21733,21734,21735,21736,21737,21738,21739,21740,21741,21742,21743,21744,21745,21746,21747,21748,21749,21750,21751,21752,21753,21754,21755,21756,21757,21758,21759,21760,21761,21762,21763,21764,21765,21766,21767,21768,21769,21770,21771,21772,21773,21774,21775,21776,21777,21778,21779,21780,21781,21782,21783,21784,21785,21786,21787,21788,21789,21790,21791,21792,21793,21794,21795,21796,21797,21798,21799,21800,21801,21802,21803,21804,21805,21806,21807,21808,21809,21810,21811,21812,21813,21814,21815,21816,21817,21818,21819,21820,21821,21822,21823,21824,21825,21826,21827,21828,21829,21830,21831,21832,21833,21834,21835,21836,21837,21838,21839,21840,21841,21842,21843,21844,21845,21846,21847,21848,21849,21850,21851,21852,21853,21854,21855,21856,21857,21858,21859,21860,21861,21862,21863,21864,21865,21866,21867,21868,21869,21870,21871,21872,21873,21874,21875,21876,21877,21878,21879,21880,21881,21882,21883,21884,21885,21886,21887,21888,21889,21890,21891,21892,21893,21894,21895,21896,21897,21898,21899,21900,21901,21902,21903,21904,21905,21906,21907,21908,21909,21910,21911,21912,21913,21914,21915,21916,21917,21918,21919,21920,21921,21922,21923,21924,21925,21926,21927,21928,21929,21930,21931,21932,21933,21934,21935,21936,21937,21938,21939,21940,21941,21942,21943,21944,21945,21946,21947,21948,21949,21950,21951,21952,21953,21954,21955,21956,21957,21958,21959,21960,21961,21962,21963,21964,21965,21966,21967,21968,21969,21970,21971,21972,21973,21974,21975,21976,21977,21978,21979,21980,21981,21982,21983,21984,21985,21986,21987,21988,21989,21990,21991,21992,21993,21994,21995,21996,21997,21998,21999,22000,22001,22002,22003,22004,22005,22006,22007,22008,22009,22010,22011,22012,22013,22014,22015,22016,22017,22018,22019,22020,22021,22022,22023,22024,22025,22026,22027,22028,22029,22030,22031,22032,22033,22034,22035,22036,22037,22038,22039,22040,22041,22042,22043,22044,22045,22046,22047,22048,22049,22050,22051,22052,22053,22054,22055,22056,22057,22058,22059,22060,22061,22062,22063,22064,22065,22066,22067,22068,22069,22070,22071,22072,22073,22074,22075,22076,22077,22078,22079,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22092,22093,22094,22095,22096,22097,22098,22099,22100,22101,22102,22103,22104,22105,22106,22107,22108,22109,22110,22111,22112,22113,22114,22115,22116,22117,22118,22119,22120,22121,22122,22123,22124,22125,22126,22127,22128,22129,22130,22131,22132,22133,22134,22135,22136,22137,22138,22139,22140,22141,22142,22143,22144,22145,22146,22147,22148,22149,22150,22151,22152,22153,22154,22155,22156,22157,22158,22159,22160,22161,22162,22163,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22179,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22191,22192,22193,22194,22195,22196,22197,22198,22199,22200,22201,22202,22203,22204,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22218,22219,22220,22221,22222,22223,22224,22225,22226,22227,22228,22229,22230,22231,22232,22233,22234,22235,22236,22237,22238,22239,22240,22241,22242,22243,22244,22245,22246,22247,22248,22249,22250,22251,22252,22253,22254,22255,22256,22257,22258,22259,22260,22261,22262,22263,22264,22265,22266,22267,22268,22269,22270,22271,22272,22273,22274,22275,22276,22277,22278,22279,22280,22281,22282,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22300,22301,22302,22303,22304,22305,22306,22307,22308,22309,22310,22311,22312,22313,22314,22315,22316,22317,22318,22319,22320,22321,22322,22323,22324,22325,22326,22327,22328,22329,22330,22331,22332,22333,22334,22335,22336,22337,22338,22339,22340,22341,22342,22343,22344,22345,22346,22347,22348,22349,22350,22351,22352,22353,22354,22355,22356,22357,22358,22359,22360,22361,22362,22363,22364,22365,22366,22367,22368,22369,22370,22371,22372,22373,22374,22375,22376,22377,22378,22379,22380,22381,22382,22383,22384,22385,22386,22387,22388,22389,22390,22391,22392,22393,22394,22395,22396,22397,22398,22399,22400,22401,22402,22403,22404,22405,22406,22407,22408,22409,22410,22411,22412,22413,22414,22415,22416,22417,22418,22419,22420,22421,22422,22423,22424,22425,22426,22427,22428,22429,22430,22431,22432,22433,22434,22435,22436,22437,22438,22439,22440,22441,22442,22443,22444,22445,22446,22447,22448,22449,22450,22451,22452,22453,22454,22455,22456,22457,22458,22459,22460,22461,22462,22463,22464,22465,22466,22467,22468,22469,22470,22471,22472,22473,22474,22475,22476,22477,22478,22479,22480,22481,22482,22483,22484,22485,22486,22487,22488,22489,22490,22491,22492,22493,22494,22495,22496,22497,22498,22499,22500,22501,22502,22503,22504,22505,22506,22507,22508,22509,22510,22511,22512,22513,22514,22515,22516,22517,22518,22519,22520,22521,22522,22523,22524,22525,22526,22527,22528,22529,22530,22531,22532,22533,22534,22535,22536,22537,22538,22539,22540,22541,22542,22543,22544,22545,22546,22547,22548,22549,22550,22551,22552,22553,22554,22555,22556,22557,22558,22559,22560,22561,22562,22563,22564,22565,22566,22567,22568,22569,22570,22571,22572,22573,22574,22575,22576,22577,22578,22579,22580,22581,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22596,22597,22598,22599,22600,22601,22602,22603,22604,22605,22606,22607,22608,22609,22610,22611,22612,22613,22614,22615,22616,22617,22618,22619,22620,22621,22622,22623,22624,22625,22626,22627,22628,22629,22630,22631,22632,22633,22634,22635,22636,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22654,22655,22656,22657,22658,22659,22660,22661,22662,22663,22664,22665,22666,22667,22668,22669,22670,22671,22672,22673,22674,22675,22676,22677,22678,22679,22680,22681,22682,22683,22684,22685,22686,22687,22688,22689,22690,22691,22692,22693,22694,22695,22696,22697,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22716,22717,22718,22719,22720,22721,22722,22723,22724,22725,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22737,22738,22739,22740,22741,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22756,22757,22758,22759,22760,22761,22762,22763,22764,22765,22766,22767,22768,22769,22770,22771,22772,22773,22774,22775,22776,22777,22778,22779,22780,22781,22782,22783,22784,22785,22786,22787,22788,22789,22790,22791,22792,22793,22794,22795,22796,22797,22798,22799,22800,22801,22802,22803,22804,22805,22806,22807,22808,22809,22810,22811,22812,22813,22814,22815,22816,22817,22818,22819,22820,22821,22822,22823,22824,22825,22826,22827,22828,22829,22830,22831,22832,22833,22834,22835,22836,22837,22838,22839,22840,22841,22842,22843,22844,22845,22846,22847,22848,22849,22850,22851,22852,22853,22854,22855,22856,22857,22858,22859,22860,22861,22862,22863,22864,22865,22866,22867,22868,22869,22870,22871,22872,22873,22874,22875,22876,22877,22878,22879,22880,22881,22882,22883,22884,22885,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22899,22900,22901,22902,22903,22904,22905,22906,22907,22908,22909,22910,22911,22912,22913,22914,22915,22916,22917,22918,22919,22920,22921,22922,22923,22924,22925,22926,22927,22928,22929,22930,22931,22932,22933,22934,22935,22936,22937,22938,22939,22940,22941,22942,22943,22944,22945,22946,22947,22948,22949,22950,22951,22952,22953,22954,22955,22956,22957,22958,22959,22960,22961,22962,22963,22964,22965,22966,22967,22968,22969,22970,22971,22972,22973,22974,22975,22976,22977,22978,22979,22980,22981,22982,22983,22984,22985,22986,22987,22988,22989,22990,22991,22992,22993,22994,22995,22996,22997,22998,22999,23000,23001,23002,23003,23004,23005,23006,23007,23008,23009,23010,23011,23012,23013,23014,23015,23016,23017,23018,23019,23020,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23033,23034,23035,23036,23037,23038,23039,23040,23041,23042,23043,23044,23045,23046,23047,23048,23049,23050,23051,23052,23053,23054,23055,23056,23057,23058,23059,23060,23061,23062,23063,23064,23065,23066,23067,23068,23069,23070,23071,23072,23073,23074,23075,23076,23077,23078,23079,23080,23081,23082,23083,23084,23085,23086,23087,23088,23089,23090,23091,23092,23093,23094,23095,23096,23097,23098,23099,23100,23101,23102,23103,23104,23105,23106,23107,23108,23109,23110,23111,23112,23113,23114,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23125,23126,23127,23128,23129,23130,23131,23132,23133,23134,23135,23136,23137,23138,23139,23140,23141,23142,23143,23144,23145,23146,23147,23148,23149,23150,23151,23152,23153,23154,23155,23156,23157,23158,23159,23160,23161,23162,23163,23164,23165,23166,23167,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23186,23187,23188,23189,23190,23191,23192,23193,23194,23195,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23210,23211,23212,23213,23214,23215,23216,23217,23218,23219,23220,23221,23222,23223,23224,23225,23226,23227,23228,23229,23230,23231,23232,23233,23234,23235,23236,23237,23238,23239,23240,23241,23242,23243,23244,23245,23246,23247,23248,23249,23250,23251,23252,23253,23254,23255,23256,23257,23258,23259,23260,23261,23262,23263,23264,23265,23266,23267,23268,23269,23270,23271,23272,23273,23274,23275,23276,23277,23278,23279,23280,23281,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23305,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23318,23319,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23346,23347,23348,23349,23350,23351,23352,23353,23354,23355,23356,23357,23358,23359,23360,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23376,23377,23378,23379,23380,23381,23382,23383,23384,23385,23386,23387,23388,23389,23390,23391,23392,23393,23394,23395,23396,23397,23398,23399,23400,23401,23402,23403,23404,23405,23406,23407,23408,23409,23410,23411,23412,23413,23414,23415,23416,23417,23418,23419,23420,23421,23422,23423,23424,23425,23426,23427,23428,23429,23430,23431,23432,23433,23434,23435,23436,23437,23438,23439,23440,23441,23442,23443,23444,23445,23446,23447,23448,23449,23450,23451,23452,23453,23454,23455,23456,23457,23458,23459,23460,23461,23462,23463,23464,23465,23466,23467,23468,23469,23470,23471,23472,23473,23474,23475,23476,23477,23478,23479,23480,23481,23482,23483,23484,23485,23486,23487,23488,23489,23490,23491,23492,23493,23494,23495,23496,23497,23498,23499,23500,23501,23502,23503,23504,23505,23506,23507,23508,23509,23510,23511,23512,23513,23514,23515,23516,23517,23518,23519,23520,23521,23522,23523,23524,23525,23526,23527,23528,23529,23530,23531,23532,23533,23534,23535,23536,23537,23538,23539,23540,23541,23542,23543,23544,23545,23546,23547,23548,23549,23550,23551,23552,23553,23554,23555,23556,23557,23558,23559,23560,23561,23562,23563,23564,23565,23566,23567,23568,23569,23570,23571,23572,23573,23574,23575,23576,23577,23578,23579,23580,23581,23582,23583,23584,23585,23586,23587,23588,23589,23590,23591,23592,23593,23594,23595,23596,23597,23598,23599,23600,23601,23602,23603,23604,23605,23606,23607,23608,23609,23610,23611,23612,23613,23614,23615,23616,23617,23618,23619,23620,23621,23622,23623,23624,23625,23626,23627,23628,23629,23630,23631,23632,23633,23634,23635,23636,23637,23638,23639,23640,23641,23642,23643,23644,23645,23646,23647,23648,23649,23650,23651,23652,23653,23654,23655,23656,23657,23658,23659,23660,23661,23662,23663,23664,23665,23666,23667,23668,23669,23670,23671,23672,23673,23674,23675,23676,23677,23678,23679,23680,23681,23682,23683,23684,23685,23686,23687,23688,23689,23690,23691,23692,23693,23694,23695,23696,23697,23698,23699,23700,23701,23702,23703,23704,23705,23706,23707,23708,23709,23710,23711,23712,23713,23714,23715,23716,23717,23718,23719,23720,23721,23722,23723,23724,23725,23726,23727,23728,23729,23730,23731,23732,23733,23734,23735,23736,23737,23738,23739,23740,23741,23742,23743,23744,23745,23746,23747,23748,23749,23750,23751,23752,23753,23754,23755,23756,23757,23758,23759,23760,23761,23762,23763,23764,23765,23766,23767,23768,23769,23770,23771,23772,23773,23774,23775,23776,23777,23778,23779,23780,23781,23782,23783,23784,23785,23786,23787,23788,23789,23790,23791,23792,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23803,23804,23805,23806,23807,23808,23809,23810,23811,23812,23813,23814,23815,23816,23817,23818,23819,23820,23821,23822,23823,23824,23825,23826,23827,23828,23829,23830,23831,23832,23833,23834,23835,23836,23837,23838,23839,23840,23841,23842,23843,23844,23845,23846,23847,23848,23849,23850,23851,23852,23853,23854,23855,23856,23857,23858,23859,23860,23861,23862,23863,23864,23865,23866,23867,23868,23869,23870,23871,23872,23873,23874,23875,23876,23877,23878,23879,23880,23881,23882,23883,23884,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23896,23897,23898,23899,23900,23901,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23913,23914,23915,23916,23917,23918,23919,23920,23921,23922,23923,23924,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23938,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23961,23962,23963,23964,23965,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23991,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24005,24006,24007,24008,24009,24010,24011,24012,24013,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24027,24028,24029,24030,24031,24032,24033,24034,24035,24036,24037,24038,24039,24040,24041,24042,24043,24044,24045,24046,24047,24048,24049,24050,24051,24052,24053,24054,24055,24056,24057,24058,24059,24060,24061,24062,24063,24064,24065,24066,24067,24068,24069,24070,24071,24072,24073,24074,24075,24076,24077,24078,24079,24080,24081,24082,24083,24084,24085,24086,24087,24088,24089,24090,24091,24092,24093,24094,24095,24096,24097,24098,24099,24100,24101,24102,24103,24104,24105,24106,24107,24108,24109,24110,24111,24112,24113,24114,24115,24116,24117,24118,24119,24120,24121,24122,24123,24124,24125,24126,24127,24128,24129,24130,24131,24132,24133,24134,24135,24136,24137,24138,24139,24140,24141,24142,24143,24144,24145,24146,24147,24148,24149,24150,24151,24152,24153,24154,24155,24156,24157,24158,24159,24160,24161,24162,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24178,24179,24180,24181,24182,24183,24184,24185,24186,24187,24188,24189,24190,24191,24192,24193,24194,24195,24196,24197,24198,24199,24200,24201,24202,24203,24204,24205,24206,24207,24208,24209,24210,24211,24212,24213,24214,24215,24216,24217,24218,24219,24220,24221,24222,24223,24224,24225,24226,24227,24228,24229,24230,24231,24232,24233,24234,24235,24236,24237,24238,24239,24240,24241,24242,24243,24244,24245,24246,24247,24248,24249,24250,24251,24252,24253,24254,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24265,24266,24267,24268,24269,24270,24271,24272,24273,24274,24275,24276,24277,24278,24279,24280,24281,24282,24283,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24296,24297,24298,24299,24300,24301,24302,24303,24304,24305,24306,24307,24308,24309,24310,24311,24312,24313,24314,24315,24316,24317,24318,24319,24320,24321,24322,24323,24324,24325,24326,24327,24328,24329,24330,24331,24332,24333,24334,24335,24336,24337,24338,24339,24340,24341,24342,24343,24344,24345,24346,24347,24348,24349,24350,24351,24352,24353,24354,24355,24356,24357,24358,24359,24360,24361,24362,24363,24364,24365,24366,24367,24368,24369,24370,24371,24372,24373,24374,24375,24376,24377,24378,24379,24380,24381,24382,24383,24384,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24400,24401,24402,24403,24404,24405,24406,24407,24408,24409,24410,24411,24412,24413,24414,24415,24416,24417,24418,24419,24420,24421,24422,24423,24424,24425,24426,24427,24428,24429,24430,24431,24432,24433,24434,24435,24436,24437,24438,24439,24440,24441,24442,24443,24444,24445,24446,24447,24448,24449,24450,24451,24452,24453,24454,24455,24456,24457,24458,24459,24460,24461,24462,24463,24464,24465,24466,24467,24468,24469,24470,24471,24472,24473,24474,24475,24476,24477,24478,24479,24480,24481,24482,24483,24484,24485,24486,24487,24488,24489,24490,24491,24492,24493,24494,24495,24496,24497,24498,24499,24500,24501,24502,24503,24504,24505,24506,24507,24508,24509,24510,24511,24512,24513,24514,24515,24516,24517,24518,24519,24520,24521,24522,24523,24524,24525,24526,24527,24528,24529,24530,24531,24532,24533,24534,24535,24536,24537,24538,24539,24540,24541,24542,24543,24544,24545,24546,24547,24548,24549,24550,24551,24552,24553,24554,24555,24556,24557,24558,24559,24560,24561,24562,24563,24564,24565,24566,24567,24568,24569,24570,24571,24572,24573,24574,24575,24576,24577,24578,24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590,24591,24592,24593,24594,24595,24596,24597,24598,24599,24600,24601,24602,24603,24604,24605,24606,24607,24608,24609,24610,24611,24612,24613,24614,24615,24616,24617,24618,24619,24620,24621,24622,24623,24624,24625,24626,24627,24628,24629,24630,24631,24632,24633,24634,24635,24636,24637,24638,24639,24640,24641,24642,24643,24644,24645,24646,24647,24648,24649,24650,24651,24652,24653,24654,24655,24656,24657,24658,24659,24660,24661,24662,24663,24664,24665,24666,24667,24668,24669,24670,24671,24672,24673,24674,24675,24676,24677,24678,24679,24680,24681,24682,24683,24684,24685,24686,24687,24688,24689,24690,24691,24692,24693,24694,24695,24696,24697,24698,24699,24700,24701,24702,24703,24704,24705,24706,24707,24708,24709,24710,24711,24712,24713,24714,24715,24716,24717,24718,24719,24720,24721,24722,24723,24724,24725,24726,24727,24728,24729,24730,24731,24732,24733,24734,24735,24736,24737,24738,24739,24740,24741,24742,24743,24744,24745,24746,24747,24748,24749,24750,24751,24752,24753,24754,24755,24756,24757,24758,24759,24760,24761,24762,24763,24764,24765,24766,24767,24768,24769,24770,24771,24772,24773,24774,24775,24776,24777,24778,24779,24780,24781,24782,24783,24784,24785,24786,24787,24788,24789,24790,24791,24792,24793,24794,24795,24796,24797,24798,24799,24800,24801,24802,24803,24804,24805,24806,24807,24808,24809,24810,24811,24812,24813,24814,24815,24816,24817,24818,24819,24820,24821,24822,24823,24824,24825,24826,24827,24828,24829,24830,24831,24832,24833,24834,24835,24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847,24848,24849,24850,24851,24852,24853,24854,24855,24856,24857,24858,24859,24860,24861,24862,24863,24864,24865,24866,24867,24868,24869,24870,24871,24872,24873,24874,24875,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24895,24896,24897,24898,24899,24900,24901,24902,24903,24904,24905,24906,24907,24908,24909,24910,24911,24912,24913,24914,24915,24916,24917,24918,24919,24920,24921,24922,24923,24924,24925,24926,24927,24928,24929,24930,24931,24932,24933,24934,24935,24936,24937,24938,24939,24940,24941,24942,24943,24944,24945,24946,24947,24948,24949,24950,24951,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24971,24972,24973,24974,24975,24976,24977,24978,24979,24980,24981,24982,24983,24984,24985,24986,24987,24988,24989,24990,24991,24992,24993,24994,24995,24996,24997,24998,24999,25000,25001,25002,25003,25004,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25015,25016,25017,25018,25019,25020,25021,25022,25023,25024,25025,25026,25027,25028,25029,25030,25031,25032,25033,25034,25035,25036,25037,25038,25039,25040,25041,25042,25043,25044,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25062,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25077,25078,25079,25080,25081,25082,25083,25084,25085,25086,25087,25088,25089,25090,25091,25092,25093,25094,25095,25096,25097,25098,25099,25100,25101,25102,25103,25104,25105,25106,25107,25108,25109,25110,25111,25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123,25124,25125,25126,25127,25128,25129,25130,25131,25132,25133,25134,25135,25136,25137,25138,25139,25140,25141,25142,25143,25144,25145,25146,25147,25148,25149,25150,25151,25152,25153,25154,25155,25156,25157,25158,25159,25160,25161,25162,25163,25164,25165,25166,25167,25168,25169,25170,25171,25172,25173,25174,25175,25176,25177,25178,25179,25180,25181,25182,25183,25184,25185,25186,25187,25188,25189,25190,25191,25192,25193,25194,25195,25196,25197,25198,25199,25200,25201,25202,25203,25204,25205,25206,25207,25208,25209,25210,25211,25212,25213,25214,25215,25216,25217,25218,25219,25220,25221,25222,25223,25224,25225,25226,25227,25228,25229,25230,25231,25232,25233,25234,25235,25236,25237,25238,25239,25240,25241,25242,25243,25244,25245,25246,25247,25248,25249,25250,25251,25252,25253,25254,25255,25256,25257,25258,25259,25260,25261,25262,25263,25264,25265,25266,25267,25268,25269,25270,25271,25272,25273,25274,25275,25276,25277,25278,25279,25280,25281,25282,25283,25284,25285,25286,25287,25288,25289,25290,25291,25292,25293,25294,25295,25296,25297,25298,25299,25300,25301,25302,25303,25304,25305,25306,25307,25308,25309,25310,25311,25312,25313,25314,25315,25316,25317,25318,25319,25320,25321,25322,25323,25324,25325,25326,25327,25328,25329,25330,25331,25332,25333,25334,25335,25336,25337,25338,25339,25340,25341,25342,25343,25344,25345,25346,25347,25348,25349,25350,25351,25352,25353,25354,25355,25356,25357,25358,25359,25360,25361,25362,25363,25364,25365,25366,25367,25368,25369,25370,25371,25372,25373,25374,25375,25376,25377,25378,25379,25380,25381,25382,25383,25384,25385,25386,25387,25388,25389,25390,25391,25392,25393,25394,25395,25396,25397,25398,25399,25400,25401,25402,25403,25404,25405,25406,25407,25408,25409,25410,25411,25412,25413,25414,25415,25416,25417,25418,25419,25420,25421,25422,25423,25424,25425,25426,25427,25428,25429,25430,25431,25432,25433,25434,25435,25436,25437,25438,25439,25440,25441,25442,25443,25444,25445,25446,25447,25448,25449,25450,25451,25452,25453,25454,25455,25456,25457,25458,25459,25460,25461,25462,25463,25464,25465,25466,25467,25468,25469,25470,25471,25472,25473,25474,25475,25476,25477,25478,25479,25480,25481,25482,25483,25484,25485,25486,25487,25488,25489,25490,25491,25492,25493,25494,25495,25496,25497,25498,25499,25500,25501,25502,25503,25504,25505,25506,25507,25508,25509,25510,25511,25512,25513,25514,25515,25516,25517,25518,25519,25520,25521,25522,25523,25524,25525,25526,25527,25528,25529,25530,25531,25532,25533,25534,25535,25536,25537,25538,25539,25540,25541,25542,25543,25544,25545,25546,25547,25548,25549,25550,25551,25552,25553,25554,25555,25556,25557,25558,25559,25560,25561,25562,25563,25564,25565,25566,25567,25568,25569,25570,25571,25572,25573,25574,25575,25576,25577,25578,25579,25580,25581,25582,25583,25584,25585,25586,25587,25588,25589,25590,25591,25592,25593,25594,25595,25596,25597,25598,25599,25600,25601,25602,25603,25604,25605,25606,25607,25608,25609,25610,25611,25612,25613,25614,25615,25616,25617,25618,25619,25620,25621,25622,25623,25624,25625,25626,25627,25628,25629,25630,25631,25632,25633,25634,25635,25636,25637,25638,25639,25640,25641,25642,25643,25644,25645,25646,25647,25648,25649,25650,25651,25652,25653,25654,25655,25656,25657,25658,25659,25660,25661,25662,25663,25664,25665,25666,25667,25668,25669,25670,25671,25672,25673,25674,25675,25676,25677,25678,25679,25680,25681,25682,25683,25684,25685,25686,25687,25688,25689,25690,25691,25692,25693,25694,25695,25696,25697,25698,25699,25700,25701,25702,25703,25704,25705,25706,25707,25708,25709,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723,25724,25725,25726,25727,25728,25729,25730,25731,25732,25733,25734,25735,25736,25737,25738,25739,25740,25741,25742,25743,25744,25745,25746,25747,25748,25749,25750,25751,25752,25753,25754,25755,25756,25757,25758,25759,25760,25761,25762,25763,25764,25765,25766,25767,25768,25769,25770,25771,25772,25773,25774,25775,25776,25777,25778,25779,25780,25781,25782,25783,25784,25785,25786,25787,25788,25789,25790,25791,25792,25793,25794,25795,25796,25797,25798,25799,25800,25801,25802,25803,25804,25805,25806,25807,25808,25809,25810,25811,25812,25813,25814,25815,25816,25817,25818,25819,25820,25821,25822,25823,25824,25825,25826,25827,25828,25829,25830,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25856,25857,25858,25859,25860,25861,25862,25863,25864,25865,25866,25867,25868,25869,25870,25871,25872,25873,25874,25875,25876,25877,25878,25879,25880,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25893,25894,25895,25896,25897,25898,25899,25900,25901,25902,25903,25904,25905,25906,25907,25908,25909,25910,25911,25912,25913,25914,25915,25916,25917,25918,25919,25920,25921,25922,25923,25924,25925,25926,25927,25928,25929,25930,25931,25932,25933,25934,25935,25936,25937,25938,25939,25940,25941,25942,25943,25944,25945,25946,25947,25948,25949,25950,25951,25952,25953,25954,25955,25956,25957,25958,25959,25960,25961,25962,25963,25964,25965,25966,25967,25968,25969,25970,25971,25972,25973,25974,25975,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25991,25992,25993,25994,25995,25996,25997,25998,25999,26000,26001,26002,26003,26004,26005,26006,26007,26008,26009,26010,26011,26012,26013,26014,26015,26016,26017,26018,26019,26020,26021,26022,26023,26024,26025,26026,26027,26028,26029,26030,26031,26032,26033,26034,26035,26036,26037,26038,26039,26040,26041,26042,26043,26044,26045,26046,26047,26048,26049,26050,26051,26052,26053,26054,26055,26056,26057,26058,26059,26060,26061,26062,26063,26064,26065,26066,26067,26068,26069,26070,26071,26072,26073,26074,26075,26076,26077,26078,26079,26080,26081,26082,26083,26084,26085,26086,26087,26088,26089,26090,26091,26092,26093,26094,26095,26096,26097,26098,26099,26100,26101,26102,26103,26104,26105,26106,26107,26108,26109,26110,26111,26112,26113,26114,26115,26116,26117,26118,26119,26120,26121,26122,26123,26124,26125,26126,26127,26128,26129,26130,26131,26132,26133,26134,26135,26136,26137,26138,26139,26140,26141,26142,26143,26144,26145,26146,26147,26148,26149,26150,26151,26152,26153,26154,26155,26156,26157,26158,26159,26160,26161,26162,26163,26164,26165,26166,26167,26168,26169,26170,26171,26172,26173,26174,26175,26176,26177,26178,26179,26180,26181,26182,26183,26184,26185,26186,26187,26188,26189,26190,26191,26192,26193,26194,26195,26196,26197,26198,26199,26200,26201,26202,26203,26204,26205,26206,26207,26208,26209,26210,26211,26212,26213,26214,26215,26216,26217,26218,26219,26220,26221,26222,26223,26224,26225,26226,26227,26228,26229,26230,26231,26232,26233,26234,26235,26236,26237,26238,26239,26240,26241,26242,26243,26244,26245,26246,26247,26248,26249,26250,26251,26252,26253,26254,26255,26256,26257,26258,26259,26260,26261,26262,26263,26264,26265,26266,26267,26268,26269,26270,26271,26272,26273,26274,26275,26276,26277,26278,26279,26280,26281,26282,26283,26284,26285,26286,26287,26288,26289,26290,26291,26292,26293,26294,26295,26296,26297,26298,26299,26300,26301,26302,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26329,26330,26331,26332,26333,26334,26335,26336,26337,26338,26339,26340,26341,26342,26343,26344,26345,26346,26347,26348,26349,26350,26351,26352,26353,26354,26355,26356,26357,26358,26359,26360,26361,26362,26363,26364,26365,26366,26367,26368,26369,26370,26371,26372,26373,26374,26375,26376,26377,26378,26379,26380,26381,26382,26383,26384,26385,26386,26387,26388,26389,26390,26391,26392,26393,26394,26395,26396,26397,26398,26399,26400,26401,26402,26403,26404,26405,26406,26407,26408,26409,26410,26411,26412,26413,26414,26415,26416,26417,26418,26419,26420,26421,26422,26423,26424,26425,26426,26427,26428,26429,26430,26431,26432,26433,26434,26435,26436,26437,26438,26439,26440,26441,26442,26443,26444,26445,26446,26447,26448,26449,26450,26451,26452,26453,26454,26455,26456,26457,26458,26459,26460,26461,26462,26463,26464,26465,26466,26467,26468,26469,26470,26471,26472,26473,26474,26475,26476,26477,26478,26479,26480,26481,26482,26483,26484,26485,26486,26487,26488,26489,26490,26491,26492,26493,26494,26495,26496,26497,26498,26499,26500,26501,26502,26503,26504,26505,26506,26507,26508,26509,26510,26511,26512,26513,26514,26515,26516,26517,26518,26519,26520,26521,26522,26523,26524,26525,26526,26527,26528,26529,26530,26531,26532,26533,26534,26535,26536,26537,26538,26539,26540,26541,26542,26543,26544,26545,26546,26547,26548,26549,26550,26551,26552,26553,26554,26555,26556,26557,26558,26559,26560,26561,26562,26563,26564,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26575,26576,26577,26578,26579,26580,26581,26582,26583,26584,26585,26586,26587,26588,26589,26590,26591,26592,26593,26594,26595,26596,26597,26598,26599,26600,26601,26602,26603,26604,26605,26606,26607,26608,26609,26610,26611,26612,26613,26614,26615,26616,26617,26618,26619,26620,26621,26622,26623,26624,26625,26626,26627,26628,26629,26630,26631,26632,26633,26634,26635,26636,26637,26638,26639,26640,26641,26642,26643,26644,26645,26646,26647,26648,26649,26650,26651,26652,26653,26654,26655,26656,26657,26658,26659,26660,26661,26662,26663,26664,26665,26666,26667,26668,26669,26670,26671,26672,26673,26674,26675,26676,26677,26678,26679,26680,26681,26682,26683,26684,26685,26686,26687,26688,26689,26690,26691,26692,26693,26694,26695,26696,26697,26698,26699,26700,26701,26702,26703,26704,26705,26706,26707,26708,26709,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26720,26721,26722,26723,26724,26725,26726,26727,26728,26729,26730,26731,26732,26733,26734,26735,26736,26737,26738,26739,26740,26741,26742,26743,26744,26745,26746,26747,26748,26749,26750,26751,26752,26753,26754,26755,26756,26757,26758,26759,26760,26761,26762,26763,26764,26765,26766,26767,26768,26769,26770,26771,26772,26773,26774,26775,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26786,26787,26788,26789,26790,26791,26792,26793,26794,26795,26796,26797,26798,26799,26800,26801,26802,26803,26804,26805,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26816,26817,26818,26819,26820,26821,26822,26823,26824,26825,26826,26827,26828,26829,26830,26831,26832,26833,26834,26835,26836,26837,26838,26839,26840,26841,26842,26843,26844,26845,26846,26847,26848,26849,26850,26851,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26862,26863,26864,26865,26866,26867,26868,26869,26870,26871,26872,26873,26874,26875,26876,26877,26878,26879,26880,26881,26882,26883,26884,26885,26886,26887,26888,26889,26890,26891,26892,26893,26894,26895,26896,26897,26898,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26911,26912,26913,26914,26915,26916,26917,26918,26919,26920,26921,26922,26923,26924,26925,26926,26927,26928,26929,26930,26931,26932,26933,26934,26935,26936,26937,26938,26939,26940,26941,26942,26943,26944,26945,26946,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26964,26965,26966,26967,26968,26969,26970,26971,26972,26973,26974,26975,26976,26977,26978,26979,26980,26981,26982,26983,26984,26985,26986,26987,26988,26989,26990,26991,26992,26993,26994,26995,26996,26997,26998,26999,27000,27001,27002,27003,27004,27005,27006,27007,27008,27009,27010,27011,27012,27013,27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030,27031,27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27047,27048,27049,27050,27051,27052,27053,27054,27055,27056,27057,27058,27059,27060,27061,27062,27063,27064,27065,27066,27067,27068,27069,27070,27071,27072,27073,27074,27075,27076,27077,27078,27079,27080,27081,27082,27083,27084,27085,27086,27087,27088,27089,27090,27091,27092,27093,27094,27095,27096,27097,27098,27099,27100,27101,27102,27103,27104,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27117,27118,27119,27120,27121,27122,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27133,27134,27135,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27146,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27159,27160,27161,27162,27163,27164,27165,27166,27167,27168,27169,27170,27171,27172,27173,27174,27175,27176,27177,27178,27179,27180,27181,27182,27183,27184,27185,27186,27187,27188,27189,27190,27191,27192,27193,27194,27195,27196,27197,27198,27199,27200,27201,27202,27203,27204,27205,27206,27207,27208,27209,27210,27211,27212,27213,27214,27215,27216,27217,27218,27219,27220,27221,27222,27223,27224,27225,27226,27227,27228,27229,27230,27231,27232,27233,27234,27235,27236,27237,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27249,27250,27251,27252,27253,27254,27255,27256,27257,27258,27259,27260,27261,27262,27263,27264,27265,27266,27267,27268,27269,27270,27271,27272,27273,27274,27275,27276,27277,27278,27279,27280,27281,27282,27283,27284,27285,27286,27287,27288,27289,27290,27291,27292,27293,27294,27295,27296,27297,27298,27299,27300,27301,27302,27303,27304,27305,27306,27307,27308,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27424,27425,27426,27427,27428,27429,27430,27431,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27442,27443,27444,27445,27446,27447,27448,27449,27450,27451,27452,27453,27454,27455,27456,27457,27458,27459,27460,27461,27462,27463,27464,27465,27466,27467,27468,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27481,27482,27483,27484,27485,27486,27487,27488,27489,27490,27491,27492,27493,27494,27495,27496,27497,27498,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27513,27514,27515,27516,27517,27518,27519,27520,27521,27522,27523,27524,27525,27526,27527,27528,27529,27530,27531,27532,27533,27534,27535,27536,27537,27538,27539,27540,27541,27542,27543,27544,27545,27546,27547,27548,27549,27550,27551,27552,27553,27554,27555,27556,27557,27558,27559,27560,27561,27562,27563,27564,27565,27566,27567,27568,27569,27570,27571,27572,27573,27574,27575,27576,27577,27578,27579,27580,27581,27582,27583,27584,27585,27586,27587,27588,27589,27590,27591,27592,27593,27594,27595,27596,27597,27598,27599,27600,27601,27602,27603,27604,27605,27606,27607,27608,27609,27610,27611,27612,27613,27614,27615,27616,27617,27618,27619,27620,27621,27622,27623,27624,27625,27626,27627,27628,27629,27630,27631,27632,27633,27634,27635,27636,27637,27638,27639,27640,27641,27642,27643,27644,27645,27646,27647,27648,27649,27650,27651,27652,27653,27654,27655,27656,27657,27658,27659,27660,27661,27662,27663,27664,27665,27666,27667,27668,27669,27670,27671,27672,27673,27674,27675,27676,27677,27678,27679,27680,27681,27682,27683,27684,27685,27686,27687,27688,27689,27690,27691,27692,27693,27694,27695,27696,27697,27698,27699,27700,27701,27702,27703,27704,27705,27706,27707,27708,27709,27710,27711,27712,27713,27714,27715,27716,27717,27718,27719,27720,27721,27722,27723,27724,27725,27726,27727,27728,27729,27730,27731,27732,27733,27734,27735,27736,27737,27738,27739,27740,27741,27742,27743,27744,27745,27746,27747,27748,27749,27750,27751,27752,27753,27754,27755,27756,27757,27758,27759,27760,27761,27762,27763,27764,27765,27766,27767,27768,27769,27770,27771,27772,27773,27774,27775,27776,27777,27778,27779,27780,27781,27782,27783,27784,27785,27786,27787,27788,27789,27790,27791,27792,27793,27794,27795,27796,27797,27798,27799,27800,27801,27802,27803,27804,27805,27806,27807,27808,27809,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820,27821,27822,27823,27824,27825,27826,27827,27828,27829,27830,27831,27832,27833,27834,27835,27836,27837,27838,27839,27840,27841,27842,27843,27844,27845,27846,27847,27848,27849,27850,27851,27852,27853,27854,27855,27856,27857,27858,27859,27860,27861,27862,27863,27864,27865,27866,27867,27868,27869,27870,27871,27872,27873,27874,27875,27876,27877,27878,27879,27880,27881,27882,27883,27884,27885,27886,27887,27888,27889,27890,27891,27892,27893,27894,27895,27896,27897,27898,27899,27900,27901,27902,27903,27904,27905,27906,27907,27908,27909,27910,27911,27912,27913,27914,27915,27916,27917,27918,27919,27920,27921,27922,27923,27924,27925,27926,27927,27928,27929,27930,27931,27932,27933,27934,27935,27936,27937,27938,27939,27940,27941,27942,27943,27944,27945,27946,27947,27948,27949,27950,27951,27952,27953,27954,27955,27956,27957,27958,27959,27960,27961,27962,27963,27964,27965,27966,27967,27968,27969,27970,27971,27972,27973,27974,27975,27976,27977,27978,27979,27980,27981,27982,27983,27984,27985,27986,27987,27988,27989,27990,27991,27992,27993,27994,27995,27996,27997,27998,27999,28000,28001,28002,28003,28004,28005,28006,28007,28008,28009,28010,28011,28012,28013,28014,28015,28016,28017,28018,28019,28020,28021,28022,28023,28024,28025,28026,28027,28028,28029,28030,28031,28032,28033,28034,28035,28036,28037,28038,28039,28040,28041,28042,28043,28044,28045,28046,28047,28048,28049,28050,28051,28052,28053,28054,28055,28056,28057,28058,28059,28060,28061,28062,28063,28064,28065,28066,28067,28068,28069,28070,28071,28072,28073,28074,28075,28076,28077,28078,28079,28080,28081,28082,28083,28084,28085,28086,28087,28088,28089,28090,28091,28092,28093,28094,28095,28096,28097,28098,28099,28100,28101,28102,28103,28104,28105,28106,28107,28108,28109,28110,28111,28112,28113,28114,28115,28116,28117,28118,28119,28120,28121,28122,28123,28124,28125,28126,28127,28128,28129,28130,28131,28132,28133,28134,28135,28136,28137,28138,28139,28140,28141,28142,28143,28144,28145,28146,28147,28148,28149,28150,28151,28152,28153,28154,28155,28156,28157,28158,28159,28160,28161,28162,28163,28164,28165,28166,28167,28168,28169,28170,28171,28172,28173,28174,28175,28176,28177,28178,28179,28180,28181,28182,28183,28184,28185,28186,28187,28188,28189,28190,28191,28192,28193,28194,28195,28196,28197,28198,28199,28200,28201,28202,28203,28204,28205,28206,28207,28208,28209,28210,28211,28212,28213,28214,28215,28216,28217,28218,28219,28220,28221,28222,28223,28224,28225,28226,28227,28228,28229,28230,28231,28232,28233,28234,28235,28236,28237,28238,28239,28240,28241,28242,28243,28244,28245,28246,28247,28248,28249,28250,28251,28252,28253,28254,28255,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28267,28268,28269,28270,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28286,28287,28288,28289,28290,28291,28292,28293,28294,28295,28296,28297,28298,28299,28300,28301,28302,28303,28304,28305,28306,28307,28308,28309,28310,28311,28312,28313,28314,28315,28316,28317,28318,28319,28320,28321,28322,28323,28324,28325,28326,28327,28328,28329,28330,28331,28332,28333,28334,28335,28336,28337,28338,28339,28340,28341,28342,28343,28344,28345,28346,28347,28348,28349,28350,28351,28352,28353,28354,28355,28356,28357,28358,28359,28360,28361,28362,28363,28364,28365,28366,28367,28368,28369,28370,28371,28372,28373,28374,28375,28376,28377,28378,28379,28380,28381,28382,28383,28384,28385,28386,28387,28388,28389,28390,28391,28392,28393,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28404,28405,28406,28407,28408,28409,28410,28411,28412,28413,28414,28415,28416,28417,28418,28419,28420,28421,28422,28423,28424,28425,28426,28427,28428,28429,28430,28431,28432,28433,28434,28435,28436,28437,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28448,28449,28450,28451,28452,28453,28454,28455,28456,28457,28458,28459,28460,28461,28462,28463,28464,28465,28466,28467,28468,28469,28470,28471,28472,28473,28474,28475,28476,28477,28478,28479,28480,28481,28482,28483,28484,28485,28486,28487,28488,28489,28490,28491,28492,28493,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28504,28505,28506,28507,28508,28509,28510,28511,28512,28513,28514,28515,28516,28517,28518,28519,28520,28521,28522,28523,28524,28525,28526,28527,28528,28529,28530,28531,28532,28533,28534,28535,28536,28537,28538,28539,28540,28541,28542,28543,28544,28545,28546,28547,28548,28549,28550,28551,28552,28553,28554,28555,28556,28557,28558,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28572,28573,28574,28575,28576,28577,28578,28579,28580,28581,28582,28583,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28595,28596,28597,28598,28599,28600,28601,28602,28603,28604,28605,28606,28607,28608,28609,28610,28611,28612,28613,28614,28615,28616,28617,28618,28619,28620,28621,28622,28623,28624,28625,28626,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28638,28639,28640,28641,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28654,28655,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28689,28690,28691,28692,28693,28694,28695,28696,28697,28698,28699,28700,28701,28702,28703,28704,28705,28706,28707,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28725,28726,28727,28728,28729,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28748,28749,28750,28751,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28766,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28779,28780,28781,28782,28783,28784,28785,28786,28787,28788,28789,28790,28791,28792,28793,28794,28795,28796,28797,28798,28799,28800,28801,28802,28803,28804,28805,28806,28807,28808,28809,28810,28811,28812,28813,28814,28815,28816,28817,28818,28819,28820,28821,28822,28823,28824,28825,28826,28827,28828,28829,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28843,28844,28845,28846,28847,28848,28849,28850,28851,28852,28853,28854,28855,28856,28857,28858,28859,28860,28861,28862,28863,28864,28865,28866,28867,28868,28869,28870,28871,28872,28873,28874,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28888,28889,28890,28891,28892,28893,28894,28895,28896,28897,28898,28899,28900,28901,28902,28903,28904,28905,28906,28907,28908,28909,28910,28911,28912,28913,28914,28915,28916,28917,28918,28919,28920,28921,28922,28923,28924,28925,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28937,28938,28939,28940,28941,28942,28943,28944,28945,28946,28947,28948,28949,28950,28951,28952,28953,28954,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28966,28967,28968,28969,28970,28971,28972,28973,28974,28975,28976,28977,28978,28979,28980,28981,28982,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28997,28998,28999,29000,29001,29002,29003,29004,29005,29006,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29020,29021,29022,29023,29024,29025,29026,29027,29028,29029,29030,29031,29032,29033,29034,29035,29036,29037,29038,29039,29040,29041,29042,29043,29044,29045,29046,29047,29048,29049,29050,29051,29052,29053,29054,29055,29056,29057,29058,29059,29060,29061,29062,29063,29064,29065,29066,29067,29068,29069,29070,29071,29072,29073,29074,29075,29076,29077,29078,29079,29080,29081,29082,29083,29084,29085,29086,29087,29088,29089,29090,29091,29092,29093,29094,29095,29096,29097,29098,29099,29100,29101,29102,29103,29104,29105,29106,29107,29108,29109,29110,29111,29112,29113,29114,29115,29116,29117,29118,29119,29120,29121,29122,29123,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29134,29135,29136,29137,29138,29139,29140,29141,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29152,29153,29154,29155,29156,29157,29158,29159,29160,29161,29162,29163,29164,29165,29166,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29177,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29190,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29213,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29224,29225,29226,29227,29228,29229,29230,29231,29232,29233,29234,29235,29236,29237,29238,29239,29240,29241,29242,29243,29244,29245,29246,29247,29248,29249,29250,29251,29252,29253,29254,29255,29256,29257,29258,29259,29260,29261,29262,29263,29264,29265,29266,29267,29268,29269,29270,29271,29272,29273,29274,29275,29276,29277,29278,29279,29280,29281,29282,29283,29284,29285,29286,29287,29288,29289,29290,29291,29292,29293,29294,29295,29296,29297,29298,29299,29300,29301,29302,29303,29304,29305,29306,29307,29308,29309,29310,29311,29312,29313,29314,29315,29316,29317,29318,29319,29320,29321,29322,29323,29324,29325,29326,29327,29328,29329,29330,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29343,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29356,29357,29358,29359,29360,29361,29362,29363,29364,29365,29366,29367,29368,29369,29370,29371,29372,29373,29374,29375,29376,29377,29378,29379,29380,29381,29382,29383,29384,29385,29386,29387,29388,29389,29390,29391,29392,29393,29394,29395,29396,29397,29398,29399,29400,29401,29402,29403,29404,29405,29406,29407,29408,29409,29410,29411,29412,29413,29414,29415,29416,29417,29418,29419,29420,29421,29422,29423,29424,29425,29426,29427,29428,29429,29430,29431,29432,29433,29434,29435,29436,29437,29438,29439,29440,29441,29442,29443,29444,29445,29446,29447,29448,29449,29450,29451,29452,29453,29454,29455,29456,29457,29458,29459,29460,29461,29462,29463,29464,29465,29466,29467,29468,29469,29470,29471,29472,29473,29474,29475,29476,29477,29478,29479,29480,29481,29482,29483,29484,29485,29486,29487,29488,29489,29490,29491,29492,29493,29494,29495,29496,29497,29498,29499,29500,29501,29502,29503,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29517,29518,29519,29520,29521,29522,29523,29524,29525,29526,29527,29528,29529,29530,29531,29532,29533,29534,29535,29536,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29548,29549,29550,29551,29552,29553,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29566,29567,29568,29569,29570,29571,29572,29573,29574,29575,29576,29577,29578,29579,29580,29581,29582,29583,29584,29585,29586,29587,29588,29589,29590,29591,29592,29593,29594,29595,29596,29597,29598,29599,29600,29601,29602,29603,29604,29605,29606,29607,29608,29609,29610,29611,29612,29613,29614,29615,29616,29617,29618,29619,29620,29621,29622,29623,29624,29625,29626,29627,29628,29629,29630,29631,29632,29633,29634,29635,29636,29637,29638,29639,29640,29641,29642,29643,29644,29645,29646,29647,29648,29649,29650,29651,29652,29653,29654,29655,29656,29657,29658,29659,29660,29661,29662,29663,29664,29665,29666,29667,29668,29669,29670,29671,29672,29673,29674,29675,29676,29677,29678,29679,29680,29681,29682,29683,29684,29685,29686,29687,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29699,29700,29701,29702,29703,29704,29705,29706,29707,29708,29709,29710,29711,29712,29713,29714,29715,29716,29717,29718,29719,29720,29721,29722,29723,29724,29725,29726,29727,29728,29729,29730,29731,29732,29733,29734,29735,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29746,29747,29748,29749,29750,29751,29752,29753,29754,29755,29756,29757,29758,29759,29760,29761,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29781,29782,29783,29784,29785,29786,29787,29788,29789,29790,29791,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29805,29806,29807,29808,29809,29810,29811,29812,29813,29814,29815,29816,29817,29818,29819,29820,29821,29822,29823,29824,29825,29826,29827,29828,29829,29830,29831,29832,29833,29834,29835,29836,29837,29838,29839,29840,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29852,29853,29854,29855,29856,29857,29858,29859,29860,29861,29862,29863,29864,29865,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29882,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29906,29907,29908,29909,29910,29911,29912,29913,29914,29915,29916,29917,29918,29919,29920,29921,29922,29923,29924,29925,29926,29927,29928,29929,29930,29931,29932,29933,29934,29935,29936,29937,29938,29939,29940,29941,29942,29943,29944,29945,29946,29947,29948,29949,29950,29951,29952,29953,29954,29955,29956,29957,29958,29959,29960,29961,29962,29963,29964,29965,29966,29967,29968,29969,29970,29971,29972,29973,29974,29975,29976,29977,29978,29979,29980,29981,29982,29983,29984,29985,29986,29987,29988,29989,29990,29991,29992,29993,29994,29995,29996,29997,29998,29999,30000,30001,30002,30003,30004,30005,30006,30007,30008,30009,30010,30011,30012,30013,30014,30015,30016,30017,30018,30019,30020,30021,30022,30023,30024,30025,30026,30027,30028,30029,30030,30031,30032,30033,30034,30035,30036,30037,30038,30039,30040,30041,30042,30043,30044,30045,30046,30047,30048,30049,30050,30051,30052,30053,30054,30055,30056,30057,30058,30059,30060,30061,30062,30063,30064,30065,30066,30067,30068,30069,30070,30071,30072,30073,30074,30075,30076,30077,30078,30079,30080,30081,30082,30083,30084,30085,30086,30087,30088,30089,30090,30091,30092,30093,30094,30095,30096,30097,30098,30099,30100,30101,30102,30103,30104,30105,30106,30107,30108,30109,30110,30111,30112,30113,30114,30115,30116,30117,30118,30119,30120,30121,30122,30123,30124,30125,30126,30127,30128,30129,30130,30131,30132,30133,30134,30135,30136,30137,30138,30139,30140,30141,30142,30143,30144,30145,30146,30147,30148,30149,30150,30151,30152,30153,30154,30155,30156,30157,30158,30159,30160,30161,30162,30163,30164,30165,30166,30167,30168,30169,30170,30171,30172,30173,30174,30175,30176,30177,30178,30179,30180,30181,30182,30183,30184,30185,30186,30187,30188,30189,30190,30191,30192,30193,30194,30195,30196,30197,30198,30199,30200,30201,30202,30203,30204,30205,30206,30207,30208,30209,30210,30211,30212,30213,30214,30215,30216,30217,30218,30219,30220,30221,30222,30223,30224,30225,30226,30227,30228,30229,30230,30231,30232,30233,30234,30235,30236,30237,30238,30239,30240,30241,30242,30243,30244,30245,30246,30247,30248,30249,30250,30251,30252,30253,30254,30255,30256,30257,30258,30259,30260,30261,30262,30263,30264,30265,30266,30267,30268,30269,30270,30271,30272,30273,30274,30275,30276,30277,30278,30279,30280,30281,30282,30283,30284,30285,30286,30287,30288,30289,30290,30291,30292,30293,30294,30295,30296,30297,30298,30299,30300,30301,30302,30303,30304,30305,30306,30307,30308,30309,30310,30311,30312,30313,30314,30315,30316,30317,30318,30319,30320,30321,30322,30323,30324,30325,30326,30327,30328,30329,30330,30331,30332,30333,30334,30335,30336,30337,30338,30339,30340,30341,30342,30343,30344,30345,30346,30347,30348,30349,30350,30351,30352,30353,30354,30355,30356,30357,30358,30359,30360,30361,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30372,30373,30374,30375,30376,30377,30378,30379,30380,30381,30382,30383,30384,30385,30386,30387,30388,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30399,30400,30401,30402,30403,30404,30405,30406,30407,30408,30409,30410,30411,30412,30413,30414,30415,30416,30417,30418,30419,30420,30421,30422,30423,30424,30425,30426,30427,30428,30429,30430,30431,30432,30433,30434,30435,30436,30437,30438,30439,30440,30441,30442,30443,30444,30445,30446,30447,30448,30449,30450,30451,30452,30453,30454,30455,30456,30457,30458,30459,30460,30461,30462,30463,30464,30465,30466,30467,30468,30469,30470,30471,30472,30473,30474,30475,30476,30477,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30489,30490,30491,30492,30493,30494,30495,30496,30497,30498,30499,30500,30501,30502,30503,30504,30505,30506,30507,30508,30509,30510,30511,30512,30513,30514,30515,30516,30517,30518,30519,30520,30521,30522,30523,30524,30525,30526,30527,30528,30529,30530,30531,30532,30533,30534,30535,30536,30537,30538,30539,30540,30541,30542,30543,30544,30545,30546,30547,30548,30549,30550,30551,30552,30553,30554,30555,30556,30557,30558,30559,30560,30561,30562,30563,30564,30565,30566,30567,30568,30569,30570,30571,30572,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30585,30586,30587,30588,30589,30590,30591,30592,30593,30594,30595,30596,30597,30598,30599,30600,30601,30602,30603,30604,30605,30606,30607,30608,30609,30610,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30623,30624,30625,30626,30627,30628,30629,30630,30631,30632,30633,30634,30635,30636,30637,30638,30639,30640,30641,30642,30643,30644,30645,30646,30647,30648,30649,30650,30651,30652,30653,30654,30655,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30669,30670,30671,30672,30673,30674,30675,30676,30677,30678,30679,30680,30681,30682,30683,30684,30685,30686,30687,30688,30689,30690,30691,30692,30693,30694,30695,30696,30697,30698,30699,30700,30701,30702,30703,30704,30705,30706,30707,30708,30709,30710,30711,30712,30713,30714,30715,30716,30717,30718,30719,30720,30721,30722,30723,30724,30725,30726,30727,30728,30729,30730,30731,30732,30733,30734,30735,30736,30737,30738,30739,30740,30741,30742,30743,30744,30745,30746,30747,30748,30749,30750,30751,30752,30753,30754,30755,30756,30757,30758,30759,30760,30761,30762,30763,30764,30765,30766,30767,30768,30769,30770,30771,30772,30773,30774,30775,30776,30777,30778,30779,30780,30781,30782,30783,30784,30785,30786,30787,30788,30789,30790,30791,30792,30793,30794,30795,30796,30797,30798,30799,30800,30801,30802,30803,30804,30805,30806,30807,30808,30809,30810,30811,30812,30813,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30826,30827,30828,30829,30830,30831,30832,30833,30834,30835,30836,30837,30838,30839,30840,30841,30842,30843,30844,30845,30846,30847,30848,30849,30850,30851,30852,30853,30854,30855,30856,30857,30858,30859,30860,30861,30862,30863,30864,30865,30866,30867,30868,30869,30870,30871,30872,30873,30874,30875,30876,30877,30878,30879,30880,30881,30882,30883,30884,30885,30886,30887,30888,30889,30890,30891,30892,30893,30894,30895,30896,30897,30898,30899,30900,30901,30902,30903,30904,30905,30906,30907,30908,30909,30910,30911,30912,30913,30914,30915,30916,30917,30918,30919,30920,30921,30922,30923,30924,30925,30926,30927,30928,30929,30930,30931,30932,30933,30934,30935,30936,30937,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30952,30953,30954,30955,30956,30957,30958,30959,30960,30961,30962,30963,30964,30965,30966,30967,30968,30969,30970,30971,30972,30973,30974,30975,30976,30977,30978,30979,30980,30981,30982,30983,30984,30985,30986,30987,30988,30989,30990,30991,30992,30993,30994,30995,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31006,31007,31008,31009,31010,31011,31012,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31028,31029,31030,31031,31032,31033,31034,31035,31036,31037,31038,31039,31040,31041,31042,31043,31044,31045,31046,31047,31048,31049,31050,31051,31052,31053,31054,31055,31056,31057,31058,31059,31060,31061,31062,31063,31064,31065,31066,31067,31068,31069,31070,31071,31072,31073,31074,31075,31076,31077,31078,31079,31080,31081,31082,31083,31084,31085,31086,31087,31088,31089,31090,31091,31092,31093,31094,31095,31096,31097,31098,31099,31100,31101,31102,31103,31104,31105,31106,31107,31108,31109,31110,31111,31112,31113,31114,31115,31116,31117,31118,31119,31120,31121,31122,31123,31124,31125,31126,31127,31128,31129,31130,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31143,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31155,31156,31157,31158,31159,31160,31161,31162,31163,31164,31165,31166,31167,31168,31169,31170,31171,31172,31173,31174,31175,31176,31177,31178,31179,31180,31181,31182,31183,31184,31185,31186,31187,31188,31189,31190,31191,31192,31193,31194,31195,31196,31197,31198,31199,31200,31201,31202,31203,31204,31205,31206,31207,31208,31209,31210,31211,31212,31213,31214,31215,31216,31217,31218,31219,31220,31221,31222,31223,31224,31225,31226,31227,31228,31229,31230,31231,31232,31233,31234,31235,31236,31237,31238,31239,31240,31241,31242,31243,31244,31245,31246,31247,31248,31249,31250,31251,31252,31253,31254,31255,31256,31257,31258,31259,31260,31261,31262,31263,31264,31265,31266,31267,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31283,31284,31285,31286,31287,31288,31289,31290,31291,31292,31293,31294,31295,31296,31297,31298,31299,31300,31301,31302,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31313,31314,31315,31316,31317,31318,31319,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31344,31345,31346,31347,31348,31349,31350,31351,31352,31353,31354,31355,31356,31357,31358,31359,31360,31361,31362,31363,31364,31365,31366,31367,31368,31369,31370,31371,31372,31373,31374,31375,31376,31377,31378,31379,31380,31381,31382,31383,31384,31385,31386,31387,31388,31389,31390,31391,31392,31393,31394,31395,31396,31397,31398,31399,31400,31401,31402,31403,31404,31405,31406,31407,31408,31409,31410,31411,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31423,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31435,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31446,31447,31448,31449,31450,31451,31452,31453,31454,31455,31456,31457,31458,31459,31460,31461,31462,31463,31464,31465,31466,31467,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,31479,31480,31481,31482,31483,31484,31485,31486,31487,31488,31489,31490,31491,31492,31493,31494,31495,31496,31497,31498,31499,31500,31501,31502,31503,31504,31505,31506,31507,31508,31509,31510,31511,31512,31513,31514,31515,31516,31517,31518,31519,31520,31521,31522,31523,31524,31525,31526,31527,31528,31529,31530,31531,31532,31533,31534,31535,31536,31537,31538,31539,31540,31541,31542,31543,31544,31545,31546,31547,31548,31549,31550,31551,31552,31553,31554,31555,31556,31557,31558,31559,31560,31561,31562,31563,31564,31565,31566,31567,31568,31569,31570,31571,31572,31573,31574,31575,31576,31577,31578,31579,31580,31581,31582,31583,31584,31585,31586,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31598,31599,31600,31601,31602,31603,31604,31605,31606,31607,31608,31609,31610,31611,31612,31613,31614,31615,31616,31617,31618,31619,31620,31621,31622,31623,31624,31625,31626,31627,31628,31629,31630,31631,31632,31633,31634,31635,31636,31637,31638,31639,31640,31641,31642,31643,31644,31645,31646,31647,31648,31649,31650,31651,31652,31653,31654,31655,31656,31657,31658,31659,31660,31661,31662,31663,31664,31665,31666,31667,31668,31669,31670,31671,31672,31673,31674,31675,31676,31677,31678,31679,31680,31681,31682,31683,31684,31685,31686,31687,31688,31689,31690,31691,31692,31693,31694,31695,31696,31697,31698,31699,31700,31701,31702,31703,31704,31705,31706,31707,31708,31709,31710,31711,31712,31713,31714,31715,31716,31717,31718,31719,31720,31721,31722,31723,31724,31725,31726,31727,31728,31729,31730,31731,31732,31733,31734,31735,31736,31737,31738,31739,31740,31741,31742,31743,31744,31745,31746,31747,31748,31749,31750,31751,31752,31753,31754,31755,31756,31757,31758,31759,31760,31761,31762,31763,31764,31765,31766,31767,31768,31769,31770,31771,31772,31773,31774,31775,31776,31777,31778,31779,31780,31781,31782,31783,31784,31785,31786,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31800,31801,31802,31803,31804,31805,31806,31807,31808,31809,31810,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31821,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31859,31860,31861,31862,31863,31864,31865,31866,31867,31868,31869,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31881,31882,31883,31884,31885,31886,31887,31888,31889,31890,31891,31892,31893,31894,31895,31896,31897,31898,31899,31900,31901,31902,31903,31904,31905,31906,31907,31908,31909,31910,31911,31912,31913,31914,31915,31916,31917,31918,31919,31920,31921,31922,31923,31924,31925,31926,31927,31928,31929,31930,31931,31932,31933,31934,31935,31936,31937,31938,31939,31940,31941,31942,31943,31944,31945,31946,31947,31948,31949,31950,31951,31952,31953,31954,31955,31956,31957,31958,31959,31960,31961,31962,31963,31964,31965,31966,31967,31968,31969,31970,31971,31972,31973,31974,31975,31976,31977,31978,31979,31980,31981,31982,31983,31984,31985,31986,31987,31988,31989,31990,31991,31992,31993,31994,31995,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32010,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32032,32033,32034,32035,32036,32037,32038,32039,32040,32041,32042,32043,32044,32045,32046,32047,32048,32049,32050,32051,32052,32053,32054,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32110,32111,32112,32113,32114,32115,32116,32117,32118,32119,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32166,32167,32168,32169,32170,32171,32172,32173,32174,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32315,32316,32317,32318,32319,32320,32321,32322,32323,32324,32325,32326,32327,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32386,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32411,32412,32413,32414,32415,32416,32417,32418,32419,32420,32421,32422,32423,32424,32425,32426,32427,32428,32429,32430,32431,32432,32433,32434,32435,32436,32437,32438,32439,32440,32441,32442,32443,32444,32445,32446,32447,32448,32449,32450,32451,32452,32453,32454,32455,32456,32457,32458,32459,32460,32461,32462,32463,32464,32465,32466,32467,32468,32469,32470,32471,32472,32473,32474,32475,32476,32477,32478,32479,32480,32481,32482,32483,32484,32485,32486,32487,32488,32489,32490,32491,32492,32493,32494,32495,32496,32497,32498,32499,32500,32501,32502,32503,32504,32505,32506,32507,32508,32509,32510,32511,32512,32513,32514,32515,32516,32517,32518,32519,32520,32521,32522,32523,32524,32525,32526,32527,32528,32529,32530,32531,32532,32533,32534,32535,32536,32537,32538,32539,32540,32541,32542,32543,32544,32545,32546,32547,32548,32549,32550,32551,32552,32553,32554,32555,32556,32557,32558,32559,32560,32561,32562,32563,32564,32565,32566,32567,32568,32569,32570,32571,32572,32573,32574,32575,32576,32577,32578,32579,32580,32581,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32592,32593,32594,32595,32596,32597,32598,32599,32600,32601,32602,32603,32604,32605,32606,32607,32608,32609,32610,32611,32612,32613,32614,32615,32616,32617,32618,32619,32620,32621,32622,32623,32624,32625,32626,32627,32628,32629,32630,32631,32632,32633,32634,32635,32636,32637,32638,32639,32640,32641,32642,32643,32644,32645,32646,32647,32648,32649,32650,32651,32652,32653,32654,32655,32656,32657,32658,32659,32660,32661,32662,32663,32664,32665,32666,32667,32668,32669,32670,32671,32672,32673,32674,32675,32676,32677,32678,32679,32680,32681,32682,32683,32684,32685,32686,32687,32688,32689,32690,32691,32692,32693,32694,32695,32696,32697,32698,32699,32700,32701,32702,32703,32704,32705,32706,32707,32708,32709,32710,32711,32712,32713,32714,32715,32716,32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32727,32728,32729,32730,32731,32732,32733,32734,32735,32736,32737,32738,32739,32740,32741,32742,32743,32744,32745,32746,32747,32748,32749,32750,32751,32752,32753,32754,32755,32756,32757,32758,32759,32760,32761,32762,32763,32764,32765,32766,32767,32768,32769,32770,32771,32772,32773,32774,32775,32776,32777,32778,32779,32780,32781,32782,32783,32784,32785,32786,32787,32788,32789,32790,32791,32792,32793,32794,32795,32796,32797,32798,32799,32800,32801,32802,32803,32804,32805,32806,32807,32808,32809,32810,32811,32812,32813,32814,32815,32816,32817,32818,32819,32820,32821,32822,32823,32824,32825,32826,32827,32828,32829,32830,32831,32832,32833,32834,32835,32836,32837,32838,32839,32840,32841,32842,32843,32844,32845,32846,32847,32848,32849,32850,32851,32852,32853,32854,32855,32856,32857,32858,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32873,32874,32875,32876,32877,32878,32879,32880,32881,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,32894,32895,32896,32897,32898,32899,32900,32901,32902,32903,32904,32905,32906,32907,32908,32909,32910,32911,32912,32913,32914,32915,32916,32917,32918,32919,32920,32921,32922,32923,32924,32925,32926,32927,32928,32929,32930,32931,32932,32933,32934,32935,32936,32937,32938,32939,32940,32941,32942,32943,32944,32945,32946,32947,32948,32949,32950,32951,32952,32953,32954,32955,32956,32957,32958,32959,32960,32961,32962,32963,32964,32965,32966,32967,32968,32969,32970,32971,32972,32973,32974,32975,32976,32977,32978,32979,32980,32981,32982,32983,32984,32985,32986,32987,32988,32989,32990,32991,32992,32993,32994,32995,32996,32997,32998,32999,33000,33001,33002,33003,33004,33005,33006,33007,33008,33009,33010,33011,33012,33013,33014,33015,33016,33017,33018,33019,33020,33021,33022,33023,33024,33025,33026,33027,33028,33029,33030,33031,33032,33033,33034,33035,33036,33037,33038,33039,33040,33041,33042,33043,33044,33045,33046,33047,33048,33049,33050,33051,33052,33053,33054,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33068,33069,33070,33071,33072,33073,33074,33075,33076,33077,33078,33079,33080,33081,33082,33083,33084,33085,33086,33087,33088,33089,33090,33091,33092,33093,33094,33095,33096,33097,33098,33099,33100,33101,33102,33103,33104,33105,33106,33107,33108,33109,33110,33111,33112,33113,33114,33115,33116,33117,33118,33119,33120,33121,33122,33123,33124,33125,33126,33127,33128,33129,33130,33131,33132,33133,33134,33135,33136,33137,33138,33139,33140,33141,33142,33143,33144,33145,33146,33147,33148,33149,33150,33151,33152,33153,33154,33155,33156,33157,33158,33159,33160,33161,33162,33163,33164,33165,33166,33167,33168,33169,33170,33171,33172,33173,33174,33175,33176,33177,33178,33179,33180,33181,33182,33183,33184,33185,33186,33187,33188,33189,33190,33191,33192,33193,33194,33195,33196,33197,33198,33199,33200,33201,33202,33203,33204,33205,33206,33207,33208,33209,33210,33211,33212,33213,33214,33215,33216,33217,33218,33219,33220,33221,33222,33223,33224,33225,33226,33227,33228,33229,33230,33231,33232,33233,33234,33235,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33251,33252,33253,33254,33255,33256,33257,33258,33259,33260,33261,33262,33263,33264,33265,33266,33267,33268,33269,33270,33271,33272,33273,33274,33275,33276,33277,33278,33279,33280,33281,33282,33283,33284,33285,33286,33287,33288,33289,33290,33291,33292,33293,33294,33295,33296,33297,33298,33299,33300,33301,33302,33303,33304,33305,33306,33307,33308,33309,33310,33311,33312,33313,33314,33315,33316,33317,33318,33319,33320,33321,33322,33323,33324,33325,33326,33327,33328,33329,33330,33331,33332,33333,33334,33335,33336,33337,33338,33339,33340,33341,33342,33343,33344,33345,33346,33347,33348,33349,33350,33351,33352,33353,33354,33355,33356,33357,33358,33359,33360,33361,33362,33363,33364,33365,33366,33367,33368,33369,33370,33371,33372,33373,33374,33375,33376,33377,33378,33379,33380,33381,33382,33383,33384,33385,33386,33387,33388,33389,33390,33391,33392,33393,33394,33395,33396,33397,33398,33399,33400,33401,33402,33403,33404,33405,33406,33407,33408,33409,33410,33411,33412,33413,33414,33415,33416,33417,33418,33419,33420,33421,33422,33423,33424,33425,33426,33427,33428,33429,33430,33431,33432,33433,33434,33435,33436,33437,33438,33439,33440,33441,33442,33443,33444,33445,33446,33447,33448,33449,33450,33451,33452,33453,33454,33455,33456,33457,33458,33459,33460,33461,33462,33463,33464,33465,33466,33467,33468,33469,33470,33471,33472,33473,33474,33475,33476,33477,33478,33479,33480,33481,33482,33483,33484,33485,33486,33487,33488,33489,33490,33491,33492,33493,33494,33495,33496,33497,33498,33499,33500,33501,33502,33503,33504,33505,33506,33507,33508,33509,33510,33511,33512,33513,33514,33515,33516,33517,33518,33519,33520,33521,33522,33523,33524,33525,33526,33527,33528,33529,33530,33531,33532,33533,33534,33535,33536,33537,33538,33539,33540,33541,33542,33543,33544,33545,33546,33547,33548,33549,33550,33551,33552,33553,33554,33555,33556,33557,33558,33559,33560,33561,33562,33563,33564,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33575,33576,33577,33578,33579,33580,33581,33582,33583,33584,33585,33586,33587,33588,33589,33590,33591,33592,33593,33594,33595,33596,33597,33598,33599,33600,33601,33602,33603,33604,33605,33606,33607,33608,33609,33610,33611,33612,33613,33614,33615,33616,33617,33618,33619,33620,33621,33622,33623,33624,33625,33626,33627,33628,33629,33630,33631,33632,33633,33634,33635,33636,33637,33638,33639,33640,33641,33642,33643,33644,33645,33646,33647,33648,33649,33650,33651,33652,33653,33654,33655,33656,33657,33658,33659,33660,33661,33662,33663,33664,33665,33666,33667,33668,33669,33670,33671,33672,33673,33674,33675,33676,33677,33678,33679,33680,33681,33682,33683,33684,33685,33686,33687,33688,33689,33690,33691,33692,33693,33694,33695,33696,33697,33698,33699,33700,33701,33702,33703,33704,33705,33706,33707,33708,33709,33710,33711,33712,33713,33714,33715,33716,33717,33718,33719,33720,33721,33722,33723,33724,33725,33726,33727,33728,33729,33730,33731,33732,33733,33734,33735,33736,33737,33738,33739,33740,33741,33742,33743,33744,33745,33746,33747,33748,33749,33750,33751,33752,33753,33754,33755,33756,33757,33758,33759,33760,33761,33762,33763,33764,33765,33766,33767,33768,33769,33770,33771,33772,33773,33774,33775,33776,33777,33778,33779,33780,33781,33782,33783,33784,33785,33786,33787,33788,33789,33790,33791,33792,33793,33794,33795,33796,33797,33798,33799,33800,33801,33802,33803,33804,33805,33806,33807,33808,33809,33810,33811,33812,33813,33814,33815,33816,33817,33818,33819,33820,33821,33822,33823,33824,33825,33826,33827,33828,33829,33830,33831,33832,33833,33834,33835,33836,33837,33838,33839,33840,33841,33842,33843,33844,33845,33846,33847,33848,33849,33850,33851,33852,33853,33854,33855,33856,33857,33858,33859,33860,33861,33862,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33873,33874,33875,33876,33877,33878,33879,33880,33881,33882,33883,33884,33885,33886,33887,33888,33889,33890,33891,33892,33893,33894,33895,33896,33897,33898,33899,33900,33901,33902,33903,33904,33905,33906,33907,33908,33909,33910,33911,33912,33913,33914,33915,33916,33917,33918,33919,33920,33921,33922,33923,33924,33925,33926,33927,33928,33929,33930,33931,33932,33933,33934,33935,33936,33937,33938,33939,33940,33941,33942,33943,33944,33945,33946,33947,33948,33949,33950,33951,33952,33953,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33967,33968,33969,33970,33971,33972,33973,33974,33975,33976,33977,33978,33979,33980,33981,33982,33983,33984,33985,33986,33987,33988,33989,33990,33991,33992,33993,33994,33995,33996,33997,33998,33999,34000,34001,34002,34003,34004,34005,34006,34007,34008,34009,34010,34011,34012,34013,34014,34015,34016,34017,34018,34019,34020,34021,34022,34023,34024,34025,34026,34027,34028,34029,34030,34031,34032,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34044,34045,34046,34047,34048,34049,34050,34051,34052,34053,34054,34055,34056,34057,34058,34059,34060,34061,34062,34063,34064,34065,34066,34067,34068,34069,34070,34071,34072,34073,34074,34075,34076,34077,34078,34079,34080,34081,34082,34083,34084,34085,34086,34087,34088,34089,34090,34091,34092,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34103,34104,34105,34106,34107,34108,34109,34110,34111,34112,34113,34114,34115,34116,34117,34118,34119,34120,34121,34122,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34134,34135,34136,34137,34138,34139,34140,34141,34142,34143,34144,34145,34146,34147,34148,34149,34150,34151,34152,34153,34154,34155,34156,34157,34158,34159,34160,34161,34162,34163,34164,34165,34166,34167,34168,34169,34170,34171,34172,34173,34174,34175,34176,34177,34178,34179,34180,34181,34182,34183,34184,34185,34186,34187,34188,34189,34190,34191,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34203,34204,34205,34206,34207,34208,34209,34210,34211,34212,34213,34214,34215,34216,34217,34218,34219,34220,34221,34222,34223,34224,34225,34226,34227,34228,34229,34230,34231,34232,34233,34234,34235,34236,34237,34238,34239,34240,34241,34242,34243,34244,34245,34246,34247,34248,34249,34250,34251,34252,34253,34254,34255,34256,34257,34258,34259,34260,34261,34262,34263,34264,34265,34266,34267,34268,34269,34270,34271,34272,34273,34274,34275,34276,34277,34278,34279,34280,34281,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,34297,34298,34299,34300,34301,34302,34303,34304,34305,34306,34307,34308,34309,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34321,34322,34323,34324,34325,34326,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34343,34344,34345,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34360,34361,34362,34363,34364,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34381,34382,34383,34384,34385,34386,34387,34388,34389,34390,34391,34392,34393,34394,34395,34396,34397,34398,34399,34400,34401,34402,34403,34404,34405,34406,34407,34408,34409,34410,34411,34412,34413,34414,34415,34416,34417,34418,34419,34420,34421,34422,34423,34424,34425,34426,34427,34428,34429,34430,34431,34432,34433,34434,34435,34436,34437,34438,34439,34440,34441,34442,34443,34444,34445,34446,34447,34448,34449,34450,34451,34452,34453,34454,34455,34456,34457,34458,34459,34460,34461,34462,34463,34464,34465,34466,34467,34468,34469,34470,34471,34472,34473,34474,34475,34476,34477,34478,34479,34480,34481,34482,34483,34484,34485,34486,34487,34488,34489,34490,34491,34492,34493,34494,34495,34496,34497,34498,34499,34500,34501,34502,34503,34504,34505,34506,34507,34508,34509,34510,34511,34512,34513,34514,34515,34516,34517,34518,34519,34520,34521,34522,34523,34524,34525,34526,34527,34528,34529,34530,34531,34532,34533,34534,34535,34536,34537,34538,34539,34540,34541,34542,34543,34544,34545,34546,34547,34548,34549,34550,34551,34552,34553,34554,34555,34556,34557,34558,34559,34560,34561,34562,34563,34564,34565,34566,34567,34568,34569,34570,34571,34572,34573,34574,34575,34576,34577,34578,34579,34580,34581,34582,34583,34584,34585,34586,34587,34588,34589,34590,34591,34592,34593,34594,34595,34596,34597,34598,34599,34600,34601,34602,34603,34604,34605,34606,34607,34608,34609,34610,34611,34612,34613,34614,34615,34616,34617,34618,34619,34620,34621,34622,34623,34624,34625,34626,34627,34628,34629,34630,34631,34632,34633,34634,34635,34636,34637,34638,34639,34640,34641,34642,34643,34644,34645,34646,34647,34648,34649,34650,34651,34652,34653,34654,34655,34656,34657,34658,34659,34660,34661,34662,34663,34664,34665,34666,34667,34668,34669,34670,34671,34672,34673,34674,34675,34676,34677,34678,34679,34680,34681,34682,34683,34684,34685,34686,34687,34688,34689,34690,34691,34692,34693,34694,34695,34696,34697,34698,34699,34700,34701,34702,34703,34704,34705,34706,34707,34708,34709,34710,34711,34712,34713,34714,34715,34716,34717,34718,34719,34720,34721,34722,34723,34724,34725,34726,34727,34728,34729,34730,34731,34732,34733,34734,34735,34736,34737,34738,34739,34740,34741,34742,34743,34744,34745,34746,34747,34748,34749,34750,34751,34752,34753,34754,34755,34756,34757,34758,34759,34760,34761,34762,34763,34764,34765,34766,34767,34768,34769,34770,34771,34772,34773,34774,34775,34776,34777,34778,34779,34780,34781,34782,34783,34784,34785,34786,34787,34788,34789,34790,34791,34792,34793,34794,34795,34796,34797,34798,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34809,34810,34811,34812,34813,34814,34815,34816,34817,34818,34819,34820,34821,34822,34823,34824,34825,34826,34827,34828,34829,34830,34831,34832,34833,34834,34835,34836,34837,34838,34839,34840,34841,34842,34843,34844,34845,34846,34847,34848,34849,34850,34851,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,34869,34870,34871,34872,34873,34874,34875,34876,34877,34878,34879,34880,34881,34882,34883,34884,34885,34886,34887,34888,34889,34890,34891,34892,34893,34894,34895,34896,34897,34898,34899,34900,34901,34902,34903,34904,34905,34906,34907,34908,34909,34910,34911,34912,34913,34914,34915,34916,34917,34918,34919,34920,34921,34922,34923,34924,34925,34926,34927,34928,34929,34930,34931,34932,34933,34934,34935,34936,34937,34938,34939,34940,34941,34942,34943,34944,34945,34946,34947,34948,34949,34950,34951,34952,34953,34954,34955,34956,34957,34958,34959,34960,34961,34962,34963,34964,34965,34966,34967,34968,34969,34970,34971,34972,34973,34974,34975,34976,34977,34978,34979,34980,34981,34982,34983,34984,34985,34986,34987,34988,34989,34990,34991,34992,34993,34994,34995,34996,34997,34998,34999,35000,35001,35002,35003,35004,35005,35006,35007,35008,35009,35010,35011,35012,35013,35014,35015,35016,35017,35018,35019,35020,35021,35022,35023,35024,35025,35026,35027,35028,35029,35030,35031,35032,35033,35034,35035,35036,35037,35038,35039,35040,35041,35042,35043,35044,35045,35046,35047,35048,35049,35050,35051,35052,35053,35054,35055,35056,35057,35058,35059,35060,35061,35062,35063,35064,35065,35066,35067,35068,35069,35070,35071,35072,35073,35074,35075,35076,35077,35078,35079,35080,35081,35082,35083,35084,35085,35086,35087,35088,35089,35090,35091,35092,35093,35094,35095,35096,35097,35098,35099,35100,35101,35102,35103,35104,35105,35106,35107,35108,35109,35110,35111,35112,35113,35114,35115,35116,35117,35118,35119,35120,35121,35122,35123,35124,35125,35126,35127,35128,35129,35130,35131,35132,35133,35134,35135,35136,35137,35138,35139,35140,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35166,35167,35168,35169,35170,35171,35172,35173,35174,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35195,35196,35197,35198,35199,35200,35201,35202,35203,35204,35205,35206,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35265,35266,35267,35268,35269,35270,35271,35272,35273,35274,35275,35276,35277,35278,35279,35280,35281,35282,35283,35284,35285,35286,35287,35288,35289,35290,35291,35292,35293,35294,35295,35296,35297,35298,35299,35300,35301,35302,35303,35304,35305,35306,35307,35308,35309,35310,35311,35312,35313,35314,35315,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35328,35329,35330,35331,35332,35333,35334,35335,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35390,35391,35392,35393,35394,35395,35396,35397,35398,35399,35400,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35449,35450,35451,35452,35453,35454,35455,35456,35457,35458,35459,35460,35461,35462,35463,35464,35465,35466,35467,35468,35469,35470,35471,35472,35473,35474,35475,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35591,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35622,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35686,35687,35688,35689,35690,35691,35692,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35744,35745,35746,35747,35748,35749,35750,35751,35752,35753,35754,35755,35756,35757,35758,35759,35760,35761,35762,35763,35764,35765,35766,35767,35768,35769,35770,35771,35772,35773,35774,35775,35776,35777,35778,35779,35780,35781,35782,35783,35784,35785,35786,35787,35788,35789,35790,35791,35792,35793,35794,35795,35796,35797,35798,35799,35800,35801,35802,35803,35804,35805,35806,35807,35808,35809,35810,35811,35812,35813,35814,35815,35816,35817,35818,35819,35820,35821,35822,35823,35824,35825,35826,35827,35828,35829,35830,35831,35832,35833,35834,35835,35836,35837,35838,35839,35840,35841,35842,35843,35844,35845,35846,35847,35848,35849,35850,35851,35852,35853,35854,35855,35856,35857,35858,35859,35860,35861,35862,35863,35864,35865,35866,35867,35868,35869,35870,35871,35872,35873,35874,35875,35876,35877,35878,35879,35880,35881,35882,35883,35884,35885,35886,35887,35888,35889,35890,35891,35892,35893,35894,35895,35896,35897,35898,35899,35900,35901,35902,35903,35904,35905,35906,35907,35908,35909,35910,35911,35912,35913,35914,35915,35916,35917,35918,35919,35920,35921,35922,35923,35924,35925,35926,35927,35928,35929,35930,35931,35932,35933,35934,35935,35936,35937,35938,35939,35940,35941,35942,35943,35944,35945,35946,35947,35948,35949,35950,35951,35952,35953,35954,35955,35956,35957,35958,35959,35960,35961,35962,35963,35964,35965,35966,35967,35968,35969,35970,35971,35972,35973,35974,35975,35976,35977,35978,35979,35980,35981,35982,35983,35984,35985,35986,35987,35988,35989,35990,35991,35992,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36125,36126,36127,36128,36129,36130,36131,36132,36133,36134,36135,36136,36137,36138,36139,36140,36141,36142,36143,36144,36145,36146,36147,36148,36149,36150,36151,36152,36153,36154,36155,36156,36157,36158,36159,36160,36161,36162,36163,36164,36165,36166,36167,36168,36169,36170,36171,36172,36173,36174,36175,36176,36177,36178,36179,36180,36181,36182,36183,36184,36185,36186,36187,36188,36189,36190,36191,36192,36193,36194,36195,36196,36197,36198,36199,36200,36201,36202,36203,36204,36205,36206,36207,36208,36209,36210,36211,36212,36213,36214,36215,36216,36217,36218,36219,36220,36221,36222,36223,36224,36225,36226,36227,36228,36229,36230,36231,36232,36233,36234,36235,36236,36237,36238,36239,36240,36241,36242,36243,36244,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36255,36256,36257,36258,36259,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36273,36274,36275,36276,36277,36278,36279,36280,36281,36282,36283,36284,36285,36286,36287,36288,36289,36290,36291,36292,36293,36294,36295,36296,36297,36298,36299,36300,36301,36302,36303,36304,36305,36306,36307,36308,36309,36310,36311,36312,36313,36314,36315,36316,36317,36318,36319,36320,36321,36322,36323,36324,36325,36326,36327,36328,36329,36330,36331,36332,36333,36334,36335,36336,36337,36338,36339,36340,36341,36342,36343,36344,36345,36346,36347,36348,36349,36350,36351,36352,36353,36354,36355,36356,36357,36358,36359,36360,36361,36362,36363,36364,36365,36366,36367,36368,36369,36370,36371,36372,36373,36374,36375,36376,36377,36378,36379,36380,36381,36382,36383,36384,36385,36386,36387,36388,36389,36390,36391,36392,36393,36394,36395,36396,36397,36398,36399,36400,36401,36402,36403,36404,36405,36406,36407,36408,36409,36410,36411,36412,36413,36414,36415,36416,36417,36418,36419,36420,36421,36422,36423,36424,36425,36426,36427,36428,36429,36430,36431,36432,36433,36434,36435,36436,36437,36438,36439,36440,36441,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36454,36455,36456,36457,36458,36459,36460,36461,36462,36463,36464,36465,36466,36467,36468,36469,36470,36471,36472,36473,36474,36475,36476,36477,36478,36479,36480,36481,36482,36483,36484,36485,36486,36487,36488,36489,36490,36491,36492,36493,36494,36495,36496,36497,36498,36499,36500,36501,36502,36503,36504,36505,36506,36507,36508,36509,36510,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36523,36524,36525,36526,36527,36528,36529,36530,36531,36532,36533,36534,36535,36536,36537,36538,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36558,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36710,36711,36712,36713,36714,36715,36716,36717,36718,36719,36720,36721,36722,36723,36724,36725,36726,36727,36728,36729,36730,36731,36732,36733,36734,36735,36736,36737,36738,36739,36740,36741,36742,36743,36744,36745,36746,36747,36748,36749,36750,36751,36752,36753,36754,36755,36756,36757,36758,36759,36760,36761,36762,36763,36764,36765,36766,36767,36768,36769,36770,36771,36772,36773,36774,36775,36776,36777,36778,36779,36780,36781,36782,36783,36784,36785,36786,36787,36788,36789,36790,36791,36792,36793,36794,36795,36796,36797,36798,36799,36800,36801,36802,36803,36804,36805,36806,36807,36808,36809,36810,36811,36812,36813,36814,36815,36816,36817,36818,36819,36820,36821,36822,36823,36824,36825,36826,36827,36828,36829,36830,36831,36832,36833,36834,36835,36836,36837,36838,36839,36840,36841,36842,36843,36844,36845,36846,36847,36848,36849,36850,36851,36852,36853,36854,36855,36856,36857,36858,36859,36860,36861,36862,36863,36864,36865,36866,36867,36868,36869,36870,36871,36872,36873,36874,36875,36876,36877,36878,36879,36880,36881,36882,36883,36884,36885,36886,36887,36888,36889,36890,36891,36892,36893,36894,36895,36896,36897,36898,36899,36900,36901,36902,36903,36904,36905,36906,36907,36908,36909,36910,36911,36912,36913,36914,36915,36916,36917,36918,36919,36920,36921,36922,36923,36924,36925,36926,36927,36928,36929,36930,36931,36932,36933,36934,36935,36936,36937,36938,36939,36940,36941,36942,36943,36944,36945,36946,36947,36948,36949,36950,36951,36952,36953,36954,36955,36956,36957,36958,36959,36960,36961,36962,36963,36964,36965,36966,36967,36968,36969,36970,36971,36972,36973,36974,36975,36976,36977,36978,36979,36980,36981,36982,36983,36984,36985,36986,36987,36988,36989,36990,36991,36992,36993,36994,36995,36996,36997,36998,36999,37000,37001,37002,37003,37004,37005,37006,37007,37008,37009,37010,37011,37012,37013,37014,37015,37016,37017,37018,37019,37020,37021,37022,37023,37024,37025,37026,37027,37028,37029,37030,37031,37032,37033,37034,37035,37036,37037,37038,37039,37040,37041,37042,37043,37044,37045,37046,37047,37048,37049,37050,37051,37052,37053,37054,37055,37056,37057,37058,37059,37060,37061,37062,37063,37064,37065,37066,37067,37068,37069,37070,37071,37072,37073,37074,37075,37076,37077,37078,37079,37080,37081,37082,37083,37084,37085,37086,37087,37088,37089,37090,37091,37092,37093,37094,37095,37096,37097,37098,37099,37100,37101,37102,37103,37104,37105,37106,37107,37108,37109,37110,37111,37112,37113,37114,37115,37116,37117,37118,37119,37120,37121,37122,37123,37124,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37145,37146,37147,37148,37149,37150,37151,37152,37153,37154,37155,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37167,37168,37169,37170,37171,37172,37173,37174,37175,37176,37177,37178,37179,37180,37181,37182,37183,37184,37185,37186,37187,37188,37189,37190,37191,37192,37193,37194,37195,37196,37197,37198,37199,37200,37201,37202,37203,37204,37205,37206,37207,37208,37209,37210,37211,37212,37213,37214,37215,37216,37217,37218,37219,37220,37221,37222,37223,37224,37225,37226,37227,37228,37229,37230,37231,37232,37233,37234,37235,37236,37237,37238,37239,37240,37241,37242,37243,37244,37245,37246,37247,37248,37249,37250,37251,37252,37253,37254,37255,37256,37257,37258,37259,37260,37261,37262,37263,37264,37265,37266,37267,37268,37269,37270,37271,37272,37273,37274,37275,37276,37277,37278,37279,37280,37281,37282,37283,37284,37285,37286,37287,37288,37289,37290,37291,37292,37293,37294,37295,37296,37297,37298,37299,37300,37301,37302,37303,37304,37305,37306,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37319,37320,37321,37322,37323,37324,37325,37326,37327,37328,37329,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37340,37341,37342,37343,37344,37345,37346,37347,37348,37349,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37492,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37518,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,37544,37545,37546,37547,37548,37549,37550,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37576,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37694,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37738,37739,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37775,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37834,37835,37836,37837,37838,37839,37840,37841,37842,37843,37844,37845,37846,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37950,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37995,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38021,38022,38023,38024,38025,38026,38027,38028,38029,38030,38031,38032,38033,38034,38035,38036,38037,38038,38039,38040,38041,38042,38043,38044,38045,38046,38047,38048,38049,38050,38051,38052,38053,38054,38055,38056,38057,38058,38059,38060,38061,38062,38063,38064,38065,38066,38067,38068,38069,38070,38071,38072,38073,38074,38075,38076,38077,38078,38079,38080,38081,38082,38083,38084,38085,38086,38087,38088,38089,38090,38091,38092,38093,38094,38095,38096,38097,38098,38099,38100,38101,38102,38103,38104,38105,38106,38107,38108,38109,38110,38111,38112,38113,38114,38115,38116,38117,38118,38119,38120,38121,38122,38123,38124,38125,38126,38127,38128,38129,38130,38131,38132,38133,38134,38135,38136,38137,38138,38139,38140,38141,38142,38143,38144,38145,38146,38147,38148,38149,38150,38151,38152,38153,38154,38155,38156,38157,38158,38159,38160,38161,38162,38163,38164,38165,38166,38167,38168,38169,38170,38171,38172,38173,38174,38175,38176,38177,38178,38179,38180,38181,38182,38183,38184,38185,38186,38187,38188,38189,38190,38191,38192,38193,38194,38195,38196,38197,38198,38199,38200,38201,38202,38203,38204,38205,38206,38207,38208,38209,38210,38211,38212,38213,38214,38215,38216,38217,38218,38219,38220,38221,38222,38223,38224,38225,38226,38227,38228,38229,38230,38231,38232,38233,38234,38235,38236,38237,38238,38239,38240,38241,38242,38243,38244,38245,38246,38247,38248,38249,38250,38251,38252,38253,38254,38255,38256,38257,38258,38259,38260,38261,38262,38263,38264,38265,38266,38267,38268,38269,38270,38271,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38376,38377,38378,38379,38380,38381,38382,38383,38384,38385,38386,38387,38388,38389,38390,38391,38392,38393,38394,38395,38396,38397,38398,38399,38400,38401,38402,38403,38404,38405,38406,38407,38408,38409,38410,38411,38412,38413,38414,38415,38416,38417,38418,38419,38420,38421,38422,38423,38424,38425,38426,38427,38428,38429,38430,38431,38432,38433,38434,38435,38436,38437,38438,38439,38440,38441,38442,38443,38444,38445,38446,38447,38448,38449,38450,38451,38452,38453,38454,38455,38456,38457,38458,38459,38460,38461,38462,38463,38464,38465,38466,38467,38468,38469,38470,38471,38472,38473,38474,38475,38476,38477,38478,38479,38480,38481,38482,38483,38484,38485,38486,38487,38488,38489,38490,38491,38492,38493,38494,38495,38496,38497,38498,38499,38500,38501,38502,38503,38504,38505,38506,38507,38508,38509,38510,38511,38512,38513,38514,38515,38516,38517,38518,38519,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38533,38534,38535,38536,38537,38538,38539,38540,38541,38542,38543,38544,38545,38546,38547,38548,38549,38550,38551,38552,38553,38554,38555,38556,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38567,38568,38569,38570,38571,38572,38573,38574,38575,38576,38577,38578,38579,38580,38581,38582,38583,38584,38585,38586,38587,38588,38589,38590,38591,38592,38593,38594,38595,38596,38597,38598,38599,38600,38601,38602,38603,38604,38605,38606,38607,38608,38609,38610,38611,38612,38613,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38624,38625,38626,38627,38628,38629,38630,38631,38632,38633,38634,38635,38636,38637,38638,38639,38640,38641,38642,38643,38644,38645,38646,38647,38648,38649,38650,38651,38652,38653,38654,38655,38656,38657,38658,38659,38660,38661,38662,38663,38664,38665,38666,38667,38668,38669,38670,38671,38672,38673,38674,38675,38676,38677,38678,38679,38680,38681,38682,38683,38684,38685,38686,38687,38688,38689,38690,38691,38692,38693,38694,38695,38696,38697,38698,38699,38700,38701,38702,38703,38704,38705,38706,38707,38708,38709,38710,38711,38712,38713,38714,38715,38716,38717,38718,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38738,38739,38740,38741,38742,38743,38744,38745,38746,38747,38748,38749,38750,38751,38752,38753,38754,38755,38756,38757,38758,38759,38760,38761,38762,38763,38764,38765,38766,38767,38768,38769,38770,38771,38772,38773,38774,38775,38776,38777,38778,38779,38780,38781,38782,38783,38784,38785,38786,38787,38788,38789,38790,38791,38792,38793,38794,38795,38796,38797,38798,38799,38800,38801,38802,38803,38804,38805,38806,38807,38808,38809,38810,38811,38812,38813,38814,38815,38816,38817,38818,38819,38820,38821,38822,38823,38824,38825,38826,38827,38828,38829,38830,38831,38832,38833,38834,38835,38836,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38886,38887,38888,38889,38890,38891,38892,38893,38894,38895,38896,38897,38898,38899,38900,38901,38902,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,39023,39024,39025,39026,39027,39028,39029,39030,39031,39032,39033,39034,39035,39036,39037,39038,39039,39040,39041,39042,39043,39044,39045,39046,39047,39048,39049,39050,39051,39052,39053,39054,39055,39056,39057,39058,39059,39060,39061,39062,39063,39064,39065,39066,39067,39068,39069,39070,39071,39072,39073,39074,39075,39076,39077,39078,39079,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39118,39119,39120,39121,39122,39123,39124,39125,39126,39127,39128,39129,39130,39131,39132,39133,39134,39135,39136,39137,39138,39139,39140,39141,39142,39143,39144,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,39176,39177,39178,39179,39180,39181,39182,39183,39184,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39214,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39252,39253,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39267,39268,39269,39270,39271,39272,39273,39274,39275,39276,39277,39278,39279,39280,39281,39282,39283,39284,39285,39286,39287,39288,39289,39290,39291,39292,39293,39294,39295,39296,39297,39298,39299,39300,39301,39302,39303,39304,39305,39306,39307,39308,39309,39310,39311,39312,39313,39314,39315,39316,39317,39318,39319,39320,39321,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39333,39334,39335,39336,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39532,39533,39534,39535,39536,39537,39538,39539,39540,39541,39542,39543,39544,39545,39546,39547,39548,39549,39550,39551,39552,39553,39554,39555,39556,39557,39558,39559,39560,39561,39562,39563,39564,39565,39566,39567,39568,39569,39570,39571,39572,39573,39574,39575,39576,39577,39578,39579,39580,39581,39582,39583,39584,39585,39586,39587,39588,39589,39590,39591,39592,39593,39594,39595,39596,39597,39598,39599,39600,39601,39602,39603,39604,39605,39606,39607,39608,39609,39610,39611,39612,39613,39614,39615,39616,39617,39618,39619,39620,39621,39622,39623,39624,39625,39626,39627,39628,39629,39630,39631,39632,39633,39634,39635,39636,39637,39638,39639,39640,39641,39642,39643,39644,39645,39646,39647,39648,39649,39650,39651,39652,39653,39654,39655,39656,39657,39658,39659,39660,39661,39662,39663,39664,39665,39666,39667,39668,39669,39670,39671,39672,39673,39674,39675,39676,39677,39678,39679,39680,39681,39682,39683,39684,39685,39686,39687,39688,39689,39690,39691,39692,39693,39694,39695,39696,39697,39698,39699,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39711,39712,39713,39714,39715,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39727,39728,39729,39730,39731,39732,39733,39734,39735,39736,39737,39738,39739,39740,39741,39742,39743,39744,39745,39746,39747,39748,39749,39750,39751,39752,39753,39754,39755,39756,39757,39758,39759,39760,39761,39762,39763,39764,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40060,40061,40062,40063,40064,40065,40066,40067,40068,40069,40070,40071,40072,40073,40074,40075,40076,40077,40078,40079,40080,40081,40082,40083,40084,40085,40086,40087,40088,40089,40090,40091,40092,40093,40094,40095,40096,40097,40098,40099,40100,40101,40102,40103,40104,40105,40106,40107,40108,40109,40110,40111,40112,40113,40114,40115,40116,40117,40118,40119,40120,40121,40122,40123,40124,40125,40126,40127,40128,40129,40130,40131,40132,40133,40134,40135,40136,40137,40138,40139,40140,40141,40142,40143,40144,40145,40146,40147,40148,40149,40150,40151,40152,40153,40154,40155,40156,40157,40158,40159,40160,40161,40162,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40479,40480,40481,40482,40483,40484,40485,40486,40487,40488,40489,40490,40491,40492,40493,40494,40495,40496,40497,40498,40499,40500,40501,40502,40503,40504,40505,40506,40507,40508,40509,40510,40511,40512,40513,40514,40515,40516,40517,40518,40519,40520,40521,40522,40523,40524,40525,40526,40527,40528,40529,40530,40531,40532,40533,40534,40535,40536,40537,40538,40539,40540,40541,40542,40543,40544,40545,40546,40547,40548,40549,40550,40551,40552,40553,40554,40555,40556,40557,40558,40559,40560,40561,40562,40563,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40574,40575,40576,40577,40578,40579,40580,40581,40582,40583,40584,40585,40586,40587,40588,40589,40590,40591,40592,40593,40594,40595,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40606,40607,40608,40609,40610,40611,40612,40613,40614,40615,40616,40617,40618,40619,40620,40621,40622,40623,40624,40625,40626,40627,40628,40629,40630,40631,40632,40633,40634,40635,40636,40637,40638,40639,40640,40641,40642,40643,40644,40645,40646,40647,40648,40649,40650,40651,40652,40653,40654,40655,40656,40657,40658,40659,40660,40661,40662,40663,40664,40665,40666,40667,40668,40669,40670,40671,40672,40673,40674,40675,40676,40677,40678,40679,40680,40681,40682,40683,40684,40685,40686,40687,40688,40689,40690,40691,40692,40693,40694,40695,40696,40697,40698,40699,40700,40701,40702,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40715,40716,40717,40718,40719,40720,40721,40722,40723,40724,40725,40726,40727,40728,40729,40730,40731,40732,40733,40734,40735,40736,40737,40738,40739,40740,40741,40742,40743,40744,40745,40746,40747,40748,40749,40750,40751,40752,40753,40754,40755,40756,40757,40758,40759,40760,40761,40762,40763,40764,40765,40766,40767,40768,40769,40770,40771,40772,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40784,40785,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40831,40832,40833,40834,40835,40836,40837,40838,40839,40840,40841,40842,40843,40844,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40857,40858,40859,40860,40861,40862,40863,40864,40865,40866,40867,40868,40869,40870,40871,40872,40873,40874,40875,40876,40877,40878,40879,40880,40881,40882,40883,40884,40885,40886,40887,40888,40889,40890,40891,40892,40893,40894,40895,40896,40897,40898,40899,40900,40901,40902,40903,40904,40905,40906,40907,40908,40960,40961,40962,40963,40964,40965,40966,40967,40968,40969,40970,40971,40972,40973,40974,40975,40976,40977,40978,40979,40980,40981,40982,40983,40984,40985,40986,40987,40988,40989,40990,40991,40992,40993,40994,40995,40996,40997,40998,40999,41000,41001,41002,41003,41004,41005,41006,41007,41008,41009,41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048,41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087,41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100,41101,41102,41103,41104,41105,41106,41107,41108,41109,41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148,41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187,41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199,41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219,41220,41221,41222,41223,41224,41225,41226,41227,41228,41229,41230,41231,41232,41233,41234,41235,41236,41237,41238,41239,41240,41241,41242,41243,41244,41245,41246,41247,41248,41249,41250,41251,41252,41253,41254,41255,41256,41257,41258,41259,41260,41261,41262,41263,41264,41265,41266,41267,41268,41269,41270,41271,41272,41273,41274,41275,41276,41277,41278,41279,41280,41281,41282,41283,41284,41285,41286,41287,41288,41289,41290,41291,41292,41293,41294,41295,41296,41297,41298,41299,41300,41301,41302,41303,41304,41305,41306,41307,41308,41309,41310,41311,41312,41313,41314,41315,41316,41317,41318,41319,41320,41321,41322,41323,41324,41325,41326,41327,41328,41329,41330,41331,41332,41333,41334,41335,41336,41337,41338,41339,41340,41341,41342,41343,41344,41345,41346,41347,41348,41349,41350,41351,41352,41353,41354,41355,41356,41357,41358,41359,41360,41361,41362,41363,41364,41365,41366,41367,41368,41369,41370,41371,41372,41373,41374,41375,41376,41377,41378,41379,41380,41381,41382,41383,41384,41385,41386,41387,41388,41389,41390,41391,41392,41393,41394,41395,41396,41397,41398,41399,41400,41401,41402,41403,41404,41405,41406,41407,41408,41409,41410,41411,41412,41413,41414,41415,41416,41417,41418,41419,41420,41421,41422,41423,41424,41425,41426,41427,41428,41429,41430,41431,41432,41433,41434,41435,41436,41437,41438,41439,41440,41441,41442,41443,41444,41445,41446,41447,41448,41449,41450,41451,41452,41453,41454,41455,41456,41457,41458,41459,41460,41461,41462,41463,41464,41465,41466,41467,41468,41469,41470,41471,41472,41473,41474,41475,41476,41477,41478,41479,41480,41481,41482,41483,41484,41485,41486,41487,41488,41489,41490,41491,41492,41493,41494,41495,41496,41497,41498,41499,41500,41501,41502,41503,41504,41505,41506,41507,41508,41509,41510,41511,41512,41513,41514,41515,41516,41517,41518,41519,41520,41521,41522,41523,41524,41525,41526,41527,41528,41529,41530,41531,41532,41533,41534,41535,41536,41537,41538,41539,41540,41541,41542,41543,41544,41545,41546,41547,41548,41549,41550,41551,41552,41553,41554,41555,41556,41557,41558,41559,41560,41561,41562,41563,41564,41565,41566,41567,41568,41569,41570,41571,41572,41573,41574,41575,41576,41577,41578,41579,41580,41581,41582,41583,41584,41585,41586,41587,41588,41589,41590,41591,41592,41593,41594,41595,41596,41597,41598,41599,41600,41601,41602,41603,41604,41605,41606,41607,41608,41609,41610,41611,41612,41613,41614,41615,41616,41617,41618,41619,41620,41621,41622,41623,41624,41625,41626,41627,41628,41629,41630,41631,41632,41633,41634,41635,41636,41637,41638,41639,41640,41641,41642,41643,41644,41645,41646,41647,41648,41649,41650,41651,41652,41653,41654,41655,41656,41657,41658,41659,41660,41661,41662,41663,41664,41665,41666,41667,41668,41669,41670,41671,41672,41673,41674,41675,41676,41677,41678,41679,41680,41681,41682,41683,41684,41685,41686,41687,41688,41689,41690,41691,41692,41693,41694,41695,41696,41697,41698,41699,41700,41701,41702,41703,41704,41705,41706,41707,41708,41709,41710,41711,41712,41713,41714,41715,41716,41717,41718,41719,41720,41721,41722,41723,41724,41725,41726,41727,41728,41729,41730,41731,41732,41733,41734,41735,41736,41737,41738,41739,41740,41741,41742,41743,41744,41745,41746,41747,41748,41749,41750,41751,41752,41753,41754,41755,41756,41757,41758,41759,41760,41761,41762,41763,41764,41765,41766,41767,41768,41769,41770,41771,41772,41773,41774,41775,41776,41777,41778,41779,41780,41781,41782,41783,41784,41785,41786,41787,41788,41789,41790,41791,41792,41793,41794,41795,41796,41797,41798,41799,41800,41801,41802,41803,41804,41805,41806,41807,41808,41809,41810,41811,41812,41813,41814,41815,41816,41817,41818,41819,41820,41821,41822,41823,41824,41825,41826,41827,41828,41829,41830,41831,41832,41833,41834,41835,41836,41837,41838,41839,41840,41841,41842,41843,41844,41845,41846,41847,41848,41849,41850,41851,41852,41853,41854,41855,41856,41857,41858,41859,41860,41861,41862,41863,41864,41865,41866,41867,41868,41869,41870,41871,41872,41873,41874,41875,41876,41877,41878,41879,41880,41881,41882,41883,41884,41885,41886,41887,41888,41889,41890,41891,41892,41893,41894,41895,41896,41897,41898,41899,41900,41901,41902,41903,41904,41905,41906,41907,41908,41909,41910,41911,41912,41913,41914,41915,41916,41917,41918,41919,41920,41921,41922,41923,41924,41925,41926,41927,41928,41929,41930,41931,41932,41933,41934,41935,41936,41937,41938,41939,41940,41941,41942,41943,41944,41945,41946,41947,41948,41949,41950,41951,41952,41953,41954,41955,41956,41957,41958,41959,41960,41961,41962,41963,41964,41965,41966,41967,41968,41969,41970,41971,41972,41973,41974,41975,41976,41977,41978,41979,41980,41981,41982,41983,41984,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,41997,41998,41999,42000,42001,42002,42003,42004,42005,42006,42007,42008,42009,42010,42011,42012,42013,42014,42015,42016,42017,42018,42019,42020,42021,42022,42023,42024,42025,42026,42027,42028,42029,42030,42031,42032,42033,42034,42035,42036,42037,42038,42039,42040,42041,42042,42043,42044,42045,42046,42047,42048,42049,42050,42051,42052,42053,42054,42055,42056,42057,42058,42059,42060,42061,42062,42063,42064,42065,42066,42067,42068,42069,42070,42071,42072,42073,42074,42075,42076,42077,42078,42079,42080,42081,42082,42083,42084,42085,42086,42087,42088,42089,42090,42091,42092,42093,42094,42095,42096,42097,42098,42099,42100,42101,42102,42103,42104,42105,42106,42107,42108,42109,42110,42111,42112,42113,42114,42115,42116,42117,42118,42119,42120,42121,42122,42123,42124,42192,42193,42194,42195,42196,42197,42198,42199,42200,42201,42202,42203,42204,42205,42206,42207,42208,42209,42210,42211,42212,42213,42214,42215,42216,42217,42218,42219,42220,42221,42222,42223,42224,42225,42226,42227,42228,42229,42230,42231,42232,42233,42234,42235,42236,42237,42240,42241,42242,42243,42244,42245,42246,42247,42248,42249,42250,42251,42252,42253,42254,42255,42256,42257,42258,42259,42260,42261,42262,42263,42264,42265,42266,42267,42268,42269,42270,42271,42272,42273,42274,42275,42276,42277,42278,42279,42280,42281,42282,42283,42284,42285,42286,42287,42288,42289,42290,42291,42292,42293,42294,42295,42296,42297,42298,42299,42300,42301,42302,42303,42304,42305,42306,42307,42308,42309,42310,42311,42312,42313,42314,42315,42316,42317,42318,42319,42320,42321,42322,42323,42324,42325,42326,42327,42328,42329,42330,42331,42332,42333,42334,42335,42336,42337,42338,42339,42340,42341,42342,42343,42344,42345,42346,42347,42348,42349,42350,42351,42352,42353,42354,42355,42356,42357,42358,42359,42360,42361,42362,42363,42364,42365,42366,42367,42368,42369,42370,42371,42372,42373,42374,42375,42376,42377,42378,42379,42380,42381,42382,42383,42384,42385,42386,42387,42388,42389,42390,42391,42392,42393,42394,42395,42396,42397,42398,42399,42400,42401,42402,42403,42404,42405,42406,42407,42408,42409,42410,42411,42412,42413,42414,42415,42416,42417,42418,42419,42420,42421,42422,42423,42424,42425,42426,42427,42428,42429,42430,42431,42432,42433,42434,42435,42436,42437,42438,42439,42440,42441,42442,42443,42444,42445,42446,42447,42448,42449,42450,42451,42452,42453,42454,42455,42456,42457,42458,42459,42460,42461,42462,42463,42464,42465,42466,42467,42468,42469,42470,42471,42472,42473,42474,42475,42476,42477,42478,42479,42480,42481,42482,42483,42484,42485,42486,42487,42488,42489,42490,42491,42492,42493,42494,42495,42496,42497,42498,42499,42500,42501,42502,42503,42504,42505,42506,42507,42508,42512,42513,42514,42515,42516,42517,42518,42519,42520,42521,42522,42523,42524,42525,42526,42527,42538,42539,42560,42561,42562,42563,42564,42565,42566,42567,42568,42569,42570,42571,42572,42573,42574,42575,42576,42577,42578,42579,42580,42581,42582,42583,42584,42585,42586,42587,42588,42589,42590,42591,42592,42593,42594,42595,42596,42597,42598,42599,42600,42601,42602,42603,42604,42605,42606,42623,42624,42625,42626,42627,42628,42629,42630,42631,42632,42633,42634,42635,42636,42637,42638,42639,42640,42641,42642,42643,42644,42645,42646,42647,42656,42657,42658,42659,42660,42661,42662,42663,42664,42665,42666,42667,42668,42669,42670,42671,42672,42673,42674,42675,42676,42677,42678,42679,42680,42681,42682,42683,42684,42685,42686,42687,42688,42689,42690,42691,42692,42693,42694,42695,42696,42697,42698,42699,42700,42701,42702,42703,42704,42705,42706,42707,42708,42709,42710,42711,42712,42713,42714,42715,42716,42717,42718,42719,42720,42721,42722,42723,42724,42725,42726,42727,42728,42729,42730,42731,42732,42733,42734,42735,42775,42776,42777,42778,42779,42780,42781,42782,42783,42786,42787,42788,42789,42790,42791,42792,42793,42794,42795,42796,42797,42798,42799,42800,42801,42802,42803,42804,42805,42806,42807,42808,42809,42810,42811,42812,42813,42814,42815,42816,42817,42818,42819,42820,42821,42822,42823,42824,42825,42826,42827,42828,42829,42830,42831,42832,42833,42834,42835,42836,42837,42838,42839,42840,42841,42842,42843,42844,42845,42846,42847,42848,42849,42850,42851,42852,42853,42854,42855,42856,42857,42858,42859,42860,42861,42862,42863,42864,42865,42866,42867,42868,42869,42870,42871,42872,42873,42874,42875,42876,42877,42878,42879,42880,42881,42882,42883,42884,42885,42886,42887,42888,42891,42892,42893,42894,42896,42897,42898,42899,42912,42913,42914,42915,42916,42917,42918,42919,42920,42921,42922,43000,43001,43002,43003,43004,43005,43006,43007,43008,43009,43011,43012,43013,43015,43016,43017,43018,43020,43021,43022,43023,43024,43025,43026,43027,43028,43029,43030,43031,43032,43033,43034,43035,43036,43037,43038,43039,43040,43041,43042,43072,43073,43074,43075,43076,43077,43078,43079,43080,43081,43082,43083,43084,43085,43086,43087,43088,43089,43090,43091,43092,43093,43094,43095,43096,43097,43098,43099,43100,43101,43102,43103,43104,43105,43106,43107,43108,43109,43110,43111,43112,43113,43114,43115,43116,43117,43118,43119,43120,43121,43122,43123,43138,43139,43140,43141,43142,43143,43144,43145,43146,43147,43148,43149,43150,43151,43152,43153,43154,43155,43156,43157,43158,43159,43160,43161,43162,43163,43164,43165,43166,43167,43168,43169,43170,43171,43172,43173,43174,43175,43176,43177,43178,43179,43180,43181,43182,43183,43184,43185,43186,43187,43250,43251,43252,43253,43254,43255,43259,43274,43275,43276,43277,43278,43279,43280,43281,43282,43283,43284,43285,43286,43287,43288,43289,43290,43291,43292,43293,43294,43295,43296,43297,43298,43299,43300,43301,43312,43313,43314,43315,43316,43317,43318,43319,43320,43321,43322,43323,43324,43325,43326,43327,43328,43329,43330,43331,43332,43333,43334,43360,43361,43362,43363,43364,43365,43366,43367,43368,43369,43370,43371,43372,43373,43374,43375,43376,43377,43378,43379,43380,43381,43382,43383,43384,43385,43386,43387,43388,43396,43397,43398,43399,43400,43401,43402,43403,43404,43405,43406,43407,43408,43409,43410,43411,43412,43413,43414,43415,43416,43417,43418,43419,43420,43421,43422,43423,43424,43425,43426,43427,43428,43429,43430,43431,43432,43433,43434,43435,43436,43437,43438,43439,43440,43441,43442,43471,43520,43521,43522,43523,43524,43525,43526,43527,43528,43529,43530,43531,43532,43533,43534,43535,43536,43537,43538,43539,43540,43541,43542,43543,43544,43545,43546,43547,43548,43549,43550,43551,43552,43553,43554,43555,43556,43557,43558,43559,43560,43584,43585,43586,43588,43589,43590,43591,43592,43593,43594,43595,43616,43617,43618,43619,43620,43621,43622,43623,43624,43625,43626,43627,43628,43629,43630,43631,43632,43633,43634,43635,43636,43637,43638,43642,43648,43649,43650,43651,43652,43653,43654,43655,43656,43657,43658,43659,43660,43661,43662,43663,43664,43665,43666,43667,43668,43669,43670,43671,43672,43673,43674,43675,43676,43677,43678,43679,43680,43681,43682,43683,43684,43685,43686,43687,43688,43689,43690,43691,43692,43693,43694,43695,43697,43701,43702,43705,43706,43707,43708,43709,43712,43714,43739,43740,43741,43744,43745,43746,43747,43748,43749,43750,43751,43752,43753,43754,43762,43763,43764,43777,43778,43779,43780,43781,43782,43785,43786,43787,43788,43789,43790,43793,43794,43795,43796,43797,43798,43808,43809,43810,43811,43812,43813,43814,43816,43817,43818,43819,43820,43821,43822,43968,43969,43970,43971,43972,43973,43974,43975,43976,43977,43978,43979,43980,43981,43982,43983,43984,43985,43986,43987,43988,43989,43990,43991,43992,43993,43994,43995,43996,43997,43998,43999,44000,44001,44002,44032,44033,44034,44035,44036,44037,44038,44039,44040,44041,44042,44043,44044,44045,44046,44047,44048,44049,44050,44051,44052,44053,44054,44055,44056,44057,44058,44059,44060,44061,44062,44063,44064,44065,44066,44067,44068,44069,44070,44071,44072,44073,44074,44075,44076,44077,44078,44079,44080,44081,44082,44083,44084,44085,44086,44087,44088,44089,44090,44091,44092,44093,44094,44095,44096,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44107,44108,44109,44110,44111,44112,44113,44114,44115,44116,44117,44118,44119,44120,44121,44122,44123,44124,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44144,44145,44146,44147,44148,44149,44150,44151,44152,44153,44154,44155,44156,44157,44158,44159,44160,44161,44162,44163,44164,44165,44166,44167,44168,44169,44170,44171,44172,44173,44174,44175,44176,44177,44178,44179,44180,44181,44182,44183,44184,44185,44186,44187,44188,44189,44190,44191,44192,44193,44194,44195,44196,44197,44198,44199,44200,44201,44202,44203,44204,44205,44206,44207,44208,44209,44210,44211,44212,44213,44214,44215,44216,44217,44218,44219,44220,44221,44222,44223,44224,44225,44226,44227,44228,44229,44230,44231,44232,44233,44234,44235,44236,44237,44238,44239,44240,44241,44242,44243,44244,44245,44246,44247,44248,44249,44250,44251,44252,44253,44254,44255,44256,44257,44258,44259,44260,44261,44262,44263,44264,44265,44266,44267,44268,44269,44270,44271,44272,44273,44274,44275,44276,44277,44278,44279,44280,44281,44282,44283,44284,44285,44286,44287,44288,44289,44290,44291,44292,44293,44294,44295,44296,44297,44298,44299,44300,44301,44302,44303,44304,44305,44306,44307,44308,44309,44310,44311,44312,44313,44314,44315,44316,44317,44318,44319,44320,44321,44322,44323,44324,44325,44326,44327,44328,44329,44330,44331,44332,44333,44334,44335,44336,44337,44338,44339,44340,44341,44342,44343,44344,44345,44346,44347,44348,44349,44350,44351,44352,44353,44354,44355,44356,44357,44358,44359,44360,44361,44362,44363,44364,44365,44366,44367,44368,44369,44370,44371,44372,44373,44374,44375,44376,44377,44378,44379,44380,44381,44382,44383,44384,44385,44386,44387,44388,44389,44390,44391,44392,44393,44394,44395,44396,44397,44398,44399,44400,44401,44402,44403,44404,44405,44406,44407,44408,44409,44410,44411,44412,44413,44414,44415,44416,44417,44418,44419,44420,44421,44422,44423,44424,44425,44426,44427,44428,44429,44430,44431,44432,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44444,44445,44446,44447,44448,44449,44450,44451,44452,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44471,44472,44473,44474,44475,44476,44477,44478,44479,44480,44481,44482,44483,44484,44485,44486,44487,44488,44489,44490,44491,44492,44493,44494,44495,44496,44497,44498,44499,44500,44501,44502,44503,44504,44505,44506,44507,44508,44509,44510,44511,44512,44513,44514,44515,44516,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44536,44537,44538,44539,44540,44541,44542,44543,44544,44545,44546,44547,44548,44549,44550,44551,44552,44553,44554,44555,44556,44557,44558,44559,44560,44561,44562,44563,44564,44565,44566,44567,44568,44569,44570,44571,44572,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44592,44593,44594,44595,44596,44597,44598,44599,44600,44601,44602,44603,44604,44605,44606,44607,44608,44609,44610,44611,44612,44613,44614,44615,44616,44617,44618,44619,44620,44621,44622,44623,44624,44625,44626,44627,44628,44629,44630,44631,44632,44633,44634,44635,44636,44637,44638,44639,44640,44641,44642,44643,44644,44645,44646,44647,44648,44649,44650,44651,44652,44653,44654,44655,44656,44657,44658,44659,44660,44661,44662,44663,44664,44665,44666,44667,44668,44669,44670,44671,44672,44673,44674,44675,44676,44677,44678,44679,44680,44681,44682,44683,44684,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44732,44733,44734,44735,44736,44737,44738,44739,44740,44741,44742,44743,44744,44745,44746,44747,44748,44749,44750,44751,44752,44753,44754,44755,44756,44757,44758,44759,44760,44761,44762,44763,44764,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44776,44777,44778,44779,44780,44781,44782,44783,44784,44785,44786,44787,44788,44789,44790,44791,44792,44793,44794,44795,44796,44797,44798,44799,44800,44801,44802,44803,44804,44805,44806,44807,44808,44809,44810,44811,44812,44813,44814,44815,44816,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,44836,44837,44838,44839,44840,44841,44842,44843,44844,44845,44846,44847,44848,44849,44850,44851,44852,44853,44854,44855,44856,44857,44858,44859,44860,44861,44862,44863,44864,44865,44866,44867,44868,44869,44870,44871,44872,44873,44874,44875,44876,44877,44878,44879,44880,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44892,44893,44894,44895,44896,44897,44898,44899,44900,44901,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44921,44922,44923,44924,44925,44926,44927,44928,44929,44930,44931,44932,44933,44934,44935,44936,44937,44938,44939,44940,44941,44942,44943,44944,44945,44946,44947,44948,44949,44950,44951,44952,44953,44954,44955,44956,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44984,44985,44986,44987,44988,44989,44990,44991,44992,44993,44994,44995,44996,44997,44998,44999,45000,45001,45002,45003,45004,45005,45006,45007,45008,45009,45010,45011,45012,45013,45014,45015,45016,45017,45018,45019,45020,45021,45022,45023,45024,45025,45026,45027,45028,45029,45030,45031,45032,45033,45034,45035,45036,45037,45038,45039,45040,45041,45042,45043,45044,45045,45046,45047,45048,45049,45050,45051,45052,45053,45054,45055,45056,45057,45058,45059,45060,45061,45062,45063,45064,45065,45066,45067,45068,45069,45070,45071,45072,45073,45074,45075,45076,45077,45078,45079,45080,45081,45082,45083,45084,45085,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45096,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45124,45125,45126,45127,45128,45129,45130,45131,45132,45133,45134,45135,45136,45137,45138,45139,45140,45141,45142,45143,45144,45145,45146,45147,45148,45149,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45180,45181,45182,45183,45184,45185,45186,45187,45188,45189,45190,45191,45192,45193,45194,45195,45196,45197,45198,45199,45200,45201,45202,45203,45204,45205,45206,45207,45208,45209,45210,45211,45212,45213,45214,45215,45216,45217,45218,45219,45220,45221,45222,45223,45224,45225,45226,45227,45228,45229,45230,45231,45232,45233,45234,45235,45236,45237,45238,45239,45240,45241,45242,45243,45244,45245,45246,45247,45248,45249,45250,45251,45252,45253,45254,45255,45256,45257,45258,45259,45260,45261,45262,45263,45264,45265,45266,45267,45268,45269,45270,45271,45272,45273,45274,45275,45276,45277,45278,45279,45280,45281,45282,45283,45284,45285,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45320,45321,45322,45323,45324,45325,45326,45327,45328,45329,45330,45331,45332,45333,45334,45335,45336,45337,45338,45339,45340,45341,45342,45343,45344,45345,45346,45347,45348,45349,45350,45351,45352,45353,45354,45355,45356,45357,45358,45359,45360,45361,45362,45363,45364,45365,45366,45367,45368,45369,45370,45371,45372,45373,45374,45375,45376,45377,45378,45379,45380,45381,45382,45383,45384,45385,45386,45387,45388,45389,45390,45391,45392,45393,45394,45395,45396,45397,45398,45399,45400,45401,45402,45403,45404,45405,45406,45407,45408,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45432,45433,45434,45435,45436,45437,45438,45439,45440,45441,45442,45443,45444,45445,45446,45447,45448,45449,45450,45451,45452,45453,45454,45455,45456,45457,45458,45459,45460,45461,45462,45463,45464,45465,45466,45467,45468,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45480,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45516,45517,45518,45519,45520,45521,45522,45523,45524,45525,45526,45527,45528,45529,45530,45531,45532,45533,45534,45535,45536,45537,45538,45539,45540,45541,45542,45543,45544,45545,45546,45547,45548,45549,45550,45551,45552,45553,45554,45555,45556,45557,45558,45559,45560,45561,45562,45563,45564,45565,45566,45567,45568,45569,45570,45571,45572,45573,45574,45575,45576,45577,45578,45579,45580,45581,45582,45583,45584,45585,45586,45587,45588,45589,45590,45591,45592,45593,45594,45595,45596,45597,45598,45599,45600,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45620,45621,45622,45623,45624,45625,45626,45627,45628,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45656,45657,45658,45659,45660,45661,45662,45663,45664,45665,45666,45667,45668,45669,45670,45671,45672,45673,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45684,45685,45686,45687,45688,45689,45690,45691,45692,45693,45694,45695,45696,45697,45698,45699,45700,45701,45702,45703,45704,45705,45706,45707,45708,45709,45710,45711,45712,45713,45714,45715,45716,45717,45718,45719,45720,45721,45722,45723,45724,45725,45726,45727,45728,45729,45730,45731,45732,45733,45734,45735,45736,45737,45738,45739,45740,45741,45742,45743,45744,45745,45746,45747,45748,45749,45750,45751,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45768,45769,45770,45771,45772,45773,45774,45775,45776,45777,45778,45779,45780,45781,45782,45783,45784,45785,45786,45787,45788,45789,45790,45791,45792,45793,45794,45795,45796,45797,45798,45799,45800,45801,45802,45803,45804,45805,45806,45807,45808,45809,45810,45811,45812,45813,45814,45815,45816,45817,45818,45819,45820,45821,45822,45823,45824,45825,45826,45827,45828,45829,45830,45831,45832,45833,45834,45835,45836,45837,45838,45839,45840,45841,45842,45843,45844,45845,45846,45847,45848,45849,45850,45851,45852,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45908,45909,45910,45911,45912,45913,45914,45915,45916,45917,45918,45919,45920,45921,45922,45923,45924,45925,45926,45927,45928,45929,45930,45931,45932,45933,45934,45935,45936,45937,45938,45939,45940,45941,45942,45943,45944,45945,45946,45947,45948,45949,45950,45951,45952,45953,45954,45955,45956,45957,45958,45959,45960,45961,45962,45963,45964,45965,45966,45967,45968,45969,45970,45971,45972,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45984,45985,45986,45987,45988,45989,45990,45991,45992,45993,45994,45995,45996,45997,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46020,46021,46022,46023,46024,46025,46026,46027,46028,46029,46030,46031,46032,46033,46034,46035,46036,46037,46038,46039,46040,46041,46042,46043,46044,46045,46046,46047,46048,46049,46050,46051,46052,46053,46054,46055,46056,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46076,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46096,46097,46098,46099,46100,46101,46102,46103,46104,46105,46106,46107,46108,46109,46110,46111,46112,46113,46114,46115,46116,46117,46118,46119,46120,46121,46122,46123,46124,46125,46126,46127,46128,46129,46130,46131,46132,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46160,46161,46162,46163,46164,46165,46166,46167,46168,46169,46170,46171,46172,46173,46174,46175,46176,46177,46178,46179,46180,46181,46182,46183,46184,46185,46186,46187,46188,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46208,46209,46210,46211,46212,46213,46214,46215,46216,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46237,46238,46239,46240,46241,46242,46243,46244,46245,46246,46247,46248,46249,46250,46251,46252,46253,46254,46255,46256,46257,46258,46259,46260,46261,46262,46263,46264,46265,46266,46267,46268,46269,46270,46271,46272,46273,46274,46275,46276,46277,46278,46279,46280,46281,46282,46283,46284,46285,46286,46287,46288,46289,46290,46291,46292,46293,46294,46295,46296,46297,46298,46299,46300,46301,46302,46303,46304,46305,46306,46307,46308,46309,46310,46311,46312,46313,46314,46315,46316,46317,46318,46319,46320,46321,46322,46323,46324,46325,46326,46327,46328,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46356,46357,46358,46359,46360,46361,46362,46363,46364,46365,46366,46367,46368,46369,46370,46371,46372,46373,46374,46375,46376,46377,46378,46379,46380,46381,46382,46383,46384,46385,46386,46387,46388,46389,46390,46391,46392,46393,46394,46395,46396,46397,46398,46399,46400,46401,46402,46403,46404,46405,46406,46407,46408,46409,46410,46411,46412,46413,46414,46415,46416,46417,46418,46419,46420,46421,46422,46423,46424,46425,46426,46427,46428,46429,46430,46431,46432,46433,46434,46435,46436,46437,46438,46439,46440,46441,46442,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46496,46497,46498,46499,46500,46501,46502,46503,46504,46505,46506,46507,46508,46509,46510,46511,46512,46513,46514,46515,46516,46517,46518,46519,46520,46521,46522,46523,46524,46525,46526,46527,46528,46529,46530,46531,46532,46533,46534,46535,46536,46537,46538,46539,46540,46541,46542,46543,46544,46545,46546,46547,46548,46549,46550,46551,46552,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46572,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46608,46609,46610,46611,46612,46613,46614,46615,46616,46617,46618,46619,46620,46621,46622,46623,46624,46625,46626,46627,46628,46629,46630,46631,46632,46633,46634,46635,46636,46637,46638,46639,46640,46641,46642,46643,46644,46645,46646,46647,46648,46649,46650,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46664,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46692,46693,46694,46695,46696,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46748,46749,46750,46751,46752,46753,46754,46755,46756,46757,46758,46759,46760,46761,46762,46763,46764,46765,46766,46767,46768,46769,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46804,46805,46806,46807,46808,46809,46810,46811,46812,46813,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46832,46833,46834,46835,46836,46837,46838,46839,46840,46841,46842,46843,46844,46845,46846,46847,46848,46849,46850,46851,46852,46853,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46888,46889,46890,46891,46892,46893,46894,46895,46896,46897,46898,46899,46900,46901,46902,46903,46904,46905,46906,46907,46908,46909,46910,46911,46912,46913,46914,46915,46916,46917,46918,46919,46920,46921,46922,46923,46924,46925,46926,46927,46928,46929,46930,46931,46932,46933,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46944,46945,46946,46947,46948,46949,46950,46951,46952,46953,46954,46955,46956,46957,46958,46959,46960,46961,46962,46963,46964,46965,46966,46967,46968,46969,46970,46971,46972,46973,46974,46975,46976,46977,46978,46979,46980,46981,46982,46983,46984,46985,46986,46987,46988,46989,46990,46991,46992,46993,46994,46995,46996,46997,46998,46999,47000,47001,47002,47003,47004,47005,47006,47007,47008,47009,47010,47011,47012,47013,47014,47015,47016,47017,47018,47019,47020,47021,47022,47023,47024,47025,47026,47027,47028,47029,47030,47031,47032,47033,47034,47035,47036,47037,47038,47039,47040,47041,47042,47043,47044,47045,47046,47047,47048,47049,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47084,47085,47086,47087,47088,47089,47090,47091,47092,47093,47094,47095,47096,47097,47098,47099,47100,47101,47102,47103,47104,47105,47106,47107,47108,47109,47110,47111,47112,47113,47114,47115,47116,47117,47118,47119,47120,47121,47122,47123,47124,47125,47126,47127,47128,47129,47130,47131,47132,47133,47134,47135,47136,47137,47138,47139,47140,47141,47142,47143,47144,47145,47146,47147,47148,47149,47150,47151,47152,47153,47154,47155,47156,47157,47158,47159,47160,47161,47162,47163,47164,47165,47166,47167,47168,47169,47170,47171,47172,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47185,47186,47187,47188,47189,47190,47191,47192,47193,47194,47195,47196,47197,47198,47199,47200,47201,47202,47203,47204,47205,47206,47207,47208,47209,47210,47211,47212,47213,47214,47215,47216,47217,47218,47219,47220,47221,47222,47223,47224,47225,47226,47227,47228,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47245,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,47264,47265,47266,47267,47268,47269,47270,47271,47272,47273,47274,47275,47276,47277,47278,47279,47280,47281,47282,47283,47284,47285,47286,47287,47288,47289,47290,47291,47292,47293,47294,47295,47296,47297,47298,47299,47300,47301,47302,47303,47304,47305,47306,47307,47308,47309,47310,47311,47312,47313,47314,47315,47316,47317,47318,47319,47320,47321,47322,47323,47324,47325,47326,47327,47328,47329,47330,47331,47332,47333,47334,47335,47336,47337,47338,47339,47340,47341,47342,47343,47344,47345,47346,47347,47348,47349,47350,47351,47352,47353,47354,47355,47356,47357,47358,47359,47360,47361,47362,47363,47364,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47384,47385,47386,47387,47388,47389,47390,47391,47392,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47420,47421,47422,47423,47424,47425,47426,47427,47428,47429,47430,47431,47432,47433,47434,47435,47436,47437,47438,47439,47440,47441,47442,47443,47444,47445,47446,47447,47448,47449,47450,47451,47452,47453,47454,47455,47456,47457,47458,47459,47460,47461,47462,47463,47464,47465,47466,47467,47468,47469,47470,47471,47472,47473,47474,47475,47476,47477,47478,47479,47480,47481,47482,47483,47484,47485,47486,47487,47488,47489,47490,47491,47492,47493,47494,47495,47496,47497,47498,47499,47500,47501,47502,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47532,47533,47534,47535,47536,47537,47538,47539,47540,47541,47542,47543,47544,47545,47546,47547,47548,47549,47550,47551,47552,47553,47554,47555,47556,47557,47558,47559,47560,47561,47562,47563,47564,47565,47566,47567,47568,47569,47570,47571,47572,47573,47574,47575,47576,47577,47578,47579,47580,47581,47582,47583,47584,47585,47586,47587,47588,47589,47590,47591,47592,47593,47594,47595,47596,47597,47598,47599,47600,47601,47602,47603,47604,47605,47606,47607,47608,47609,47610,47611,47612,47613,47614,47615,47616,47617,47618,47619,47620,47621,47622,47623,47624,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47637,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47672,47673,47674,47675,47676,47677,47678,47679,47680,47681,47682,47683,47684,47685,47686,47687,47688,47689,47690,47691,47692,47693,47694,47695,47696,47697,47698,47699,47700,47701,47702,47703,47704,47705,47706,47707,47708,47709,47710,47711,47712,47713,47714,47715,47716,47717,47718,47719,47720,47721,47722,47723,47724,47725,47726,47727,47728,47729,47730,47731,47732,47733,47734,47735,47736,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47747,47748,47749,47750,47751,47752,47753,47754,47755,47756,47757,47758,47759,47760,47761,47762,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47784,47785,47786,47787,47788,47789,47790,47791,47792,47793,47794,47795,47796,47797,47798,47799,47800,47801,47802,47803,47804,47805,47806,47807,47808,47809,47810,47811,47812,47813,47814,47815,47816,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47832,47833,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47868,47869,47870,47871,47872,47873,47874,47875,47876,47877,47878,47879,47880,47881,47882,47883,47884,47885,47886,47887,47888,47889,47890,47891,47892,47893,47894,47895,47896,47897,47898,47899,47900,47901,47902,47903,47904,47905,47906,47907,47908,47909,47910,47911,47912,47913,47914,47915,47916,47917,47918,47919,47920,47921,47922,47923,47924,47925,47926,47927,47928,47929,47930,47931,47932,47933,47934,47935,47936,47937,47938,47939,47940,47941,47942,47943,47944,47945,47946,47947,47948,47949,47950,47951,47952,47953,47954,47955,47956,47957,47958,47959,47960,47961,47962,47963,47964,47965,47966,47967,47968,47969,47970,47971,47972,47973,47974,47975,47976,47977,47978,47979,47980,47981,47982,47983,47984,47985,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48008,48009,48010,48011,48012,48013,48014,48015,48016,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48036,48037,48038,48039,48040,48041,48042,48043,48044,48045,48046,48047,48048,48049,48050,48051,48052,48053,48054,48055,48056,48057,48058,48059,48060,48061,48062,48063,48064,48065,48066,48067,48068,48069,48070,48071,48072,48073,48074,48075,48076,48077,48078,48079,48080,48081,48082,48083,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48120,48121,48122,48123,48124,48125,48126,48127,48128,48129,48130,48131,48132,48133,48134,48135,48136,48137,48138,48139,48140,48141,48142,48143,48144,48145,48146,48147,48148,48149,48150,48151,48152,48153,48154,48155,48156,48157,48158,48159,48160,48161,48162,48163,48164,48165,48166,48167,48168,48169,48170,48171,48172,48173,48174,48175,48176,48177,48178,48179,48180,48181,48182,48183,48184,48185,48186,48187,48188,48189,48190,48191,48192,48193,48194,48195,48196,48197,48198,48199,48200,48201,48202,48203,48204,48205,48206,48207,48208,48209,48210,48211,48212,48213,48214,48215,48216,48217,48218,48219,48220,48221,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48260,48261,48262,48263,48264,48265,48266,48267,48268,48269,48270,48271,48272,48273,48274,48275,48276,48277,48278,48279,48280,48281,48282,48283,48284,48285,48286,48287,48288,48289,48290,48291,48292,48293,48294,48295,48296,48297,48298,48299,48300,48301,48302,48303,48304,48305,48306,48307,48308,48309,48310,48311,48312,48313,48314,48315,48316,48317,48318,48319,48320,48321,48322,48323,48324,48325,48326,48327,48328,48329,48330,48331,48332,48333,48334,48335,48336,48337,48338,48339,48340,48341,48342,48343,48344,48345,48346,48347,48348,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48372,48373,48374,48375,48376,48377,48378,48379,48380,48381,48382,48383,48384,48385,48386,48387,48388,48389,48390,48391,48392,48393,48394,48395,48396,48397,48398,48399,48400,48401,48402,48403,48404,48405,48406,48407,48408,48409,48410,48411,48412,48413,48414,48415,48416,48417,48418,48419,48420,48421,48422,48423,48424,48425,48426,48427,48428,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,48442,48443,48444,48445,48446,48447,48448,48449,48450,48451,48452,48453,48454,48455,48456,48457,48458,48459,48460,48461,48462,48463,48464,48465,48466,48467,48468,48469,48470,48471,48472,48473,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48484,48485,48486,48487,48488,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48512,48513,48514,48515,48516,48517,48518,48519,48520,48521,48522,48523,48524,48525,48526,48527,48528,48529,48530,48531,48532,48533,48534,48535,48536,48537,48538,48539,48540,48541,48542,48543,48544,48545,48546,48547,48548,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48560,48561,48562,48563,48564,48565,48566,48567,48568,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48596,48597,48598,48599,48600,48601,48602,48603,48604,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48617,48618,48619,48620,48621,48622,48623,48624,48625,48626,48627,48628,48629,48630,48631,48632,48633,48634,48635,48636,48637,48638,48639,48640,48641,48642,48643,48644,48645,48646,48647,48648,48649,48650,48651,48652,48653,48654,48655,48656,48657,48658,48659,48660,48661,48662,48663,48664,48665,48666,48667,48668,48669,48670,48671,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48708,48709,48710,48711,48712,48713,48714,48715,48716,48717,48718,48719,48720,48721,48722,48723,48724,48725,48726,48727,48728,48729,48730,48731,48732,48733,48734,48735,48736,48737,48738,48739,48740,48741,48742,48743,48744,48745,48746,48747,48748,48749,48750,48751,48752,48753,48754,48755,48756,48757,48758,48759,48760,48761,48762,48763,48764,48765,48766,48767,48768,48769,48770,48771,48772,48773,48774,48775,48776,48777,48778,48779,48780,48781,48782,48783,48784,48785,48786,48787,48788,48789,48790,48791,48792,48793,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48808,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48848,48849,48850,48851,48852,48853,48854,48855,48856,48857,48858,48859,48860,48861,48862,48863,48864,48865,48866,48867,48868,48869,48870,48871,48872,48873,48874,48875,48876,48877,48878,48879,48880,48881,48882,48883,48884,48885,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48897,48898,48899,48900,48901,48902,48903,48904,48905,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48920,48921,48922,48923,48924,48925,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48960,48961,48962,48963,48964,48965,48966,48967,48968,48969,48970,48971,48972,48973,48974,48975,48976,48977,48978,48979,48980,48981,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49044,49045,49046,49047,49048,49049,49050,49051,49052,49053,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49072,49073,49074,49075,49076,49077,49078,49079,49080,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49093,49094,49095,49096,49097,49098,49099,49100,49101,49102,49103,49104,49105,49106,49107,49108,49109,49110,49111,49112,49113,49114,49115,49116,49117,49118,49119,49120,49121,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49212,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49233,49234,49235,49236,49237,49238,49239,49240,49241,49242,49243,49244,49245,49246,49247,49248,49249,49250,49251,49252,49253,49254,49255,49256,49257,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49296,49297,49298,49299,49300,49301,49302,49303,49304,49305,49306,49307,49308,49309,49310,49311,49312,49313,49314,49315,49316,49317,49318,49319,49320,49321,49322,49323,49324,49325,49326,49327,49328,49329,49330,49331,49332,49333,49334,49335,49336,49337,49338,49339,49340,49341,49342,49343,49344,49345,49346,49347,49348,49349,49350,49351,49352,49353,49354,49355,49356,49357,49358,49359,49360,49361,49362,49363,49364,49365,49366,49367,49368,49369,49370,49371,49372,49373,49374,49375,49376,49377,49378,49379,49380,49381,49382,49383,49384,49385,49386,49387,49388,49389,49390,49391,49392,49393,49394,49395,49396,49397,49398,49399,49400,49401,49402,49403,49404,49405,49406,49407,49408,49409,49410,49411,49412,49413,49414,49415,49416,49417,49418,49419,49420,49421,49422,49423,49424,49425,49426,49427,49428,49429,49430,49431,49432,49433,49434,49435,49436,49437,49438,49439,49440,49441,49442,49443,49444,49445,49446,49447,49448,49449,49450,49451,49452,49453,49454,49455,49456,49457,49458,49459,49460,49461,49462,49463,49464,49465,49466,49467,49468,49469,49470,49471,49472,49473,49474,49475,49476,49477,49478,49479,49480,49481,49482,49483,49484,49485,49486,49487,49488,49489,49490,49491,49492,49493,49494,49495,49496,49497,49498,49499,49500,49501,49502,49503,49504,49505,49506,49507,49508,49509,49510,49511,49512,49513,49514,49515,49516,49517,49518,49519,49520,49521,49522,49523,49524,49525,49526,49527,49528,49529,49530,49531,49532,49533,49534,49535,49536,49537,49538,49539,49540,49541,49542,49543,49544,49545,49546,49547,49548,49549,49550,49551,49552,49553,49554,49555,49556,49557,49558,49559,49560,49561,49562,49563,49564,49565,49566,49567,49568,49569,49570,49571,49572,49573,49574,49575,49576,49577,49578,49579,49580,49581,49582,49583,49584,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49597,49598,49599,49600,49601,49602,49603,49604,49605,49606,49607,49608,49609,49610,49611,49612,49613,49614,49615,49616,49617,49618,49619,49620,49621,49622,49623,49624,49625,49626,49627,49628,49629,49630,49631,49632,49633,49634,49635,49636,49637,49638,49639,49640,49641,49642,49643,49644,49645,49646,49647,49648,49649,49650,49651,49652,49653,49654,49655,49656,49657,49658,49659,49660,49661,49662,49663,49664,49665,49666,49667,49668,49669,49670,49671,49672,49673,49674,49675,49676,49677,49678,49679,49680,49681,49682,49683,49684,49685,49686,49687,49688,49689,49690,49691,49692,49693,49694,49695,49696,49697,49698,49699,49700,49701,49702,49703,49704,49705,49706,49707,49708,49709,49710,49711,49712,49713,49714,49715,49716,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,49734,49735,49736,49737,49738,49739,49740,49741,49742,49743,49744,49745,49746,49747,49748,49749,49750,49751,49752,49753,49754,49755,49756,49757,49758,49759,49760,49761,49762,49763,49764,49765,49766,49767,49768,49769,49770,49771,49772,49773,49774,49775,49776,49777,49778,49779,49780,49781,49782,49783,49784,49785,49786,49787,49788,49789,49790,49791,49792,49793,49794,49795,49796,49797,49798,49799,49800,49801,49802,49803,49804,49805,49806,49807,49808,49809,49810,49811,49812,49813,49814,49815,49816,49817,49818,49819,49820,49821,49822,49823,49824,49825,49826,49827,49828,49829,49830,49831,49832,49833,49834,49835,49836,49837,49838,49839,49840,49841,49842,49843,49844,49845,49846,49847,49848,49849,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49884,49885,49886,49887,49888,49889,49890,49891,49892,49893,49894,49895,49896,49897,49898,49899,49900,49901,49902,49903,49904,49905,49906,49907,49908,49909,49910,49911,49912,49913,49914,49915,49916,49917,49918,49919,49920,49921,49922,49923,49924,49925,49926,49927,49928,49929,49930,49931,49932,49933,49934,49935,49936,49937,49938,49939,49940,49941,49942,49943,49944,49945,49946,49947,49948,49949,49950,49951,49952,49953,49954,49955,49956,49957,49958,49959,49960,49961,49962,49963,49964,49965,49966,49967,49968,49969,49970,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49989,49990,49991,49992,49993,49994,49995,49996,49997,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50024,50025,50026,50027,50028,50029,50030,50031,50032,50033,50034,50035,50036,50037,50038,50039,50040,50041,50042,50043,50044,50045,50046,50047,50048,50049,50050,50051,50052,50053,50054,50055,50056,50057,50058,50059,50060,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50112,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50136,50137,50138,50139,50140,50141,50142,50143,50144,50145,50146,50147,50148,50149,50150,50151,50152,50153,50154,50155,50156,50157,50158,50159,50160,50161,50162,50163,50164,50165,50166,50167,50168,50169,50170,50171,50172,50173,50174,50175,50176,50177,50178,50179,50180,50181,50182,50183,50184,50185,50186,50187,50188,50189,50190,50191,50192,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,50203,50204,50205,50206,50207,50208,50209,50210,50211,50212,50213,50214,50215,50216,50217,50218,50219,50220,50221,50222,50223,50224,50225,50226,50227,50228,50229,50230,50231,50232,50233,50234,50235,50236,50237,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50248,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50276,50277,50278,50279,50280,50281,50282,50283,50284,50285,50286,50287,50288,50289,50290,50291,50292,50293,50294,50295,50296,50297,50298,50299,50300,50301,50302,50303,50304,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50324,50325,50326,50327,50328,50329,50330,50331,50332,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50360,50361,50362,50363,50364,50365,50366,50367,50368,50369,50370,50371,50372,50373,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,50400,50401,50402,50403,50404,50405,50406,50407,50408,50409,50410,50411,50412,50413,50414,50415,50416,50417,50418,50419,50420,50421,50422,50423,50424,50425,50426,50427,50428,50429,50430,50431,50432,50433,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50444,50445,50446,50447,50448,50449,50450,50451,50452,50453,50454,50455,50456,50457,50458,50459,50460,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50472,50473,50474,50475,50476,50477,50478,50479,50480,50481,50482,50483,50484,50485,50486,50487,50488,50489,50490,50491,50492,50493,50494,50495,50496,50497,50498,50499,50500,50501,50502,50503,50504,50505,50506,50507,50508,50509,50510,50511,50512,50513,50514,50515,50516,50517,50518,50519,50520,50521,50522,50523,50524,50525,50526,50527,50528,50529,50530,50531,50532,50533,50534,50535,50536,50537,50538,50539,50540,50541,50542,50543,50544,50545,50546,50547,50548,50549,50550,50551,50552,50553,50554,50555,50556,50557,50558,50559,50560,50561,50562,50563,50564,50565,50566,50567,50568,50569,50570,50571,50572,50573,50574,50575,50576,50577,50578,50579,50580,50581,50582,50583,50584,50585,50586,50587,50588,50589,50590,50591,50592,50593,50594,50595,50596,50597,50598,50599,50600,50601,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50612,50613,50614,50615,50616,50617,50618,50619,50620,50621,50622,50623,50624,50625,50626,50627,50628,50629,50630,50631,50632,50633,50634,50635,50636,50637,50638,50639,50640,50641,50642,50643,50644,50645,50646,50647,50648,50649,50650,50651,50652,50653,50654,50655,50656,50657,50658,50659,50660,50661,50662,50663,50664,50665,50666,50667,50668,50669,50670,50671,50672,50673,50674,50675,50676,50677,50678,50679,50680,50681,50682,50683,50684,50685,50686,50687,50688,50689,50690,50691,50692,50693,50694,50695,50696,50697,50698,50699,50700,50701,50702,50703,50704,50705,50706,50707,50708,50709,50710,50711,50712,50713,50714,50715,50716,50717,50718,50719,50720,50721,50722,50723,50724,50725,50726,50727,50728,50729,50730,50731,50732,50733,50734,50735,50736,50737,50738,50739,50740,50741,50742,50743,50744,50745,50746,50747,50748,50749,50750,50751,50752,50753,50754,50755,50756,50757,50758,50759,50760,50761,50762,50763,50764,50765,50766,50767,50768,50769,50770,50771,50772,50773,50774,50775,50776,50777,50778,50779,50780,50781,50782,50783,50784,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50796,50797,50798,50799,50800,50801,50802,50803,50804,50805,50806,50807,50808,50809,50810,50811,50812,50813,50814,50815,50816,50817,50818,50819,50820,50821,50822,50823,50824,50825,50826,50827,50828,50829,50830,50831,50832,50833,50834,50835,50836,50837,50838,50839,50840,50841,50842,50843,50844,50845,50846,50847,50848,50849,50850,50851,50852,50853,50854,50855,50856,50857,50858,50859,50860,50861,50862,50863,50864,50865,50866,50867,50868,50869,50870,50871,50872,50873,50874,50875,50876,50877,50878,50879,50880,50881,50882,50883,50884,50885,50886,50887,50888,50889,50890,50891,50892,50893,50894,50895,50896,50897,50898,50899,50900,50901,50902,50903,50904,50905,50906,50907,50908,50909,50910,50911,50912,50913,50914,50915,50916,50917,50918,50919,50920,50921,50922,50923,50924,50925,50926,50927,50928,50929,50930,50931,50932,50933,50934,50935,50936,50937,50938,50939,50940,50941,50942,50943,50944,50945,50946,50947,50948,50949,50950,50951,50952,50953,50954,50955,50956,50957,50958,50959,50960,50961,50962,50963,50964,50965,50966,50967,50968,50969,50970,50971,50972,50973,50974,50975,50976,50977,50978,50979,50980,50981,50982,50983,50984,50985,50986,50987,50988,50989,50990,50991,50992,50993,50994,50995,50996,50997,50998,50999,51000,51001,51002,51003,51004,51005,51006,51007,51008,51009,51010,51011,51012,51013,51014,51015,51016,51017,51018,51019,51020,51021,51022,51023,51024,51025,51026,51027,51028,51029,51030,51031,51032,51033,51034,51035,51036,51037,51038,51039,51040,51041,51042,51043,51044,51045,51046,51047,51048,51049,51050,51051,51052,51053,51054,51055,51056,51057,51058,51059,51060,51061,51062,51063,51064,51065,51066,51067,51068,51069,51070,51071,51072,51073,51074,51075,51076,51077,51078,51079,51080,51081,51082,51083,51084,51085,51086,51087,51088,51089,51090,51091,51092,51093,51094,51095,51096,51097,51098,51099,51100,51101,51102,51103,51104,51105,51106,51107,51108,51109,51110,51111,51112,51113,51114,51115,51116,51117,51118,51119,51120,51121,51122,51123,51124,51125,51126,51127,51128,51129,51130,51131,51132,51133,51134,51135,51136,51137,51138,51139,51140,51141,51142,51143,51144,51145,51146,51147,51148,51149,51150,51151,51152,51153,51154,51155,51156,51157,51158,51159,51160,51161,51162,51163,51164,51165,51166,51167,51168,51169,51170,51171,51172,51173,51174,51175,51176,51177,51178,51179,51180,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,51195,51196,51197,51198,51199,51200,51201,51202,51203,51204,51205,51206,51207,51208,51209,51210,51211,51212,51213,51214,51215,51216,51217,51218,51219,51220,51221,51222,51223,51224,51225,51226,51227,51228,51229,51230,51231,51232,51233,51234,51235,51236,51237,51238,51239,51240,51241,51242,51243,51244,51245,51246,51247,51248,51249,51250,51251,51252,51253,51254,51255,51256,51257,51258,51259,51260,51261,51262,51263,51264,51265,51266,51267,51268,51269,51270,51271,51272,51273,51274,51275,51276,51277,51278,51279,51280,51281,51282,51283,51284,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51312,51313,51314,51315,51316,51317,51318,51319,51320,51321,51322,51323,51324,51325,51326,51327,51328,51329,51330,51331,51332,51333,51334,51335,51336,51337,51338,51339,51340,51341,51342,51343,51344,51345,51346,51347,51348,51349,51350,51351,51352,51353,51354,51355,51356,51357,51358,51359,51360,51361,51362,51363,51364,51365,51366,51367,51368,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51388,51389,51390,51391,51392,51393,51394,51395,51396,51397,51398,51399,51400,51401,51402,51403,51404,51405,51406,51407,51408,51409,51410,51411,51412,51413,51414,51415,51416,51417,51418,51419,51420,51421,51422,51423,51424,51425,51426,51427,51428,51429,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51445,51446,51447,51448,51449,51450,51451,51452,51453,51454,51455,51456,51457,51458,51459,51460,51461,51462,51463,51464,51465,51466,51467,51468,51469,51470,51471,51472,51473,51474,51475,51476,51477,51478,51479,51480,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,51500,51501,51502,51503,51504,51505,51506,51507,51508,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,51528,51529,51530,51531,51532,51533,51534,51535,51536,51537,51538,51539,51540,51541,51542,51543,51544,51545,51546,51547,51548,51549,51550,51551,51552,51553,51554,51555,51556,51557,51558,51559,51560,51561,51562,51563,51564,51565,51566,51567,51568,51569,51570,51571,51572,51573,51574,51575,51576,51577,51578,51579,51580,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51592,51593,51594,51595,51596,51597,51598,51599,51600,51601,51602,51603,51604,51605,51606,51607,51608,51609,51610,51611,51612,51613,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51648,51649,51650,51651,51652,51653,51654,51655,51656,51657,51658,51659,51660,51661,51662,51663,51664,51665,51666,51667,51668,51669,51670,51671,51672,51673,51674,51675,51676,51677,51678,51679,51680,51681,51682,51683,51684,51685,51686,51687,51688,51689,51690,51691,51692,51693,51694,51695,51696,51697,51698,51699,51700,51701,51702,51703,51704,51705,51706,51707,51708,51709,51710,51711,51712,51713,51714,51715,51716,51717,51718,51719,51720,51721,51722,51723,51724,51725,51726,51727,51728,51729,51730,51731,51732,51733,51734,51735,51736,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,51750,51751,51752,51753,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,51783,51784,51785,51786,51787,51788,51789,51790,51791,51792,51793,51794,51795,51796,51797,51798,51799,51800,51801,51802,51803,51804,51805,51806,51807,51808,51809,51810,51811,51812,51813,51814,51815,51816,51817,51818,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51837,51838,51839,51840,51841,51842,51843,51844,51845,51846,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51864,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51900,51901,51902,51903,51904,51905,51906,51907,51908,51909,51910,51911,51912,51913,51914,51915,51916,51917,51918,51919,51920,51921,51922,51923,51924,51925,51926,51927,51928,51929,51930,51931,51932,51933,51934,51935,51936,51937,51938,51939,51940,51941,51942,51943,51944,51945,51946,51947,51948,51949,51950,51951,51952,51953,51954,51955,51956,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51976,51977,51978,51979,51980,51981,51982,51983,51984,51985,51986,51987,51988,51989,51990,51991,51992,51993,51994,51995,51996,51997,51998,51999,52000,52001,52002,52003,52004,52005,52006,52007,52008,52009,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52033,52034,52035,52036,52037,52038,52039,52040,52041,52042,52043,52044,52045,52046,52047,52048,52049,52050,52051,52052,52053,52054,52055,52056,52057,52058,52059,52060,52061,52062,52063,52064,52065,52066,52067,52068,52069,52070,52071,52072,52073,52074,52075,52076,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52088,52089,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52124,52125,52126,52127,52128,52129,52130,52131,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52152,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52180,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,52192,52193,52194,52195,52196,52197,52198,52199,52200,52201,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52236,52237,52238,52239,52240,52241,52242,52243,52244,52245,52246,52247,52248,52249,52250,52251,52252,52253,52254,52255,52256,52257,52258,52259,52260,52261,52262,52263,52264,52265,52266,52267,52268,52269,52270,52271,52272,52273,52274,52275,52276,52277,52278,52279,52280,52281,52282,52283,52284,52285,52286,52287,52288,52289,52290,52291,52292,52293,52294,52295,52296,52297,52298,52299,52300,52301,52302,52303,52304,52305,52306,52307,52308,52309,52310,52311,52312,52313,52314,52315,52316,52317,52318,52319,52320,52321,52322,52323,52324,52325,52326,52327,52328,52329,52330,52331,52332,52333,52334,52335,52336,52337,52338,52339,52340,52341,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,52372,52373,52374,52375,52376,52377,52378,52379,52380,52381,52382,52383,52384,52385,52386,52387,52388,52389,52390,52391,52392,52393,52394,52395,52396,52397,52398,52399,52400,52401,52402,52403,52404,52405,52406,52407,52408,52409,52410,52411,52412,52413,52414,52415,52416,52417,52418,52419,52420,52421,52422,52423,52424,52425,52426,52427,52428,52429,52430,52431,52432,52433,52434,52435,52436,52437,52438,52439,52440,52441,52442,52443,52444,52445,52446,52447,52448,52449,52450,52451,52452,52453,52454,52455,52456,52457,52458,52459,52460,52461,52462,52463,52464,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,52478,52479,52480,52481,52482,52483,52484,52485,52486,52487,52488,52489,52490,52491,52492,52493,52494,52495,52496,52497,52498,52499,52500,52501,52502,52503,52504,52505,52506,52507,52508,52509,52510,52511,52512,52513,52514,52515,52516,52517,52518,52519,52520,52521,52522,52523,52524,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52537,52538,52539,52540,52541,52542,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52572,52573,52574,52575,52576,52577,52578,52579,52580,52581,52582,52583,52584,52585,52586,52587,52588,52589,52590,52591,52592,52593,52594,52595,52596,52597,52598,52599,52600,52601,52602,52603,52604,52605,52606,52607,52608,52609,52610,52611,52612,52613,52614,52615,52616,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52628,52629,52630,52631,52632,52633,52634,52635,52636,52637,52638,52639,52640,52641,52642,52643,52644,52645,52646,52647,52648,52649,52650,52651,52652,52653,52654,52655,52656,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52676,52677,52678,52679,52680,52681,52682,52683,52684,52685,52686,52687,52688,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,52706,52707,52708,52709,52710,52711,52712,52713,52714,52715,52716,52717,52718,52719,52720,52721,52722,52723,52724,52725,52726,52727,52728,52729,52730,52731,52732,52733,52734,52735,52736,52737,52738,52739,52740,52741,52742,52743,52744,52745,52746,52747,52748,52749,52750,52751,52752,52753,52754,52755,52756,52757,52758,52759,52760,52761,52762,52763,52764,52765,52766,52767,52768,52769,52770,52771,52772,52773,52774,52775,52776,52777,52778,52779,52780,52781,52782,52783,52784,52785,52786,52787,52788,52789,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52824,52825,52826,52827,52828,52829,52830,52831,52832,52833,52834,52835,52836,52837,52838,52839,52840,52841,52842,52843,52844,52845,52846,52847,52848,52849,52850,52851,52852,52853,52854,52855,52856,52857,52858,52859,52860,52861,52862,52863,52864,52865,52866,52867,52868,52869,52870,52871,52872,52873,52874,52875,52876,52877,52878,52879,52880,52881,52882,52883,52884,52885,52886,52887,52888,52889,52890,52891,52892,52893,52894,52895,52896,52897,52898,52899,52900,52901,52902,52903,52904,52905,52906,52907,52908,52909,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,52923,52924,52925,52926,52927,52928,52929,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52964,52965,52966,52967,52968,52969,52970,52971,52972,52973,52974,52975,52976,52977,52978,52979,52980,52981,52982,52983,52984,52985,52986,52987,52988,52989,52990,52991,52992,52993,52994,52995,52996,52997,52998,52999,53000,53001,53002,53003,53004,53005,53006,53007,53008,53009,53010,53011,53012,53013,53014,53015,53016,53017,53018,53019,53020,53021,53022,53023,53024,53025,53026,53027,53028,53029,53030,53031,53032,53033,53034,53035,53036,53037,53038,53039,53040,53041,53042,53043,53044,53045,53046,53047,53048,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53076,53077,53078,53079,53080,53081,53082,53083,53084,53085,53086,53087,53088,53089,53090,53091,53092,53093,53094,53095,53096,53097,53098,53099,53100,53101,53102,53103,53104,53105,53106,53107,53108,53109,53110,53111,53112,53113,53114,53115,53116,53117,53118,53119,53120,53121,53122,53123,53124,53125,53126,53127,53128,53129,53130,53131,53132,53133,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53153,53154,53155,53156,53157,53158,53159,53160,53161,53162,53163,53164,53165,53166,53167,53168,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53188,53189,53190,53191,53192,53193,53194,53195,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53216,53217,53218,53219,53220,53221,53222,53223,53224,53225,53226,53227,53228,53229,53230,53231,53232,53233,53234,53235,53236,53237,53238,53239,53240,53241,53242,53243,53244,53245,53246,53247,53248,53249,53250,53251,53252,53253,53254,53255,53256,53257,53258,53259,53260,53261,53262,53263,53264,53265,53266,53267,53268,53269,53270,53271,53272,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,53293,53294,53295,53296,53297,53298,53299,53300,53301,53302,53303,53304,53305,53306,53307,53308,53309,53310,53311,53312,53313,53314,53315,53316,53317,53318,53319,53320,53321,53322,53323,53324,53325,53326,53327,53328,53329,53330,53331,53332,53333,53334,53335,53336,53337,53338,53339,53340,53341,53342,53343,53344,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53356,53357,53358,53359,53360,53361,53362,53363,53364,53365,53366,53367,53368,53369,53370,53371,53372,53373,53374,53375,53376,53377,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53412,53413,53414,53415,53416,53417,53418,53419,53420,53421,53422,53423,53424,53425,53426,53427,53428,53429,53430,53431,53432,53433,53434,53435,53436,53437,53438,53439,53440,53441,53442,53443,53444,53445,53446,53447,53448,53449,53450,53451,53452,53453,53454,53455,53456,53457,53458,53459,53460,53461,53462,53463,53464,53465,53466,53467,53468,53469,53470,53471,53472,53473,53474,53475,53476,53477,53478,53479,53480,53481,53482,53483,53484,53485,53486,53487,53488,53489,53490,53491,53492,53493,53494,53495,53496,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,53509,53510,53511,53512,53513,53514,53515,53516,53517,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53552,53553,53554,53555,53556,53557,53558,53559,53560,53561,53562,53563,53564,53565,53566,53567,53568,53569,53570,53571,53572,53573,53574,53575,53576,53577,53578,53579,53580,53581,53582,53583,53584,53585,53586,53587,53588,53589,53590,53591,53592,53593,53594,53595,53596,53597,53598,53599,53600,53601,53602,53603,53604,53605,53606,53607,53608,53609,53610,53611,53612,53613,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53628,53629,53630,53631,53632,53633,53634,53635,53636,53637,53638,53639,53640,53641,53642,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53664,53665,53666,53667,53668,53669,53670,53671,53672,53673,53674,53675,53676,53677,53678,53679,53680,53681,53682,53683,53684,53685,53686,53687,53688,53689,53690,53691,53692,53693,53694,53695,53696,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,53712,53713,53714,53715,53716,53717,53718,53719,53720,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,53739,53740,53741,53742,53743,53744,53745,53746,53747,53748,53749,53750,53751,53752,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,53767,53768,53769,53770,53771,53772,53773,53774,53775,53776,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,53802,53803,53804,53805,53806,53807,53808,53809,53810,53811,53812,53813,53814,53815,53816,53817,53818,53819,53820,53821,53822,53823,53824,53825,53826,53827,53828,53829,53830,53831,53832,53833,53834,53835,53836,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53852,53853,53854,53855,53856,53857,53858,53859,53860,53861,53862,53863,53864,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53888,53889,53890,53891,53892,53893,53894,53895,53896,53897,53898,53899,53900,53901,53902,53903,53904,53905,53906,53907,53908,53909,53910,53911,53912,53913,53914,53915,53916,53917,53918,53919,53920,53921,53922,53923,53924,53925,53926,53927,53928,53929,53930,53931,53932,53933,53934,53935,53936,53937,53938,53939,53940,53941,53942,53943,53944,53945,53946,53947,53948,53949,53950,53951,53952,53953,53954,53955,53956,53957,53958,53959,53960,53961,53962,53963,53964,53965,53966,53967,53968,53969,53970,53971,53972,53973,53974,53975,53976,53977,53978,53979,53980,53981,53982,53983,53984,53985,53986,53987,53988,53989,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54000,54001,54002,54003,54004,54005,54006,54007,54008,54009,54010,54011,54012,54013,54014,54015,54016,54017,54018,54019,54020,54021,54022,54023,54024,54025,54026,54027,54028,54029,54030,54031,54032,54033,54034,54035,54036,54037,54038,54039,54040,54041,54042,54043,54044,54045,54046,54047,54048,54049,54050,54051,54052,54053,54054,54055,54056,54057,54058,54059,54060,54061,54062,54063,54064,54065,54066,54067,54068,54069,54070,54071,54072,54073,54074,54075,54076,54077,54078,54079,54080,54081,54082,54083,54084,54085,54086,54087,54088,54089,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54140,54141,54142,54143,54144,54145,54146,54147,54148,54149,54150,54151,54152,54153,54154,54155,54156,54157,54158,54159,54160,54161,54162,54163,54164,54165,54166,54167,54168,54169,54170,54171,54172,54173,54174,54175,54176,54177,54178,54179,54180,54181,54182,54183,54184,54185,54186,54187,54188,54189,54190,54191,54192,54193,54194,54195,54196,54197,54198,54199,54200,54201,54202,54203,54204,54205,54206,54207,54208,54209,54210,54211,54212,54213,54214,54215,54216,54217,54218,54219,54220,54221,54222,54223,54224,54225,54226,54227,54228,54229,54230,54231,54232,54233,54234,54235,54236,54237,54238,54239,54240,54241,54242,54243,54244,54245,54246,54247,54248,54249,54250,54251,54252,54253,54254,54255,54256,54257,54258,54259,54260,54261,54262,54263,54264,54265,54266,54267,54268,54269,54270,54271,54272,54273,54274,54275,54276,54277,54278,54279,54280,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,54295,54296,54297,54298,54299,54300,54301,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,54328,54329,54330,54331,54332,54333,54334,54335,54336,54337,54338,54339,54340,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,54356,54357,54358,54359,54360,54361,54362,54363,54364,54365,54366,54367,54368,54369,54370,54371,54372,54373,54374,54375,54376,54377,54378,54379,54380,54381,54382,54383,54384,54385,54386,54387,54388,54389,54390,54391,54392,54393,54394,54395,54396,54397,54398,54399,54400,54401,54402,54403,54404,54405,54406,54407,54408,54409,54410,54411,54412,54413,54414,54415,54416,54417,54418,54419,54420,54421,54422,54423,54424,54425,54426,54427,54428,54429,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54441,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54476,54477,54478,54479,54480,54481,54482,54483,54484,54485,54486,54487,54488,54489,54490,54491,54492,54493,54494,54495,54496,54497,54498,54499,54500,54501,54502,54503,54504,54505,54506,54507,54508,54509,54510,54511,54512,54513,54514,54515,54516,54517,54518,54519,54520,54521,54522,54523,54524,54525,54526,54527,54528,54529,54530,54531,54532,54533,54534,54535,54536,54537,54538,54539,54540,54541,54542,54543,54544,54545,54546,54547,54548,54549,54550,54551,54552,54553,54554,54555,54556,54557,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,54584,54585,54586,54587,54588,54589,54590,54591,54592,54593,54594,54595,54596,54597,54598,54599,54600,54601,54602,54603,54604,54605,54606,54607,54608,54609,54610,54611,54612,54613,54614,54615,54616,54617,54618,54619,54620,54621,54622,54623,54624,54625,54626,54627,54628,54629,54630,54631,54632,54633,54634,54635,54636,54637,54638,54639,54640,54641,54642,54643,54644,54645,54646,54647,54648,54649,54650,54651,54652,54653,54654,54655,54656,54657,54658,54659,54660,54661,54662,54663,54664,54665,54666,54667,54668,54669,54670,54671,54672,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54693,54694,54695,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,54728,54729,54730,54731,54732,54733,54734,54735,54736,54737,54738,54739,54740,54741,54742,54743,54744,54745,54746,54747,54748,54749,54750,54751,54752,54753,54754,54755,54756,54757,54758,54759,54760,54761,54762,54763,54764,54765,54766,54767,54768,54769,54770,54771,54772,54773,54774,54775,54776,54777,54778,54779,54780,54781,54782,54783,54784,54785,54786,54787,54788,54789,54790,54791,54792,54793,54794,54795,54796,54797,54798,54799,54800,54801,54802,54803,54804,54805,54806,54807,54808,54809,54810,54811,54812,54813,54814,54815,54816,54817,54818,54819,54820,54821,54822,54823,54824,54825,54826,54827,54828,54829,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54840,54841,54842,54843,54844,54845,54846,54847,54848,54849,54850,54851,54852,54853,54854,54855,54856,54857,54858,54859,54860,54861,54862,54863,54864,54865,54866,54867,54868,54869,54870,54871,54872,54873,54874,54875,54876,54877,54878,54879,54880,54881,54882,54883,54884,54885,54886,54887,54888,54889,54890,54891,54892,54893,54894,54895,54896,54897,54898,54899,54900,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,54913,54914,54915,54916,54917,54918,54919,54920,54921,54922,54923,54924,54925,54926,54927,54928,54929,54930,54931,54932,54933,54934,54935,54936,54937,54938,54939,54940,54941,54942,54943,54944,54945,54946,54947,54948,54949,54950,54951,54952,54953,54954,54955,54956,54957,54958,54959,54960,54961,54962,54963,54964,54965,54966,54967,54968,54969,54970,54971,54972,54973,54974,54975,54976,54977,54978,54979,54980,54981,54982,54983,54984,54985,54986,54987,54988,54989,54990,54991,54992,54993,54994,54995,54996,54997,54998,54999,55000,55001,55002,55003,55004,55005,55006,55007,55008,55009,55010,55011,55012,55013,55014,55015,55016,55017,55018,55019,55020,55021,55022,55023,55024,55025,55026,55027,55028,55029,55030,55031,55032,55033,55034,55035,55036,55037,55038,55039,55040,55041,55042,55043,55044,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55057,55058,55059,55060,55061,55062,55063,55064,55065,55066,55067,55068,55069,55070,55071,55072,55073,55074,55075,55076,55077,55078,55079,55080,55081,55082,55083,55084,55085,55086,55087,55088,55089,55090,55091,55092,55093,55094,55095,55096,55097,55098,55099,55100,55101,55102,55103,55104,55105,55106,55107,55108,55109,55110,55111,55112,55113,55114,55115,55116,55117,55118,55119,55120,55121,55122,55123,55124,55125,55126,55127,55128,55129,55130,55131,55132,55133,55134,55135,55136,55137,55138,55139,55140,55141,55142,55143,55144,55145,55146,55147,55148,55149,55150,55151,55152,55153,55154,55155,55156,55157,55158,55159,55160,55161,55162,55163,55164,55165,55166,55167,55168,55169,55170,55171,55172,55173,55174,55175,55176,55177,55178,55179,55180,55181,55182,55183,55184,55185,55186,55187,55188,55189,55190,55191,55192,55193,55194,55195,55196,55197,55198,55199,55200,55201,55202,55203,55216,55217,55218,55219,55220,55221,55222,55223,55224,55225,55226,55227,55228,55229,55230,55231,55232,55233,55234,55235,55236,55237,55238,55243,55244,55245,55246,55247,55248,55249,55250,55251,55252,55253,55254,55255,55256,55257,55258,55259,55260,55261,55262,55263,55264,55265,55266,55267,55268,55269,55270,55271,55272,55273,55274,55275,55276,55277,55278,55279,55280,55281,55282,55283,55284,55285,55286,55287,55288,55289,55290,55291,63744,63745,63746,63747,63748,63749,63750,63751,63752,63753,63754,63755,63756,63757,63758,63759,63760,63761,63762,63763,63764,63765,63766,63767,63768,63769,63770,63771,63772,63773,63774,63775,63776,63777,63778,63779,63780,63781,63782,63783,63784,63785,63786,63787,63788,63789,63790,63791,63792,63793,63794,63795,63796,63797,63798,63799,63800,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,63812,63813,63814,63815,63816,63817,63818,63819,63820,63821,63822,63823,63824,63825,63826,63827,63828,63829,63830,63831,63832,63833,63834,63835,63836,63837,63838,63839,63840,63841,63842,63843,63844,63845,63846,63847,63848,63849,63850,63851,63852,63853,63854,63855,63856,63857,63858,63859,63860,63861,63862,63863,63864,63865,63866,63867,63868,63869,63870,63871,63872,63873,63874,63875,63876,63877,63878,63879,63880,63881,63882,63883,63884,63885,63886,63887,63888,63889,63890,63891,63892,63893,63894,63895,63896,63897,63898,63899,63900,63901,63902,63903,63904,63905,63906,63907,63908,63909,63910,63911,63912,63913,63914,63915,63916,63917,63918,63919,63920,63921,63922,63923,63924,63925,63926,63927,63928,63929,63930,63931,63932,63933,63934,63935,63936,63937,63938,63939,63940,63941,63942,63943,63944,63945,63946,63947,63948,63949,63950,63951,63952,63953,63954,63955,63956,63957,63958,63959,63960,63961,63962,63963,63964,63965,63966,63967,63968,63969,63970,63971,63972,63973,63974,63975,63976,63977,63978,63979,63980,63981,63982,63983,63984,63985,63986,63987,63988,63989,63990,63991,63992,63993,63994,63995,63996,63997,63998,63999,64000,64001,64002,64003,64004,64005,64006,64007,64008,64009,64010,64011,64012,64013,64014,64015,64016,64017,64018,64019,64020,64021,64022,64023,64024,64025,64026,64027,64028,64029,64030,64031,64032,64033,64034,64035,64036,64037,64038,64039,64040,64041,64042,64043,64044,64045,64046,64047,64048,64049,64050,64051,64052,64053,64054,64055,64056,64057,64058,64059,64060,64061,64062,64063,64064,64065,64066,64067,64068,64069,64070,64071,64072,64073,64074,64075,64076,64077,64078,64079,64080,64081,64082,64083,64084,64085,64086,64087,64088,64089,64090,64091,64092,64093,64094,64095,64096,64097,64098,64099,64100,64101,64102,64103,64104,64105,64106,64107,64108,64109,64112,64113,64114,64115,64116,64117,64118,64119,64120,64121,64122,64123,64124,64125,64126,64127,64128,64129,64130,64131,64132,64133,64134,64135,64136,64137,64138,64139,64140,64141,64142,64143,64144,64145,64146,64147,64148,64149,64150,64151,64152,64153,64154,64155,64156,64157,64158,64159,64160,64161,64162,64163,64164,64165,64166,64167,64168,64169,64170,64171,64172,64173,64174,64175,64176,64177,64178,64179,64180,64181,64182,64183,64184,64185,64186,64187,64188,64189,64190,64191,64192,64193,64194,64195,64196,64197,64198,64199,64200,64201,64202,64203,64204,64205,64206,64207,64208,64209,64210,64211,64212,64213,64214,64215,64216,64217,64256,64257,64258,64259,64260,64261,64262,64275,64276,64277,64278,64279,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,65440,65441,65442,65443,65444,65445,65446,65447,65448,65449,65450,65451,65452,65453,65454,65455,65456,65457,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65470,65474,65475,65476,65477,65478,65479,65482,65483,65484,65485,65486,65487,65490,65491,65492,65493,65494,65495,65498,65499,65500';
+var arr = str.split(',').map(function(code) {
+ return parseInt(code, 10);
+});
+module.exports = arr;
},{}],4:[function(require,module,exports){
// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
//
@@ -50500,10 +461,8 @@ EventEmitter.prototype.emit = function(type) {
er = arguments[1];
if (er instanceof Error) {
throw er; // Unhandled 'error' event
- } else {
- throw TypeError('Uncaught, unspecified "error" event.');
}
- return false;
+ throw TypeError('Uncaught, unspecified "error" event.');
}
}
@@ -50588,7 +547,10 @@ EventEmitter.prototype.addListener = function(type, listener) {
'leak detected. %d listeners added. ' +
'Use emitter.setMaxListeners() to increase limit.',
this._events[type].length);
- console.trace();
+ if (typeof console.trace === 'function') {
+ // not supported in IE 10
+ console.trace();
+ }
}
}
@@ -50775,6 +737,8 @@ var process = module.exports = {};
process.nextTick = (function () {
var canSetImmediate = typeof window !== 'undefined'
&& window.setImmediate;
+ var canMutationObserver = typeof window !== 'undefined'
+ && window.MutationObserver;
var canPost = typeof window !== 'undefined'
&& window.postMessage && window.addEventListener
;
@@ -50783,10 +747,32 @@ process.nextTick = (function () {
return function (f) { return window.setImmediate(f) };
}
+ var queue = [];
+
+ if (canMutationObserver) {
+ var hiddenDiv = document.createElement("div");
+ var observer = new MutationObserver(function () {
+ var queueList = queue.slice();
+ queue.length = 0;
+ queueList.forEach(function (fn) {
+ fn();
+ });
+ });
+
+ observer.observe(hiddenDiv, { attributes: true });
+
+ return function nextTick(fn) {
+ if (!queue.length) {
+ hiddenDiv.setAttribute('yes', 'no');
+ }
+ queue.push(fn);
+ };
+ }
+
if (canPost) {
- var queue = [];
window.addEventListener('message', function (ev) {
- if (ev.source === window && ev.data === 'process-tick') {
+ var source = ev.source;
+ if ((source === window || source === null) && ev.data === 'process-tick') {
ev.stopPropagation();
if (queue.length > 0) {
var fn = queue.shift();
@@ -50811,9 +797,19 @@ process.browser = true;
process.env = {};
process.argv = [];
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+
process.binding = function (name) {
throw new Error('process.binding is not supported');
-}
+};
// TODO(shtylman)
process.cwd = function () { return '/' };
@@ -50829,7 +825,8 @@ module.exports = function isBuffer(arg) {
&& typeof arg.readUInt8 === 'function';
}
},{}],9:[function(require,module,exports){
-var process=require("__browserify_process"),global=typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};// Copyright Joyent, Inc. and other Node contributors.
+(function (process,global){
+// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
@@ -51416,10 +1413,13 @@ function hasOwnProperty(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
-},{"./support/isBuffer":8,"__browserify_process":7,"inherits":6}],10:[function(require,module,exports){
-var global=typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};/*global window, global*/
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./support/isBuffer":8,"_process":7,"inherits":6}],10:[function(require,module,exports){
+(function (global){
+/*global window, global*/
var util = require("util")
var assert = require("assert")
+var now = require("date-now")
var slice = Array.prototype.slice
var console
@@ -51430,19 +1430,19 @@ if (typeof global !== "undefined" && global.console) {
} else if (typeof window !== "undefined" && window.console) {
console = window.console
} else {
- console = window.console = {}
+ console = {}
}
var functions = [
- [log, "log"]
- , [info, "info"]
- , [warn, "warn"]
- , [error, "error"]
- , [time, "time"]
- , [timeEnd, "timeEnd"]
- , [trace, "trace"]
- , [dir, "dir"]
- , [assert, "assert"]
+ [log, "log"],
+ [info, "info"],
+ [warn, "warn"],
+ [error, "error"],
+ [time, "time"],
+ [timeEnd, "timeEnd"],
+ [trace, "trace"],
+ [dir, "dir"],
+ [consoleAssert, "assert"]
]
for (var i = 0; i < functions.length; i++) {
@@ -51472,7 +1472,7 @@ function error() {
}
function time(label) {
- times[label] = Date.now()
+ times[label] = now()
}
function timeEnd(label) {
@@ -51481,7 +1481,7 @@ function timeEnd(label) {
throw new Error("No such label: " + label)
}
- var duration = Date.now() - time
+ var duration = now() - time
console.log(label + ": " + duration + "ms")
}
@@ -51496,17 +1496,25 @@ function dir(object) {
console.log(util.inspect(object) + "\n")
}
-function assert(expression) {
+function consoleAssert(expression) {
if (!expression) {
var arr = slice.call(arguments, 1)
assert.ok(false, util.format.apply(null, arr))
}
}
-},{"assert":4,"util":9}],11:[function(require,module,exports){
-// Underscore.js 1.4.4
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"assert":4,"date-now":11,"util":9}],11:[function(require,module,exports){
+module.exports = now
+
+function now() {
+ return new Date().getTime()
+}
+
+},{}],12:[function(require,module,exports){
+// Underscore.js 1.6.0
// http://underscorejs.org
-// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
+// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Underscore may be freely distributed under the MIT license.
(function() {
@@ -51514,7 +1522,7 @@ function assert(expression) {
// Baseline setup
// --------------
- // Establish the root object, `window` in the browser, or `global` on the server.
+ // Establish the root object, `window` in the browser, or `exports` on the server.
var root = this;
// Save the previous value of the `_` variable.
@@ -51527,11 +1535,12 @@ function assert(expression) {
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
// Create quick reference variables for speed access to core prototypes.
- var push = ArrayProto.push,
- slice = ArrayProto.slice,
- concat = ArrayProto.concat,
- toString = ObjProto.toString,
- hasOwnProperty = ObjProto.hasOwnProperty;
+ var
+ push = ArrayProto.push,
+ slice = ArrayProto.slice,
+ concat = ArrayProto.concat,
+ toString = ObjProto.toString,
+ hasOwnProperty = ObjProto.hasOwnProperty;
// All **ECMAScript 5** native function implementations that we hope to use
// are declared here.
@@ -51570,7 +1579,7 @@ function assert(expression) {
}
// Current version.
- _.VERSION = '1.4.4';
+ _.VERSION = '1.6.0';
// Collection Functions
// --------------------
@@ -51579,20 +1588,20 @@ function assert(expression) {
// Handles objects with the built-in `forEach`, arrays, and raw objects.
// Delegates to **ECMAScript 5**'s native `forEach` if available.
var each = _.each = _.forEach = function(obj, iterator, context) {
- if (obj == null) return;
+ if (obj == null) return obj;
if (nativeForEach && obj.forEach === nativeForEach) {
obj.forEach(iterator, context);
} else if (obj.length === +obj.length) {
- for (var i = 0, l = obj.length; i < l; i++) {
+ for (var i = 0, length = obj.length; i < length; i++) {
if (iterator.call(context, obj[i], i, obj) === breaker) return;
}
} else {
- for (var key in obj) {
- if (_.has(obj, key)) {
- if (iterator.call(context, obj[key], key, obj) === breaker) return;
- }
+ var keys = _.keys(obj);
+ for (var i = 0, length = keys.length; i < length; i++) {
+ if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
}
}
+ return obj;
};
// Return the results of applying the iterator to each element.
@@ -51602,7 +1611,7 @@ function assert(expression) {
if (obj == null) return results;
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
each(obj, function(value, index, list) {
- results[results.length] = iterator.call(context, value, index, list);
+ results.push(iterator.call(context, value, index, list));
});
return results;
};
@@ -51658,10 +1667,10 @@ function assert(expression) {
};
// Return the first value which passes a truth test. Aliased as `detect`.
- _.find = _.detect = function(obj, iterator, context) {
+ _.find = _.detect = function(obj, predicate, context) {
var result;
any(obj, function(value, index, list) {
- if (iterator.call(context, value, index, list)) {
+ if (predicate.call(context, value, index, list)) {
result = value;
return true;
}
@@ -51672,33 +1681,33 @@ function assert(expression) {
// Return all the elements that pass a truth test.
// Delegates to **ECMAScript 5**'s native `filter` if available.
// Aliased as `select`.
- _.filter = _.select = function(obj, iterator, context) {
+ _.filter = _.select = function(obj, predicate, context) {
var results = [];
if (obj == null) return results;
- if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+ if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
each(obj, function(value, index, list) {
- if (iterator.call(context, value, index, list)) results[results.length] = value;
+ if (predicate.call(context, value, index, list)) results.push(value);
});
return results;
};
// Return all the elements for which a truth test fails.
- _.reject = function(obj, iterator, context) {
+ _.reject = function(obj, predicate, context) {
return _.filter(obj, function(value, index, list) {
- return !iterator.call(context, value, index, list);
+ return !predicate.call(context, value, index, list);
}, context);
};
// Determine whether all of the elements match a truth test.
// Delegates to **ECMAScript 5**'s native `every` if available.
// Aliased as `all`.
- _.every = _.all = function(obj, iterator, context) {
- iterator || (iterator = _.identity);
+ _.every = _.all = function(obj, predicate, context) {
+ predicate || (predicate = _.identity);
var result = true;
if (obj == null) return result;
- if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+ if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
each(obj, function(value, index, list) {
- if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+ if (!(result = result && predicate.call(context, value, index, list))) return breaker;
});
return !!result;
};
@@ -51706,13 +1715,13 @@ function assert(expression) {
// Determine if at least one element in the object matches a truth test.
// Delegates to **ECMAScript 5**'s native `some` if available.
// Aliased as `any`.
- var any = _.some = _.any = function(obj, iterator, context) {
- iterator || (iterator = _.identity);
+ var any = _.some = _.any = function(obj, predicate, context) {
+ predicate || (predicate = _.identity);
var result = false;
if (obj == null) return result;
- if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+ if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
each(obj, function(value, index, list) {
- if (result || (result = iterator.call(context, value, index, list))) return breaker;
+ if (result || (result = predicate.call(context, value, index, list))) return breaker;
});
return !!result;
};
@@ -51738,41 +1747,37 @@ function assert(expression) {
// Convenience version of a common use case of `map`: fetching a property.
_.pluck = function(obj, key) {
- return _.map(obj, function(value){ return value[key]; });
+ return _.map(obj, _.property(key));
};
// Convenience version of a common use case of `filter`: selecting only objects
// containing specific `key:value` pairs.
- _.where = function(obj, attrs, first) {
- if (_.isEmpty(attrs)) return first ? null : [];
- return _[first ? 'find' : 'filter'](obj, function(value) {
- for (var key in attrs) {
- if (attrs[key] !== value[key]) return false;
- }
- return true;
- });
+ _.where = function(obj, attrs) {
+ return _.filter(obj, _.matches(attrs));
};
// Convenience version of a common use case of `find`: getting the first object
// containing specific `key:value` pairs.
_.findWhere = function(obj, attrs) {
- return _.where(obj, attrs, true);
+ return _.find(obj, _.matches(attrs));
};
// Return the maximum element or (element-based computation).
// Can't optimize arrays of integers longer than 65,535 elements.
- // See: https://bugs.webkit.org/show_bug.cgi?id=80797
+ // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
_.max = function(obj, iterator, context) {
if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
return Math.max.apply(Math, obj);
}
- if (!iterator && _.isEmpty(obj)) return -Infinity;
- var result = {computed : -Infinity, value: -Infinity};
+ var result = -Infinity, lastComputed = -Infinity;
each(obj, function(value, index, list) {
var computed = iterator ? iterator.call(context, value, index, list) : value;
- computed >= result.computed && (result = {value : value, computed : computed});
+ if (computed > lastComputed) {
+ result = value;
+ lastComputed = computed;
+ }
});
- return result.value;
+ return result;
};
// Return the minimum element (or element-based computation).
@@ -51780,16 +1785,19 @@ function assert(expression) {
if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
return Math.min.apply(Math, obj);
}
- if (!iterator && _.isEmpty(obj)) return Infinity;
- var result = {computed : Infinity, value: Infinity};
+ var result = Infinity, lastComputed = Infinity;
each(obj, function(value, index, list) {
var computed = iterator ? iterator.call(context, value, index, list) : value;
- computed < result.computed && (result = {value : value, computed : computed});
+ if (computed < lastComputed) {
+ result = value;
+ lastComputed = computed;
+ }
});
- return result.value;
+ return result;
};
- // Shuffle an array.
+ // Shuffle an array, using the modern version of the
+ // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
_.shuffle = function(obj) {
var rand;
var index = 0;
@@ -51802,19 +1810,32 @@ function assert(expression) {
return shuffled;
};
+ // Sample **n** random values from a collection.
+ // If **n** is not specified, returns a single random element.
+ // The internal `guard` argument allows it to work with `map`.
+ _.sample = function(obj, n, guard) {
+ if (n == null || guard) {
+ if (obj.length !== +obj.length) obj = _.values(obj);
+ return obj[_.random(obj.length - 1)];
+ }
+ return _.shuffle(obj).slice(0, Math.max(0, n));
+ };
+
// An internal function to generate lookup iterators.
var lookupIterator = function(value) {
- return _.isFunction(value) ? value : function(obj){ return obj[value]; };
+ if (value == null) return _.identity;
+ if (_.isFunction(value)) return value;
+ return _.property(value);
};
// Sort the object's values by a criterion produced by an iterator.
- _.sortBy = function(obj, value, context) {
- var iterator = lookupIterator(value);
+ _.sortBy = function(obj, iterator, context) {
+ iterator = lookupIterator(iterator);
return _.pluck(_.map(obj, function(value, index, list) {
return {
- value : value,
- index : index,
- criteria : iterator.call(context, value, index, list)
+ value: value,
+ index: index,
+ criteria: iterator.call(context, value, index, list)
};
}).sort(function(left, right) {
var a = left.criteria;
@@ -51823,43 +1844,46 @@ function assert(expression) {
if (a > b || a === void 0) return 1;
if (a < b || b === void 0) return -1;
}
- return left.index < right.index ? -1 : 1;
+ return left.index - right.index;
}), 'value');
};
// An internal function used for aggregate "group by" operations.
- var group = function(obj, value, context, behavior) {
- var result = {};
- var iterator = lookupIterator(value || _.identity);
- each(obj, function(value, index) {
- var key = iterator.call(context, value, index, obj);
- behavior(result, key, value);
- });
- return result;
+ var group = function(behavior) {
+ return function(obj, iterator, context) {
+ var result = {};
+ iterator = lookupIterator(iterator);
+ each(obj, function(value, index) {
+ var key = iterator.call(context, value, index, obj);
+ behavior(result, key, value);
+ });
+ return result;
+ };
};
// Groups the object's values by a criterion. Pass either a string attribute
// to group by, or a function that returns the criterion.
- _.groupBy = function(obj, value, context) {
- return group(obj, value, context, function(result, key, value) {
- (_.has(result, key) ? result[key] : (result[key] = [])).push(value);
- });
- };
+ _.groupBy = group(function(result, key, value) {
+ _.has(result, key) ? result[key].push(value) : result[key] = [value];
+ });
+
+ // Indexes the object's values by a criterion, similar to `groupBy`, but for
+ // when you know that your index values will be unique.
+ _.indexBy = group(function(result, key, value) {
+ result[key] = value;
+ });
// Counts instances of an object that group by a certain criterion. Pass
// either a string attribute to count by, or a function that returns the
// criterion.
- _.countBy = function(obj, value, context) {
- return group(obj, value, context, function(result, key) {
- if (!_.has(result, key)) result[key] = 0;
- result[key]++;
- });
- };
+ _.countBy = group(function(result, key) {
+ _.has(result, key) ? result[key]++ : result[key] = 1;
+ });
// Use a comparator function to figure out the smallest index at which
// an object should be inserted so as to maintain order. Uses binary search.
_.sortedIndex = function(array, obj, iterator, context) {
- iterator = iterator == null ? _.identity : lookupIterator(iterator);
+ iterator = lookupIterator(iterator);
var value = iterator.call(context, obj);
var low = 0, high = array.length;
while (low < high) {
@@ -51869,7 +1893,7 @@ function assert(expression) {
return low;
};
- // Safely convert anything iterable into a real, live array.
+ // Safely create a real, live array from anything iterable.
_.toArray = function(obj) {
if (!obj) return [];
if (_.isArray(obj)) return slice.call(obj);
@@ -51891,7 +1915,9 @@ function assert(expression) {
// allows it to work with `_.map`.
_.first = _.head = _.take = function(array, n, guard) {
if (array == null) return void 0;
- return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+ if ((n == null) || guard) return array[0];
+ if (n < 0) return [];
+ return slice.call(array, 0, n);
};
// Returns everything but the last entry of the array. Especially useful on
@@ -51906,11 +1932,8 @@ function assert(expression) {
// values in the array. The **guard** check allows it to work with `_.map`.
_.last = function(array, n, guard) {
if (array == null) return void 0;
- if ((n != null) && !guard) {
- return slice.call(array, Math.max(array.length - n, 0));
- } else {
- return array[array.length - 1];
- }
+ if ((n == null) || guard) return array[array.length - 1];
+ return slice.call(array, Math.max(array.length - n, 0));
};
// Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
@@ -51928,8 +1951,11 @@ function assert(expression) {
// Internal implementation of a recursive `flatten` function.
var flatten = function(input, shallow, output) {
+ if (shallow && _.every(input, _.isArray)) {
+ return concat.apply(output, input);
+ }
each(input, function(value) {
- if (_.isArray(value)) {
+ if (_.isArray(value) || _.isArguments(value)) {
shallow ? push.apply(output, value) : flatten(value, shallow, output);
} else {
output.push(value);
@@ -51938,7 +1964,7 @@ function assert(expression) {
return output;
};
- // Return a completely flattened version of an array.
+ // Flatten out an array, either recursively (by default), or just one level.
_.flatten = function(array, shallow) {
return flatten(array, shallow, []);
};
@@ -51948,6 +1974,16 @@ function assert(expression) {
return _.difference(array, slice.call(arguments, 1));
};
+ // Split an array into two arrays: one whose elements all satisfy the given
+ // predicate, and one whose elements all do not satisfy the predicate.
+ _.partition = function(array, predicate) {
+ var pass = [], fail = [];
+ each(array, function(elem) {
+ (predicate(elem) ? pass : fail).push(elem);
+ });
+ return [pass, fail];
+ };
+
// Produce a duplicate-free version of the array. If the array has already
// been sorted, you have the option of using a faster algorithm.
// Aliased as `unique`.
@@ -51972,7 +2008,7 @@ function assert(expression) {
// Produce an array that contains the union: each distinct element from all of
// the passed-in arrays.
_.union = function() {
- return _.uniq(concat.apply(ArrayProto, arguments));
+ return _.uniq(_.flatten(arguments, true));
};
// Produce an array that contains every item shared between all the
@@ -51981,7 +2017,7 @@ function assert(expression) {
var rest = slice.call(arguments, 1);
return _.filter(_.uniq(array), function(item) {
return _.every(rest, function(other) {
- return _.indexOf(other, item) >= 0;
+ return _.contains(other, item);
});
});
};
@@ -51996,11 +2032,10 @@ function assert(expression) {
// Zip together multiple lists into a single array -- elements that share
// an index go together.
_.zip = function() {
- var args = slice.call(arguments);
- var length = _.max(_.pluck(args, 'length'));
+ var length = _.max(_.pluck(arguments, 'length').concat(0));
var results = new Array(length);
for (var i = 0; i < length; i++) {
- results[i] = _.pluck(args, "" + i);
+ results[i] = _.pluck(arguments, '' + i);
}
return results;
};
@@ -52011,7 +2046,7 @@ function assert(expression) {
_.object = function(list, values) {
if (list == null) return {};
var result = {};
- for (var i = 0, l = list.length; i < l; i++) {
+ for (var i = 0, length = list.length; i < length; i++) {
if (values) {
result[list[i]] = values[i];
} else {
@@ -52029,17 +2064,17 @@ function assert(expression) {
// for **isSorted** to use binary search.
_.indexOf = function(array, item, isSorted) {
if (array == null) return -1;
- var i = 0, l = array.length;
+ var i = 0, length = array.length;
if (isSorted) {
if (typeof isSorted == 'number') {
- i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted);
+ i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
} else {
i = _.sortedIndex(array, item);
return array[i] === item ? i : -1;
}
}
if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
- for (; i < l; i++) if (array[i] === item) return i;
+ for (; i < length; i++) if (array[i] === item) return i;
return -1;
};
@@ -52065,11 +2100,11 @@ function assert(expression) {
}
step = arguments[2] || 1;
- var len = Math.max(Math.ceil((stop - start) / step), 0);
+ var length = Math.max(Math.ceil((stop - start) / step), 0);
var idx = 0;
- var range = new Array(len);
+ var range = new Array(length);
- while(idx < len) {
+ while(idx < length) {
range[idx++] = start;
start += step;
}
@@ -52080,31 +2115,50 @@ function assert(expression) {
// Function (ahem) Functions
// ------------------
+ // Reusable constructor function for prototype setting.
+ var ctor = function(){};
+
// Create a function bound to a given object (assigning `this`, and arguments,
// optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
// available.
_.bind = function(func, context) {
- if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
- var args = slice.call(arguments, 2);
- return function() {
- return func.apply(context, args.concat(slice.call(arguments)));
+ var args, bound;
+ if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+ if (!_.isFunction(func)) throw new TypeError;
+ args = slice.call(arguments, 2);
+ return bound = function() {
+ if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+ ctor.prototype = func.prototype;
+ var self = new ctor;
+ ctor.prototype = null;
+ var result = func.apply(self, args.concat(slice.call(arguments)));
+ if (Object(result) === result) return result;
+ return self;
};
};
// Partially apply a function by creating a version that has had some of its
- // arguments pre-filled, without changing its dynamic `this` context.
+ // arguments pre-filled, without changing its dynamic `this` context. _ acts
+ // as a placeholder, allowing any combination of arguments to be pre-filled.
_.partial = function(func) {
- var args = slice.call(arguments, 1);
+ var boundArgs = slice.call(arguments, 1);
return function() {
- return func.apply(this, args.concat(slice.call(arguments)));
+ var position = 0;
+ var args = boundArgs.slice();
+ for (var i = 0, length = args.length; i < length; i++) {
+ if (args[i] === _) args[i] = arguments[position++];
+ }
+ while (position < arguments.length) args.push(arguments[position++]);
+ return func.apply(this, args);
};
};
- // Bind all of an object's methods to that object. Useful for ensuring that
- // all callbacks defined on an object belong to it.
+ // Bind a number of an object's methods to that object. Remaining arguments
+ // are the method names to be bound. Useful for ensuring that all callbacks
+ // defined on an object belong to it.
_.bindAll = function(obj) {
var funcs = slice.call(arguments, 1);
- if (funcs.length === 0) funcs = _.functions(obj);
+ if (funcs.length === 0) throw new Error('bindAll must be passed function names');
each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
return obj;
};
@@ -52133,17 +2187,24 @@ function assert(expression) {
};
// Returns a function, that, when invoked, will only be triggered at most once
- // during a given window of time.
- _.throttle = function(func, wait) {
- var context, args, timeout, result;
+ // during a given window of time. Normally, the throttled function will run
+ // as much as it can, without ever going more than once per `wait` duration;
+ // but if you'd like to disable the execution on the leading edge, pass
+ // `{leading: false}`. To disable execution on the trailing edge, ditto.
+ _.throttle = function(func, wait, options) {
+ var context, args, result;
+ var timeout = null;
var previous = 0;
+ options || (options = {});
var later = function() {
- previous = new Date;
+ previous = options.leading === false ? 0 : _.now();
timeout = null;
result = func.apply(context, args);
+ context = args = null;
};
return function() {
- var now = new Date;
+ var now = _.now();
+ if (!previous && options.leading === false) previous = now;
var remaining = wait - (now - previous);
context = this;
args = arguments;
@@ -52152,7 +2213,8 @@ function assert(expression) {
timeout = null;
previous = now;
result = func.apply(context, args);
- } else if (!timeout) {
+ context = args = null;
+ } else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
return result;
@@ -52164,17 +2226,34 @@ function assert(expression) {
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
_.debounce = function(func, wait, immediate) {
- var timeout, result;
- return function() {
- var context = this, args = arguments;
- var later = function() {
+ var timeout, args, context, timestamp, result;
+
+ var later = function() {
+ var last = _.now() - timestamp;
+ if (last < wait) {
+ timeout = setTimeout(later, wait - last);
+ } else {
timeout = null;
- if (!immediate) result = func.apply(context, args);
- };
+ if (!immediate) {
+ result = func.apply(context, args);
+ context = args = null;
+ }
+ }
+ };
+
+ return function() {
+ context = this;
+ args = arguments;
+ timestamp = _.now();
var callNow = immediate && !timeout;
- clearTimeout(timeout);
- timeout = setTimeout(later, wait);
- if (callNow) result = func.apply(context, args);
+ if (!timeout) {
+ timeout = setTimeout(later, wait);
+ }
+ if (callNow) {
+ result = func.apply(context, args);
+ context = args = null;
+ }
+
return result;
};
};
@@ -52196,11 +2275,7 @@ function assert(expression) {
// allowing you to adjust arguments, run code before and after, and
// conditionally execute the original function.
_.wrap = function(func, wrapper) {
- return function() {
- var args = [func];
- push.apply(args, arguments);
- return wrapper.apply(this, args);
- };
+ return _.partial(wrapper, func);
};
// Returns a function that is the composition of a list of functions, each
@@ -52218,7 +2293,6 @@ function assert(expression) {
// Returns a function that will only be executed after being called N times.
_.after = function(times, func) {
- if (times <= 0) return func();
return function() {
if (--times < 1) {
return func.apply(this, arguments);
@@ -52231,31 +2305,43 @@ function assert(expression) {
// Retrieve the names of an object's properties.
// Delegates to **ECMAScript 5**'s native `Object.keys`
- _.keys = nativeKeys || function(obj) {
- if (obj !== Object(obj)) throw new TypeError('Invalid object');
+ _.keys = function(obj) {
+ if (!_.isObject(obj)) return [];
+ if (nativeKeys) return nativeKeys(obj);
var keys = [];
- for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+ for (var key in obj) if (_.has(obj, key)) keys.push(key);
return keys;
};
// Retrieve the values of an object's properties.
_.values = function(obj) {
- var values = [];
- for (var key in obj) if (_.has(obj, key)) values.push(obj[key]);
+ var keys = _.keys(obj);
+ var length = keys.length;
+ var values = new Array(length);
+ for (var i = 0; i < length; i++) {
+ values[i] = obj[keys[i]];
+ }
return values;
};
// Convert an object into a list of `[key, value]` pairs.
_.pairs = function(obj) {
- var pairs = [];
- for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]);
+ var keys = _.keys(obj);
+ var length = keys.length;
+ var pairs = new Array(length);
+ for (var i = 0; i < length; i++) {
+ pairs[i] = [keys[i], obj[keys[i]]];
+ }
return pairs;
};
// Invert the keys and values of an object. The values must be serializable.
_.invert = function(obj) {
var result = {};
- for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key;
+ var keys = _.keys(obj);
+ for (var i = 0, length = keys.length; i < length; i++) {
+ result[obj[keys[i]]] = keys[i];
+ }
return result;
};
@@ -52306,7 +2392,7 @@ function assert(expression) {
each(slice.call(arguments, 1), function(source) {
if (source) {
for (var prop in source) {
- if (obj[prop] == null) obj[prop] = source[prop];
+ if (obj[prop] === void 0) obj[prop] = source[prop];
}
}
});
@@ -52330,7 +2416,7 @@ function assert(expression) {
// Internal recursive comparison function for `isEqual`.
var eq = function(a, b, aStack, bStack) {
// Identical objects are equal. `0 === -0`, but they aren't identical.
- // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+ // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
if (a === b) return a !== 0 || 1 / a == 1 / b;
// A strict comparison is necessary because `null == undefined`.
if (a == null || b == null) return a === b;
@@ -52372,6 +2458,14 @@ function assert(expression) {
// unique nested structures.
if (aStack[length] == a) return bStack[length] == b;
}
+ // Objects with different constructors are not equivalent, but `Object`s
+ // from different frames are.
+ var aCtor = a.constructor, bCtor = b.constructor;
+ if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
+ _.isFunction(bCtor) && (bCtor instanceof bCtor))
+ && ('constructor' in a && 'constructor' in b)) {
+ return false;
+ }
// Add the first object to the stack of traversed objects.
aStack.push(a);
bStack.push(b);
@@ -52388,13 +2482,6 @@ function assert(expression) {
}
}
} else {
- // Objects with different constructors are not equivalent, but `Object`s
- // from different frames are.
- var aCtor = a.constructor, bCtor = b.constructor;
- if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
- _.isFunction(bCtor) && (bCtor instanceof bCtor))) {
- return false;
- }
// Deep compare objects.
for (var key in a) {
if (_.has(a, key)) {
@@ -52516,9 +2603,33 @@ function assert(expression) {
return value;
};
+ _.constant = function(value) {
+ return function () {
+ return value;
+ };
+ };
+
+ _.property = function(key) {
+ return function(obj) {
+ return obj[key];
+ };
+ };
+
+ // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
+ _.matches = function(attrs) {
+ return function(obj) {
+ if (obj === attrs) return true; //avoid comparing an object to itself.
+ for (var key in attrs) {
+ if (attrs[key] !== obj[key])
+ return false;
+ }
+ return true;
+ }
+ };
+
// Run a function **n** times.
_.times = function(n, iterator, context) {
- var accum = Array(n);
+ var accum = Array(Math.max(0, n));
for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
return accum;
};
@@ -52532,6 +2643,9 @@ function assert(expression) {
return min + Math.floor(Math.random() * (max - min + 1));
};
+ // A (possibly faster) way to get the current timestamp as an integer.
+ _.now = Date.now || function() { return new Date().getTime(); };
+
// List of HTML entities for escaping.
var entityMap = {
escape: {
@@ -52539,8 +2653,7 @@ function assert(expression) {
'<': '<',
'>': '>',
'"': '"',
- "'": ''',
- '/': '/'
+ "'": '''
}
};
entityMap.unescape = _.invert(entityMap.escape);
@@ -52561,17 +2674,17 @@ function assert(expression) {
};
});
- // If the value of the named property is a function then invoke it;
- // otherwise, return it.
+ // If the value of the named `property` is a function then invoke it with the
+ // `object` as context; otherwise, return it.
_.result = function(object, property) {
- if (object == null) return null;
+ if (object == null) return void 0;
var value = object[property];
return _.isFunction(value) ? value.call(object) : value;
};
// Add your own custom functions to the Underscore object.
_.mixin = function(obj) {
- each(_.functions(obj), function(name){
+ each(_.functions(obj), function(name) {
var func = _[name] = obj[name];
_.prototype[name] = function() {
var args = [this._wrapped];
@@ -52729,9 +2842,3881 @@ function assert(expression) {
});
+ // AMD registration happens at the end for compatibility with AMD loaders
+ // that may not enforce next-turn semantics on modules. Even though general
+ // practice for AMD registration is to be anonymous, underscore registers
+ // as a named module because, like jQuery, it is a base library that is
+ // popular enough to be bundled in a third party lib, but not be part of
+ // an AMD load request. Those cases could generate an error when an
+ // anonymous define() is called outside of a loader request.
+ if (typeof define === 'function' && define.amd) {
+ define('underscore', [], function() {
+ return _;
+ });
+ }
}).call(this);
-},{}],"FcDwKk":[function(require,module,exports){
+},{}],13:[function(require,module,exports){
+/*
+ * Lexical analysis and token construction.
+ */
+
+"use strict";
+
+var _ = require("underscore");
+var events = require("events");
+var reg = require("./reg.js");
+var state = require("./state.js").state;
+
+var unicodeData = require("../data/ascii-identifier-data.js");
+var asciiIdentifierStartTable = unicodeData.asciiIdentifierStartTable;
+var asciiIdentifierPartTable = unicodeData.asciiIdentifierPartTable;
+var nonAsciiIdentifierStartTable = require("../data/non-ascii-identifier-start.js");
+var nonAsciiIdentifierPartTable = require("../data/non-ascii-identifier-part-only.js");
+
+// Some of these token types are from JavaScript Parser API
+// while others are specific to JSHint parser.
+// JS Parser API: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
+
+var Token = {
+ Identifier: 1,
+ Punctuator: 2,
+ NumericLiteral: 3,
+ StringLiteral: 4,
+ Comment: 5,
+ Keyword: 6,
+ NullLiteral: 7,
+ BooleanLiteral: 8,
+ RegExp: 9,
+ TemplateHead: 10,
+ TemplateMiddle: 11,
+ TemplateTail: 12
+};
+
+// Object that handles postponed lexing verifications that checks the parsed
+// environment state.
+
+function asyncTrigger() {
+ var _checks = [];
+
+ return {
+ push: function(fn) {
+ _checks.push(fn);
+ },
+
+ check: function() {
+ for (var check = 0; check < _checks.length; ++check) {
+ _checks[check]();
+ }
+
+ _checks.splice(0, _checks.length);
+ }
+ };
+}
+
+/*
+ * Lexer for JSHint.
+ *
+ * This object does a char-by-char scan of the provided source code
+ * and produces a sequence of tokens.
+ *
+ * var lex = new Lexer("var i = 0;");
+ * lex.start();
+ * lex.token(); // returns the next token
+ *
+ * You have to use the token() method to move the lexer forward
+ * but you don't have to use its return value to get tokens. In addition
+ * to token() method returning the next token, the Lexer object also
+ * emits events.
+ *
+ * lex.on("Identifier", function(data) {
+ * if (data.name.indexOf("_") >= 0) {
+ * // Produce a warning.
+ * }
+ * });
+ *
+ * Note that the token() method returns tokens in a JSLint-compatible
+ * format while the event emitter uses a slightly modified version of
+ * Mozilla's JavaScript Parser API. Eventually, we will move away from
+ * JSLint format.
+ */
+function Lexer(source) {
+ var lines = source;
+
+ if (typeof lines === "string") {
+ lines = lines
+ .replace(/\r\n/g, "\n")
+ .replace(/\r/g, "\n")
+ .split("\n");
+ }
+
+ // If the first line is a shebang (#!), make it a blank and move on.
+ // Shebangs are used by Node scripts.
+
+ if (lines[0] && lines[0].substr(0, 2) === "#!") {
+ if (lines[0].indexOf("node") !== -1) {
+ state.option.node = true;
+ }
+ lines[0] = "";
+ }
+
+ this.emitter = new events.EventEmitter();
+ this.source = source;
+ this.setLines(lines);
+ this.prereg = true;
+
+ this.line = 0;
+ this.char = 1;
+ this.from = 1;
+ this.input = "";
+ this.inComment = false;
+ this.inTemplate = false;
+ this.templateLine = null;
+ this.templateChar = null;
+
+ for (var i = 0; i < state.option.indent; i += 1) {
+ state.tab += " ";
+ }
+}
+
+Lexer.prototype = {
+ _lines: [],
+
+ getLines: function() {
+ this._lines = state.lines;
+ return this._lines;
+ },
+
+ setLines: function(val) {
+ this._lines = val;
+ state.lines = this._lines;
+ },
+
+ /*
+ * Return the next i character without actually moving the
+ * char pointer.
+ */
+ peek: function(i) {
+ return this.input.charAt(i || 0);
+ },
+
+ /*
+ * Move the char pointer forward i times.
+ */
+ skip: function(i) {
+ i = i || 1;
+ this.char += i;
+ this.input = this.input.slice(i);
+ },
+
+ /*
+ * Subscribe to a token event. The API for this method is similar
+ * Underscore.js i.e. you can subscribe to multiple events with
+ * one call:
+ *
+ * lex.on("Identifier Number", function(data) {
+ * // ...
+ * });
+ */
+ on: function(names, listener) {
+ names.split(" ").forEach(function(name) {
+ this.emitter.on(name, listener);
+ }.bind(this));
+ },
+
+ /*
+ * Trigger a token event. All arguments will be passed to each
+ * listener.
+ */
+ trigger: function() {
+ this.emitter.emit.apply(this.emitter, Array.prototype.slice.call(arguments));
+ },
+
+ /*
+ * Postpone a token event. the checking condition is set as
+ * last parameter, and the trigger function is called in a
+ * stored callback. To be later called using the check() function
+ * by the parser. This avoids parser's peek() to give the lexer
+ * a false context.
+ */
+ triggerAsync: function(type, args, checks, fn) {
+ checks.push(function() {
+ if (fn()) {
+ this.trigger(type, args);
+ }
+ }.bind(this));
+ },
+
+ /*
+ * Extract a punctuator out of the next sequence of characters
+ * or return 'null' if its not possible.
+ *
+ * This method's implementation was heavily influenced by the
+ * scanPunctuator function in the Esprima parser's source code.
+ */
+ scanPunctuator: function() {
+ var ch1 = this.peek();
+ var ch2, ch3, ch4;
+
+ switch (ch1) {
+ // Most common single-character punctuators
+ case ".":
+ if ((/^[0-9]$/).test(this.peek(1))) {
+ return null;
+ }
+ if (this.peek(1) === "." && this.peek(2) === ".") {
+ return {
+ type: Token.Punctuator,
+ value: "..."
+ };
+ }
+ /* falls through */
+ case "(":
+ case ")":
+ case ";":
+ case ",":
+ case "{":
+ case "}":
+ case "[":
+ case "]":
+ case ":":
+ case "~":
+ case "?":
+ return {
+ type: Token.Punctuator,
+ value: ch1
+ };
+
+ // A pound sign (for Node shebangs)
+ case "#":
+ return {
+ type: Token.Punctuator,
+ value: ch1
+ };
+
+ // We're at the end of input
+ case "":
+ return null;
+ }
+
+ // Peek more characters
+
+ ch2 = this.peek(1);
+ ch3 = this.peek(2);
+ ch4 = this.peek(3);
+
+ // 4-character punctuator: >>>=
+
+ if (ch1 === ">" && ch2 === ">" && ch3 === ">" && ch4 === "=") {
+ return {
+ type: Token.Punctuator,
+ value: ">>>="
+ };
+ }
+
+ // 3-character punctuators: === !== >>> <<= >>=
+
+ if (ch1 === "=" && ch2 === "=" && ch3 === "=") {
+ return {
+ type: Token.Punctuator,
+ value: "==="
+ };
+ }
+
+ if (ch1 === "!" && ch2 === "=" && ch3 === "=") {
+ return {
+ type: Token.Punctuator,
+ value: "!=="
+ };
+ }
+
+ if (ch1 === ">" && ch2 === ">" && ch3 === ">") {
+ return {
+ type: Token.Punctuator,
+ value: ">>>"
+ };
+ }
+
+ if (ch1 === "<" && ch2 === "<" && ch3 === "=") {
+ return {
+ type: Token.Punctuator,
+ value: "<<="
+ };
+ }
+
+ if (ch1 === ">" && ch2 === ">" && ch3 === "=") {
+ return {
+ type: Token.Punctuator,
+ value: ">>="
+ };
+ }
+
+ // Fat arrow punctuator
+ if (ch1 === "=" && ch2 === ">") {
+ return {
+ type: Token.Punctuator,
+ value: ch1 + ch2
+ };
+ }
+
+ // 2-character punctuators: <= >= == != ++ -- << >> && ||
+ // += -= *= %= &= |= ^= (but not /=, see below)
+ if (ch1 === ch2 && ("+-<>&|".indexOf(ch1) >= 0)) {
+ return {
+ type: Token.Punctuator,
+ value: ch1 + ch2
+ };
+ }
+
+ if ("<>=!+-*%&|^".indexOf(ch1) >= 0) {
+ if (ch2 === "=") {
+ return {
+ type: Token.Punctuator,
+ value: ch1 + ch2
+ };
+ }
+
+ return {
+ type: Token.Punctuator,
+ value: ch1
+ };
+ }
+
+ // Special case: /=.
+
+ if (ch1 === "/") {
+ if (ch2 === "=") {
+ return {
+ type: Token.Punctuator,
+ value: "/="
+ };
+ }
+
+ return {
+ type: Token.Punctuator,
+ value: "/"
+ };
+ }
+
+ return null;
+ },
+
+ /*
+ * Extract a comment out of the next sequence of characters and/or
+ * lines or return 'null' if its not possible. Since comments can
+ * span across multiple lines this method has to move the char
+ * pointer.
+ *
+ * In addition to normal JavaScript comments (// and /*) this method
+ * also recognizes JSHint- and JSLint-specific comments such as
+ * /*jshint, /*jslint, /*globals and so on.
+ */
+ scanComments: function() {
+ var ch1 = this.peek();
+ var ch2 = this.peek(1);
+ var rest = this.input.substr(2);
+ var startLine = this.line;
+ var startChar = this.char;
+
+ // Create a comment token object and make sure it
+ // has all the data JSHint needs to work with special
+ // comments.
+
+ function commentToken(label, body, opt) {
+ var special = ["jshint", "jslint", "members", "member", "globals", "global", "exported"];
+ var isSpecial = false;
+ var value = label + body;
+ var commentType = "plain";
+ opt = opt || {};
+
+ if (opt.isMultiline) {
+ value += "*/";
+ }
+
+ body = body.replace(/\n/g, " ");
+
+ special.forEach(function(str) {
+ if (isSpecial) {
+ return;
+ }
+
+ // Don't recognize any special comments other than jshint for single-line
+ // comments. This introduced many problems with legit comments.
+ if (label === "//" && str !== "jshint") {
+ return;
+ }
+
+ if (body.charAt(str.length) === " " && body.substr(0, str.length) === str) {
+ isSpecial = true;
+ label = label + str;
+ body = body.substr(str.length);
+ }
+
+ if (!isSpecial && body.charAt(0) === " " && body.charAt(str.length + 1) === " " &&
+ body.substr(1, str.length) === str) {
+ isSpecial = true;
+ label = label + " " + str;
+ body = body.substr(str.length + 1);
+ }
+
+ if (!isSpecial) {
+ return;
+ }
+
+ switch (str) {
+ case "member":
+ commentType = "members";
+ break;
+ case "global":
+ commentType = "globals";
+ break;
+ default:
+ commentType = str;
+ }
+ });
+
+ return {
+ type: Token.Comment,
+ commentType: commentType,
+ value: value,
+ body: body,
+ isSpecial: isSpecial,
+ isMultiline: opt.isMultiline || false,
+ isMalformed: opt.isMalformed || false
+ };
+ }
+
+ // End of unbegun comment. Raise an error and skip that input.
+ if (ch1 === "*" && ch2 === "/") {
+ this.trigger("error", {
+ code: "E018",
+ line: startLine,
+ character: startChar
+ });
+
+ this.skip(2);
+ return null;
+ }
+
+ // Comments must start either with // or /*
+ if (ch1 !== "/" || (ch2 !== "*" && ch2 !== "/")) {
+ return null;
+ }
+
+ // One-line comment
+ if (ch2 === "/") {
+ this.skip(this.input.length); // Skip to the EOL.
+ return commentToken("//", rest);
+ }
+
+ var body = "";
+
+ /* Multi-line comment */
+ if (ch2 === "*") {
+ this.inComment = true;
+ this.skip(2);
+
+ while (this.peek() !== "*" || this.peek(1) !== "/") {
+ if (this.peek() === "") { // End of Line
+ body += "\n";
+
+ // If we hit EOF and our comment is still unclosed,
+ // trigger an error and end the comment implicitly.
+ if (!this.nextLine()) {
+ this.trigger("error", {
+ code: "E017",
+ line: startLine,
+ character: startChar
+ });
+
+ this.inComment = false;
+ return commentToken("/*", body, {
+ isMultiline: true,
+ isMalformed: true
+ });
+ }
+ } else {
+ body += this.peek();
+ this.skip();
+ }
+ }
+
+ this.skip(2);
+ this.inComment = false;
+ return commentToken("/*", body, { isMultiline: true });
+ }
+ },
+
+ /*
+ * Extract a keyword out of the next sequence of characters or
+ * return 'null' if its not possible.
+ */
+ scanKeyword: function() {
+ var result = /^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input);
+ var keywords = [
+ "if", "in", "do", "var", "for", "new",
+ "try", "let", "this", "else", "case",
+ "void", "with", "enum", "while", "break",
+ "catch", "throw", "const", "yield", "class",
+ "super", "return", "typeof", "delete",
+ "switch", "export", "import", "default",
+ "finally", "extends", "function", "continue",
+ "debugger", "instanceof"
+ ];
+
+ if (result && keywords.indexOf(result[0]) >= 0) {
+ return {
+ type: Token.Keyword,
+ value: result[0]
+ };
+ }
+
+ return null;
+ },
+
+ /*
+ * Extract a JavaScript identifier out of the next sequence of
+ * characters or return 'null' if its not possible. In addition,
+ * to Identifier this method can also produce BooleanLiteral
+ * (true/false) and NullLiteral (null).
+ */
+ scanIdentifier: function() {
+ var id = "";
+ var index = 0;
+ var type, char;
+
+ function isNonAsciiIdentifierStart(code) {
+ return nonAsciiIdentifierStartTable.indexOf(code) > -1;
+ }
+
+ function isNonAsciiIdentifierPart(code) {
+ return isNonAsciiIdentifierStart(code) || nonAsciiIdentifierPartTable.indexOf(code) > -1;
+ }
+
+ function isHexDigit(str) {
+ return (/^[0-9a-fA-F]$/).test(str);
+ }
+
+ var readUnicodeEscapeSequence = function() {
+ /*jshint validthis:true */
+ index += 1;
+
+ if (this.peek(index) !== "u") {
+ return null;
+ }
+
+ var ch1 = this.peek(index + 1);
+ var ch2 = this.peek(index + 2);
+ var ch3 = this.peek(index + 3);
+ var ch4 = this.peek(index + 4);
+ var code;
+
+ if (isHexDigit(ch1) && isHexDigit(ch2) && isHexDigit(ch3) && isHexDigit(ch4)) {
+ code = parseInt(ch1 + ch2 + ch3 + ch4, 16);
+
+ if (asciiIdentifierPartTable[code] || isNonAsciiIdentifierPart(code)) {
+ index += 5;
+ return "\\u" + ch1 + ch2 + ch3 + ch4;
+ }
+
+ return null;
+ }
+
+ return null;
+ }.bind(this);
+
+ var getIdentifierStart = function() {
+ /*jshint validthis:true */
+ var chr = this.peek(index);
+ var code = chr.charCodeAt(0);
+
+ if (code === 92) {
+ return readUnicodeEscapeSequence();
+ }
+
+ if (code < 128) {
+ if (asciiIdentifierStartTable[code]) {
+ index += 1;
+ return chr;
+ }
+
+ return null;
+ }
+
+ if (isNonAsciiIdentifierStart(code)) {
+ index += 1;
+ return chr;
+ }
+
+ return null;
+ }.bind(this);
+
+ var getIdentifierPart = function() {
+ /*jshint validthis:true */
+ var chr = this.peek(index);
+ var code = chr.charCodeAt(0);
+
+ if (code === 92) {
+ return readUnicodeEscapeSequence();
+ }
+
+ if (code < 128) {
+ if (asciiIdentifierPartTable[code]) {
+ index += 1;
+ return chr;
+ }
+
+ return null;
+ }
+
+ if (isNonAsciiIdentifierPart(code)) {
+ index += 1;
+ return chr;
+ }
+
+ return null;
+ }.bind(this);
+
+ function removeEscapeSequences(id) {
+ return id.replace(/\\u([0-9a-fA-F]{4})/g, function(m0, codepoint) {
+ return String.fromCharCode(parseInt(codepoint, 16));
+ });
+ }
+
+ char = getIdentifierStart();
+ if (char === null) {
+ return null;
+ }
+
+ id = char;
+ for (;;) {
+ char = getIdentifierPart();
+
+ if (char === null) {
+ break;
+ }
+
+ id += char;
+ }
+
+ switch (id) {
+ case "true":
+ case "false":
+ type = Token.BooleanLiteral;
+ break;
+ case "null":
+ type = Token.NullLiteral;
+ break;
+ default:
+ type = Token.Identifier;
+ }
+
+ return {
+ type: type,
+ value: removeEscapeSequences(id),
+ text: id,
+ tokenLength: id.length
+ };
+ },
+
+ /*
+ * Extract a numeric literal out of the next sequence of
+ * characters or return 'null' if its not possible. This method
+ * supports all numeric literals described in section 7.8.3
+ * of the EcmaScript 5 specification.
+ *
+ * This method's implementation was heavily influenced by the
+ * scanNumericLiteral function in the Esprima parser's source code.
+ */
+ scanNumericLiteral: function() {
+ var index = 0;
+ var value = "";
+ var length = this.input.length;
+ var char = this.peek(index);
+ var bad;
+ var isAllowedDigit = isDecimalDigit;
+ var base = 10;
+ var isLegacy = false;
+
+ function isDecimalDigit(str) {
+ return (/^[0-9]$/).test(str);
+ }
+
+ function isOctalDigit(str) {
+ return (/^[0-7]$/).test(str);
+ }
+
+ function isBinaryDigit(str) {
+ return (/^[01]$/).test(str);
+ }
+
+ function isHexDigit(str) {
+ return (/^[0-9a-fA-F]$/).test(str);
+ }
+
+ function isIdentifierStart(ch) {
+ return (ch === "$") || (ch === "_") || (ch === "\\") ||
+ (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z");
+ }
+
+ // Numbers must start either with a decimal digit or a point.
+
+ if (char !== "." && !isDecimalDigit(char)) {
+ return null;
+ }
+
+ if (char !== ".") {
+ value = this.peek(index);
+ index += 1;
+ char = this.peek(index);
+
+ if (value === "0") {
+ // Base-16 numbers.
+ if (char === "x" || char === "X") {
+ isAllowedDigit = isHexDigit;
+ base = 16;
+
+ index += 1;
+ value += char;
+ }
+
+ // Base-8 numbers.
+ if (char === "o" || char === "O") {
+ isAllowedDigit = isOctalDigit;
+ base = 8;
+
+ if (!state.option.esnext) {
+ this.trigger("warning", {
+ code: "W119",
+ line: this.line,
+ character: this.char,
+ data: [ "Octal integer literal" ]
+ });
+ }
+
+ index += 1;
+ value += char;
+ }
+
+ // Base-2 numbers.
+ if (char === "b" || char === "B") {
+ isAllowedDigit = isBinaryDigit;
+ base = 2;
+
+ if (!state.option.esnext) {
+ this.trigger("warning", {
+ code: "W119",
+ line: this.line,
+ character: this.char,
+ data: [ "Binary integer literal" ]
+ });
+ }
+
+ index += 1;
+ value += char;
+ }
+
+ // Legacy base-8 numbers.
+ if (isOctalDigit(char)) {
+ isAllowedDigit = isOctalDigit;
+ base = 8;
+ isLegacy = true;
+ bad = false;
+
+ index += 1;
+ value += char;
+ }
+
+ // Decimal numbers that start with '0' such as '09' are illegal
+ // but we still parse them and return as malformed.
+
+ if (!isOctalDigit(char) && isDecimalDigit(char)) {
+ index += 1;
+ value += char;
+ }
+ }
+
+ while (index < length) {
+ char = this.peek(index);
+
+ if (isLegacy && isDecimalDigit(char)) {
+ // Numbers like '019' (note the 9) are not valid octals
+ // but we still parse them and mark as malformed.
+ bad = true;
+ } else if (!isAllowedDigit(char)) {
+ break;
+ }
+ value += char;
+ index += 1;
+ }
+
+ if (isAllowedDigit !== isDecimalDigit) {
+ if (!isLegacy && value.length <= 2) { // 0x
+ return {
+ type: Token.NumericLiteral,
+ value: value,
+ isMalformed: true
+ };
+ }
+
+ if (index < length) {
+ char = this.peek(index);
+ if (isIdentifierStart(char)) {
+ return null;
+ }
+ }
+
+ return {
+ type: Token.NumericLiteral,
+ value: value,
+ base: base,
+ isLegacy: isLegacy,
+ isMalformed: false
+ };
+ }
+ }
+
+ // Decimal digits.
+
+ if (char === ".") {
+ value += char;
+ index += 1;
+
+ while (index < length) {
+ char = this.peek(index);
+ if (!isDecimalDigit(char)) {
+ break;
+ }
+ value += char;
+ index += 1;
+ }
+ }
+
+ // Exponent part.
+
+ if (char === "e" || char === "E") {
+ value += char;
+ index += 1;
+ char = this.peek(index);
+
+ if (char === "+" || char === "-") {
+ value += this.peek(index);
+ index += 1;
+ }
+
+ char = this.peek(index);
+ if (isDecimalDigit(char)) {
+ value += char;
+ index += 1;
+
+ while (index < length) {
+ char = this.peek(index);
+ if (!isDecimalDigit(char)) {
+ break;
+ }
+ value += char;
+ index += 1;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ if (index < length) {
+ char = this.peek(index);
+ if (isIdentifierStart(char)) {
+ return null;
+ }
+ }
+
+ return {
+ type: Token.NumericLiteral,
+ value: value,
+ base: base,
+ isMalformed: !isFinite(value)
+ };
+ },
+
+
+ // Assumes previously parsed character was \ (=== '\\') and was not skipped.
+ scanEscapeSequence: function(checks) {
+ var allowNewLine = false;
+ var jump = 1;
+ this.skip();
+ var char = this.peek();
+
+ switch (char) {
+ case "'":
+ this.triggerAsync("warning", {
+ code: "W114",
+ line: this.line,
+ character: this.char,
+ data: [ "\\'" ]
+ }, checks, function() {return state.jsonMode; });
+ break;
+ case "b":
+ char = "\\b";
+ break;
+ case "f":
+ char = "\\f";
+ break;
+ case "n":
+ char = "\\n";
+ break;
+ case "r":
+ char = "\\r";
+ break;
+ case "t":
+ char = "\\t";
+ break;
+ case "0":
+ char = "\\0";
+
+ // Octal literals fail in strict mode.
+ // Check if the number is between 00 and 07.
+ var n = parseInt(this.peek(1), 10);
+ this.triggerAsync("warning", {
+ code: "W115",
+ line: this.line,
+ character: this.char
+ }, checks,
+ function() { return n >= 0 && n <= 7 && state.directive["use strict"]; });
+ break;
+ case "u":
+ char = String.fromCharCode(parseInt(this.input.substr(1, 4), 16));
+ jump = 5;
+ break;
+ case "v":
+ this.triggerAsync("warning", {
+ code: "W114",
+ line: this.line,
+ character: this.char,
+ data: [ "\\v" ]
+ }, checks, function() { return state.jsonMode; });
+
+ char = "\v";
+ break;
+ case "x":
+ var x = parseInt(this.input.substr(1, 2), 16);
+
+ this.triggerAsync("warning", {
+ code: "W114",
+ line: this.line,
+ character: this.char,
+ data: [ "\\x-" ]
+ }, checks, function() { return state.jsonMode; });
+
+ char = String.fromCharCode(x);
+ jump = 3;
+ break;
+ case "\\":
+ char = "\\\\";
+ break;
+ case "\"":
+ char = "\\\"";
+ break;
+ case "/":
+ break;
+ case "":
+ allowNewLine = true;
+ char = "";
+ break;
+ }
+
+ return { char: char, jump: jump, allowNewLine: allowNewLine };
+ },
+
+ /*
+ * Extract a template literal out of the next sequence of characters
+ * and/or lines or return 'null' if its not possible. Since template
+ * literals can span across multiple lines, this method has to move
+ * the char pointer.
+ */
+ scanTemplateLiteral: function(checks) {
+ var tokenType;
+ var value = '';
+ var ch;
+
+ // String must start with a backtick.
+ if (!this.inTemplate) {
+ if (!state.option.esnext || this.peek() !== "`") {
+ return null;
+ }
+ this.templateLine = this.line;
+ this.templateChar = this.char;
+ this.skip(1);
+ } else if (this.peek() !== '}') {
+ // If we're in a template, and we don't have a '}', lex something else instead.
+ return null;
+ }
+
+ while (this.peek() !== "`") {
+ while ((ch = this.peek()) === "") {
+ if (!this.nextLine()) {
+ // Unclosed template literal --- point to the starting line, or the EOF?
+ tokenType = this.inTemplate ? Token.TemplateHead : Token.TemplateMiddle;
+ this.inTemplate = false;
+ this.trigger("error", {
+ code: "E052",
+ line: this.templateLine,
+ character: this.templateChar
+ });
+ return {
+ type: tokenType,
+ value: value,
+ isUnclosed: true
+ };
+ }
+ }
+
+ if (ch === '$' && this.peek(1) === '{') {
+ value += '${';
+ tokenType = value.charAt(0) === '}' ? Token.TemplateMiddle : Token.TemplateHead;
+ // Either TokenHead or TokenMiddle --- depending on if the initial value
+ // is '}' or not.
+ this.skip(2);
+ this.inTemplate = true;
+ return {
+ type: tokenType,
+ value: value,
+ isUnclosed: false
+ };
+ } else if (ch === '\\') {
+ var escape = this.scanEscapeSequence(checks);
+ value += escape.char;
+ this.skip(escape.jump);
+ } else if (ch === '`') {
+ break;
+ } else {
+ // Otherwise, append the value and continue.
+ value += ch;
+ this.skip(1);
+ }
+ }
+
+ // Final value is either TokenTail or NoSubstititionTemplate --- essentially a string
+ tokenType = this.inTemplate ? Token.TemplateTail : Token.StringLiteral;
+ this.inTemplate = false;
+ this.skip(1);
+
+ return {
+ type: tokenType,
+ value: value,
+ isUnclosed: false,
+ quote: "`"
+ };
+ },
+
+ /*
+ * Extract a string out of the next sequence of characters and/or
+ * lines or return 'null' if its not possible. Since strings can
+ * span across multiple lines this method has to move the char
+ * pointer.
+ *
+ * This method recognizes pseudo-multiline JavaScript strings:
+ *
+ * var str = "hello\
+ * world";
+ */
+ scanStringLiteral: function(checks) {
+ /*jshint loopfunc:true */
+ var quote = this.peek();
+
+ // String must start with a quote.
+ if (quote !== "\"" && quote !== "'") {
+ return null;
+ }
+
+ // In JSON strings must always use double quotes.
+ this.triggerAsync("warning", {
+ code: "W108",
+ line: this.line,
+ character: this.char // +1?
+ }, checks, function() { return state.jsonMode && quote !== "\""; });
+
+ var value = "";
+ var startLine = this.line;
+ var startChar = this.char;
+ var allowNewLine = false;
+
+ this.skip();
+
+ while (this.peek() !== quote) {
+ while (this.peek() === "") { // End Of Line
+
+ // If an EOL is not preceded by a backslash, show a warning
+ // and proceed like it was a legit multi-line string where
+ // author simply forgot to escape the newline symbol.
+ //
+ // Another approach is to implicitly close a string on EOL
+ // but it generates too many false positives.
+
+ if (!allowNewLine) {
+ this.trigger("warning", {
+ code: "W112",
+ line: this.line,
+ character: this.char
+ });
+ } else {
+ allowNewLine = false;
+
+ // Otherwise show a warning if multistr option was not set.
+ // For JSON, show warning no matter what.
+
+ this.triggerAsync("warning", {
+ code: "W043",
+ line: this.line,
+ character: this.char
+ }, checks, function() { return !state.option.multistr; });
+
+ this.triggerAsync("warning", {
+ code: "W042",
+ line: this.line,
+ character: this.char
+ }, checks, function() { return state.jsonMode && state.option.multistr; });
+ }
+
+ // If we get an EOF inside of an unclosed string, show an
+ // error and implicitly close it at the EOF point.
+
+ if (!this.nextLine()) {
+ this.trigger("error", {
+ code: "E029",
+ line: startLine,
+ character: startChar
+ });
+
+ return {
+ type: Token.StringLiteral,
+ value: value,
+ isUnclosed: true,
+ quote: quote
+ };
+ }
+ }
+
+ allowNewLine = false;
+ var char = this.peek();
+ var jump = 1; // A length of a jump, after we're done
+ // parsing this character.
+
+ if (char < " ") {
+ // Warn about a control character in a string.
+ this.trigger("warning", {
+ code: "W113",
+ line: this.line,
+ character: this.char,
+ data: [ "" ]
+ });
+ }
+
+ // Special treatment for some escaped characters.
+ if (char === "\\") {
+ var parsed = this.scanEscapeSequence(checks);
+ char = parsed.char;
+ jump = parsed.jump;
+ allowNewLine = parsed.allowNewLine;
+ }
+
+ value += char;
+ this.skip(jump);
+ }
+
+ this.skip();
+ return {
+ type: Token.StringLiteral,
+ value: value,
+ isUnclosed: false,
+ quote: quote
+ };
+ },
+
+ /*
+ * Extract a regular expression out of the next sequence of
+ * characters and/or lines or return 'null' if its not possible.
+ *
+ * This method is platform dependent: it accepts almost any
+ * regular expression values but then tries to compile and run
+ * them using system's RegExp object. This means that there are
+ * rare edge cases where one JavaScript engine complains about
+ * your regular expression while others don't.
+ */
+ scanRegExp: function() {
+ var index = 0;
+ var length = this.input.length;
+ var char = this.peek();
+ var value = char;
+ var body = "";
+ var flags = [];
+ var malformed = false;
+ var isCharSet = false;
+ var terminated;
+
+ var scanUnexpectedChars = function() {
+ // Unexpected control character
+ if (char < " ") {
+ malformed = true;
+ this.trigger("warning", {
+ code: "W048",
+ line: this.line,
+ character: this.char
+ });
+ }
+
+ // Unexpected escaped character
+ if (char === "<") {
+ malformed = true;
+ this.trigger("warning", {
+ code: "W049",
+ line: this.line,
+ character: this.char,
+ data: [ char ]
+ });
+ }
+ }.bind(this);
+
+ // Regular expressions must start with '/'
+ if (!this.prereg || char !== "/") {
+ return null;
+ }
+
+ index += 1;
+ terminated = false;
+
+ // Try to get everything in between slashes. A couple of
+ // cases aside (see scanUnexpectedChars) we don't really
+ // care whether the resulting expression is valid or not.
+ // We will check that later using the RegExp object.
+
+ while (index < length) {
+ char = this.peek(index);
+ value += char;
+ body += char;
+
+ if (isCharSet) {
+ if (char === "]") {
+ if (this.peek(index - 1) !== "\\" || this.peek(index - 2) === "\\") {
+ isCharSet = false;
+ }
+ }
+
+ if (char === "\\") {
+ index += 1;
+ char = this.peek(index);
+ body += char;
+ value += char;
+
+ scanUnexpectedChars();
+ }
+
+ index += 1;
+ continue;
+ }
+
+ if (char === "\\") {
+ index += 1;
+ char = this.peek(index);
+ body += char;
+ value += char;
+
+ scanUnexpectedChars();
+
+ if (char === "/") {
+ index += 1;
+ continue;
+ }
+
+ if (char === "[") {
+ index += 1;
+ continue;
+ }
+ }
+
+ if (char === "[") {
+ isCharSet = true;
+ index += 1;
+ continue;
+ }
+
+ if (char === "/") {
+ body = body.substr(0, body.length - 1);
+ terminated = true;
+ index += 1;
+ break;
+ }
+
+ index += 1;
+ }
+
+ // A regular expression that was never closed is an
+ // error from which we cannot recover.
+
+ if (!terminated) {
+ this.trigger("error", {
+ code: "E015",
+ line: this.line,
+ character: this.from
+ });
+
+ return void this.trigger("fatal", {
+ line: this.line,
+ from: this.from
+ });
+ }
+
+ // Parse flags (if any).
+
+ while (index < length) {
+ char = this.peek(index);
+ if (!/[gim]/.test(char)) {
+ break;
+ }
+ flags.push(char);
+ value += char;
+ index += 1;
+ }
+
+ // Check regular expression for correctness.
+
+ try {
+ new RegExp(body, flags.join(""));
+ } catch (err) {
+ malformed = true;
+ this.trigger("error", {
+ code: "E016",
+ line: this.line,
+ character: this.char,
+ data: [ err.message ] // Platform dependent!
+ });
+ }
+
+ return {
+ type: Token.RegExp,
+ value: value,
+ flags: flags,
+ isMalformed: malformed
+ };
+ },
+
+ /*
+ * Scan for any occurrence of non-breaking spaces. Non-breaking spaces
+ * can be mistakenly typed on OS X with option-space. Non UTF-8 web
+ * pages with non-breaking pages produce syntax errors.
+ */
+ scanNonBreakingSpaces: function() {
+ return state.option.nonbsp ?
+ this.input.search(/(\u00A0)/) : -1;
+ },
+
+ /*
+ * Scan for characters that get silently deleted by one or more browsers.
+ */
+ scanUnsafeChars: function() {
+ return this.input.search(reg.unsafeChars);
+ },
+
+ /*
+ * Produce the next raw token or return 'null' if no tokens can be matched.
+ * This method skips over all space characters.
+ */
+ next: function(checks) {
+ this.from = this.char;
+
+ // Move to the next non-space character.
+ var start;
+ if (/\s/.test(this.peek())) {
+ start = this.char;
+
+ while (/\s/.test(this.peek())) {
+ this.from += 1;
+ this.skip();
+ }
+ }
+
+ // Methods that work with multi-line structures and move the
+ // character pointer.
+
+ var match = this.scanComments() ||
+ this.scanStringLiteral(checks) ||
+ this.scanTemplateLiteral(checks);
+
+ if (match) {
+ return match;
+ }
+
+ // Methods that don't move the character pointer.
+
+ match =
+ this.scanRegExp() ||
+ this.scanPunctuator() ||
+ this.scanKeyword() ||
+ this.scanIdentifier() ||
+ this.scanNumericLiteral();
+
+ if (match) {
+ this.skip(match.tokenLength || match.value.length);
+ return match;
+ }
+
+ // No token could be matched, give up.
+
+ return null;
+ },
+
+ /*
+ * Switch to the next line and reset all char pointers. Once
+ * switched, this method also checks for other minor warnings.
+ */
+ nextLine: function() {
+ var char;
+
+ if (this.line >= this.getLines().length) {
+ return false;
+ }
+
+ this.input = this.getLines()[this.line];
+ this.line += 1;
+ this.char = 1;
+ this.from = 1;
+
+ var inputTrimmed = this.input.trim();
+
+ var startsWith = function() {
+ return _.some(arguments, function(prefix) {
+ return inputTrimmed.indexOf(prefix) === 0;
+ });
+ };
+
+ var endsWith = function() {
+ return _.some(arguments, function(suffix) {
+ return inputTrimmed.indexOf(suffix, inputTrimmed.length - suffix.length) !== -1;
+ });
+ };
+
+ // If we are ignoring linter errors, replace the input with empty string
+ // if it doesn't already at least start or end a multi-line comment
+ if (state.ignoreLinterErrors === true) {
+ if (!startsWith("/*", "//") && !(this.inComment && endsWith("*/"))) {
+ this.input = "";
+ }
+ }
+
+ char = this.scanNonBreakingSpaces();
+ if (char >= 0) {
+ this.trigger("warning", { code: "W125", line: this.line, character: char + 1 });
+ }
+
+ this.input = this.input.replace(/\t/g, state.tab);
+ char = this.scanUnsafeChars();
+
+ if (char >= 0) {
+ this.trigger("warning", { code: "W100", line: this.line, character: char });
+ }
+
+ // If there is a limit on line length, warn when lines get too
+ // long.
+
+ if (state.option.maxlen && state.option.maxlen < this.input.length) {
+ var inComment = this.inComment ||
+ startsWith.call(inputTrimmed, "//") ||
+ startsWith.call(inputTrimmed, "/*");
+
+ var shouldTriggerError = !inComment || !reg.maxlenException.test(inputTrimmed);
+
+ if (shouldTriggerError) {
+ this.trigger("warning", { code: "W101", line: this.line, character: this.input.length });
+ }
+ }
+
+ return true;
+ },
+
+ /*
+ * This is simply a synonym for nextLine() method with a friendlier
+ * public name.
+ */
+ start: function() {
+ this.nextLine();
+ },
+
+ /*
+ * Produce the next token. This function is called by advance() to get
+ * the next token. It returns a token in a JSLint-compatible format.
+ */
+ token: function() {
+ /*jshint loopfunc:true */
+ var checks = asyncTrigger();
+ var token;
+
+
+ function isReserved(token, isProperty) {
+ if (!token.reserved) {
+ return false;
+ }
+ var meta = token.meta;
+
+ if (meta && meta.isFutureReservedWord && state.option.inES5()) {
+ // ES3 FutureReservedWord in an ES5 environment.
+ if (!meta.es5) {
+ return false;
+ }
+
+ // Some ES5 FutureReservedWord identifiers are active only
+ // within a strict mode environment.
+ if (meta.strictOnly) {
+ if (!state.option.strict && !state.directive["use strict"]) {
+ return false;
+ }
+ }
+
+ if (isProperty) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ // Produce a token object.
+ var create = function(type, value, isProperty, token) {
+ /*jshint validthis:true */
+ var obj;
+
+ if (type !== "(endline)" && type !== "(end)") {
+ this.prereg = false;
+ }
+
+ if (type === "(punctuator)") {
+ switch (value) {
+ case ".":
+ case ")":
+ case "~":
+ case "#":
+ case "]":
+ case "++":
+ case "--":
+ this.prereg = false;
+ break;
+ default:
+ this.prereg = true;
+ }
+
+ obj = Object.create(state.syntax[value] || state.syntax["(error)"]);
+ }
+
+ if (type === "(identifier)") {
+ if (value === "return" || value === "case" || value === "typeof") {
+ this.prereg = true;
+ }
+
+ if (_.has(state.syntax, value)) {
+ obj = Object.create(state.syntax[value] || state.syntax["(error)"]);
+
+ // If this can't be a reserved keyword, reset the object.
+ if (!isReserved(obj, isProperty && type === "(identifier)")) {
+ obj = null;
+ }
+ }
+ }
+
+ if (!obj) {
+ obj = Object.create(state.syntax[type]);
+ }
+
+ obj.identifier = (type === "(identifier)");
+ obj.type = obj.type || type;
+ obj.value = value;
+ obj.line = this.line;
+ obj.character = this.char;
+ obj.from = this.from;
+ if (obj.identifier && token) obj.raw_text = token.text || token.value;
+
+ if (isProperty && obj.identifier) {
+ obj.isProperty = isProperty;
+ }
+
+ obj.check = checks.check;
+
+ return obj;
+ }.bind(this);
+
+ for (;;) {
+ if (!this.input.length) {
+ return create(this.nextLine() ? "(endline)" : "(end)", "");
+ }
+
+ token = this.next(checks);
+
+ if (!token) {
+ if (this.input.length) {
+ // Unexpected character.
+ this.trigger("error", {
+ code: "E024",
+ line: this.line,
+ character: this.char,
+ data: [ this.peek() ]
+ });
+
+ this.input = "";
+ }
+
+ continue;
+ }
+
+ switch (token.type) {
+ case Token.StringLiteral:
+ this.triggerAsync("String", {
+ line: this.line,
+ char: this.char,
+ from: this.from,
+ value: token.value,
+ quote: token.quote
+ }, checks, function() { return true; });
+
+ return create("(string)", token.value);
+
+ case Token.TemplateHead:
+ this.trigger("TemplateHead", {
+ line: this.line,
+ char: this.char,
+ from: this.from,
+ value: token.value
+ });
+ return create("(template)", token.value);
+
+ case Token.TemplateMiddle:
+ this.trigger("TemplateMiddle", {
+ line: this.line,
+ char: this.char,
+ from: this.from,
+ value: token.value
+ });
+ return create("(template middle)", token.value);
+
+ case Token.TemplateTail:
+ this.trigger("TemplateTail", {
+ line: this.line,
+ char: this.char,
+ from: this.from,
+ value: token.value
+ });
+ return create("(template tail)", token.value);
+
+ case Token.Identifier:
+ this.trigger("Identifier", {
+ line: this.line,
+ char: this.char,
+ from: this.form,
+ name: token.value,
+ raw_name: token.text,
+ isProperty: state.tokens.curr.id === "."
+ });
+
+ /* falls through */
+ case Token.Keyword:
+ case Token.NullLiteral:
+ case Token.BooleanLiteral:
+ return create("(identifier)", token.value, state.tokens.curr.id === ".", token);
+
+ case Token.NumericLiteral:
+ if (token.isMalformed) {
+ this.trigger("warning", {
+ code: "W045",
+ line: this.line,
+ character: this.char,
+ data: [ token.value ]
+ });
+ }
+
+ this.triggerAsync("warning", {
+ code: "W114",
+ line: this.line,
+ character: this.char,
+ data: [ "0x-" ]
+ }, checks, function() { return token.base === 16 && state.jsonMode; });
+
+ this.triggerAsync("warning", {
+ code: "W115",
+ line: this.line,
+ character: this.char
+ }, checks, function() {
+ return state.directive["use strict"] && token.base === 8 && token.isLegacy;
+ });
+
+ this.trigger("Number", {
+ line: this.line,
+ char: this.char,
+ from: this.from,
+ value: token.value,
+ base: token.base,
+ isMalformed: token.malformed
+ });
+
+ return create("(number)", token.value);
+
+ case Token.RegExp:
+ return create("(regexp)", token.value);
+
+ case Token.Comment:
+ state.tokens.curr.comment = true;
+
+ if (token.isSpecial) {
+ return {
+ id: '(comment)',
+ value: token.value,
+ body: token.body,
+ type: token.commentType,
+ isSpecial: token.isSpecial,
+ line: this.line,
+ character: this.char,
+ from: this.from
+ };
+ }
+
+ break;
+
+ case "":
+ break;
+
+ default:
+ return create("(punctuator)", token.value);
+ }
+ }
+ }
+};
+
+exports.Lexer = Lexer;
+
+},{"../data/ascii-identifier-data.js":1,"../data/non-ascii-identifier-part-only.js":2,"../data/non-ascii-identifier-start.js":3,"./reg.js":17,"./state.js":18,"events":5,"underscore":12}],14:[function(require,module,exports){
+"use strict";
+
+var _ = require("underscore");
+
+var errors = {
+ // JSHint options
+ E001: "Bad option: '{a}'.",
+ E002: "Bad option value.",
+
+ // JSHint input
+ E003: "Expected a JSON value.",
+ E004: "Input is neither a string nor an array of strings.",
+ E005: "Input is empty.",
+ E006: "Unexpected early end of program.",
+
+ // Strict mode
+ E007: "Missing \"use strict\" statement.",
+ E008: "Strict violation.",
+ E009: "Option 'validthis' can't be used in a global scope.",
+ E010: "'with' is not allowed in strict mode.",
+
+ // Constants
+ E011: "const '{a}' has already been declared.",
+ E012: "const '{a}' is initialized to 'undefined'.",
+ E013: "Attempting to override '{a}' which is a constant.",
+
+ // Regular expressions
+ E014: "A regular expression literal can be confused with '/='.",
+ E015: "Unclosed regular expression.",
+ E016: "Invalid regular expression.",
+
+ // Tokens
+ E017: "Unclosed comment.",
+ E018: "Unbegun comment.",
+ E019: "Unmatched '{a}'.",
+ E020: "Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",
+ E021: "Expected '{a}' and instead saw '{b}'.",
+ E022: "Line breaking error '{a}'.",
+ E023: "Missing '{a}'.",
+ E024: "Unexpected '{a}'.",
+ E025: "Missing ':' on a case clause.",
+ E026: "Missing '}' to match '{' from line {a}.",
+ E027: "Missing ']' to match '[' from line {a}.",
+ E028: "Illegal comma.",
+ E029: "Unclosed string.",
+
+ // Everything else
+ E030: "Expected an identifier and instead saw '{a}'.",
+ E031: "Bad assignment.", // FIXME: Rephrase
+ E032: "Expected a small integer or 'false' and instead saw '{a}'.",
+ E033: "Expected an operator and instead saw '{a}'.",
+ E034: "get/set are ES5 features.",
+ E035: "Missing property name.",
+ E036: "Expected to see a statement and instead saw a block.",
+ E037: null,
+ E038: null,
+ E039: "Function declarations are not invocable. Wrap the whole function invocation in parens.",
+ E040: "Each value should have its own case label.",
+ E041: "Unrecoverable syntax error.",
+ E042: "Stopping.",
+ E043: "Too many errors.",
+ E044: null,
+ E045: "Invalid for each loop.",
+ E046: "A yield statement shall be within a generator function (with syntax: `function*`)",
+ E047: null, // Vacant
+ E048: "Let declaration not directly within block.",
+ E049: "A {a} cannot be named '{b}'.",
+ E050: "Mozilla requires the yield expression to be parenthesized here.",
+ E051: "Regular parameters cannot come after default parameters.",
+ E052: "Unclosed template literal.",
+ E053: "Export declaration must be in global scope.",
+ E054: "Class properties must be methods. Expected '(' but instead saw '{a}'."
+};
+
+var warnings = {
+ W001: "'hasOwnProperty' is a really bad name.",
+ W002: "Value of '{a}' may be overwritten in IE 8 and earlier.",
+ W003: "'{a}' was used before it was defined.",
+ W004: "'{a}' is already defined.",
+ W005: "A dot following a number can be confused with a decimal point.",
+ W006: "Confusing minuses.",
+ W007: "Confusing plusses.",
+ W008: "A leading decimal point can be confused with a dot: '{a}'.",
+ W009: "The array literal notation [] is preferable.",
+ W010: "The object literal notation {} is preferable.",
+ W011: null,
+ W012: null,
+ W013: null,
+ W014: "Bad line breaking before '{a}'.",
+ W015: null,
+ W016: "Unexpected use of '{a}'.",
+ W017: "Bad operand.",
+ W018: "Confusing use of '{a}'.",
+ W019: "Use the isNaN function to compare with NaN.",
+ W020: "Read only.",
+ W021: "'{a}' is a function.",
+ W022: "Do not assign to the exception parameter.",
+ W023: "Expected an identifier in an assignment and instead saw a function invocation.",
+ W024: "Expected an identifier and instead saw '{a}' (a reserved word).",
+ W025: "Missing name in function declaration.",
+ W026: "Inner functions should be listed at the top of the outer function.",
+ W027: "Unreachable '{a}' after '{b}'.",
+ W028: "Label '{a}' on {b} statement.",
+ W030: "Expected an assignment or function call and instead saw an expression.",
+ W031: "Do not use 'new' for side effects.",
+ W032: "Unnecessary semicolon.",
+ W033: "Missing semicolon.",
+ W034: "Unnecessary directive \"{a}\".",
+ W035: "Empty block.",
+ W036: "Unexpected /*member '{a}'.",
+ W037: "'{a}' is a statement label.",
+ W038: "'{a}' used out of scope.",
+ W039: "'{a}' is not allowed.",
+ W040: "Possible strict violation.",
+ W041: "Use '{a}' to compare with '{b}'.",
+ W042: "Avoid EOL escaping.",
+ W043: "Bad escaping of EOL. Use option multistr if needed.",
+ W044: "Bad or unnecessary escaping.", /* TODO(caitp): remove W044 */
+ W045: "Bad number '{a}'.",
+ W046: "Don't use extra leading zeros '{a}'.",
+ W047: "A trailing decimal point can be confused with a dot: '{a}'.",
+ W048: "Unexpected control character in regular expression.",
+ W049: "Unexpected escaped character '{a}' in regular expression.",
+ W050: "JavaScript URL.",
+ W051: "Variables should not be deleted.",
+ W052: "Unexpected '{a}'.",
+ W053: "Do not use {a} as a constructor.",
+ W054: "The Function constructor is a form of eval.",
+ W055: "A constructor name should start with an uppercase letter.",
+ W056: "Bad constructor.",
+ W057: "Weird construction. Is 'new' necessary?",
+ W058: "Missing '()' invoking a constructor.",
+ W059: "Avoid arguments.{a}.",
+ W060: "document.write can be a form of eval.",
+ W061: "eval can be harmful.",
+ W062: "Wrap an immediate function invocation in parens " +
+ "to assist the reader in understanding that the expression " +
+ "is the result of a function, and not the function itself.",
+ W063: "Math is not a function.",
+ W064: "Missing 'new' prefix when invoking a constructor.",
+ W065: "Missing radix parameter.",
+ W066: "Implied eval. Consider passing a function instead of a string.",
+ W067: "Bad invocation.",
+ W068: "Wrapping non-IIFE function literals in parens is unnecessary.",
+ W069: "['{a}'] is better written in dot notation.",
+ W070: "Extra comma. (it breaks older versions of IE)",
+ W071: "This function has too many statements. ({a})",
+ W072: "This function has too many parameters. ({a})",
+ W073: "Blocks are nested too deeply. ({a})",
+ W074: "This function's cyclomatic complexity is too high. ({a})",
+ W075: "Duplicate {a} '{b}'.",
+ W076: "Unexpected parameter '{a}' in get {b} function.",
+ W077: "Expected a single parameter in set {a} function.",
+ W078: "Setter is defined without getter.",
+ W079: "Redefinition of '{a}'.",
+ W080: "It's not necessary to initialize '{a}' to 'undefined'.",
+ W081: null,
+ W082: "Function declarations should not be placed in blocks. " +
+ "Use a function expression or move the statement to the top of " +
+ "the outer function.",
+ W083: "Don't make functions within a loop.",
+ W084: "Expected a conditional expression and instead saw an assignment.",
+ W085: "Don't use 'with'.",
+ W086: "Expected a 'break' statement before '{a}'.",
+ W087: "Forgotten 'debugger' statement?",
+ W088: "Creating global 'for' variable. Should be 'for (var {a} ...'.",
+ W089: "The body of a for in should be wrapped in an if statement to filter " +
+ "unwanted properties from the prototype.",
+ W090: "'{a}' is not a statement label.",
+ W091: "'{a}' is out of scope.",
+ W093: "Did you mean to return a conditional instead of an assignment?",
+ W094: "Unexpected comma.",
+ W095: "Expected a string and instead saw {a}.",
+ W096: "The '{a}' key may produce unexpected results.",
+ W097: "Use the function form of \"use strict\".",
+ W098: "'{a}' is defined but never used.",
+ W099: null,
+ W100: "This character may get silently deleted by one or more browsers.",
+ W101: "Line is too long.",
+ W102: null,
+ W103: "The '{a}' property is deprecated.",
+ W104: "'{a}' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).",
+ W105: "Unexpected {a} in '{b}'.",
+ W106: "Identifier '{a}' is not in camel case.",
+ W107: "Script URL.",
+ W108: "Strings must use doublequote.",
+ W109: "Strings must use singlequote.",
+ W110: "Mixed double and single quotes.",
+ W112: "Unclosed string.",
+ W113: "Control character in string: {a}.",
+ W114: "Avoid {a}.",
+ W115: "Octal literals are not allowed in strict mode.",
+ W116: "Expected '{a}' and instead saw '{b}'.",
+ W117: "'{a}' is not defined.",
+ W118: "'{a}' is only available in Mozilla JavaScript extensions (use moz option).",
+ W119: "'{a}' is only available in ES6 (use esnext option).",
+ W120: "You might be leaking a variable ({a}) here.",
+ W121: "Extending prototype of native object: '{a}'.",
+ W122: "Invalid typeof value '{a}'",
+ W123: "'{a}' is already defined in outer scope.",
+ W124: "A generator function shall contain a yield statement.",
+ W125: "This line contains non-breaking spaces: http://jshint.com/doc/options/#nonbsp",
+ W126: "Unnecessary grouping operator.",
+ W127: "Unexpected use of a comma operator.",
+ W128: "Empty array elements require elision=true."
+};
+
+var info = {
+ I001: "Comma warnings can be turned off with 'laxcomma'.",
+ I002: null,
+ I003: "ES5 option is now set per default"
+};
+
+exports.errors = {};
+exports.warnings = {};
+exports.info = {};
+
+_.each(errors, function(desc, code) {
+ exports.errors[code] = { code: code, desc: desc };
+});
+
+_.each(warnings, function(desc, code) {
+ exports.warnings[code] = { code: code, desc: desc };
+});
+
+_.each(info, function(desc, code) {
+ exports.info[code] = { code: code, desc: desc };
+});
+
+},{"underscore":12}],15:[function(require,module,exports){
+"use strict";
+
+function NameStack() {
+ this._stack = [];
+}
+
+Object.defineProperty(NameStack.prototype, "length", {
+ get: function() {
+ return this._stack.length;
+ }
+});
+
+/**
+ * Create a new entry in the stack. Useful for tracking names across
+ * expressions.
+ */
+NameStack.prototype.push = function() {
+ this._stack.push(null);
+};
+
+/**
+ * Discard the most recently-created name on the stack.
+ */
+NameStack.prototype.pop = function() {
+ this._stack.pop();
+};
+
+/**
+ * Update the most recent name on the top of the stack.
+ *
+ * @param {object} token The token to consider as the source for the most
+ * recent name.
+ */
+NameStack.prototype.set = function(token) {
+ this._stack[this.length - 1] = token;
+};
+
+/**
+ * Generate a string representation of the most recent name.
+ *
+ * @returns {string}
+ */
+NameStack.prototype.infer = function() {
+ var nameToken = this._stack[this.length - 1];
+ var prefix = "";
+ var type;
+
+ // During expected operation, the topmost entry on the stack will only
+ // reflect the current function's name when the function is declared without
+ // the `function` keyword (i.e. for in-line accessor methods). In other
+ // cases, the `function` expression itself will introduce an empty entry on
+ // the top of the stack, and this should be ignored.
+ if (!nameToken || nameToken.type === "class") {
+ nameToken = this._stack[this.length - 2];
+ }
+
+ if (!nameToken) {
+ return "(empty)";
+ }
+
+ type = nameToken.type;
+
+ if (type !== "(string)" && type !== "(number)" && type !== "(identifier)" && type !== "default") {
+ return "(expression)";
+ }
+
+ if (nameToken.accessorType) {
+ prefix = nameToken.accessorType + " ";
+ }
+
+ return prefix + nameToken.value;
+};
+
+module.exports = NameStack;
+
+},{}],16:[function(require,module,exports){
+"use strict";
+
+// These are the JSHint boolean options.
+exports.bool = {
+ enforcing: {
+
+ /**
+ * This option prohibits the use of bitwise operators such as `^` (XOR),
+ * `|` (OR) and others. Bitwise operators are very rare in JavaScript
+ * programs and quite often `&` is simply a mistyped `&&`.
+ */
+ bitwise : true,
+
+ /**
+ *
+ * This options prohibits overwriting prototypes of native objects such as
+ * `Array`, `Date` and so on.
+ *
+ * // jshint freeze:true
+ * Array.prototype.count = function (value) { return 4; };
+ * // -> Warning: Extending prototype of native object: 'Array'.
+ */
+ freeze : true,
+
+ /**
+ * This option allows you to force all variable names to use either
+ * camelCase style or UPPER_CASE with underscores.
+ */
+ camelcase : true,
+
+ /**
+ * This option requires you to always put curly braces around blocks in
+ * loops and conditionals. JavaScript allows you to omit curly braces when
+ * the block consists of only one statement, for example:
+ *
+ * while (day)
+ * shuffle();
+ *
+ * However, in some circumstances, it can lead to bugs (you'd think that
+ * `sleep()` is a part of the loop while in reality it is not):
+ *
+ * while (day)
+ * shuffle();
+ * sleep();
+ */
+ curly : true,
+
+ /**
+ * This options prohibits the use of `==` and `!=` in favor of `===` and
+ * `!==`. The former try to coerce values before comparing them which can
+ * lead to some unexpected results. The latter don't do any coercion so
+ * they are generally safer. If you would like to learn more about type
+ * coercion in JavaScript, we recommend [Truth, Equality and
+ * JavaScript](http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/)
+ * by Angus Croll.
+ */
+ eqeqeq : true,
+
+ /**
+ * This option suppresses warnings about invalid `typeof` operator values.
+ * This operator has only [a limited set of possible return
+ * values](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof).
+ * By default, JSHint warns when you compare its result with an invalid
+ * value which often can be a typo.
+ *
+ * // 'fuction' instead of 'function'
+ * if (typeof a == "fuction") { // Invalid typeof value 'fuction'
+ * // ...
+ * }
+ *
+ * Do not use this option unless you're absolutely sure you don't want
+ * these checks.
+ */
+ notypeof : true,
+
+ /**
+ * This option tells JSHint that your code needs to adhere to ECMAScript 3
+ * specification. Use this option if you need your program to be executable
+ * in older browsers—such as Internet Explorer 6/7/8/9—and other legacy
+ * JavaScript environments.
+ */
+ es3 : true,
+
+ /**
+ * This option enables syntax first defined in [the ECMAScript 5.1
+ * specification](http://es5.github.io/). This includes allowing reserved
+ * keywords as object properties.
+ */
+ es5 : true,
+
+ /**
+ * This option requires all `for in` loops to filter object's items. The
+ * for in statement allows for looping through the names of all of the
+ * properties of an object including those inherited through the prototype
+ * chain. This behavior can lead to unexpected items in your object so it
+ * is generally safer to always filter inherited properties out as shown in
+ * the example:
+ *
+ * for (key in obj) {
+ * if (obj.hasOwnProperty(key)) {
+ * // We are sure that obj[key] belongs to the object and was not inherited.
+ * }
+ * }
+ *
+ * For more in-depth understanding of `for in` loops in JavaScript, read
+ * [Exploring JavaScript for-in
+ * loops](http://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/)
+ * by Angus Croll.
+ */
+ forin : true,
+
+ /**
+ * This option suppresses warnings about declaring variables inside of
+ * control
+ * structures while accessing them later from the outside. Even though
+ * JavaScript has only two real scopes—global and function—such practice
+ * leads to confusion among people new to the language and hard-to-debug
+ * bugs. This is why, by default, JSHint warns about variables that are
+ * used outside of their intended scope.
+ *
+ * function test() {
+ * if (true) {
+ * var x = 0;
+ * }
+ *
+ * x += 1; // Default: 'x' used out of scope.
+ * // No warning when funcscope:true
+ * }
+ */
+ funcscope : true,
+
+ /**
+ * This option suppresses warnings about the use of global strict mode.
+ * Global strict mode can break third-party widgets so it is not
+ * recommended.
+ *
+ * For more info about strict mode see the `strict` option.
+ */
+ globalstrict: true,
+
+ /**
+ * This option prohibits the use of immediate function invocations without
+ * wrapping them in parentheses. Wrapping parentheses assists readers of
+ * your code in understanding that the expression is the result of a
+ * function, and not the function itself.
+ */
+ immed : true,
+
+ /**
+ * This option suppresses warnings about the `__iterator__` property. This
+ * property is not supported by all browsers so use it carefully.
+ */
+ iterator : true,
+
+ /**
+ * This option requires you to capitalize names of constructor functions.
+ * Capitalizing functions that are intended to be used with `new` operator
+ * is just a convention that helps programmers to visually distinguish
+ * constructor functions from other types of functions to help spot
+ * mistakes when using `this`.
+ *
+ * Not doing so won't break your code in any browsers or environments but
+ * it will be a bit harder to figure out—by reading the code—if the
+ * function was supposed to be used with or without new. And this is
+ * important because when the function that was intended to be used with
+ * `new` is used without it, `this` will point to the global object instead
+ * of a new object.
+ */
+ newcap : true,
+
+ /**
+ * This option prohibits the use of `arguments.caller` and
+ * `arguments.callee`. Both `.caller` and `.callee` make quite a few
+ * optimizations impossible so they were deprecated in future versions of
+ * JavaScript. In fact, ECMAScript 5 forbids the use of `arguments.callee`
+ * in strict mode.
+ */
+ noarg : true,
+
+ /**
+ * This option prohibits the use of the comma operator. When misused, the
+ * comma operator can obscure the value of a statement and promote
+ * incorrect code.
+ */
+ nocomma : true,
+
+ /**
+ * This option warns when you have an empty block in your code. JSLint was
+ * originally warning for all empty blocks and we simply made it optional.
+ * There were no studies reporting that empty blocks in JavaScript break
+ * your code in any way.
+ */
+ noempty : true,
+
+ /**
+ * This option warns about "non-breaking whitespace" characters. These
+ * characters can be entered with option-space on Mac computers and have a
+ * potential of breaking non-UTF8 web pages.
+ */
+ nonbsp : true,
+
+ /**
+ * This option prohibits the use of constructor functions for side-effects.
+ * Some people like to call constructor functions without assigning its
+ * result to any variable:
+ *
+ * new MyConstructor();
+ *
+ * There is no advantage in this approach over simply calling
+ * `MyConstructor` since the object that the operator `new` creates isn't
+ * used anywhere so you should generally avoid constructors like this one.
+ */
+ nonew : true,
+
+ /**
+ * This option prohibits the use of explicitly undeclared variables. This
+ * option is very useful for spotting leaking and mistyped variables.
+ *
+ * // jshint undef:true
+ *
+ * function test() {
+ * var myVar = 'Hello, World';
+ * console.log(myvar); // Oops, typoed here. JSHint with undef will complain
+ * }
+ *
+ * If your variable is defined in another file, you can use the `global`
+ * directive to tell JSHint about it.
+ */
+ undef : true,
+
+ /**
+ * This option prohibits the use of the grouping operator when it is not
+ * strictly required. Such usage commonly reflects a misunderstanding of
+ * unary operators, for example:
+ *
+ * // jshint singleGroups: true
+ *
+ * delete(obj.attr); // Warning: Unnecessary grouping operator.
+ */
+ singleGroups: false,
+
+ /**
+ * This option is a short hand for the most strict JSHint configuration. It
+ * enables all enforcing options and disables all relaxing options.
+ */
+ enforceall : false
+ },
+ relaxing: {
+
+ /**
+ * This option suppresses warnings about missing semicolons. There is a lot
+ * of FUD about semicolon spread by quite a few people in the community.
+ * The common myths are that semicolons are required all the time (they are
+ * not) and that they are unreliable. JavaScript has rules about semicolons
+ * which are followed by *all* browsers so it is up to you to decide
+ * whether you should or should not use semicolons in your code.
+ *
+ * For more information about semicolons in JavaScript read [An Open Letter
+ * to JavaScript Leaders Regarding
+ * Semicolons](http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding)
+ * by Isaac Schlueter and [JavaScript Semicolon
+ * Insertion](http://inimino.org/~inimino/blog/javascript_semicolons).
+ */
+ asi : true,
+
+ /**
+ * This option suppresses warnings about multi-line strings. Multi-line
+ * strings can be dangerous in JavaScript because all hell breaks loose if
+ * you accidentally put a whitespace in between the escape character (`\`)
+ * and a new line.
+ *
+ * Note that even though this option allows correct multi-line strings, it
+ * still warns about multi-line strings without escape characters or with
+ * anything in between the escape character and a whitespace.
+ *
+ * // jshint multistr:true
+ *
+ * var text = "Hello\
+ * World"; // All good.
+ *
+ * text = "Hello
+ * World"; // Warning, no escape character.
+ *
+ * text = "Hello\
+ * World"; // Warning, there is a space after \
+ */
+ multistr : true,
+
+ /**
+ * This option suppresses warnings about the `debugger` statements in your
+ * code.
+ */
+ debug : true,
+
+ /**
+ * This option suppresses warnings about the use of assignments in cases
+ * where comparisons are expected. More often than not, code like `if (a =
+ * 10) {}` is a typo. However, it can be useful in cases like this one:
+ *
+ * for (var i = 0, person; person = people[i]; i++) {}
+ *
+ * You can silence this error on a per-use basis by surrounding the assignment
+ * with parenthesis, such as:
+ *
+ * for (var i = 0, person; (person = people[i]); i++) {}
+ */
+ boss : true,
+
+ /**
+ * This option defines globals available when your core is running inside
+ * of the PhantomJS runtime environment. [PhantomJS](http://phantomjs.org/)
+ * is a headless WebKit scriptable with a JavaScript API. It has fast and
+ * native support for various web standards: DOM handling, CSS selector,
+ * JSON, Canvas, and SVG.
+ */
+ phantom : true,
+
+ /**
+ * This option suppresses warnings about the use of `eval`. The use of
+ * `eval` is discouraged because it can make your code vulnerable to
+ * various injection attacks and it makes it hard for JavaScript
+ * interpreter to do certain optimizations.
+ */
+ evil : true,
+
+ /**
+ * This option prohibits the use of unary increment and decrement
+ * operators. Some people think that `++` and `--` reduces the quality of
+ * their coding styles and there are programming languages—such as
+ * Python—that go completely without these operators.
+ */
+ plusplus : true,
+
+ /**
+ * This option suppresses warnings about the `__proto__` property.
+ */
+ proto : true,
+
+ /**
+ * This option suppresses warnings about the use of script-targeted
+ * URLs—such as `javascript:...`.
+ */
+ scripturl : true,
+
+ /**
+ * This option requires all functions to run in ECMAScript 5's strict mode.
+ * [Strict mode](https://developer.mozilla.org/en/JavaScript/Strict_mode)
+ * is a way to opt in to a restricted variant of JavaScript. Strict mode
+ * eliminates some JavaScript pitfalls that didn't cause errors by changing
+ * them to produce errors. It also fixes mistakes that made it difficult
+ * for the JavaScript engines to perform certain optimizations.
+ *
+ * *Note:* This option enables strict mode for function scope only. It
+ * *prohibits* the global scoped strict mode because it might break
+ * third-party widgets on your page. If you really want to use global
+ * strict mode, see the *globalstrict* option.
+ */
+ strict : true,
+
+ /**
+ * This option suppresses warnings about using `[]` notation when it can be
+ * expressed in dot notation: `person['name']` vs. `person.name`.
+ */
+ sub : true,
+
+ /**
+ * This option suppresses warnings about "weird" constructions like
+ * `new function () { ... }` and `new Object;`. Such constructions are
+ * sometimes used to produce singletons in JavaScript:
+ *
+ * var singleton = new function() {
+ * var privateVar;
+ *
+ * this.publicMethod = function () {}
+ * this.publicMethod2 = function () {}
+ * };
+ */
+ supernew : true,
+
+ /**
+ * This option suppresses most of the warnings about possibly unsafe line
+ * breakings in your code. It doesn't suppress warnings about comma-first
+ * coding style. To suppress those you have to use `laxcomma` (see below).
+ */
+ laxbreak : true,
+
+ /**
+ * This option suppresses warnings about comma-first coding style:
+ *
+ * var obj = {
+ * name: 'Anton'
+ * , handle: 'valueof'
+ * , role: 'SW Engineer'
+ * };
+ */
+ laxcomma : true,
+
+ /**
+ * This option suppresses warnings about possible strict violations when
+ * the code is running in strict mode and you use `this` in a
+ * non-constructor function. You should use this option—in a function scope
+ * only—when you are positive that your use of `this` is valid in the
+ * strict mode (for example, if you call your function using
+ * `Function.call`).
+ *
+ * **Note:** This option can be used only inside of a function scope.
+ * JSHint will fail with an error if you will try to set this option
+ * globally.
+ */
+ validthis : true,
+
+ /**
+ * This option suppresses warnings about the use of the `with` statement.
+ * The semantics of the `with` statement can cause confusion among
+ * developers and accidental definition of global variables.
+ *
+ * More info:
+ *
+ * * [with Statement Considered
+ * Harmful](http://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/)
+ */
+ withstmt : true,
+
+ /**
+ * This options tells JSHint that your code uses Mozilla JavaScript
+ * extensions. Unless you develop specifically for the Firefox web browser
+ * you don't need this option.
+ *
+ * More info:
+ *
+ * * [New in JavaScript
+ * 1.7](https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.7)
+ */
+ moz : true,
+
+ /**
+ * This option suppresses warnings about generator functions with no
+ * `yield` statement in them.
+ */
+ noyield : true,
+
+ /**
+ * This option suppresses warnings about `== null` comparisons. Such
+ * comparisons are often useful when you want to check if a variable is
+ * `null` or `undefined`.
+ */
+ eqnull : true,
+
+ /**
+ * This option suppresses warnings about missing semicolons, but only when
+ * the semicolon is omitted for the last statement in a one-line block:
+ *
+ * var name = (function() { return 'Anton' }());
+ *
+ * This is a very niche use case that is useful only when you use automatic
+ * JavaScript code generators.
+ */
+ lastsemic : true,
+
+ /**
+ * This option suppresses warnings about functions inside of loops.
+ * Defining functions inside of loops can lead to bugs such as this one:
+ *
+ * var nums = [];
+ *
+ * for (var i = 0; i < 10; i++) {
+ * nums[i] = function (j) {
+ * return i + j;
+ * };
+ * }
+ *
+ * nums[0](2); // Prints 12 instead of 2
+ *
+ * To fix the code above you need to copy the value of `i`:
+ *
+ * var nums = [];
+ *
+ * for (var i = 0; i < 10; i++) {
+ * (function (i) {
+ * nums[i] = function (j) {
+ * return i + j;
+ * };
+ * }(i));
+ * }
+ */
+ loopfunc : true,
+
+ /**
+ * This option suppresses warnings about the use of expressions where
+ * normally you would expect to see assignments or function calls. Most of
+ * the time, such code is a typo. However, it is not forbidden by the spec
+ * and that's why this warning is optional.
+ */
+ expr : true,
+
+ /**
+ * This option tells JSHint that your code uses ECMAScript 6 specific
+ * syntax. Note that these features are not finalized yet and not all
+ * browsers implement them.
+ *
+ * More info:
+ *
+ * * [Draft Specification for ES.next (ECMA-262 Ed.
+ * 6)](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts)
+ */
+ esnext : true,
+
+ /**
+ * This option tells JSHint that your code uses ES3 array elision elements,
+ * or empty elements (for example, `[1, , , 4, , , 7]`).
+ */
+ elision : true,
+ },
+
+ // Third party globals
+ environments: {
+
+ /**
+ * This option defines globals exposed by the
+ * [MooTools](http://mootools.net/) JavaScript framework.
+ */
+ mootools : true,
+
+ /**
+ * This option defines globals exposed by
+ * [CouchDB](http://couchdb.apache.org/). CouchDB is a document-oriented
+ * database that can be queried and indexed in a MapReduce fashion using
+ * JavaScript.
+ */
+ couch : true,
+
+ /**
+ * This option defines globals exposed by [the Jasmine unit testing
+ * framework](https://jasmine.github.io/).
+ */
+ jasmine : true,
+
+ /**
+ * This option defines globals exposed by the [jQuery](http://jquery.com/)
+ * JavaScript library.
+ */
+ jquery : true,
+
+ /**
+ * This option defines globals available when your code is running inside
+ * of the Node runtime environment. [Node.js](http://nodejs.org/) is a
+ * server-side JavaScript environment that uses an asynchronous
+ * event-driven model. This option also skips some warnings that make sense
+ * in the browser environments but don't make sense in Node such as
+ * file-level `use strict` pragmas and `console.log` statements.
+ */
+ node : true,
+
+ /**
+ * This option defines globals exposed by [the QUnit unit testing
+ * framework](http://qunitjs.com/).
+ */
+ qunit : true,
+
+ /**
+ * This option defines globals available when your code is running inside
+ * of the Rhino runtime environment. [Rhino](http://www.mozilla.org/rhino/)
+ * is an open-source implementation of JavaScript written entirely in Java.
+ */
+ rhino : true,
+
+ /**
+ * This option defines globals exposed by [the ShellJS
+ * library](http://documentup.com/arturadib/shelljs).
+ */
+ shelljs : true,
+
+ /**
+ * This option defines globals exposed by the
+ * [Prototype](http://www.prototypejs.org/) JavaScript framework.
+ */
+ prototypejs : true,
+
+ /**
+ * This option defines globals exposed by the [YUI](http://yuilibrary.com/)
+ * JavaScript framework.
+ */
+ yui : true,
+
+ /**
+ * This option defines globals exposed by the "BDD" and "TDD" UIs of the
+ * [Mocha unit testing framework](http://mochajs.org/).
+ */
+ mocha : true,
+
+ /**
+ * This option defines globals available when your code is running as a
+ * script for the [Windows Script
+ * Host](http://en.wikipedia.org/wiki/Windows_Script_Host).
+ */
+ wsh : true,
+
+ /**
+ * This option defines globals available when your code is running inside
+ * of a Web Worker. [Web
+ * Workers](https://developer.mozilla.org/en/Using_web_workers) provide a
+ * simple means for web content to run scripts in background threads.
+ */
+ worker : true,
+
+ /**
+ * This option defines non-standard but widely adopted globals such as
+ * `escape` and `unescape`.
+ */
+ nonstandard : true,
+
+ /**
+ * This option defines globals exposed by modern browsers: all the way from
+ * good old `document` and `navigator` to the HTML5 `FileReader` and other
+ * new developments in the browser world.
+ *
+ * **Note:** This option doesn't expose variables like `alert` or
+ * `console`. See option `devel` for more information.
+ */
+ browser : true,
+
+ /**
+ * This option defines globals available when using [the Browserify
+ * tool](http://browserify.org/) to build a project.
+ */
+ browserify : true,
+
+ /**
+ * This option defines globals that are usually used for logging poor-man's
+ * debugging: `console`, `alert`, etc. It is usually a good idea to not
+ * ship them in production because, for example, `console.log` breaks in
+ * legacy versions of Internet Explorer.
+ */
+ devel : true,
+
+ /**
+ * This option defines globals exposed by the [Dojo
+ * Toolkit](http://dojotoolkit.org/).
+ */
+ dojo : true,
+
+ /**
+ * This option defines globals for typed array constructors.
+ *
+ * More info:
+ *
+ * * [JavaScript typed
+ * arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays)
+ */
+ typed : true
+ },
+
+ // Obsolete options
+ obsolete: {
+ onecase : true, // if one case switch statements should be allowed
+ regexp : true, // if the . should not be allowed in regexp literals
+ regexdash : true // if unescaped first/last dash (-) inside brackets
+ // should be tolerated
+ }
+};
+
+// These are the JSHint options that can take any value
+// (we use this object to detect invalid options)
+exports.val = {
+
+ /**
+ * This option lets you set the maximum length of a line.
+ */
+ maxlen : false,
+
+ /**
+ * This option sets a specific tab width for your code.
+ */
+ indent : false,
+
+ /**
+ * This options allows you to set the maximum amount of warnings JSHint will
+ * produce before giving up. Default is 50.
+ */
+ maxerr : false,
+
+ predef : false, // predef is deprecated and being replaced by globals
+
+ /**
+ * This option can be used to specify a white list of global variables that
+ * are not formally defined in the source code. This is most useful when
+ * combined with the `undef` option in order to suppress warnings for
+ * project-specific global variables.
+ *
+ * Setting an entry to `true` enables reading and writing to that variable.
+ * Setting it to `false` will trigger JSHint to consider that variable
+ * read-only.
+ *
+ * See also the "environment" options: a set of options to be used as short
+ * hand for enabling global variables defined in common JavaScript
+ * environments.
+ */
+ globals : false,
+
+ /**
+ * This option enforces the consistency of quotation marks used throughout
+ * your code. It accepts three values: `true` if you don't want to enforce
+ * one particular style but want some consistency, `"single"` if you want to
+ * allow only single quotes and `"double"` if you want to allow only double
+ * quotes.
+ */
+ quotmark : false,
+
+ scope : false,
+
+ /**
+ * This option lets you set the max number of statements allowed per function:
+ *
+ * // jshint maxstatements:4
+ *
+ * function main() {
+ * var i = 0;
+ * var j = 0;
+ *
+ * // Function declarations count as one statement. Their bodies
+ * // don't get taken into account for the outer function.
+ * function inner() {
+ * var i2 = 1;
+ * var j2 = 1;
+ *
+ * return i2 + j2;
+ * }
+ *
+ * j = i + j;
+ * return j; // JSHint: Too many statements per function. (5)
+ * }
+ */
+ maxstatements: false,
+
+ /**
+ * This option lets you control how nested do you want your blocks to be:
+ *
+ * // jshint maxdepth:2
+ *
+ * function main(meaning) {
+ * var day = true;
+ *
+ * if (meaning === 42) {
+ * while (day) {
+ * shuffle();
+ *
+ * if (tired) { // JSHint: Blocks are nested too deeply (3).
+ * sleep();
+ * }
+ * }
+ * }
+ * }
+ */
+ maxdepth : false,
+
+ /**
+ * This option lets you set the max number of formal parameters allowed per
+ * function:
+ *
+ * // jshint maxparams:3
+ *
+ * function login(request, onSuccess) {
+ * // ...
+ * }
+ *
+ * // JSHint: Too many parameters per function (4).
+ * function logout(request, isManual, whereAmI, onSuccess) {
+ * // ...
+ * }
+ */
+ maxparams : false,
+
+ /**
+ * This option lets you control cyclomatic complexity throughout your code.
+ * Cyclomatic complexity measures the number of linearly independent paths
+ * through a program's source code. Read more about [cyclomatic complexity on
+ * Wikipedia](http://en.wikipedia.org/wiki/Cyclomatic_complexity).
+ */
+ maxcomplexity: false,
+
+ /**
+ * This option suppresses warnings about variable shadowing i.e. declaring a
+ * variable that had been already declared somewhere in the outer scope.
+ *
+ * - "inner" - check for variables defined in the same scope only
+ * - "outer" - check for variables defined in outer scopes as well
+ * - false - same as inner
+ * - true - allow variable shadowing
+ */
+ shadow : false,
+
+ /**
+ * This option warns when you define and never use your variables. It is very
+ * useful for general code cleanup, especially when used in addition to
+ * `undef`.
+ *
+ * // jshint unused:true
+ *
+ * function test(a, b) {
+ * var c, d = 2;
+ *
+ * return a + d;
+ * }
+ *
+ * test(1, 2);
+ *
+ * // Line 3: 'b' was defined but never used.
+ * // Line 4: 'c' was defined but never used.
+ *
+ * In addition to that, this option will warn you about unused global
+ * variables declared via the `global` directive.
+ *
+ * This can be set to `vars` to only check for variables, not function
+ * parameters, or `strict` to check all variables and parameters. The
+ * default (true) behavior is to allow unused parameters that are followed by
+ * a used parameter.
+ */
+ unused : true,
+
+ /**
+ * This option prohibits the use of a variable before it was defined.
+ * JavaScript has function scope only and, in addition to that, all variables
+ * are always moved—or hoisted— to the top of the function. This behavior can
+ * lead to some very nasty bugs and that's why it is safer to always use
+ * variable only after they have been explicitly defined.
+ *
+ * Setting this option to "nofunc" will allow function declarations to be
+ * ignored.
+ *
+ * For more in-depth understanding of scoping and hoisting in JavaScript,
+ * read [JavaScript Scoping and
+ * Hoisting](http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting)
+ * by Ben Cherry.
+ */
+ latedef : false,
+
+ ignore : false, // start/end ignoring lines of code, bypassing the lexer
+ // start - start ignoring lines, including the current line
+ // end - stop ignoring lines, starting on the next line
+ // line - ignore warnings / errors for just a single line
+ // (this option does not bypass the lexer)
+ ignoreDelimiters: false // array of start/end delimiters used to ignore
+ // certain chunks from code
+};
+
+// These are JSHint boolean options which are shared with JSLint
+// where the definition in JSHint is opposite JSLint
+exports.inverted = {
+ bitwise : true,
+ forin : true,
+ newcap : true,
+ plusplus: true,
+ regexp : true,
+ undef : true,
+
+ // Inverted and renamed, use JSHint name here
+ eqeqeq : true,
+ strict : true
+};
+
+exports.validNames = Object.keys(exports.val)
+ .concat(Object.keys(exports.bool.relaxing))
+ .concat(Object.keys(exports.bool.enforcing))
+ .concat(Object.keys(exports.bool.obsolete))
+ .concat(Object.keys(exports.bool.environments));
+
+// These are JSHint boolean options which are shared with JSLint
+// where the name has been changed but the effect is unchanged
+exports.renamed = {
+ eqeq : "eqeqeq",
+ windows: "wsh",
+ sloppy : "strict"
+};
+
+exports.removed = {
+ nomen: true,
+ onevar: true,
+ passfail: true,
+ white: true,
+ gcl: true,
+ smarttabs: true,
+ trailing: true
+};
+
+},{}],17:[function(require,module,exports){
+/*
+ * Regular expressions. Some of these are stupidly long.
+ */
+
+/*jshint maxlen:1000 */
+
+"use strict";
+
+// Unsafe comment or string (ax)
+exports.unsafeString =
+ /@cc|<\/?|script|\]\s*\]|<\s*!|</i;
+
+// Unsafe characters that are silently deleted by one or more browsers (cx)
+exports.unsafeChars =
+ /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
+
+// Characters in strings that need escaping (nx and nxg)
+exports.needEsc =
+ /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
+
+exports.needEscGlobal =
+ /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+
+// Star slash (lx)
+exports.starSlash = /\*\//;
+
+// Identifier (ix)
+exports.identifier = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/;
+
+// JavaScript URL (jx)
+exports.javascriptURL = /^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i;
+
+// Catches /* falls through */ comments (ft)
+exports.fallsThrough = /^\s*\/\*\s*falls?\sthrough\s*\*\/\s*$/;
+
+// very conservative rule (eg: only one space between the start of the comment and the first character)
+// to relax the maxlen option
+exports.maxlenException = /^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/;
+
+},{}],18:[function(require,module,exports){
+"use strict";
+var NameStack = require("./name-stack.js");
+
+var state = {
+ syntax: {},
+
+ reset: function() {
+ this.tokens = {
+ prev: null,
+ next: null,
+ curr: null
+ };
+
+ this.option = {};
+ this.ignored = {};
+ this.directive = {};
+ this.jsonMode = false;
+ this.jsonWarnings = [];
+ this.lines = [];
+ this.tab = "";
+ this.cache = {}; // Node.JS doesn't have Map. Sniff.
+ this.ignoredLines = {};
+ this.forinifcheckneeded = false;
+ this.nameStack = new NameStack();
+
+ // Blank out non-multi-line-commented lines when ignoring linter errors
+ this.ignoreLinterErrors = false;
+ }
+};
+
+exports.state = state;
+
+},{"./name-stack.js":15}],19:[function(require,module,exports){
+"use strict";
+
+exports.register = function(linter) {
+ // Check for properties named __proto__. This special property was
+ // deprecated and then re-introduced for ES6.
+
+ linter.on("Identifier", function style_scanProto(data) {
+ if (linter.getOption("proto")) {
+ return;
+ }
+
+ if (data.name === "__proto__") {
+ linter.warn("W103", {
+ line: data.line,
+ char: data.char,
+ data: [ data.name ]
+ });
+ }
+ });
+
+ // Check for properties named __iterator__. This is a special property
+ // available only in browsers with JavaScript 1.7 implementation.
+
+ linter.on("Identifier", function style_scanIterator(data) {
+ if (linter.getOption("iterator")) {
+ return;
+ }
+
+ if (data.name === "__iterator__") {
+ linter.warn("W104", {
+ line: data.line,
+ char: data.char,
+ data: [ data.name ]
+ });
+ }
+ });
+
+ // Check that all identifiers are using camelCase notation.
+ // Exceptions: names like MY_VAR and _myVar.
+
+ linter.on("Identifier", function style_scanCamelCase(data) {
+ if (!linter.getOption("camelcase")) {
+ return;
+ }
+
+ if (data.name.replace(/^_+|_+$/g, "").indexOf("_") > -1 && !data.name.match(/^[A-Z0-9_]*$/)) {
+ linter.warn("W106", {
+ line: data.line,
+ char: data.from,
+ data: [ data.name ]
+ });
+ }
+ });
+
+ // Enforce consistency in style of quoting.
+
+ linter.on("String", function style_scanQuotes(data) {
+ var quotmark = linter.getOption("quotmark");
+ var esnext = linter.getOption("esnext");
+ var code;
+
+ if (!quotmark) {
+ return;
+ }
+
+ // If quotmark is enabled, return if this is a template literal.
+ if (esnext && data.quote === "`") {
+ return;
+ }
+
+ // If quotmark is set to 'single' warn about all double-quotes.
+
+ if (quotmark === "single" && data.quote !== "'") {
+ code = "W109";
+ }
+
+ // If quotmark is set to 'double' warn about all single-quotes.
+
+ if (quotmark === "double" && data.quote !== "\"") {
+ code = "W108";
+ }
+
+ // If quotmark is set to true, remember the first quotation style
+ // and then warn about all others.
+
+ if (quotmark === true) {
+ if (!linter.getCache("quotmark")) {
+ linter.setCache("quotmark", data.quote);
+ }
+
+ if (linter.getCache("quotmark") !== data.quote) {
+ code = "W110";
+ }
+ }
+
+ if (code) {
+ linter.warn(code, {
+ line: data.line,
+ char: data.char,
+ });
+ }
+ });
+
+ linter.on("Number", function style_scanNumbers(data) {
+ if (data.value.charAt(0) === ".") {
+ // Warn about a leading decimal point.
+ linter.warn("W008", {
+ line: data.line,
+ char: data.char,
+ data: [ data.value ]
+ });
+ }
+
+ if (data.value.substr(data.value.length - 1) === ".") {
+ // Warn about a trailing decimal point.
+ linter.warn("W047", {
+ line: data.line,
+ char: data.char,
+ data: [ data.value ]
+ });
+ }
+
+ if (/^00+/.test(data.value)) {
+ // Multiple leading zeroes.
+ linter.warn("W046", {
+ line: data.line,
+ char: data.char,
+ data: [ data.value ]
+ });
+ }
+ });
+
+ // Warn about script URLs.
+
+ linter.on("String", function style_scanJavaScriptURLs(data) {
+ var re = /^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i;
+
+ if (linter.getOption("scripturl")) {
+ return;
+ }
+
+ if (re.test(data.value)) {
+ linter.warn("W107", {
+ line: data.line,
+ char: data.char
+ });
+ }
+ });
+};
+
+},{}],20:[function(require,module,exports){
+// jshint -W001
+
+"use strict";
+
+// Identifiers provided by the ECMAScript standard.
+
+exports.reservedVars = {
+ arguments : false,
+ NaN : false
+};
+
+exports.ecmaIdentifiers = {
+ Array : false,
+ Boolean : false,
+ Date : false,
+ decodeURI : false,
+ decodeURIComponent : false,
+ encodeURI : false,
+ encodeURIComponent : false,
+ Error : false,
+ "eval" : false,
+ EvalError : false,
+ Function : false,
+ hasOwnProperty : false,
+ isFinite : false,
+ isNaN : false,
+ JSON : false,
+ Map : false,
+ Math : false,
+ Number : false,
+ Object : false,
+ Proxy : false,
+ Promise : false,
+ parseInt : false,
+ parseFloat : false,
+ RangeError : false,
+ ReferenceError : false,
+ RegExp : false,
+ Set : false,
+ String : false,
+ SyntaxError : false,
+ TypeError : false,
+ URIError : false,
+ WeakMap : false,
+ WeakSet : false
+};
+
+exports.newEcmaIdentifiers = {
+ Set : false,
+ Map : false,
+ WeakMap : false,
+ WeakSet : false,
+ Proxy : false,
+ Promise : false,
+ Reflect : false,
+ Symbol : false,
+ System : false
+};
+
+// Global variables commonly provided by a web browser environment.
+
+exports.browser = {
+ Audio : false,
+ Blob : false,
+ addEventListener : false,
+ applicationCache : false,
+ atob : false,
+ blur : false,
+ btoa : false,
+ cancelAnimationFrame : false,
+ CanvasGradient : false,
+ CanvasPattern : false,
+ CanvasRenderingContext2D: false,
+ CSS : false,
+ clearInterval : false,
+ clearTimeout : false,
+ close : false,
+ closed : false,
+ Comment : false,
+ CustomEvent : false,
+ DOMParser : false,
+ defaultStatus : false,
+ Document : false,
+ document : false,
+ DocumentFragment : false,
+ Element : false,
+ ElementTimeControl : false,
+ Event : false,
+ event : false,
+ FileReader : false,
+ FormData : false,
+ focus : false,
+ frames : false,
+ getComputedStyle : false,
+ HTMLElement : false,
+ HTMLAnchorElement : false,
+ HTMLBaseElement : false,
+ HTMLBlockquoteElement: false,
+ HTMLBodyElement : false,
+ HTMLBRElement : false,
+ HTMLButtonElement : false,
+ HTMLCanvasElement : false,
+ HTMLDirectoryElement : false,
+ HTMLDivElement : false,
+ HTMLDListElement : false,
+ HTMLFieldSetElement : false,
+ HTMLFontElement : false,
+ HTMLFormElement : false,
+ HTMLFrameElement : false,
+ HTMLFrameSetElement : false,
+ HTMLHeadElement : false,
+ HTMLHeadingElement : false,
+ HTMLHRElement : false,
+ HTMLHtmlElement : false,
+ HTMLIFrameElement : false,
+ HTMLImageElement : false,
+ HTMLInputElement : false,
+ HTMLIsIndexElement : false,
+ HTMLLabelElement : false,
+ HTMLLayerElement : false,
+ HTMLLegendElement : false,
+ HTMLLIElement : false,
+ HTMLLinkElement : false,
+ HTMLMapElement : false,
+ HTMLMenuElement : false,
+ HTMLMetaElement : false,
+ HTMLModElement : false,
+ HTMLObjectElement : false,
+ HTMLOListElement : false,
+ HTMLOptGroupElement : false,
+ HTMLOptionElement : false,
+ HTMLParagraphElement : false,
+ HTMLParamElement : false,
+ HTMLPreElement : false,
+ HTMLQuoteElement : false,
+ HTMLScriptElement : false,
+ HTMLSelectElement : false,
+ HTMLStyleElement : false,
+ HTMLTableCaptionElement: false,
+ HTMLTableCellElement : false,
+ HTMLTableColElement : false,
+ HTMLTableElement : false,
+ HTMLTableRowElement : false,
+ HTMLTableSectionElement: false,
+ HTMLTextAreaElement : false,
+ HTMLTitleElement : false,
+ HTMLUListElement : false,
+ HTMLVideoElement : false,
+ history : false,
+ Image : false,
+ Intl : false,
+ length : false,
+ localStorage : false,
+ location : false,
+ matchMedia : false,
+ MessageChannel : false,
+ MessageEvent : false,
+ MessagePort : false,
+ MouseEvent : false,
+ moveBy : false,
+ moveTo : false,
+ MutationObserver : false,
+ name : false,
+ Node : false,
+ NodeFilter : false,
+ NodeList : false,
+ Notification : false,
+ navigator : false,
+ onbeforeunload : true,
+ onblur : true,
+ onerror : true,
+ onfocus : true,
+ onload : true,
+ onresize : true,
+ onunload : true,
+ open : false,
+ openDatabase : false,
+ opener : false,
+ Option : false,
+ parent : false,
+ print : false,
+ Range : false,
+ requestAnimationFrame : false,
+ removeEventListener : false,
+ resizeBy : false,
+ resizeTo : false,
+ screen : false,
+ scroll : false,
+ scrollBy : false,
+ scrollTo : false,
+ sessionStorage : false,
+ setInterval : false,
+ setTimeout : false,
+ SharedWorker : false,
+ status : false,
+ SVGAElement : false,
+ SVGAltGlyphDefElement: false,
+ SVGAltGlyphElement : false,
+ SVGAltGlyphItemElement: false,
+ SVGAngle : false,
+ SVGAnimateColorElement: false,
+ SVGAnimateElement : false,
+ SVGAnimateMotionElement: false,
+ SVGAnimateTransformElement: false,
+ SVGAnimatedAngle : false,
+ SVGAnimatedBoolean : false,
+ SVGAnimatedEnumeration: false,
+ SVGAnimatedInteger : false,
+ SVGAnimatedLength : false,
+ SVGAnimatedLengthList: false,
+ SVGAnimatedNumber : false,
+ SVGAnimatedNumberList: false,
+ SVGAnimatedPathData : false,
+ SVGAnimatedPoints : false,
+ SVGAnimatedPreserveAspectRatio: false,
+ SVGAnimatedRect : false,
+ SVGAnimatedString : false,
+ SVGAnimatedTransformList: false,
+ SVGAnimationElement : false,
+ SVGCSSRule : false,
+ SVGCircleElement : false,
+ SVGClipPathElement : false,
+ SVGColor : false,
+ SVGColorProfileElement: false,
+ SVGColorProfileRule : false,
+ SVGComponentTransferFunctionElement: false,
+ SVGCursorElement : false,
+ SVGDefsElement : false,
+ SVGDescElement : false,
+ SVGDocument : false,
+ SVGElement : false,
+ SVGElementInstance : false,
+ SVGElementInstanceList: false,
+ SVGEllipseElement : false,
+ SVGExternalResourcesRequired: false,
+ SVGFEBlendElement : false,
+ SVGFEColorMatrixElement: false,
+ SVGFEComponentTransferElement: false,
+ SVGFECompositeElement: false,
+ SVGFEConvolveMatrixElement: false,
+ SVGFEDiffuseLightingElement: false,
+ SVGFEDisplacementMapElement: false,
+ SVGFEDistantLightElement: false,
+ SVGFEFloodElement : false,
+ SVGFEFuncAElement : false,
+ SVGFEFuncBElement : false,
+ SVGFEFuncGElement : false,
+ SVGFEFuncRElement : false,
+ SVGFEGaussianBlurElement: false,
+ SVGFEImageElement : false,
+ SVGFEMergeElement : false,
+ SVGFEMergeNodeElement: false,
+ SVGFEMorphologyElement: false,
+ SVGFEOffsetElement : false,
+ SVGFEPointLightElement: false,
+ SVGFESpecularLightingElement: false,
+ SVGFESpotLightElement: false,
+ SVGFETileElement : false,
+ SVGFETurbulenceElement: false,
+ SVGFilterElement : false,
+ SVGFilterPrimitiveStandardAttributes: false,
+ SVGFitToViewBox : false,
+ SVGFontElement : false,
+ SVGFontFaceElement : false,
+ SVGFontFaceFormatElement: false,
+ SVGFontFaceNameElement: false,
+ SVGFontFaceSrcElement: false,
+ SVGFontFaceUriElement: false,
+ SVGForeignObjectElement: false,
+ SVGGElement : false,
+ SVGGlyphElement : false,
+ SVGGlyphRefElement : false,
+ SVGGradientElement : false,
+ SVGHKernElement : false,
+ SVGICCColor : false,
+ SVGImageElement : false,
+ SVGLangSpace : false,
+ SVGLength : false,
+ SVGLengthList : false,
+ SVGLineElement : false,
+ SVGLinearGradientElement: false,
+ SVGLocatable : false,
+ SVGMPathElement : false,
+ SVGMarkerElement : false,
+ SVGMaskElement : false,
+ SVGMatrix : false,
+ SVGMetadataElement : false,
+ SVGMissingGlyphElement: false,
+ SVGNumber : false,
+ SVGNumberList : false,
+ SVGPaint : false,
+ SVGPathElement : false,
+ SVGPathSeg : false,
+ SVGPathSegArcAbs : false,
+ SVGPathSegArcRel : false,
+ SVGPathSegClosePath : false,
+ SVGPathSegCurvetoCubicAbs: false,
+ SVGPathSegCurvetoCubicRel: false,
+ SVGPathSegCurvetoCubicSmoothAbs: false,
+ SVGPathSegCurvetoCubicSmoothRel: false,
+ SVGPathSegCurvetoQuadraticAbs: false,
+ SVGPathSegCurvetoQuadraticRel: false,
+ SVGPathSegCurvetoQuadraticSmoothAbs: false,
+ SVGPathSegCurvetoQuadraticSmoothRel: false,
+ SVGPathSegLinetoAbs : false,
+ SVGPathSegLinetoHorizontalAbs: false,
+ SVGPathSegLinetoHorizontalRel: false,
+ SVGPathSegLinetoRel : false,
+ SVGPathSegLinetoVerticalAbs: false,
+ SVGPathSegLinetoVerticalRel: false,
+ SVGPathSegList : false,
+ SVGPathSegMovetoAbs : false,
+ SVGPathSegMovetoRel : false,
+ SVGPatternElement : false,
+ SVGPoint : false,
+ SVGPointList : false,
+ SVGPolygonElement : false,
+ SVGPolylineElement : false,
+ SVGPreserveAspectRatio: false,
+ SVGRadialGradientElement: false,
+ SVGRect : false,
+ SVGRectElement : false,
+ SVGRenderingIntent : false,
+ SVGSVGElement : false,
+ SVGScriptElement : false,
+ SVGSetElement : false,
+ SVGStopElement : false,
+ SVGStringList : false,
+ SVGStylable : false,
+ SVGStyleElement : false,
+ SVGSwitchElement : false,
+ SVGSymbolElement : false,
+ SVGTRefElement : false,
+ SVGTSpanElement : false,
+ SVGTests : false,
+ SVGTextContentElement: false,
+ SVGTextElement : false,
+ SVGTextPathElement : false,
+ SVGTextPositioningElement: false,
+ SVGTitleElement : false,
+ SVGTransform : false,
+ SVGTransformList : false,
+ SVGTransformable : false,
+ SVGURIReference : false,
+ SVGUnitTypes : false,
+ SVGUseElement : false,
+ SVGVKernElement : false,
+ SVGViewElement : false,
+ SVGViewSpec : false,
+ SVGZoomAndPan : false,
+ Text : false,
+ TextDecoder : false,
+ TextEncoder : false,
+ TimeEvent : false,
+ top : false,
+ URL : false,
+ WebGLActiveInfo : false,
+ WebGLBuffer : false,
+ WebGLContextEvent : false,
+ WebGLFramebuffer : false,
+ WebGLProgram : false,
+ WebGLRenderbuffer : false,
+ WebGLRenderingContext: false,
+ WebGLShader : false,
+ WebGLShaderPrecisionFormat: false,
+ WebGLTexture : false,
+ WebGLUniformLocation : false,
+ WebSocket : false,
+ window : false,
+ Worker : false,
+ XDomainRequest : false,
+ XMLHttpRequest : false,
+ XMLSerializer : false,
+ XPathEvaluator : false,
+ XPathException : false,
+ XPathExpression : false,
+ XPathNamespace : false,
+ XPathNSResolver : false,
+ XPathResult : false
+};
+
+exports.devel = {
+ alert : false,
+ confirm: false,
+ console: false,
+ Debug : false,
+ opera : false,
+ prompt : false
+};
+
+exports.worker = {
+ importScripts : true,
+ postMessage : true,
+ self : true,
+ FileReaderSync : true
+};
+
+// Widely adopted global names that are not part of ECMAScript standard
+exports.nonstandard = {
+ escape : false,
+ unescape: false
+};
+
+// Globals provided by popular JavaScript environments.
+
+exports.couch = {
+ "require" : false,
+ respond : false,
+ getRow : false,
+ emit : false,
+ send : false,
+ start : false,
+ sum : false,
+ log : false,
+ exports : false,
+ module : false,
+ provides : false
+};
+
+exports.node = {
+ __filename : false,
+ __dirname : false,
+ GLOBAL : false,
+ global : false,
+ module : false,
+ require : false,
+
+ // These globals are writeable because Node allows the following
+ // usage pattern: var Buffer = require("buffer").Buffer;
+
+ Buffer : true,
+ console : true,
+ exports : true,
+ process : true,
+ setTimeout : true,
+ clearTimeout : true,
+ setInterval : true,
+ clearInterval : true,
+ setImmediate : true, // v0.9.1+
+ clearImmediate: true // v0.9.1+
+};
+
+exports.browserify = {
+ __filename : false,
+ __dirname : false,
+ global : false,
+ module : false,
+ require : false,
+ Buffer : true,
+ exports : true,
+ process : true
+};
+
+exports.phantom = {
+ phantom : true,
+ require : true,
+ WebPage : true,
+ console : true, // in examples, but undocumented
+ exports : true // v1.7+
+};
+
+exports.qunit = {
+ asyncTest : false,
+ deepEqual : false,
+ equal : false,
+ expect : false,
+ module : false,
+ notDeepEqual : false,
+ notEqual : false,
+ notPropEqual : false,
+ notStrictEqual : false,
+ ok : false,
+ propEqual : false,
+ QUnit : false,
+ raises : false,
+ start : false,
+ stop : false,
+ strictEqual : false,
+ test : false,
+ "throws" : false
+};
+
+exports.rhino = {
+ defineClass : false,
+ deserialize : false,
+ gc : false,
+ help : false,
+ importClass : false,
+ importPackage: false,
+ "java" : false,
+ load : false,
+ loadClass : false,
+ Packages : false,
+ print : false,
+ quit : false,
+ readFile : false,
+ readUrl : false,
+ runCommand : false,
+ seal : false,
+ serialize : false,
+ spawn : false,
+ sync : false,
+ toint32 : false,
+ version : false
+};
+
+exports.shelljs = {
+ target : false,
+ echo : false,
+ exit : false,
+ cd : false,
+ pwd : false,
+ ls : false,
+ find : false,
+ cp : false,
+ rm : false,
+ mv : false,
+ mkdir : false,
+ test : false,
+ cat : false,
+ sed : false,
+ grep : false,
+ which : false,
+ dirs : false,
+ pushd : false,
+ popd : false,
+ env : false,
+ exec : false,
+ chmod : false,
+ config : false,
+ error : false,
+ tempdir : false
+};
+
+exports.typed = {
+ ArrayBuffer : false,
+ ArrayBufferView : false,
+ DataView : false,
+ Float32Array : false,
+ Float64Array : false,
+ Int16Array : false,
+ Int32Array : false,
+ Int8Array : false,
+ Uint16Array : false,
+ Uint32Array : false,
+ Uint8Array : false,
+ Uint8ClampedArray : false
+};
+
+exports.wsh = {
+ ActiveXObject : true,
+ Enumerator : true,
+ GetObject : true,
+ ScriptEngine : true,
+ ScriptEngineBuildVersion : true,
+ ScriptEngineMajorVersion : true,
+ ScriptEngineMinorVersion : true,
+ VBArray : true,
+ WSH : true,
+ WScript : true,
+ XDomainRequest : true
+};
+
+// Globals provided by popular JavaScript libraries.
+
+exports.dojo = {
+ dojo : false,
+ dijit : false,
+ dojox : false,
+ define : false,
+ "require": false
+};
+
+exports.jquery = {
+ "$" : false,
+ jQuery : false
+};
+
+exports.mootools = {
+ "$" : false,
+ "$$" : false,
+ Asset : false,
+ Browser : false,
+ Chain : false,
+ Class : false,
+ Color : false,
+ Cookie : false,
+ Core : false,
+ Document : false,
+ DomReady : false,
+ DOMEvent : false,
+ DOMReady : false,
+ Drag : false,
+ Element : false,
+ Elements : false,
+ Event : false,
+ Events : false,
+ Fx : false,
+ Group : false,
+ Hash : false,
+ HtmlTable : false,
+ IFrame : false,
+ IframeShim : false,
+ InputValidator: false,
+ instanceOf : false,
+ Keyboard : false,
+ Locale : false,
+ Mask : false,
+ MooTools : false,
+ Native : false,
+ Options : false,
+ OverText : false,
+ Request : false,
+ Scroller : false,
+ Slick : false,
+ Slider : false,
+ Sortables : false,
+ Spinner : false,
+ Swiff : false,
+ Tips : false,
+ Type : false,
+ typeOf : false,
+ URI : false,
+ Window : false
+};
+
+exports.prototypejs = {
+ "$" : false,
+ "$$" : false,
+ "$A" : false,
+ "$F" : false,
+ "$H" : false,
+ "$R" : false,
+ "$break" : false,
+ "$continue" : false,
+ "$w" : false,
+ Abstract : false,
+ Ajax : false,
+ Class : false,
+ Enumerable : false,
+ Element : false,
+ Event : false,
+ Field : false,
+ Form : false,
+ Hash : false,
+ Insertion : false,
+ ObjectRange : false,
+ PeriodicalExecuter: false,
+ Position : false,
+ Prototype : false,
+ Selector : false,
+ Template : false,
+ Toggle : false,
+ Try : false,
+ Autocompleter : false,
+ Builder : false,
+ Control : false,
+ Draggable : false,
+ Draggables : false,
+ Droppables : false,
+ Effect : false,
+ Sortable : false,
+ SortableObserver : false,
+ Sound : false,
+ Scriptaculous : false
+};
+
+exports.yui = {
+ YUI : false,
+ Y : false,
+ YUI_config: false
+};
+
+exports.mocha = {
+ // BDD
+ describe : false,
+ it : false,
+ before : false,
+ after : false,
+ beforeEach : false,
+ afterEach : false,
+ // TDD
+ suite : false,
+ test : false,
+ setup : false,
+ teardown : false,
+ suiteSetup : false,
+ suiteTeardown : false
+};
+
+exports.jasmine = {
+ jasmine : false,
+ describe : false,
+ it : false,
+ xit : false,
+ beforeEach : false,
+ afterEach : false,
+ setFixtures : false,
+ loadFixtures: false,
+ spyOn : false,
+ expect : false,
+ // Jasmine 1.3
+ runs : false,
+ waitsFor : false,
+ waits : false,
+ // Jasmine 2.1
+ beforeAll : false,
+ afterAll : false,
+ fail : false,
+ fdescribe : false,
+ fit : false
+};
+
+},{}],"jshint":[function(require,module,exports){
/*!
* JSHint, by JSHint Community.
*
@@ -52774,6 +6759,7 @@ var Lexer = require("./lex.js").Lexer;
var reg = require("./reg.js");
var state = require("./state.js").state;
var style = require("./style.js");
+var options = require("./options.js");
// We need this module here because environments such as IE and Rhino
// don't necessarilly expose the 'console' API and browserify uses
@@ -52784,7745 +6770,5278 @@ var console = require("console-browserify");
// variable. That function will be invoked immediately, and its return value is
// the JSHINT function itself.
-var JSHINT = (function () {
- "use strict";
+var JSHINT = (function() {
+ "use strict";
- var anonname, // The guessed name for anonymous functions.
- api, // Extension API
+ var api, // Extension API
- // These are operators that should not be used with the ! operator.
- bang = {
- "<" : true,
- "<=" : true,
- "==" : true,
- "===": true,
- "!==": true,
- "!=" : true,
- ">" : true,
- ">=" : true,
- "+" : true,
- "-" : true,
- "*" : true,
- "/" : true,
- "%" : true
- },
+ // These are operators that should not be used with the ! operator.
+ bang = {
+ "<" : true,
+ "<=" : true,
+ "==" : true,
+ "===": true,
+ "!==": true,
+ "!=" : true,
+ ">" : true,
+ ">=" : true,
+ "+" : true,
+ "-" : true,
+ "*" : true,
+ "/" : true,
+ "%" : true
+ },
- // These are the JSHint boolean options.
- boolOptions = {
- asi : true, // if automatic semicolon insertion should be tolerated
- bitwise : true, // if bitwise operators should not be allowed
- boss : true, // if advanced usage of assignments should be allowed
- browser : true, // if the standard browser globals should be predefined
- camelcase : true, // if identifiers should be required in camel case
- couch : true, // if CouchDB globals should be predefined
- curly : true, // if curly braces around all blocks should be required
- debug : true, // if debugger statements should be allowed
- devel : true, // if logging globals should be predefined (console, alert, etc.)
- dojo : true, // if Dojo Toolkit globals should be predefined
- eqeqeq : true, // if === should be required
- eqnull : true, // if == null comparisons should be tolerated
- notypeof : true, // if should report typos in typeof comparisons
- es3 : true, // if ES3 syntax should be allowed
- es5 : true, // if ES5 syntax should be allowed (is now set per default)
- esnext : true, // if es.next specific syntax should be allowed
- moz : true, // if mozilla specific syntax should be allowed
- evil : true, // if eval should be allowed
- expr : true, // if ExpressionStatement should be allowed as Programs
- forin : true, // if for in statements must filter
- funcscope : true, // if only function scope should be used for scope tests
- gcl : true, // if JSHint should be compatible with Google Closure Linter
- globalstrict: true, // if global "use strict"; should be allowed (also enables 'strict')
- immed : true, // if immediate invocations must be wrapped in parens
- iterator : true, // if the `__iterator__` property should be allowed
- jquery : true, // if jQuery globals should be predefined
- lastsemic : true, // if semicolons may be ommitted for the trailing
- // statements inside of a one-line blocks.
- laxbreak : true, // if line breaks should not be checked
- laxcomma : true, // if line breaks should not be checked around commas
- loopfunc : true, // if functions should be allowed to be defined within
- // loops
- mootools : true, // if MooTools globals should be predefined
- multistr : true, // allow multiline strings
- freeze : true, // if modifying native object prototypes should be disallowed
- newcap : true, // if constructor names must be capitalized
- noarg : true, // if arguments.caller and arguments.callee should be
- // disallowed
- node : true, // if the Node.js environment globals should be
- // predefined
- noempty : true, // if empty blocks should be disallowed
- nonew : true, // if using `new` for side-effects should be disallowed
- nonstandard : true, // if non-standard (but widely adopted) globals should
- // be predefined
- nomen : true, // if names should be checked
- onevar : true, // if only one var statement per function should be
- // allowed
- passfail : true, // if the scan should stop on first error
- phantom : true, // if PhantomJS symbols should be allowed
- plusplus : true, // if increment/decrement should not be allowed
- proto : true, // if the `__proto__` property should be allowed
- prototypejs : true, // if Prototype and Scriptaculous globals should be
- // predefined
- rhino : true, // if the Rhino environment globals should be predefined
- shelljs : true, // if ShellJS globals should be predefined
- typed : true, // if typed array globals should be predefined
- undef : true, // if variables should be declared before used
- scripturl : true, // if script-targeted URLs should be tolerated
- smarttabs : true, // if smarttabs should be tolerated
- // (http://www.emacswiki.org/emacs/SmartTabs)
- strict : true, // require the "use strict"; pragma
- sub : true, // if all forms of subscript notation are tolerated
- supernew : true, // if `new function () { ... };` and `new Object;`
- // should be tolerated
- trailing : true, // if trailing whitespace rules apply
- validthis : true, // if 'this' inside a non-constructor function is valid.
- // This is a function scoped option only.
- withstmt : true, // if with statements should be allowed
- white : true, // if strict whitespace rules apply
- worker : true, // if Web Worker script symbols should be allowed
- wsh : true, // if the Windows Scripting Host environment globals
- // should be predefined
- yui : true, // YUI variables should be predefined
+ declared, // Globals that were declared using /*global ... */ syntax.
+ exported, // Variables that are used outside of the current file.
- // Obsolete options
- onecase : true, // if one case switch statements should be allowed
- regexp : true, // if the . should not be allowed in regexp literals
- regexdash : true // if unescaped first/last dash (-) inside brackets
- // should be tolerated
- },
+ functionicity = [
+ "closure", "exception", "global", "label",
+ "outer", "unused", "var"
+ ],
- // These are the JSHint options that can take any value
- // (we use this object to detect invalid options)
- valOptions = {
- maxlen : false,
- indent : false,
- maxerr : false,
- predef : false, //predef is deprecated and being replaced by globals
- globals : false,
- quotmark : false, //'single'|'double'|true
- scope : false,
- maxstatements: false, // {int} max statements per function
- maxdepth : false, // {int} max nested block depth per function
- maxparams : false, // {int} max params per function
- maxcomplexity: false, // {int} max cyclomatic complexity per function
- shadow : false, // if variable shadowing should be tolerated
- // "inner" - check for variables defined in the same scope only
- // "outer" - check for variables defined in outer scopes as well
- // false - same as inner
- // true - allow variable shadowing
- unused : true, // warn if variables are unused. Available options:
- // false - don't check for unused variables
- // true - "vars" + check last function param
- // "vars" - skip checking unused function params
- // "strict" - "vars" + check all function params
- latedef : false, // warn if the variable is used before its definition
- // false - don't emit any warnings
- // true - warn if any variable is used before its definition
- // "nofunc" - warn for any variable but function declarations
- ignore : false // start/end ignoring lines of code, bypassing the lexer
- // start - start ignoring lines, including the current line
- // end - stop ignoring lines, starting on the next line
- // line - ignore warnings / errors for just a single line
- // (this option does not bypass the lexer)
- },
+ funct, // The current function
+ functions, // All of the functions
- // These are JSHint boolean options which are shared with JSLint
- // where the definition in JSHint is opposite JSLint
- invertedOptions = {
- bitwise : true,
- forin : true,
- newcap : true,
- nomen : true,
- plusplus: true,
- regexp : true,
- undef : true,
- white : true,
+ global, // The global scope
+ implied, // Implied globals
+ inblock,
+ indent,
+ lookahead,
+ lex,
+ member,
+ membersOnly,
+ predefined, // Global variables defined by option
- // Inverted and renamed, use JSHint name here
- eqeqeq : true,
- onevar : true,
- strict : true
- },
+ scope, // The current scope
+ stack,
+ unuseds,
+ urls,
- // These are JSHint boolean options which are shared with JSLint
- // where the name has been changed but the effect is unchanged
- renamedOptions = {
- eqeq : "eqeqeq",
- vars : "onevar",
- windows: "wsh",
- sloppy : "strict"
- },
+ extraModules = [],
+ emitter = new events.EventEmitter();
- declared, // Globals that were declared using /*global ... */ syntax.
- exported, // Variables that are used outside of the current file.
+ function checkOption(name, t) {
+ name = name.trim();
- functionicity = [
- "closure", "exception", "global", "label",
- "outer", "unused", "var"
- ],
-
- funct, // The current function
- functions, // All of the functions
-
- global, // The global scope
- implied, // Implied globals
- inblock,
- indent,
- lookahead,
- lex,
- member,
- membersOnly,
- noreach,
- predefined, // Global variables defined by option
-
- scope, // The current scope
- stack,
- unuseds,
- urls,
- warnings,
-
- extraModules = [],
- emitter = new events.EventEmitter();
-
- function checkOption(name, t) {
- name = name.trim();
-
- if (/^[+-]W\d{3}$/g.test(name)) {
- return true;
- }
-
- if (valOptions[name] === undefined && boolOptions[name] === undefined) {
- if (t.type !== "jslint") {
- error("E001", t, name);
- return false;
- }
- }
-
- return true;
+ if (/^[+-]W\d{3}$/g.test(name)) {
+ return true;
}
- function isString(obj) {
- return Object.prototype.toString.call(obj) === "[object String]";
- }
-
- function isIdentifier(tkn, value) {
- if (!tkn)
- return false;
-
- if (!tkn.identifier || tkn.value !== value)
- return false;
-
- return true;
- }
-
- function isReserved(token) {
- if (!token.reserved) {
- return false;
- }
- var meta = token.meta;
-
- if (meta && meta.isFutureReservedWord && state.option.inES5()) {
- // ES3 FutureReservedWord in an ES5 environment.
- if (!meta.es5) {
- return false;
- }
-
- // Some ES5 FutureReservedWord identifiers are active only
- // within a strict mode environment.
- if (meta.strictOnly) {
- if (!state.option.strict && !state.directive["use strict"]) {
- return false;
- }
- }
-
- if (token.isProperty) {
- return false;
- }
- }
-
- return true;
- }
-
- function supplant(str, data) {
- return str.replace(/\{([^{}]*)\}/g, function (a, b) {
- var r = data[b];
- return typeof r === "string" || typeof r === "number" ? r : a;
- });
- }
-
- function combine(dest, src) {
- Object.keys(src).forEach(function (name) {
- if (JSHINT.blacklist.hasOwnProperty(name)) return;
- dest[name] = src[name];
- });
- }
-
- function assume() {
- if (state.option.es5) {
- warning("I003");
- }
- if (state.option.couch) {
- combine(predefined, vars.couch);
- }
-
- if (state.option.rhino) {
- combine(predefined, vars.rhino);
- }
-
- if (state.option.shelljs) {
- combine(predefined, vars.shelljs);
- combine(predefined, vars.node);
- }
- if (state.option.typed) {
- combine(predefined, vars.typed);
- }
-
- if (state.option.phantom) {
- combine(predefined, vars.phantom);
- }
-
- if (state.option.prototypejs) {
- combine(predefined, vars.prototypejs);
- }
-
- if (state.option.node) {
- combine(predefined, vars.node);
- combine(predefined, vars.typed);
- }
-
- if (state.option.devel) {
- combine(predefined, vars.devel);
- }
-
- if (state.option.dojo) {
- combine(predefined, vars.dojo);
- }
-
- if (state.option.browser) {
- combine(predefined, vars.browser);
- combine(predefined, vars.typed);
- }
-
- if (state.option.nonstandard) {
- combine(predefined, vars.nonstandard);
- }
-
- if (state.option.jquery) {
- combine(predefined, vars.jquery);
- }
-
- if (state.option.mootools) {
- combine(predefined, vars.mootools);
- }
-
- if (state.option.worker) {
- combine(predefined, vars.worker);
- }
-
- if (state.option.wsh) {
- combine(predefined, vars.wsh);
- }
-
- if (state.option.globalstrict && state.option.strict !== false) {
- state.option.strict = true;
- }
-
- if (state.option.yui) {
- combine(predefined, vars.yui);
- }
-
- // Let's assume that chronologically ES3 < ES5 < ES6/ESNext < Moz
-
- state.option.inMoz = function (strict) {
- if (strict) {
- return state.option.moz && !state.option.esnext;
- }
- return state.option.moz;
- };
-
- state.option.inESNext = function (strict) {
- if (strict) {
- return !state.option.moz && state.option.esnext;
- }
- return state.option.moz || state.option.esnext;
- };
-
- state.option.inES5 = function (/* strict */) {
- return !state.option.es3;
- };
-
- state.option.inES3 = function (strict) {
- if (strict) {
- return !state.option.moz && !state.option.esnext && state.option.es3;
- }
- return state.option.es3;
- };
- }
-
- // Produce an error warning.
- function quit(code, line, chr) {
- var percentage = Math.floor((line / state.lines.length) * 100);
- var message = messages.errors[code].desc;
-
- throw {
- name: "JSHintError",
- line: line,
- character: chr,
- message: message + " (" + percentage + "% scanned).",
- raw: message,
- code: code
- };
- }
-
- function isundef(scope, code, token, a) {
- return JSHINT.undefs.push([scope, code, token, a]);
- }
-
- function warning(code, t, a, b, c, d) {
- var ch, l, w, msg;
-
- if (/^W\d{3}$/.test(code)) {
- if (state.ignored[code])
- return;
-
- msg = messages.warnings[code];
- } else if (/E\d{3}/.test(code)) {
- msg = messages.errors[code];
- } else if (/I\d{3}/.test(code)) {
- msg = messages.info[code];
- }
-
- t = t || state.tokens.next;
- if (t.id === "(end)") { // `~
- t = state.tokens.curr;
- }
-
- l = t.line || 0;
- ch = t.from || 0;
-
- w = {
- id: "(error)",
- raw: msg.desc,
- code: msg.code,
- evidence: state.lines[l - 1] || "",
- line: l,
- character: ch,
- scope: JSHINT.scope,
- a: a,
- b: b,
- c: c,
- d: d
- };
-
- w.reason = supplant(msg.desc, w);
- JSHINT.errors.push(w);
-
- if (state.option.passfail) {
- quit("E042", l, ch);
- }
-
- warnings += 1;
- if (warnings >= state.option.maxerr) {
- quit("E043", l, ch);
- }
-
- return w;
- }
-
- function warningAt(m, l, ch, a, b, c, d) {
- return warning(m, {
- line: l,
- from: ch
- }, a, b, c, d);
- }
-
- function error(m, t, a, b, c, d) {
- warning(m, t, a, b, c, d);
- }
-
- function errorAt(m, l, ch, a, b, c, d) {
- return error(m, {
- line: l,
- from: ch
- }, a, b, c, d);
- }
-
- // Tracking of "internal" scripts, like eval containing a static string
- function addInternalSrc(elem, src) {
- var i;
- i = {
- id: "(internal)",
- elem: elem,
- value: src
- };
- JSHINT.internals.push(i);
- return i;
- }
-
- // name: string
- // opts: { type: string, token: token, islet: bool }
- function addlabel(name, opts) {
- opts = opts || {};
-
- var type = opts.type;
- var token = opts.token;
- var islet = opts.islet;
-
- // Define label in the current function in the current scope.
- if (type === "exception") {
- if (_.has(funct["(context)"], name)) {
- if (funct[name] !== true && !state.option.node) {
- warning("W002", state.tokens.next, name);
- }
- }
- }
-
- if (_.has(funct, name) && !funct["(global)"]) {
- if (funct[name] === true) {
- if (state.option.latedef) {
- if ((state.option.latedef === true && _.contains([funct[name], type], "unction")) ||
- !_.contains([funct[name], type], "unction")) {
- warning("W003", state.tokens.next, name);
- }
- }
- } else {
- if ((!state.option.shadow || _.contains([ "inner", "outer" ], state.option.shadow)) &&
- type !== "exception" || funct["(blockscope)"].getlabel(name)) {
- warning("W004", state.tokens.next, name);
- }
- }
- }
-
- if (funct["(context)"] && _.has(funct["(context)"], name) && type !== "function") {
- if (state.option.shadow === "outer") {
- warning("W123", state.tokens.next, name);
- }
- }
-
- // if the identifier is from a let, adds it only to the current blockscope
- if (islet) {
- funct["(blockscope)"].current.add(name, type, state.tokens.curr);
- } else {
- funct["(blockscope)"].shadow(name);
- funct[name] = type;
-
- if (token) {
- funct["(tokens)"][name] = token;
- }
-
- setprop(funct, name, { unused: opts.unused || false });
-
- if (funct["(global)"]) {
- global[name] = funct;
- if (_.has(implied, name)) {
- if (state.option.latedef) {
- if ((state.option.latedef === true && _.contains([funct[name], type], "unction")) ||
- !_.contains([funct[name], type], "unction")) {
- warning("W003", state.tokens.next, name);
- }
- }
-
- delete implied[name];
- }
- } else {
- scope[name] = funct;
- }
- }
- }
-
- function doOption() {
- var nt = state.tokens.next;
- var body = nt.body.split(",").map(function (s) { return s.trim(); });
- var predef = {};
-
- if (nt.type === "globals") {
- body.forEach(function (g) {
- g = g.split(":");
- var key = (g[0] || "").trim();
- var val = (g[1] || "").trim();
-
- if (key.charAt(0) === "-") {
- key = key.slice(1);
- val = false;
-
- JSHINT.blacklist[key] = key;
- delete predefined[key];
- } else {
- predef[key] = (val === "true");
- }
- });
-
- combine(predefined, predef);
-
- for (var key in predef) {
- if (_.has(predef, key)) {
- declared[key] = nt;
- }
- }
- }
-
- if (nt.type === "exported") {
- body.forEach(function (e) {
- exported[e] = true;
- });
- }
-
- if (nt.type === "members") {
- membersOnly = membersOnly || {};
-
- body.forEach(function (m) {
- var ch1 = m.charAt(0);
- var ch2 = m.charAt(m.length - 1);
-
- if (ch1 === ch2 && (ch1 === "\"" || ch1 === "'")) {
- m = m
- .substr(1, m.length - 2)
- .replace("\\\"", "\"");
- }
-
- membersOnly[m] = false;
- });
- }
-
- var numvals = [
- "maxstatements",
- "maxparams",
- "maxdepth",
- "maxcomplexity",
- "maxerr",
- "maxlen",
- "indent"
- ];
-
- if (nt.type === "jshint" || nt.type === "jslint") {
- body.forEach(function (g) {
- g = g.split(":");
- var key = (g[0] || "").trim();
- var val = (g[1] || "").trim();
-
- if (!checkOption(key, nt)) {
- return;
- }
-
- if (numvals.indexOf(key) >= 0) {
-
- // GH988 - numeric options can be disabled by setting them to `false`
- if (val !== "false") {
- val = +val;
-
- if (typeof val !== "number" || !isFinite(val) || val <= 0 || Math.floor(val) !== val) {
- error("E032", nt, g[1].trim());
- return;
- }
-
- if (key === "indent") {
- state.option["(explicitIndent)"] = true;
- }
- state.option[key] = val;
- } else {
- if (key === "indent") {
- state.option["(explicitIndent)"] = false;
- } else {
- state.option[key] = false;
- }
- }
-
- return;
- }
-
- if (key === "validthis") {
- // `validthis` is valid only within a function scope.
-
- if (funct["(global)"])
- return void error("E009");
-
- if (val !== "true" && val !== "false")
- return void error("E002", nt);
-
- state.option.validthis = (val === "true");
- return;
- }
-
- if (key === "quotmark") {
- switch (val) {
- case "true":
- case "false":
- state.option.quotmark = (val === "true");
- break;
- case "double":
- case "single":
- state.option.quotmark = val;
- break;
- default:
- error("E002", nt);
- }
- return;
- }
-
- if (key === "shadow") {
- switch (val) {
- case "true":
- state.option.shadow = true;
- break;
- case "outer":
- state.option.shadow = "outer";
- break;
- case "false":
- case "inner":
- state.option.shadow = "inner";
- break;
- default:
- error("E002", nt);
- }
- return;
- }
-
- if (key === "unused") {
- switch (val) {
- case "true":
- state.option.unused = true;
- break;
- case "false":
- state.option.unused = false;
- break;
- case "vars":
- case "strict":
- state.option.unused = val;
- break;
- default:
- error("E002", nt);
- }
- return;
- }
-
- if (key === "latedef") {
- switch (val) {
- case "true":
- state.option.latedef = true;
- break;
- case "false":
- state.option.latedef = false;
- break;
- case "nofunc":
- state.option.latedef = "nofunc";
- break;
- default:
- error("E002", nt);
- }
- return;
- }
-
- if (key === "ignore") {
- switch (val) {
- case "start":
- state.ignoreLinterErrors = true;
- break;
- case "end":
- state.ignoreLinterErrors = false;
- break;
- case "line":
- // Any errors or warnings that happened on the current line, make them go away.
- JSHINT.errors = _.reject(JSHINT.errors, function (error) {
- // nt.line returns to the current line
- return error.line === nt.line;
- });
- break;
- default:
- error("E002", nt);
- }
- return;
- }
-
- var match = /^([+-])(W\d{3})$/g.exec(key);
- if (match) {
- // ignore for -W..., unignore for +W...
- state.ignored[match[2]] = (match[1] === "-");
- return;
- }
-
- var tn;
- if (val === "true" || val === "false") {
- if (nt.type === "jslint") {
- tn = renamedOptions[key] || key;
- state.option[tn] = (val === "true");
-
- if (invertedOptions[tn] !== undefined) {
- state.option[tn] = !state.option[tn];
- }
- } else {
- state.option[key] = (val === "true");
- }
-
- if (key === "newcap") {
- state.option["(explicitNewcap)"] = true;
- }
- return;
- }
-
- error("E002", nt);
- });
-
- assume();
- }
- }
-
- // We need a peek function. If it has an argument, it peeks that much farther
- // ahead. It is used to distinguish
- // for ( var i in ...
- // from
- // for ( var i = ...
-
- function peek(p) {
- var i = p || 0, j = 0, t;
-
- while (j <= i) {
- t = lookahead[j];
- if (!t) {
- t = lookahead[j] = lex.token();
- }
- j += 1;
- }
- return t;
- }
-
- // Produce the next token. It looks for programming errors.
-
- function advance(id, t) {
- switch (state.tokens.curr.id) {
- case "(number)":
- if (state.tokens.next.id === ".") {
- warning("W005", state.tokens.curr);
- }
- break;
- case "-":
- if (state.tokens.next.id === "-" || state.tokens.next.id === "--") {
- warning("W006");
- }
- break;
- case "+":
- if (state.tokens.next.id === "+" || state.tokens.next.id === "++") {
- warning("W007");
- }
- break;
- }
-
- if (state.tokens.curr.type === "(string)" || state.tokens.curr.identifier) {
- anonname = state.tokens.curr.value;
- }
-
- if (id && state.tokens.next.id !== id) {
- if (t) {
- if (state.tokens.next.id === "(end)") {
- error("E019", t, t.id);
- } else {
- error("E020", state.tokens.next, id, t.id, t.line, state.tokens.next.value);
- }
- } else if (state.tokens.next.type !== "(identifier)" || state.tokens.next.value !== id) {
- warning("W116", state.tokens.next, id, state.tokens.next.value);
- }
- }
-
- state.tokens.prev = state.tokens.curr;
- state.tokens.curr = state.tokens.next;
- for (;;) {
- state.tokens.next = lookahead.shift() || lex.token();
-
- if (!state.tokens.next) { // No more tokens left, give up
- quit("E041", state.tokens.curr.line);
- }
-
- if (state.tokens.next.id === "(end)" || state.tokens.next.id === "(error)") {
- return;
- }
-
- if (state.tokens.next.check) {
- state.tokens.next.check();
- }
-
- if (state.tokens.next.isSpecial) {
- doOption();
- } else {
- if (state.tokens.next.id !== "(endline)") {
- break;
- }
- }
- }
- }
-
- function isInfix(token) {
- return token.infix || (!token.identifier && !!token.led);
- }
-
- function isEndOfExpr() {
- var curr = state.tokens.curr;
- var next = state.tokens.next;
- if (next.id === ";" || next.id === "}" || next.id === ":") {
- return true;
- }
- if (isInfix(next) === isInfix(curr) || (curr.id === "yield" && state.option.inMoz(true))) {
- return curr.line !== next.line;
- }
+ if (options.validNames.indexOf(name) === -1) {
+ if (t.type !== "jslint" && !_.has(options.removed, name)) {
+ error("E001", t, name);
return false;
+ }
}
- // This is the heart of JSHINT, the Pratt parser. In addition to parsing, it
- // is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is
- // like .nud except that it is only used on the first token of a statement.
- // Having .fud makes it much easier to define statement-oriented languages like
- // JavaScript. I retained Pratt's nomenclature.
+ return true;
+ }
- // .nud Null denotation
- // .fud First null denotation
- // .led Left denotation
- // lbp Left binding power
- // rbp Right binding power
+ function isString(obj) {
+ return Object.prototype.toString.call(obj) === "[object String]";
+ }
- // They are elements of the parsing method called Top Down Operator Precedence.
+ function isIdentifier(tkn, value) {
+ if (!tkn)
+ return false;
- function expression(rbp, initial) {
- var left, isArray = false, isObject = false, isLetExpr = false;
+ if (!tkn.identifier || tkn.value !== value)
+ return false;
- // if current expression is a let expression
- if (!initial && state.tokens.next.value === "let" && peek(0).value === "(") {
- if (!state.option.inMoz(true)) {
- warning("W118", state.tokens.next, "let expressions");
+ return true;
+ }
+
+ function isReserved(token) {
+ if (!token.reserved) {
+ return false;
+ }
+ var meta = token.meta;
+
+ if (meta && meta.isFutureReservedWord && state.option.inES5()) {
+ // ES3 FutureReservedWord in an ES5 environment.
+ if (!meta.es5) {
+ return false;
+ }
+
+ // Some ES5 FutureReservedWord identifiers are active only
+ // within a strict mode environment.
+ if (meta.strictOnly) {
+ if (!state.option.strict && !state.directive["use strict"]) {
+ return false;
+ }
+ }
+
+ if (token.isProperty) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function supplant(str, data) {
+ return str.replace(/\{([^{}]*)\}/g, function(a, b) {
+ var r = data[b];
+ return typeof r === "string" || typeof r === "number" ? r : a;
+ });
+ }
+
+ function combine(dest, src) {
+ Object.keys(src).forEach(function(name) {
+ if (_.has(JSHINT.blacklist, name)) return;
+ dest[name] = src[name];
+ });
+ }
+
+ function processenforceall() {
+ if (state.option.enforceall) {
+ for (var enforceopt in options.bool.enforcing) {
+ if (state.option[enforceopt] === undefined) {
+ state.option[enforceopt] = true;
+ }
+ }
+ for (var relaxopt in options.bool.relaxing) {
+ if (state.option[relaxopt] === undefined) {
+ state.option[relaxopt] = false;
+ }
+ }
+ }
+ }
+
+ function assume() {
+ if (state.option.es5) {
+ warning("I003");
+ }
+
+ processenforceall();
+
+ if (state.option.esnext) {
+ combine(predefined, vars.newEcmaIdentifiers);
+ }
+
+ if (state.option.couch) {
+ combine(predefined, vars.couch);
+ }
+
+ if (state.option.qunit) {
+ combine(predefined, vars.qunit);
+ }
+
+ if (state.option.rhino) {
+ combine(predefined, vars.rhino);
+ }
+
+ if (state.option.shelljs) {
+ combine(predefined, vars.shelljs);
+ combine(predefined, vars.node);
+ }
+ if (state.option.typed) {
+ combine(predefined, vars.typed);
+ }
+
+ if (state.option.phantom) {
+ combine(predefined, vars.phantom);
+ }
+
+ if (state.option.prototypejs) {
+ combine(predefined, vars.prototypejs);
+ }
+
+ if (state.option.node) {
+ combine(predefined, vars.node);
+ combine(predefined, vars.typed);
+ }
+
+ if (state.option.devel) {
+ combine(predefined, vars.devel);
+ }
+
+ if (state.option.dojo) {
+ combine(predefined, vars.dojo);
+ }
+
+ if (state.option.browser) {
+ combine(predefined, vars.browser);
+ combine(predefined, vars.typed);
+ }
+
+ if (state.option.browserify) {
+ combine(predefined, vars.browser);
+ combine(predefined, vars.typed);
+ combine(predefined, vars.browserify);
+ }
+
+ if (state.option.nonstandard) {
+ combine(predefined, vars.nonstandard);
+ }
+
+ if (state.option.jasmine) {
+ combine(predefined, vars.jasmine);
+ }
+
+ if (state.option.jquery) {
+ combine(predefined, vars.jquery);
+ }
+
+ if (state.option.mootools) {
+ combine(predefined, vars.mootools);
+ }
+
+ if (state.option.worker) {
+ combine(predefined, vars.worker);
+ }
+
+ if (state.option.wsh) {
+ combine(predefined, vars.wsh);
+ }
+
+ if (state.option.globalstrict && state.option.strict !== false) {
+ state.option.strict = true;
+ }
+
+ if (state.option.yui) {
+ combine(predefined, vars.yui);
+ }
+
+ if (state.option.mocha) {
+ combine(predefined, vars.mocha);
+ }
+
+ // Let's assume that chronologically ES3 < ES5 < ES6/ESNext < Moz
+
+ state.option.inMoz = function(strict) {
+ if (strict) {
+ return state.option.moz && !state.option.esnext;
+ }
+ return state.option.moz;
+ };
+
+ state.option.inESNext = function(strict) {
+ if (strict) {
+ return !state.option.moz && state.option.esnext;
+ }
+ return state.option.moz || state.option.esnext;
+ };
+
+ state.option.inES5 = function(/* strict */) {
+ return !state.option.es3;
+ };
+
+ state.option.inES3 = function(strict) {
+ if (strict) {
+ return !state.option.moz && !state.option.esnext && state.option.es3;
+ }
+ return state.option.es3;
+ };
+ }
+
+ // Produce an error warning.
+ function quit(code, line, chr) {
+ var percentage = Math.floor((line / state.lines.length) * 100);
+ var message = messages.errors[code].desc;
+
+ throw {
+ name: "JSHintError",
+ line: line,
+ character: chr,
+ message: message + " (" + percentage + "% scanned).",
+ raw: message,
+ code: code
+ };
+ }
+
+ function isundef(scope, code, token, a) {
+ return JSHINT.undefs.push([scope, code, token, a]);
+ }
+
+ function removeIgnoredMessages() {
+ var ignored = state.ignoredLines;
+
+ if (_.isEmpty(ignored)) return;
+ JSHINT.errors = _.reject(JSHINT.errors, function(err) { return ignored[err.line] });
+ }
+
+ function warning(code, t, a, b, c, d) {
+ var ch, l, w, msg;
+
+ if (/^W\d{3}$/.test(code)) {
+ if (state.ignored[code])
+ return;
+
+ msg = messages.warnings[code];
+ } else if (/E\d{3}/.test(code)) {
+ msg = messages.errors[code];
+ } else if (/I\d{3}/.test(code)) {
+ msg = messages.info[code];
+ }
+
+ t = t || state.tokens.next;
+ if (t.id === "(end)") { // `~
+ t = state.tokens.curr;
+ }
+
+ l = t.line || 0;
+ ch = t.from || 0;
+
+ w = {
+ id: "(error)",
+ raw: msg.desc,
+ code: msg.code,
+ evidence: state.lines[l - 1] || "",
+ line: l,
+ character: ch,
+ scope: JSHINT.scope,
+ a: a,
+ b: b,
+ c: c,
+ d: d
+ };
+
+ w.reason = supplant(msg.desc, w);
+ JSHINT.errors.push(w);
+
+ removeIgnoredMessages();
+
+ if (JSHINT.errors.length >= state.option.maxerr)
+ quit("E043", l, ch);
+
+ return w;
+ }
+
+ function warningAt(m, l, ch, a, b, c, d) {
+ return warning(m, {
+ line: l,
+ from: ch
+ }, a, b, c, d);
+ }
+
+ function error(m, t, a, b, c, d) {
+ warning(m, t, a, b, c, d);
+ }
+
+ function errorAt(m, l, ch, a, b, c, d) {
+ return error(m, {
+ line: l,
+ from: ch
+ }, a, b, c, d);
+ }
+
+ // Tracking of "internal" scripts, like eval containing a static string
+ function addInternalSrc(elem, src) {
+ var i;
+ i = {
+ id: "(internal)",
+ elem: elem,
+ value: src
+ };
+ JSHINT.internals.push(i);
+ return i;
+ }
+
+ // name: string
+ // opts: { type: string, token: token, islet: bool }
+ function addlabel(name, opts) {
+ opts = opts || {};
+
+ var type = opts.type;
+ var token = opts.token;
+ var islet = opts.islet;
+
+ // Define label in the current function in the current scope.
+ if (type === "exception") {
+ if (_.has(funct["(context)"], name)) {
+ if (funct[name] !== true && !state.option.node) {
+ warning("W002", state.tokens.next, name);
+ }
+ }
+ }
+
+ if (_.has(funct, name) && !funct["(global)"]) {
+ if (funct[name] === true) {
+ if (state.option.latedef) {
+ if ((state.option.latedef === true && _.contains([funct[name], type], "unction")) ||
+ !_.contains([funct[name], type], "unction")) {
+ warning("W003", state.tokens.next, name);
+ }
+ }
+ } else {
+ if ((!state.option.shadow || _.contains([ "inner", "outer" ], state.option.shadow)) &&
+ type !== "exception" || funct["(blockscope)"].getlabel(name)) {
+ warning("W004", state.tokens.next, name);
+ }
+ }
+ }
+
+ if (funct["(context)"] && _.has(funct["(context)"], name) && type !== "function") {
+ if (state.option.shadow === "outer") {
+ warning("W123", state.tokens.next, name);
+ }
+ }
+
+ // if the identifier is from a let, adds it only to the current blockscope
+ if (islet) {
+ funct["(blockscope)"].current.add(name, type, state.tokens.curr);
+ if (funct["(blockscope)"].atTop() && exported[name]) {
+ state.tokens.curr.exported = true;
+ }
+ } else {
+ funct["(blockscope)"].shadow(name);
+ funct[name] = type;
+
+ if (token) {
+ funct["(tokens)"][name] = token;
+ }
+
+ setprop(funct, name, { unused: opts.unused || false });
+
+ if (funct["(global)"]) {
+ global[name] = funct;
+ if (_.has(implied, name)) {
+ if (state.option.latedef) {
+ if ((state.option.latedef === true && _.contains([funct[name], type], "unction")) ||
+ !_.contains([funct[name], type], "unction")) {
+ warning("W003", state.tokens.next, name);
}
- isLetExpr = true;
- // create a new block scope we use only for the current expression
- funct["(blockscope)"].stack();
- advance("let");
- advance("(");
- state.syntax["let"].fud.call(state.syntax["let"].fud, false);
- advance(")");
+ }
+
+ delete implied[name];
}
+ } else {
+ scope[name] = funct;
+ }
+ }
+ }
- if (state.tokens.next.id === "(end)")
- error("E006", state.tokens.curr);
+ function doOption() {
+ var nt = state.tokens.next;
+ var body = nt.body.split(",").map(function(s) { return s.trim(); });
+ var predef = {};
- advance();
+ if (nt.type === "globals") {
+ body.forEach(function(g) {
+ g = g.split(":");
+ var key = (g[0] || "").trim();
+ var val = (g[1] || "").trim();
- if (initial) {
- anonname = "anonymous";
- funct["(verb)"] = state.tokens.curr.value;
- }
+ if (key.charAt(0) === "-") {
+ key = key.slice(1);
+ val = false;
- if (initial === true && state.tokens.curr.fud) {
- left = state.tokens.curr.fud();
+ JSHINT.blacklist[key] = key;
+ delete predefined[key];
} else {
- if (state.tokens.curr.nud) {
- left = state.tokens.curr.nud();
- } else {
- error("E030", state.tokens.curr, state.tokens.curr.id);
- }
-
- while (rbp < state.tokens.next.lbp && !isEndOfExpr()) {
- isArray = state.tokens.curr.value === "Array";
- isObject = state.tokens.curr.value === "Object";
-
- // #527, new Foo.Array(), Foo.Array(), new Foo.Object(), Foo.Object()
- // Line breaks in IfStatement heads exist to satisfy the checkJSHint
- // "Line too long." error.
- if (left && (left.value || (left.first && left.first.value))) {
- // If the left.value is not "new", or the left.first.value is a "."
- // then safely assume that this is not "new Array()" and possibly
- // not "new Object()"...
- if (left.value !== "new" ||
- (left.first && left.first.value && left.first.value === ".")) {
- isArray = false;
- // ...In the case of Object, if the left.value and state.tokens.curr.value
- // are not equal, then safely assume that this not "new Object()"
- if (left.value !== state.tokens.curr.value) {
- isObject = false;
- }
- }
- }
-
- advance();
-
- if (isArray && state.tokens.curr.id === "(" && state.tokens.next.id === ")") {
- warning("W009", state.tokens.curr);
- }
-
- if (isObject && state.tokens.curr.id === "(" && state.tokens.next.id === ")") {
- warning("W010", state.tokens.curr);
- }
-
- if (left && state.tokens.curr.led) {
- left = state.tokens.curr.led(left);
- } else {
- error("E033", state.tokens.curr, state.tokens.curr.id);
- }
- }
+ predef[key] = (val === "true");
}
- if (isLetExpr) {
- funct["(blockscope)"].unstack();
+ });
+
+ combine(predefined, predef);
+
+ for (var key in predef) {
+ if (_.has(predef, key)) {
+ declared[key] = nt;
}
- return left;
+ }
}
-
-// Functions for conformance of style.
-
- function adjacent(left, right) {
- left = left || state.tokens.curr;
- right = right || state.tokens.next;
- if (state.option.white) {
- if (left.character !== right.from && left.line === right.line) {
- left.from += (left.character - left.from);
- warning("W011", left, left.value);
- }
- }
+ if (nt.type === "exported") {
+ body.forEach(function(e) {
+ exported[e] = true;
+ });
}
- function nobreak(left, right) {
- left = left || state.tokens.curr;
- right = right || state.tokens.next;
- if (state.option.white && (left.character !== right.from || left.line !== right.line)) {
- warning("W012", right, right.value);
+ if (nt.type === "members") {
+ membersOnly = membersOnly || {};
+
+ body.forEach(function(m) {
+ var ch1 = m.charAt(0);
+ var ch2 = m.charAt(m.length - 1);
+
+ if (ch1 === ch2 && (ch1 === "\"" || ch1 === "'")) {
+ m = m
+ .substr(1, m.length - 2)
+ .replace("\\\"", "\"");
}
+
+ membersOnly[m] = false;
+ });
}
- function nospace(left, right) {
- left = left || state.tokens.curr;
- right = right || state.tokens.next;
- if (state.option.white && !left.comment) {
- if (left.line === right.line) {
- adjacent(left, right);
- }
+ var numvals = [
+ "maxstatements",
+ "maxparams",
+ "maxdepth",
+ "maxcomplexity",
+ "maxerr",
+ "maxlen",
+ "indent"
+ ];
+
+ if (nt.type === "jshint" || nt.type === "jslint") {
+ body.forEach(function(g) {
+ g = g.split(":");
+ var key = (g[0] || "").trim();
+ var val = (g[1] || "").trim();
+
+ if (!checkOption(key, nt)) {
+ return;
}
+
+ if (numvals.indexOf(key) >= 0) {
+ // GH988 - numeric options can be disabled by setting them to `false`
+ if (val !== "false") {
+ val = +val;
+
+ if (typeof val !== "number" || !isFinite(val) || val <= 0 || Math.floor(val) !== val) {
+ error("E032", nt, g[1].trim());
+ return;
+ }
+
+ state.option[key] = val;
+ } else {
+ state.option[key] = key === "indent" ? 4 : false;
+ }
+
+ return;
+ }
+
+ if (key === "validthis") {
+ // `validthis` is valid only within a function scope.
+
+ if (funct["(global)"])
+ return void error("E009");
+
+ if (val !== "true" && val !== "false")
+ return void error("E002", nt);
+
+ state.option.validthis = (val === "true");
+ return;
+ }
+
+ if (key === "quotmark") {
+ switch (val) {
+ case "true":
+ case "false":
+ state.option.quotmark = (val === "true");
+ break;
+ case "double":
+ case "single":
+ state.option.quotmark = val;
+ break;
+ default:
+ error("E002", nt);
+ }
+ return;
+ }
+
+ if (key === "shadow") {
+ switch (val) {
+ case "true":
+ state.option.shadow = true;
+ break;
+ case "outer":
+ state.option.shadow = "outer";
+ break;
+ case "false":
+ case "inner":
+ state.option.shadow = "inner";
+ break;
+ default:
+ error("E002", nt);
+ }
+ return;
+ }
+
+ if (key === "unused") {
+ switch (val) {
+ case "true":
+ state.option.unused = true;
+ break;
+ case "false":
+ state.option.unused = false;
+ break;
+ case "vars":
+ case "strict":
+ state.option.unused = val;
+ break;
+ default:
+ error("E002", nt);
+ }
+ return;
+ }
+
+ if (key === "latedef") {
+ switch (val) {
+ case "true":
+ state.option.latedef = true;
+ break;
+ case "false":
+ state.option.latedef = false;
+ break;
+ case "nofunc":
+ state.option.latedef = "nofunc";
+ break;
+ default:
+ error("E002", nt);
+ }
+ return;
+ }
+
+ if (key === "ignore") {
+ switch (val) {
+ case "start":
+ state.ignoreLinterErrors = true;
+ break;
+ case "end":
+ state.ignoreLinterErrors = false;
+ break;
+ case "line":
+ state.ignoredLines[nt.line] = true;
+ removeIgnoredMessages();
+ break;
+ default:
+ error("E002", nt);
+ }
+ return;
+ }
+
+ var match = /^([+-])(W\d{3})$/g.exec(key);
+ if (match) {
+ // ignore for -W..., unignore for +W...
+ state.ignored[match[2]] = (match[1] === "-");
+ return;
+ }
+
+ var tn;
+ if (val === "true" || val === "false") {
+ if (nt.type === "jslint") {
+ tn = options.renamed[key] || key;
+ state.option[tn] = (val === "true");
+
+ if (options.inverted[tn] !== undefined) {
+ state.option[tn] = !state.option[tn];
+ }
+ } else {
+ state.option[key] = (val === "true");
+ }
+
+ if (key === "newcap") {
+ state.option["(explicitNewcap)"] = true;
+ }
+ return;
+ }
+
+ error("E002", nt);
+ });
+
+ assume();
+ }
+ }
+
+ // We need a peek function. If it has an argument, it peeks that much farther
+ // ahead. It is used to distinguish
+ // for ( var i in ...
+ // from
+ // for ( var i = ...
+
+ function peek(p) {
+ var i = p || 0, j = 0, t;
+
+ while (j <= i) {
+ t = lookahead[j];
+ if (!t) {
+ t = lookahead[j] = lex.token();
+ }
+ j += 1;
+ }
+ return t;
+ }
+
+ function peekIgnoreEOL() {
+ var i = 0;
+ var t;
+ do {
+ t = peek(i++);
+ } while (t.id === "(endline)");
+ return t;
+ }
+
+ // Produce the next token. It looks for programming errors.
+
+ function advance(id, t) {
+
+ switch (state.tokens.curr.id) {
+ case "(number)":
+ if (state.tokens.next.id === ".") {
+ warning("W005", state.tokens.curr);
+ }
+ break;
+ case "-":
+ if (state.tokens.next.id === "-" || state.tokens.next.id === "--") {
+ warning("W006");
+ }
+ break;
+ case "+":
+ if (state.tokens.next.id === "+" || state.tokens.next.id === "++") {
+ warning("W007");
+ }
+ break;
}
- function nonadjacent(left, right) {
- if (state.option.white) {
- left = left || state.tokens.curr;
- right = right || state.tokens.next;
-
- if (left.value === ";" && right.value === ";") {
- return;
- }
-
- if (left.line === right.line && left.character === right.from) {
- left.from += (left.character - left.from);
- warning("W013", left, left.value);
- }
- }
- }
-
- function nobreaknonadjacent(left, right) {
- left = left || state.tokens.curr;
- right = right || state.tokens.next;
- if (!state.option.laxbreak && left.line !== right.line) {
- warning("W014", right, right.value);
- } else if (state.option.white) {
- left = left || state.tokens.curr;
- right = right || state.tokens.next;
- if (left.character === right.from) {
- left.from += (left.character - left.from);
- warning("W013", left, left.value);
- }
- }
- }
-
- function indentation(bias) {
- if (!state.option.white && !state.option["(explicitIndent)"]) {
- return;
- }
-
+ if (id && state.tokens.next.id !== id) {
+ if (t) {
if (state.tokens.next.id === "(end)") {
- return;
- }
-
- var i = indent + (bias || 0);
- if (state.tokens.next.from !== i) {
- warning("W015", state.tokens.next, state.tokens.next.value, i, state.tokens.next.from);
- }
- }
-
- function nolinebreak(t) {
- t = t || state.tokens.curr;
- if (t.line !== state.tokens.next.line) {
- warning("E022", t, t.value);
- }
- }
-
- function nobreakcomma(left, right) {
- if (left.line !== right.line) {
- if (!state.option.laxcomma) {
- if (comma.first) {
- warning("I001");
- comma.first = false;
- }
- warning("W014", left, right.value);
- }
- } else if (!left.comment && left.character !== right.from && state.option.white) {
- left.from += (left.character - left.from);
- warning("W011", left, left.value);
- }
- }
-
- function comma(opts) {
- opts = opts || {};
-
- if (!opts.peek) {
- nobreakcomma(state.tokens.curr, state.tokens.next);
- advance(",");
+ error("E019", t, t.id);
} else {
- nobreakcomma(state.tokens.prev, state.tokens.curr);
+ error("E020", state.tokens.next, id, t.id, t.line, state.tokens.next.value);
}
-
- // TODO: This is a temporary solution to fight against false-positives in
- // arrays and objects with trailing commas (see GH-363). The best solution
- // would be to extract all whitespace rules out of parser.
-
- if (state.tokens.next.value !== "]" && state.tokens.next.value !== "}") {
- nonadjacent(state.tokens.curr, state.tokens.next);
+ } else if (state.tokens.next.type !== "(identifier)" || state.tokens.next.value !== id) {
+ // parameter destructuring with rest operator
+ if (state.tokens.next.value === "...") {
+ if (!state.option.esnext) {
+ warning("W119", state.tokens.next, "spread/rest operator");
+ }
+ } else {
+ warning("W116", state.tokens.next, id, state.tokens.next.value);
}
+ }
+ }
- if (state.tokens.next.identifier && !(opts.property && state.option.inES5())) {
- // Keywords that cannot follow a comma operator.
- switch (state.tokens.next.value) {
- case "break":
- case "case":
- case "catch":
- case "continue":
- case "default":
- case "do":
- case "else":
- case "finally":
- case "for":
- case "if":
- case "in":
- case "instanceof":
- case "return":
- case "switch":
- case "throw":
- case "try":
- case "var":
- case "let":
- case "while":
- case "with":
- error("E024", state.tokens.next, state.tokens.next.value);
- return false;
- }
+ state.tokens.prev = state.tokens.curr;
+ state.tokens.curr = state.tokens.next;
+ for (;;) {
+ state.tokens.next = lookahead.shift() || lex.token();
+
+ if (!state.tokens.next) { // No more tokens left, give up
+ quit("E041", state.tokens.curr.line);
+ }
+
+ if (state.tokens.next.id === "(end)" || state.tokens.next.id === "(error)") {
+ return;
+ }
+
+ if (state.tokens.next.check) {
+ state.tokens.next.check();
+ }
+
+ if (state.tokens.next.isSpecial) {
+ doOption();
+ } else {
+ if (state.tokens.next.id !== "(endline)") {
+ break;
}
+ }
+ }
+ }
- if (state.tokens.next.type === "(punctuator)") {
- switch (state.tokens.next.value) {
- case "}":
- case "]":
- case ",":
- if (opts.allowTrailing) {
- return true;
- }
+ function isInfix(token) {
+ return token.infix || (!token.identifier && !!token.led);
+ }
- /* falls through */
- case ")":
- error("E024", state.tokens.next, state.tokens.next.value);
- return false;
+ function isEndOfExpr() {
+ var curr = state.tokens.curr;
+ var next = state.tokens.next;
+ if (next.id === ";" || next.id === "}" || next.id === ":") {
+ return true;
+ }
+ if (isInfix(next) === isInfix(curr) || (curr.id === "yield" && state.option.inMoz(true))) {
+ return curr.line !== next.line;
+ }
+ return false;
+ }
+
+ function isBeginOfExpr(prev) {
+ return !prev.left && prev.arity !== "unary";
+ }
+
+ // This is the heart of JSHINT, the Pratt parser. In addition to parsing, it
+ // is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is
+ // like .nud except that it is only used on the first token of a statement.
+ // Having .fud makes it much easier to define statement-oriented languages like
+ // JavaScript. I retained Pratt's nomenclature.
+
+ // .nud Null denotation
+ // .fud First null denotation
+ // .led Left denotation
+ // lbp Left binding power
+ // rbp Right binding power
+
+ // They are elements of the parsing method called Top Down Operator Precedence.
+
+ function expression(rbp, initial) {
+ var left, isArray = false, isObject = false, isLetExpr = false;
+
+ state.nameStack.push();
+
+ // if current expression is a let expression
+ if (!initial && state.tokens.next.value === "let" && peek(0).value === "(") {
+ if (!state.option.inMoz(true)) {
+ warning("W118", state.tokens.next, "let expressions");
+ }
+ isLetExpr = true;
+ // create a new block scope we use only for the current expression
+ funct["(blockscope)"].stack();
+ advance("let");
+ advance("(");
+ state.syntax["let"].fud.call(state.syntax["let"].fud, false);
+ advance(")");
+ }
+
+ if (state.tokens.next.id === "(end)")
+ error("E006", state.tokens.curr);
+
+ if (state.tokens.next.type === "(template)") {
+ doTemplateLiteral();
+ }
+
+ var isDangerous =
+ state.option.asi &&
+ state.tokens.prev.line < state.tokens.curr.line &&
+ _.contains(["]", ")"], state.tokens.prev.id) &&
+ _.contains(["[", "("], state.tokens.curr.id);
+
+ if (isDangerous)
+ warning("W014", state.tokens.curr, state.tokens.curr.id);
+
+ advance();
+
+ if (initial) {
+ funct["(verb)"] = state.tokens.curr.value;
+ state.tokens.curr.beginsStmt = true;
+ }
+
+ if (initial === true && state.tokens.curr.fud) {
+ left = state.tokens.curr.fud();
+ } else {
+ if (state.tokens.curr.nud) {
+ left = state.tokens.curr.nud();
+ } else {
+ error("E030", state.tokens.curr, state.tokens.curr.id);
+ }
+
+ while (rbp < state.tokens.next.lbp && !isEndOfExpr()) {
+ isArray = state.tokens.curr.value === "Array";
+ isObject = state.tokens.curr.value === "Object";
+
+ // #527, new Foo.Array(), Foo.Array(), new Foo.Object(), Foo.Object()
+ // Line breaks in IfStatement heads exist to satisfy the checkJSHint
+ // "Line too long." error.
+ if (left && (left.value || (left.first && left.first.value))) {
+ // If the left.value is not "new", or the left.first.value is a "."
+ // then safely assume that this is not "new Array()" and possibly
+ // not "new Object()"...
+ if (left.value !== "new" ||
+ (left.first && left.first.value && left.first.value === ".")) {
+ isArray = false;
+ // ...In the case of Object, if the left.value and state.tokens.curr.value
+ // are not equal, then safely assume that this not "new Object()"
+ if (left.value !== state.tokens.curr.value) {
+ isObject = false;
}
- }
- return true;
- }
-
- // Functional constructors for making the symbols that will be inherited by
- // tokens.
-
- function symbol(s, p) {
- var x = state.syntax[s];
- if (!x || typeof x !== "object") {
- state.syntax[s] = x = {
- id: s,
- lbp: p,
- value: s
- };
- }
- return x;
- }
-
- function delim(s) {
- return symbol(s, 0);
- }
-
- function stmt(s, f) {
- var x = delim(s);
- x.identifier = x.reserved = true;
- x.fud = f;
- return x;
- }
-
- function blockstmt(s, f) {
- var x = stmt(s, f);
- x.block = true;
- return x;
- }
-
- function reserveName(x) {
- var c = x.id.charAt(0);
- if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z")) {
- x.identifier = x.reserved = true;
- }
- return x;
- }
-
- function prefix(s, f) {
- var x = symbol(s, 150);
- reserveName(x);
-
- x.nud = (typeof f === "function") ? f : function () {
- this.right = expression(150);
- this.arity = "unary";
-
- if (this.id === "++" || this.id === "--") {
- if (state.option.plusplus) {
- warning("W016", this, this.id);
- } else if (this.right && (!this.right.identifier || isReserved(this.right)) &&
- this.right.id !== "." && this.right.id !== "[") {
- warning("W017", this);
- }
- }
-
- return this;
- };
-
- return x;
- }
-
- function type(s, f) {
- var x = delim(s);
- x.type = s;
- x.nud = f;
- return x;
- }
-
- function reserve(name, func) {
- var x = type(name, func);
- x.identifier = true;
- x.reserved = true;
- return x;
- }
-
- function FutureReservedWord(name, meta) {
- var x = type(name, (meta && meta.nud) || function () {
- return this;
- });
-
- meta = meta || {};
- meta.isFutureReservedWord = true;
-
- x.value = name;
- x.identifier = true;
- x.reserved = true;
- x.meta = meta;
-
- return x;
- }
-
- function reservevar(s, v) {
- return reserve(s, function () {
- if (typeof v === "function") {
- v(this);
- }
- return this;
- });
- }
-
- function infix(s, f, p, w) {
- var x = symbol(s, p);
- reserveName(x);
- x.infix = true;
- x.led = function (left) {
- if (!w) {
- nobreaknonadjacent(state.tokens.prev, state.tokens.curr);
- nonadjacent(state.tokens.curr, state.tokens.next);
- }
- if (s === "in" && left.id === "!") {
- warning("W018", left, "!");
- }
- if (typeof f === "function") {
- return f(left, this);
- } else {
- this.left = left;
- this.right = expression(p);
- return this;
- }
- };
- return x;
- }
-
-
- function application(s) {
- var x = symbol(s, 42);
-
- x.led = function (left) {
- if (!state.option.inESNext()) {
- warning("W104", state.tokens.curr, "arrow function syntax (=>)");
- }
-
- nobreaknonadjacent(state.tokens.prev, state.tokens.curr);
- nonadjacent(state.tokens.curr, state.tokens.next);
-
- this.left = left;
- this.right = doFunction(undefined, undefined, false, left);
- return this;
- };
- return x;
- }
-
- function relation(s, f) {
- var x = symbol(s, 100);
-
- x.led = function (left) {
- nobreaknonadjacent(state.tokens.prev, state.tokens.curr);
- nonadjacent(state.tokens.curr, state.tokens.next);
- var right = expression(100);
-
- if (isIdentifier(left, "NaN") || isIdentifier(right, "NaN")) {
- warning("W019", this);
- } else if (f) {
- f.apply(this, [left, right]);
- }
-
- if (!left || !right) {
- quit("E041", state.tokens.curr.line);
- }
-
- if (left.id === "!") {
- warning("W018", left, "!");
- }
-
- if (right.id === "!") {
- warning("W018", right, "!");
- }
-
- this.left = left;
- this.right = right;
- return this;
- };
- return x;
- }
-
- function isPoorRelation(node) {
- return node &&
- ((node.type === "(number)" && +node.value === 0) ||
- (node.type === "(string)" && node.value === "") ||
- (node.type === "null" && !state.option.eqnull) ||
- node.type === "true" ||
- node.type === "false" ||
- node.type === "undefined");
- }
-
- // Checks whether the 'typeof' operator is used with the correct
- // value. For docs on 'typeof' see:
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
-
- function isTypoTypeof(left, right) {
- if (state.option.notypeof)
- return false;
-
- if (!left || !right)
- return false;
-
- var values = [
- "undefined", "object", "boolean", "number",
- "string", "function", "xml", "object"
- ];
-
- if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)")
- return !_.contains(values, left.value);
-
- return false;
- }
-
- function findNativePrototype(left) {
- var natives = [
- "Array", "ArrayBuffer", "Boolean", "Collator", "DataView", "Date",
- "DateTimeFormat", "Error", "EvalError", "Float32Array", "Float64Array",
- "Function", "Infinity", "Intl", "Int16Array", "Int32Array", "Int8Array",
- "Iterator", "Number", "NumberFormat", "Object", "RangeError",
- "ReferenceError", "RegExp", "StopIteration", "String", "SyntaxError",
- "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray",
- "URIError"
- ];
-
- function walkPrototype(obj) {
- if (typeof obj !== "object") return;
- return obj.right === "prototype" ? obj : walkPrototype(obj.left);
- }
-
- function walkNative(obj) {
- while (!obj.identifier && typeof obj.left === "object")
- obj = obj.left;
-
- if (obj.identifier && natives.indexOf(obj.value) >= 0)
- return obj.value;
- }
-
- var prototype = walkPrototype(left);
- if (prototype) return walkNative(prototype);
- }
-
- function assignop(s, f, p) {
- var x = infix(s, typeof f === "function" ? f : function (left, that) {
- that.left = left;
-
- if (left) {
- if (state.option.freeze) {
- var nativeObject = findNativePrototype(left);
- if (nativeObject)
- warning("W121", left, nativeObject);
- }
-
- if (predefined[left.value] === false &&
- scope[left.value]["(global)"] === true) {
- warning("W020", left);
- } else if (left["function"]) {
- warning("W021", left, left.value);
- }
-
- if (funct[left.value] === "const") {
- error("E013", left, left.value);
- }
-
- if (left.id === ".") {
- if (!left.left) {
- warning("E031", that);
- } else if (left.left.value === "arguments" && !state.directive["use strict"]) {
- warning("E031", that);
- }
-
- that.right = expression(10);
- return that;
- } else if (left.id === "[") {
- if (state.tokens.curr.left.first) {
- state.tokens.curr.left.first.forEach(function (t) {
- if (funct[t.value] === "const") {
- error("E013", t, t.value);
- }
- });
- } else if (!left.left) {
- warning("E031", that);
- } else if (left.left.value === "arguments" && !state.directive["use strict"]) {
- warning("E031", that);
- }
- that.right = expression(10);
- return that;
- } else if (left.identifier && !isReserved(left)) {
- if (funct[left.value] === "exception") {
- warning("W022", left);
- }
- that.right = expression(10);
- return that;
- }
-
- if (left === state.syntax["function"]) {
- warning("W023", state.tokens.curr);
- }
- }
-
- error("E031", that);
- }, p);
-
- x.exps = true;
- x.assign = true;
- return x;
- }
-
-
- function bitwise(s, f, p) {
- var x = symbol(s, p);
- reserveName(x);
- x.led = (typeof f === "function") ? f : function (left) {
- if (state.option.bitwise) {
- warning("W016", this, this.id);
- }
- this.left = left;
- this.right = expression(p);
- return this;
- };
- return x;
- }
-
-
- function bitwiseassignop(s) {
- return assignop(s, function (left, that) {
- if (state.option.bitwise) {
- warning("W016", that, that.id);
- }
- nonadjacent(state.tokens.prev, state.tokens.curr);
- nonadjacent(state.tokens.curr, state.tokens.next);
- if (left) {
- if (left.id === "." || left.id === "[" ||
- (left.identifier && !isReserved(left))) {
- expression(10);
- return that;
- }
- if (left === state.syntax["function"]) {
- warning("W023", state.tokens.curr);
- }
- return that;
- }
- error("E031", that);
- }, 20);
- }
-
-
- function suffix(s) {
- var x = symbol(s, 150);
-
- x.led = function (left) {
- if (state.option.plusplus) {
- warning("W016", this, this.id);
- } else if ((!left.identifier || isReserved(left)) && left.id !== "." && left.id !== "[") {
- warning("W017", this);
- }
-
- this.left = left;
- return this;
- };
- return x;
- }
-
- // fnparam means that this identifier is being defined as a function
- // argument (see identifier())
- // prop means that this identifier is that of an object property
-
- function optionalidentifier(fnparam, prop) {
- if (!state.tokens.next.identifier) {
- return;
+ }
}
advance();
- var curr = state.tokens.curr;
- var val = state.tokens.curr.value;
-
- if (!isReserved(curr)) {
- return val;
+ if (isArray && state.tokens.curr.id === "(" && state.tokens.next.id === ")") {
+ warning("W009", state.tokens.curr);
}
- if (prop) {
- if (state.option.inES5()) {
- return val;
- }
+ if (isObject && state.tokens.curr.id === "(" && state.tokens.next.id === ")") {
+ warning("W010", state.tokens.curr);
}
- if (fnparam && val === "undefined") {
- return val;
+ if (left && state.tokens.curr.led) {
+ left = state.tokens.curr.led(left);
+ } else {
+ error("E033", state.tokens.curr, state.tokens.curr.id);
+ }
+ }
+ }
+ if (isLetExpr) {
+ funct["(blockscope)"].unstack();
+ }
+
+ state.nameStack.pop();
+
+ return left;
+ }
+
+
+ // Functions for conformance of style.
+
+ function nobreaknonadjacent(left, right) {
+ left = left || state.tokens.curr;
+ right = right || state.tokens.next;
+ if (!state.option.laxbreak && left.line !== right.line) {
+ warning("W014", right, right.value);
+ }
+ }
+
+ function nolinebreak(t) {
+ t = t || state.tokens.curr;
+ if (t.line !== state.tokens.next.line) {
+ warning("E022", t, t.value);
+ }
+ }
+
+ function nobreakcomma(left, right) {
+ if (left.line !== right.line) {
+ if (!state.option.laxcomma) {
+ if (comma.first) {
+ warning("I001");
+ comma.first = false;
+ }
+ warning("W014", left, right.value);
+ }
+ }
+ }
+
+ function comma(opts) {
+ opts = opts || {};
+
+ if (state.option.nocomma) {
+ warning("W127");
+ }
+
+ if (!opts.peek) {
+ nobreakcomma(state.tokens.curr, state.tokens.next);
+ advance(",");
+ } else {
+ nobreakcomma(state.tokens.prev, state.tokens.curr);
+ }
+
+ if (state.tokens.next.identifier && !(opts.property && state.option.inES5())) {
+ // Keywords that cannot follow a comma operator.
+ switch (state.tokens.next.value) {
+ case "break":
+ case "case":
+ case "catch":
+ case "continue":
+ case "default":
+ case "do":
+ case "else":
+ case "finally":
+ case "for":
+ case "if":
+ case "in":
+ case "instanceof":
+ case "return":
+ case "switch":
+ case "throw":
+ case "try":
+ case "var":
+ case "let":
+ case "while":
+ case "with":
+ error("E024", state.tokens.next, state.tokens.next.value);
+ return false;
+ }
+ }
+
+ if (state.tokens.next.type === "(punctuator)") {
+ switch (state.tokens.next.value) {
+ case "}":
+ case "]":
+ case ",":
+ if (opts.allowTrailing) {
+ return true;
}
- // Display an info message about reserved words as properties
- // and ES5 but do it only once.
- if (prop && !api.getCache("displayed:I002")) {
- api.setCache("displayed:I002", true);
- warning("I002");
+ /* falls through */
+ case ")":
+ error("E024", state.tokens.next, state.tokens.next.value);
+ return false;
+ }
+ }
+ return true;
+ }
+
+ // Functional constructors for making the symbols that will be inherited by
+ // tokens.
+
+ function symbol(s, p) {
+ var x = state.syntax[s];
+ if (!x || typeof x !== "object") {
+ state.syntax[s] = x = {
+ id: s,
+ lbp: p,
+ value: s
+ };
+ }
+ return x;
+ }
+
+ function delim(s) {
+ var x = symbol(s, 0);
+ x.delim = true;
+ return x;
+ }
+
+ function stmt(s, f) {
+ var x = delim(s);
+ x.identifier = x.reserved = true;
+ x.fud = f;
+ return x;
+ }
+
+ function blockstmt(s, f) {
+ var x = stmt(s, f);
+ x.block = true;
+ return x;
+ }
+
+ function reserveName(x) {
+ var c = x.id.charAt(0);
+ if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z")) {
+ x.identifier = x.reserved = true;
+ }
+ return x;
+ }
+
+ function prefix(s, f) {
+ var x = symbol(s, 150);
+ reserveName(x);
+
+ x.nud = (typeof f === "function") ? f : function() {
+ this.arity = "unary";
+ this.right = expression(150);
+
+ if (this.id === "++" || this.id === "--") {
+ if (state.option.plusplus) {
+ warning("W016", this, this.id);
+ } else if (this.right && (!this.right.identifier || isReserved(this.right)) &&
+ this.right.id !== "." && this.right.id !== "[") {
+ warning("W017", this);
+ }
+ }
+
+ return this;
+ };
+
+ return x;
+ }
+
+ function type(s, f) {
+ var x = delim(s);
+ x.type = s;
+ x.nud = f;
+ return x;
+ }
+
+ function reserve(name, func) {
+ var x = type(name, func);
+ x.identifier = true;
+ x.reserved = true;
+ return x;
+ }
+
+ function FutureReservedWord(name, meta) {
+ var x = type(name, (meta && meta.nud) || function() {
+ return this;
+ });
+
+ meta = meta || {};
+ meta.isFutureReservedWord = true;
+
+ x.value = name;
+ x.identifier = true;
+ x.reserved = true;
+ x.meta = meta;
+
+ return x;
+ }
+
+ function reservevar(s, v) {
+ return reserve(s, function() {
+ if (typeof v === "function") {
+ v(this);
+ }
+ return this;
+ });
+ }
+
+ function infix(s, f, p, w) {
+ var x = symbol(s, p);
+ reserveName(x);
+ x.infix = true;
+ x.led = function(left) {
+ if (!w) {
+ nobreaknonadjacent(state.tokens.prev, state.tokens.curr);
+ }
+ if (s === "in" && left.id === "!") {
+ warning("W018", left, "!");
+ }
+ if (typeof f === "function") {
+ return f(left, this);
+ } else {
+ this.left = left;
+ this.right = expression(p);
+ return this;
+ }
+ };
+ return x;
+ }
+
+
+ function application(s) {
+ var x = symbol(s, 42);
+
+ x.led = function(left) {
+ nobreaknonadjacent(state.tokens.prev, state.tokens.curr);
+
+ this.left = left;
+ this.right = doFunction(undefined, undefined, false, { loneArg: left });
+ return this;
+ };
+ return x;
+ }
+
+ function relation(s, f) {
+ var x = symbol(s, 100);
+
+ x.led = function(left) {
+ nobreaknonadjacent(state.tokens.prev, state.tokens.curr);
+ var right = expression(100);
+
+ if (isIdentifier(left, "NaN") || isIdentifier(right, "NaN")) {
+ warning("W019", this);
+ } else if (f) {
+ f.apply(this, [left, right]);
+ }
+
+ if (!left || !right) {
+ quit("E041", state.tokens.curr.line);
+ }
+
+ if (left.id === "!") {
+ warning("W018", left, "!");
+ }
+
+ if (right.id === "!") {
+ warning("W018", right, "!");
+ }
+
+ this.left = left;
+ this.right = right;
+ return this;
+ };
+ return x;
+ }
+
+ function isPoorRelation(node) {
+ return node &&
+ ((node.type === "(number)" && +node.value === 0) ||
+ (node.type === "(string)" && node.value === "") ||
+ (node.type === "null" && !state.option.eqnull) ||
+ node.type === "true" ||
+ node.type === "false" ||
+ node.type === "undefined");
+ }
+
+ // Checks whether the 'typeof' operator is used with the correct
+ // value. For docs on 'typeof' see:
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
+
+ function isTypoTypeof(left, right) {
+ if (state.option.notypeof)
+ return false;
+
+ if (!left || !right)
+ return false;
+
+ var values = [
+ "undefined", "object", "boolean", "number",
+ "string", "function", "xml", "object", "unknown"
+ ];
+
+ if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)")
+ return !_.contains(values, left.value);
+
+ return false;
+ }
+
+ function findNativePrototype(left) {
+ var natives = [
+ "Array", "ArrayBuffer", "Boolean", "Collator", "DataView", "Date",
+ "DateTimeFormat", "Error", "EvalError", "Float32Array", "Float64Array",
+ "Function", "Infinity", "Intl", "Int16Array", "Int32Array", "Int8Array",
+ "Iterator", "Number", "NumberFormat", "Object", "RangeError",
+ "ReferenceError", "RegExp", "StopIteration", "String", "SyntaxError",
+ "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray",
+ "URIError"
+ ];
+
+ function walkPrototype(obj) {
+ if (typeof obj !== "object") return;
+ return obj.right === "prototype" ? obj : walkPrototype(obj.left);
+ }
+
+ function walkNative(obj) {
+ while (!obj.identifier && typeof obj.left === "object")
+ obj = obj.left;
+
+ if (obj.identifier && natives.indexOf(obj.value) >= 0)
+ return obj.value;
+ }
+
+ var prototype = walkPrototype(left);
+ if (prototype) return walkNative(prototype);
+ }
+
+ function assignop(s, f, p) {
+ var x = infix(s, typeof f === "function" ? f : function(left, that) {
+ that.left = left;
+
+ if (left) {
+ if (state.option.freeze) {
+ var nativeObject = findNativePrototype(left);
+ if (nativeObject)
+ warning("W121", left, nativeObject);
}
- warning("W024", state.tokens.curr, state.tokens.curr.id);
+ if (predefined[left.value] === false &&
+ scope[left.value]["(global)"] === true) {
+ warning("W020", left);
+ } else if (left["function"]) {
+ warning("W021", left, left.value);
+ }
+
+ if (funct[left.value] === "const") {
+ error("E013", left, left.value);
+ }
+
+ if (left.id === ".") {
+ if (!left.left) {
+ warning("E031", that);
+ } else if (left.left.value === "arguments" && !state.directive["use strict"]) {
+ warning("E031", that);
+ }
+
+ state.nameStack.set(state.tokens.prev);
+ that.right = expression(10);
+ return that;
+ } else if (left.id === "[") {
+ if (state.tokens.curr.left.first) {
+ state.tokens.curr.left.first.forEach(function(t) {
+ if (t && funct[t.value] === "const") {
+ error("E013", t, t.value);
+ }
+ });
+ } else if (!left.left) {
+ warning("E031", that);
+ } else if (left.left.value === "arguments" && !state.directive["use strict"]) {
+ warning("E031", that);
+ }
+
+ state.nameStack.set(left.right);
+
+ that.right = expression(10);
+ return that;
+ } else if (left.identifier && !isReserved(left)) {
+ if (funct[left.value] === "exception") {
+ warning("W022", left);
+ }
+ state.nameStack.set(left);
+ that.right = expression(10);
+ return that;
+ }
+
+ if (left === state.syntax["function"]) {
+ warning("W023", state.tokens.curr);
+ }
+ }
+
+ error("E031", that);
+ }, p);
+
+ x.exps = true;
+ x.assign = true;
+ return x;
+ }
+
+
+ function bitwise(s, f, p) {
+ var x = symbol(s, p);
+ reserveName(x);
+ x.led = (typeof f === "function") ? f : function(left) {
+ if (state.option.bitwise) {
+ warning("W016", this, this.id);
+ }
+ this.left = left;
+ this.right = expression(p);
+ return this;
+ };
+ return x;
+ }
+
+
+ function bitwiseassignop(s) {
+ return assignop(s, function(left, that) {
+ if (state.option.bitwise) {
+ warning("W016", that, that.id);
+ }
+
+ if (left) {
+ if (left.id === "." || left.id === "[" ||
+ (left.identifier && !isReserved(left))) {
+ expression(10);
+ return that;
+ }
+ if (left === state.syntax["function"]) {
+ warning("W023", state.tokens.curr);
+ }
+ return that;
+ }
+ error("E031", that);
+ }, 20);
+ }
+
+
+ function suffix(s) {
+ var x = symbol(s, 150);
+
+ x.led = function(left) {
+ if (state.option.plusplus) {
+ warning("W016", this, this.id);
+ } else if ((!left.identifier || isReserved(left)) && left.id !== "." && left.id !== "[") {
+ warning("W017", this);
+ }
+
+ this.left = left;
+ return this;
+ };
+ return x;
+ }
+
+ // fnparam means that this identifier is being defined as a function
+ // argument (see identifier())
+ // prop means that this identifier is that of an object property
+ // exported means that the identifier is part of a valid ES6 `export` declaration
+
+ function optionalidentifier(fnparam, prop, preserve, exported) {
+ if (!state.tokens.next.identifier) {
+ return;
+ }
+
+ if (!preserve) {
+ advance();
+ }
+
+ var curr = state.tokens.curr;
+ var val = state.tokens.curr.value;
+
+ if (exported) {
+ state.tokens.curr.exported = true;
+ }
+
+ if (!isReserved(curr)) {
+ return val;
+ }
+
+ if (prop) {
+ if (state.option.inES5()) {
return val;
+ }
}
- // fnparam means that this identifier is being defined as a function
- // argument
- // prop means that this identifier is that of an object property
- function identifier(fnparam, prop) {
- var i = optionalidentifier(fnparam, prop);
- if (i) {
- return i;
- }
- if (state.tokens.curr.id === "function" && state.tokens.next.id === "(") {
- warning("W025");
- } else {
- error("E030", state.tokens.next, state.tokens.next.value);
- }
+ if (fnparam && val === "undefined") {
+ return val;
}
+ warning("W024", state.tokens.curr, state.tokens.curr.id);
+ return val;
+ }
- function reachable(s) {
- var i = 0, t;
- if (state.tokens.next.id !== ";" || noreach) {
- return;
- }
- for (;;) {
- do {
- t = peek(i);
- i += 1;
- } while (t.id != "(end)" && t.id === "(comment)");
-
- if (t.reach) {
- return;
- }
- if (t.id !== "(endline)") {
- if (t.id === "function") {
- if (state.option.latedef === true) {
- warning("W026", t);
- }
- break;
- }
-
- warning("W027", t, t.value, s);
- break;
- }
- }
+ // fnparam means that this identifier is being defined as a function
+ // argument
+ // prop means that this identifier is that of an object property
+ // `exported` means that the identifier token should be exported.
+ function identifier(fnparam, prop, exported) {
+ var i = optionalidentifier(fnparam, prop, false, exported);
+ if (i) {
+ return i;
}
+ // parameter destructuring with rest operator
+ if (state.tokens.next.value === "...") {
+ if (!state.option.esnext) {
+ warning("W119", state.tokens.next, "spread/rest operator");
+ }
+ } else {
+ error("E030", state.tokens.next, state.tokens.next.value);
- function statement(noindent) {
- var values;
- var i = indent, r, s = scope, t = state.tokens.next;
+ // The token should be consumed after a warning is issued so the parser
+ // can continue as though an identifier were found. The semicolon token
+ // should not be consumed in this way so that the parser interprets it as
+ // a statement delimeter;
+ if (state.tokens.next.id !== ";") {
+ advance();
+ }
+ }
+ }
- if (t.id === ";") {
- advance(";");
- return;
+
+ function reachable(controlToken) {
+ var i = 0, t;
+ if (state.tokens.next.id !== ";" || controlToken.inBracelessBlock) {
+ return;
+ }
+ for (;;) {
+ do {
+ t = peek(i);
+ i += 1;
+ } while (t.id != "(end)" && t.id === "(comment)");
+
+ if (t.reach) {
+ return;
+ }
+ if (t.id !== "(endline)") {
+ if (t.id === "function") {
+ if (state.option.latedef === true) {
+ warning("W026", t);
+ }
+ break;
}
- // Is this a labelled statement?
- var res = isReserved(t);
+ warning("W027", t, t.value, controlToken.value);
+ break;
+ }
+ }
+ }
- // We're being more tolerant here: if someone uses
- // a FutureReservedWord as a label, we warn but proceed
- // anyway.
-
- if (res && t.meta && t.meta.isFutureReservedWord && peek().id === ":") {
- warning("W024", t, t.id);
- res = false;
+ function parseFinalSemicolon() {
+ if (state.tokens.next.id !== ";") {
+ if (!state.option.asi) {
+ // If this is the last statement in a block that ends on
+ // the same line *and* option lastsemic is on, ignore the warning.
+ // Otherwise, complain about missing semicolon.
+ if (!state.option.lastsemic || state.tokens.next.id !== "}" ||
+ state.tokens.next.line !== state.tokens.curr.line) {
+ warningAt("W033", state.tokens.curr.line, state.tokens.curr.character);
}
+ }
+ } else {
+ advance(";");
+ }
+ }
- // detect a destructuring assignment
- if (_.has(["[", "{"], t.value)) {
- if (lookupBlockType().isDestAssign) {
- if (!state.option.inESNext()) {
- warning("W104", state.tokens.curr, "destructuring expression");
- }
- values = destructuringExpression();
- values.forEach(function (tok) {
- isundef(funct, "W117", tok.token, tok.id);
- });
- advance("=");
- destructuringExpressionMatch(values, expression(10, true));
- advance(";");
- return;
- }
- }
- if (t.identifier && !res && peek().id === ":") {
- advance();
- advance(":");
- scope = Object.create(s);
- addlabel(t.value, { type: "label" });
+ function statement() {
+ var i = indent, r, s = scope, t = state.tokens.next;
- if (!state.tokens.next.labelled && state.tokens.next.value !== "{") {
- warning("W028", state.tokens.next, t.value, state.tokens.next.value);
- }
-
- state.tokens.next.label = t.value;
- t = state.tokens.next;
- }
-
- // Is it a lonely block?
-
- if (t.id === "{") {
- // Is it a switch case block?
- //
- // switch (foo) {
- // case bar: { <= here.
- // ...
- // }
- // }
- var iscase = (funct["(verb)"] === "case" && state.tokens.curr.value === ":");
- block(true, true, false, false, iscase);
- return;
- }
-
- // Parse the statement.
-
- if (!noindent) {
- indentation();
- }
- r = expression(0, true);
-
- // Look for the final semicolon.
-
- if (!t.block) {
- if (!state.option.expr && (!r || !r.exps)) {
- warning("W030", state.tokens.curr);
- } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") {
- warning("W031", t);
- }
-
- if (state.tokens.next.id !== ";") {
- if (!state.option.asi) {
- // If this is the last statement in a block that ends on
- // the same line *and* option lastsemic is on, ignore the warning.
- // Otherwise, complain about missing semicolon.
- if (!state.option.lastsemic || state.tokens.next.id !== "}" ||
- state.tokens.next.line !== state.tokens.curr.line) {
- warningAt("W033", state.tokens.curr.line, state.tokens.curr.character);
- }
- }
- } else {
- adjacent(state.tokens.curr, state.tokens.next);
- advance(";");
- nonadjacent(state.tokens.curr, state.tokens.next);
- }
- }
-
- // Restore the indentation.
-
- indent = i;
- scope = s;
- return r;
+ if (t.id === ";") {
+ advance(";");
+ return;
}
+ // Is this a labelled statement?
+ var res = isReserved(t);
- function statements(startLine) {
- var a = [], p;
+ // We're being more tolerant here: if someone uses
+ // a FutureReservedWord as a label, we warn but proceed
+ // anyway.
- while (!state.tokens.next.reach && state.tokens.next.id !== "(end)") {
- if (state.tokens.next.id === ";") {
- p = peek();
-
- if (!p || (p.id !== "(" && p.id !== "[")) {
- warning("W032");
- }
-
- advance(";");
- } else {
- a.push(statement(startLine === state.tokens.next.line));
- }
- }
- return a;
+ if (res && t.meta && t.meta.isFutureReservedWord && peek().id === ":") {
+ warning("W024", t, t.id);
+ res = false;
}
-
- /*
- * read all directives
- * recognizes a simple form of asi, but always
- * warns, if it is used
- */
- function directives() {
- var i, p, pn;
-
- for (;;) {
- if (state.tokens.next.id === "(string)") {
- p = peek(0);
- if (p.id === "(endline)") {
- i = 1;
- do {
- pn = peek(i);
- i = i + 1;
- } while (pn.id === "(endline)");
-
- if (pn.id !== ";") {
- if (pn.id !== "(string)" && pn.id !== "(number)" &&
- pn.id !== "(regexp)" && pn.identifier !== true &&
- pn.id !== "}") {
- break;
- }
- warning("W033", state.tokens.next);
- } else {
- p = pn;
- }
- } else if (p.id === "}") {
- // Directive with no other statements, warn about missing semicolon
- warning("W033", p);
- } else if (p.id !== ";") {
- break;
- }
-
- indentation();
- advance();
- if (state.directive[state.tokens.curr.value]) {
- warning("W034", state.tokens.curr, state.tokens.curr.value);
- }
-
- if (state.tokens.curr.value === "use strict") {
- if (!state.option["(explicitNewcap)"])
- state.option.newcap = true;
- state.option.undef = true;
- }
-
- // there's no directive negation, so always set to true
- state.directive[state.tokens.curr.value] = true;
-
- if (p.id === ";") {
- advance(";");
- }
- continue;
- }
- break;
- }
- }
-
-
- /*
- * Parses a single block. A block is a sequence of statements wrapped in
- * braces.
- *
- * ordinary - true for everything but function bodies and try blocks.
- * stmt - true if block can be a single statement (e.g. in if/for/while).
- * isfunc - true if block is a function body
- * isfatarrow - true if its a body of a fat arrow function
- * iscase - true if block is a switch case block
- */
- function block(ordinary, stmt, isfunc, isfatarrow, iscase) {
- var a,
- b = inblock,
- old_indent = indent,
- m,
- s = scope,
- t,
- line,
- d;
-
- inblock = ordinary;
-
- if (!ordinary || !state.option.funcscope)
- scope = Object.create(scope);
-
- nonadjacent(state.tokens.curr, state.tokens.next);
- t = state.tokens.next;
-
- var metrics = funct["(metrics)"];
- metrics.nestedBlockDepth += 1;
- metrics.verifyMaxNestedBlockDepthPerFunction();
-
- if (state.tokens.next.id === "{") {
- advance("{");
-
- // create a new block scope
- funct["(blockscope)"].stack();
-
- line = state.tokens.curr.line;
- if (state.tokens.next.id !== "}") {
- indent += state.option.indent;
- while (!ordinary && state.tokens.next.from > indent) {
- indent += state.option.indent;
- }
-
- if (isfunc) {
- m = {};
- for (d in state.directive) {
- if (_.has(state.directive, d)) {
- m[d] = state.directive[d];
- }
- }
- directives();
-
- if (state.option.strict && funct["(context)"]["(global)"]) {
- if (!m["use strict"] && !state.directive["use strict"]) {
- warning("E007");
- }
- }
- }
-
- a = statements(line);
-
- metrics.statementCount += a.length;
-
- if (isfunc) {
- state.directive = m;
- }
-
- indent -= state.option.indent;
- if (line !== state.tokens.next.line) {
- indentation();
- }
- } else if (line !== state.tokens.next.line) {
- indentation();
- }
- advance("}", t);
-
- funct["(blockscope)"].unstack();
-
- indent = old_indent;
- } else if (!ordinary) {
- if (isfunc) {
- m = {};
- if (stmt && !isfatarrow && !state.option.inMoz(true)) {
- error("W118", state.tokens.curr, "function closure expressions");
- }
-
- if (!stmt) {
- for (d in state.directive) {
- if (_.has(state.directive, d)) {
- m[d] = state.directive[d];
- }
- }
- }
- expression(10);
-
- if (state.option.strict && funct["(context)"]["(global)"]) {
- if (!m["use strict"] && !state.directive["use strict"]) {
- warning("E007");
- }
- }
- } else {
- error("E021", state.tokens.next, "{", state.tokens.next.value);
- }
- } else {
-
- // check to avoid let declaration not within a block
- funct["(nolet)"] = true;
-
- if (!stmt || state.option.curly) {
- warning("W116", state.tokens.next, "{", state.tokens.next.value);
- }
-
- noreach = true;
- indent += state.option.indent;
- // test indentation only if statement is in new line
- a = [statement(state.tokens.next.line === state.tokens.curr.line)];
- indent -= state.option.indent;
- noreach = false;
-
- delete funct["(nolet)"];
- }
- // Don't clear and let it propagate out if it is "break", "return", or "throw" in switch case
- if (!(iscase && ["break", "return", "throw"].indexOf(funct["(verb)"]) != -1)) {
- funct["(verb)"] = null;
- }
-
- if (!ordinary || !state.option.funcscope) scope = s;
- inblock = b;
- if (ordinary && state.option.noempty && (!a || a.length === 0)) {
- warning("W035");
- }
- metrics.nestedBlockDepth -= 1;
- return a;
- }
-
-
- function countMember(m) {
- if (membersOnly && typeof membersOnly[m] !== "boolean") {
- warning("W036", state.tokens.curr, m);
- }
- if (typeof member[m] === "number") {
- member[m] += 1;
- } else {
- member[m] = 1;
- }
- }
-
-
- function note_implied(tkn) {
- var name = tkn.value;
- var desc = Object.getOwnPropertyDescriptor(implied, name);
-
- if (!desc)
- implied[name] = [tkn.line];
- else
- desc.value.push(tkn.line);
- }
-
-
- // Build the syntax table by declaring the syntactic elements of the language.
-
- type("(number)", function () {
- return this;
- });
-
- type("(string)", function () {
- return this;
- });
-
- state.syntax["(identifier)"] = {
- type: "(identifier)",
- lbp: 0,
- identifier: true,
-
- nud: function () {
- var v = this.value;
- var s = scope[v];
- var f;
- var block;
-
- if (typeof s === "function") {
- // Protection against accidental inheritance.
- s = undefined;
- } else if (!funct["(blockscope)"].current.has(v) && typeof s === "boolean") {
- f = funct;
- funct = functions[0];
- addlabel(v, { type: "var" });
- s = funct;
- funct = f;
- }
-
- block = funct["(blockscope)"].getlabel(v);
-
- // The name is in scope and defined in the current function.
- if (funct === s || block) {
- // Change 'unused' to 'var', and reject labels.
- // the name is in a block scope.
- switch (block ? block[v]["(type)"] : funct[v]) {
- case "unused":
- if (block) block[v]["(type)"] = "var";
- else funct[v] = "var";
- break;
- case "unction":
- if (block) block[v]["(type)"] = "function";
- else funct[v] = "function";
- this["function"] = true;
- break;
- case "const":
- setprop(funct, v, { unused: false });
- break;
- case "function":
- this["function"] = true;
- break;
- case "label":
- warning("W037", state.tokens.curr, v);
- break;
- }
- } else if (funct["(global)"]) {
- // The name is not defined in the function. If we are in the global
- // scope, then we have an undefined variable.
- //
- // Operators typeof and delete do not raise runtime errors even if
- // the base object of a reference is null so no need to display warning
- // if we're inside of typeof or delete.
-
- if (typeof predefined[v] !== "boolean") {
- // Attempting to subscript a null reference will throw an
- // error, even within the typeof and delete operators
- if (!(anonname === "typeof" || anonname === "delete") ||
- (state.tokens.next && (state.tokens.next.value === "." ||
- state.tokens.next.value === "["))) {
-
- // if we're in a list comprehension, variables are declared
- // locally and used before being defined. So we check
- // the presence of the given variable in the comp array
- // before declaring it undefined.
-
- if (!funct["(comparray)"].check(v)) {
- isundef(funct, "W117", state.tokens.curr, v);
- }
- }
- }
-
- note_implied(state.tokens.curr);
- } else {
- // If the name is already defined in the current
- // function, but not as outer, then there is a scope error.
-
- switch (funct[v]) {
- case "closure":
- case "function":
- case "var":
- case "unused":
- warning("W038", state.tokens.curr, v);
- break;
- case "label":
- warning("W037", state.tokens.curr, v);
- break;
- case "outer":
- case "global":
- break;
- default:
- // If the name is defined in an outer function, make an outer entry,
- // and if it was unused, make it var.
- if (s === true) {
- funct[v] = true;
- } else if (s === null) {
- warning("W039", state.tokens.curr, v);
- note_implied(state.tokens.curr);
- } else if (typeof s !== "object") {
- // Operators typeof and delete do not raise runtime errors even
- // if the base object of a reference is null so no need to
- //
- // display warning if we're inside of typeof or delete.
- // Attempting to subscript a null reference will throw an
- // error, even within the typeof and delete operators
- if (!(anonname === "typeof" || anonname === "delete") ||
- (state.tokens.next &&
- (state.tokens.next.value === "." || state.tokens.next.value === "["))) {
-
- isundef(funct, "W117", state.tokens.curr, v);
- }
- funct[v] = true;
- note_implied(state.tokens.curr);
- } else {
- switch (s[v]) {
- case "function":
- case "unction":
- this["function"] = true;
- s[v] = "closure";
- funct[v] = s["(global)"] ? "global" : "outer";
- break;
- case "var":
- case "unused":
- s[v] = "closure";
- funct[v] = s["(global)"] ? "global" : "outer";
- break;
- case "const":
- setprop(s, v, { unused: false });
- break;
- case "closure":
- funct[v] = s["(global)"] ? "global" : "outer";
- break;
- case "label":
- warning("W037", state.tokens.curr, v);
- }
- }
- }
- }
- return this;
- },
-
- led: function () {
- error("E033", state.tokens.next, state.tokens.next.value);
- }
- };
-
- type("(regexp)", function () {
- return this;
- });
-
- // ECMAScript parser
-
- delim("(endline)");
- delim("(begin)");
- delim("(end)").reach = true;
- delim("(error)").reach = true;
- delim("}").reach = true;
- delim(")");
- delim("]");
- delim("\"").reach = true;
- delim("'").reach = true;
- delim(";");
- delim(":").reach = true;
- delim("#");
-
- reserve("else");
- reserve("case").reach = true;
- reserve("catch");
- reserve("default").reach = true;
- reserve("finally");
- reservevar("arguments", function (x) {
- if (state.directive["use strict"] && funct["(global)"]) {
- warning("E008", x);
- }
- });
- reservevar("eval");
- reservevar("false");
- reservevar("Infinity");
- reservevar("null");
- reservevar("this", function (x) {
- if (state.directive["use strict"] && !state.option.validthis && ((funct["(statement)"] &&
- funct["(name)"].charAt(0) > "Z") || funct["(global)"])) {
- warning("W040", x);
- }
- });
- reservevar("true");
- reservevar("undefined");
-
- assignop("=", "assign", 20);
- assignop("+=", "assignadd", 20);
- assignop("-=", "assignsub", 20);
- assignop("*=", "assignmult", 20);
- assignop("/=", "assigndiv", 20).nud = function () {
- error("E014");
- };
- assignop("%=", "assignmod", 20);
-
- bitwiseassignop("&=", "assignbitand", 20);
- bitwiseassignop("|=", "assignbitor", 20);
- bitwiseassignop("^=", "assignbitxor", 20);
- bitwiseassignop("<<=", "assignshiftleft", 20);
- bitwiseassignop(">>=", "assignshiftright", 20);
- bitwiseassignop(">>>=", "assignshiftrightunsigned", 20);
- infix(",", function (left, that) {
- var expr;
- that.exprs = [left];
- if (!comma({peek: true})) {
- return that;
- }
- while (true) {
- if (!(expr = expression(10))) {
- break;
- }
- that.exprs.push(expr);
- if (state.tokens.next.value !== "," || !comma()) {
- break;
- }
- }
- return that;
- }, 10, true);
-
- infix("?", function (left, that) {
- increaseComplexityCount();
- that.left = left;
- that.right = expression(10);
- advance(":");
- that["else"] = expression(10);
- return that;
- }, 30);
-
- var orPrecendence = 40;
- infix("||", function (left, that) {
- increaseComplexityCount();
- that.left = left;
- that.right = expression(orPrecendence);
- return that;
- }, orPrecendence);
- infix("&&", "and", 50);
- bitwise("|", "bitor", 70);
- bitwise("^", "bitxor", 80);
- bitwise("&", "bitand", 90);
- relation("==", function (left, right) {
- var eqnull = state.option.eqnull && (left.value === "null" || right.value === "null");
-
- switch (true) {
- case !eqnull && state.option.eqeqeq:
- this.from = this.character;
- warning("W116", this, "===", "==");
- break;
- case isPoorRelation(left):
- warning("W041", this, "===", left.value);
- break;
- case isPoorRelation(right):
- warning("W041", this, "===", right.value);
- break;
- case isTypoTypeof(right, left):
- warning("W122", this, right.value);
- break;
- case isTypoTypeof(left, right):
- warning("W122", this, left.value);
- break;
- }
-
- return this;
- });
- relation("===", function (left, right) {
- if (isTypoTypeof(right, left)) {
- warning("W122", this, right.value);
- } else if (isTypoTypeof(left, right)) {
- warning("W122", this, left.value);
- }
- return this;
- });
- relation("!=", function (left, right) {
- var eqnull = state.option.eqnull &&
- (left.value === "null" || right.value === "null");
-
- if (!eqnull && state.option.eqeqeq) {
- this.from = this.character;
- warning("W116", this, "!==", "!=");
- } else if (isPoorRelation(left)) {
- warning("W041", this, "!==", left.value);
- } else if (isPoorRelation(right)) {
- warning("W041", this, "!==", right.value);
- } else if (isTypoTypeof(right, left)) {
- warning("W122", this, right.value);
- } else if (isTypoTypeof(left, right)) {
- warning("W122", this, left.value);
- }
- return this;
- });
- relation("!==", function (left, right) {
- if (isTypoTypeof(right, left)) {
- warning("W122", this, right.value);
- } else if (isTypoTypeof(left, right)) {
- warning("W122", this, left.value);
- }
- return this;
- });
- relation("<");
- relation(">");
- relation("<=");
- relation(">=");
- bitwise("<<", "shiftleft", 120);
- bitwise(">>", "shiftright", 120);
- bitwise(">>>", "shiftrightunsigned", 120);
- infix("in", "in", 120);
- infix("instanceof", "instanceof", 120);
- infix("+", function (left, that) {
- var right = expression(130);
- if (left && right && left.id === "(string)" && right.id === "(string)") {
- left.value += right.value;
- left.character = right.character;
- if (!state.option.scripturl && reg.javascriptURL.test(left.value)) {
- warning("W050", left);
- }
- return left;
- }
- that.left = left;
- that.right = right;
- return that;
- }, 130);
- prefix("+", "num");
- prefix("+++", function () {
- warning("W007");
- this.right = expression(150);
- this.arity = "unary";
- return this;
- });
- infix("+++", function (left) {
- warning("W007");
- this.left = left;
- this.right = expression(130);
- return this;
- }, 130);
- infix("-", "sub", 130);
- prefix("-", "neg");
- prefix("---", function () {
- warning("W006");
- this.right = expression(150);
- this.arity = "unary";
- return this;
- });
- infix("---", function (left) {
- warning("W006");
- this.left = left;
- this.right = expression(130);
- return this;
- }, 130);
- infix("*", "mult", 140);
- infix("/", "div", 140);
- infix("%", "mod", 140);
-
- suffix("++", "postinc");
- prefix("++", "preinc");
- state.syntax["++"].exps = true;
-
- suffix("--", "postdec");
- prefix("--", "predec");
- state.syntax["--"].exps = true;
- prefix("delete", function () {
- var p = expression(10);
- if (!p || (p.id !== "." && p.id !== "[")) {
- warning("W051");
- }
- this.first = p;
- return this;
- }).exps = true;
-
- prefix("~", function () {
- if (state.option.bitwise) {
- warning("W052", this, "~");
- }
- expression(150);
- return this;
- });
-
- prefix("...", function () {
+ // detect a module import declaration
+ if (t.value === "module" && t.type === "(identifier)") {
+ if (peek().type === "(identifier)") {
if (!state.option.inESNext()) {
- warning("W104", this, "spread/rest operator");
- }
- if (!state.tokens.next.identifier) {
- error("E030", state.tokens.next, state.tokens.next.value);
- }
- expression(150);
- return this;
- });
-
- prefix("!", function () {
- this.right = expression(150);
- this.arity = "unary";
-
- if (!this.right) { // '!' followed by nothing? Give up.
- quit("E041", this.line || 0);
- }
-
- if (bang[this.right.id] === true) {
- warning("W018", this, "!");
- }
- return this;
- });
-
- prefix("typeof", "typeof");
- prefix("new", function () {
- var c = expression(155), i;
- if (c && c.id !== "function") {
- if (c.identifier) {
- c["new"] = true;
- switch (c.value) {
- case "Number":
- case "String":
- case "Boolean":
- case "Math":
- case "JSON":
- warning("W053", state.tokens.prev, c.value);
- break;
- case "Function":
- if (!state.option.evil) {
- warning("W054");
- }
- break;
- case "Date":
- case "RegExp":
- case "this":
- break;
- default:
- if (c.id !== "function") {
- i = c.value.substr(0, 1);
- if (state.option.newcap && (i < "A" || i > "Z") && !_.has(global, c.value)) {
- warning("W055", state.tokens.curr);
- }
- }
- }
- } else {
- if (c.id !== "." && c.id !== "[" && c.id !== "(") {
- warning("W056", state.tokens.curr);
- }
- }
- } else {
- if (!state.option.supernew)
- warning("W057", this);
- }
- adjacent(state.tokens.curr, state.tokens.next);
- if (state.tokens.next.id !== "(" && !state.option.supernew) {
- warning("W058", state.tokens.curr, state.tokens.curr.value);
- }
- this.first = c;
- return this;
- });
- state.syntax["new"].exps = true;
-
- prefix("void").exps = true;
-
- infix(".", function (left, that) {
- adjacent(state.tokens.prev, state.tokens.curr);
- nobreak();
- var m = identifier(false, true);
-
- if (typeof m === "string") {
- countMember(m);
- }
-
- that.left = left;
- that.right = m;
-
- if (m && m === "hasOwnProperty" && state.tokens.next.value === "=") {
- warning("W001");
- }
-
- if (left && left.value === "arguments" && (m === "callee" || m === "caller")) {
- if (state.option.noarg)
- warning("W059", left, m);
- else if (state.directive["use strict"])
- error("E008");
- } else if (!state.option.evil && left && left.value === "document" &&
- (m === "write" || m === "writeln")) {
- warning("W060", left);
- }
-
- if (!state.option.evil && (m === "eval" || m === "execScript")) {
- warning("W061");
- }
-
- return that;
- }, 160, true);
-
- infix("(", function (left, that) {
- if (state.tokens.prev.id !== "}" && state.tokens.prev.id !== ")") {
- nobreak(state.tokens.prev, state.tokens.curr);
- }
-
- nospace();
- if (state.option.immed && left && !left.immed && left.id === "function") {
- warning("W062");
- }
-
- var n = 0;
- var p = [];
-
- if (left) {
- if (left.type === "(identifier)") {
- if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) {
- if ("Number String Boolean Date Object".indexOf(left.value) === -1) {
- if (left.value === "Math") {
- warning("W063", left);
- } else if (state.option.newcap) {
- warning("W064", left);
- }
- }
- }
- }
- }
-
- if (state.tokens.next.id !== ")") {
- for (;;) {
- p[p.length] = expression(10);
- n += 1;
- if (state.tokens.next.id !== ",") {
- break;
- }
- comma();
- }
- }
-
- advance(")");
- nospace(state.tokens.prev, state.tokens.curr);
-
- if (typeof left === "object") {
- if (state.option.inES3() && left.value === "parseInt" && n === 1) {
- warning("W065", state.tokens.curr);
- }
- if (!state.option.evil) {
- if (left.value === "eval" || left.value === "Function" ||
- left.value === "execScript") {
- warning("W061", left);
-
- if (p[0] && [0].id === "(string)") {
- addInternalSrc(left, p[0].value);
- }
- } else if (p[0] && p[0].id === "(string)" &&
- (left.value === "setTimeout" ||
- left.value === "setInterval")) {
- warning("W066", left);
- addInternalSrc(left, p[0].value);
-
- // window.setTimeout/setInterval
- } else if (p[0] && p[0].id === "(string)" &&
- left.value === "." &&
- left.left.value === "window" &&
- (left.right === "setTimeout" ||
- left.right === "setInterval")) {
- warning("W066", left);
- addInternalSrc(left, p[0].value);
- }
- }
- if (!left.identifier && left.id !== "." && left.id !== "[" &&
- left.id !== "(" && left.id !== "&&" && left.id !== "||" &&
- left.id !== "?") {
- warning("W067", left);
- }
- }
-
- that.left = left;
- return that;
- }, 155, true).exps = true;
-
- prefix("(", function () {
- nospace();
- var bracket, brackets = [];
- var pn, pn1, i = 0;
- var ret;
-
- do {
- pn = peek(i);
- i += 1;
- pn1 = peek(i);
- i += 1;
- } while (pn.value !== ")" && pn1.value !== "=>" && pn1.value !== ";" && pn1.type !== "(end)");
-
- if (state.tokens.next.id === "function") {
- state.tokens.next.immed = true;
- }
-
- var exprs = [];
-
- if (state.tokens.next.id !== ")") {
- for (;;) {
- if (pn1.value === "=>" && state.tokens.next.value === "{") {
- bracket = state.tokens.next;
- bracket.left = destructuringExpression();
- brackets.push(bracket);
- for (var t in bracket.left) {
- exprs.push(bracket.left[t].token);
- }
- } else {
- exprs.push(expression(10));
- }
- if (state.tokens.next.id !== ",") {
- break;
- }
- comma();
- }
- }
-
- advance(")", this);
- nospace(state.tokens.prev, state.tokens.curr);
- if (state.option.immed && exprs[0] && exprs[0].id === "function") {
- if (state.tokens.next.id !== "(" &&
- (state.tokens.next.id !== "." || (peek().value !== "call" && peek().value !== "apply"))) {
- warning("W068", this);
- }
- }
-
- if (state.tokens.next.value === "=>") {
- return exprs;
- }
- if (!exprs.length) {
- return;
- }
- if (exprs.length > 1) {
- ret = Object.create(state.syntax[","]);
- ret.exprs = exprs;
- } else {
- ret = exprs[0];
- }
- if (ret) {
- ret.paren = true;
- }
- return ret;
- });
-
- application("=>");
-
- infix("[", function (left, that) {
- nobreak(state.tokens.prev, state.tokens.curr);
- nospace();
- var e = expression(10), s;
- if (e && e.type === "(string)") {
- if (!state.option.evil && (e.value === "eval" || e.value === "execScript")) {
- warning("W061", that);
- }
-
- countMember(e.value);
- if (!state.option.sub && reg.identifier.test(e.value)) {
- s = state.syntax[e.value];
- if (!s || !isReserved(s)) {
- warning("W069", state.tokens.prev, e.value);
- }
- }
- }
- advance("]", that);
-
- if (e && e.value === "hasOwnProperty" && state.tokens.next.value === "=") {
- warning("W001");
- }
-
- nospace(state.tokens.prev, state.tokens.curr);
- that.left = left;
- that.right = e;
- return that;
- }, 160, true);
-
- function comprehensiveArrayExpression() {
- var res = {};
- res.exps = true;
- funct["(comparray)"].stack();
-
- // Handle reversed for expressions, used in spidermonkey
- var reversed = false;
- if (state.tokens.next.value !== "for") {
- reversed = true;
- if (!state.option.inMoz(true)) {
- warning("W116", state.tokens.next, "for", state.tokens.next.value);
- }
- funct["(comparray)"].setState("use");
- res.right = expression(10);
- }
-
- advance("for");
- if (state.tokens.next.value === "each") {
- advance("each");
- if (!state.option.inMoz(true)) {
- warning("W118", state.tokens.curr, "for each");
- }
- }
- advance("(");
- funct["(comparray)"].setState("define");
- res.left = expression(130);
- if (_.contains(["in", "of"], state.tokens.next.value)) {
- advance();
- } else {
- error("E045", state.tokens.curr);
- }
- funct["(comparray)"].setState("generate");
- expression(10);
-
- advance(")");
- if (state.tokens.next.value === "if") {
- advance("if");
- advance("(");
- funct["(comparray)"].setState("filter");
- res.filter = expression(10);
- advance(")");
- }
-
- if (!reversed) {
- funct["(comparray)"].setState("use");
- res.right = expression(10);
- }
-
- advance("]");
- funct["(comparray)"].unstack();
- return res;
- }
-
- prefix("[", function () {
- var blocktype = lookupBlockType(true);
- if (blocktype.isCompArray) {
- if (!state.option.inESNext()) {
- warning("W119", state.tokens.curr, "array comprehension");
- }
- return comprehensiveArrayExpression();
- } else if (blocktype.isDestAssign && !state.option.inESNext()) {
- warning("W104", state.tokens.curr, "destructuring assignment");
- }
- var b = state.tokens.curr.line !== state.tokens.next.line;
- this.first = [];
- if (b) {
- indent += state.option.indent;
- if (state.tokens.next.from === indent + state.option.indent) {
- indent += state.option.indent;
- }
- }
- while (state.tokens.next.id !== "(end)") {
- while (state.tokens.next.id === ",") {
- if (!state.option.inES5())
- warning("W070");
- advance(",");
- }
- if (state.tokens.next.id === "]") {
- break;
- }
- if (b && state.tokens.curr.line !== state.tokens.next.line) {
- indentation();
- }
- this.first.push(expression(10));
- if (state.tokens.next.id === ",") {
- comma({ allowTrailing: true });
- if (state.tokens.next.id === "]" && !state.option.inES5(true)) {
- warning("W070", state.tokens.curr);
- break;
- }
- } else {
- break;
- }
- }
- if (b) {
- indent -= state.option.indent;
- indentation();
- }
- advance("]", this);
- return this;
- }, 160);
-
-
- function property_name() {
- var id = optionalidentifier(false, true);
-
- if (!id) {
- if (state.tokens.next.id === "(string)") {
- id = state.tokens.next.value;
- advance();
- } else if (state.tokens.next.id === "(number)") {
- id = state.tokens.next.value.toString();
- advance();
- }
- }
-
- if (id === "hasOwnProperty") {
- warning("W001");
- }
-
- return id;
- }
-
- function functionparams(parsed) {
- var curr, next;
- var params = [];
- var ident;
- var tokens = [];
- var t;
- var pastDefault = false;
-
- if (parsed) {
- if (Array.isArray(parsed)) {
- for (var i in parsed) {
- curr = parsed[i];
- if (_.contains(["{", "["], curr.id)) {
- for (t in curr.left) {
- t = tokens[t];
- if (t.id) {
- params.push(t.id);
- addlabel(t.id, { type: "unused", token: t.token });
- }
- }
- } else if (curr.value === "...") {
- if (!state.option.inESNext()) {
- warning("W104", curr, "spread/rest operator");
- }
- continue;
- } else {
- params.push(curr.value);
- addlabel(curr.value, { type: "unused", token: curr });
- }
- }
- return params;
- } else {
- if (parsed.identifier === true) {
- addlabel(parsed.value, { type: "unused", token: parsed });
- return [parsed];
- }
- }
- }
-
- next = state.tokens.next;
-
- advance("(");
- nospace();
-
- if (state.tokens.next.id === ")") {
- advance(")");
- return;
- }
-
- for (;;) {
- if (_.contains(["{", "["], state.tokens.next.id)) {
- tokens = destructuringExpression();
- for (t in tokens) {
- t = tokens[t];
- if (t.id) {
- params.push(t.id);
- addlabel(t.id, { type: "unused", token: t.token });
- }
- }
- } else if (state.tokens.next.value === "...") {
- if (!state.option.inESNext()) {
- warning("W104", state.tokens.next, "spread/rest operator");
- }
- advance("...");
- nospace();
- ident = identifier(true);
- params.push(ident);
- addlabel(ident, { type: "unused", token: state.tokens.curr });
- } else {
- ident = identifier(true);
- params.push(ident);
- addlabel(ident, { type: "unused", token: state.tokens.curr });
- }
-
- // it is a syntax error to have a regular argument after a default argument
- if (pastDefault) {
- if (state.tokens.next.id !== "=") {
- error("E051", state.tokens.current);
- }
- }
- if (state.tokens.next.id === "=") {
- if (!state.option.inESNext()) {
- warning("W119", state.tokens.next, "default parameters");
- }
- advance("=");
- pastDefault = true;
- expression(10);
- }
- if (state.tokens.next.id === ",") {
- comma();
- } else {
- advance(")", next);
- nospace(state.tokens.prev, state.tokens.curr);
- return params;
- }
- }
- }
-
- function setprop(funct, name, values) {
- if (!funct["(properties)"][name]) {
- funct["(properties)"][name] = { unused: false };
- }
-
- _.extend(funct["(properties)"][name], values);
- }
-
- function getprop(funct, name, prop) {
- if (!funct["(properties)"][name])
- return null;
-
- return funct["(properties)"][name][prop] || null;
- }
-
- function functor(name, token, scope, overwrites) {
- var funct = {
- "(name)" : name,
- "(breakage)" : 0,
- "(loopage)" : 0,
- "(scope)" : scope,
- "(tokens)" : {},
- "(properties)": {},
-
- "(catch)" : false,
- "(global)" : false,
-
- "(line)" : null,
- "(character)" : null,
- "(metrics)" : null,
- "(statement)" : null,
- "(context)" : null,
- "(blockscope)": null,
- "(comparray)" : null,
- "(generator)" : null,
- "(params)" : null
- };
-
- if (token) {
- _.extend(funct, {
- "(line)" : token.line,
- "(character)": token.character,
- "(metrics)" : createMetrics(token)
- });
- }
-
- _.extend(funct, overwrites);
-
- if (funct["(context)"]) {
- funct["(blockscope)"] = funct["(context)"]["(blockscope)"];
- funct["(comparray)"] = funct["(context)"]["(comparray)"];
- }
-
- return funct;
- }
-
- function doFunction(name, statement, generator, fatarrowparams) {
- var f;
- var oldOption = state.option;
- var oldIgnored = state.ignored;
- var oldScope = scope;
-
- state.option = Object.create(state.option);
- state.ignored = Object.create(state.ignored);
- scope = Object.create(scope);
-
- funct = functor(name || "\"" + anonname + "\"", state.tokens.next, scope, {
- "(statement)": statement,
- "(context)": funct,
- "(generator)": generator ? true : null
- });
-
- f = funct;
- state.tokens.curr.funct = funct;
-
- functions.push(funct);
-
- if (name) {
- addlabel(name, { type: "function" });
- }
-
- funct["(params)"] = functionparams(fatarrowparams);
- funct["(metrics)"].verifyMaxParametersPerFunction(funct["(params)"]);
-
- // So we parse fat-arrow functions after we encounter =>. So basically
- // doFunction is called with the left side of => as its last argument.
- // This means that the parser, at that point, had already added its
- // arguments to the undefs array and here we undo that.
-
- JSHINT.undefs = _.filter(JSHINT.undefs, function (item) {
- return !_.contains(_.union(fatarrowparams), item[2]);
- });
-
- block(false, true, true, fatarrowparams ? true : false);
-
- if (generator && funct["(generator)"] !== "yielded") {
- error("E047", state.tokens.curr);
- }
-
- funct["(metrics)"].verifyMaxStatementsPerFunction();
- funct["(metrics)"].verifyMaxComplexityPerFunction();
- funct["(unusedOption)"] = state.option.unused;
-
- scope = oldScope;
- state.option = oldOption;
- state.ignored = oldIgnored;
- funct["(last)"] = state.tokens.curr.line;
- funct["(lastcharacter)"] = state.tokens.curr.character;
-
- _.map(Object.keys(funct), function (key) {
- if (key[0] === "(") return;
- funct["(blockscope)"].unshadow(key);
- });
-
- funct = funct["(context)"];
-
- return f;
- }
-
- function createMetrics(functionStartToken) {
- return {
- statementCount: 0,
- nestedBlockDepth: -1,
- ComplexityCount: 1,
-
- verifyMaxStatementsPerFunction: function () {
- if (state.option.maxstatements &&
- this.statementCount > state.option.maxstatements) {
- warning("W071", functionStartToken, this.statementCount);
- }
- },
-
- verifyMaxParametersPerFunction: function (params) {
- params = params || [];
-
- if (state.option.maxparams && params.length > state.option.maxparams) {
- warning("W072", functionStartToken, params.length);
- }
- },
-
- verifyMaxNestedBlockDepthPerFunction: function () {
- if (state.option.maxdepth &&
- this.nestedBlockDepth > 0 &&
- this.nestedBlockDepth === state.option.maxdepth + 1) {
- warning("W073", null, this.nestedBlockDepth);
- }
- },
-
- verifyMaxComplexityPerFunction: function () {
- var max = state.option.maxcomplexity;
- var cc = this.ComplexityCount;
- if (max && cc > max) {
- warning("W074", functionStartToken, cc);
- }
- }
- };
- }
-
- function increaseComplexityCount() {
- funct["(metrics)"].ComplexityCount += 1;
- }
-
- // Parse assignments that were found instead of conditionals.
- // For example: if (a = 1) { ... }
-
- function checkCondAssignment(expr) {
- var id, paren;
- if (expr) {
- id = expr.id;
- paren = expr.paren;
- if (id === "," && (expr = expr.exprs[expr.exprs.length - 1])) {
- id = expr.id;
- paren = paren || expr.paren;
- }
- }
- switch (id) {
- case "=":
- case "+=":
- case "-=":
- case "*=":
- case "%=":
- case "&=":
- case "|=":
- case "^=":
- case "/=":
- if (!paren && !state.option.boss) {
- warning("W084");
- }
- }
- }
-
-
- (function (x) {
- x.nud = function (isclassdef) {
- var b, f, i, p, t, g;
- var props = {}; // All properties, including accessors
- var tag = "";
-
- function saveProperty(name, tkn) {
- if (props[name] && _.has(props, name))
- warning("W075", state.tokens.next, i);
- else
- props[name] = {};
-
- props[name].basic = true;
- props[name].basictkn = tkn;
- }
-
- function saveSetter(name, tkn) {
- if (props[name] && _.has(props, name)) {
- if (props[name].basic || props[name].setter)
- warning("W075", state.tokens.next, i);
- } else {
- props[name] = {};
- }
-
- props[name].setter = true;
- props[name].setterToken = tkn;
- }
-
- function saveGetter(name) {
- if (props[name] && _.has(props, name)) {
- if (props[name].basic || props[name].getter)
- warning("W075", state.tokens.next, i);
- } else {
- props[name] = {};
- }
-
- props[name].getter = true;
- props[name].getterToken = state.tokens.curr;
- }
-
- b = state.tokens.curr.line !== state.tokens.next.line;
- if (b) {
- indent += state.option.indent;
- if (state.tokens.next.from === indent + state.option.indent) {
- indent += state.option.indent;
- }
- }
-
- for (;;) {
- if (state.tokens.next.id === "}") {
- break;
- }
-
- if (b) {
- indentation();
- }
-
- if (isclassdef && state.tokens.next.value === "static") {
- advance("static");
- tag = "static ";
- }
-
- if (state.tokens.next.value === "get" && peek().id !== ":") {
- advance("get");
-
- if (!state.option.inES5(!isclassdef)) {
- error("E034");
- }
-
- i = property_name();
-
- // ES6 allows for get() {...} and set() {...} method
- // definition shorthand syntax, so we don't produce an error
- // if the esnext option is enabled.
- if (!i && !state.option.inESNext()) {
- error("E035");
- }
-
- // It is a Syntax Error if PropName of MethodDefinition is
- // "constructor" and SpecialMethod of MethodDefinition is true.
- if (isclassdef && i === "constructor") {
- error("E049", state.tokens.next, "class getter method", i);
- }
-
- // We don't want to save this getter unless it's an actual getter
- // and not an ES6 concise method
- if (i) {
- saveGetter(tag + i);
- }
-
- t = state.tokens.next;
- adjacent(state.tokens.curr, state.tokens.next);
- f = doFunction();
- p = f["(params)"];
-
- // Don't warn about getter/setter pairs if this is an ES6 concise method
- if (i && p) {
- warning("W076", t, p[0], i);
- }
-
- adjacent(state.tokens.curr, state.tokens.next);
- } else if (state.tokens.next.value === "set" && peek().id !== ":") {
- advance("set");
-
- if (!state.option.inES5(!isclassdef)) {
- error("E034");
- }
-
- i = property_name();
-
- // ES6 allows for get() {...} and set() {...} method
- // definition shorthand syntax, so we don't produce an error
- // if the esnext option is enabled.
- if (!i && !state.option.inESNext()) {
- error("E035");
- }
-
- // It is a Syntax Error if PropName of MethodDefinition is
- // "constructor" and SpecialMethod of MethodDefinition is true.
- if (isclassdef && i === "constructor") {
- error("E049", state.tokens.next, "class setter method", i);
- }
-
- // We don't want to save this getter unless it's an actual getter
- // and not an ES6 concise method
- if (i) {
- saveSetter(tag + i, state.tokens.next);
- }
-
- t = state.tokens.next;
- adjacent(state.tokens.curr, state.tokens.next);
- f = doFunction();
- p = f["(params)"];
-
- // Don't warn about getter/setter pairs if this is an ES6 concise method
- if (i && (!p || p.length !== 1)) {
- warning("W077", t, i);
- }
- } else {
- g = false;
- if (state.tokens.next.value === "*" && state.tokens.next.type === "(punctuator)") {
- if (!state.option.inESNext()) {
- warning("W104", state.tokens.next, "generator functions");
- }
- advance("*");
- g = true;
- }
- i = property_name();
- saveProperty(tag + i, state.tokens.next);
-
- if (typeof i !== "string") {
- break;
- }
-
- if (state.tokens.next.value === "(") {
- if (!state.option.inESNext()) {
- warning("W104", state.tokens.curr, "concise methods");
- }
- doFunction(i, undefined, g);
- } else if (!isclassdef) {
- advance(":");
- nonadjacent(state.tokens.curr, state.tokens.next);
- expression(10);
- }
- }
- // It is a Syntax Error if PropName of MethodDefinition is "prototype".
- if (isclassdef && i === "prototype") {
- error("E049", state.tokens.next, "class method", i);
- }
-
- countMember(i);
- if (isclassdef) {
- tag = "";
- continue;
- }
- if (state.tokens.next.id === ",") {
- comma({ allowTrailing: true, property: true });
- if (state.tokens.next.id === ",") {
- warning("W070", state.tokens.curr);
- } else if (state.tokens.next.id === "}" && !state.option.inES5(true)) {
- warning("W070", state.tokens.curr);
- }
- } else {
- break;
- }
- }
- if (b) {
- indent -= state.option.indent;
- indentation();
- }
- advance("}", this);
-
- // Check for lonely setters if in the ES5 mode.
- if (state.option.inES5()) {
- for (var name in props) {
- if (_.has(props, name) && props[name].setter && !props[name].getter) {
- warning("W078", props[name].setterToken);
- }
- }
- }
- return this;
- };
- x.fud = function () {
- error("E036", state.tokens.curr);
- };
- }(delim("{")));
-
- function destructuringExpression() {
- var id, ids;
- var identifiers = [];
- if (!state.option.inESNext()) {
- warning("W104", state.tokens.curr, "destructuring expression");
- }
- var nextInnerDE = function () {
- var ident;
- if (_.contains(["[", "{"], state.tokens.next.value)) {
- ids = destructuringExpression();
- for (var id in ids) {
- id = ids[id];
- identifiers.push({ id: id.id, token: id.token });
- }
- } else if (state.tokens.next.value === ",") {
- identifiers.push({ id: null, token: state.tokens.curr });
- } else {
- ident = identifier();
- if (ident)
- identifiers.push({ id: ident, token: state.tokens.curr });
- }
- };
- if (state.tokens.next.value === "[") {
- advance("[");
- nextInnerDE();
- while (state.tokens.next.value !== "]") {
- advance(",");
- nextInnerDE();
- }
- advance("]");
- } else if (state.tokens.next.value === "{") {
- advance("{");
- id = identifier();
- if (state.tokens.next.value === ":") {
- advance(":");
- nextInnerDE();
- } else {
- identifiers.push({ id: id, token: state.tokens.curr });
- }
- while (state.tokens.next.value !== "}") {
- advance(",");
- id = identifier();
- if (state.tokens.next.value === ":") {
- advance(":");
- nextInnerDE();
- } else {
- identifiers.push({ id: id, token: state.tokens.curr });
- }
- }
- advance("}");
- }
- return identifiers;
- }
-
- function destructuringExpressionMatch(tokens, value) {
- var first = value.first;
-
- if (!first)
- return;
-
- _.zip(tokens, Array.isArray(first) ? first : [ first ]).forEach(function (val) {
- var token = val[0];
- var value = val[1];
-
- if (token && value)
- token.first = value;
- else if (token && token.first && !value)
- warning("W080", token.first, token.first.value);
- });
- }
-
- var conststatement = stmt("const", function (prefix) {
- var tokens;
- var value;
- var lone; // State variable to know if it is a lone identifier, or a destructuring statement.
-
- if (!state.option.inESNext())
- warning("W104", state.tokens.curr, "const");
-
- this.first = [];
- for (;;) {
- var names = [];
- nonadjacent(state.tokens.curr, state.tokens.next);
- if (_.contains(["{", "["], state.tokens.next.value)) {
- tokens = destructuringExpression();
- lone = false;
- } else {
- tokens = [ { id: identifier(), token: state.tokens.curr } ];
- lone = true;
- }
- for (var t in tokens) {
- if (tokens.hasOwnProperty(t)) {
- t = tokens[t];
- if (funct[t.id] === "const") {
- warning("E011", null, t.id);
- }
- if (funct["(global)"] && predefined[t.id] === false) {
- warning("W079", t.token, t.id);
- }
- if (t.id) {
- addlabel(t.id, { token: t.token, type: "const", unused: true });
- names.push(t.token);
- }
- }
- }
- if (prefix) {
- break;
- }
-
- this.first = this.first.concat(names);
-
- if (state.tokens.next.id !== "=") {
- warning("E012", state.tokens.curr, state.tokens.curr.value);
- }
-
- if (state.tokens.next.id === "=") {
- nonadjacent(state.tokens.curr, state.tokens.next);
- advance("=");
- nonadjacent(state.tokens.curr, state.tokens.next);
- if (state.tokens.next.id === "undefined") {
- warning("W080", state.tokens.prev, state.tokens.prev.value);
- }
- if (peek(0).id === "=" && state.tokens.next.identifier) {
- warning("W120", state.tokens.next, state.tokens.next.value);
- }
- value = expression(10);
- if (lone) {
- tokens[0].first = value;
- } else {
- destructuringExpressionMatch(names, value);
- }
- }
-
- if (state.tokens.next.id !== ",") {
- break;
- }
- comma();
- }
- return this;
- });
-
- conststatement.exps = true;
- var varstatement = stmt("var", function (prefix) {
- // JavaScript does not have block scope. It only has function scope. So,
- // declaring a variable in a block can have unexpected consequences.
- var tokens, lone, value;
-
- if (funct["(onevar)"] && state.option.onevar) {
- warning("W081");
- } else if (!funct["(global)"]) {
- funct["(onevar)"] = true;
- }
-
- this.first = [];
- for (;;) {
- var names = [];
- nonadjacent(state.tokens.curr, state.tokens.next);
- if (_.contains(["{", "["], state.tokens.next.value)) {
- tokens = destructuringExpression();
- lone = false;
- } else {
- tokens = [ { id: identifier(), token: state.tokens.curr } ];
- lone = true;
- }
- for (var t in tokens) {
- if (tokens.hasOwnProperty(t)) {
- t = tokens[t];
- if (state.option.inESNext() && funct[t.id] === "const") {
- warning("E011", null, t.id);
- }
- if (funct["(global)"] && predefined[t.id] === false) {
- warning("W079", t.token, t.id);
- }
- if (t.id) {
- addlabel(t.id, { type: "unused", token: t.token });
- names.push(t.token);
- }
- }
- }
- if (prefix) {
- break;
- }
-
- this.first = this.first.concat(names);
-
- if (state.tokens.next.id === "=") {
- nonadjacent(state.tokens.curr, state.tokens.next);
- advance("=");
- nonadjacent(state.tokens.curr, state.tokens.next);
- if (state.tokens.next.id === "undefined") {
- warning("W080", state.tokens.prev, state.tokens.prev.value);
- }
- if (peek(0).id === "=" && state.tokens.next.identifier) {
- warning("W120", state.tokens.next, state.tokens.next.value);
- }
- value = expression(10);
- if (lone) {
- tokens[0].first = value;
- } else {
- destructuringExpressionMatch(names, value);
- }
- }
-
- if (state.tokens.next.id !== ",") {
- break;
- }
- comma();
- }
- return this;
- });
- varstatement.exps = true;
-
- var letstatement = stmt("let", function (prefix) {
- var tokens, lone, value, letblock;
-
- if (!state.option.inESNext()) {
- warning("W104", state.tokens.curr, "let");
- }
-
- if (state.tokens.next.value === "(") {
- if (!state.option.inMoz(true)) {
- warning("W118", state.tokens.next, "let block");
- }
- advance("(");
- funct["(blockscope)"].stack();
- letblock = true;
- } else if (funct["(nolet)"]) {
- error("E048", state.tokens.curr);
- }
-
- if (funct["(onevar)"] && state.option.onevar) {
- warning("W081");
- } else if (!funct["(global)"]) {
- funct["(onevar)"] = true;
- }
-
- this.first = [];
- for (;;) {
- var names = [];
- nonadjacent(state.tokens.curr, state.tokens.next);
- if (_.contains(["{", "["], state.tokens.next.value)) {
- tokens = destructuringExpression();
- lone = false;
- } else {
- tokens = [ { id: identifier(), token: state.tokens.curr.value } ];
- lone = true;
- }
- for (var t in tokens) {
- if (tokens.hasOwnProperty(t)) {
- t = tokens[t];
- if (state.option.inESNext() && funct[t.id] === "const") {
- warning("E011", null, t.id);
- }
- if (funct["(global)"] && predefined[t.id] === false) {
- warning("W079", t.token, t.id);
- }
- if (t.id && !funct["(nolet)"]) {
- addlabel(t.id, { type: "unused", token: t.token, islet: true });
- names.push(t.token);
- }
- }
- }
- if (prefix) {
- break;
- }
-
- this.first = this.first.concat(names);
-
- if (state.tokens.next.id === "=") {
- nonadjacent(state.tokens.curr, state.tokens.next);
- advance("=");
- nonadjacent(state.tokens.curr, state.tokens.next);
- if (state.tokens.next.id === "undefined") {
- warning("W080", state.tokens.prev, state.tokens.prev.value);
- }
- if (peek(0).id === "=" && state.tokens.next.identifier) {
- warning("W120", state.tokens.next, state.tokens.next.value);
- }
- value = expression(10);
- if (lone) {
- tokens[0].first = value;
- } else {
- destructuringExpressionMatch(names, value);
- }
- }
-
- if (state.tokens.next.id !== ",") {
- break;
- }
- comma();
- }
- if (letblock) {
- advance(")");
- block(true, true);
- this.block = true;
- funct["(blockscope)"].unstack();
- }
-
- return this;
- });
- letstatement.exps = true;
-
- blockstmt("class", function () {
- return classdef.call(this, true);
- });
-
- function classdef(stmt) {
- /*jshint validthis:true */
- if (!state.option.inESNext()) {
- warning("W104", state.tokens.curr, "class");
- }
- if (stmt) {
- // BindingIdentifier
- this.name = identifier();
- addlabel(this.name, { type: "unused", token: state.tokens.curr });
- } else if (state.tokens.next.identifier && state.tokens.next.value !== "extends") {
- // BindingIdentifier(opt)
- this.name = identifier();
- }
- classtail(this);
- return this;
- }
-
- function classtail(c) {
- var strictness = state.directive["use strict"];
-
- // ClassHeritage(opt)
- if (state.tokens.next.value === "extends") {
- advance("extends");
- c.heritage = expression(10);
- }
-
- // A ClassBody is always strict code.
- state.directive["use strict"] = true;
- advance("{");
- // ClassBody(opt)
- c.body = state.syntax["{"].nud(true);
- state.directive["use strict"] = strictness;
- }
-
- blockstmt("function", function () {
- var generator = false;
- if (state.tokens.next.value === "*") {
- advance("*");
- if (state.option.inESNext(true)) {
- generator = true;
- } else {
- warning("W119", state.tokens.curr, "function*");
- }
- }
- if (inblock) {
- warning("W082", state.tokens.curr);
-
- }
- var i = identifier();
- if (funct[i] === "const") {
- warning("E011", null, i);
- }
- adjacent(state.tokens.curr, state.tokens.next);
- addlabel(i, { type: "unction", token: state.tokens.curr });
-
- doFunction(i, { statement: true }, generator);
- if (state.tokens.next.id === "(" && state.tokens.next.line === state.tokens.curr.line) {
- error("E039");
- }
- return this;
- });
-
- prefix("function", function () {
- var generator = false;
- if (state.tokens.next.value === "*") {
- if (!state.option.inESNext()) {
- warning("W119", state.tokens.curr, "function*");
- }
- advance("*");
- generator = true;
- }
- var i = optionalidentifier();
- if (i || state.option.gcl) {
- adjacent(state.tokens.curr, state.tokens.next);
- } else {
- nonadjacent(state.tokens.curr, state.tokens.next);
- }
- doFunction(i, undefined, generator);
- if (!state.option.loopfunc && funct["(loopage)"]) {
- warning("W083");
- }
- return this;
- });
-
- blockstmt("if", function () {
- var t = state.tokens.next;
- increaseComplexityCount();
- state.condition = true;
- advance("(");
- nonadjacent(this, t);
- nospace();
- checkCondAssignment(expression(0));
- advance(")", t);
- state.condition = false;
- nospace(state.tokens.prev, state.tokens.curr);
- block(true, true);
- if (state.tokens.next.id === "else") {
- nonadjacent(state.tokens.curr, state.tokens.next);
- advance("else");
- if (state.tokens.next.id === "if" || state.tokens.next.id === "switch") {
- statement(true);
- } else {
- block(true, true);
- }
- }
- return this;
- });
-
- blockstmt("try", function () {
- var b;
-
- function doCatch() {
- var oldScope = scope;
- var e;
-
- advance("catch");
- nonadjacent(state.tokens.curr, state.tokens.next);
- advance("(");
-
- scope = Object.create(oldScope);
-
- e = state.tokens.next.value;
- if (state.tokens.next.type !== "(identifier)") {
- e = null;
- warning("E030", state.tokens.next, e);
- }
-
- advance();
-
- funct = functor("(catch)", state.tokens.next, scope, {
- "(context)" : funct,
- "(breakage)" : funct["(breakage)"],
- "(loopage)" : funct["(loopage)"],
- "(statement)": false,
- "(catch)" : true
- });
-
- if (e) {
- addlabel(e, { type: "exception" });
- }
-
- if (state.tokens.next.value === "if") {
- if (!state.option.inMoz(true)) {
- warning("W118", state.tokens.curr, "catch filter");
- }
- advance("if");
- expression(0);
- }
-
- advance(")");
-
- state.tokens.curr.funct = funct;
- functions.push(funct);
-
- block(false);
-
- scope = oldScope;
-
- funct["(last)"] = state.tokens.curr.line;
- funct["(lastcharacter)"] = state.tokens.curr.character;
- funct = funct["(context)"];
- }
-
- block(true);
-
- while (state.tokens.next.id === "catch") {
- increaseComplexityCount();
- if (b && (!state.option.inMoz(true))) {
- warning("W118", state.tokens.next, "multiple catch blocks");
- }
- doCatch();
- b = true;
- }
-
- if (state.tokens.next.id === "finally") {
- advance("finally");
- block(true);
- return;
- }
-
- if (!b) {
- error("E021", state.tokens.next, "catch", state.tokens.next.value);
- }
-
- return this;
- });
-
- blockstmt("while", function () {
- var t = state.tokens.next;
- funct["(breakage)"] += 1;
- funct["(loopage)"] += 1;
- increaseComplexityCount();
- advance("(");
- nonadjacent(this, t);
- nospace();
- checkCondAssignment(expression(0));
- advance(")", t);
- nospace(state.tokens.prev, state.tokens.curr);
- block(true, true);
- funct["(breakage)"] -= 1;
- funct["(loopage)"] -= 1;
- return this;
- }).labelled = true;
-
- blockstmt("with", function () {
- var t = state.tokens.next;
- if (state.directive["use strict"]) {
- error("E010", state.tokens.curr);
- } else if (!state.option.withstmt) {
- warning("W085", state.tokens.curr);
- }
-
- advance("(");
- nonadjacent(this, t);
- nospace();
- expression(0);
- advance(")", t);
- nospace(state.tokens.prev, state.tokens.curr);
- block(true, true);
-
- return this;
- });
-
- blockstmt("switch", function () {
- var t = state.tokens.next;
- var g = false;
- var noindent = false;
-
- funct["(breakage)"] += 1;
- advance("(");
- nonadjacent(this, t);
- nospace();
- checkCondAssignment(expression(0));
- advance(")", t);
- nospace(state.tokens.prev, state.tokens.curr);
- nonadjacent(state.tokens.curr, state.tokens.next);
- t = state.tokens.next;
- advance("{");
- nonadjacent(state.tokens.curr, state.tokens.next);
-
- if (state.tokens.next.from === indent)
- noindent = true;
-
- if (!noindent)
- indent += state.option.indent;
-
- this.cases = [];
-
- for (;;) {
- switch (state.tokens.next.id) {
- case "case":
- switch (funct["(verb)"]) {
- case "yield":
- case "break":
- case "case":
- case "continue":
- case "return":
- case "switch":
- case "throw":
- break;
- default:
- // You can tell JSHint that you don't use break intentionally by
- // adding a comment /* falls through */ on a line just before
- // the next `case`.
- if (!reg.fallsThrough.test(state.lines[state.tokens.next.line - 2])) {
- warning("W086", state.tokens.curr, "case");
- }
- }
- indentation();
- advance("case");
- this.cases.push(expression(20));
- increaseComplexityCount();
- g = true;
- advance(":");
- funct["(verb)"] = "case";
- break;
- case "default":
- switch (funct["(verb)"]) {
- case "yield":
- case "break":
- case "continue":
- case "return":
- case "throw":
- break;
- default:
- // Do not display a warning if 'default' is the first statement or if
- // there is a special /* falls through */ comment.
- if (this.cases.length) {
- if (!reg.fallsThrough.test(state.lines[state.tokens.next.line - 2])) {
- warning("W086", state.tokens.curr, "default");
- }
- }
- }
- indentation();
- advance("default");
- g = true;
- advance(":");
- break;
- case "}":
- if (!noindent)
- indent -= state.option.indent;
- indentation();
- advance("}", t);
- funct["(breakage)"] -= 1;
- funct["(verb)"] = undefined;
- return;
- case "(end)":
- error("E023", state.tokens.next, "}");
- return;
- default:
- indent += state.option.indent;
- if (g) {
- switch (state.tokens.curr.id) {
- case ",":
- error("E040");
- return;
- case ":":
- g = false;
- statements();
- break;
- default:
- error("E025", state.tokens.curr);
- return;
- }
- } else {
- if (state.tokens.curr.id === ":") {
- advance(":");
- error("E024", state.tokens.curr, ":");
- statements();
- } else {
- error("E021", state.tokens.next, "case", state.tokens.next.value);
- return;
- }
- }
- indent -= state.option.indent;
- }
- }
- }).labelled = true;
-
- stmt("debugger", function () {
- if (!state.option.debug) {
- warning("W087", this);
- }
- return this;
- }).exps = true;
-
- (function () {
- var x = stmt("do", function () {
- funct["(breakage)"] += 1;
- funct["(loopage)"] += 1;
- increaseComplexityCount();
-
- this.first = block(true, true);
- advance("while");
- var t = state.tokens.next;
- nonadjacent(state.tokens.curr, t);
- advance("(");
- nospace();
- checkCondAssignment(expression(0));
- advance(")", t);
- nospace(state.tokens.prev, state.tokens.curr);
- funct["(breakage)"] -= 1;
- funct["(loopage)"] -= 1;
- return this;
- });
- x.labelled = true;
- x.exps = true;
- }());
-
- blockstmt("for", function () {
- var s, t = state.tokens.next;
- var letscope = false;
- var foreachtok = null;
-
- if (t.value === "each") {
- foreachtok = t;
- advance("each");
- if (!state.option.inMoz(true)) {
- warning("W118", state.tokens.curr, "for each");
- }
- }
-
- funct["(breakage)"] += 1;
- funct["(loopage)"] += 1;
- increaseComplexityCount();
- advance("(");
- nonadjacent(this, t);
- nospace();
-
- // what kind of for(…) statement it is? for(…of…)? for(…in…)? for(…;…;…)?
- var nextop; // contains the token of the "in" or "of" operator
- var i = 0;
- var inof = ["in", "of"];
- do {
- nextop = peek(i);
- ++i;
- } while (!_.contains(inof, nextop.value) && nextop.value !== ";" &&
- nextop.type !== "(end)");
-
- // if we're in a for (… in|of …) statement
- if (_.contains(inof, nextop.value)) {
- if (!state.option.inESNext() && nextop.value === "of") {
- error("W104", nextop, "for of");
- }
- if (state.tokens.next.id === "var") {
- advance("var");
- state.syntax["var"].fud.call(state.syntax["var"].fud, true);
- } else if (state.tokens.next.id === "let") {
- advance("let");
- // create a new block scope
- letscope = true;
- funct["(blockscope)"].stack();
- state.syntax["let"].fud.call(state.syntax["let"].fud, true);
- } else {
- switch (funct[state.tokens.next.value]) {
- case "unused":
- funct[state.tokens.next.value] = "var";
- break;
- case "var":
- break;
- default:
- if (!funct["(blockscope)"].getlabel(state.tokens.next.value))
- warning("W088", state.tokens.next, state.tokens.next.value);
- }
- advance();
- }
- advance(nextop.value);
- expression(20);
- advance(")", t);
- s = block(true, true);
- if (state.option.forin && s && (s.length > 1 || typeof s[0] !== "object" ||
- s[0].value !== "if")) {
- warning("W089", this);
- }
- funct["(breakage)"] -= 1;
- funct["(loopage)"] -= 1;
- } else {
- if (foreachtok) {
- error("E045", foreachtok);
- }
- if (state.tokens.next.id !== ";") {
- if (state.tokens.next.id === "var") {
- advance("var");
- state.syntax["var"].fud.call(state.syntax["var"].fud);
- } else if (state.tokens.next.id === "let") {
- advance("let");
- // create a new block scope
- letscope = true;
- funct["(blockscope)"].stack();
- state.syntax["let"].fud.call(state.syntax["let"].fud);
- } else {
- for (;;) {
- expression(0, "for");
- if (state.tokens.next.id !== ",") {
- break;
- }
- comma();
- }
- }
- }
- nolinebreak(state.tokens.curr);
- advance(";");
- if (state.tokens.next.id !== ";") {
- checkCondAssignment(expression(0));
- }
- nolinebreak(state.tokens.curr);
- advance(";");
- if (state.tokens.next.id === ";") {
- error("E021", state.tokens.next, ")", ";");
- }
- if (state.tokens.next.id !== ")") {
- for (;;) {
- expression(0, "for");
- if (state.tokens.next.id !== ",") {
- break;
- }
- comma();
- }
- }
- advance(")", t);
- nospace(state.tokens.prev, state.tokens.curr);
- block(true, true);
- funct["(breakage)"] -= 1;
- funct["(loopage)"] -= 1;
-
- }
- // unstack loop blockscope
- if (letscope) {
- funct["(blockscope)"].unstack();
- }
- return this;
- }).labelled = true;
-
-
- stmt("break", function () {
- var v = state.tokens.next.value;
-
- if (funct["(breakage)"] === 0)
- warning("W052", state.tokens.next, this.value);
-
- if (!state.option.asi)
- nolinebreak(this);
-
- if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
- if (state.tokens.curr.line === state.tokens.next.line) {
- if (funct[v] !== "label") {
- warning("W090", state.tokens.next, v);
- } else if (scope[v] !== funct) {
- warning("W091", state.tokens.next, v);
- }
- this.first = state.tokens.next;
- advance();
- }
- }
- reachable("break");
- return this;
- }).exps = true;
-
-
- stmt("continue", function () {
- var v = state.tokens.next.value;
-
- if (funct["(breakage)"] === 0)
- warning("W052", state.tokens.next, this.value);
-
- if (!state.option.asi)
- nolinebreak(this);
-
- if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
- if (state.tokens.curr.line === state.tokens.next.line) {
- if (funct[v] !== "label") {
- warning("W090", state.tokens.next, v);
- } else if (scope[v] !== funct) {
- warning("W091", state.tokens.next, v);
- }
- this.first = state.tokens.next;
- advance();
- }
- } else if (!funct["(loopage)"]) {
- warning("W052", state.tokens.next, this.value);
- }
- reachable("continue");
- return this;
- }).exps = true;
-
-
- stmt("return", function () {
- if (this.line === state.tokens.next.line) {
- if (state.tokens.next.id === "(regexp)")
- warning("W092");
-
- if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
- nonadjacent(state.tokens.curr, state.tokens.next);
- this.first = expression(0);
-
- if (this.first &&
- this.first.type === "(punctuator)" && this.first.value === "=" &&
- !this.first.paren && !state.option.boss) {
- warningAt("W093", this.first.line, this.first.character);
- }
- }
- } else {
- if (state.tokens.next.type === "(punctuator)" &&
- ["[", "{", "+", "-"].indexOf(state.tokens.next.value) > -1) {
- nolinebreak(this); // always warn (Line breaking error)
- }
- }
- reachable("return");
- return this;
- }).exps = true;
-
- (function (x) {
- x.exps = true;
- x.lbp = 25;
- }(prefix("yield", function () {
- var prev = state.tokens.prev;
- if (state.option.inESNext(true) && !funct["(generator)"]) {
- error("E046", state.tokens.curr, "yield");
- } else if (!state.option.inESNext()) {
- warning("W104", state.tokens.curr, "yield");
- }
- funct["(generator)"] = "yielded";
- if (this.line === state.tokens.next.line || !state.option.inMoz(true)) {
- if (state.tokens.next.id === "(regexp)")
- warning("W092");
-
- if (state.tokens.next.id !== ";" && !state.tokens.next.reach && state.tokens.next.nud) {
- nobreaknonadjacent(state.tokens.curr, state.tokens.next);
- this.first = expression(10);
-
- if (this.first.type === "(punctuator)" && this.first.value === "=" &&
- !this.first.paren && !state.option.boss) {
- warningAt("W093", this.first.line, this.first.character);
- }
- }
-
- if (state.option.inMoz(true) && state.tokens.next.id !== ")" &&
- (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()) || prev.id === "yield")) {
- error("E050", this);
- }
- } else if (!state.option.asi) {
- nolinebreak(this); // always warn (Line breaking error)
- }
- return this;
- })));
-
-
- stmt("throw", function () {
- nolinebreak(this);
- nonadjacent(state.tokens.curr, state.tokens.next);
- this.first = expression(20);
- reachable("throw");
- return this;
- }).exps = true;
-
- stmt("import", function () {
- if (!state.option.inESNext()) {
- warning("W119", state.tokens.curr, "import");
- }
-
- if (state.tokens.next.identifier) {
- this.name = identifier();
- addlabel(this.name, { type: "unused", token: state.tokens.curr });
- } else {
- advance("{");
- for (;;) {
- var importName;
- if (state.tokens.next.type === "default") {
- importName = "default";
- advance("default");
- } else {
- importName = identifier();
- }
- if (state.tokens.next.value === "as") {
- advance("as");
- importName = identifier();
- }
- addlabel(importName, { type: "unused", token: state.tokens.curr });
-
- if (state.tokens.next.value === ",") {
- advance(",");
- } else if (state.tokens.next.value === "}") {
- advance("}");
- break;
- } else {
- error("E024", state.tokens.next, state.tokens.next.value);
- break;
- }
- }
+ warning("W119", state.tokens.curr, "module");
}
+ advance("module");
+ var name = identifier();
+ addlabel(name, { type: "unused", token: state.tokens.curr });
advance("from");
advance("(string)");
- return this;
- }).exps = true;
+ parseFinalSemicolon();
+ return;
+ }
+ }
- stmt("export", function () {
- if (!state.option.inESNext()) {
- warning("W119", state.tokens.curr, "export");
+ if (t.identifier && !res && peek().id === ":") {
+ advance();
+ advance(":");
+ scope = Object.create(s);
+ addlabel(t.value, { type: "label" });
+
+ if (!state.tokens.next.labelled && state.tokens.next.value !== "{") {
+ warning("W028", state.tokens.next, t.value, state.tokens.next.value);
+ }
+
+ state.tokens.next.label = t.value;
+ t = state.tokens.next;
+ }
+
+ // Is it a lonely block?
+
+ if (t.id === "{") {
+ // Is it a switch case block?
+ //
+ // switch (foo) {
+ // case bar: { <= here.
+ // ...
+ // }
+ // }
+ var iscase = (funct["(verb)"] === "case" && state.tokens.curr.value === ":");
+ block(true, true, false, false, iscase);
+ return;
+ }
+
+ // Parse the statement.
+
+ r = expression(0, true);
+
+ if (r && (!r.identifier || r.value !== "function") && (r.type !== "(punctuator)")) {
+ if (!state.directive["use strict"] &&
+ state.option.globalstrict &&
+ state.option.strict) {
+ warning("E007");
+ }
+ }
+
+ // Look for the final semicolon.
+
+ if (!t.block) {
+ if (!state.option.expr && (!r || !r.exps)) {
+ warning("W030", state.tokens.curr);
+ } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") {
+ warning("W031", t);
+ }
+ parseFinalSemicolon();
+ }
+
+
+ // Restore the indentation.
+
+ indent = i;
+ scope = s;
+ return r;
+ }
+
+
+ function statements() {
+ var a = [], p;
+
+ while (!state.tokens.next.reach && state.tokens.next.id !== "(end)") {
+ if (state.tokens.next.id === ";") {
+ p = peek();
+
+ if (!p || (p.id !== "(" && p.id !== "[")) {
+ warning("W032");
}
- if (state.tokens.next.type === "default") {
- advance("default");
- if (state.tokens.next.id === "function" || state.tokens.next.id === "class") {
- this.block = true;
- }
- this.exportee = expression(10);
+ advance(";");
+ } else {
+ a.push(statement());
+ }
+ }
+ return a;
+ }
- return this;
- }
- if (state.tokens.next.value === "{") {
- advance("{");
- for (;;) {
- identifier();
+ /*
+ * read all directives
+ * recognizes a simple form of asi, but always
+ * warns, if it is used
+ */
+ function directives() {
+ var i, p, pn;
- if (state.tokens.next.value === ",") {
- advance(",");
- } else if (state.tokens.next.value === "}") {
- advance("}");
- break;
- } else {
- error("E024", state.tokens.next, state.tokens.next.value);
- break;
- }
- }
- return this;
- }
-
- if (state.tokens.next.id === "var") {
- advance("var");
- state.syntax["var"].fud.call(state.syntax["var"].fud);
- } else if (state.tokens.next.id === "let") {
- advance("let");
- state.syntax["let"].fud.call(state.syntax["let"].fud);
- } else if (state.tokens.next.id === "const") {
- advance("const");
- state.syntax["const"].fud.call(state.syntax["const"].fud);
- } else if (state.tokens.next.id === "function") {
- this.block = true;
- advance("function");
- state.syntax["function"].fud();
- } else if (state.tokens.next.id === "class") {
- this.block = true;
- advance("class");
- state.syntax["class"].fud();
- } else {
- error("E024", state.tokens.next, state.tokens.next.value);
- }
-
- return this;
- }).exps = true;
-
- // Future Reserved Words
-
- FutureReservedWord("abstract");
- FutureReservedWord("boolean");
- FutureReservedWord("byte");
- FutureReservedWord("char");
- FutureReservedWord("class", { es5: true, nud: classdef });
- FutureReservedWord("double");
- FutureReservedWord("enum", { es5: true });
- FutureReservedWord("export", { es5: true });
- FutureReservedWord("extends", { es5: true });
- FutureReservedWord("final");
- FutureReservedWord("float");
- FutureReservedWord("goto");
- FutureReservedWord("implements", { es5: true, strictOnly: true });
- FutureReservedWord("import", { es5: true });
- FutureReservedWord("int");
- FutureReservedWord("interface", { es5: true, strictOnly: true });
- FutureReservedWord("long");
- FutureReservedWord("native");
- FutureReservedWord("package", { es5: true, strictOnly: true });
- FutureReservedWord("private", { es5: true, strictOnly: true });
- FutureReservedWord("protected", { es5: true, strictOnly: true });
- FutureReservedWord("public", { es5: true, strictOnly: true });
- FutureReservedWord("short");
- FutureReservedWord("static", { es5: true, strictOnly: true });
- FutureReservedWord("super", { es5: true });
- FutureReservedWord("synchronized");
- FutureReservedWord("throws");
- FutureReservedWord("transient");
- FutureReservedWord("volatile");
-
- // this function is used to determine wether a squarebracket or a curlybracket
- // expression is a comprehension array, destructuring assignment or a json value.
-
- var lookupBlockType = function () {
- var pn, pn1;
- var i = -1;
- var bracketStack = 0;
- var ret = {};
- if (_.contains(["[", "{"], state.tokens.curr.value))
- bracketStack += 1;
+ while (state.tokens.next.id === "(string)") {
+ p = peek(0);
+ if (p.id === "(endline)") {
+ i = 1;
do {
- pn = (i === -1) ? state.tokens.next : peek(i);
- pn1 = peek(i + 1);
- i = i + 1;
- if (_.contains(["[", "{"], pn.value)) {
- bracketStack += 1;
- } else if (_.contains(["]", "}"], pn.value)) {
- bracketStack -= 1;
- }
- if (pn.identifier && pn.value === "for" && bracketStack === 1) {
- ret.isCompArray = true;
- ret.notJson = true;
- break;
- }
- if (_.contains(["}", "]"], pn.value) && pn1.value === "=" && bracketStack === 0) {
- ret.isDestAssign = true;
- ret.notJson = true;
- break;
- }
- if (pn.value === ";") {
- ret.isBlock = true;
- ret.notJson = true;
- }
- } while (bracketStack > 0 && pn.id !== "(end)" && i < 15);
- return ret;
- };
-
- // Check whether this function has been reached for a destructuring assign with undeclared values
- function destructuringAssignOrJsonValue() {
- // lookup for the assignment (esnext only)
- // if it has semicolons, it is a block, so go parse it as a block
- // or it's not a block, but there are assignments, check for undeclared variables
-
- var block = lookupBlockType();
- if (block.notJson) {
- if (!state.option.inESNext() && block.isDestAssign) {
- warning("W104", state.tokens.curr, "destructuring assignment");
- }
- statements();
- // otherwise parse json value
- } else {
- state.option.laxbreak = true;
- state.jsonMode = true;
- jsonValue();
+ pn = peek(i++);
+ } while (pn.id === "(endline)");
+ if (pn.id === ";") {
+ p = pn;
+ } else if (pn.value === "[" || pn.value === ".") {
+ // string -> [ | . is a valid production
+ return;
+ } else if (!state.option.asi || pn.value === "(") {
+ // string -> ( is not a valid production
+ warning("W033", state.tokens.next);
}
+ } else if (p.id === "." || p.id === "[") {
+ return;
+ } else if (p.id !== ";") {
+ warning("W033", p);
+ }
+
+ advance();
+ if (state.directive[state.tokens.curr.value]) {
+ warning("W034", state.tokens.curr, state.tokens.curr.value);
+ }
+
+ if (state.tokens.curr.value === "use strict") {
+ if (!state.option["(explicitNewcap)"]) {
+ state.option.newcap = true;
+ }
+ state.option.undef = true;
+ }
+
+ // there's no directive negation, so always set to true
+ state.directive[state.tokens.curr.value] = true;
+
+ if (p.id === ";") {
+ advance(";");
+ }
+ }
+ }
+
+
+ /*
+ * Parses a single block. A block is a sequence of statements wrapped in
+ * braces.
+ *
+ * ordinary - true for everything but function bodies and try blocks.
+ * stmt - true if block can be a single statement (e.g. in if/for/while).
+ * isfunc - true if block is a function body
+ * isfatarrow - true if its a body of a fat arrow function
+ * iscase - true if block is a switch case block
+ */
+ function block(ordinary, stmt, isfunc, isfatarrow, iscase) {
+ var a,
+ b = inblock,
+ old_indent = indent,
+ m,
+ s = scope,
+ t,
+ line,
+ d;
+
+ inblock = ordinary;
+
+ if (!ordinary || !state.option.funcscope)
+ scope = Object.create(scope);
+
+ t = state.tokens.next;
+
+ var metrics = funct["(metrics)"];
+ metrics.nestedBlockDepth += 1;
+ metrics.verifyMaxNestedBlockDepthPerFunction();
+
+ if (state.tokens.next.id === "{") {
+ advance("{");
+
+ // create a new block scope
+ funct["(blockscope)"].stack();
+
+ line = state.tokens.curr.line;
+ if (state.tokens.next.id !== "}") {
+ indent += state.option.indent;
+ while (!ordinary && state.tokens.next.from > indent) {
+ indent += state.option.indent;
+ }
+
+ if (isfunc) {
+ m = {};
+ for (d in state.directive) {
+ if (_.has(state.directive, d)) {
+ m[d] = state.directive[d];
+ }
+ }
+ directives();
+
+ if (state.option.strict && funct["(context)"]["(global)"]) {
+ if (!m["use strict"] && !state.directive["use strict"]) {
+ warning("E007");
+ }
+ }
+ }
+
+ a = statements();
+
+ metrics.statementCount += a.length;
+
+ if (isfunc) {
+ state.directive = m;
+ }
+
+ indent -= state.option.indent;
+ }
+
+ advance("}", t);
+
+ funct["(blockscope)"].unstack();
+
+ indent = old_indent;
+ } else if (!ordinary) {
+ if (isfunc) {
+ m = {};
+ if (stmt && !isfatarrow && !state.option.inMoz(true)) {
+ error("W118", state.tokens.curr, "function closure expressions");
+ }
+
+ if (!stmt) {
+ for (d in state.directive) {
+ if (_.has(state.directive, d)) {
+ m[d] = state.directive[d];
+ }
+ }
+ }
+ expression(10);
+
+ if (state.option.strict && funct["(context)"]["(global)"]) {
+ if (!m["use strict"] && !state.directive["use strict"]) {
+ warning("E007");
+ }
+ }
+ } else {
+ error("E021", state.tokens.next, "{", state.tokens.next.value);
+ }
+ } else {
+
+ // check to avoid let declaration not within a block
+ funct["(nolet)"] = true;
+
+ if (!stmt || state.option.curly) {
+ warning("W116", state.tokens.next, "{", state.tokens.next.value);
+ }
+
+ state.tokens.next.inBracelessBlock = true;
+ indent += state.option.indent;
+ // test indentation only if statement is in new line
+ a = [statement()];
+ indent -= state.option.indent;
+
+ delete funct["(nolet)"];
}
- // array comprehension parsing function
- // parses and defines the three states of the list comprehension in order
- // to avoid defining global variables, but keeping them to the list comprehension scope
- // only. The order of the states are as follows:
- // * "use" which will be the returned iterative part of the list comprehension
- // * "define" which will define the variables local to the list comprehension
- // * "filter" which will help filter out values
+ // Don't clear and let it propagate out if it is "break", "return" or similar in switch case
+ switch (funct["(verb)"]) {
+ case "break":
+ case "continue":
+ case "return":
+ case "throw":
+ if (iscase) {
+ break;
+ }
- var arrayComprehension = function () {
- var CompArray = function () {
- this.mode = "use";
- this.variables = [];
- };
- var _carrays = [];
- var _current;
- function declare(v) {
- var l = _current.variables.filter(function (elt) {
- // if it has, change its undef state
- if (elt.value === v) {
- elt.undef = false;
- return v;
- }
- }).length;
- return l !== 0;
+ /* falls through */
+ default:
+ funct["(verb)"] = null;
+ }
+
+ if (!ordinary || !state.option.funcscope) scope = s;
+ inblock = b;
+ if (ordinary && state.option.noempty && (!a || a.length === 0)) {
+ warning("W035", state.tokens.prev);
+ }
+ metrics.nestedBlockDepth -= 1;
+ return a;
+ }
+
+
+ function countMember(m) {
+ if (membersOnly && typeof membersOnly[m] !== "boolean") {
+ warning("W036", state.tokens.curr, m);
+ }
+ if (typeof member[m] === "number") {
+ member[m] += 1;
+ } else {
+ member[m] = 1;
+ }
+ }
+
+
+ function note_implied(tkn) {
+ var name = tkn.value;
+ var desc = Object.getOwnPropertyDescriptor(implied, name);
+
+ if (!desc)
+ implied[name] = [tkn.line];
+ else
+ desc.value.push(tkn.line);
+ }
+
+
+ // Build the syntax table by declaring the syntactic elements of the language.
+
+ type("(number)", function() {
+ return this;
+ });
+
+ type("(string)", function() {
+ return this;
+ });
+
+ state.syntax["(identifier)"] = {
+ type: "(identifier)",
+ lbp: 0,
+ identifier: true,
+
+ nud: function() {
+ var v = this.value;
+ var s = scope[v];
+ var f;
+ var block;
+
+ // If this identifier is the lone parameter to a shorthand "fat arrow"
+ // function definition, i.e.
+ //
+ // x => x;
+ //
+ // ...it should not be considered as a variable in the current scope. It
+ // will be added to the scope of the new function when the next token is
+ // parsed, so it can be safely ignored for now.
+ if (state.tokens.next.id === "=>") {
+ return this;
+ }
+
+ if (typeof s === "function") {
+ // Protection against accidental inheritance.
+ s = undefined;
+ } else if (!funct["(blockscope)"].current.has(v) && typeof s === "boolean") {
+ f = funct;
+ funct = functions[0];
+ addlabel(v, { type: "var" });
+ s = funct;
+ funct = f;
+ }
+
+ block = funct["(blockscope)"].getlabel(v);
+
+ // The name is in scope and defined in the current function.
+ if (funct === s || block) {
+ // Change 'unused' to 'var', and reject labels.
+ // the name is in a block scope.
+ switch (block ? block[v]["(type)"] : funct[v]) {
+ case "unused":
+ if (block) block[v]["(type)"] = "var";
+ else funct[v] = "var";
+ break;
+ case "unction":
+ if (block) block[v]["(type)"] = "function";
+ else funct[v] = "function";
+ this["function"] = true;
+ break;
+ case "const":
+ setprop(funct, v, { unused: false });
+ break;
+ case "function":
+ this["function"] = true;
+ break;
+ case "label":
+ warning("W037", state.tokens.curr, v);
+ break;
}
- function use(v) {
- var l = _current.variables.filter(function (elt) {
- // and if it has been defined
- if (elt.value === v && !elt.undef) {
- if (elt.unused === true) {
- elt.unused = false;
- }
- return v;
- }
- }).length;
- // otherwise we warn about it
- return (l === 0);
- }
- return {stack: function () {
- _current = new CompArray();
- _carrays.push(_current);
- },
- unstack: function () {
- _current.variables.filter(function (v) {
- if (v.unused)
- warning("W098", v.token, v.value);
- if (v.undef)
- isundef(v.funct, "W117", v.token, v.value);
- });
- _carrays.splice(-1, 1);
- _current = _carrays[_carrays.length - 1];
- },
- setState: function (s) {
- if (_.contains(["use", "define", "generate", "filter"], s))
- _current.mode = s;
- },
- check: function (v) {
- if (!_current) {
- return;
- }
- // When we are in "use" state of the list comp, we enqueue that var
- if (_current && _current.mode === "use") {
- if (use(v)) {
- _current.variables.push({
- funct: funct,
- token: state.tokens.curr,
- value: v,
- undef: true,
- unused: false
- });
- }
- return true;
- // When we are in "define" state of the list comp,
- } else if (_current && _current.mode === "define") {
- // check if the variable has been used previously
- if (!declare(v)) {
- _current.variables.push({
- funct: funct,
- token: state.tokens.curr,
- value: v,
- undef: false,
- unused: true
- });
- }
- return true;
- // When we are in the "generate" state of the list comp,
- } else if (_current && _current.mode === "generate") {
- isundef(funct, "W117", state.tokens.curr, v);
- return true;
- // When we are in "filter" state,
- } else if (_current && _current.mode === "filter") {
- // we check whether current variable has been declared
- if (use(v)) {
- // if not we warn about it
- isundef(funct, "W117", state.tokens.curr, v);
- }
- return true;
- }
- return false;
- }
- };
- };
+ } else {
+ // If the name is already defined in the current
+ // function, but not as outer, then there is a scope error.
-
- // Parse JSON
-
- function jsonValue() {
-
- function jsonObject() {
- var o = {}, t = state.tokens.next;
- advance("{");
- if (state.tokens.next.id !== "}") {
- for (;;) {
- if (state.tokens.next.id === "(end)") {
- error("E026", state.tokens.next, t.line);
- } else if (state.tokens.next.id === "}") {
- warning("W094", state.tokens.curr);
- break;
- } else if (state.tokens.next.id === ",") {
- error("E028", state.tokens.next);
- } else if (state.tokens.next.id !== "(string)") {
- warning("W095", state.tokens.next, state.tokens.next.value);
- }
- if (o[state.tokens.next.value] === true) {
- warning("W075", state.tokens.next, state.tokens.next.value);
- } else if ((state.tokens.next.value === "__proto__" &&
- !state.option.proto) || (state.tokens.next.value === "__iterator__" &&
- !state.option.iterator)) {
- warning("W096", state.tokens.next, state.tokens.next.value);
- } else {
- o[state.tokens.next.value] = true;
- }
- advance();
- advance(":");
- jsonValue();
- if (state.tokens.next.id !== ",") {
- break;
- }
- advance(",");
- }
- }
- advance("}");
- }
-
- function jsonArray() {
- var t = state.tokens.next;
- advance("[");
- if (state.tokens.next.id !== "]") {
- for (;;) {
- if (state.tokens.next.id === "(end)") {
- error("E027", state.tokens.next, t.line);
- } else if (state.tokens.next.id === "]") {
- warning("W094", state.tokens.curr);
- break;
- } else if (state.tokens.next.id === ",") {
- error("E028", state.tokens.next);
- }
- jsonValue();
- if (state.tokens.next.id !== ",") {
- break;
- }
- advance(",");
- }
- }
- advance("]");
- }
-
- switch (state.tokens.next.id) {
- case "{":
- jsonObject();
- break;
- case "[":
- jsonArray();
- break;
- case "true":
- case "false":
- case "null":
- case "(number)":
- case "(string)":
- advance();
- break;
- case "-":
- advance("-");
- if (state.tokens.curr.character !== state.tokens.next.from) {
- warning("W011", state.tokens.curr);
- }
- adjacent(state.tokens.curr, state.tokens.next);
- advance("(number)");
- break;
+ switch (funct[v]) {
+ case "closure":
+ case "function":
+ case "var":
+ case "unused":
+ warning("W038", state.tokens.curr, v);
+ break;
+ case "label":
+ warning("W037", state.tokens.curr, v);
+ break;
+ case "outer":
+ case "global":
+ break;
default:
- error("E003", state.tokens.next);
+ // If the name is defined in an outer function, make an outer entry,
+ // and if it was unused, make it var.
+ if (s === true) {
+ funct[v] = true;
+ } else if (s === null) {
+ warning("W039", state.tokens.curr, v);
+ note_implied(state.tokens.curr);
+ } else if (typeof s !== "object") {
+ // if we're in a list comprehension, variables are declared
+ // locally and used before being defined. So we check
+ // the presence of the given variable in the comp array
+ // before declaring it undefined.
+
+ if (!funct["(comparray)"].check(v)) {
+ isundef(funct, "W117", state.tokens.curr, v);
+ }
+
+ // Explicitly mark the variable as used within function scopes
+ if (!funct["(global)"]) {
+ funct[v] = true;
+ }
+
+ note_implied(state.tokens.curr);
+ } else {
+ switch (s[v]) {
+ case "function":
+ case "unction":
+ this["function"] = true;
+ s[v] = "closure";
+ funct[v] = s["(global)"] ? "global" : "outer";
+ break;
+ case "var":
+ case "unused":
+ s[v] = "closure";
+ funct[v] = s["(global)"] ? "global" : "outer";
+ break;
+ case "const":
+ setprop(s, v, { unused: false });
+ break;
+ case "closure":
+ funct[v] = s["(global)"] ? "global" : "outer";
+ break;
+ case "label":
+ warning("W037", state.tokens.curr, v);
+ }
+ }
}
+ }
+ return this;
+ },
+
+ led: function() {
+ error("E033", state.tokens.next, state.tokens.next.value);
+ }
+ };
+
+ state.syntax["(template)"] = {
+ type: "(template)",
+ lbp: 0,
+ identifier: false,
+ fud: doTemplateLiteral
+ };
+
+ type("(template middle)", function() {
+ return this;
+ });
+
+ type("(template tail)", function() {
+ return this;
+ });
+
+ type("(regexp)", function() {
+ return this;
+ });
+
+ // ECMAScript parser
+
+ delim("(endline)");
+ delim("(begin)");
+ delim("(end)").reach = true;
+ delim("(error)").reach = true;
+ delim("}").reach = true;
+ delim(")");
+ delim("]");
+ delim("\"").reach = true;
+ delim("'").reach = true;
+ delim(";");
+ delim(":").reach = true;
+ delim("#");
+
+ reserve("else");
+ reserve("case").reach = true;
+ reserve("catch");
+ reserve("default").reach = true;
+ reserve("finally");
+ reservevar("arguments", function(x) {
+ if (state.directive["use strict"] && funct["(global)"]) {
+ warning("E008", x);
+ }
+ });
+ reservevar("eval");
+ reservevar("false");
+ reservevar("Infinity");
+ reservevar("null");
+ reservevar("this", function(x) {
+ if (state.directive["use strict"] && !isMethod() &&
+ !state.option.validthis && ((funct["(statement)"] &&
+ funct["(name)"].charAt(0) > "Z") || funct["(global)"])) {
+ warning("W040", x);
+ }
+ });
+ reservevar("true");
+ reservevar("undefined");
+
+ assignop("=", "assign", 20);
+ assignop("+=", "assignadd", 20);
+ assignop("-=", "assignsub", 20);
+ assignop("*=", "assignmult", 20);
+ assignop("/=", "assigndiv", 20).nud = function() {
+ error("E014");
+ };
+ assignop("%=", "assignmod", 20);
+
+ bitwiseassignop("&=");
+ bitwiseassignop("|=");
+ bitwiseassignop("^=");
+ bitwiseassignop("<<=");
+ bitwiseassignop(">>=");
+ bitwiseassignop(">>>=");
+ infix(",", function(left, that) {
+ var expr;
+ that.exprs = [left];
+ if (!comma({ peek: true })) {
+ return that;
+ }
+ while (true) {
+ if (!(expr = expression(10))) {
+ break;
+ }
+ that.exprs.push(expr);
+ if (state.tokens.next.value !== "," || !comma()) {
+ break;
+ }
+ }
+ return that;
+ }, 10, true);
+
+ infix("?", function(left, that) {
+ increaseComplexityCount();
+ that.left = left;
+ that.right = expression(10);
+ advance(":");
+ that["else"] = expression(10);
+ return that;
+ }, 30);
+
+ var orPrecendence = 40;
+ infix("||", function(left, that) {
+ increaseComplexityCount();
+ that.left = left;
+ that.right = expression(orPrecendence);
+ return that;
+ }, orPrecendence);
+ infix("&&", "and", 50);
+ bitwise("|", "bitor", 70);
+ bitwise("^", "bitxor", 80);
+ bitwise("&", "bitand", 90);
+ relation("==", function(left, right) {
+ var eqnull = state.option.eqnull && (left.value === "null" || right.value === "null");
+
+ switch (true) {
+ case !eqnull && state.option.eqeqeq:
+ this.from = this.character;
+ warning("W116", this, "===", "==");
+ break;
+ case isPoorRelation(left):
+ warning("W041", this, "===", left.value);
+ break;
+ case isPoorRelation(right):
+ warning("W041", this, "===", right.value);
+ break;
+ case isTypoTypeof(right, left):
+ warning("W122", this, right.value);
+ break;
+ case isTypoTypeof(left, right):
+ warning("W122", this, left.value);
+ break;
}
- var blockScope = function () {
- var _current = {};
- var _variables = [_current];
+ return this;
+ });
+ relation("===", function(left, right) {
+ if (isTypoTypeof(right, left)) {
+ warning("W122", this, right.value);
+ } else if (isTypoTypeof(left, right)) {
+ warning("W122", this, left.value);
+ }
+ return this;
+ });
+ relation("!=", function(left, right) {
+ var eqnull = state.option.eqnull &&
+ (left.value === "null" || right.value === "null");
- function _checkBlockLabels() {
- for (var t in _current) {
- if (_current[t]["(type)"] === "unused") {
- if (state.option.unused) {
- var tkn = _current[t]["(token)"];
- var line = tkn.line;
- var chr = tkn.character;
- warningAt("W098", line, chr, t);
- }
- }
+ if (!eqnull && state.option.eqeqeq) {
+ this.from = this.character;
+ warning("W116", this, "!==", "!=");
+ } else if (isPoorRelation(left)) {
+ warning("W041", this, "!==", left.value);
+ } else if (isPoorRelation(right)) {
+ warning("W041", this, "!==", right.value);
+ } else if (isTypoTypeof(right, left)) {
+ warning("W122", this, right.value);
+ } else if (isTypoTypeof(left, right)) {
+ warning("W122", this, left.value);
+ }
+ return this;
+ });
+ relation("!==", function(left, right) {
+ if (isTypoTypeof(right, left)) {
+ warning("W122", this, right.value);
+ } else if (isTypoTypeof(left, right)) {
+ warning("W122", this, left.value);
+ }
+ return this;
+ });
+ relation("<");
+ relation(">");
+ relation("<=");
+ relation(">=");
+ bitwise("<<", "shiftleft", 120);
+ bitwise(">>", "shiftright", 120);
+ bitwise(">>>", "shiftrightunsigned", 120);
+ infix("in", "in", 120);
+ infix("instanceof", "instanceof", 120);
+ infix("+", function(left, that) {
+ var right = expression(130);
+ if (left && right && left.id === "(string)" && right.id === "(string)") {
+ left.value += right.value;
+ left.character = right.character;
+ if (!state.option.scripturl && reg.javascriptURL.test(left.value)) {
+ warning("W050", left);
+ }
+ return left;
+ }
+ that.left = left;
+ that.right = right;
+ return that;
+ }, 130);
+ prefix("+", "num");
+ prefix("+++", function() {
+ warning("W007");
+ this.arity = "unary";
+ this.right = expression(150);
+ return this;
+ });
+ infix("+++", function(left) {
+ warning("W007");
+ this.left = left;
+ this.right = expression(130);
+ return this;
+ }, 130);
+ infix("-", "sub", 130);
+ prefix("-", "neg");
+ prefix("---", function() {
+ warning("W006");
+ this.arity = "unary";
+ this.right = expression(150);
+ return this;
+ });
+ infix("---", function(left) {
+ warning("W006");
+ this.left = left;
+ this.right = expression(130);
+ return this;
+ }, 130);
+ infix("*", "mult", 140);
+ infix("/", "div", 140);
+ infix("%", "mod", 140);
+
+ suffix("++");
+ prefix("++", "preinc");
+ state.syntax["++"].exps = true;
+
+ suffix("--");
+ prefix("--", "predec");
+ state.syntax["--"].exps = true;
+ prefix("delete", function() {
+ var p = expression(10);
+ if (!p || (p.id !== "." && p.id !== "[")) {
+ warning("W051");
+ }
+ this.first = p;
+
+ // The `delete` operator accepts unresolvable references when not in strict
+ // mode, so the operand may be undefined.
+ if (p.identifier && !state.directive["use strict"]) {
+ p.forgiveUndef = true;
+ }
+ return this;
+ }).exps = true;
+
+ prefix("~", function() {
+ if (state.option.bitwise) {
+ warning("W052", this, "~");
+ }
+ this.arity = "unary";
+ expression(150);
+ return this;
+ });
+
+ prefix("...", function() {
+ if (!state.option.esnext) {
+ warning("W119", this, "spread/rest operator");
+ }
+ if (!state.tokens.next.identifier) {
+ error("E030", state.tokens.next, state.tokens.next.value);
+ }
+ expression(150);
+ return this;
+ });
+
+ prefix("!", function() {
+ this.arity = "unary";
+ this.right = expression(150);
+
+ if (!this.right) { // '!' followed by nothing? Give up.
+ quit("E041", this.line || 0);
+ }
+
+ if (bang[this.right.id] === true) {
+ warning("W018", this, "!");
+ }
+ return this;
+ });
+
+ prefix("typeof", (function() {
+ var p = expression(150);
+ this.first = p;
+
+ // The `typeof` operator accepts unresolvable references, so the operand
+ // may be undefined.
+ if (p.identifier) {
+ p.forgiveUndef = true;
+ }
+ return this;
+ }));
+ prefix("new", function() {
+ var c = expression(155), i;
+ if (c && c.id !== "function") {
+ if (c.identifier) {
+ c["new"] = true;
+ switch (c.value) {
+ case "Number":
+ case "String":
+ case "Boolean":
+ case "Math":
+ case "JSON":
+ warning("W053", state.tokens.prev, c.value);
+ break;
+ case "Symbol":
+ if (state.option.esnext) {
+ warning("W053", state.tokens.prev, c.value);
+ }
+ break;
+ case "Function":
+ if (!state.option.evil) {
+ warning("W054");
+ }
+ break;
+ case "Date":
+ case "RegExp":
+ case "this":
+ break;
+ default:
+ if (c.id !== "function") {
+ i = c.value.substr(0, 1);
+ if (state.option.newcap && (i < "A" || i > "Z") && !_.has(global, c.value)) {
+ warning("W055", state.tokens.curr);
}
+ }
}
+ } else {
+ if (c.id !== "." && c.id !== "[" && c.id !== "(") {
+ warning("W056", state.tokens.curr);
+ }
+ }
+ } else {
+ if (!state.option.supernew)
+ warning("W057", this);
+ }
+ if (state.tokens.next.id !== "(" && !state.option.supernew) {
+ warning("W058", state.tokens.curr, state.tokens.curr.value);
+ }
+ this.first = c;
+ return this;
+ });
+ state.syntax["new"].exps = true;
- return {
- stack: function () {
- _current = {};
- _variables.push(_current);
- },
+ prefix("void").exps = true;
- unstack: function () {
- _checkBlockLabels();
- _variables.splice(_variables.length - 1, 1);
- _current = _.last(_variables);
- },
+ infix(".", function(left, that) {
+ var m = identifier(false, true);
- getlabel: function (l) {
- for (var i = _variables.length - 1 ; i >= 0; --i) {
- if (_.has(_variables[i], l) && !_variables[i][l]["(shadowed)"]) {
- return _variables[i];
- }
- }
- },
+ if (typeof m === "string") {
+ countMember(m);
+ }
- shadow: function (name) {
- for (var i = _variables.length - 1; i >= 0; i--) {
- if (_.has(_variables[i], name)) {
- _variables[i][name]["(shadowed)"] = true;
- }
- }
- },
+ that.left = left;
+ that.right = m;
- unshadow: function (name) {
- for (var i = _variables.length - 1; i >= 0; i--) {
- if (_.has(_variables[i], name)) {
- _variables[i][name]["(shadowed)"] = false;
- }
- }
- },
+ if (m && m === "hasOwnProperty" && state.tokens.next.value === "=") {
+ warning("W001");
+ }
- current: {
- has: function (t) {
- return _.has(_current, t);
- },
+ if (left && left.value === "arguments" && (m === "callee" || m === "caller")) {
+ if (state.option.noarg)
+ warning("W059", left, m);
+ else if (state.directive["use strict"])
+ error("E008");
+ } else if (!state.option.evil && left && left.value === "document" &&
+ (m === "write" || m === "writeln")) {
+ warning("W060", left);
+ }
- add: function (t, type, tok) {
- _current[t] = { "(type)" : type, "(token)": tok, "(shadowed)": false };
- }
+ if (!state.option.evil && (m === "eval" || m === "execScript")) {
+ warning("W061");
+ }
+
+ return that;
+ }, 160, true);
+
+ infix("(", function(left, that) {
+ if (state.option.immed && left && !left.immed && left.id === "function") {
+ warning("W062");
+ }
+
+ var n = 0;
+ var p = [];
+
+ if (left) {
+ if (left.type === "(identifier)") {
+ if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) {
+ if ("Number String Boolean Date Object Error Symbol".indexOf(left.value) === -1) {
+ if (left.value === "Math") {
+ warning("W063", left);
+ } else if (state.option.newcap) {
+ warning("W064", left);
}
- };
+ }
+ }
+ }
+ }
+
+ if (state.tokens.next.id !== ")") {
+ for (;;) {
+ p[p.length] = expression(10);
+ n += 1;
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ comma();
+ }
+ }
+
+ advance(")");
+
+ if (typeof left === "object") {
+ if (state.option.inES3() && left.value === "parseInt" && n === 1) {
+ warning("W065", state.tokens.curr);
+ }
+ if (!state.option.evil) {
+ if (left.value === "eval" || left.value === "Function" ||
+ left.value === "execScript") {
+ warning("W061", left);
+
+ if (p[0] && [0].id === "(string)") {
+ addInternalSrc(left, p[0].value);
+ }
+ } else if (p[0] && p[0].id === "(string)" &&
+ (left.value === "setTimeout" ||
+ left.value === "setInterval")) {
+ warning("W066", left);
+ addInternalSrc(left, p[0].value);
+
+ // window.setTimeout/setInterval
+ } else if (p[0] && p[0].id === "(string)" &&
+ left.value === "." &&
+ left.left.value === "window" &&
+ (left.right === "setTimeout" ||
+ left.right === "setInterval")) {
+ warning("W066", left);
+ addInternalSrc(left, p[0].value);
+ }
+ }
+ if (!left.identifier && left.id !== "." && left.id !== "[" &&
+ left.id !== "(" && left.id !== "&&" && left.id !== "||" &&
+ left.id !== "?" && !(state.option.esnext && left["(name)"])) {
+ warning("W067", that);
+ }
+ }
+
+ that.left = left;
+ return that;
+ }, 155, true).exps = true;
+
+ prefix("(", function() {
+ var pn = state.tokens.next, pn1, i = -1;
+ var ret, triggerFnExpr, first, last;
+ var parens = 1;
+ var opening = state.tokens.curr;
+ var preceeding = state.tokens.prev;
+ var isNecessary = !state.option.singleGroups;
+
+ do {
+ if (pn.value === "(") {
+ parens += 1;
+ } else if (pn.value === ")") {
+ parens -= 1;
+ }
+
+ i += 1;
+ pn1 = pn;
+ pn = peek(i);
+ } while (!(parens === 0 && pn1.value === ")") && pn.value !== ";" && pn.type !== "(end)");
+
+ if (state.tokens.next.id === "function") {
+ triggerFnExpr = state.tokens.next.immed = true;
+ }
+
+ // If the balanced grouping operator is followed by a "fat arrow", the
+ // current token marks the beginning of a "fat arrow" function and parsing
+ // should proceed accordingly.
+ if (pn.value === "=>") {
+ return doFunction(null, null, null, { parsedParen: true });
+ }
+
+ var exprs = [];
+
+ if (state.tokens.next.id !== ")") {
+ for (;;) {
+ exprs.push(expression(10));
+
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ comma();
+ }
+ }
+
+ advance(")", this);
+ if (state.option.immed && exprs[0] && exprs[0].id === "function") {
+ if (state.tokens.next.id !== "(" &&
+ state.tokens.next.id !== "." && state.tokens.next.id !== "[") {
+ warning("W068", this);
+ }
+ }
+
+ if (!exprs.length) {
+ return;
+ }
+ if (exprs.length > 1) {
+ ret = Object.create(state.syntax[","]);
+ ret.exprs = exprs;
+
+ first = exprs[0];
+ last = exprs[exprs.length - 1];
+
+ if (!isNecessary) {
+ isNecessary = preceeding.assign || preceeding.delim;
+ }
+ } else {
+ ret = first = last = exprs[0];
+
+ if (!isNecessary) {
+ isNecessary =
+ // Used to distinguish from an ExpressionStatement which may not
+ // begin with the `{` and `function` tokens
+ (opening.beginsStmt && (ret.id === "{" || triggerFnExpr || isFunctor(ret))) ||
+ // Used as the return value of a single-statement arrow function
+ (ret.id === "{" && preceeding.id === "=>") ||
+ // Used to prevent left-to-right application of adjacent addition
+ // operators (the order of which effect type)
+ (first.id === "+" && preceeding.id === "+");
+ }
+ }
+
+ if (ret) {
+ // The operator may be necessary to override the default binding power of
+ // neighboring operators (whenever there is an operator in use within the
+ // first expression *or* the current group contains multiple expressions)
+ if (!isNecessary && (first.left || ret.exprs)) {
+ isNecessary =
+ (!isBeginOfExpr(preceeding) && first.lbp < preceeding.lbp) ||
+ (!isEndOfExpr() && last.lbp < state.tokens.next.lbp);
+ }
+
+ if (!isNecessary) {
+ warning("W126");
+ }
+
+ ret.paren = true;
+ }
+
+ return ret;
+ });
+
+ application("=>");
+
+ infix("[", function(left, that) {
+ var e = expression(10), s;
+ if (e && e.type === "(string)") {
+ if (!state.option.evil && (e.value === "eval" || e.value === "execScript")) {
+ warning("W061", that);
+ }
+
+ countMember(e.value);
+ if (!state.option.sub && reg.identifier.test(e.value)) {
+ s = state.syntax[e.value];
+ if (!s || !isReserved(s)) {
+ warning("W069", state.tokens.prev, e.value);
+ }
+ }
+ }
+ advance("]", that);
+
+ if (e && e.value === "hasOwnProperty" && state.tokens.next.value === "=") {
+ warning("W001");
+ }
+
+ that.left = left;
+ that.right = e;
+ return that;
+ }, 160, true);
+
+ function comprehensiveArrayExpression() {
+ var res = {};
+ res.exps = true;
+ funct["(comparray)"].stack();
+
+ // Handle reversed for expressions, used in spidermonkey
+ var reversed = false;
+ if (state.tokens.next.value !== "for") {
+ reversed = true;
+ if (!state.option.inMoz(true)) {
+ warning("W116", state.tokens.next, "for", state.tokens.next.value);
+ }
+ funct["(comparray)"].setState("use");
+ res.right = expression(10);
+ }
+
+ advance("for");
+ if (state.tokens.next.value === "each") {
+ advance("each");
+ if (!state.option.inMoz(true)) {
+ warning("W118", state.tokens.curr, "for each");
+ }
+ }
+ advance("(");
+ funct["(comparray)"].setState("define");
+ res.left = expression(130);
+ if (_.contains(["in", "of"], state.tokens.next.value)) {
+ advance();
+ } else {
+ error("E045", state.tokens.curr);
+ }
+ funct["(comparray)"].setState("generate");
+ expression(10);
+
+ advance(")");
+ if (state.tokens.next.value === "if") {
+ advance("if");
+ advance("(");
+ funct["(comparray)"].setState("filter");
+ res.filter = expression(10);
+ advance(")");
+ }
+
+ if (!reversed) {
+ funct["(comparray)"].setState("use");
+ res.right = expression(10);
+ }
+
+ advance("]");
+ funct["(comparray)"].unstack();
+ return res;
+ }
+
+ prefix("[", function() {
+ var blocktype = lookupBlockType();
+ if (blocktype.isCompArray) {
+ if (!state.option.inESNext()) {
+ warning("W119", state.tokens.curr, "array comprehension");
+ }
+ return comprehensiveArrayExpression();
+ } else if (blocktype.isDestAssign && !state.option.inESNext()) {
+ warning("W104", state.tokens.curr, "destructuring assignment");
+ }
+ var b = state.tokens.curr.line !== state.tokens.next.line;
+ this.first = [];
+ if (b) {
+ indent += state.option.indent;
+ if (state.tokens.next.from === indent + state.option.indent) {
+ indent += state.option.indent;
+ }
+ }
+ while (state.tokens.next.id !== "(end)") {
+ while (state.tokens.next.id === ",") {
+ if (!state.option.elision) {
+ if (!state.option.inES5()) {
+ // Maintain compat with old options --- ES5 mode without
+ // elision=true will warn once per comma
+ warning("W070");
+ } else {
+ warning("W128");
+ do {
+ advance(",");
+ } while (state.tokens.next.id === ",");
+ continue;
+ }
+ }
+ advance(",");
+ }
+
+ if (state.tokens.next.id === "]") {
+ break;
+ }
+
+ this.first.push(expression(10));
+ if (state.tokens.next.id === ",") {
+ comma({ allowTrailing: true });
+ if (state.tokens.next.id === "]" && !state.option.inES5(true)) {
+ warning("W070", state.tokens.curr);
+ break;
+ }
+ } else {
+ break;
+ }
+ }
+ if (b) {
+ indent -= state.option.indent;
+ }
+ advance("]", this);
+ return this;
+ });
+
+
+ function isMethod() {
+ return funct["(statement)"] && funct["(statement)"].type === "class" ||
+ funct["(context)"] && funct["(context)"]["(verb)"] === "class";
+ }
+
+
+ function isPropertyName(token) {
+ return token.identifier || token.id === "(string)" || token.id === "(number)";
+ }
+
+
+ function propertyName(preserveOrToken) {
+ var id;
+ var preserve = true;
+ if (typeof preserveOrToken === "object") {
+ id = preserveOrToken;
+ } else {
+ preserve = preserveOrToken;
+ id = optionalidentifier(false, true, preserve);
+ }
+
+ if (!id) {
+ if (state.tokens.next.id === "(string)") {
+ id = state.tokens.next.value;
+ if (!preserve) {
+ advance();
+ }
+ } else if (state.tokens.next.id === "(number)") {
+ id = state.tokens.next.value.toString();
+ if (!preserve) {
+ advance();
+ }
+ }
+ } else if (typeof id === "object") {
+ if (id.id === "(string)" || id.id === "(identifier)") id = id.value;
+ else if (id.id === "(number)") id = id.value.toString();
+ }
+
+ if (id === "hasOwnProperty") {
+ warning("W001");
+ }
+
+ return id;
+ }
+
+ function functionparams(fatarrow) {
+ var next;
+ var params = [];
+ var ident;
+ var tokens = [];
+ var t;
+ var pastDefault = false;
+ var loneArg = fatarrow && fatarrow.loneArg;
+
+ if (loneArg && loneArg.identifier === true) {
+ addlabel(loneArg.value, { type: "unused", token: loneArg });
+ return [loneArg];
+ }
+
+ next = state.tokens.next;
+
+ if (!fatarrow || !fatarrow.parsedParen) {
+ advance("(");
+ }
+
+ if (state.tokens.next.id === ")") {
+ advance(")");
+ return;
+ }
+
+ for (;;) {
+ if (_.contains(["{", "["], state.tokens.next.id)) {
+ tokens = destructuringExpression();
+ for (t in tokens) {
+ t = tokens[t];
+ if (t.id) {
+ params.push(t.id);
+ addlabel(t.id, { type: "unused", token: t.token });
+ }
+ }
+ } else if (state.tokens.next.value === "...") {
+ if (!state.option.esnext) {
+ warning("W119", state.tokens.next, "spread/rest operator");
+ }
+ advance("...");
+ ident = identifier(true);
+ params.push(ident);
+ addlabel(ident, { type: "unused", token: state.tokens.curr });
+ } else {
+ ident = identifier(true);
+ params.push(ident);
+ addlabel(ident, { type: "unused", token: state.tokens.curr });
+ }
+
+ // it is a syntax error to have a regular argument after a default argument
+ if (pastDefault) {
+ if (state.tokens.next.id !== "=") {
+ error("E051", state.tokens.current);
+ }
+ }
+ if (state.tokens.next.id === "=") {
+ if (!state.option.inESNext()) {
+ warning("W119", state.tokens.next, "default parameters");
+ }
+ advance("=");
+ pastDefault = true;
+ expression(10);
+ }
+ if (state.tokens.next.id === ",") {
+ comma();
+ } else {
+ advance(")", next);
+ return params;
+ }
+ }
+ }
+
+ function setprop(funct, name, values) {
+ if (!funct["(properties)"][name]) {
+ funct["(properties)"][name] = { unused: false };
+ }
+
+ _.extend(funct["(properties)"][name], values);
+ }
+
+ function getprop(funct, name, prop) {
+ if (!funct["(properties)"][name])
+ return null;
+
+ return funct["(properties)"][name][prop] || null;
+ }
+
+ function functor(name, token, scope, overwrites) {
+ var funct = {
+ "(name)" : name,
+ "(breakage)" : 0,
+ "(loopage)" : 0,
+ "(scope)" : scope,
+ "(tokens)" : {},
+ "(properties)": {},
+
+ "(catch)" : false,
+ "(global)" : false,
+
+ "(line)" : null,
+ "(character)" : null,
+ "(metrics)" : null,
+ "(statement)" : null,
+ "(context)" : null,
+ "(blockscope)": null,
+ "(comparray)" : null,
+ "(generator)" : null,
+ "(params)" : null
};
- // The actual JSHINT function itself.
- var itself = function (s, o, g) {
- var i, k, x;
- var optionKeys;
- var newOptionObj = {};
- var newIgnoredObj = {};
+ if (token) {
+ _.extend(funct, {
+ "(line)" : token.line,
+ "(character)": token.character,
+ "(metrics)" : createMetrics(token)
+ });
+ }
- o = _.clone(o);
- state.reset();
+ _.extend(funct, overwrites);
- if (o && o.scope) {
- JSHINT.scope = o.scope;
+ if (funct["(context)"]) {
+ funct["(blockscope)"] = funct["(context)"]["(blockscope)"];
+ funct["(comparray)"] = funct["(context)"]["(comparray)"];
+ }
+
+ return funct;
+ }
+
+ function isFunctor(token) {
+ return "(scope)" in token;
+ }
+
+ function doTemplateLiteral() {
+ while (state.tokens.next.type !== "(template tail)" && state.tokens.next.id !== "(end)") {
+ advance();
+ if (state.tokens.next.type === "(template tail)") {
+ break;
+ } else if (state.tokens.next.type !== "(template middle)" &&
+ state.tokens.next.type !== "(end)") {
+ expression(10); // should probably have different rbp?
+ }
+ }
+ return {
+ id: "(template)",
+ type: "(template)"
+ };
+ }
+
+ /**
+ * @param {Object} [fatarrow] In the case that the function being parsed
+ * takes the "fat arrow" form, this object will
+ * contain details about the in-progress parsing
+ * operation.
+ * @param {Token} [fatarrow.loneArg] The argument to the function in cases
+ * where it was defined using the single-
+ * argument shorthand.
+ * @param {bool} [fatarrow.parsedParen] Whether the opening parenthesis has
+ * already been parsed.
+ */
+ function doFunction(name, statement, generator, fatarrow) {
+ var f;
+ var oldOption = state.option;
+ var oldIgnored = state.ignored;
+ var oldScope = scope;
+
+ state.option = Object.create(state.option);
+ state.ignored = Object.create(state.ignored);
+ scope = Object.create(scope);
+
+ funct = functor(name || state.nameStack.infer(), state.tokens.next, scope, {
+ "(statement)": statement,
+ "(context)": funct,
+ "(generator)": generator ? true : null
+ });
+
+ f = funct;
+ state.tokens.curr.funct = funct;
+
+ functions.push(funct);
+
+ if (name) {
+ addlabel(name, { type: "function" });
+ }
+
+ funct["(params)"] = functionparams(fatarrow);
+ funct["(metrics)"].verifyMaxParametersPerFunction(funct["(params)"]);
+
+ if (fatarrow) {
+ if (!state.option.esnext) {
+ warning("W119", state.tokens.curr, "arrow function syntax (=>)");
+ }
+
+ if (!fatarrow.loneArg) {
+ advance("=>");
+ }
+ }
+
+ block(false, true, true, !!fatarrow);
+
+ if (!state.option.noyield && generator &&
+ funct["(generator)"] !== "yielded") {
+ warning("W124", state.tokens.curr);
+ }
+
+ funct["(metrics)"].verifyMaxStatementsPerFunction();
+ funct["(metrics)"].verifyMaxComplexityPerFunction();
+ funct["(unusedOption)"] = state.option.unused;
+
+ scope = oldScope;
+ state.option = oldOption;
+ state.ignored = oldIgnored;
+ funct["(last)"] = state.tokens.curr.line;
+ funct["(lastcharacter)"] = state.tokens.curr.character;
+
+ _.map(Object.keys(funct), function(key) {
+ if (key[0] === "(") return;
+ funct["(blockscope)"].unshadow(key);
+ });
+
+ funct = funct["(context)"];
+
+ return f;
+ }
+
+ function createMetrics(functionStartToken) {
+ return {
+ statementCount: 0,
+ nestedBlockDepth: -1,
+ ComplexityCount: 1,
+
+ verifyMaxStatementsPerFunction: function() {
+ if (state.option.maxstatements &&
+ this.statementCount > state.option.maxstatements) {
+ warning("W071", functionStartToken, this.statementCount);
+ }
+ },
+
+ verifyMaxParametersPerFunction: function(params) {
+ params = params || [];
+
+ if (state.option.maxparams && params.length > state.option.maxparams) {
+ warning("W072", functionStartToken, params.length);
+ }
+ },
+
+ verifyMaxNestedBlockDepthPerFunction: function() {
+ if (state.option.maxdepth &&
+ this.nestedBlockDepth > 0 &&
+ this.nestedBlockDepth === state.option.maxdepth + 1) {
+ warning("W073", null, this.nestedBlockDepth);
+ }
+ },
+
+ verifyMaxComplexityPerFunction: function() {
+ var max = state.option.maxcomplexity;
+ var cc = this.ComplexityCount;
+ if (max && cc > max) {
+ warning("W074", functionStartToken, cc);
+ }
+ }
+ };
+ }
+
+ function increaseComplexityCount() {
+ funct["(metrics)"].ComplexityCount += 1;
+ }
+
+ // Parse assignments that were found instead of conditionals.
+ // For example: if (a = 1) { ... }
+
+ function checkCondAssignment(expr) {
+ var id, paren;
+ if (expr) {
+ id = expr.id;
+ paren = expr.paren;
+ if (id === "," && (expr = expr.exprs[expr.exprs.length - 1])) {
+ id = expr.id;
+ paren = paren || expr.paren;
+ }
+ }
+ switch (id) {
+ case "=":
+ case "+=":
+ case "-=":
+ case "*=":
+ case "%=":
+ case "&=":
+ case "|=":
+ case "^=":
+ case "/=":
+ if (!paren && !state.option.boss) {
+ warning("W084");
+ }
+ }
+ }
+
+ /**
+ * @param {object} props Collection of property descriptors for a given
+ * object.
+ */
+ function checkProperties(props) {
+ // Check for lonely setters if in the ES5 mode.
+ if (state.option.inES5()) {
+ for (var name in props) {
+ if (_.has(props, name) && props[name].setterToken && !props[name].getterToken) {
+ warning("W078", props[name].setterToken);
+ }
+ }
+ }
+ }
+
+ (function(x) {
+ x.nud = function() {
+ var b, f, i, p, t, g, nextVal;
+ var props = {}; // All properties, including accessors
+
+ b = state.tokens.curr.line !== state.tokens.next.line;
+ if (b) {
+ indent += state.option.indent;
+ if (state.tokens.next.from === indent + state.option.indent) {
+ indent += state.option.indent;
+ }
+ }
+
+ for (;;) {
+ if (state.tokens.next.id === "}") {
+ break;
+ }
+
+ nextVal = state.tokens.next.value;
+ if (peek().id !== ":" && (nextVal === "get" || nextVal === "set")) {
+ advance(nextVal);
+
+ if (!state.option.inES5()) {
+ error("E034");
+ }
+
+ i = propertyName();
+
+ // ES6 allows for get() {...} and set() {...} method
+ // definition shorthand syntax, so we don't produce an error
+ // if the esnext option is enabled.
+ if (!i && !state.option.inESNext()) {
+ error("E035");
+ }
+
+ // We don't want to save this getter unless it's an actual getter
+ // and not an ES6 concise method
+ if (i) {
+ saveAccessor(nextVal, props, i, state.tokens.curr);
+ }
+
+ t = state.tokens.next;
+ f = doFunction();
+ p = f["(params)"];
+
+ // Don't warn about getter/setter pairs if this is an ES6 concise method
+ if (nextVal === "get" && i && p) {
+ warning("W076", t, p[0], i);
+ } else if (nextVal === "set" && i && (!p || p.length !== 1)) {
+ warning("W077", t, i);
+ }
} else {
- JSHINT.errors = [];
- JSHINT.undefs = [];
- JSHINT.internals = [];
- JSHINT.blacklist = {};
- JSHINT.scope = "(main)";
- }
-
- predefined = Object.create(null);
- combine(predefined, vars.ecmaIdentifiers);
- combine(predefined, vars.reservedVars);
-
- combine(predefined, g || {});
-
- declared = Object.create(null);
- exported = Object.create(null);
-
- function each(obj, cb) {
- if (!obj)
- return;
-
- if (!Array.isArray(obj) && typeof obj === "object")
- obj = Object.keys(obj);
-
- obj.forEach(cb);
- }
-
- if (o) {
- each(o.predef || null, function (item) {
- var slice, prop;
-
- if (item[0] === "-") {
- slice = item.slice(1);
- JSHINT.blacklist[slice] = slice;
- } else {
- prop = Object.getOwnPropertyDescriptor(o.predef, item);
- predefined[item] = prop ? prop.value : false;
- }
- });
-
- each(o.exported || null, function (item) {
- exported[item] = true;
- });
-
- delete o.predef;
- delete o.exported;
-
- optionKeys = Object.keys(o);
- for (x = 0; x < optionKeys.length; x++) {
- if (/^-W\d{3}$/g.test(optionKeys[x])) {
- newIgnoredObj[optionKeys[x].slice(1)] = true;
- } else {
- newOptionObj[optionKeys[x]] = o[optionKeys[x]];
-
- if (optionKeys[x] === "newcap" && o[optionKeys[x]] === false)
- newOptionObj["(explicitNewcap)"] = true;
-
- if (optionKeys[x] === "indent")
- newOptionObj["(explicitIndent)"] = o[optionKeys[x]] === false ? false : true;
- }
+ g = false;
+ if (state.tokens.next.value === "*" && state.tokens.next.type === "(punctuator)") {
+ if (!state.option.inESNext()) {
+ warning("W104", state.tokens.next, "generator functions");
}
- }
-
- state.option = newOptionObj;
- state.ignored = newIgnoredObj;
-
- state.option.indent = state.option.indent || 4;
- state.option.maxerr = state.option.maxerr || 50;
-
- indent = 1;
- global = Object.create(predefined);
- scope = global;
-
- funct = functor("(global)", null, scope, {
- "(global)" : true,
- "(blockscope)": blockScope(),
- "(comparray)" : arrayComprehension(),
- "(metrics)" : createMetrics(state.tokens.next)
- });
-
- functions = [funct];
- urls = [];
- stack = null;
- member = {};
- membersOnly = null;
- implied = {};
- inblock = false;
- lookahead = [];
- warnings = 0;
- unuseds = [];
-
- if (!isString(s) && !Array.isArray(s)) {
- errorAt("E004", 0);
- return false;
- }
-
- api = {
- get isJSON() {
- return state.jsonMode;
- },
-
- getOption: function (name) {
- return state.option[name] || null;
- },
-
- getCache: function (name) {
- return state.cache[name];
- },
-
- setCache: function (name, value) {
- state.cache[name] = value;
- },
-
- warn: function (code, data) {
- warningAt.apply(null, [ code, data.line, data.char ].concat(data.data));
- },
-
- on: function (names, listener) {
- names.split(" ").forEach(function (name) {
- emitter.on(name, listener);
- }.bind(this));
+ advance("*");
+ g = true;
+ }
+ if (state.tokens.next.identifier &&
+ (peekIgnoreEOL().id === "," || peekIgnoreEOL().id === "}")) {
+ if (!state.option.inESNext()) {
+ warning("W104", state.tokens.next, "object short notation");
}
- };
+ i = propertyName(true);
+ saveProperty(props, i, state.tokens.next);
- emitter.removeAllListeners();
- (extraModules || []).forEach(function (func) {
- func(api);
- });
-
- state.tokens.prev = state.tokens.curr = state.tokens.next = state.syntax["(begin)"];
-
- lex = new Lexer(s);
-
- lex.on("warning", function (ev) {
- warningAt.apply(null, [ ev.code, ev.line, ev.character].concat(ev.data));
- });
-
- lex.on("error", function (ev) {
- errorAt.apply(null, [ ev.code, ev.line, ev.character ].concat(ev.data));
- });
-
- lex.on("fatal", function (ev) {
- quit("E041", ev.line, ev.from);
- });
-
- lex.on("Identifier", function (ev) {
- emitter.emit("Identifier", ev);
- });
-
- lex.on("String", function (ev) {
- emitter.emit("String", ev);
- });
-
- lex.on("Number", function (ev) {
- emitter.emit("Number", ev);
- });
-
- lex.start();
-
- // Check options
- for (var name in o) {
- if (_.has(o, name)) {
- checkOption(name, state.tokens.curr);
- }
- }
-
- assume();
-
- // combine the passed globals after we've assumed all our options
- combine(predefined, g || {});
-
- //reset values
- comma.first = true;
-
- try {
- advance();
- switch (state.tokens.next.id) {
- case "{":
- case "[":
- destructuringAssignOrJsonValue();
- break;
- default:
- directives();
-
- if (state.directive["use strict"]) {
- if (!state.option.globalstrict && !(state.option.node || state.option.phantom)) {
- warning("W097", state.tokens.prev);
- }
- } else if (state.option.globalstrict && state.option.strict) {
- warning("E007");
- }
-
- statements();
- }
- advance((state.tokens.next && state.tokens.next.value !== ".") ? "(end)" : undefined);
- funct["(blockscope)"].unstack();
-
- var markDefined = function (name, context) {
- do {
- if (typeof context[name] === "string") {
- // JSHINT marks unused variables as 'unused' and
- // unused function declaration as 'unction'. This
- // code changes such instances back 'var' and
- // 'closure' so that the code in JSHINT.data()
- // doesn't think they're unused.
-
- if (context[name] === "unused")
- context[name] = "var";
- else if (context[name] === "unction")
- context[name] = "closure";
-
- return true;
- }
-
- context = context["(context)"];
- } while (context);
-
- return false;
- };
-
- var clearImplied = function (name, line) {
- if (!implied[name])
- return;
-
- var newImplied = [];
- for (var i = 0; i < implied[name].length; i += 1) {
- if (implied[name][i] !== line)
- newImplied.push(implied[name][i]);
- }
-
- if (newImplied.length === 0)
- delete implied[name];
- else
- implied[name] = newImplied;
- };
-
- var warnUnused = function (name, tkn, type, unused_opt) {
- var line = tkn.line;
- var chr = tkn.character;
-
- if (unused_opt === undefined) {
- unused_opt = state.option.unused;
- }
-
- if (unused_opt === true) {
- unused_opt = "last-param";
- }
-
- var warnable_types = {
- "vars": ["var"],
- "last-param": ["var", "param"],
- "strict": ["var", "param", "last-param"]
- };
-
- if (unused_opt) {
- if (warnable_types[unused_opt] && warnable_types[unused_opt].indexOf(type) !== -1) {
- warningAt("W098", line, chr, name);
- }
- }
-
- unuseds.push({
- name: name,
- line: line,
- character: chr
- });
- };
-
- var checkUnused = function (func, key) {
- var type = func[key];
- var tkn = func["(tokens)"][key];
-
- if (key.charAt(0) === "(")
- return;
-
- if (type !== "unused" && type !== "unction" && type !== "const")
- return;
-
- // Params are checked separately from other variables.
- if (func["(params)"] && func["(params)"].indexOf(key) !== -1)
- return;
-
- // Variable is in global scope and defined as exported.
- if (func["(global)"] && _.has(exported, key))
- return;
-
- // Is this constant unused?
- if (type === "const" && !getprop(func, key, "unused"))
- return;
-
- warnUnused(key, tkn, "var");
- };
-
- // Check queued 'x is not defined' instances to see if they're still undefined.
- for (i = 0; i < JSHINT.undefs.length; i += 1) {
- k = JSHINT.undefs[i].slice(0);
-
- if (markDefined(k[2].value, k[0])) {
- clearImplied(k[2].value, k[2].line);
- } else if (state.option.undef) {
- warning.apply(warning, k.slice(1));
- }
- }
-
- functions.forEach(function (func) {
- if (func["(unusedOption)"] === false) {
- return;
- }
-
- for (var key in func) {
- if (_.has(func, key)) {
- checkUnused(func, key);
- }
- }
-
- if (!func["(params)"])
- return;
-
- var params = func["(params)"].slice();
- var param = params.pop();
- var type, unused_opt;
-
- while (param) {
- type = func[param];
- unused_opt = func["(unusedOption)"] || state.option.unused;
- unused_opt = unused_opt === true ? "last-param" : unused_opt;
-
- // 'undefined' is a special case for (function (window, undefined) { ... })();
- // patterns.
-
- if (param === "undefined")
- return;
-
- if (type === "unused" || type === "unction") {
- warnUnused(param, func["(tokens)"][param], "param", func["(unusedOption)"]);
- } else if (unused_opt === "last-param") {
- return;
- }
-
- param = params.pop();
- }
- });
-
- for (var key in declared) {
- if (_.has(declared, key) && !_.has(global, key) && !_.has(exported, key)) {
- warnUnused(key, declared[key], "var");
- }
- }
-
- } catch (err) {
- if (err && err.name === "JSHintError") {
- var nt = state.tokens.next || {};
- JSHINT.errors.push({
- scope : "(main)",
- raw : err.raw,
- code : err.code,
- reason : err.message,
- line : err.line || nt.line,
- character : err.character || nt.from
- }, null);
+ expression(10);
+ } else {
+ if (state.tokens.next.id === "[") {
+ i = computedPropertyName();
+ state.nameStack.set(i);
} else {
- throw err;
+ state.nameStack.set(state.tokens.next);
+ i = propertyName();
+ saveProperty(props, i, state.tokens.next);
+
+ if (typeof i !== "string") {
+ break;
+ }
}
+
+ if (state.tokens.next.value === "(") {
+ if (!state.option.inESNext()) {
+ warning("W104", state.tokens.curr, "concise methods");
+ }
+ doFunction(null, undefined, g);
+ } else {
+ advance(":");
+ expression(10);
+ }
+ }
}
- // Loop over the listed "internals", and check them as well.
+ countMember(i);
- if (JSHINT.scope === "(main)") {
- o = o || {};
+ if (state.tokens.next.id === ",") {
+ comma({ allowTrailing: true, property: true });
+ if (state.tokens.next.id === ",") {
+ warning("W070", state.tokens.curr);
+ } else if (state.tokens.next.id === "}" && !state.option.inES5(true)) {
+ warning("W070", state.tokens.curr);
+ }
+ } else {
+ break;
+ }
+ }
+ if (b) {
+ indent -= state.option.indent;
+ }
+ advance("}", this);
- for (i = 0; i < JSHINT.internals.length; i += 1) {
- k = JSHINT.internals[i];
- o.scope = k.elem;
- itself(k.value, o, g);
- }
+ checkProperties(props);
+
+ return this;
+ };
+ x.fud = function() {
+ error("E036", state.tokens.curr);
+ };
+ }(delim("{")));
+
+ function destructuringExpression() {
+ var id, ids;
+ var identifiers = [];
+ if (!state.option.inESNext()) {
+ warning("W104", state.tokens.curr, "destructuring expression");
+ }
+ var nextInnerDE = function() {
+ var ident;
+ if (_.contains(["[", "{"], state.tokens.next.value)) {
+ ids = destructuringExpression();
+ for (var id in ids) {
+ id = ids[id];
+ identifiers.push({ id: id.id, token: id.token });
+ }
+ } else if (state.tokens.next.value === ",") {
+ identifiers.push({ id: null, token: state.tokens.curr });
+ } else if (state.tokens.next.value === "(") {
+ advance("(");
+ nextInnerDE();
+ advance(")");
+ } else {
+ ident = identifier();
+ if (ident)
+ identifiers.push({ id: ident, token: state.tokens.curr });
+ }
+ };
+ if (state.tokens.next.value === "[") {
+ advance("[");
+ nextInnerDE();
+ while (state.tokens.next.value !== "]") {
+ advance(",");
+ nextInnerDE();
+ }
+ advance("]");
+ } else if (state.tokens.next.value === "{") {
+ advance("{");
+ id = identifier();
+ if (state.tokens.next.value === ":") {
+ advance(":");
+ nextInnerDE();
+ } else {
+ identifiers.push({ id: id, token: state.tokens.curr });
+ }
+ while (state.tokens.next.value !== "}") {
+ advance(",");
+ id = identifier();
+ if (state.tokens.next.value === ":") {
+ advance(":");
+ nextInnerDE();
+ } else {
+ identifiers.push({ id: id, token: state.tokens.curr });
+ }
+ }
+ advance("}");
+ }
+ return identifiers;
+ }
+
+ function destructuringExpressionMatch(tokens, value) {
+ var first = value.first;
+
+ if (!first)
+ return;
+
+ _.zip(tokens, Array.isArray(first) ? first : [ first ]).forEach(function(val) {
+ var token = val[0];
+ var value = val[1];
+
+ if (token && value)
+ token.first = value;
+ else if (token && token.first && !value)
+ warning("W080", token.first, token.first.value);
+ });
+ }
+
+ var conststatement = stmt("const", function(prefix) {
+ var tokens;
+ var value;
+ var lone; // State variable to know if it is a lone identifier, or a destructuring statement.
+
+ if (!state.option.inESNext())
+ warning("W104", state.tokens.curr, "const");
+
+ this.first = [];
+ for (;;) {
+ var names = [];
+ if (_.contains(["{", "["], state.tokens.next.value)) {
+ tokens = destructuringExpression();
+ lone = false;
+ } else {
+ tokens = [ { id: identifier(), token: state.tokens.curr } ];
+ lone = true;
+ }
+ for (var t in tokens) {
+ if (tokens.hasOwnProperty(t)) {
+ t = tokens[t];
+ if (funct[t.id] === "const") {
+ warning("E011", null, t.id);
+ }
+ if (funct["(global)"] && predefined[t.id] === false) {
+ warning("W079", t.token, t.id);
+ }
+ if (t.id) {
+ addlabel(t.id, { token: t.token, type: "const", unused: true });
+ names.push(t.token);
+ }
+ }
+ }
+ if (prefix) {
+ break;
+ }
+
+ this.first = this.first.concat(names);
+
+ if (state.tokens.next.id !== "=") {
+ warning("E012", state.tokens.curr, state.tokens.curr.value);
+ }
+
+ if (state.tokens.next.id === "=") {
+ advance("=");
+ if (state.tokens.next.id === "undefined") {
+ warning("W080", state.tokens.prev, state.tokens.prev.value);
+ }
+ if (peek(0).id === "=" && state.tokens.next.identifier) {
+ warning("W120", state.tokens.next, state.tokens.next.value);
+ }
+ value = expression(10);
+ if (lone) {
+ tokens[0].first = value;
+ } else {
+ destructuringExpressionMatch(names, value);
+ }
+ }
+
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ comma();
+ }
+ return this;
+ });
+
+ conststatement.exps = true;
+ var varstatement = stmt("var", function(prefix) {
+ // JavaScript does not have block scope. It only has function scope. So,
+ // declaring a variable in a block can have unexpected consequences.
+ var tokens, lone, value;
+
+ this.first = [];
+ for (;;) {
+ var names = [];
+ if (_.contains(["{", "["], state.tokens.next.value)) {
+ tokens = destructuringExpression();
+ lone = false;
+ } else {
+ tokens = [ { id: identifier(), token: state.tokens.curr } ];
+ lone = true;
+ }
+ for (var t in tokens) {
+ if (tokens.hasOwnProperty(t)) {
+ t = tokens[t];
+ if (state.option.inESNext() && funct[t.id] === "const") {
+ warning("E011", null, t.id);
+ }
+ if (funct["(global)"] && predefined[t.id] === false) {
+ warning("W079", t.token, t.id);
+ }
+ if (t.id) {
+ addlabel(t.id, { type: "unused", token: t.token });
+ names.push(t.token);
+ }
+ }
+ }
+ if (prefix) {
+ break;
+ }
+
+ this.first = this.first.concat(names);
+
+ if (state.tokens.next.id === "=") {
+ state.nameStack.set(state.tokens.curr);
+ advance("=");
+ if (state.tokens.next.id === "undefined") {
+ warning("W080", state.tokens.prev, state.tokens.prev.value);
+ }
+ if (peek(0).id === "=" && state.tokens.next.identifier) {
+ if (!funct["(params)"] || funct["(params)"].indexOf(state.tokens.next.value) === -1) {
+ warning("W120", state.tokens.next, state.tokens.next.value);
+ }
+ }
+ value = expression(10);
+ if (lone) {
+ tokens[0].first = value;
+ } else {
+ destructuringExpressionMatch(names, value);
+ }
+ }
+
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ comma();
+ }
+ return this;
+ });
+ varstatement.exps = true;
+
+ var letstatement = stmt("let", function(prefix) {
+ var tokens, lone, value, letblock;
+
+ if (!state.option.inESNext()) {
+ warning("W104", state.tokens.curr, "let");
+ }
+
+ if (state.tokens.next.value === "(") {
+ if (!state.option.inMoz(true)) {
+ warning("W118", state.tokens.next, "let block");
+ }
+ advance("(");
+ funct["(blockscope)"].stack();
+ letblock = true;
+ } else if (funct["(nolet)"]) {
+ error("E048", state.tokens.curr);
+ }
+
+ this.first = [];
+ for (;;) {
+ var names = [];
+ if (_.contains(["{", "["], state.tokens.next.value)) {
+ tokens = destructuringExpression();
+ lone = false;
+ } else {
+ tokens = [ { id: identifier(), token: state.tokens.curr.value } ];
+ lone = true;
+ }
+ for (var t in tokens) {
+ if (tokens.hasOwnProperty(t)) {
+ t = tokens[t];
+ if (state.option.inESNext() && funct[t.id] === "const") {
+ warning("E011", null, t.id);
+ }
+ if (funct["(global)"] && predefined[t.id] === false) {
+ warning("W079", t.token, t.id);
+ }
+ if (t.id && !funct["(nolet)"]) {
+ addlabel(t.id, { type: "unused", token: t.token, islet: true });
+ names.push(t.token);
+ }
+ }
+ }
+ if (prefix) {
+ break;
+ }
+
+ this.first = this.first.concat(names);
+
+ if (state.tokens.next.id === "=") {
+ advance("=");
+ if (state.tokens.next.id === "undefined") {
+ warning("W080", state.tokens.prev, state.tokens.prev.value);
+ }
+ if (peek(0).id === "=" && state.tokens.next.identifier) {
+ warning("W120", state.tokens.next, state.tokens.next.value);
+ }
+ value = expression(10);
+ if (lone) {
+ tokens[0].first = value;
+ } else {
+ destructuringExpressionMatch(names, value);
+ }
+ }
+
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ comma();
+ }
+ if (letblock) {
+ advance(")");
+ block(true, true);
+ this.block = true;
+ funct["(blockscope)"].unstack();
+ }
+
+ return this;
+ });
+ letstatement.exps = true;
+
+ blockstmt("class", function() {
+ return classdef.call(this, true);
+ });
+
+ function classdef(stmt) {
+ /*jshint validthis:true */
+ if (!state.option.inESNext()) {
+ warning("W104", state.tokens.curr, "class");
+ }
+ if (stmt) {
+ // BindingIdentifier
+ this.name = identifier();
+ addlabel(this.name, { type: "unused", token: state.tokens.curr });
+ } else if (state.tokens.next.identifier && state.tokens.next.value !== "extends") {
+ // BindingIdentifier(opt)
+ this.name = identifier();
+ } else {
+ this.name = state.nameStack.infer();
+ }
+ classtail(this);
+ return this;
+ }
+
+ function classtail(c) {
+ var strictness = state.directive["use strict"];
+
+ // ClassHeritage(opt)
+ if (state.tokens.next.value === "extends") {
+ advance("extends");
+ c.heritage = expression(10);
+ }
+
+ // A ClassBody is always strict code.
+ state.directive["use strict"] = true;
+ advance("{");
+ // ClassBody(opt)
+ c.body = classbody(c);
+ advance("}");
+ state.directive["use strict"] = strictness;
+ }
+
+ function classbody(c) {
+ var name;
+ var isStatic;
+ var isGenerator;
+ var getset;
+ var props = {};
+ var staticProps = {};
+ var computed;
+ for (var i = 0; state.tokens.next.id !== "}"; ++i) {
+ name = state.tokens.next;
+ isStatic = false;
+ isGenerator = false;
+ getset = null;
+ if (name.id === "*") {
+ isGenerator = true;
+ advance("*");
+ name = state.tokens.next;
+ }
+ if (name.id === "[") {
+ name = computedPropertyName();
+ } else if (isPropertyName(name)) {
+ // Non-Computed PropertyName
+ advance();
+ computed = false;
+ if (name.identifier && name.value === "static") {
+ if (checkPunctuators(state.tokens.next, ["*"])) {
+ isGenerator = true;
+ advance("*");
+ }
+ if (isPropertyName(state.tokens.next) || state.tokens.next.id === "[") {
+ computed = state.tokens.next.id === "[";
+ isStatic = true;
+ name = state.tokens.next;
+ if (state.tokens.next.id === "[") {
+ name = computedPropertyName();
+ } else advance();
+ }
}
- return JSHINT.errors.length === 0;
+ if (name.identifier && (name.value === "get" || name.value === "set")) {
+ if (isPropertyName(state.tokens.next) || state.tokens.next.id === "[") {
+ computed = state.tokens.next.id === "[";
+ getset = name;
+ name = state.tokens.next;
+ if (state.tokens.next.id === "[") {
+ name = computedPropertyName();
+ } else advance();
+ }
+ }
+ } else {
+ warning("W052", state.tokens.next, state.tokens.next.value || state.tokens.next.type);
+ advance();
+ continue;
+ }
+
+ if (!checkPunctuators(state.tokens.next, ["("])) {
+ // error --- class properties must be methods
+ error("E054", state.tokens.next, state.tokens.next.value);
+ while (state.tokens.next.id !== "}" &&
+ !checkPunctuators(state.tokens.next, ["("])) {
+ advance();
+ }
+ if (state.tokens.next.value !== "(") {
+ doFunction(undefined, c, false, null);
+ }
+ }
+
+ if (!computed) {
+ // We don't know how to determine if we have duplicate computed property names :(
+ if (getset) {
+ saveAccessor(
+ getset.value, isStatic ? staticProps : props, name.value, name, true, isStatic);
+ } else {
+ if (name.value === "constructor") {
+ state.nameStack.set(c);
+ } else {
+ state.nameStack.set(name);
+ }
+ saveProperty(isStatic ? staticProps : props, name.value, name, true, isStatic);
+ }
+ }
+
+ if (getset && name.value === "constructor") {
+ var propDesc = getset.value === "get" ? "class getter method" : "class setter method";
+ error("E049", name, propDesc, "constructor");
+ } else if (name.value === "prototype") {
+ error("E049", name, "class method", "prototype");
+ }
+
+ propertyName(name);
+
+ doFunction(null, c, isGenerator, null);
+ }
+
+ checkProperties(props);
+ }
+
+ blockstmt("function", function() {
+ var generator = false;
+ if (state.tokens.next.value === "*") {
+ advance("*");
+ if (state.option.inESNext(true)) {
+ generator = true;
+ } else {
+ warning("W119", state.tokens.curr, "function*");
+ }
+ }
+ if (inblock) {
+ warning("W082", state.tokens.curr);
+
+ }
+ var i = optionalidentifier();
+
+ if (i === undefined) {
+ warning("W025");
+ }
+
+ if (funct[i] === "const") {
+ warning("E011", null, i);
+ }
+ addlabel(i, { type: "unction", token: state.tokens.curr });
+
+ doFunction(i, { statement: true }, generator);
+ if (state.tokens.next.id === "(" && state.tokens.next.line === state.tokens.curr.line) {
+ error("E039");
+ }
+ return this;
+ });
+
+ prefix("function", function() {
+ var generator = false;
+
+ if (state.tokens.next.value === "*") {
+ if (!state.option.inESNext()) {
+ warning("W119", state.tokens.curr, "function*");
+ }
+ advance("*");
+ generator = true;
+ }
+
+ var i = optionalidentifier();
+ var fn = doFunction(i, undefined, generator);
+
+ function isVariable(name) { return name[0] !== "("; }
+ function isLocal(name) { return fn[name] === "var"; }
+
+ if (!state.option.loopfunc && funct["(loopage)"]) {
+ // If the function we just parsed accesses any non-local variables
+ // trigger a warning. Otherwise, the function is safe even within
+ // a loop.
+ if (_.some(fn, function(val, name) { return isVariable(name) && !isLocal(name); })) {
+ warning("W083");
+ }
+ }
+ return this;
+ });
+
+ blockstmt("if", function() {
+ var t = state.tokens.next;
+ increaseComplexityCount();
+ state.condition = true;
+ advance("(");
+ var expr = expression(0);
+ checkCondAssignment(expr);
+
+ // When the if is within a for-in loop, check if the condition
+ // starts with a negation operator
+ var forinifcheck = null;
+ if (state.option.forin && state.forinifcheckneeded) {
+ state.forinifcheckneeded = false; // We only need to analyze the first if inside the loop
+ forinifcheck = state.forinifchecks[state.forinifchecks.length - 1];
+ if (expr.type === "(punctuator)" && expr.value === "!") {
+ forinifcheck.type = "(negative)";
+ } else {
+ forinifcheck.type = "(positive)";
+ }
+ }
+
+ advance(")", t);
+ state.condition = false;
+ var s = block(true, true);
+
+ // When the if is within a for-in loop and the condition has a negative form,
+ // check if the body contains nothing but a continue statement
+ if (forinifcheck && forinifcheck.type === "(negative)") {
+ if (s && s.length === 1 && s[0].type === "(identifier)" && s[0].value === "continue") {
+ forinifcheck.type = "(negative-with-continue)";
+ }
+ }
+
+ if (state.tokens.next.id === "else") {
+ advance("else");
+ if (state.tokens.next.id === "if" || state.tokens.next.id === "switch") {
+ statement();
+ } else {
+ block(true, true);
+ }
+ }
+ return this;
+ });
+
+ blockstmt("try", function() {
+ var b;
+
+ function doCatch() {
+ var oldScope = scope;
+ var e;
+
+ advance("catch");
+ advance("(");
+
+ scope = Object.create(oldScope);
+
+ e = state.tokens.next.value;
+ if (state.tokens.next.type !== "(identifier)") {
+ e = null;
+ warning("E030", state.tokens.next, e);
+ }
+
+ advance();
+
+ funct = functor("(catch)", state.tokens.next, scope, {
+ "(context)" : funct,
+ "(breakage)" : funct["(breakage)"],
+ "(loopage)" : funct["(loopage)"],
+ "(statement)": false,
+ "(catch)" : true
+ });
+
+ if (e) {
+ addlabel(e, { type: "exception" });
+ }
+
+ if (state.tokens.next.value === "if") {
+ if (!state.option.inMoz(true)) {
+ warning("W118", state.tokens.curr, "catch filter");
+ }
+ advance("if");
+ expression(0);
+ }
+
+ advance(")");
+
+ state.tokens.curr.funct = funct;
+ functions.push(funct);
+
+ block(false);
+
+ scope = oldScope;
+
+ funct["(last)"] = state.tokens.curr.line;
+ funct["(lastcharacter)"] = state.tokens.curr.character;
+ funct = funct["(context)"];
+ }
+
+ block(true);
+
+ while (state.tokens.next.id === "catch") {
+ increaseComplexityCount();
+ if (b && (!state.option.inMoz(true))) {
+ warning("W118", state.tokens.next, "multiple catch blocks");
+ }
+ doCatch();
+ b = true;
+ }
+
+ if (state.tokens.next.id === "finally") {
+ advance("finally");
+ block(true);
+ return;
+ }
+
+ if (!b) {
+ error("E021", state.tokens.next, "catch", state.tokens.next.value);
+ }
+
+ return this;
+ });
+
+ blockstmt("while", function() {
+ var t = state.tokens.next;
+ funct["(breakage)"] += 1;
+ funct["(loopage)"] += 1;
+ increaseComplexityCount();
+ advance("(");
+ checkCondAssignment(expression(0));
+ advance(")", t);
+ block(true, true);
+ funct["(breakage)"] -= 1;
+ funct["(loopage)"] -= 1;
+ return this;
+ }).labelled = true;
+
+ blockstmt("with", function() {
+ var t = state.tokens.next;
+ if (state.directive["use strict"]) {
+ error("E010", state.tokens.curr);
+ } else if (!state.option.withstmt) {
+ warning("W085", state.tokens.curr);
+ }
+
+ advance("(");
+ expression(0);
+ advance(")", t);
+ block(true, true);
+
+ return this;
+ });
+
+ blockstmt("switch", function() {
+ var t = state.tokens.next;
+ var g = false;
+ var noindent = false;
+
+ funct["(breakage)"] += 1;
+ advance("(");
+ checkCondAssignment(expression(0));
+ advance(")", t);
+ t = state.tokens.next;
+ advance("{");
+
+ if (state.tokens.next.from === indent)
+ noindent = true;
+
+ if (!noindent)
+ indent += state.option.indent;
+
+ this.cases = [];
+
+ for (;;) {
+ switch (state.tokens.next.id) {
+ case "case":
+ switch (funct["(verb)"]) {
+ case "yield":
+ case "break":
+ case "case":
+ case "continue":
+ case "return":
+ case "switch":
+ case "throw":
+ break;
+ default:
+ // You can tell JSHint that you don't use break intentionally by
+ // adding a comment /* falls through */ on a line just before
+ // the next `case`.
+ if (!reg.fallsThrough.test(state.lines[state.tokens.next.line - 2])) {
+ warning("W086", state.tokens.curr, "case");
+ }
+ }
+
+ advance("case");
+ this.cases.push(expression(0));
+ increaseComplexityCount();
+ g = true;
+ advance(":");
+ funct["(verb)"] = "case";
+ break;
+ case "default":
+ switch (funct["(verb)"]) {
+ case "yield":
+ case "break":
+ case "continue":
+ case "return":
+ case "throw":
+ break;
+ default:
+ // Do not display a warning if 'default' is the first statement or if
+ // there is a special /* falls through */ comment.
+ if (this.cases.length) {
+ if (!reg.fallsThrough.test(state.lines[state.tokens.next.line - 2])) {
+ warning("W086", state.tokens.curr, "default");
+ }
+ }
+ }
+
+ advance("default");
+ g = true;
+ advance(":");
+ break;
+ case "}":
+ if (!noindent)
+ indent -= state.option.indent;
+
+ advance("}", t);
+ funct["(breakage)"] -= 1;
+ funct["(verb)"] = undefined;
+ return;
+ case "(end)":
+ error("E023", state.tokens.next, "}");
+ return;
+ default:
+ indent += state.option.indent;
+ if (g) {
+ switch (state.tokens.curr.id) {
+ case ",":
+ error("E040");
+ return;
+ case ":":
+ g = false;
+ statements();
+ break;
+ default:
+ error("E025", state.tokens.curr);
+ return;
+ }
+ } else {
+ if (state.tokens.curr.id === ":") {
+ advance(":");
+ error("E024", state.tokens.curr, ":");
+ statements();
+ } else {
+ error("E021", state.tokens.next, "case", state.tokens.next.value);
+ return;
+ }
+ }
+ indent -= state.option.indent;
+ }
+ }
+ }).labelled = true;
+
+ stmt("debugger", function() {
+ if (!state.option.debug) {
+ warning("W087", this);
+ }
+ return this;
+ }).exps = true;
+
+ (function() {
+ var x = stmt("do", function() {
+ funct["(breakage)"] += 1;
+ funct["(loopage)"] += 1;
+ increaseComplexityCount();
+
+ this.first = block(true, true);
+ advance("while");
+ var t = state.tokens.next;
+ advance("(");
+ checkCondAssignment(expression(0));
+ advance(")", t);
+ funct["(breakage)"] -= 1;
+ funct["(loopage)"] -= 1;
+ return this;
+ });
+ x.labelled = true;
+ x.exps = true;
+ }());
+
+ blockstmt("for", function() {
+ var s, t = state.tokens.next;
+ var letscope = false;
+ var foreachtok = null;
+
+ if (t.value === "each") {
+ foreachtok = t;
+ advance("each");
+ if (!state.option.inMoz(true)) {
+ warning("W118", state.tokens.curr, "for each");
+ }
+ }
+
+ funct["(breakage)"] += 1;
+ funct["(loopage)"] += 1;
+ increaseComplexityCount();
+ advance("(");
+
+ // what kind of for(…) statement it is? for(…of…)? for(…in…)? for(…;…;…)?
+ var nextop; // contains the token of the "in" or "of" operator
+ var i = 0;
+ var inof = ["in", "of"];
+ do {
+ nextop = peek(i);
+ ++i;
+ } while (!_.contains(inof, nextop.value) && nextop.value !== ";" && nextop.type !== "(end)");
+
+ // if we're in a for (… in|of …) statement
+ if (_.contains(inof, nextop.value)) {
+ if (!state.option.inESNext() && nextop.value === "of") {
+ error("W104", nextop, "for of");
+ }
+
+ if (state.tokens.next.id === "var") {
+ advance("var");
+ state.syntax["var"].fud.call(state.syntax["var"].fud, true);
+ } else if (state.tokens.next.id === "let") {
+ advance("let");
+ // create a new block scope
+ letscope = true;
+ funct["(blockscope)"].stack();
+ state.syntax["let"].fud.call(state.syntax["let"].fud, true);
+ } else if (!state.tokens.next.identifier) {
+ error("E030", state.tokens.next, state.tokens.next.type);
+ advance();
+ } else {
+ switch (funct[state.tokens.next.value]) {
+ case "unused":
+ funct[state.tokens.next.value] = "var";
+ break;
+ case "var":
+ break;
+ default:
+ var ident = state.tokens.next.value;
+ if (!funct["(blockscope)"].getlabel(ident) &&
+ !(scope[ident] || {})[ident])
+ warning("W088", state.tokens.next, state.tokens.next.value);
+ }
+ advance();
+ }
+ advance(nextop.value);
+ expression(20);
+ advance(")", t);
+
+ if (nextop.value === "in" && state.option.forin) {
+ state.forinifcheckneeded = true;
+
+ if (state.forinifchecks === undefined) {
+ state.forinifchecks = [];
+ }
+
+ // Push a new for-in-if check onto the stack. The type will be modified
+ // when the loop's body is parsed and a suitable if statement exists.
+ state.forinifchecks.push({
+ type: "(none)"
+ });
+ }
+
+ s = block(true, true);
+
+ if (nextop.value === "in" && state.option.forin) {
+ if (state.forinifchecks && state.forinifchecks.length > 0) {
+ var check = state.forinifchecks.pop();
+
+ if (// No if statement or not the first statement in loop body
+ s && s.length > 0 && (typeof s[0] !== "object" || s[0].value !== "if") ||
+ // Positive if statement is not the only one in loop body
+ check.type === "(positive)" && s.length > 1 ||
+ // Negative if statement but no continue
+ check.type === "(negative)") {
+ warning("W089", this);
+ }
+ }
+
+ // Reset the flag in case no if statement was contained in the loop body
+ state.forinifcheckneeded = false;
+ }
+
+ funct["(breakage)"] -= 1;
+ funct["(loopage)"] -= 1;
+ } else {
+ if (foreachtok) {
+ error("E045", foreachtok);
+ }
+ if (state.tokens.next.id !== ";") {
+ if (state.tokens.next.id === "var") {
+ advance("var");
+ state.syntax["var"].fud.call(state.syntax["var"].fud);
+ } else if (state.tokens.next.id === "let") {
+ advance("let");
+ // create a new block scope
+ letscope = true;
+ funct["(blockscope)"].stack();
+ state.syntax["let"].fud.call(state.syntax["let"].fud);
+ } else {
+ for (;;) {
+ expression(0, "for");
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ comma();
+ }
+ }
+ }
+ nolinebreak(state.tokens.curr);
+ advance(";");
+ if (state.tokens.next.id !== ";") {
+ checkCondAssignment(expression(0));
+ }
+ nolinebreak(state.tokens.curr);
+ advance(";");
+ if (state.tokens.next.id === ";") {
+ error("E021", state.tokens.next, ")", ";");
+ }
+ if (state.tokens.next.id !== ")") {
+ for (;;) {
+ expression(0, "for");
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ comma();
+ }
+ }
+ advance(")", t);
+ block(true, true);
+ funct["(breakage)"] -= 1;
+ funct["(loopage)"] -= 1;
+
+ }
+ // unstack loop blockscope
+ if (letscope) {
+ funct["(blockscope)"].unstack();
+ }
+ return this;
+ }).labelled = true;
+
+
+ stmt("break", function() {
+ var v = state.tokens.next.value;
+
+ if (funct["(breakage)"] === 0)
+ warning("W052", state.tokens.next, this.value);
+
+ if (!state.option.asi)
+ nolinebreak(this);
+
+ if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
+ if (state.tokens.curr.line === state.tokens.next.line) {
+ if (funct[v] !== "label") {
+ warning("W090", state.tokens.next, v);
+ } else if (scope[v] !== funct) {
+ warning("W091", state.tokens.next, v);
+ }
+ this.first = state.tokens.next;
+ advance();
+ }
+ }
+
+ reachable(this);
+
+ return this;
+ }).exps = true;
+
+
+ stmt("continue", function() {
+ var v = state.tokens.next.value;
+
+ if (funct["(breakage)"] === 0)
+ warning("W052", state.tokens.next, this.value);
+
+ if (!state.option.asi)
+ nolinebreak(this);
+
+ if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
+ if (state.tokens.curr.line === state.tokens.next.line) {
+ if (funct[v] !== "label") {
+ warning("W090", state.tokens.next, v);
+ } else if (scope[v] !== funct) {
+ warning("W091", state.tokens.next, v);
+ }
+ this.first = state.tokens.next;
+ advance();
+ }
+ } else if (!funct["(loopage)"]) {
+ warning("W052", state.tokens.next, this.value);
+ }
+
+ reachable(this);
+
+ return this;
+ }).exps = true;
+
+
+ stmt("return", function() {
+ if (this.line === state.tokens.next.line) {
+ if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
+ this.first = expression(0);
+
+ if (this.first &&
+ this.first.type === "(punctuator)" && this.first.value === "=" &&
+ !this.first.paren && !state.option.boss) {
+ warningAt("W093", this.first.line, this.first.character);
+ }
+ }
+ } else {
+ if (state.tokens.next.type === "(punctuator)" &&
+ ["[", "{", "+", "-"].indexOf(state.tokens.next.value) > -1) {
+ nolinebreak(this); // always warn (Line breaking error)
+ }
+ }
+
+ reachable(this);
+
+ return this;
+ }).exps = true;
+
+ (function(x) {
+ x.exps = true;
+ x.lbp = 25;
+ }(prefix("yield", function() {
+ var prev = state.tokens.prev;
+ if (state.option.inESNext(true) && !funct["(generator)"]) {
+ // If it's a yield within a catch clause inside a generator then that's ok
+ if (!("(catch)" === funct["(name)"] && funct["(context)"]["(generator)"])) {
+ error("E046", state.tokens.curr, "yield");
+ }
+ } else if (!state.option.inESNext()) {
+ warning("W104", state.tokens.curr, "yield");
+ }
+ funct["(generator)"] = "yielded";
+ var delegatingYield = false;
+
+ if (state.tokens.next.value === "*") {
+ delegatingYield = true;
+ advance("*");
+ }
+
+ if (this.line === state.tokens.next.line || !state.option.inMoz(true)) {
+ if (delegatingYield ||
+ (state.tokens.next.id !== ";" && !state.tokens.next.reach && state.tokens.next.nud)) {
+
+ nobreaknonadjacent(state.tokens.curr, state.tokens.next);
+ this.first = expression(10);
+
+ if (this.first.type === "(punctuator)" && this.first.value === "=" &&
+ !this.first.paren && !state.option.boss) {
+ warningAt("W093", this.first.line, this.first.character);
+ }
+ }
+
+ if (state.option.inMoz(true) && state.tokens.next.id !== ")" &&
+ (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()) || prev.id === "yield")) {
+ error("E050", this);
+ }
+ } else if (!state.option.asi) {
+ nolinebreak(this); // always warn (Line breaking error)
+ }
+ return this;
+ })));
+
+
+ stmt("throw", function() {
+ nolinebreak(this);
+ this.first = expression(20);
+
+ reachable(this);
+
+ return this;
+ }).exps = true;
+
+ stmt("import", function() {
+ if (!state.option.inESNext()) {
+ warning("W119", state.tokens.curr, "import");
+ }
+
+ if (state.tokens.next.type === "(string)") {
+ // ModuleSpecifier :: StringLiteral
+ advance("(string)");
+ return this;
+ }
+
+ if (state.tokens.next.identifier) {
+ // ImportClause :: ImportedDefaultBinding
+ this.name = identifier();
+ addlabel(this.name, { type: "unused", token: state.tokens.curr });
+ } else if (state.tokens.next.id === "*") {
+ // ImportClause :: NameSpaceImport
+ advance("*");
+ advance("as");
+ if (state.tokens.next.identifier) {
+ this.name = identifier();
+ addlabel(this.name, { type: "unused", token: state.tokens.curr });
+ }
+ } else {
+ advance("{");
+ for (;;) {
+ if (state.tokens.next.value === "}") {
+ advance("}");
+ break;
+ }
+ var importName;
+ if (state.tokens.next.type === "default") {
+ importName = "default";
+ advance("default");
+ } else {
+ importName = identifier();
+ }
+ if (state.tokens.next.value === "as") {
+ advance("as");
+ importName = identifier();
+ }
+ addlabel(importName, { type: "unused", token: state.tokens.curr });
+
+ if (state.tokens.next.value === ",") {
+ advance(",");
+ } else if (state.tokens.next.value === "}") {
+ advance("}");
+ break;
+ } else {
+ error("E024", state.tokens.next, state.tokens.next.value);
+ break;
+ }
+ }
+ }
+
+ // FromClause
+ advance("from");
+ advance("(string)");
+ return this;
+ }).exps = true;
+
+ stmt("export", function() {
+ var ok = true;
+ if (!state.option.inESNext()) {
+ warning("W119", state.tokens.curr, "export");
+ ok = false;
+ }
+
+ if (!funct["(global)"] || !funct["(blockscope)"].atTop()) {
+ error("E053", state.tokens.curr);
+ ok = false;
+ }
+
+ if (state.tokens.next.value === "*") {
+ advance("*");
+ advance("from");
+ advance("(string)");
+ return this;
+ }
+
+ if (state.tokens.next.type === "default") {
+ state.nameStack.set(state.tokens.next);
+ advance("default");
+ if (state.tokens.next.id === "function" || state.tokens.next.id === "class") {
+ this.block = true;
+ }
+ this.exportee = expression(10);
+
+ return this;
+ }
+
+ if (state.tokens.next.value === "{") {
+ advance("{");
+ for (;;) {
+ var id;
+ exported[id = identifier(false, false, ok)] = ok;
+ if (ok) {
+ funct["(blockscope)"].setExported(id);
+ }
+
+ if (state.tokens.next.value === ",") {
+ advance(",");
+ } else if (state.tokens.next.value === "}") {
+ advance("}");
+ break;
+ } else {
+ error("E024", state.tokens.next, state.tokens.next.value);
+ break;
+ }
+ }
+ return this;
+ }
+
+ if (state.tokens.next.id === "var") {
+ advance("var");
+ exported[state.tokens.next.value] = ok;
+ state.tokens.next.exported = true;
+ state.syntax["var"].fud.call(state.syntax["var"].fud);
+ } else if (state.tokens.next.id === "let") {
+ advance("let");
+ exported[state.tokens.next.value] = ok;
+ state.tokens.next.exported = true;
+ state.syntax["let"].fud.call(state.syntax["let"].fud);
+ } else if (state.tokens.next.id === "const") {
+ advance("const");
+ exported[state.tokens.next.value] = ok;
+ state.tokens.next.exported = true;
+ state.syntax["const"].fud.call(state.syntax["const"].fud);
+ } else if (state.tokens.next.id === "function") {
+ this.block = true;
+ advance("function");
+ exported[state.tokens.next.value] = ok;
+ state.tokens.next.exported = true;
+ state.syntax["function"].fud();
+ } else if (state.tokens.next.id === "class") {
+ this.block = true;
+ advance("class");
+ exported[state.tokens.next.value] = ok;
+ state.tokens.next.exported = true;
+ state.syntax["class"].fud();
+ } else {
+ error("E024", state.tokens.next, state.tokens.next.value);
+ }
+
+ return this;
+ }).exps = true;
+
+ // Future Reserved Words
+
+ FutureReservedWord("abstract");
+ FutureReservedWord("boolean");
+ FutureReservedWord("byte");
+ FutureReservedWord("char");
+ FutureReservedWord("class", { es5: true, nud: classdef });
+ FutureReservedWord("double");
+ FutureReservedWord("enum", { es5: true });
+ FutureReservedWord("export", { es5: true });
+ FutureReservedWord("extends", { es5: true });
+ FutureReservedWord("final");
+ FutureReservedWord("float");
+ FutureReservedWord("goto");
+ FutureReservedWord("implements", { es5: true, strictOnly: true });
+ FutureReservedWord("import", { es5: true });
+ FutureReservedWord("int");
+ FutureReservedWord("interface", { es5: true, strictOnly: true });
+ FutureReservedWord("long");
+ FutureReservedWord("native");
+ FutureReservedWord("package", { es5: true, strictOnly: true });
+ FutureReservedWord("private", { es5: true, strictOnly: true });
+ FutureReservedWord("protected", { es5: true, strictOnly: true });
+ FutureReservedWord("public", { es5: true, strictOnly: true });
+ FutureReservedWord("short");
+ FutureReservedWord("static", { es5: true, strictOnly: true });
+ FutureReservedWord("super", { es5: true });
+ FutureReservedWord("synchronized");
+ FutureReservedWord("transient");
+ FutureReservedWord("volatile");
+
+ // this function is used to determine whether a squarebracket or a curlybracket
+ // expression is a comprehension array, destructuring assignment or a json value.
+
+ var lookupBlockType = function() {
+ var pn, pn1;
+ var i = -1;
+ var bracketStack = 0;
+ var ret = {};
+ if (checkPunctuators(state.tokens.curr, ["[", "{"]))
+ bracketStack += 1;
+ do {
+ pn = (i === -1) ? state.tokens.next : peek(i);
+ pn1 = peek(i + 1);
+ i = i + 1;
+ if (checkPunctuators(pn, ["[", "{"])) {
+ bracketStack += 1;
+ } else if (checkPunctuators(pn, ["]", "}"])) {
+ bracketStack -= 1;
+ }
+ if (pn.identifier && pn.value === "for" && bracketStack === 1) {
+ ret.isCompArray = true;
+ ret.notJson = true;
+ break;
+ }
+ if (checkPunctuators(pn, ["}", "]"]) && bracketStack === 0) {
+ if (pn1.value === "=") {
+ ret.isDestAssign = true;
+ ret.notJson = true;
+ break;
+ } else if (pn1.value === ".") {
+ ret.notJson = true;
+ break;
+ }
+ }
+ if (pn.value === ";") {
+ ret.isBlock = true;
+ ret.notJson = true;
+ }
+ } while (bracketStack > 0 && pn.id !== "(end)" && i < 15);
+ return ret;
+ };
+
+ function saveProperty(props, name, tkn, isClass, isStatic) {
+ var msg = ["key", "class method", "static class method"];
+ msg = msg[(isClass || false) + (isStatic || false)];
+ if (tkn.identifier) {
+ name = tkn.value;
+ }
+
+ if (props[name] && _.has(props, name)) {
+ warning("W075", state.tokens.next, msg, name);
+ } else {
+ props[name] = {};
+ }
+
+ props[name].basic = true;
+ props[name].basictkn = tkn;
+ }
+
+ /**
+ * @param {string} accessorType - Either "get" or "set"
+ * @param {object} props - a collection of all properties of the object to
+ * which the current accessor is being assigned
+ * @param {object} tkn - the identifier token representing the accessor name
+ * @param {boolean} isClass - whether the accessor is part of an ES6 Class
+ * definition
+ * @param {boolean} isStatic - whether the accessor is a static method
+ */
+ function saveAccessor(accessorType, props, name, tkn, isClass, isStatic) {
+ var flagName = accessorType === "get" ? "getterToken" : "setterToken";
+ var msg = "";
+
+ if (isClass) {
+ if (isStatic) {
+ msg += "static ";
+ }
+ msg += accessorType + "ter method";
+ } else {
+ msg = "key";
+ }
+
+ state.tokens.curr.accessorType = accessorType;
+ state.nameStack.set(tkn);
+
+ if (props[name] && _.has(props, name)) {
+ if (props[name].basic || props[name][flagName]) {
+ warning("W075", state.tokens.next, msg, name);
+ }
+ } else {
+ props[name] = {};
+ }
+
+ props[name][flagName] = tkn;
+ }
+
+ function computedPropertyName() {
+ advance("[");
+ if (!state.option.esnext) {
+ warning("W119", state.tokens.curr, "computed property names");
+ }
+ var value = expression(10);
+ advance("]");
+ return value;
+ }
+
+ // Test whether a given token is a punctuator matching one of the specified values
+ function checkPunctuators(token, values) {
+ return token.type === "(punctuator)" && _.contains(values, token.value);
+ }
+
+ // Check whether this function has been reached for a destructuring assign with undeclared values
+ function destructuringAssignOrJsonValue() {
+ // lookup for the assignment (esnext only)
+ // if it has semicolons, it is a block, so go parse it as a block
+ // or it's not a block, but there are assignments, check for undeclared variables
+
+ var block = lookupBlockType();
+ if (block.notJson) {
+ if (!state.option.inESNext() && block.isDestAssign) {
+ warning("W104", state.tokens.curr, "destructuring assignment");
+ }
+ statements();
+ // otherwise parse json value
+ } else {
+ state.option.laxbreak = true;
+ state.jsonMode = true;
+ jsonValue();
+ }
+ }
+
+ // array comprehension parsing function
+ // parses and defines the three states of the list comprehension in order
+ // to avoid defining global variables, but keeping them to the list comprehension scope
+ // only. The order of the states are as follows:
+ // * "use" which will be the returned iterative part of the list comprehension
+ // * "define" which will define the variables local to the list comprehension
+ // * "filter" which will help filter out values
+
+ var arrayComprehension = function() {
+ var CompArray = function() {
+ this.mode = "use";
+ this.variables = [];
+ };
+ var _carrays = [];
+ var _current;
+ function declare(v) {
+ var l = _current.variables.filter(function(elt) {
+ // if it has, change its undef state
+ if (elt.value === v) {
+ elt.undef = false;
+ return v;
+ }
+ }).length;
+ return l !== 0;
+ }
+ function use(v) {
+ var l = _current.variables.filter(function(elt) {
+ // and if it has been defined
+ if (elt.value === v && !elt.undef) {
+ if (elt.unused === true) {
+ elt.unused = false;
+ }
+ return v;
+ }
+ }).length;
+ // otherwise we warn about it
+ return (l === 0);
+ }
+ return { stack: function() {
+ _current = new CompArray();
+ _carrays.push(_current);
+ },
+ unstack: function() {
+ _current.variables.filter(function(v) {
+ if (v.unused)
+ warning("W098", v.token, v.raw_text || v.value);
+ if (v.undef)
+ isundef(v.funct, "W117", v.token, v.value);
+ });
+ _carrays.splice(-1, 1);
+ _current = _carrays[_carrays.length - 1];
+ },
+ setState: function(s) {
+ if (_.contains(["use", "define", "generate", "filter"], s))
+ _current.mode = s;
+ },
+ check: function(v) {
+ if (!_current) {
+ return;
+ }
+ // When we are in "use" state of the list comp, we enqueue that var
+ if (_current && _current.mode === "use") {
+ if (use(v)) {
+ _current.variables.push({
+ funct: funct,
+ token: state.tokens.curr,
+ value: v,
+ undef: true,
+ unused: false
+ });
+ }
+ return true;
+ // When we are in "define" state of the list comp,
+ } else if (_current && _current.mode === "define") {
+ // check if the variable has been used previously
+ if (!declare(v)) {
+ _current.variables.push({
+ funct: funct,
+ token: state.tokens.curr,
+ value: v,
+ undef: false,
+ unused: true
+ });
+ }
+ return true;
+ // When we are in the "generate" state of the list comp,
+ } else if (_current && _current.mode === "generate") {
+ isundef(funct, "W117", state.tokens.curr, v);
+ return true;
+ // When we are in "filter" state,
+ } else if (_current && _current.mode === "filter") {
+ // we check whether current variable has been declared
+ if (use(v)) {
+ // if not we warn about it
+ isundef(funct, "W117", state.tokens.curr, v);
+ }
+ return true;
+ }
+ return false;
+ }
+ };
+ };
+
+
+ // Parse JSON
+
+ function jsonValue() {
+ function jsonObject() {
+ var o = {}, t = state.tokens.next;
+ advance("{");
+ if (state.tokens.next.id !== "}") {
+ for (;;) {
+ if (state.tokens.next.id === "(end)") {
+ error("E026", state.tokens.next, t.line);
+ } else if (state.tokens.next.id === "}") {
+ warning("W094", state.tokens.curr);
+ break;
+ } else if (state.tokens.next.id === ",") {
+ error("E028", state.tokens.next);
+ } else if (state.tokens.next.id !== "(string)") {
+ warning("W095", state.tokens.next, state.tokens.next.value);
+ }
+ if (o[state.tokens.next.value] === true) {
+ warning("W075", state.tokens.next, state.tokens.next.value);
+ } else if ((state.tokens.next.value === "__proto__" &&
+ !state.option.proto) || (state.tokens.next.value === "__iterator__" &&
+ !state.option.iterator)) {
+ warning("W096", state.tokens.next, state.tokens.next.value);
+ } else {
+ o[state.tokens.next.value] = true;
+ }
+ advance();
+ advance(":");
+ jsonValue();
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ advance(",");
+ }
+ }
+ advance("}");
+ }
+
+ function jsonArray() {
+ var t = state.tokens.next;
+ advance("[");
+ if (state.tokens.next.id !== "]") {
+ for (;;) {
+ if (state.tokens.next.id === "(end)") {
+ error("E027", state.tokens.next, t.line);
+ } else if (state.tokens.next.id === "]") {
+ warning("W094", state.tokens.curr);
+ break;
+ } else if (state.tokens.next.id === ",") {
+ error("E028", state.tokens.next);
+ }
+ jsonValue();
+ if (state.tokens.next.id !== ",") {
+ break;
+ }
+ advance(",");
+ }
+ }
+ advance("]");
+ }
+
+ switch (state.tokens.next.id) {
+ case "{":
+ jsonObject();
+ break;
+ case "[":
+ jsonArray();
+ break;
+ case "true":
+ case "false":
+ case "null":
+ case "(number)":
+ case "(string)":
+ advance();
+ break;
+ case "-":
+ advance("-");
+ advance("(number)");
+ break;
+ default:
+ error("E003", state.tokens.next);
+ }
+ }
+
+ var blockScope = function() {
+ var _current = {};
+ var _variables = [_current];
+
+ function _checkBlockLabels() {
+ for (var t in _current) {
+ if (_current[t]["(type)"] === "unused") {
+ if (state.option.unused) {
+ var tkn = _current[t]["(token)"];
+ // Don't report exported labels as unused
+ if (tkn.exported) {
+ continue;
+ }
+ var line = tkn.line;
+ var chr = tkn.character;
+ warningAt("W098", line, chr, t);
+ }
+ }
+ }
+ }
+
+ return {
+ stack: function() {
+ _current = {};
+ _variables.push(_current);
+ },
+
+ unstack: function() {
+ _checkBlockLabels();
+ _variables.splice(_variables.length - 1, 1);
+ _current = _.last(_variables);
+ },
+
+ getlabel: function(l) {
+ for (var i = _variables.length - 1 ; i >= 0; --i) {
+ if (_.has(_variables[i], l) && !_variables[i][l]["(shadowed)"]) {
+ return _variables[i];
+ }
+ }
+ },
+
+ shadow: function(name) {
+ for (var i = _variables.length - 1; i >= 0; i--) {
+ if (_.has(_variables[i], name)) {
+ _variables[i][name]["(shadowed)"] = true;
+ }
+ }
+ },
+
+ unshadow: function(name) {
+ for (var i = _variables.length - 1; i >= 0; i--) {
+ if (_.has(_variables[i], name)) {
+ _variables[i][name]["(shadowed)"] = false;
+ }
+ }
+ },
+
+ atTop: function() {
+ return _variables.length === 1;
+ },
+
+ setExported: function(id) {
+ if (funct["(blockscope)"].atTop()) {
+ var item = _current[id];
+ if (item && item["(token)"]) {
+ item["(token)"].exported = true;
+ }
+ }
+ },
+
+ current: {
+ has: function(t) {
+ return _.has(_current, t);
+ },
+
+ add: function(t, type, tok) {
+ _current[t] = { "(type)" : type, "(token)": tok, "(shadowed)": false };
+ }
+ }
+ };
+ };
+
+ var escapeRegex = function(str) {
+ return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
+ };
+
+ // The actual JSHINT function itself.
+ var itself = function(s, o, g) {
+ var i, k, x, reIgnoreStr, reIgnore;
+ var optionKeys;
+ var newOptionObj = {};
+ var newIgnoredObj = {};
+
+ o = _.clone(o);
+ state.reset();
+
+ if (o && o.scope) {
+ JSHINT.scope = o.scope;
+ } else {
+ JSHINT.errors = [];
+ JSHINT.undefs = [];
+ JSHINT.internals = [];
+ JSHINT.blacklist = {};
+ JSHINT.scope = "(main)";
+ }
+
+ predefined = Object.create(null);
+ combine(predefined, vars.ecmaIdentifiers);
+ combine(predefined, vars.reservedVars);
+
+ combine(predefined, g || {});
+
+ declared = Object.create(null);
+ exported = Object.create(null);
+
+ function each(obj, cb) {
+ if (!obj)
+ return;
+
+ if (!Array.isArray(obj) && typeof obj === "object")
+ obj = Object.keys(obj);
+
+ obj.forEach(cb);
+ }
+
+ if (o) {
+ each(o.predef || null, function(item) {
+ var slice, prop;
+
+ if (item[0] === "-") {
+ slice = item.slice(1);
+ JSHINT.blacklist[slice] = slice;
+ // remove from predefined if there
+ delete predefined[slice];
+ } else {
+ prop = Object.getOwnPropertyDescriptor(o.predef, item);
+ predefined[item] = prop ? prop.value : false;
+ }
+ });
+
+ each(o.exported || null, function(item) {
+ exported[item] = true;
+ });
+
+ delete o.predef;
+ delete o.exported;
+
+ optionKeys = Object.keys(o);
+ for (x = 0; x < optionKeys.length; x++) {
+ if (/^-W\d{3}$/g.test(optionKeys[x])) {
+ newIgnoredObj[optionKeys[x].slice(1)] = true;
+ } else {
+ newOptionObj[optionKeys[x]] = o[optionKeys[x]];
+
+ if (optionKeys[x] === "newcap" && o[optionKeys[x]] === false)
+ newOptionObj["(explicitNewcap)"] = true;
+ }
+ }
+ }
+
+ state.option = newOptionObj;
+ state.ignored = newIgnoredObj;
+
+ state.option.indent = state.option.indent || 4;
+ state.option.maxerr = state.option.maxerr || 50;
+
+ indent = 1;
+ global = Object.create(predefined);
+ scope = global;
+
+ funct = functor("(global)", null, scope, {
+ "(global)" : true,
+ "(blockscope)": blockScope(),
+ "(comparray)" : arrayComprehension(),
+ "(metrics)" : createMetrics(state.tokens.next)
+ });
+
+ functions = [funct];
+ urls = [];
+ stack = null;
+ member = {};
+ membersOnly = null;
+ implied = {};
+ inblock = false;
+ lookahead = [];
+ unuseds = [];
+
+ if (!isString(s) && !Array.isArray(s)) {
+ errorAt("E004", 0);
+ return false;
+ }
+
+ api = {
+ get isJSON() {
+ return state.jsonMode;
+ },
+
+ getOption: function(name) {
+ return state.option[name] || null;
+ },
+
+ getCache: function(name) {
+ return state.cache[name];
+ },
+
+ setCache: function(name, value) {
+ state.cache[name] = value;
+ },
+
+ warn: function(code, data) {
+ warningAt.apply(null, [ code, data.line, data.char ].concat(data.data));
+ },
+
+ on: function(names, listener) {
+ names.split(" ").forEach(function(name) {
+ emitter.on(name, listener);
+ }.bind(this));
+ }
};
- // Modules.
- itself.addModule = function (func) {
- extraModules.push(func);
- };
+ emitter.removeAllListeners();
+ (extraModules || []).forEach(function(func) {
+ func(api);
+ });
- itself.addModule(style.register);
+ state.tokens.prev = state.tokens.curr = state.tokens.next = state.syntax["(begin)"];
- // Data summary.
- itself.data = function () {
- var data = {
- functions: [],
- options: state.option
+ if (o && o.ignoreDelimiters) {
+
+ if (!Array.isArray(o.ignoreDelimiters)) {
+ o.ignoreDelimiters = [o.ignoreDelimiters];
+ }
+
+ o.ignoreDelimiters.forEach(function(delimiterPair) {
+ if (!delimiterPair.start || !delimiterPair.end)
+ return;
+
+ reIgnoreStr = escapeRegex(delimiterPair.start) +
+ "[\\s\\S]*?" +
+ escapeRegex(delimiterPair.end);
+
+ reIgnore = new RegExp(reIgnoreStr, "ig");
+
+ s = s.replace(reIgnore, function(match) {
+ return match.replace(/./g, " ");
+ });
+ });
+ }
+
+ lex = new Lexer(s);
+
+ lex.on("warning", function(ev) {
+ warningAt.apply(null, [ ev.code, ev.line, ev.character].concat(ev.data));
+ });
+
+ lex.on("error", function(ev) {
+ errorAt.apply(null, [ ev.code, ev.line, ev.character ].concat(ev.data));
+ });
+
+ lex.on("fatal", function(ev) {
+ quit("E041", ev.line, ev.from);
+ });
+
+ lex.on("Identifier", function(ev) {
+ emitter.emit("Identifier", ev);
+ });
+
+ lex.on("String", function(ev) {
+ emitter.emit("String", ev);
+ });
+
+ lex.on("Number", function(ev) {
+ emitter.emit("Number", ev);
+ });
+
+ lex.start();
+
+ // Check options
+ for (var name in o) {
+ if (_.has(o, name)) {
+ checkOption(name, state.tokens.curr);
+ }
+ }
+
+ assume();
+
+ // combine the passed globals after we've assumed all our options
+ combine(predefined, g || {});
+
+ //reset values
+ comma.first = true;
+
+ try {
+ advance();
+ switch (state.tokens.next.id) {
+ case "{":
+ case "[":
+ destructuringAssignOrJsonValue();
+ break;
+ default:
+ directives();
+
+ if (state.directive["use strict"]) {
+ if (!state.option.globalstrict) {
+ if (!(state.option.node || state.option.phantom || state.option.browserify)) {
+ warning("W097", state.tokens.prev);
+ }
+ }
+ }
+
+ statements();
+ }
+ advance((state.tokens.next && state.tokens.next.value !== ".") ? "(end)" : undefined);
+ funct["(blockscope)"].unstack();
+
+ var markDefined = function(name, context) {
+ do {
+ if (typeof context[name] === "string") {
+ // JSHINT marks unused variables as 'unused' and
+ // unused function declaration as 'unction'. This
+ // code changes such instances back 'var' and
+ // 'closure' so that the code in JSHINT.data()
+ // doesn't think they're unused.
+
+ if (context[name] === "unused")
+ context[name] = "var";
+ else if (context[name] === "unction")
+ context[name] = "closure";
+
+ return true;
+ }
+
+ context = context["(context)"];
+ } while (context);
+
+ return false;
+ };
+
+ var clearImplied = function(name, line) {
+ if (!implied[name])
+ return;
+
+ var newImplied = [];
+ for (var i = 0; i < implied[name].length; i += 1) {
+ if (implied[name][i] !== line)
+ newImplied.push(implied[name][i]);
+ }
+
+ if (newImplied.length === 0)
+ delete implied[name];
+ else
+ implied[name] = newImplied;
+ };
+
+ var warnUnused = function(name, tkn, type, unused_opt) {
+ var line = tkn.line;
+ var chr = tkn.from;
+ var raw_name = tkn.raw_text || name;
+
+ if (unused_opt === undefined) {
+ unused_opt = state.option.unused;
+ }
+
+ if (unused_opt === true) {
+ unused_opt = "last-param";
+ }
+
+ var warnable_types = {
+ "vars": ["var"],
+ "last-param": ["var", "param"],
+ "strict": ["var", "param", "last-param"]
};
- var implieds = [];
- var members = [];
- var fu, f, i, j, n, globals;
-
- if (itself.errors.length) {
- data.errors = itself.errors;
- }
-
- if (state.jsonMode) {
- data.json = true;
- }
-
- for (n in implied) {
- if (_.has(implied, n)) {
- implieds.push({
- name: n,
- line: implied[n]
- });
+ if (unused_opt) {
+ if (warnable_types[unused_opt] && warnable_types[unused_opt].indexOf(type) !== -1) {
+ if (!tkn.exported) {
+ warningAt("W098", line, chr, raw_name);
}
+ }
}
- if (implieds.length > 0) {
- data.implieds = implieds;
+ unuseds.push({
+ name: name,
+ line: line,
+ character: chr
+ });
+ };
+
+ var checkUnused = function(func, key) {
+ var type = func[key];
+ var tkn = func["(tokens)"][key];
+
+ if (key.charAt(0) === "(")
+ return;
+
+ if (type !== "unused" && type !== "unction" && type !== "const")
+ return;
+
+ // Params are checked separately from other variables.
+ if (func["(params)"] && func["(params)"].indexOf(key) !== -1)
+ return;
+
+ // Variable is in global scope and defined as exported.
+ if (func["(global)"] && _.has(exported, key))
+ return;
+
+ // Is this constant unused?
+ if (type === "const" && !getprop(func, key, "unused"))
+ return;
+
+ warnUnused(key, tkn, "var");
+ };
+
+ // Check queued 'x is not defined' instances to see if they're still undefined.
+ for (i = 0; i < JSHINT.undefs.length; i += 1) {
+ k = JSHINT.undefs[i].slice(0);
+
+ if (markDefined(k[2].value, k[0]) || k[2].forgiveUndef) {
+ clearImplied(k[2].value, k[2].line);
+ } else if (state.option.undef) {
+ warning.apply(warning, k.slice(1));
+ }
+ }
+
+ functions.forEach(function(func) {
+ if (func["(unusedOption)"] === false) {
+ return;
}
- if (urls.length > 0) {
- data.urls = urls;
+ for (var key in func) {
+ if (_.has(func, key)) {
+ checkUnused(func, key);
+ }
}
- globals = Object.keys(scope);
- if (globals.length > 0) {
- data.globals = globals;
+ if (!func["(params)"])
+ return;
+
+ var params = func["(params)"].slice();
+ var param = params.pop();
+ var type, unused_opt;
+
+ while (param) {
+ type = func[param];
+ unused_opt = func["(unusedOption)"] || state.option.unused;
+ unused_opt = unused_opt === true ? "last-param" : unused_opt;
+
+ // 'undefined' is a special case for (function(window, undefined) { ... })();
+ // patterns.
+
+ if (param === "undefined")
+ return;
+
+ if (type === "unused" || type === "unction") {
+ warnUnused(param, func["(tokens)"][param], "param", func["(unusedOption)"]);
+ } else if (unused_opt === "last-param") {
+ return;
+ }
+
+ param = params.pop();
}
+ });
- for (i = 1; i < functions.length; i += 1) {
- f = functions[i];
- fu = {};
-
- for (j = 0; j < functionicity.length; j += 1) {
- fu[functionicity[j]] = [];
- }
-
- for (j = 0; j < functionicity.length; j += 1) {
- if (fu[functionicity[j]].length === 0) {
- delete fu[functionicity[j]];
- }
- }
-
- fu.name = f["(name)"];
- fu.param = f["(params)"];
- fu.line = f["(line)"];
- fu.character = f["(character)"];
- fu.last = f["(last)"];
- fu.lastcharacter = f["(lastcharacter)"];
-
- fu.metrics = {
- complexity: f["(metrics)"].ComplexityCount,
- parameters: (f["(params)"] || []).length,
- statements: f["(metrics)"].statementCount
- };
-
- data.functions.push(fu);
+ for (var key in declared) {
+ if (_.has(declared, key) && !_.has(global, key) && !_.has(exported, key)) {
+ warnUnused(key, declared[key], "var");
}
+ }
- if (unuseds.length > 0) {
- data.unused = unuseds;
- }
+ } catch (err) {
+ if (err && err.name === "JSHintError") {
+ var nt = state.tokens.next || {};
+ JSHINT.errors.push({
+ scope : "(main)",
+ raw : err.raw,
+ code : err.code,
+ reason : err.message,
+ line : err.line || nt.line,
+ character : err.character || nt.from
+ }, null);
+ } else {
+ throw err;
+ }
+ }
- members = [];
- for (n in member) {
- if (typeof member[n] === "number") {
- data.member = member;
- break;
- }
- }
+ // Loop over the listed "internals", and check them as well.
- return data;
+ if (JSHINT.scope === "(main)") {
+ o = o || {};
+
+ for (i = 0; i < JSHINT.internals.length; i += 1) {
+ k = JSHINT.internals[i];
+ o.scope = k.elem;
+ itself(k.value, o, g);
+ }
+ }
+
+ return JSHINT.errors.length === 0;
+ };
+
+ // Modules.
+ itself.addModule = function(func) {
+ extraModules.push(func);
+ };
+
+ itself.addModule(style.register);
+
+ // Data summary.
+ itself.data = function() {
+ var data = {
+ functions: [],
+ options: state.option
};
- itself.jshint = itself;
+ var implieds = [];
+ var members = [];
+ var fu, f, i, j, n, globals;
- return itself;
+ if (itself.errors.length) {
+ data.errors = itself.errors;
+ }
+
+ if (state.jsonMode) {
+ data.json = true;
+ }
+
+ for (n in implied) {
+ if (_.has(implied, n)) {
+ implieds.push({
+ name: n,
+ line: implied[n]
+ });
+ }
+ }
+
+ if (implieds.length > 0) {
+ data.implieds = implieds;
+ }
+
+ if (urls.length > 0) {
+ data.urls = urls;
+ }
+
+ globals = Object.keys(scope);
+ if (globals.length > 0) {
+ data.globals = globals;
+ }
+
+ for (i = 1; i < functions.length; i += 1) {
+ f = functions[i];
+ fu = {};
+
+ for (j = 0; j < functionicity.length; j += 1) {
+ fu[functionicity[j]] = [];
+ }
+
+ for (j = 0; j < functionicity.length; j += 1) {
+ if (fu[functionicity[j]].length === 0) {
+ delete fu[functionicity[j]];
+ }
+ }
+
+ fu.name = f["(name)"];
+ fu.param = f["(params)"];
+ fu.line = f["(line)"];
+ fu.character = f["(character)"];
+ fu.last = f["(last)"];
+ fu.lastcharacter = f["(lastcharacter)"];
+
+ fu.metrics = {
+ complexity: f["(metrics)"].ComplexityCount,
+ parameters: (f["(params)"] || []).length,
+ statements: f["(metrics)"].statementCount
+ };
+
+ data.functions.push(fu);
+ }
+
+ if (unuseds.length > 0) {
+ data.unused = unuseds;
+ }
+
+ members = [];
+ for (n in member) {
+ if (typeof member[n] === "number") {
+ data.member = member;
+ break;
+ }
+ }
+
+ return data;
+ };
+
+ itself.jshint = itself;
+
+ return itself;
}());
// Make JSHINT a Node module, if possible.
if (typeof exports === "object" && exports) {
- exports.JSHINT = JSHINT;
+ exports.JSHINT = JSHINT;
}
-},{"./lex.js":14,"./messages.js":15,"./reg.js":16,"./state.js":17,"./style.js":18,"./vars.js":19,"console-browserify":10,"events":5,"underscore":11}],"jshint":[function(require,module,exports){
-module.exports=require('FcDwKk');
-},{}],14:[function(require,module,exports){
-/*
- * Lexical analysis and token construction.
- */
+},{"./lex.js":13,"./messages.js":14,"./options.js":16,"./reg.js":17,"./state.js":18,"./style.js":19,"./vars.js":20,"console-browserify":10,"events":5,"underscore":12}]},{},[]);
-"use strict";
-
-var _ = require("underscore");
-var events = require("events");
-var reg = require("./reg.js");
-var state = require("./state.js").state;
-
-var unicodeData = require("../data/ascii-identifier-data.js");
-var asciiIdentifierStartTable = unicodeData.asciiIdentifierStartTable;
-var asciiIdentifierPartTable = unicodeData.asciiIdentifierPartTable;
-var nonAsciiIdentifierStartTable = require("../data/non-ascii-identifier-start.js");
-var nonAsciiIdentifierPartTable = require("../data/non-ascii-identifier-part-only.js");
-
-// Some of these token types are from JavaScript Parser API
-// while others are specific to JSHint parser.
-// JS Parser API: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
-
-var Token = {
- Identifier: 1,
- Punctuator: 2,
- NumericLiteral: 3,
- StringLiteral: 4,
- Comment: 5,
- Keyword: 6,
- NullLiteral: 7,
- BooleanLiteral: 8,
- RegExp: 9
-};
-
-// Object that handles postponed lexing verifications that checks the parsed
-// environment state.
-
-function asyncTrigger() {
- var _checks = [];
-
- return {
- push: function (fn) {
- _checks.push(fn);
- },
-
- check: function () {
- for (var check = 0; check < _checks.length; ++check) {
- _checks[check]();
- }
-
- _checks.splice(0, _checks.length);
- }
- };
-}
-
-/*
- * Lexer for JSHint.
- *
- * This object does a char-by-char scan of the provided source code
- * and produces a sequence of tokens.
- *
- * var lex = new Lexer("var i = 0;");
- * lex.start();
- * lex.token(); // returns the next token
- *
- * You have to use the token() method to move the lexer forward
- * but you don't have to use its return value to get tokens. In addition
- * to token() method returning the next token, the Lexer object also
- * emits events.
- *
- * lex.on("Identifier", function (data) {
- * if (data.name.indexOf("_") >= 0) {
- * // Produce a warning.
- * }
- * });
- *
- * Note that the token() method returns tokens in a JSLint-compatible
- * format while the event emitter uses a slightly modified version of
- * Mozilla's JavaScript Parser API. Eventually, we will move away from
- * JSLint format.
- */
-function Lexer(source) {
- var lines = source;
-
- if (typeof lines === "string") {
- lines = lines
- .replace(/\r\n/g, "\n")
- .replace(/\r/g, "\n")
- .split("\n");
- }
-
- // If the first line is a shebang (#!), make it a blank and move on.
- // Shebangs are used by Node scripts.
-
- if (lines[0] && lines[0].substr(0, 2) === "#!") {
- if (lines[0].indexOf("node") !== -1) {
- state.option.node = true;
- }
- lines[0] = "";
- }
-
- this.emitter = new events.EventEmitter();
- this.source = source;
- this.setLines(lines);
- this.prereg = true;
-
- this.line = 0;
- this.char = 1;
- this.from = 1;
- this.input = "";
-
- for (var i = 0; i < state.option.indent; i += 1) {
- state.tab += " ";
- }
-}
-
-Lexer.prototype = {
- _lines: [],
-
- getLines: function () {
- this._lines = state.lines;
- return this._lines;
- },
-
- setLines: function (val) {
- this._lines = val;
- state.lines = this._lines;
- },
-
- /*
- * Return the next i character without actually moving the
- * char pointer.
- */
- peek: function (i) {
- return this.input.charAt(i || 0);
- },
-
- /*
- * Move the char pointer forward i times.
- */
- skip: function (i) {
- i = i || 1;
- this.char += i;
- this.input = this.input.slice(i);
- },
-
- /*
- * Subscribe to a token event. The API for this method is similar
- * Underscore.js i.e. you can subscribe to multiple events with
- * one call:
- *
- * lex.on("Identifier Number", function (data) {
- * // ...
- * });
- */
- on: function (names, listener) {
- names.split(" ").forEach(function (name) {
- this.emitter.on(name, listener);
- }.bind(this));
- },
-
- /*
- * Trigger a token event. All arguments will be passed to each
- * listener.
- */
- trigger: function () {
- this.emitter.emit.apply(this.emitter, Array.prototype.slice.call(arguments));
- },
-
- /*
- * Postpone a token event. the checking condition is set as
- * last parameter, and the trigger function is called in a
- * stored callback. To be later called using the check() function
- * by the parser. This avoids parser's peek() to give the lexer
- * a false context.
- */
- triggerAsync: function (type, args, checks, fn) {
- checks.push(function () {
- if (fn()) {
- this.trigger(type, args);
- }
- }.bind(this));
- },
-
- /*
- * Extract a punctuator out of the next sequence of characters
- * or return 'null' if its not possible.
- *
- * This method's implementation was heavily influenced by the
- * scanPunctuator function in the Esprima parser's source code.
- */
- scanPunctuator: function () {
- var ch1 = this.peek();
- var ch2, ch3, ch4;
-
- switch (ch1) {
- // Most common single-character punctuators
- case ".":
- if ((/^[0-9]$/).test(this.peek(1))) {
- return null;
- }
- if (this.peek(1) === "." && this.peek(2) === ".") {
- return {
- type: Token.Punctuator,
- value: "..."
- };
- }
- /* falls through */
- case "(":
- case ")":
- case ";":
- case ",":
- case "{":
- case "}":
- case "[":
- case "]":
- case ":":
- case "~":
- case "?":
- return {
- type: Token.Punctuator,
- value: ch1
- };
-
- // A pound sign (for Node shebangs)
- case "#":
- return {
- type: Token.Punctuator,
- value: ch1
- };
-
- // We're at the end of input
- case "":
- return null;
- }
-
- // Peek more characters
-
- ch2 = this.peek(1);
- ch3 = this.peek(2);
- ch4 = this.peek(3);
-
- // 4-character punctuator: >>>=
-
- if (ch1 === ">" && ch2 === ">" && ch3 === ">" && ch4 === "=") {
- return {
- type: Token.Punctuator,
- value: ">>>="
- };
- }
-
- // 3-character punctuators: === !== >>> <<= >>=
-
- if (ch1 === "=" && ch2 === "=" && ch3 === "=") {
- return {
- type: Token.Punctuator,
- value: "==="
- };
- }
-
- if (ch1 === "!" && ch2 === "=" && ch3 === "=") {
- return {
- type: Token.Punctuator,
- value: "!=="
- };
- }
-
- if (ch1 === ">" && ch2 === ">" && ch3 === ">") {
- return {
- type: Token.Punctuator,
- value: ">>>"
- };
- }
-
- if (ch1 === "<" && ch2 === "<" && ch3 === "=") {
- return {
- type: Token.Punctuator,
- value: "<<="
- };
- }
-
- if (ch1 === ">" && ch2 === ">" && ch3 === "=") {
- return {
- type: Token.Punctuator,
- value: ">>="
- };
- }
-
- // Fat arrow punctuator
- if (ch1 === "=" && ch2 === ">") {
- return {
- type: Token.Punctuator,
- value: ch1 + ch2
- };
- }
-
- // 2-character punctuators: <= >= == != ++ -- << >> && ||
- // += -= *= %= &= |= ^= (but not /=, see below)
- if (ch1 === ch2 && ("+-<>&|".indexOf(ch1) >= 0)) {
- return {
- type: Token.Punctuator,
- value: ch1 + ch2
- };
- }
-
- if ("<>=!+-*%&|^".indexOf(ch1) >= 0) {
- if (ch2 === "=") {
- return {
- type: Token.Punctuator,
- value: ch1 + ch2
- };
- }
-
- return {
- type: Token.Punctuator,
- value: ch1
- };
- }
-
- // Special case: /=. We need to make sure that this is an
- // operator and not a regular expression.
-
- if (ch1 === "/") {
- if (ch2 === "=" && /\/=(?!(\S*\/[gim]?))/.test(this.input)) {
- // /= is not a part of a regular expression, return it as a
- // punctuator.
- return {
- type: Token.Punctuator,
- value: "/="
- };
- }
-
- return {
- type: Token.Punctuator,
- value: "/"
- };
- }
-
- return null;
- },
-
- /*
- * Extract a comment out of the next sequence of characters and/or
- * lines or return 'null' if its not possible. Since comments can
- * span across multiple lines this method has to move the char
- * pointer.
- *
- * In addition to normal JavaScript comments (// and /*) this method
- * also recognizes JSHint- and JSLint-specific comments such as
- * /*jshint, /*jslint, /*globals and so on.
- */
- scanComments: function () {
- var ch1 = this.peek();
- var ch2 = this.peek(1);
- var rest = this.input.substr(2);
- var startLine = this.line;
- var startChar = this.char;
-
- // Create a comment token object and make sure it
- // has all the data JSHint needs to work with special
- // comments.
-
- function commentToken(label, body, opt) {
- var special = ["jshint", "jslint", "members", "member", "globals", "global", "exported"];
- var isSpecial = false;
- var value = label + body;
- var commentType = "plain";
- opt = opt || {};
-
- if (opt.isMultiline) {
- value += "*/";
- }
-
- special.forEach(function (str) {
- if (isSpecial) {
- return;
- }
-
- // Don't recognize any special comments other than jshint for single-line
- // comments. This introduced many problems with legit comments.
- if (label === "//" && str !== "jshint") {
- return;
- }
-
- if (body.substr(0, str.length) === str) {
- isSpecial = true;
- label = label + str;
- body = body.substr(str.length);
- }
-
- if (!isSpecial && body.charAt(0) === " " && body.substr(1, str.length) === str) {
- isSpecial = true;
- label = label + " " + str;
- body = body.substr(str.length + 1);
- }
-
- if (!isSpecial) {
- return;
- }
-
- switch (str) {
- case "member":
- commentType = "members";
- break;
- case "global":
- commentType = "globals";
- break;
- default:
- commentType = str;
- }
- });
-
- return {
- type: Token.Comment,
- commentType: commentType,
- value: value,
- body: body,
- isSpecial: isSpecial,
- isMultiline: opt.isMultiline || false,
- isMalformed: opt.isMalformed || false
- };
- }
-
- // End of unbegun comment. Raise an error and skip that input.
- if (ch1 === "*" && ch2 === "/") {
- this.trigger("error", {
- code: "E018",
- line: startLine,
- character: startChar
- });
-
- this.skip(2);
- return null;
- }
-
- // Comments must start either with // or /*
- if (ch1 !== "/" || (ch2 !== "*" && ch2 !== "/")) {
- return null;
- }
-
- // One-line comment
- if (ch2 === "/") {
- this.skip(this.input.length); // Skip to the EOL.
- return commentToken("//", rest);
- }
-
- var body = "";
-
- /* Multi-line comment */
- if (ch2 === "*") {
- this.skip(2);
-
- while (this.peek() !== "*" || this.peek(1) !== "/") {
- if (this.peek() === "") { // End of Line
- body += "\n";
-
- // If we hit EOF and our comment is still unclosed,
- // trigger an error and end the comment implicitly.
- if (!this.nextLine()) {
- this.trigger("error", {
- code: "E017",
- line: startLine,
- character: startChar
- });
-
- return commentToken("/*", body, {
- isMultiline: true,
- isMalformed: true
- });
- }
- } else {
- body += this.peek();
- this.skip();
- }
- }
-
- this.skip(2);
- return commentToken("/*", body, { isMultiline: true });
- }
- },
-
- /*
- * Extract a keyword out of the next sequence of characters or
- * return 'null' if its not possible.
- */
- scanKeyword: function () {
- var result = /^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input);
- var keywords = [
- "if", "in", "do", "var", "for", "new",
- "try", "let", "this", "else", "case",
- "void", "with", "enum", "while", "break",
- "catch", "throw", "const", "yield", "class",
- "super", "return", "typeof", "delete",
- "switch", "export", "import", "default",
- "finally", "extends", "function", "continue",
- "debugger", "instanceof"
- ];
-
- if (result && keywords.indexOf(result[0]) >= 0) {
- return {
- type: Token.Keyword,
- value: result[0]
- };
- }
-
- return null;
- },
-
- /*
- * Extract a JavaScript identifier out of the next sequence of
- * characters or return 'null' if its not possible. In addition,
- * to Identifier this method can also produce BooleanLiteral
- * (true/false) and NullLiteral (null).
- */
- scanIdentifier: function () {
- var id = "";
- var index = 0;
- var type, char;
-
- function isNonAsciiIdentifierStart(code) {
- return nonAsciiIdentifierStartTable.indexOf(code) > -1;
- }
-
- function isNonAsciiIdentifierPart(code) {
- return isNonAsciiIdentifierStart(code) || nonAsciiIdentifierPartTable.indexOf(code) > -1;
- }
-
- function isHexDigit(str) {
- return (/^[0-9a-fA-F]$/).test(str);
- }
-
- var readUnicodeEscapeSequence = function () {
- /*jshint validthis:true */
- index += 1;
-
- if (this.peek(index) !== "u") {
- return null;
- }
-
- var ch1 = this.peek(index + 1);
- var ch2 = this.peek(index + 2);
- var ch3 = this.peek(index + 3);
- var ch4 = this.peek(index + 4);
- var code;
-
- if (isHexDigit(ch1) && isHexDigit(ch2) && isHexDigit(ch3) && isHexDigit(ch4)) {
- code = parseInt(ch1 + ch2 + ch3 + ch4, 16);
-
- if (asciiIdentifierPartTable[code] || isNonAsciiIdentifierPart(code)) {
- index += 5;
- return "\\u" + ch1 + ch2 + ch3 + ch4;
- }
-
- return null;
- }
-
- return null;
- }.bind(this);
-
- var getIdentifierStart = function () {
- /*jshint validthis:true */
- var chr = this.peek(index);
- var code = chr.charCodeAt(0);
-
- if (code === 92) {
- return readUnicodeEscapeSequence();
- }
-
- if (code < 128) {
- if (asciiIdentifierStartTable[code]) {
- index += 1;
- return chr;
- }
-
- return null;
- }
-
- if (isNonAsciiIdentifierStart(code)) {
- index += 1;
- return chr;
- }
-
- return null;
- }.bind(this);
-
- var getIdentifierPart = function () {
- /*jshint validthis:true */
- var chr = this.peek(index);
- var code = chr.charCodeAt(0);
-
- if (code === 92) {
- return readUnicodeEscapeSequence();
- }
-
- if (code < 128) {
- if (asciiIdentifierPartTable[code]) {
- index += 1;
- return chr;
- }
-
- return null;
- }
-
- if (isNonAsciiIdentifierPart(code)) {
- index += 1;
- return chr;
- }
-
- return null;
- }.bind(this);
-
- char = getIdentifierStart();
- if (char === null) {
- return null;
- }
-
- id = char;
- for (;;) {
- char = getIdentifierPart();
-
- if (char === null) {
- break;
- }
-
- id += char;
- }
-
- switch (id) {
- case "true":
- case "false":
- type = Token.BooleanLiteral;
- break;
- case "null":
- type = Token.NullLiteral;
- break;
- default:
- type = Token.Identifier;
- }
-
- return {
- type: type,
- value: id
- };
- },
-
- /*
- * Extract a numeric literal out of the next sequence of
- * characters or return 'null' if its not possible. This method
- * supports all numeric literals described in section 7.8.3
- * of the EcmaScript 5 specification.
- *
- * This method's implementation was heavily influenced by the
- * scanNumericLiteral function in the Esprima parser's source code.
- */
- scanNumericLiteral: function () {
- var index = 0;
- var value = "";
- var length = this.input.length;
- var char = this.peek(index);
- var bad;
-
- function isDecimalDigit(str) {
- return (/^[0-9]$/).test(str);
- }
-
- function isOctalDigit(str) {
- return (/^[0-7]$/).test(str);
- }
-
- function isHexDigit(str) {
- return (/^[0-9a-fA-F]$/).test(str);
- }
-
- function isIdentifierStart(ch) {
- return (ch === "$") || (ch === "_") || (ch === "\\") ||
- (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z");
- }
-
- // Numbers must start either with a decimal digit or a point.
-
- if (char !== "." && !isDecimalDigit(char)) {
- return null;
- }
-
- if (char !== ".") {
- value = this.peek(index);
- index += 1;
- char = this.peek(index);
-
- if (value === "0") {
- // Base-16 numbers.
- if (char === "x" || char === "X") {
- index += 1;
- value += char;
-
- while (index < length) {
- char = this.peek(index);
- if (!isHexDigit(char)) {
- break;
- }
- value += char;
- index += 1;
- }
-
- if (value.length <= 2) { // 0x
- return {
- type: Token.NumericLiteral,
- value: value,
- isMalformed: true
- };
- }
-
- if (index < length) {
- char = this.peek(index);
- if (isIdentifierStart(char)) {
- return null;
- }
- }
-
- return {
- type: Token.NumericLiteral,
- value: value,
- base: 16,
- isMalformed: false
- };
- }
-
- // Base-8 numbers.
- if (isOctalDigit(char)) {
- index += 1;
- value += char;
- bad = false;
-
- while (index < length) {
- char = this.peek(index);
-
- // Numbers like '019' (note the 9) are not valid octals
- // but we still parse them and mark as malformed.
-
- if (isDecimalDigit(char)) {
- bad = true;
- } else if (!isOctalDigit(char)) {
- break;
- }
- value += char;
- index += 1;
- }
-
- if (index < length) {
- char = this.peek(index);
- if (isIdentifierStart(char)) {
- return null;
- }
- }
-
- return {
- type: Token.NumericLiteral,
- value: value,
- base: 8,
- isMalformed: false
- };
- }
-
- // Decimal numbers that start with '0' such as '09' are illegal
- // but we still parse them and return as malformed.
-
- if (isDecimalDigit(char)) {
- index += 1;
- value += char;
- }
- }
-
- while (index < length) {
- char = this.peek(index);
- if (!isDecimalDigit(char)) {
- break;
- }
- value += char;
- index += 1;
- }
- }
-
- // Decimal digits.
-
- if (char === ".") {
- value += char;
- index += 1;
-
- while (index < length) {
- char = this.peek(index);
- if (!isDecimalDigit(char)) {
- break;
- }
- value += char;
- index += 1;
- }
- }
-
- // Exponent part.
-
- if (char === "e" || char === "E") {
- value += char;
- index += 1;
- char = this.peek(index);
-
- if (char === "+" || char === "-") {
- value += this.peek(index);
- index += 1;
- }
-
- char = this.peek(index);
- if (isDecimalDigit(char)) {
- value += char;
- index += 1;
-
- while (index < length) {
- char = this.peek(index);
- if (!isDecimalDigit(char)) {
- break;
- }
- value += char;
- index += 1;
- }
- } else {
- return null;
- }
- }
-
- if (index < length) {
- char = this.peek(index);
- if (isIdentifierStart(char)) {
- return null;
- }
- }
-
- return {
- type: Token.NumericLiteral,
- value: value,
- base: 10,
- isMalformed: !isFinite(value)
- };
- },
-
- /*
- * Extract a string out of the next sequence of characters and/or
- * lines or return 'null' if its not possible. Since strings can
- * span across multiple lines this method has to move the char
- * pointer.
- *
- * This method recognizes pseudo-multiline JavaScript strings:
- *
- * var str = "hello\
- * world";
- */
- scanStringLiteral: function (checks) {
- /*jshint loopfunc:true */
- var quote = this.peek();
-
- // String must start with a quote.
- if (quote !== "\"" && quote !== "'") {
- return null;
- }
-
- // In JSON strings must always use double quotes.
- this.triggerAsync("warning", {
- code: "W108",
- line: this.line,
- character: this.char // +1?
- }, checks, function () { return state.jsonMode && quote !== "\""; });
-
- var value = "";
- var startLine = this.line;
- var startChar = this.char;
- var allowNewLine = false;
-
- this.skip();
-
- while (this.peek() !== quote) {
- while (this.peek() === "") { // End Of Line
-
- // If an EOL is not preceded by a backslash, show a warning
- // and proceed like it was a legit multi-line string where
- // author simply forgot to escape the newline symbol.
- //
- // Another approach is to implicitly close a string on EOL
- // but it generates too many false positives.
-
- if (!allowNewLine) {
- this.trigger("warning", {
- code: "W112",
- line: this.line,
- character: this.char
- });
- } else {
- allowNewLine = false;
-
- // Otherwise show a warning if multistr option was not set.
- // For JSON, show warning no matter what.
-
- this.triggerAsync("warning", {
- code: "W043",
- line: this.line,
- character: this.char
- }, checks, function () { return !state.option.multistr; });
-
- this.triggerAsync("warning", {
- code: "W042",
- line: this.line,
- character: this.char
- }, checks, function () { return state.jsonMode && state.option.multistr; });
- }
-
- // If we get an EOF inside of an unclosed string, show an
- // error and implicitly close it at the EOF point.
-
- if (!this.nextLine()) {
- this.trigger("error", {
- code: "E029",
- line: startLine,
- character: startChar
- });
-
- return {
- type: Token.StringLiteral,
- value: value,
- isUnclosed: true,
- quote: quote
- };
- }
- }
-
- allowNewLine = false;
- var char = this.peek();
- var jump = 1; // A length of a jump, after we're done
- // parsing this character.
-
- if (char < " ") {
- // Warn about a control character in a string.
- this.trigger("warning", {
- code: "W113",
- line: this.line,
- character: this.char,
- data: [ "" ]
- });
- }
-
- // Special treatment for some escaped characters.
-
- if (char === "\\") {
- this.skip();
- char = this.peek();
-
- switch (char) {
- case "'":
- this.triggerAsync("warning", {
- code: "W114",
- line: this.line,
- character: this.char,
- data: [ "\\'" ]
- }, checks, function () {return state.jsonMode; });
- break;
- case "b":
- char = "\\b";
- break;
- case "f":
- char = "\\f";
- break;
- case "n":
- char = "\\n";
- break;
- case "r":
- char = "\\r";
- break;
- case "t":
- char = "\\t";
- break;
- case "0":
- char = "\\0";
-
- // Octal literals fail in strict mode.
- // Check if the number is between 00 and 07.
- var n = parseInt(this.peek(1), 10);
- this.triggerAsync("warning", {
- code: "W115",
- line: this.line,
- character: this.char
- }, checks,
- function () { return n >= 0 && n <= 7 && state.directive["use strict"]; });
- break;
- case "u":
- char = String.fromCharCode(parseInt(this.input.substr(1, 4), 16));
- jump = 5;
- break;
- case "v":
- this.triggerAsync("warning", {
- code: "W114",
- line: this.line,
- character: this.char,
- data: [ "\\v" ]
- }, checks, function () { return state.jsonMode; });
-
- char = "\v";
- break;
- case "x":
- var x = parseInt(this.input.substr(1, 2), 16);
-
- this.triggerAsync("warning", {
- code: "W114",
- line: this.line,
- character: this.char,
- data: [ "\\x-" ]
- }, checks, function () { return state.jsonMode; });
-
- char = String.fromCharCode(x);
- jump = 3;
- break;
- case "\\":
- char = "\\\\";
- break;
- case "\"":
- char = "\\\"";
- break;
- case "/":
- break;
- case "":
- allowNewLine = true;
- char = "";
- break;
- case "!":
- if (value.slice(value.length - 2) === "<") {
- break;
- }
-
- /*falls through */
- default:
- // Weird escaping.
- this.trigger("warning", {
- code: "W044",
- line: this.line,
- character: this.char
- });
- }
- }
-
- value += char;
- this.skip(jump);
- }
-
- this.skip();
- return {
- type: Token.StringLiteral,
- value: value,
- isUnclosed: false,
- quote: quote
- };
- },
-
- /*
- * Extract a regular expression out of the next sequence of
- * characters and/or lines or return 'null' if its not possible.
- *
- * This method is platform dependent: it accepts almost any
- * regular expression values but then tries to compile and run
- * them using system's RegExp object. This means that there are
- * rare edge cases where one JavaScript engine complains about
- * your regular expression while others don't.
- */
- scanRegExp: function () {
- var index = 0;
- var length = this.input.length;
- var char = this.peek();
- var value = char;
- var body = "";
- var flags = [];
- var malformed = false;
- var isCharSet = false;
- var terminated;
-
- var scanUnexpectedChars = function () {
- // Unexpected control character
- if (char < " ") {
- malformed = true;
- this.trigger("warning", {
- code: "W048",
- line: this.line,
- character: this.char
- });
- }
-
- // Unexpected escaped character
- if (char === "<") {
- malformed = true;
- this.trigger("warning", {
- code: "W049",
- line: this.line,
- character: this.char,
- data: [ char ]
- });
- }
- }.bind(this);
-
- // Regular expressions must start with '/'
- if (!this.prereg || char !== "/") {
- return null;
- }
-
- index += 1;
- terminated = false;
-
- // Try to get everything in between slashes. A couple of
- // cases aside (see scanUnexpectedChars) we don't really
- // care whether the resulting expression is valid or not.
- // We will check that later using the RegExp object.
-
- while (index < length) {
- char = this.peek(index);
- value += char;
- body += char;
-
- if (isCharSet) {
- if (char === "]") {
- if (this.peek(index - 1) !== "\\" || this.peek(index - 2) === "\\") {
- isCharSet = false;
- }
- }
-
- if (char === "\\") {
- index += 1;
- char = this.peek(index);
- body += char;
- value += char;
-
- scanUnexpectedChars();
- }
-
- index += 1;
- continue;
- }
-
- if (char === "\\") {
- index += 1;
- char = this.peek(index);
- body += char;
- value += char;
-
- scanUnexpectedChars();
-
- if (char === "/") {
- index += 1;
- continue;
- }
-
- if (char === "[") {
- index += 1;
- continue;
- }
- }
-
- if (char === "[") {
- isCharSet = true;
- index += 1;
- continue;
- }
-
- if (char === "/") {
- body = body.substr(0, body.length - 1);
- terminated = true;
- index += 1;
- break;
- }
-
- index += 1;
- }
-
- // A regular expression that was never closed is an
- // error from which we cannot recover.
-
- if (!terminated) {
- this.trigger("error", {
- code: "E015",
- line: this.line,
- character: this.from
- });
-
- return void this.trigger("fatal", {
- line: this.line,
- from: this.from
- });
- }
-
- // Parse flags (if any).
-
- while (index < length) {
- char = this.peek(index);
- if (!/[gim]/.test(char)) {
- break;
- }
- flags.push(char);
- value += char;
- index += 1;
- }
-
- // Check regular expression for correctness.
-
- try {
- new RegExp(body, flags.join(""));
- } catch (err) {
- malformed = true;
- this.trigger("error", {
- code: "E016",
- line: this.line,
- character: this.char,
- data: [ err.message ] // Platform dependent!
- });
- }
-
- return {
- type: Token.RegExp,
- value: value,
- flags: flags,
- isMalformed: malformed
- };
- },
-
- /*
- * Scan for any occurence of mixed tabs and spaces. If smarttabs option
- * is on, ignore tabs followed by spaces.
- *
- * Tabs followed by one space followed by a block comment are allowed.
- */
- scanMixedSpacesAndTabs: function () {
- var at, match;
-
- if (state.option.smarttabs) {
- // Negative look-behind for "//"
- match = this.input.match(/(\/\/|^\s?\*)? \t/);
- at = match && !match[1] ? 0 : -1;
- } else {
- at = this.input.search(/ \t|\t [^\*]/);
- }
-
- return at;
- },
-
- /*
- * Scan for characters that get silently deleted by one or more browsers.
- */
- scanUnsafeChars: function () {
- return this.input.search(reg.unsafeChars);
- },
-
- /*
- * Produce the next raw token or return 'null' if no tokens can be matched.
- * This method skips over all space characters.
- */
- next: function (checks) {
- this.from = this.char;
-
- // Move to the next non-space character.
- var start;
- if (/\s/.test(this.peek())) {
- start = this.char;
-
- while (/\s/.test(this.peek())) {
- this.from += 1;
- this.skip();
- }
-
- if (this.peek() === "") { // EOL
- if (!/^\s*$/.test(this.getLines()[this.line - 1]) && state.option.trailing) {
- this.trigger("warning", { code: "W102", line: this.line, character: start });
- }
- }
- }
-
- // Methods that work with multi-line structures and move the
- // character pointer.
-
- var match = this.scanComments() ||
- this.scanStringLiteral(checks);
-
- if (match) {
- return match;
- }
-
- // Methods that don't move the character pointer.
-
- match =
- this.scanRegExp() ||
- this.scanPunctuator() ||
- this.scanKeyword() ||
- this.scanIdentifier() ||
- this.scanNumericLiteral();
-
- if (match) {
- this.skip(match.value.length);
- return match;
- }
-
- // No token could be matched, give up.
-
- return null;
- },
-
- /*
- * Switch to the next line and reset all char pointers. Once
- * switched, this method also checks for mixed spaces and tabs
- * and other minor warnings.
- */
- nextLine: function () {
- var char;
-
- if (this.line >= this.getLines().length) {
- return false;
- }
-
- this.input = this.getLines()[this.line];
- this.line += 1;
- this.char = 1;
- this.from = 1;
-
- var startsWith = function (prefix) {
- return this.indexOf(prefix) === 0;
- };
- var endsWith = function (suffix) {
- return this.indexOf(suffix, this.length - suffix.length) !== -1;
- };
- var inputTrimmed = this.input.trim();
-
- // If we are ignoring linter errors, replace the input with empty string
- // if it doesn't already at least start or end a multi-line comment
- if (state.ignoreLinterErrors === true) {
- if (! (startsWith.call(inputTrimmed, "/*") || endsWith.call(inputTrimmed, "*/"))) {
- this.input = "";
- }
- }
-
- char = this.scanMixedSpacesAndTabs();
- if (char >= 0) {
- this.trigger("warning", { code: "W099", line: this.line, character: char + 1 });
- }
-
- this.input = this.input.replace(/\t/g, state.tab);
- char = this.scanUnsafeChars();
-
- if (char >= 0) {
- this.trigger("warning", { code: "W100", line: this.line, character: char });
- }
-
- // If there is a limit on line length, warn when lines get too
- // long.
-
- if (state.option.maxlen && state.option.maxlen < this.input.length) {
- var inComment = state.tokens.curr.comment ||
- startsWith.call(inputTrimmed, "//") ||
- startsWith.call(inputTrimmed, "/*");
-
- var shouldTriggerError = !inComment || !reg.maxlenException.test(inputTrimmed);
-
- if (shouldTriggerError) {
- this.trigger("warning", { code: "W101", line: this.line, character: this.input.length });
- }
- }
-
- return true;
- },
-
- /*
- * This is simply a synonym for nextLine() method with a friendlier
- * public name.
- */
- start: function () {
- this.nextLine();
- },
-
- /*
- * Produce the next token. This function is called by advance() to get
- * the next token. It retuns a token in a JSLint-compatible format.
- */
- token: function () {
- /*jshint loopfunc:true */
- var checks = asyncTrigger();
- var token;
-
-
- function isReserved(token, isProperty) {
- if (!token.reserved) {
- return false;
- }
- var meta = token.meta;
-
- if (meta && meta.isFutureReservedWord && state.option.inES5()) {
- // ES3 FutureReservedWord in an ES5 environment.
- if (!meta.es5) {
- return false;
- }
-
- // Some ES5 FutureReservedWord identifiers are active only
- // within a strict mode environment.
- if (meta.strictOnly) {
- if (!state.option.strict && !state.directive["use strict"]) {
- return false;
- }
- }
-
- if (isProperty) {
- return false;
- }
- }
-
- return true;
- }
-
- // Produce a token object.
- var create = function (type, value, isProperty) {
- /*jshint validthis:true */
- var obj;
-
- if (type !== "(endline)" && type !== "(end)") {
- this.prereg = false;
- }
-
- if (type === "(punctuator)") {
- switch (value) {
- case ".":
- case ")":
- case "~":
- case "#":
- case "]":
- this.prereg = false;
- break;
- default:
- this.prereg = true;
- }
-
- obj = Object.create(state.syntax[value] || state.syntax["(error)"]);
- }
-
- if (type === "(identifier)") {
- if (value === "return" || value === "case" || value === "typeof") {
- this.prereg = true;
- }
-
- if (_.has(state.syntax, value)) {
- obj = Object.create(state.syntax[value] || state.syntax["(error)"]);
-
- // If this can't be a reserved keyword, reset the object.
- if (!isReserved(obj, isProperty && type === "(identifier)")) {
- obj = null;
- }
- }
- }
-
- if (!obj) {
- obj = Object.create(state.syntax[type]);
- }
-
- obj.identifier = (type === "(identifier)");
- obj.type = obj.type || type;
- obj.value = value;
- obj.line = this.line;
- obj.character = this.char;
- obj.from = this.from;
-
- if (isProperty && obj.identifier) {
- obj.isProperty = isProperty;
- }
-
- obj.check = checks.check;
-
- return obj;
- }.bind(this);
-
- for (;;) {
- if (!this.input.length) {
- return create(this.nextLine() ? "(endline)" : "(end)", "");
- }
-
- token = this.next(checks);
-
- if (!token) {
- if (this.input.length) {
- // Unexpected character.
- this.trigger("error", {
- code: "E024",
- line: this.line,
- character: this.char,
- data: [ this.peek() ]
- });
-
- this.input = "";
- }
-
- continue;
- }
-
- switch (token.type) {
- case Token.StringLiteral:
- this.triggerAsync("String", {
- line: this.line,
- char: this.char,
- from: this.from,
- value: token.value,
- quote: token.quote
- }, checks, function () { return true; });
-
- return create("(string)", token.value);
- case Token.Identifier:
- this.trigger("Identifier", {
- line: this.line,
- char: this.char,
- from: this.form,
- name: token.value,
- isProperty: state.tokens.curr.id === "."
- });
-
- /* falls through */
- case Token.Keyword:
- case Token.NullLiteral:
- case Token.BooleanLiteral:
- return create("(identifier)", token.value, state.tokens.curr.id === ".");
-
- case Token.NumericLiteral:
- if (token.isMalformed) {
- this.trigger("warning", {
- code: "W045",
- line: this.line,
- character: this.char,
- data: [ token.value ]
- });
- }
-
- this.triggerAsync("warning", {
- code: "W114",
- line: this.line,
- character: this.char,
- data: [ "0x-" ]
- }, checks, function () { return token.base === 16 && state.jsonMode; });
-
- this.triggerAsync("warning", {
- code: "W115",
- line: this.line,
- character: this.char
- }, checks, function () {
- return state.directive["use strict"] && token.base === 8;
- });
-
- this.trigger("Number", {
- line: this.line,
- char: this.char,
- from: this.from,
- value: token.value,
- base: token.base,
- isMalformed: token.malformed
- });
-
- return create("(number)", token.value);
-
- case Token.RegExp:
- return create("(regexp)", token.value);
-
- case Token.Comment:
- state.tokens.curr.comment = true;
-
- if (token.isSpecial) {
- return {
- id: '(comment)',
- value: token.value,
- body: token.body,
- type: token.commentType,
- isSpecial: token.isSpecial,
- line: this.line,
- character: this.char,
- from: this.from
- };
- }
-
- break;
-
- case "":
- break;
-
- default:
- return create("(punctuator)", token.value);
- }
- }
- }
-};
-
-exports.Lexer = Lexer;
-
-},{"../data/ascii-identifier-data.js":1,"../data/non-ascii-identifier-part-only.js":2,"../data/non-ascii-identifier-start.js":3,"./reg.js":16,"./state.js":17,"events":5,"underscore":11}],15:[function(require,module,exports){
-"use strict";
-
-var _ = require("underscore");
-
-var errors = {
- // JSHint options
- E001: "Bad option: '{a}'.",
- E002: "Bad option value.",
-
- // JSHint input
- E003: "Expected a JSON value.",
- E004: "Input is neither a string nor an array of strings.",
- E005: "Input is empty.",
- E006: "Unexpected early end of program.",
-
- // Strict mode
- E007: "Missing \"use strict\" statement.",
- E008: "Strict violation.",
- E009: "Option 'validthis' can't be used in a global scope.",
- E010: "'with' is not allowed in strict mode.",
-
- // Constants
- E011: "const '{a}' has already been declared.",
- E012: "const '{a}' is initialized to 'undefined'.",
- E013: "Attempting to override '{a}' which is a constant.",
-
- // Regular expressions
- E014: "A regular expression literal can be confused with '/='.",
- E015: "Unclosed regular expression.",
- E016: "Invalid regular expression.",
-
- // Tokens
- E017: "Unclosed comment.",
- E018: "Unbegun comment.",
- E019: "Unmatched '{a}'.",
- E020: "Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",
- E021: "Expected '{a}' and instead saw '{b}'.",
- E022: "Line breaking error '{a}'.",
- E023: "Missing '{a}'.",
- E024: "Unexpected '{a}'.",
- E025: "Missing ':' on a case clause.",
- E026: "Missing '}' to match '{' from line {a}.",
- E027: "Missing ']' to match '[' from line {a}.",
- E028: "Illegal comma.",
- E029: "Unclosed string.",
-
- // Everything else
- E030: "Expected an identifier and instead saw '{a}'.",
- E031: "Bad assignment.", // FIXME: Rephrase
- E032: "Expected a small integer or 'false' and instead saw '{a}'.",
- E033: "Expected an operator and instead saw '{a}'.",
- E034: "get/set are ES5 features.",
- E035: "Missing property name.",
- E036: "Expected to see a statement and instead saw a block.",
- E037: null,
- E038: null,
- E039: "Function declarations are not invocable. Wrap the whole function invocation in parens.",
- E040: "Each value should have its own case label.",
- E041: "Unrecoverable syntax error.",
- E042: "Stopping.",
- E043: "Too many errors.",
- E044: null,
- E045: "Invalid for each loop.",
- E046: "A yield statement shall be within a generator function (with syntax: `function*`)",
- E047: "A generator function shall contain a yield statement.",
- E048: "Let declaration not directly within block.",
- E049: "A {a} cannot be named '{b}'.",
- E050: "Mozilla requires the yield expression to be parenthesized here.",
- E051: "Regular parameters cannot come after default parameters."
-};
-
-var warnings = {
- W001: "'hasOwnProperty' is a really bad name.",
- W002: "Value of '{a}' may be overwritten in IE 8 and earlier.",
- W003: "'{a}' was used before it was defined.",
- W004: "'{a}' is already defined.",
- W005: "A dot following a number can be confused with a decimal point.",
- W006: "Confusing minuses.",
- W007: "Confusing pluses.",
- W008: "A leading decimal point can be confused with a dot: '{a}'.",
- W009: "The array literal notation [] is preferrable.",
- W010: "The object literal notation {} is preferrable.",
- W011: "Unexpected space after '{a}'.",
- W012: "Unexpected space before '{a}'.",
- W013: "Missing space after '{a}'.",
- W014: "Bad line breaking before '{a}'.",
- W015: "Expected '{a}' to have an indentation at {b} instead at {c}.",
- W016: "Unexpected use of '{a}'.",
- W017: "Bad operand.",
- W018: "Confusing use of '{a}'.",
- W019: "Use the isNaN function to compare with NaN.",
- W020: "Read only.",
- W021: "'{a}' is a function.",
- W022: "Do not assign to the exception parameter.",
- W023: "Expected an identifier in an assignment and instead saw a function invocation.",
- W024: "Expected an identifier and instead saw '{a}' (a reserved word).",
- W025: "Missing name in function declaration.",
- W026: "Inner functions should be listed at the top of the outer function.",
- W027: "Unreachable '{a}' after '{b}'.",
- W028: "Label '{a}' on {b} statement.",
- W030: "Expected an assignment or function call and instead saw an expression.",
- W031: "Do not use 'new' for side effects.",
- W032: "Unnecessary semicolon.",
- W033: "Missing semicolon.",
- W034: "Unnecessary directive \"{a}\".",
- W035: "Empty block.",
- W036: "Unexpected /*member '{a}'.",
- W037: "'{a}' is a statement label.",
- W038: "'{a}' used out of scope.",
- W039: "'{a}' is not allowed.",
- W040: "Possible strict violation.",
- W041: "Use '{a}' to compare with '{b}'.",
- W042: "Avoid EOL escaping.",
- W043: "Bad escaping of EOL. Use option multistr if needed.",
- W044: "Bad or unnecessary escaping.",
- W045: "Bad number '{a}'.",
- W046: "Don't use extra leading zeros '{a}'.",
- W047: "A trailing decimal point can be confused with a dot: '{a}'.",
- W048: "Unexpected control character in regular expression.",
- W049: "Unexpected escaped character '{a}' in regular expression.",
- W050: "JavaScript URL.",
- W051: "Variables should not be deleted.",
- W052: "Unexpected '{a}'.",
- W053: "Do not use {a} as a constructor.",
- W054: "The Function constructor is a form of eval.",
- W055: "A constructor name should start with an uppercase letter.",
- W056: "Bad constructor.",
- W057: "Weird construction. Is 'new' necessary?",
- W058: "Missing '()' invoking a constructor.",
- W059: "Avoid arguments.{a}.",
- W060: "document.write can be a form of eval.",
- W061: "eval can be harmful.",
- W062: "Wrap an immediate function invocation in parens " +
- "to assist the reader in understanding that the expression " +
- "is the result of a function, and not the function itself.",
- W063: "Math is not a function.",
- W064: "Missing 'new' prefix when invoking a constructor.",
- W065: "Missing radix parameter.",
- W066: "Implied eval. Consider passing a function instead of a string.",
- W067: "Bad invocation.",
- W068: "Wrapping non-IIFE function literals in parens is unnecessary.",
- W069: "['{a}'] is better written in dot notation.",
- W070: "Extra comma. (it breaks older versions of IE)",
- W071: "This function has too many statements. ({a})",
- W072: "This function has too many parameters. ({a})",
- W073: "Blocks are nested too deeply. ({a})",
- W074: "This function's cyclomatic complexity is too high. ({a})",
- W075: "Duplicate key '{a}'.",
- W076: "Unexpected parameter '{a}' in get {b} function.",
- W077: "Expected a single parameter in set {a} function.",
- W078: "Setter is defined without getter.",
- W079: "Redefinition of '{a}'.",
- W080: "It's not necessary to initialize '{a}' to 'undefined'.",
- W081: "Too many var statements.",
- W082: "Function declarations should not be placed in blocks. " +
- "Use a function expression or move the statement to the top of " +
- "the outer function.",
- W083: "Don't make functions within a loop.",
- W084: "Expected a conditional expression and instead saw an assignment.",
- W085: "Don't use 'with'.",
- W086: "Expected a 'break' statement before '{a}'.",
- W087: "Forgotten 'debugger' statement?",
- W088: "Creating global 'for' variable. Should be 'for (var {a} ...'.",
- W089: "The body of a for in should be wrapped in an if statement to filter " +
- "unwanted properties from the prototype.",
- W090: "'{a}' is not a statement label.",
- W091: "'{a}' is out of scope.",
- W092: "Wrap the /regexp/ literal in parens to disambiguate the slash operator.",
- W093: "Did you mean to return a conditional instead of an assignment?",
- W094: "Unexpected comma.",
- W095: "Expected a string and instead saw {a}.",
- W096: "The '{a}' key may produce unexpected results.",
- W097: "Use the function form of \"use strict\".",
- W098: "'{a}' is defined but never used.",
- W099: "Mixed spaces and tabs.",
- W100: "This character may get silently deleted by one or more browsers.",
- W101: "Line is too long.",
- W102: "Trailing whitespace.",
- W103: "The '{a}' property is deprecated.",
- W104: "'{a}' is only available in JavaScript 1.7.",
- W105: "Unexpected {a} in '{b}'.",
- W106: "Identifier '{a}' is not in camel case.",
- W107: "Script URL.",
- W108: "Strings must use doublequote.",
- W109: "Strings must use singlequote.",
- W110: "Mixed double and single quotes.",
- W112: "Unclosed string.",
- W113: "Control character in string: {a}.",
- W114: "Avoid {a}.",
- W115: "Octal literals are not allowed in strict mode.",
- W116: "Expected '{a}' and instead saw '{b}'.",
- W117: "'{a}' is not defined.",
- W118: "'{a}' is only available in Mozilla JavaScript extensions (use moz option).",
- W119: "'{a}' is only available in ES6 (use esnext option).",
- W120: "You might be leaking a variable ({a}) here.",
- W121: "Extending prototype of native object: '{a}'.",
- W122: "Invalid typeof value '{a}'",
- W123: "'{a}' is already defined in outer scope."
-};
-
-var info = {
- I001: "Comma warnings can be turned off with 'laxcomma'.",
- I002: "Reserved words as properties can be used under the 'es5' option.",
- I003: "ES5 option is now set per default"
-};
-
-exports.errors = {};
-exports.warnings = {};
-exports.info = {};
-
-_.each(errors, function (desc, code) {
- exports.errors[code] = { code: code, desc: desc };
-});
-
-_.each(warnings, function (desc, code) {
- exports.warnings[code] = { code: code, desc: desc };
-});
-
-_.each(info, function (desc, code) {
- exports.info[code] = { code: code, desc: desc };
-});
-
-},{"underscore":11}],16:[function(require,module,exports){
-/*
- * Regular expressions. Some of these are stupidly long.
- */
-
-/*jshint maxlen:1000 */
-
-"use string";
-
-// Unsafe comment or string (ax)
-exports.unsafeString =
- /@cc|<\/?|script|\]\s*\]|<\s*!|</i;
-
-// Unsafe characters that are silently deleted by one or more browsers (cx)
-exports.unsafeChars =
- /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
-
-// Characters in strings that need escaping (nx and nxg)
-exports.needEsc =
- /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
-
-exports.needEscGlobal =
- /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
-
-// Star slash (lx)
-exports.starSlash = /\*\//;
-
-// Identifier (ix)
-exports.identifier = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/;
-
-// JavaScript URL (jx)
-exports.javascriptURL = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i;
-
-// Catches /* falls through */ comments (ft)
-exports.fallsThrough = /^\s*\/\*\s*falls?\sthrough\s*\*\/\s*$/;
-
-// very conservative rule (eg: only one space between the start of the comment and the first character)
-// to relax the maxlen option
-exports.maxlenException = /^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/;
-
-},{}],17:[function(require,module,exports){
-"use strict";
-
-var state = {
- syntax: {},
-
- reset: function () {
- this.tokens = {
- prev: null,
- next: null,
- curr: null
- };
-
- this.option = {};
- this.ignored = {};
- this.directive = {};
- this.jsonMode = false;
- this.jsonWarnings = [];
- this.lines = [];
- this.tab = "";
- this.cache = {}; // Node.JS doesn't have Map. Sniff.
- this.ignoreLinterErrors = false; // Blank out non-multi-line-commented
- // lines when ignoring linter errors
- }
-};
-
-exports.state = state;
-
-},{}],18:[function(require,module,exports){
-"use strict";
-
-exports.register = function (linter) {
- // Check for properties named __proto__. This special property was
- // deprecated and then re-introduced for ES6.
-
- linter.on("Identifier", function style_scanProto(data) {
- if (linter.getOption("proto")) {
- return;
- }
-
- if (data.name === "__proto__") {
- linter.warn("W103", {
- line: data.line,
- char: data.char,
- data: [ data.name ]
- });
- }
- });
-
- // Check for properties named __iterator__. This is a special property
- // available only in browsers with JavaScript 1.7 implementation.
-
- linter.on("Identifier", function style_scanIterator(data) {
- if (linter.getOption("iterator")) {
- return;
- }
-
- if (data.name === "__iterator__") {
- linter.warn("W104", {
- line: data.line,
- char: data.char,
- data: [ data.name ]
- });
- }
- });
-
- // Check for dangling underscores.
-
- linter.on("Identifier", function style_scanDangling(data) {
- if (!linter.getOption("nomen")) {
- return;
- }
-
- // Underscore.js
- if (data.name === "_") {
- return;
- }
-
- // In Node, __dirname and __filename should be ignored.
- if (linter.getOption("node")) {
- if (/^(__dirname|__filename)$/.test(data.name) && !data.isProperty) {
- return;
- }
- }
-
- if (/^(_+.*|.*_+)$/.test(data.name)) {
- linter.warn("W105", {
- line: data.line,
- char: data.from,
- data: [ "dangling '_'", data.name ]
- });
- }
- });
-
- // Check that all identifiers are using camelCase notation.
- // Exceptions: names like MY_VAR and _myVar.
-
- linter.on("Identifier", function style_scanCamelCase(data) {
- if (!linter.getOption("camelcase")) {
- return;
- }
-
- if (data.name.replace(/^_+|_+$/g, "").indexOf("_") > -1 && !data.name.match(/^[A-Z0-9_]*$/)) {
- linter.warn("W106", {
- line: data.line,
- char: data.from,
- data: [ data.name ]
- });
- }
- });
-
- // Enforce consistency in style of quoting.
-
- linter.on("String", function style_scanQuotes(data) {
- var quotmark = linter.getOption("quotmark");
- var code;
-
- if (!quotmark) {
- return;
- }
-
- // If quotmark is set to 'single' warn about all double-quotes.
-
- if (quotmark === "single" && data.quote !== "'") {
- code = "W109";
- }
-
- // If quotmark is set to 'double' warn about all single-quotes.
-
- if (quotmark === "double" && data.quote !== "\"") {
- code = "W108";
- }
-
- // If quotmark is set to true, remember the first quotation style
- // and then warn about all others.
-
- if (quotmark === true) {
- if (!linter.getCache("quotmark")) {
- linter.setCache("quotmark", data.quote);
- }
-
- if (linter.getCache("quotmark") !== data.quote) {
- code = "W110";
- }
- }
-
- if (code) {
- linter.warn(code, {
- line: data.line,
- char: data.char,
- });
- }
- });
-
- linter.on("Number", function style_scanNumbers(data) {
- if (data.value.charAt(0) === ".") {
- // Warn about a leading decimal point.
- linter.warn("W008", {
- line: data.line,
- char: data.char,
- data: [ data.value ]
- });
- }
-
- if (data.value.substr(data.value.length - 1) === ".") {
- // Warn about a trailing decimal point.
- linter.warn("W047", {
- line: data.line,
- char: data.char,
- data: [ data.value ]
- });
- }
-
- if (/^00+/.test(data.value)) {
- // Multiple leading zeroes.
- linter.warn("W046", {
- line: data.line,
- char: data.char,
- data: [ data.value ]
- });
- }
- });
-
- // Warn about script URLs.
-
- linter.on("String", function style_scanJavaScriptURLs(data) {
- var re = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i;
-
- if (linter.getOption("scripturl")) {
- return;
- }
-
- if (re.test(data.value)) {
- linter.warn("W107", {
- line: data.line,
- char: data.char
- });
- }
- });
-};
-},{}],19:[function(require,module,exports){
-// jshint -W001
-
-"use strict";
-
-// Identifiers provided by the ECMAScript standard.
-
-exports.reservedVars = {
- arguments : false,
- NaN : false
-};
-
-exports.ecmaIdentifiers = {
- Array : false,
- Boolean : false,
- Date : false,
- decodeURI : false,
- decodeURIComponent : false,
- encodeURI : false,
- encodeURIComponent : false,
- Error : false,
- "eval" : false,
- EvalError : false,
- Function : false,
- hasOwnProperty : false,
- isFinite : false,
- isNaN : false,
- JSON : false,
- Math : false,
- Map : false,
- Number : false,
- Object : false,
- parseInt : false,
- parseFloat : false,
- RangeError : false,
- ReferenceError : false,
- RegExp : false,
- Set : false,
- String : false,
- SyntaxError : false,
- TypeError : false,
- URIError : false,
- WeakMap : false
-};
-
-// Global variables commonly provided by a web browser environment.
-
-exports.browser = {
- Audio : false,
- Blob : false,
- addEventListener : false,
- applicationCache : false,
- atob : false,
- blur : false,
- btoa : false,
- CanvasGradient : false,
- CanvasPattern : false,
- CanvasRenderingContext2D: false,
- clearInterval : false,
- clearTimeout : false,
- close : false,
- closed : false,
- CustomEvent : false,
- DOMParser : false,
- defaultStatus : false,
- document : false,
- Element : false,
- ElementTimeControl : false,
- event : false,
- FileReader : false,
- FormData : false,
- focus : false,
- frames : false,
- getComputedStyle : false,
- HTMLElement : false,
- HTMLAnchorElement : false,
- HTMLBaseElement : false,
- HTMLBlockquoteElement: false,
- HTMLBodyElement : false,
- HTMLBRElement : false,
- HTMLButtonElement : false,
- HTMLCanvasElement : false,
- HTMLDirectoryElement : false,
- HTMLDivElement : false,
- HTMLDListElement : false,
- HTMLFieldSetElement : false,
- HTMLFontElement : false,
- HTMLFormElement : false,
- HTMLFrameElement : false,
- HTMLFrameSetElement : false,
- HTMLHeadElement : false,
- HTMLHeadingElement : false,
- HTMLHRElement : false,
- HTMLHtmlElement : false,
- HTMLIFrameElement : false,
- HTMLImageElement : false,
- HTMLInputElement : false,
- HTMLIsIndexElement : false,
- HTMLLabelElement : false,
- HTMLLayerElement : false,
- HTMLLegendElement : false,
- HTMLLIElement : false,
- HTMLLinkElement : false,
- HTMLMapElement : false,
- HTMLMenuElement : false,
- HTMLMetaElement : false,
- HTMLModElement : false,
- HTMLObjectElement : false,
- HTMLOListElement : false,
- HTMLOptGroupElement : false,
- HTMLOptionElement : false,
- HTMLParagraphElement : false,
- HTMLParamElement : false,
- HTMLPreElement : false,
- HTMLQuoteElement : false,
- HTMLScriptElement : false,
- HTMLSelectElement : false,
- HTMLStyleElement : false,
- HTMLTableCaptionElement: false,
- HTMLTableCellElement : false,
- HTMLTableColElement : false,
- HTMLTableElement : false,
- HTMLTableRowElement : false,
- HTMLTableSectionElement: false,
- HTMLTextAreaElement : false,
- HTMLTitleElement : false,
- HTMLUListElement : false,
- HTMLVideoElement : false,
- history : false,
- Image : false,
- length : false,
- localStorage : false,
- location : false,
- MessageChannel : false,
- MessageEvent : false,
- MessagePort : false,
- MouseEvent : false,
- moveBy : false,
- moveTo : false,
- MutationObserver : false,
- name : false,
- Node : false,
- NodeFilter : false,
- navigator : false,
- onbeforeunload : true,
- onblur : true,
- onerror : true,
- onfocus : true,
- onload : true,
- onresize : true,
- onunload : true,
- open : false,
- openDatabase : false,
- opener : false,
- Option : false,
- parent : false,
- print : false,
- removeEventListener : false,
- resizeBy : false,
- resizeTo : false,
- screen : false,
- scroll : false,
- scrollBy : false,
- scrollTo : false,
- sessionStorage : false,
- setInterval : false,
- setTimeout : false,
- SharedWorker : false,
- status : false,
- SVGAElement : false,
- SVGAltGlyphDefElement: false,
- SVGAltGlyphElement : false,
- SVGAltGlyphItemElement: false,
- SVGAngle : false,
- SVGAnimateColorElement: false,
- SVGAnimateElement : false,
- SVGAnimateMotionElement: false,
- SVGAnimateTransformElement: false,
- SVGAnimatedAngle : false,
- SVGAnimatedBoolean : false,
- SVGAnimatedEnumeration: false,
- SVGAnimatedInteger : false,
- SVGAnimatedLength : false,
- SVGAnimatedLengthList: false,
- SVGAnimatedNumber : false,
- SVGAnimatedNumberList: false,
- SVGAnimatedPathData : false,
- SVGAnimatedPoints : false,
- SVGAnimatedPreserveAspectRatio: false,
- SVGAnimatedRect : false,
- SVGAnimatedString : false,
- SVGAnimatedTransformList: false,
- SVGAnimationElement : false,
- SVGCSSRule : false,
- SVGCircleElement : false,
- SVGClipPathElement : false,
- SVGColor : false,
- SVGColorProfileElement: false,
- SVGColorProfileRule : false,
- SVGComponentTransferFunctionElement: false,
- SVGCursorElement : false,
- SVGDefsElement : false,
- SVGDescElement : false,
- SVGDocument : false,
- SVGElement : false,
- SVGElementInstance : false,
- SVGElementInstanceList: false,
- SVGEllipseElement : false,
- SVGExternalResourcesRequired: false,
- SVGFEBlendElement : false,
- SVGFEColorMatrixElement: false,
- SVGFEComponentTransferElement: false,
- SVGFECompositeElement: false,
- SVGFEConvolveMatrixElement: false,
- SVGFEDiffuseLightingElement: false,
- SVGFEDisplacementMapElement: false,
- SVGFEDistantLightElement: false,
- SVGFEFloodElement : false,
- SVGFEFuncAElement : false,
- SVGFEFuncBElement : false,
- SVGFEFuncGElement : false,
- SVGFEFuncRElement : false,
- SVGFEGaussianBlurElement: false,
- SVGFEImageElement : false,
- SVGFEMergeElement : false,
- SVGFEMergeNodeElement: false,
- SVGFEMorphologyElement: false,
- SVGFEOffsetElement : false,
- SVGFEPointLightElement: false,
- SVGFESpecularLightingElement: false,
- SVGFESpotLightElement: false,
- SVGFETileElement : false,
- SVGFETurbulenceElement: false,
- SVGFilterElement : false,
- SVGFilterPrimitiveStandardAttributes: false,
- SVGFitToViewBox : false,
- SVGFontElement : false,
- SVGFontFaceElement : false,
- SVGFontFaceFormatElement: false,
- SVGFontFaceNameElement: false,
- SVGFontFaceSrcElement: false,
- SVGFontFaceUriElement: false,
- SVGForeignObjectElement: false,
- SVGGElement : false,
- SVGGlyphElement : false,
- SVGGlyphRefElement : false,
- SVGGradientElement : false,
- SVGHKernElement : false,
- SVGICCColor : false,
- SVGImageElement : false,
- SVGLangSpace : false,
- SVGLength : false,
- SVGLengthList : false,
- SVGLineElement : false,
- SVGLinearGradientElement: false,
- SVGLocatable : false,
- SVGMPathElement : false,
- SVGMarkerElement : false,
- SVGMaskElement : false,
- SVGMatrix : false,
- SVGMetadataElement : false,
- SVGMissingGlyphElement: false,
- SVGNumber : false,
- SVGNumberList : false,
- SVGPaint : false,
- SVGPathElement : false,
- SVGPathSeg : false,
- SVGPathSegArcAbs : false,
- SVGPathSegArcRel : false,
- SVGPathSegClosePath : false,
- SVGPathSegCurvetoCubicAbs: false,
- SVGPathSegCurvetoCubicRel: false,
- SVGPathSegCurvetoCubicSmoothAbs: false,
- SVGPathSegCurvetoCubicSmoothRel: false,
- SVGPathSegCurvetoQuadraticAbs: false,
- SVGPathSegCurvetoQuadraticRel: false,
- SVGPathSegCurvetoQuadraticSmoothAbs: false,
- SVGPathSegCurvetoQuadraticSmoothRel: false,
- SVGPathSegLinetoAbs : false,
- SVGPathSegLinetoHorizontalAbs: false,
- SVGPathSegLinetoHorizontalRel: false,
- SVGPathSegLinetoRel : false,
- SVGPathSegLinetoVerticalAbs: false,
- SVGPathSegLinetoVerticalRel: false,
- SVGPathSegList : false,
- SVGPathSegMovetoAbs : false,
- SVGPathSegMovetoRel : false,
- SVGPatternElement : false,
- SVGPoint : false,
- SVGPointList : false,
- SVGPolygonElement : false,
- SVGPolylineElement : false,
- SVGPreserveAspectRatio: false,
- SVGRadialGradientElement: false,
- SVGRect : false,
- SVGRectElement : false,
- SVGRenderingIntent : false,
- SVGSVGElement : false,
- SVGScriptElement : false,
- SVGSetElement : false,
- SVGStopElement : false,
- SVGStringList : false,
- SVGStylable : false,
- SVGStyleElement : false,
- SVGSwitchElement : false,
- SVGSymbolElement : false,
- SVGTRefElement : false,
- SVGTSpanElement : false,
- SVGTests : false,
- SVGTextContentElement: false,
- SVGTextElement : false,
- SVGTextPathElement : false,
- SVGTextPositioningElement: false,
- SVGTitleElement : false,
- SVGTransform : false,
- SVGTransformList : false,
- SVGTransformable : false,
- SVGURIReference : false,
- SVGUnitTypes : false,
- SVGUseElement : false,
- SVGVKernElement : false,
- SVGViewElement : false,
- SVGViewSpec : false,
- SVGZoomAndPan : false,
- TimeEvent : false,
- top : false,
- URL : false,
- WebSocket : false,
- window : false,
- Worker : false,
- XMLHttpRequest : false,
- XMLSerializer : false,
- XPathEvaluator : false,
- XPathException : false,
- XPathExpression : false,
- XPathNamespace : false,
- XPathNSResolver : false,
- XPathResult : false
-};
-
-exports.devel = {
- alert : false,
- confirm: false,
- console: false,
- Debug : false,
- opera : false,
- prompt : false
-};
-
-exports.worker = {
- importScripts: true,
- postMessage : true,
- self : true
-};
-
-// Widely adopted global names that are not part of ECMAScript standard
-exports.nonstandard = {
- escape : false,
- unescape: false
-};
-
-// Globals provided by popular JavaScript environments.
-
-exports.couch = {
- "require" : false,
- respond : false,
- getRow : false,
- emit : false,
- send : false,
- start : false,
- sum : false,
- log : false,
- exports : false,
- module : false,
- provides : false
-};
-
-exports.node = {
- __filename : false,
- __dirname : false,
- GLOBAL : false,
- global : false,
- module : false,
- require : false,
-
- // These globals are writeable because Node allows the following
- // usage pattern: var Buffer = require("buffer").Buffer;
-
- Buffer : true,
- console : true,
- exports : true,
- process : true,
- setTimeout : true,
- clearTimeout : true,
- setInterval : true,
- clearInterval : true,
- setImmediate : true, // v0.9.1+
- clearImmediate: true // v0.9.1+
-};
-
-exports.phantom = {
- phantom : true,
- require : true,
- WebPage : true,
- console : true, // in examples, but undocumented
- exports : true // v1.7+
-};
-
-exports.rhino = {
- defineClass : false,
- deserialize : false,
- gc : false,
- help : false,
- importPackage: false,
- "java" : false,
- load : false,
- loadClass : false,
- print : false,
- quit : false,
- readFile : false,
- readUrl : false,
- runCommand : false,
- seal : false,
- serialize : false,
- spawn : false,
- sync : false,
- toint32 : false,
- version : false
-};
-
-exports.shelljs = {
- target : false,
- echo : false,
- exit : false,
- cd : false,
- pwd : false,
- ls : false,
- find : false,
- cp : false,
- rm : false,
- mv : false,
- mkdir : false,
- test : false,
- cat : false,
- sed : false,
- grep : false,
- which : false,
- dirs : false,
- pushd : false,
- popd : false,
- env : false,
- exec : false,
- chmod : false,
- config : false,
- error : false,
- tempdir : false
-};
-
-exports.typed = {
- ArrayBuffer : false,
- ArrayBufferView : false,
- DataView : false,
- Float32Array : false,
- Float64Array : false,
- Int16Array : false,
- Int32Array : false,
- Int8Array : false,
- Uint16Array : false,
- Uint32Array : false,
- Uint8Array : false,
- Uint8ClampedArray : false
-};
-
-exports.wsh = {
- ActiveXObject : true,
- Enumerator : true,
- GetObject : true,
- ScriptEngine : true,
- ScriptEngineBuildVersion : true,
- ScriptEngineMajorVersion : true,
- ScriptEngineMinorVersion : true,
- VBArray : true,
- WSH : true,
- WScript : true,
- XDomainRequest : true
-};
-
-// Globals provided by popular JavaScript libraries.
-
-exports.dojo = {
- dojo : false,
- dijit : false,
- dojox : false,
- define : false,
- "require": false
-};
-
-exports.jquery = {
- "$" : false,
- jQuery : false
-};
-
-exports.mootools = {
- "$" : false,
- "$$" : false,
- Asset : false,
- Browser : false,
- Chain : false,
- Class : false,
- Color : false,
- Cookie : false,
- Core : false,
- Document : false,
- DomReady : false,
- DOMEvent : false,
- DOMReady : false,
- Drag : false,
- Element : false,
- Elements : false,
- Event : false,
- Events : false,
- Fx : false,
- Group : false,
- Hash : false,
- HtmlTable : false,
- Iframe : false,
- IframeShim : false,
- InputValidator: false,
- instanceOf : false,
- Keyboard : false,
- Locale : false,
- Mask : false,
- MooTools : false,
- Native : false,
- Options : false,
- OverText : false,
- Request : false,
- Scroller : false,
- Slick : false,
- Slider : false,
- Sortables : false,
- Spinner : false,
- Swiff : false,
- Tips : false,
- Type : false,
- typeOf : false,
- URI : false,
- Window : false
-};
-
-exports.prototypejs = {
- "$" : false,
- "$$" : false,
- "$A" : false,
- "$F" : false,
- "$H" : false,
- "$R" : false,
- "$break" : false,
- "$continue" : false,
- "$w" : false,
- Abstract : false,
- Ajax : false,
- Class : false,
- Enumerable : false,
- Element : false,
- Event : false,
- Field : false,
- Form : false,
- Hash : false,
- Insertion : false,
- ObjectRange : false,
- PeriodicalExecuter: false,
- Position : false,
- Prototype : false,
- Selector : false,
- Template : false,
- Toggle : false,
- Try : false,
- Autocompleter : false,
- Builder : false,
- Control : false,
- Draggable : false,
- Draggables : false,
- Droppables : false,
- Effect : false,
- Sortable : false,
- SortableObserver : false,
- Sound : false,
- Scriptaculous : false
-};
-
-exports.yui = {
- YUI : false,
- Y : false,
- YUI_config: false
-};
-
-
-},{}]},{},["FcDwKk"])
JSHINT = require('jshint').JSHINT;
if (typeof exports === 'object' && exports) exports.JSHINT = JSHINT;
}());
\ No newline at end of file