zmp-cli 3.15.6 → 3.15.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -0
- package/build/index.js +1 -184
- package/config/index.js +1 -44
- package/create/index.js +1 -230
- package/create/utils/generate-app-config.js +1 -34
- package/create/utils/generate-npm-scripts.js +1 -26
- package/create/utils/get-options.js +1 -204
- package/create/utils/npm-scripts.js +1 -62
- package/deploy/index.js +1 -149
- package/deploy/utils/get-options.js +1 -69
- package/deploy/utils/request-upload.js +1 -34
- package/deploy/utils/upload-app.js +1 -82
- package/index.js +1 -319
- package/login/index.js +1 -169
- package/login/utils/get-options.js +1 -58
- package/login/utils/zalo-login.js +1 -32
- package/migrate/icons/update-icon-v3.js +1 -19
- package/migrate/index.js +1 -60
- package/migrate/utils/get-options.js +1 -46
- package/migrate/utils/migrate-react.js +1 -33
- package/package.json +13 -40
- package/start/frame/index.html +264 -254
- package/start/index.js +1 -382
- package/sync/index-to-app-config.js +1 -146
- package/sync/index.js +1 -55
- package/utils/axios.js +1 -15
- package/utils/check-update.js +1 -53
- package/utils/constants.js +1 -20
- package/utils/env.js +1 -39
- package/utils/error.js +1 -16
- package/utils/find-files-by-ext.js +1 -27
- package/utils/find-free-port.js +1 -11
- package/utils/fs-extra.js +1 -90
- package/utils/generate-pages-map.js +1 -17
- package/utils/get-app-info.js +1 -22
- package/utils/get-current-project.js +1 -25
- package/utils/get-ip.js +1 -19
- package/utils/log.js +1 -19
- package/utils/node-blob.js +1 -106
- package/utils/resumable.d.js +1 -0
- package/utils/resumable.js +1 -1204
- package/utils/spinner.js +1 -25
- package/utils/tunnel.js +1 -36
- package/.editorconfig +0 -15
- package/.eslintignore +0 -8
- package/.eslintrc.js +0 -10
- package/.vscode/launch.json +0 -23
- package/LICENSE +0 -21
- package/README.git.md +0 -37
- package/assets/index.js +0 -147
- package/build/dist/index.dev.js +0 -217
- package/config/dist/index.dev.js +0 -48
- package/create/init-zmp-ui.js +0 -216
- package/create/templates/app-parameters.js +0 -33
- package/create/templates/common/css/icons.css +0 -60
- package/create/templates/common/icons/512x512.png +0 -0
- package/create/templates/common/icons/apple-touch-icon.png +0 -0
- package/create/templates/common/icons/favicon.png +0 -0
- package/create/templates/common/postcss.config.js +0 -5
- package/create/templates/common/splash-2732x2732.png +0 -0
- package/create/templates/common/tailwind/postcss.config.js +0 -5
- package/create/templates/common/tailwind/tailwind.config.js +0 -9
- package/create/templates/common/tailwind/tailwind.css +0 -3
- package/create/templates/common/webpack/build.js +0 -41
- package/create/templates/copy-assets.js +0 -158
- package/create/templates/core/babel.config.js +0 -11
- package/create/templates/core/copy-assets.js +0 -83
- package/create/templates/core/generate-home-page.js +0 -143
- package/create/templates/core/generate-root.js +0 -283
- package/create/templates/core/generate-routes.js +0 -155
- package/create/templates/core/generate-scripts.js +0 -94
- package/create/templates/core/pages/404.html +0 -20
- package/create/templates/core/pages/about.html +0 -26
- package/create/templates/core/pages/catalog.html +0 -40
- package/create/templates/core/pages/dynamic-route.html +0 -115
- package/create/templates/core/pages/form.html +0 -258
- package/create/templates/core/pages/left-page-1.html +0 -24
- package/create/templates/core/pages/left-page-2.html +0 -23
- package/create/templates/core/pages/product.html +0 -36
- package/create/templates/core/pages/request-and-load.html +0 -35
- package/create/templates/core/pages/settings.html +0 -252
- package/create/templates/create-folders.js +0 -30
- package/create/templates/dist/generate-styles.dev.js +0 -46
- package/create/templates/generate-config-xml.js +0 -18
- package/create/templates/generate-index.js +0 -49
- package/create/templates/generate-manifest.js +0 -49
- package/create/templates/generate-recoil.js +0 -56
- package/create/templates/generate-routes.js +0 -16
- package/create/templates/generate-scripts.js +0 -16
- package/create/templates/generate-service-worker.js +0 -126
- package/create/templates/generate-store.js +0 -88
- package/create/templates/generate-styles.js +0 -110
- package/create/templates/generate-webpack-config.js +0 -335
- package/create/templates/generate-zmp-custom.js +0 -81
- package/create/templates/react/babel.config.js +0 -12
- package/create/templates/react/components/app-items.jsx +0 -44
- package/create/templates/react/components/navbar-back.jsx +0 -25
- package/create/templates/react/components/user-card.jsx +0 -18
- package/create/templates/react/copy-assets.js +0 -85
- package/create/templates/react/dist/generate-scripts.dev.js +0 -23
- package/create/templates/react/generate-home-page.js +0 -111
- package/create/templates/react/generate-root.js +0 -84
- package/create/templates/react/generate-routes.js +0 -16
- package/create/templates/react/generate-scripts.js +0 -68
- package/create/templates/react/pages/404.js +0 -27
- package/create/templates/react/pages/about.js +0 -52
- package/create/templates/react/pages/catalog.js +0 -112
- package/create/templates/react/pages/dynamic-route.js +0 -80
- package/create/templates/react/pages/form.js +0 -152
- package/create/templates/react/pages/index copy.js +0 -17
- package/create/templates/react/pages/index.js +0 -17
- package/create/templates/react/pages/settings.js +0 -76
- package/create/templates/react/pages/user.js +0 -56
- package/create/templates/react/vite.config.js +0 -11
- package/create/templates/react-typescript/_tsconfig.json +0 -33
- package/create/templates/react-typescript/components/app-items.js +0 -53
- package/create/templates/react-typescript/components/index.js +0 -9
- package/create/templates/react-typescript/components/navbar-back.js +0 -40
- package/create/templates/react-typescript/components/user-card.js +0 -32
- package/create/templates/react-typescript/copy-assets.js +0 -94
- package/create/templates/react-typescript/dist/generate-scripts.dev.js +0 -23
- package/create/templates/react-typescript/generate-home-page.js +0 -113
- package/create/templates/react-typescript/generate-root.js +0 -81
- package/create/templates/react-typescript/generate-routes.js +0 -12
- package/create/templates/react-typescript/generate-scripts.js +0 -67
- package/create/templates/react-typescript/pages/404.js +0 -27
- package/create/templates/react-typescript/pages/about.js +0 -52
- package/create/templates/react-typescript/pages/catalog.js +0 -112
- package/create/templates/react-typescript/pages/dynamic-route.js +0 -80
- package/create/templates/react-typescript/pages/form.js +0 -152
- package/create/templates/react-typescript/pages/index.js +0 -17
- package/create/templates/react-typescript/pages/settings.js +0 -76
- package/create/templates/react-typescript/pages/user.js +0 -56
- package/create/templates/react-typescript/vite.config.js +0 -21
- package/create/templates/svelte/babel.config.js +0 -10
- package/create/templates/svelte/copy-assets.js +0 -47
- package/create/templates/svelte/generate-home-page.js +0 -158
- package/create/templates/svelte/generate-root.js +0 -235
- package/create/templates/svelte/generate-routes.js +0 -91
- package/create/templates/svelte/generate-scripts.js +0 -47
- package/create/templates/svelte/pages/404.svelte +0 -10
- package/create/templates/svelte/pages/about.svelte +0 -16
- package/create/templates/svelte/pages/catalog.svelte +0 -31
- package/create/templates/svelte/pages/dynamic-route.svelte +0 -34
- package/create/templates/svelte/pages/form.svelte +0 -175
- package/create/templates/svelte/pages/left-page-1.svelte +0 -13
- package/create/templates/svelte/pages/left-page-2.svelte +0 -12
- package/create/templates/svelte/pages/product.svelte +0 -21
- package/create/templates/svelte/pages/request-and-load.svelte +0 -21
- package/create/templates/svelte/pages/settings.svelte +0 -175
- package/create/templates/vue/babel.config.js +0 -10
- package/create/templates/vue/components/header.vue +0 -28
- package/create/templates/vue/components/sun-and-moon.vue +0 -34
- package/create/templates/vue/copy-assets.js +0 -67
- package/create/templates/vue/generate-home-page.js +0 -56
- package/create/templates/vue/generate-root.js +0 -50
- package/create/templates/vue/generate-routes.js +0 -7
- package/create/templates/vue/generate-scripts.js +0 -63
- package/create/templates/vue/global-components.d.ts +0 -121
- package/create/templates/vue/icons/moon.svg +0 -3
- package/create/templates/vue/icons/sun.svg +0 -3
- package/create/templates/vue/pages/404.vue +0 -12
- package/create/templates/vue/pages/about.vue +0 -15
- package/create/templates/vue/pages/catalog.vue +0 -39
- package/create/templates/vue/pages/dynamic-route.vue +0 -34
- package/create/templates/vue/pages/form.vue +0 -162
- package/create/templates/vue/pages/left-page-1.vue +0 -14
- package/create/templates/vue/pages/left-page-2.vue +0 -11
- package/create/templates/vue/pages/product.vue +0 -31
- package/create/templates/vue/pages/request-and-load.vue +0 -25
- package/create/templates/vue/pages/settings.vue +0 -18
- package/create/templates/vue/vite.config.js +0 -11
- package/create/templates/zaui/_tsconfig.json +0 -33
- package/create/templates/zaui/babel.config.js +0 -12
- package/create/templates/zaui/components/user-card.jsx +0 -16
- package/create/templates/zaui/copy-assets.js +0 -90
- package/create/templates/zaui/generate-home-page.js +0 -117
- package/create/templates/zaui/generate-root.js +0 -53
- package/create/templates/zaui/generate-routes.js +0 -10
- package/create/templates/zaui/generate-scripts.js +0 -39
- package/create/templates/zaui/generate-user-card.js +0 -55
- package/create/templates/zaui/pages/about.js +0 -129
- package/create/templates/zaui/pages/form.js +0 -123
- package/create/templates/zaui/pages/index.js +0 -9
- package/create/templates/zaui/pages/user.js +0 -109
- package/create/templates/zaui/vite.config.js +0 -11
- package/create/utils/colors.js +0 -94
- package/create/utils/dist/get-options.dev.js +0 -277
- package/create/utils/generate-gitignore.js +0 -43
- package/create/utils/generate-package-json.js +0 -132
- package/create/utils/generate-readme.js +0 -28
- package/create/utils/indent.js +0 -31
- package/create/utils/string.js +0 -13
- package/create/utils/styles-extension.js +0 -9
- package/create/utils/template-if.js +0 -9
- package/deploy/dist/index.dev.js +0 -227
- package/deploy/utils/dist/request-upload.dev.js +0 -62
- package/deploy/utils/dist/upload-app.dev.js +0 -113
- package/dist/bundle.js +0 -1
- package/dist/index.dev.js +0 -352
- package/jsconfig.json +0 -8
- package/login/dist/index.dev.js +0 -223
- package/login/utils/dist/zalo-login.dev.js +0 -41
- package/screenshots/wellcome.jpg +0 -0
- package/show-qr-app/assets/css/style.css +0 -87
- package/show-qr-app/assets/js/qrcode.min.js +0 -1
- package/show-qr-app/index.html +0 -57
- package/show-qr-app/package.json +0 -14
- package/start/dist/index.dev.js +0 -312
- package/start/generate-hr-config.js +0 -59
- package/ui/server.js +0 -194
- package/ui/www/css/app.css +0 -1
- package/ui/www/css/app.css.map +0 -1
- package/ui/www/fonts/ZMPIcons-Regular.eot +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.ttf +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.woff +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.woff2 +0 -0
- package/ui/www/images/logo.png +0 -0
- package/ui/www/index.html +0 -1
- package/ui/www/js/app.js +0 -3
- package/ui/www/js/app.js.LICENSE.txt +0 -20
- package/ui/www/js/app.js.map +0 -1
- package/ui/www/static/icons/apple-touch-icon.png +0 -0
- package/ui/www/static/icons/favicon.png +0 -0
- package/utils/dist/get-app-info.dev.js +0 -54
package/utils/resumable.js
CHANGED
|
@@ -1,1204 +1 @@
|
|
|
1
|
-
const FileAPI = require('file-api');
|
|
2
|
-
const Blob = require('./node-blob');
|
|
3
|
-
const XMLHttpRequest = require('xhr2');
|
|
4
|
-
const { agent } = require('./axios');
|
|
5
|
-
|
|
6
|
-
XMLHttpRequest.nodejsSet({
|
|
7
|
-
httpAgent: agent,
|
|
8
|
-
httpsAgent: agent,
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
const File = FileAPI.File;
|
|
12
|
-
const FileList = FileAPI.FileList;
|
|
13
|
-
const FileReader = FileAPI.FileReader;
|
|
14
|
-
|
|
15
|
-
const Resumable = function (opts) {
|
|
16
|
-
if (!(this instanceof Resumable)) {
|
|
17
|
-
return new Resumable(opts);
|
|
18
|
-
}
|
|
19
|
-
this.version = 1.0;
|
|
20
|
-
// SUPPORTED BY BROWSER?
|
|
21
|
-
// Check if these features are support by the browser:
|
|
22
|
-
// - File object type
|
|
23
|
-
// - Blob object type
|
|
24
|
-
// - FileList object type
|
|
25
|
-
// - slicing files
|
|
26
|
-
this.support =
|
|
27
|
-
typeof File !== 'undefined' &&
|
|
28
|
-
typeof Blob !== 'undefined' &&
|
|
29
|
-
typeof FileList !== 'undefined' &&
|
|
30
|
-
(!!Blob.prototype.webkitSlice ||
|
|
31
|
-
!!Blob.prototype.mozSlice ||
|
|
32
|
-
!!Blob.prototype.slice ||
|
|
33
|
-
false);
|
|
34
|
-
if (!this.support) return false;
|
|
35
|
-
|
|
36
|
-
// PROPERTIES
|
|
37
|
-
var $ = this;
|
|
38
|
-
$.files = [];
|
|
39
|
-
$.defaults = {
|
|
40
|
-
chunkSize: 1 * 1024 * 1024,
|
|
41
|
-
forceChunkSize: false,
|
|
42
|
-
simultaneousUploads: 3,
|
|
43
|
-
fileParameterName: 'file',
|
|
44
|
-
chunkNumberParameterName: 'resumableChunkNumber',
|
|
45
|
-
chunkSizeParameterName: 'resumableChunkSize',
|
|
46
|
-
currentChunkSizeParameterName: 'resumableCurrentChunkSize',
|
|
47
|
-
totalSizeParameterName: 'resumableTotalSize',
|
|
48
|
-
typeParameterName: 'resumableType',
|
|
49
|
-
identifierParameterName: 'resumableIdentifier',
|
|
50
|
-
fileNameParameterName: 'resumableFilename',
|
|
51
|
-
relativePathParameterName: 'resumableRelativePath',
|
|
52
|
-
totalChunksParameterName: 'resumableTotalChunks',
|
|
53
|
-
throttleProgressCallbacks: 0.5,
|
|
54
|
-
query: {},
|
|
55
|
-
headers: {},
|
|
56
|
-
preprocess: null,
|
|
57
|
-
method: 'multipart',
|
|
58
|
-
uploadMethod: 'POST',
|
|
59
|
-
testMethod: 'GET',
|
|
60
|
-
prioritizeFirstAndLastChunk: false,
|
|
61
|
-
target: '/',
|
|
62
|
-
testTarget: null,
|
|
63
|
-
parameterNamespace: '',
|
|
64
|
-
testChunks: true,
|
|
65
|
-
generateUniqueIdentifier: null,
|
|
66
|
-
getTarget: null,
|
|
67
|
-
maxChunkRetries: 100,
|
|
68
|
-
chunkRetryInterval: undefined,
|
|
69
|
-
permanentErrors: [400, 404, 415, 500, 501],
|
|
70
|
-
maxFiles: undefined,
|
|
71
|
-
withCredentials: false,
|
|
72
|
-
xhrTimeout: 0,
|
|
73
|
-
clearInput: true,
|
|
74
|
-
chunkFormat: 'blob',
|
|
75
|
-
setChunkTypeFromFile: false,
|
|
76
|
-
maxFilesErrorCallback: function (files, errorCount) {
|
|
77
|
-
var maxFiles = $.getOpt('maxFiles');
|
|
78
|
-
alert(
|
|
79
|
-
'Please upload no more than ' +
|
|
80
|
-
maxFiles +
|
|
81
|
-
' file' +
|
|
82
|
-
(maxFiles === 1 ? '' : 's') +
|
|
83
|
-
' at a time.'
|
|
84
|
-
);
|
|
85
|
-
},
|
|
86
|
-
minFileSize: 1,
|
|
87
|
-
minFileSizeErrorCallback: function (file, errorCount) {
|
|
88
|
-
alert(
|
|
89
|
-
file.fileName ||
|
|
90
|
-
file.name +
|
|
91
|
-
' is too small, please upload files larger than ' +
|
|
92
|
-
$h.formatSize($.getOpt('minFileSize')) +
|
|
93
|
-
'.'
|
|
94
|
-
);
|
|
95
|
-
},
|
|
96
|
-
maxFileSize: undefined,
|
|
97
|
-
maxFileSizeErrorCallback: function (file, errorCount) {
|
|
98
|
-
alert(
|
|
99
|
-
file.fileName ||
|
|
100
|
-
file.name +
|
|
101
|
-
' is too large, please upload files less than ' +
|
|
102
|
-
$h.formatSize($.getOpt('maxFileSize')) +
|
|
103
|
-
'.'
|
|
104
|
-
);
|
|
105
|
-
},
|
|
106
|
-
fileType: [],
|
|
107
|
-
fileTypeErrorCallback: function (file, errorCount) {
|
|
108
|
-
alert(
|
|
109
|
-
file.fileName ||
|
|
110
|
-
file.name +
|
|
111
|
-
' has type not allowed, please upload files of type ' +
|
|
112
|
-
$.getOpt('fileType') +
|
|
113
|
-
'.'
|
|
114
|
-
);
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
|
-
$.opts = opts || {};
|
|
118
|
-
$.getOpt = function (o) {
|
|
119
|
-
var $opt = this;
|
|
120
|
-
// Get multiple option if passed an array
|
|
121
|
-
if (o instanceof Array) {
|
|
122
|
-
var options = {};
|
|
123
|
-
$h.each(o, function (option) {
|
|
124
|
-
options[option] = $opt.getOpt(option);
|
|
125
|
-
});
|
|
126
|
-
return options;
|
|
127
|
-
}
|
|
128
|
-
// Otherwise, just return a simple option
|
|
129
|
-
if ($opt instanceof ResumableChunk) {
|
|
130
|
-
if (typeof $opt.opts[o] !== 'undefined') {
|
|
131
|
-
return $opt.opts[o];
|
|
132
|
-
} else {
|
|
133
|
-
$opt = $opt.fileObj;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if ($opt instanceof ResumableFile) {
|
|
137
|
-
if (typeof $opt.opts[o] !== 'undefined') {
|
|
138
|
-
return $opt.opts[o];
|
|
139
|
-
} else {
|
|
140
|
-
$opt = $opt.resumableObj;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
if ($opt instanceof Resumable) {
|
|
144
|
-
if (typeof $opt.opts[o] !== 'undefined') {
|
|
145
|
-
return $opt.opts[o];
|
|
146
|
-
} else {
|
|
147
|
-
return $opt.defaults[o];
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
// EVENTS
|
|
153
|
-
// catchAll(event, ...)
|
|
154
|
-
// fileSuccess(file), fileProgress(file), fileAdded(file, event), filesAdded(files, filesSkipped), fileRetry(file),
|
|
155
|
-
// fileError(file, message), complete(), progress(), error(message, file), pause()
|
|
156
|
-
$.events = [];
|
|
157
|
-
$.on = function (event, callback) {
|
|
158
|
-
$.events.push(event.toLowerCase(), callback);
|
|
159
|
-
};
|
|
160
|
-
$.fire = function () {
|
|
161
|
-
// `arguments` is an object, not array, in FF, so:
|
|
162
|
-
var args = [];
|
|
163
|
-
for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);
|
|
164
|
-
// Find event listeners, and support pseudo-event `catchAll`
|
|
165
|
-
var event = args[0].toLowerCase();
|
|
166
|
-
for (var i = 0; i <= $.events.length; i += 2) {
|
|
167
|
-
if ($.events[i] == event) $.events[i + 1].apply($, args.slice(1));
|
|
168
|
-
if ($.events[i] == 'catchall') $.events[i + 1].apply(null, args);
|
|
169
|
-
}
|
|
170
|
-
if (event == 'fileerror') $.fire('error', args[2], args[1]);
|
|
171
|
-
if (event == 'fileprogress') $.fire('progress');
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
// INTERNAL HELPER METHODS (handy, but ultimately not part of uploading)
|
|
175
|
-
var $h = {
|
|
176
|
-
stopEvent: function (e) {
|
|
177
|
-
e.stopPropagation();
|
|
178
|
-
e.preventDefault();
|
|
179
|
-
},
|
|
180
|
-
each: function (o, callback) {
|
|
181
|
-
if (typeof o.length !== 'undefined') {
|
|
182
|
-
for (var i = 0; i < o.length; i++) {
|
|
183
|
-
// Array or FileList
|
|
184
|
-
if (callback(o[i]) === false) return;
|
|
185
|
-
}
|
|
186
|
-
} else {
|
|
187
|
-
for (i in o) {
|
|
188
|
-
// Object
|
|
189
|
-
if (callback(i, o[i]) === false) return;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
},
|
|
193
|
-
generateUniqueIdentifier: function (file, event) {
|
|
194
|
-
var custom = $.getOpt('generateUniqueIdentifier');
|
|
195
|
-
if (typeof custom === 'function') {
|
|
196
|
-
return custom(file, event);
|
|
197
|
-
}
|
|
198
|
-
var relativePath = file.webkitRelativePath || file.fileName || file.name; // Some confusion in different versions of Firefox
|
|
199
|
-
var size = file.size;
|
|
200
|
-
return size + '-' + relativePath.replace(/[^0-9a-zA-Z_-]/gim, '');
|
|
201
|
-
},
|
|
202
|
-
contains: function (array, test) {
|
|
203
|
-
var result = false;
|
|
204
|
-
|
|
205
|
-
$h.each(array, function (value) {
|
|
206
|
-
if (value == test) {
|
|
207
|
-
result = true;
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
return true;
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
return result;
|
|
214
|
-
},
|
|
215
|
-
formatSize: function (size) {
|
|
216
|
-
if (size < 1024) {
|
|
217
|
-
return size + ' bytes';
|
|
218
|
-
} else if (size < 1024 * 1024) {
|
|
219
|
-
return (size / 1024.0).toFixed(0) + ' KB';
|
|
220
|
-
} else if (size < 1024 * 1024 * 1024) {
|
|
221
|
-
return (size / 1024.0 / 1024.0).toFixed(1) + ' MB';
|
|
222
|
-
} else {
|
|
223
|
-
return (size / 1024.0 / 1024.0 / 1024.0).toFixed(1) + ' GB';
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
getTarget: function (request, params) {
|
|
227
|
-
var target = $.getOpt('target');
|
|
228
|
-
|
|
229
|
-
if (request === 'test' && $.getOpt('testTarget')) {
|
|
230
|
-
target =
|
|
231
|
-
$.getOpt('testTarget') === '/'
|
|
232
|
-
? $.getOpt('target')
|
|
233
|
-
: $.getOpt('testTarget');
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
if (typeof target === 'function') {
|
|
237
|
-
return target(params);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
var separator = target.indexOf('?') < 0 ? '?' : '&';
|
|
241
|
-
var joinedParams = params.join('&');
|
|
242
|
-
|
|
243
|
-
return target + separator + joinedParams;
|
|
244
|
-
},
|
|
245
|
-
};
|
|
246
|
-
|
|
247
|
-
var onDrop = function (event) {
|
|
248
|
-
$h.stopEvent(event);
|
|
249
|
-
|
|
250
|
-
//handle dropped things as items if we can (this lets us deal with folders nicer in some cases)
|
|
251
|
-
if (event.dataTransfer && event.dataTransfer.items) {
|
|
252
|
-
loadFiles(event.dataTransfer.items, event);
|
|
253
|
-
}
|
|
254
|
-
//else handle them as files
|
|
255
|
-
else if (event.dataTransfer && event.dataTransfer.files) {
|
|
256
|
-
loadFiles(event.dataTransfer.files, event);
|
|
257
|
-
}
|
|
258
|
-
};
|
|
259
|
-
var preventDefault = function (e) {
|
|
260
|
-
e.preventDefault();
|
|
261
|
-
};
|
|
262
|
-
|
|
263
|
-
/**
|
|
264
|
-
* processes a single upload item (file or directory)
|
|
265
|
-
* @param {Object} item item to upload, may be file or directory entry
|
|
266
|
-
* @param {string} path current file path
|
|
267
|
-
* @param {File[]} items list of files to append new items to
|
|
268
|
-
* @param {Function} cb callback invoked when item is processed
|
|
269
|
-
*/
|
|
270
|
-
function processItem(item, path, items, cb) {
|
|
271
|
-
var entry;
|
|
272
|
-
if (item.isFile) {
|
|
273
|
-
// file provided
|
|
274
|
-
return item.file(function (file) {
|
|
275
|
-
file.relativePath = path + file.name;
|
|
276
|
-
items.push(file);
|
|
277
|
-
cb();
|
|
278
|
-
});
|
|
279
|
-
} else if (item.isDirectory) {
|
|
280
|
-
// item is already a directory entry, just assign
|
|
281
|
-
entry = item;
|
|
282
|
-
} else if (item instanceof File) {
|
|
283
|
-
items.push(item);
|
|
284
|
-
}
|
|
285
|
-
if ('function' === typeof item.webkitGetAsEntry) {
|
|
286
|
-
// get entry from file object
|
|
287
|
-
entry = item.webkitGetAsEntry();
|
|
288
|
-
}
|
|
289
|
-
if (entry && entry.isDirectory) {
|
|
290
|
-
// directory provided, process it
|
|
291
|
-
return processDirectory(entry, path + entry.name + '/', items, cb);
|
|
292
|
-
}
|
|
293
|
-
if ('function' === typeof item.getAsFile) {
|
|
294
|
-
// item represents a File object, convert it
|
|
295
|
-
item = item.getAsFile();
|
|
296
|
-
if (item instanceof File) {
|
|
297
|
-
item.relativePath = path + item.name;
|
|
298
|
-
items.push(item);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
cb(); // indicate processing is done
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* cps-style list iteration.
|
|
306
|
-
* invokes all functions in list and waits for their callback to be
|
|
307
|
-
* triggered.
|
|
308
|
-
* @param {Function[]} items list of functions expecting callback parameter
|
|
309
|
-
* @param {Function} cb callback to trigger after the last callback has been invoked
|
|
310
|
-
*/
|
|
311
|
-
function processCallbacks(items, cb) {
|
|
312
|
-
if (!items || items.length === 0) {
|
|
313
|
-
// empty or no list, invoke callback
|
|
314
|
-
return cb();
|
|
315
|
-
}
|
|
316
|
-
// invoke current function, pass the next part as continuation
|
|
317
|
-
items[0](function () {
|
|
318
|
-
processCallbacks(items.slice(1), cb);
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* recursively traverse directory and collect files to upload
|
|
324
|
-
* @param {Object} directory directory to process
|
|
325
|
-
* @param {string} path current path
|
|
326
|
-
* @param {File[]} items target list of items
|
|
327
|
-
* @param {Function} cb callback invoked after traversing directory
|
|
328
|
-
*/
|
|
329
|
-
function processDirectory(directory, path, items, cb) {
|
|
330
|
-
var dirReader = directory.createReader();
|
|
331
|
-
dirReader.readEntries(function (entries) {
|
|
332
|
-
if (!entries.length) {
|
|
333
|
-
// empty directory, skip
|
|
334
|
-
return cb();
|
|
335
|
-
}
|
|
336
|
-
// process all conversion callbacks, finally invoke own one
|
|
337
|
-
processCallbacks(
|
|
338
|
-
entries.map(function (entry) {
|
|
339
|
-
// bind all properties except for callback
|
|
340
|
-
return processItem.bind(null, entry, path, items);
|
|
341
|
-
}),
|
|
342
|
-
cb
|
|
343
|
-
);
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* process items to extract files to be uploaded
|
|
349
|
-
* @param {File[]} items items to process
|
|
350
|
-
* @param {Event} event event that led to upload
|
|
351
|
-
*/
|
|
352
|
-
function loadFiles(items, event) {
|
|
353
|
-
if (!items.length) {
|
|
354
|
-
return; // nothing to do
|
|
355
|
-
}
|
|
356
|
-
$.fire('beforeAdd');
|
|
357
|
-
var files = [];
|
|
358
|
-
processCallbacks(
|
|
359
|
-
Array.prototype.map.call(items, function (item) {
|
|
360
|
-
// bind all properties except for callback
|
|
361
|
-
return processItem.bind(null, item, '', files);
|
|
362
|
-
}),
|
|
363
|
-
function () {
|
|
364
|
-
if (files.length) {
|
|
365
|
-
// at least one file found
|
|
366
|
-
appendFilesFromFileList(files, event);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
var appendFilesFromFileList = function (fileList, event) {
|
|
373
|
-
// check for uploading too many files
|
|
374
|
-
var errorCount = 0;
|
|
375
|
-
var o = $.getOpt([
|
|
376
|
-
'maxFiles',
|
|
377
|
-
'minFileSize',
|
|
378
|
-
'maxFileSize',
|
|
379
|
-
'maxFilesErrorCallback',
|
|
380
|
-
'minFileSizeErrorCallback',
|
|
381
|
-
'maxFileSizeErrorCallback',
|
|
382
|
-
'fileType',
|
|
383
|
-
'fileTypeErrorCallback',
|
|
384
|
-
]);
|
|
385
|
-
if (
|
|
386
|
-
typeof o.maxFiles !== 'undefined' &&
|
|
387
|
-
o.maxFiles < fileList.length + $.files.length
|
|
388
|
-
) {
|
|
389
|
-
// if single-file upload, file is already added, and trying to add 1 new file, simply replace the already-added file
|
|
390
|
-
if (o.maxFiles === 1 && $.files.length === 1 && fileList.length === 1) {
|
|
391
|
-
$.removeFile($.files[0]);
|
|
392
|
-
} else {
|
|
393
|
-
o.maxFilesErrorCallback(fileList, errorCount++);
|
|
394
|
-
return false;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
var files = [],
|
|
398
|
-
filesSkipped = [],
|
|
399
|
-
remaining = fileList.length;
|
|
400
|
-
var decreaseReamining = function () {
|
|
401
|
-
if (!--remaining) {
|
|
402
|
-
// all files processed, trigger event
|
|
403
|
-
if (!files.length && !filesSkipped.length) {
|
|
404
|
-
// no succeeded files, just skip
|
|
405
|
-
return;
|
|
406
|
-
}
|
|
407
|
-
setTimeout(function () {
|
|
408
|
-
$.fire('filesAdded', files, filesSkipped);
|
|
409
|
-
}, 0);
|
|
410
|
-
}
|
|
411
|
-
};
|
|
412
|
-
$h.each(fileList, function (file) {
|
|
413
|
-
var fileName = file.name;
|
|
414
|
-
if (o.fileType.length > 0) {
|
|
415
|
-
var fileTypeFound = false;
|
|
416
|
-
for (var index in o.fileType) {
|
|
417
|
-
var extension = '.' + o.fileType[index];
|
|
418
|
-
if (
|
|
419
|
-
fileName
|
|
420
|
-
.toLowerCase()
|
|
421
|
-
.indexOf(
|
|
422
|
-
extension.toLowerCase(),
|
|
423
|
-
fileName.length - extension.length
|
|
424
|
-
) !== -1
|
|
425
|
-
) {
|
|
426
|
-
fileTypeFound = true;
|
|
427
|
-
break;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
if (!fileTypeFound) {
|
|
431
|
-
o.fileTypeErrorCallback(file, errorCount++);
|
|
432
|
-
return false;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
if (typeof o.minFileSize !== 'undefined' && file.size < o.minFileSize) {
|
|
437
|
-
o.minFileSizeErrorCallback(file, errorCount++);
|
|
438
|
-
return false;
|
|
439
|
-
}
|
|
440
|
-
if (typeof o.maxFileSize !== 'undefined' && file.size > o.maxFileSize) {
|
|
441
|
-
o.maxFileSizeErrorCallback(file, errorCount++);
|
|
442
|
-
return false;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
function addFile(uniqueIdentifier) {
|
|
446
|
-
if (!$.getFromUniqueIdentifier(uniqueIdentifier)) {
|
|
447
|
-
(function () {
|
|
448
|
-
file.uniqueIdentifier = uniqueIdentifier;
|
|
449
|
-
var f = new ResumableFile($, file, uniqueIdentifier);
|
|
450
|
-
$.files.push(f);
|
|
451
|
-
files.push(f);
|
|
452
|
-
f.container = typeof event != 'undefined' ? event.srcElement : null;
|
|
453
|
-
setTimeout(function () {
|
|
454
|
-
$.fire('fileAdded', f, event);
|
|
455
|
-
}, 0);
|
|
456
|
-
})();
|
|
457
|
-
} else {
|
|
458
|
-
filesSkipped.push(file);
|
|
459
|
-
}
|
|
460
|
-
decreaseReamining();
|
|
461
|
-
}
|
|
462
|
-
// directories have size == 0
|
|
463
|
-
var uniqueIdentifier = $h.generateUniqueIdentifier(file, event);
|
|
464
|
-
if (uniqueIdentifier && typeof uniqueIdentifier.then === 'function') {
|
|
465
|
-
// Promise or Promise-like object provided as unique identifier
|
|
466
|
-
uniqueIdentifier.then(
|
|
467
|
-
function (uniqueIdentifier) {
|
|
468
|
-
// unique identifier generation succeeded
|
|
469
|
-
addFile(uniqueIdentifier);
|
|
470
|
-
},
|
|
471
|
-
function () {
|
|
472
|
-
// unique identifier generation failed
|
|
473
|
-
// skip further processing, only decrease file count
|
|
474
|
-
decreaseReamining();
|
|
475
|
-
}
|
|
476
|
-
);
|
|
477
|
-
} else {
|
|
478
|
-
// non-Promise provided as unique identifier, process synchronously
|
|
479
|
-
addFile(uniqueIdentifier);
|
|
480
|
-
}
|
|
481
|
-
});
|
|
482
|
-
};
|
|
483
|
-
|
|
484
|
-
// INTERNAL OBJECT TYPES
|
|
485
|
-
function ResumableFile(resumableObj, file, uniqueIdentifier) {
|
|
486
|
-
var $ = this;
|
|
487
|
-
$.opts = {};
|
|
488
|
-
$.getOpt = resumableObj.getOpt;
|
|
489
|
-
$._prevProgress = 0;
|
|
490
|
-
$.resumableObj = resumableObj;
|
|
491
|
-
$.file = file;
|
|
492
|
-
$.fileName = file.fileName || file.name; // Some confusion in different versions of Firefox
|
|
493
|
-
$.size = file.size;
|
|
494
|
-
$.relativePath = file.relativePath || file.webkitRelativePath || $.fileName;
|
|
495
|
-
$.uniqueIdentifier = uniqueIdentifier;
|
|
496
|
-
$._pause = false;
|
|
497
|
-
$.container = '';
|
|
498
|
-
var _error = uniqueIdentifier !== undefined;
|
|
499
|
-
|
|
500
|
-
// Callback when something happens within the chunk
|
|
501
|
-
var chunkEvent = function (event, message) {
|
|
502
|
-
// event can be 'progress', 'success', 'error' or 'retry'
|
|
503
|
-
switch (event) {
|
|
504
|
-
case 'progress':
|
|
505
|
-
$.resumableObj.fire('fileProgress', $, message);
|
|
506
|
-
break;
|
|
507
|
-
case 'error':
|
|
508
|
-
$.abort();
|
|
509
|
-
_error = true;
|
|
510
|
-
$.chunks = [];
|
|
511
|
-
$.resumableObj.fire('fileError', $, message);
|
|
512
|
-
break;
|
|
513
|
-
case 'success':
|
|
514
|
-
if (_error) return;
|
|
515
|
-
$.resumableObj.fire('fileProgress', $); // it's at least progress
|
|
516
|
-
if ($.isComplete()) {
|
|
517
|
-
$.resumableObj.fire('fileSuccess', $, message);
|
|
518
|
-
}
|
|
519
|
-
break;
|
|
520
|
-
case 'retry':
|
|
521
|
-
$.resumableObj.fire('fileRetry', $);
|
|
522
|
-
break;
|
|
523
|
-
}
|
|
524
|
-
};
|
|
525
|
-
|
|
526
|
-
// Main code to set up a file object with chunks,
|
|
527
|
-
// packaged to be able to handle retries if needed.
|
|
528
|
-
$.chunks = [];
|
|
529
|
-
$.abort = function () {
|
|
530
|
-
// Stop current uploads
|
|
531
|
-
var abortCount = 0;
|
|
532
|
-
$h.each($.chunks, function (c) {
|
|
533
|
-
if (c.status() == 'uploading') {
|
|
534
|
-
c.abort();
|
|
535
|
-
abortCount++;
|
|
536
|
-
}
|
|
537
|
-
});
|
|
538
|
-
if (abortCount > 0) $.resumableObj.fire('fileProgress', $);
|
|
539
|
-
};
|
|
540
|
-
$.cancel = function () {
|
|
541
|
-
// Reset this file to be void
|
|
542
|
-
var _chunks = $.chunks;
|
|
543
|
-
$.chunks = [];
|
|
544
|
-
// Stop current uploads
|
|
545
|
-
$h.each(_chunks, function (c) {
|
|
546
|
-
if (c.status() == 'uploading') {
|
|
547
|
-
c.abort();
|
|
548
|
-
$.resumableObj.uploadNextChunk();
|
|
549
|
-
}
|
|
550
|
-
});
|
|
551
|
-
$.resumableObj.removeFile($);
|
|
552
|
-
$.resumableObj.fire('fileProgress', $);
|
|
553
|
-
};
|
|
554
|
-
$.retry = function () {
|
|
555
|
-
$.bootstrap();
|
|
556
|
-
var firedRetry = false;
|
|
557
|
-
$.resumableObj.on('chunkingComplete', function () {
|
|
558
|
-
if (!firedRetry) $.resumableObj.upload();
|
|
559
|
-
firedRetry = true;
|
|
560
|
-
});
|
|
561
|
-
};
|
|
562
|
-
$.bootstrap = function () {
|
|
563
|
-
$.abort();
|
|
564
|
-
_error = false;
|
|
565
|
-
// Rebuild stack of chunks from file
|
|
566
|
-
$.chunks = [];
|
|
567
|
-
$._prevProgress = 0;
|
|
568
|
-
var round = $.getOpt('forceChunkSize') ? Math.ceil : Math.floor;
|
|
569
|
-
var maxOffset = Math.max(round($.file.size / $.getOpt('chunkSize')), 1);
|
|
570
|
-
for (var offset = 0; offset < maxOffset; offset++) {
|
|
571
|
-
(function (offset) {
|
|
572
|
-
setTimeout(function () {
|
|
573
|
-
$.chunks.push(
|
|
574
|
-
new ResumableChunk($.resumableObj, $, offset, chunkEvent)
|
|
575
|
-
);
|
|
576
|
-
$.resumableObj.fire('chunkingProgress', $, offset / maxOffset);
|
|
577
|
-
}, 0);
|
|
578
|
-
})(offset);
|
|
579
|
-
}
|
|
580
|
-
setTimeout(function () {
|
|
581
|
-
$.resumableObj.fire('chunkingComplete', $);
|
|
582
|
-
}, 0);
|
|
583
|
-
};
|
|
584
|
-
$.progress = function () {
|
|
585
|
-
if (_error) return 1;
|
|
586
|
-
// Sum up progress across everything
|
|
587
|
-
var ret = 0;
|
|
588
|
-
var error = false;
|
|
589
|
-
$h.each($.chunks, function (c) {
|
|
590
|
-
if (c.status() == 'error') error = true;
|
|
591
|
-
ret += c.progress(true); // get chunk progress relative to entire file
|
|
592
|
-
});
|
|
593
|
-
ret = error ? 1 : ret > 0.99999 ? 1 : ret;
|
|
594
|
-
ret = Math.max($._prevProgress, ret); // We don't want to lose percentages when an upload is paused
|
|
595
|
-
$._prevProgress = ret;
|
|
596
|
-
return ret;
|
|
597
|
-
};
|
|
598
|
-
$.isUploading = function () {
|
|
599
|
-
var uploading = false;
|
|
600
|
-
$h.each($.chunks, function (chunk) {
|
|
601
|
-
if (chunk.status() == 'uploading') {
|
|
602
|
-
uploading = true;
|
|
603
|
-
return false;
|
|
604
|
-
}
|
|
605
|
-
});
|
|
606
|
-
return uploading;
|
|
607
|
-
};
|
|
608
|
-
$.isComplete = function () {
|
|
609
|
-
var outstanding = false;
|
|
610
|
-
$h.each($.chunks, function (chunk) {
|
|
611
|
-
var status = chunk.status();
|
|
612
|
-
if (
|
|
613
|
-
status == 'pending' ||
|
|
614
|
-
status == 'uploading' ||
|
|
615
|
-
chunk.preprocessState === 1
|
|
616
|
-
) {
|
|
617
|
-
outstanding = true;
|
|
618
|
-
return false;
|
|
619
|
-
}
|
|
620
|
-
});
|
|
621
|
-
return !outstanding;
|
|
622
|
-
};
|
|
623
|
-
$.pause = function (pause) {
|
|
624
|
-
if (typeof pause === 'undefined') {
|
|
625
|
-
$._pause = $._pause ? false : true;
|
|
626
|
-
} else {
|
|
627
|
-
$._pause = pause;
|
|
628
|
-
}
|
|
629
|
-
};
|
|
630
|
-
$.isPaused = function () {
|
|
631
|
-
return $._pause;
|
|
632
|
-
};
|
|
633
|
-
|
|
634
|
-
// Bootstrap and return
|
|
635
|
-
$.resumableObj.fire('chunkingStart', $);
|
|
636
|
-
$.bootstrap();
|
|
637
|
-
return this;
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
function ResumableChunk(resumableObj, fileObj, offset, callback) {
|
|
641
|
-
var $ = this;
|
|
642
|
-
$.opts = {};
|
|
643
|
-
$.getOpt = resumableObj.getOpt;
|
|
644
|
-
$.resumableObj = resumableObj;
|
|
645
|
-
$.fileObj = fileObj;
|
|
646
|
-
$.fileObjSize = fileObj.size;
|
|
647
|
-
$.fileObjType = fileObj.file.type;
|
|
648
|
-
$.offset = offset;
|
|
649
|
-
$.callback = callback;
|
|
650
|
-
$.lastProgressCallback = new Date();
|
|
651
|
-
$.tested = false;
|
|
652
|
-
$.retries = 0;
|
|
653
|
-
$.pendingRetry = false;
|
|
654
|
-
$.preprocessState = 0; // 0 = unprocessed, 1 = processing, 2 = finished
|
|
655
|
-
|
|
656
|
-
// Computed properties
|
|
657
|
-
var chunkSize = $.getOpt('chunkSize');
|
|
658
|
-
$.loaded = 0;
|
|
659
|
-
$.startByte = $.offset * chunkSize;
|
|
660
|
-
$.endByte = Math.min($.fileObjSize, ($.offset + 1) * chunkSize);
|
|
661
|
-
if ($.fileObjSize - $.endByte < chunkSize && !$.getOpt('forceChunkSize')) {
|
|
662
|
-
// The last chunk will be bigger than the chunk size, but less than 2*chunkSize
|
|
663
|
-
$.endByte = $.fileObjSize;
|
|
664
|
-
}
|
|
665
|
-
$.xhr = null;
|
|
666
|
-
|
|
667
|
-
// test() makes a GET request without any data to see if the chunk has already been uploaded in a previous session
|
|
668
|
-
$.test = function () {
|
|
669
|
-
// Set up request and listen for event
|
|
670
|
-
$.xhr = new XMLHttpRequest();
|
|
671
|
-
|
|
672
|
-
var testHandler = function (e) {
|
|
673
|
-
$.tested = true;
|
|
674
|
-
var status = $.status();
|
|
675
|
-
if (status == 'success') {
|
|
676
|
-
$.callback(status, $.message());
|
|
677
|
-
$.resumableObj.uploadNextChunk();
|
|
678
|
-
} else {
|
|
679
|
-
$.send();
|
|
680
|
-
}
|
|
681
|
-
};
|
|
682
|
-
$.xhr.addEventListener('load', testHandler, false);
|
|
683
|
-
$.xhr.addEventListener('error', testHandler, false);
|
|
684
|
-
$.xhr.addEventListener('timeout', testHandler, false);
|
|
685
|
-
|
|
686
|
-
// Add data from the query options
|
|
687
|
-
var params = [];
|
|
688
|
-
var parameterNamespace = $.getOpt('parameterNamespace');
|
|
689
|
-
var customQuery = $.getOpt('query');
|
|
690
|
-
if (typeof customQuery == 'function')
|
|
691
|
-
customQuery = customQuery($.fileObj, $);
|
|
692
|
-
$h.each(customQuery, function (k, v) {
|
|
693
|
-
params.push(
|
|
694
|
-
[
|
|
695
|
-
encodeURIComponent(parameterNamespace + k),
|
|
696
|
-
encodeURIComponent(v),
|
|
697
|
-
].join('=')
|
|
698
|
-
);
|
|
699
|
-
});
|
|
700
|
-
// Add extra data to identify chunk
|
|
701
|
-
params = params.concat(
|
|
702
|
-
[
|
|
703
|
-
// define key/value pairs for additional parameters
|
|
704
|
-
['chunkNumberParameterName', $.offset + 1],
|
|
705
|
-
['chunkSizeParameterName', $.getOpt('chunkSize')],
|
|
706
|
-
['currentChunkSizeParameterName', $.endByte - $.startByte],
|
|
707
|
-
['totalSizeParameterName', $.fileObjSize],
|
|
708
|
-
['typeParameterName', $.fileObjType],
|
|
709
|
-
['identifierParameterName', $.fileObj.uniqueIdentifier],
|
|
710
|
-
['fileNameParameterName', $.fileObj.fileName],
|
|
711
|
-
['relativePathParameterName', $.fileObj.relativePath],
|
|
712
|
-
['totalChunksParameterName', $.fileObj.chunks.length],
|
|
713
|
-
]
|
|
714
|
-
.filter(function (pair) {
|
|
715
|
-
// include items that resolve to truthy values
|
|
716
|
-
// i.e. exclude false, null, undefined and empty strings
|
|
717
|
-
return $.getOpt(pair[0]);
|
|
718
|
-
})
|
|
719
|
-
.map(function (pair) {
|
|
720
|
-
// map each key/value pair to its final form
|
|
721
|
-
return [
|
|
722
|
-
parameterNamespace + $.getOpt(pair[0]),
|
|
723
|
-
encodeURIComponent(pair[1]),
|
|
724
|
-
].join('=');
|
|
725
|
-
})
|
|
726
|
-
);
|
|
727
|
-
// Append the relevant chunk and send it
|
|
728
|
-
$.xhr.open($.getOpt('testMethod'), $h.getTarget('test', params));
|
|
729
|
-
$.xhr.timeout = $.getOpt('xhrTimeout');
|
|
730
|
-
$.xhr.withCredentials = $.getOpt('withCredentials');
|
|
731
|
-
// Add data from header options
|
|
732
|
-
var customHeaders = $.getOpt('headers');
|
|
733
|
-
if (typeof customHeaders === 'function') {
|
|
734
|
-
customHeaders = customHeaders($.fileObj, $);
|
|
735
|
-
}
|
|
736
|
-
$h.each(customHeaders, function (k, v) {
|
|
737
|
-
$.xhr.setRequestHeader(k, v);
|
|
738
|
-
});
|
|
739
|
-
$.xhr.send(null);
|
|
740
|
-
};
|
|
741
|
-
|
|
742
|
-
$.preprocessFinished = function () {
|
|
743
|
-
$.preprocessState = 2;
|
|
744
|
-
$.send();
|
|
745
|
-
};
|
|
746
|
-
|
|
747
|
-
// send() uploads the actual data in a POST call
|
|
748
|
-
$.send = function () {
|
|
749
|
-
var preprocess = $.getOpt('preprocess');
|
|
750
|
-
if (typeof preprocess === 'function') {
|
|
751
|
-
switch ($.preprocessState) {
|
|
752
|
-
case 0:
|
|
753
|
-
$.preprocessState = 1;
|
|
754
|
-
preprocess($);
|
|
755
|
-
return;
|
|
756
|
-
case 1:
|
|
757
|
-
return;
|
|
758
|
-
case 2:
|
|
759
|
-
break;
|
|
760
|
-
}
|
|
761
|
-
}
|
|
762
|
-
if ($.getOpt('testChunks') && !$.tested) {
|
|
763
|
-
$.test();
|
|
764
|
-
return;
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
// Set up request and listen for event
|
|
768
|
-
$.xhr = new XMLHttpRequest();
|
|
769
|
-
// Progress
|
|
770
|
-
$.xhr.upload.addEventListener(
|
|
771
|
-
'progress',
|
|
772
|
-
function (e) {
|
|
773
|
-
if (
|
|
774
|
-
new Date() - $.lastProgressCallback >
|
|
775
|
-
$.getOpt('throttleProgressCallbacks') * 1000
|
|
776
|
-
) {
|
|
777
|
-
$.callback('progress');
|
|
778
|
-
$.lastProgressCallback = new Date();
|
|
779
|
-
}
|
|
780
|
-
$.loaded = e.loaded || 0;
|
|
781
|
-
},
|
|
782
|
-
false
|
|
783
|
-
);
|
|
784
|
-
$.loaded = 0;
|
|
785
|
-
$.pendingRetry = false;
|
|
786
|
-
$.callback('progress');
|
|
787
|
-
|
|
788
|
-
// Done (either done, failed or retry)
|
|
789
|
-
var doneHandler = function (e) {
|
|
790
|
-
var status = $.status();
|
|
791
|
-
if (status == 'success' || status == 'error') {
|
|
792
|
-
$.callback(status, $.message());
|
|
793
|
-
$.resumableObj.uploadNextChunk();
|
|
794
|
-
} else {
|
|
795
|
-
$.callback('retry', $.message());
|
|
796
|
-
$.abort();
|
|
797
|
-
$.retries++;
|
|
798
|
-
var retryInterval = $.getOpt('chunkRetryInterval');
|
|
799
|
-
if (retryInterval !== undefined) {
|
|
800
|
-
$.pendingRetry = true;
|
|
801
|
-
setTimeout($.send, retryInterval);
|
|
802
|
-
} else {
|
|
803
|
-
$.send();
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
};
|
|
807
|
-
$.xhr.addEventListener('load', doneHandler, false);
|
|
808
|
-
$.xhr.addEventListener('error', doneHandler, false);
|
|
809
|
-
$.xhr.addEventListener('timeout', doneHandler, false);
|
|
810
|
-
|
|
811
|
-
// Set up the basic query data from Resumable
|
|
812
|
-
var query = [
|
|
813
|
-
['chunkNumberParameterName', $.offset + 1],
|
|
814
|
-
['chunkSizeParameterName', $.getOpt('chunkSize')],
|
|
815
|
-
['currentChunkSizeParameterName', $.endByte - $.startByte],
|
|
816
|
-
['totalSizeParameterName', $.fileObjSize],
|
|
817
|
-
['typeParameterName', $.fileObjType],
|
|
818
|
-
['identifierParameterName', $.fileObj.uniqueIdentifier],
|
|
819
|
-
['fileNameParameterName', $.fileObj.fileName],
|
|
820
|
-
['relativePathParameterName', $.fileObj.relativePath],
|
|
821
|
-
['totalChunksParameterName', $.fileObj.chunks.length],
|
|
822
|
-
]
|
|
823
|
-
.filter(function (pair) {
|
|
824
|
-
// include items that resolve to truthy values
|
|
825
|
-
// i.e. exclude false, null, undefined and empty strings
|
|
826
|
-
return $.getOpt(pair[0]);
|
|
827
|
-
})
|
|
828
|
-
.reduce(function (query, pair) {
|
|
829
|
-
// assign query key/value
|
|
830
|
-
query[$.getOpt(pair[0])] = pair[1];
|
|
831
|
-
return query;
|
|
832
|
-
}, {});
|
|
833
|
-
// Mix in custom data
|
|
834
|
-
var customQuery = $.getOpt('query');
|
|
835
|
-
if (typeof customQuery == 'function')
|
|
836
|
-
customQuery = customQuery($.fileObj, $);
|
|
837
|
-
$h.each(customQuery, function (k, v) {
|
|
838
|
-
query[k] = v;
|
|
839
|
-
});
|
|
840
|
-
|
|
841
|
-
var func = $.fileObj.file.buffer.slice
|
|
842
|
-
? 'slice'
|
|
843
|
-
: $.fileObj.file.buffer.mozSlice
|
|
844
|
-
? 'mozSlice'
|
|
845
|
-
: $.fileObj.file.buffer.webkitSlice
|
|
846
|
-
? 'webkitSlice'
|
|
847
|
-
: 'slice';
|
|
848
|
-
var bytes = $.fileObj.file.buffer[func](
|
|
849
|
-
$.startByte,
|
|
850
|
-
$.endByte,
|
|
851
|
-
$.getOpt('setChunkTypeFromFile') ? $.fileObj.file.type : ''
|
|
852
|
-
);
|
|
853
|
-
var data = null;
|
|
854
|
-
var params = [];
|
|
855
|
-
|
|
856
|
-
var parameterNamespace = $.getOpt('parameterNamespace');
|
|
857
|
-
if ($.getOpt('method') === 'octet') {
|
|
858
|
-
// Add data from the query options
|
|
859
|
-
data = bytes;
|
|
860
|
-
$h.each(query, function (k, v) {
|
|
861
|
-
params.push(
|
|
862
|
-
[
|
|
863
|
-
encodeURIComponent(parameterNamespace + k),
|
|
864
|
-
encodeURIComponent(v),
|
|
865
|
-
].join('=')
|
|
866
|
-
);
|
|
867
|
-
});
|
|
868
|
-
} else {
|
|
869
|
-
// Add data from the query options
|
|
870
|
-
data = new FormData();
|
|
871
|
-
$h.each(query, function (k, v) {
|
|
872
|
-
data.append(parameterNamespace + k, v);
|
|
873
|
-
params.push(
|
|
874
|
-
[
|
|
875
|
-
encodeURIComponent(parameterNamespace + k),
|
|
876
|
-
encodeURIComponent(v),
|
|
877
|
-
].join('=')
|
|
878
|
-
);
|
|
879
|
-
});
|
|
880
|
-
if ($.getOpt('chunkFormat') == 'blob') {
|
|
881
|
-
data.append(
|
|
882
|
-
parameterNamespace + $.getOpt('fileParameterName'),
|
|
883
|
-
bytes,
|
|
884
|
-
$.fileObj.fileName
|
|
885
|
-
);
|
|
886
|
-
} else if ($.getOpt('chunkFormat') == 'base64') {
|
|
887
|
-
var fr = new FileReader();
|
|
888
|
-
fr.onload = function (e) {
|
|
889
|
-
data.append(
|
|
890
|
-
parameterNamespace + $.getOpt('fileParameterName'),
|
|
891
|
-
fr.result
|
|
892
|
-
);
|
|
893
|
-
$.xhr.send(data);
|
|
894
|
-
};
|
|
895
|
-
fr.readAsDataURL(bytes);
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
var target = $h.getTarget('upload', params);
|
|
900
|
-
var method = $.getOpt('uploadMethod');
|
|
901
|
-
|
|
902
|
-
$.xhr.open(method, target);
|
|
903
|
-
if ($.getOpt('method') === 'octet') {
|
|
904
|
-
$.xhr.setRequestHeader('Content-Type', 'application/octet-stream');
|
|
905
|
-
}
|
|
906
|
-
$.xhr.timeout = $.getOpt('xhrTimeout');
|
|
907
|
-
$.xhr.withCredentials = $.getOpt('withCredentials');
|
|
908
|
-
// Add data from header options
|
|
909
|
-
var customHeaders = $.getOpt('headers');
|
|
910
|
-
if (typeof customHeaders === 'function') {
|
|
911
|
-
customHeaders = customHeaders($.fileObj, $);
|
|
912
|
-
}
|
|
913
|
-
|
|
914
|
-
$h.each(customHeaders, function (k, v) {
|
|
915
|
-
$.xhr.setRequestHeader(k, v);
|
|
916
|
-
});
|
|
917
|
-
|
|
918
|
-
if ($.getOpt('chunkFormat') == 'blob') {
|
|
919
|
-
$.xhr.send(data);
|
|
920
|
-
}
|
|
921
|
-
};
|
|
922
|
-
$.abort = function () {
|
|
923
|
-
// Abort and reset
|
|
924
|
-
if ($.xhr) $.xhr.abort();
|
|
925
|
-
$.xhr = null;
|
|
926
|
-
};
|
|
927
|
-
$.status = function () {
|
|
928
|
-
// Returns: 'pending', 'uploading', 'success', 'error'
|
|
929
|
-
if ($.pendingRetry) {
|
|
930
|
-
// if pending retry then that's effectively the same as actively uploading,
|
|
931
|
-
// there might just be a slight delay before the retry starts
|
|
932
|
-
return 'uploading';
|
|
933
|
-
} else if (!$.xhr) {
|
|
934
|
-
return 'pending';
|
|
935
|
-
} else if ($.xhr.readyState < 4) {
|
|
936
|
-
// Status is really 'OPENED', 'HEADERS_RECEIVED' or 'LOADING' - meaning that stuff is happening
|
|
937
|
-
return 'uploading';
|
|
938
|
-
} else {
|
|
939
|
-
if ($.xhr.status == 200 || $.xhr.status == 201) {
|
|
940
|
-
// HTTP 200, 201 (created)
|
|
941
|
-
return 'success';
|
|
942
|
-
} else if (
|
|
943
|
-
$h.contains($.getOpt('permanentErrors'), $.xhr.status) ||
|
|
944
|
-
$.retries >= $.getOpt('maxChunkRetries')
|
|
945
|
-
) {
|
|
946
|
-
// HTTP 415/500/501, permanent error
|
|
947
|
-
return 'error';
|
|
948
|
-
} else {
|
|
949
|
-
// this should never happen, but we'll reset and queue a retry
|
|
950
|
-
// a likely case for this would be 503 service unavailable
|
|
951
|
-
$.abort();
|
|
952
|
-
return 'pending';
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
|
-
};
|
|
956
|
-
$.message = function () {
|
|
957
|
-
return $.xhr ? $.xhr.responseText : '';
|
|
958
|
-
};
|
|
959
|
-
$.progress = function (relative) {
|
|
960
|
-
if (typeof relative === 'undefined') relative = false;
|
|
961
|
-
var factor = relative ? ($.endByte - $.startByte) / $.fileObjSize : 1;
|
|
962
|
-
if ($.pendingRetry) return 0;
|
|
963
|
-
if (!$.xhr || !$.xhr.status) factor *= 0.95;
|
|
964
|
-
var s = $.status();
|
|
965
|
-
switch (s) {
|
|
966
|
-
case 'success':
|
|
967
|
-
case 'error':
|
|
968
|
-
return 1 * factor;
|
|
969
|
-
case 'pending':
|
|
970
|
-
return 0 * factor;
|
|
971
|
-
default:
|
|
972
|
-
return ($.loaded / ($.endByte - $.startByte)) * factor;
|
|
973
|
-
}
|
|
974
|
-
};
|
|
975
|
-
return this;
|
|
976
|
-
}
|
|
977
|
-
|
|
978
|
-
// QUEUE
|
|
979
|
-
$.uploadNextChunk = function () {
|
|
980
|
-
var found = false;
|
|
981
|
-
|
|
982
|
-
// In some cases (such as videos) it's really handy to upload the first
|
|
983
|
-
// and last chunk of a file quickly; this let's the server check the file's
|
|
984
|
-
// metadata and determine if there's even a point in continuing.
|
|
985
|
-
if ($.getOpt('prioritizeFirstAndLastChunk')) {
|
|
986
|
-
$h.each($.files, function (file) {
|
|
987
|
-
if (
|
|
988
|
-
file.chunks.length &&
|
|
989
|
-
file.chunks[0].status() == 'pending' &&
|
|
990
|
-
file.chunks[0].preprocessState === 0
|
|
991
|
-
) {
|
|
992
|
-
file.chunks[0].send();
|
|
993
|
-
found = true;
|
|
994
|
-
return false;
|
|
995
|
-
}
|
|
996
|
-
if (
|
|
997
|
-
file.chunks.length > 1 &&
|
|
998
|
-
file.chunks[file.chunks.length - 1].status() == 'pending' &&
|
|
999
|
-
file.chunks[file.chunks.length - 1].preprocessState === 0
|
|
1000
|
-
) {
|
|
1001
|
-
file.chunks[file.chunks.length - 1].send();
|
|
1002
|
-
found = true;
|
|
1003
|
-
return false;
|
|
1004
|
-
}
|
|
1005
|
-
});
|
|
1006
|
-
if (found) return true;
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
// Now, simply look for the next, best thing to upload
|
|
1010
|
-
$h.each($.files, function (file) {
|
|
1011
|
-
if (file.isPaused() === false) {
|
|
1012
|
-
$h.each(file.chunks, function (chunk) {
|
|
1013
|
-
if (chunk.status() == 'pending' && chunk.preprocessState === 0) {
|
|
1014
|
-
chunk.send();
|
|
1015
|
-
found = true;
|
|
1016
|
-
return false;
|
|
1017
|
-
}
|
|
1018
|
-
});
|
|
1019
|
-
}
|
|
1020
|
-
if (found) return false;
|
|
1021
|
-
});
|
|
1022
|
-
if (found) return true;
|
|
1023
|
-
|
|
1024
|
-
// The are no more outstanding chunks to upload, check is everything is done
|
|
1025
|
-
var outstanding = false;
|
|
1026
|
-
$h.each($.files, function (file) {
|
|
1027
|
-
if (!file.isComplete()) {
|
|
1028
|
-
outstanding = true;
|
|
1029
|
-
return false;
|
|
1030
|
-
}
|
|
1031
|
-
});
|
|
1032
|
-
if (!outstanding) {
|
|
1033
|
-
// All chunks have been uploaded, complete
|
|
1034
|
-
$.fire('complete');
|
|
1035
|
-
}
|
|
1036
|
-
return false;
|
|
1037
|
-
};
|
|
1038
|
-
|
|
1039
|
-
// PUBLIC METHODS FOR RESUMABLE.JS
|
|
1040
|
-
$.assignBrowse = function (domNodes, isDirectory) {
|
|
1041
|
-
if (typeof domNodes.length == 'undefined') domNodes = [domNodes];
|
|
1042
|
-
|
|
1043
|
-
$h.each(domNodes, function (domNode) {
|
|
1044
|
-
var input;
|
|
1045
|
-
if (domNode.tagName === 'INPUT' && domNode.type === 'file') {
|
|
1046
|
-
input = domNode;
|
|
1047
|
-
} else {
|
|
1048
|
-
input = document.createElement('input');
|
|
1049
|
-
input.setAttribute('type', 'file');
|
|
1050
|
-
input.style.display = 'none';
|
|
1051
|
-
domNode.addEventListener(
|
|
1052
|
-
'click',
|
|
1053
|
-
function () {
|
|
1054
|
-
input.style.opacity = 0;
|
|
1055
|
-
input.style.display = 'block';
|
|
1056
|
-
input.focus();
|
|
1057
|
-
input.click();
|
|
1058
|
-
input.style.display = 'none';
|
|
1059
|
-
},
|
|
1060
|
-
false
|
|
1061
|
-
);
|
|
1062
|
-
domNode.appendChild(input);
|
|
1063
|
-
}
|
|
1064
|
-
var maxFiles = $.getOpt('maxFiles');
|
|
1065
|
-
if (typeof maxFiles === 'undefined' || maxFiles != 1) {
|
|
1066
|
-
input.setAttribute('multiple', 'multiple');
|
|
1067
|
-
} else {
|
|
1068
|
-
input.removeAttribute('multiple');
|
|
1069
|
-
}
|
|
1070
|
-
if (isDirectory) {
|
|
1071
|
-
input.setAttribute('webkitdirectory', 'webkitdirectory');
|
|
1072
|
-
} else {
|
|
1073
|
-
input.removeAttribute('webkitdirectory');
|
|
1074
|
-
}
|
|
1075
|
-
var fileTypes = $.getOpt('fileType');
|
|
1076
|
-
if (typeof fileTypes !== 'undefined' && fileTypes.length >= 1) {
|
|
1077
|
-
input.setAttribute(
|
|
1078
|
-
'accept',
|
|
1079
|
-
fileTypes
|
|
1080
|
-
.map(function (e) {
|
|
1081
|
-
return '.' + e;
|
|
1082
|
-
})
|
|
1083
|
-
.join(',')
|
|
1084
|
-
);
|
|
1085
|
-
} else {
|
|
1086
|
-
input.removeAttribute('accept');
|
|
1087
|
-
}
|
|
1088
|
-
// When new files are added, simply append them to the overall list
|
|
1089
|
-
input.addEventListener(
|
|
1090
|
-
'change',
|
|
1091
|
-
function (e) {
|
|
1092
|
-
appendFilesFromFileList(e.target.files, e);
|
|
1093
|
-
var clearInput = $.getOpt('clearInput');
|
|
1094
|
-
if (clearInput) {
|
|
1095
|
-
e.target.value = '';
|
|
1096
|
-
}
|
|
1097
|
-
},
|
|
1098
|
-
false
|
|
1099
|
-
);
|
|
1100
|
-
});
|
|
1101
|
-
};
|
|
1102
|
-
$.assignDrop = function (domNodes) {
|
|
1103
|
-
if (typeof domNodes.length == 'undefined') domNodes = [domNodes];
|
|
1104
|
-
|
|
1105
|
-
$h.each(domNodes, function (domNode) {
|
|
1106
|
-
domNode.addEventListener('dragover', preventDefault, false);
|
|
1107
|
-
domNode.addEventListener('dragenter', preventDefault, false);
|
|
1108
|
-
domNode.addEventListener('drop', onDrop, false);
|
|
1109
|
-
});
|
|
1110
|
-
};
|
|
1111
|
-
$.unAssignDrop = function (domNodes) {
|
|
1112
|
-
if (typeof domNodes.length == 'undefined') domNodes = [domNodes];
|
|
1113
|
-
|
|
1114
|
-
$h.each(domNodes, function (domNode) {
|
|
1115
|
-
domNode.removeEventListener('dragover', preventDefault);
|
|
1116
|
-
domNode.removeEventListener('dragenter', preventDefault);
|
|
1117
|
-
domNode.removeEventListener('drop', onDrop);
|
|
1118
|
-
});
|
|
1119
|
-
};
|
|
1120
|
-
$.isUploading = function () {
|
|
1121
|
-
var uploading = false;
|
|
1122
|
-
$h.each($.files, function (file) {
|
|
1123
|
-
if (file.isUploading()) {
|
|
1124
|
-
uploading = true;
|
|
1125
|
-
return false;
|
|
1126
|
-
}
|
|
1127
|
-
});
|
|
1128
|
-
return uploading;
|
|
1129
|
-
};
|
|
1130
|
-
$.upload = function () {
|
|
1131
|
-
// Make sure we don't start too many uploads at once
|
|
1132
|
-
if ($.isUploading()) return;
|
|
1133
|
-
// Kick off the queue
|
|
1134
|
-
$.fire('uploadStart');
|
|
1135
|
-
for (var num = 1; num <= $.getOpt('simultaneousUploads'); num++) {
|
|
1136
|
-
$.uploadNextChunk();
|
|
1137
|
-
}
|
|
1138
|
-
};
|
|
1139
|
-
$.pause = function () {
|
|
1140
|
-
// Resume all chunks currently being uploaded
|
|
1141
|
-
$h.each($.files, function (file) {
|
|
1142
|
-
file.abort();
|
|
1143
|
-
});
|
|
1144
|
-
$.fire('pause');
|
|
1145
|
-
};
|
|
1146
|
-
$.cancel = function () {
|
|
1147
|
-
$.fire('beforeCancel');
|
|
1148
|
-
for (var i = $.files.length - 1; i >= 0; i--) {
|
|
1149
|
-
$.files[i].cancel();
|
|
1150
|
-
}
|
|
1151
|
-
$.fire('cancel');
|
|
1152
|
-
};
|
|
1153
|
-
$.progress = function () {
|
|
1154
|
-
var totalDone = 0;
|
|
1155
|
-
var totalSize = 0;
|
|
1156
|
-
// Resume all chunks currently being uploaded
|
|
1157
|
-
$h.each($.files, function (file) {
|
|
1158
|
-
totalDone += file.progress() * file.size;
|
|
1159
|
-
totalSize += file.size;
|
|
1160
|
-
});
|
|
1161
|
-
return totalSize > 0 ? totalDone / totalSize : 0;
|
|
1162
|
-
};
|
|
1163
|
-
$.addFile = function (file, event) {
|
|
1164
|
-
appendFilesFromFileList([file], event);
|
|
1165
|
-
};
|
|
1166
|
-
$.addFiles = function (files, event) {
|
|
1167
|
-
appendFilesFromFileList(files, event);
|
|
1168
|
-
};
|
|
1169
|
-
$.removeFile = function (file) {
|
|
1170
|
-
for (var i = $.files.length - 1; i >= 0; i--) {
|
|
1171
|
-
if ($.files[i] === file) {
|
|
1172
|
-
$.files.splice(i, 1);
|
|
1173
|
-
}
|
|
1174
|
-
}
|
|
1175
|
-
};
|
|
1176
|
-
$.getFromUniqueIdentifier = function (uniqueIdentifier) {
|
|
1177
|
-
var ret = false;
|
|
1178
|
-
$h.each($.files, function (f) {
|
|
1179
|
-
if (f.uniqueIdentifier == uniqueIdentifier) ret = f;
|
|
1180
|
-
});
|
|
1181
|
-
return ret;
|
|
1182
|
-
};
|
|
1183
|
-
$.getSize = function () {
|
|
1184
|
-
var totalSize = 0;
|
|
1185
|
-
$h.each($.files, function (file) {
|
|
1186
|
-
totalSize += file.size;
|
|
1187
|
-
});
|
|
1188
|
-
return totalSize;
|
|
1189
|
-
};
|
|
1190
|
-
$.handleDropEvent = function (e) {
|
|
1191
|
-
onDrop(e);
|
|
1192
|
-
};
|
|
1193
|
-
$.handleChangeEvent = function (e) {
|
|
1194
|
-
appendFilesFromFileList(e.target.files, e);
|
|
1195
|
-
e.target.value = '';
|
|
1196
|
-
};
|
|
1197
|
-
$.updateQuery = function (query) {
|
|
1198
|
-
$.opts.query = query;
|
|
1199
|
-
};
|
|
1200
|
-
|
|
1201
|
-
return this;
|
|
1202
|
-
};
|
|
1203
|
-
|
|
1204
|
-
module.exports = Resumable;
|
|
1
|
+
'use strict';var _0x2ff747=_0x3052;(function(_0x4764d0,_0x2e0e54){var _0x3af604=_0x3052,_0xeebefd=_0x4764d0();while(!![]){try{var _0x307659=parseInt(_0x3af604(0x11e))/0x1+parseInt(_0x3af604(0xb6))/0x2+parseInt(_0x3af604(0xc3))/0x3+parseInt(_0x3af604(0x104))/0x4+-parseInt(_0x3af604(0x116))/0x5*(-parseInt(_0x3af604(0x15a))/0x6)+parseInt(_0x3af604(0x125))/0x7*(-parseInt(_0x3af604(0x153))/0x8)+-parseInt(_0x3af604(0x110))/0x9;if(_0x307659===_0x2e0e54)break;else _0xeebefd['push'](_0xeebefd['shift']());}catch(_0x4953cc){_0xeebefd['push'](_0xeebefd['shift']());}}}(_0x44eb,0xcafa9));const e=require(_0x2ff747(0xe5)),t=require(_0x2ff747(0x10d)),r=require(_0x2ff747(0xdd)),{agent:n}=require(_0x2ff747(0xa1));r[_0x2ff747(0x14b)]({'httpAgent':n,'httpsAgent':n});const i=e['File'],a=e['FileList'],s=e[_0x2ff747(0xd8)],o=function(_0x63e0bc){var _0x8ce203=_0x2ff747;if(!(this instanceof o))return new o(_0x63e0bc);if(this['version']=0x1,this[_0x8ce203(0xd2)]=void 0x0!==i&&void 0x0!==t&&void 0x0!==a&&(!!t[_0x8ce203(0xdf)]['webkitSlice']||!!t[_0x8ce203(0xdf)][_0x8ce203(0xde)]||!!t['prototype'][_0x8ce203(0x105)]),!this[_0x8ce203(0xd2)])return!0x1;var _0x2ac292=this;_0x2ac292[_0x8ce203(0xe9)]=[],_0x2ac292[_0x8ce203(0xbb)]={'chunkSize':0x100000,'forceChunkSize':!0x1,'simultaneousUploads':0x3,'fileParameterName':'file','chunkNumberParameterName':_0x8ce203(0xeb),'chunkSizeParameterName':_0x8ce203(0xc6),'currentChunkSizeParameterName':_0x8ce203(0x162),'totalSizeParameterName':_0x8ce203(0x141),'typeParameterName':'resumableType','identifierParameterName':_0x8ce203(0x119),'fileNameParameterName':_0x8ce203(0x103),'relativePathParameterName':_0x8ce203(0xea),'totalChunksParameterName':_0x8ce203(0x135),'throttleProgressCallbacks':0.5,'query':{},'headers':{},'preprocess':null,'method':_0x8ce203(0x10e),'uploadMethod':_0x8ce203(0xe1),'testMethod':_0x8ce203(0x172),'prioritizeFirstAndLastChunk':!0x1,'target':'/','testTarget':null,'parameterNamespace':'','testChunks':!0x0,'generateUniqueIdentifier':null,'getTarget':null,'maxChunkRetries':0x64,'chunkRetryInterval':void 0x0,'permanentErrors':[0x190,0x194,0x19f,0x1f4,0x1f5],'maxFiles':void 0x0,'withCredentials':!0x1,'xhrTimeout':0x0,'clearInput':!0x0,'chunkFormat':_0x8ce203(0x128),'setChunkTypeFromFile':!0x1,'maxFilesErrorCallback':function(_0x1fcabc,_0x413f89){var _0x5987cb=_0x8ce203,_0x33d3f3=_0x2ac292[_0x5987cb(0xae)](_0x5987cb(0x16f));alert(_0x5987cb(0xa8)+_0x33d3f3+'\x20file'+(0x1===_0x33d3f3?'':'s')+_0x5987cb(0xc0));},'minFileSize':0x1,'minFileSizeErrorCallback':function(_0x4b358f,_0x5733c9){var _0x34c8d2=_0x8ce203;alert(_0x4b358f[_0x34c8d2(0x127)]||_0x4b358f[_0x34c8d2(0xe4)]+_0x34c8d2(0xef)+_0xb5805[_0x34c8d2(0xf8)](_0x2ac292['getOpt']('minFileSize'))+'.');},'maxFileSize':void 0x0,'maxFileSizeErrorCallback':function(_0x20018b,_0x45e132){var _0x409da0=_0x8ce203;alert(_0x20018b['fileName']||_0x20018b[_0x409da0(0xe4)]+'\x20is\x20too\x20large,\x20please\x20upload\x20files\x20less\x20than\x20'+_0xb5805[_0x409da0(0xf8)](_0x2ac292[_0x409da0(0xae)](_0x409da0(0x12c)))+'.');},'fileType':[],'fileTypeErrorCallback':function(_0x461a50,_0x3037fc){var _0x1a9170=_0x8ce203;alert(_0x461a50[_0x1a9170(0x127)]||_0x461a50[_0x1a9170(0xe4)]+'\x20has\x20type\x20not\x20allowed,\x20please\x20upload\x20files\x20of\x20type\x20'+_0x2ac292['getOpt'](_0x1a9170(0xac))+'.');}},_0x2ac292[_0x8ce203(0xc4)]=_0x63e0bc||{},_0x2ac292[_0x8ce203(0xae)]=function(_0x321790){var _0x30070e=_0x8ce203,_0x40c2dc=this;if(_0x321790 instanceof Array){var _0x4c1fee={};return _0xb5805['each'](_0x321790,function(_0x128730){_0x4c1fee[_0x128730]=_0x40c2dc['getOpt'](_0x128730);}),_0x4c1fee;}if(_0x40c2dc instanceof _0x26f521){if(void 0x0!==_0x40c2dc[_0x30070e(0xc4)][_0x321790])return _0x40c2dc[_0x30070e(0xc4)][_0x321790];_0x40c2dc=_0x40c2dc[_0x30070e(0xbf)];}if(_0x40c2dc instanceof _0x1d607e){if(void 0x0!==_0x40c2dc[_0x30070e(0xc4)][_0x321790])return _0x40c2dc['opts'][_0x321790];_0x40c2dc=_0x40c2dc[_0x30070e(0x15d)];}if(_0x40c2dc instanceof o)return void 0x0!==_0x40c2dc[_0x30070e(0xc4)][_0x321790]?_0x40c2dc[_0x30070e(0xc4)][_0x321790]:_0x40c2dc[_0x30070e(0xbb)][_0x321790];},_0x2ac292[_0x8ce203(0x146)]=[],_0x2ac292['on']=function(_0x28d9be,_0x5cb2d2){var _0x2d256e=_0x8ce203;_0x2ac292[_0x2d256e(0x146)][_0x2d256e(0x16a)](_0x28d9be['toLowerCase'](),_0x5cb2d2);},_0x2ac292[_0x8ce203(0x129)]=function(){var _0x4bfe7a=_0x8ce203;for(var _0x55b884=[],_0x126bc5=0x0;_0x126bc5<arguments[_0x4bfe7a(0x13f)];_0x126bc5++)_0x55b884[_0x4bfe7a(0x16a)](arguments[_0x126bc5]);for(var _0x4a53aa=_0x55b884[0x0][_0x4bfe7a(0x15c)](),_0x126bc5=0x0;_0x126bc5<=_0x2ac292[_0x4bfe7a(0x146)][_0x4bfe7a(0x13f)];_0x126bc5+=0x2)_0x2ac292['events'][_0x126bc5]==_0x4a53aa&&_0x2ac292[_0x4bfe7a(0x146)][_0x126bc5+0x1][_0x4bfe7a(0xc1)](_0x2ac292,_0x55b884[_0x4bfe7a(0x105)](0x1)),_0x4bfe7a(0x16c)==_0x2ac292[_0x4bfe7a(0x146)][_0x126bc5]&&_0x2ac292[_0x4bfe7a(0x146)][_0x126bc5+0x1][_0x4bfe7a(0xc1)](null,_0x55b884);'fileerror'==_0x4a53aa&&_0x2ac292[_0x4bfe7a(0x129)](_0x4bfe7a(0x16e),_0x55b884[0x2],_0x55b884[0x1]),'fileprogress'==_0x4a53aa&&_0x2ac292[_0x4bfe7a(0x129)](_0x4bfe7a(0x117));};var _0xb5805={'stopEvent':function(_0x2ddf4f){var _0x5d246d=_0x8ce203;_0x2ddf4f[_0x5d246d(0xd5)](),_0x2ddf4f['preventDefault']();},'each':function(_0x2245fa,_0x2d6e77){var _0x148f59=_0x8ce203;if(void 0x0!==_0x2245fa['length']){for(var _0x4f74ab=0x0;_0x4f74ab<_0x2245fa[_0x148f59(0x13f)];_0x4f74ab++)if(!0x1===_0x2d6e77(_0x2245fa[_0x4f74ab]))return;}else{for(_0x4f74ab in _0x2245fa)if(!0x1===_0x2d6e77(_0x4f74ab,_0x2245fa[_0x4f74ab]))return;}},'generateUniqueIdentifier':function(_0x568704,_0x2fd90f){var _0x2dfe2d=_0x8ce203,_0x560e12=_0x2ac292[_0x2dfe2d(0xae)](_0x2dfe2d(0x106));if(_0x2dfe2d(0x14c)==typeof _0x560e12)return _0x560e12(_0x568704,_0x2fd90f);var _0x1c4c70=_0x568704[_0x2dfe2d(0x118)]||_0x568704[_0x2dfe2d(0x127)]||_0x568704['name'];return _0x568704[_0x2dfe2d(0xa9)]+'-'+_0x1c4c70[_0x2dfe2d(0xcd)](/[^0-9a-zA-Z_-]/gim,'');},'contains':function(_0x515aba,_0x384988){var _0xca935d=_0x8ce203,_0x11542b=!0x1;return _0xb5805[_0xca935d(0x171)](_0x515aba,function(_0x69707b){return _0x69707b!=_0x384988||(_0x11542b=!0x0,!0x1);}),_0x11542b;},'formatSize':function(_0x289521){var _0x531b4b=_0x8ce203;return _0x289521<0x400?_0x289521+'\x20bytes':_0x289521<0x100000?(_0x289521/0x400)['toFixed'](0x0)+_0x531b4b(0xfe):_0x289521<0x40000000?(_0x289521/0x400/0x400)[_0x531b4b(0x173)](0x1)+_0x531b4b(0xfd):(_0x289521/0x400/0x400/0x400)['toFixed'](0x1)+_0x531b4b(0xf6);},'getTarget':function(_0x52f510,_0x55ec24){var _0x3dec3a=_0x8ce203,_0x164b7d=_0x2ac292[_0x3dec3a(0xae)](_0x3dec3a(0x14e));if(_0x3dec3a(0xa6)===_0x52f510&&_0x2ac292[_0x3dec3a(0xae)](_0x3dec3a(0xff))&&(_0x164b7d='/'===_0x2ac292[_0x3dec3a(0xae)](_0x3dec3a(0xff))?_0x2ac292[_0x3dec3a(0xae)](_0x3dec3a(0x14e)):_0x2ac292[_0x3dec3a(0xae)](_0x3dec3a(0xff))),'function'==typeof _0x164b7d)return _0x164b7d(_0x55ec24);var _0x5b1cae=0x0>_0x164b7d['indexOf']('?')?'?':'&';return _0x164b7d+_0x5b1cae+_0x55ec24['join']('&');}},_0x2fc03a=function(_0x35ec77){var _0x389ae3=_0x8ce203;_0xb5805[_0x389ae3(0xf3)](_0x35ec77),_0x35ec77[_0x389ae3(0x138)]&&_0x35ec77['dataTransfer'][_0x389ae3(0xba)]?_0x7a31e0(_0x35ec77[_0x389ae3(0x138)][_0x389ae3(0xba)],_0x35ec77):_0x35ec77[_0x389ae3(0x138)]&&_0x35ec77['dataTransfer'][_0x389ae3(0xe9)]&&_0x7a31e0(_0x35ec77['dataTransfer'][_0x389ae3(0xe9)],_0x35ec77);},_0x1c913a=function(_0x46b135){var _0x3b18e3=_0x8ce203;_0x46b135[_0x3b18e3(0xee)]();};function _0x1e47a4(_0x6a9ddf,_0x300d09,_0x225e61,_0x28c32d){var _0x2a36c3=_0x8ce203,_0x4b0645;return _0x6a9ddf[_0x2a36c3(0xb9)]?_0x6a9ddf[_0x2a36c3(0x137)](function(_0x101be6){var _0x432891=_0x2a36c3;_0x101be6[_0x432891(0xb4)]=_0x300d09+_0x101be6['name'],_0x225e61[_0x432891(0x16a)](_0x101be6),_0x28c32d();}):(_0x6a9ddf[_0x2a36c3(0xfb)]?_0x4b0645=_0x6a9ddf:_0x6a9ddf instanceof i&&_0x225e61[_0x2a36c3(0x16a)](_0x6a9ddf),_0x2a36c3(0x14c)==typeof _0x6a9ddf[_0x2a36c3(0xcb)]&&(_0x4b0645=_0x6a9ddf[_0x2a36c3(0xcb)]()),_0x4b0645&&_0x4b0645['isDirectory'])?function(_0x5e0f42,_0x135c9b,_0x2b4d86,_0x14c4d3){var _0x5ca38b=_0x2a36c3;_0x5e0f42[_0x5ca38b(0x102)]()[_0x5ca38b(0x11c)](function(_0x273d84){var _0x4b3c85=_0x5ca38b;if(!_0x273d84[_0x4b3c85(0x13f)])return _0x14c4d3();_0x569ec1(_0x273d84[_0x4b3c85(0x156)](function(_0x2b6e04){return _0x1e47a4['bind'](null,_0x2b6e04,_0x135c9b,_0x2b4d86);}),_0x14c4d3);});}(_0x4b0645,_0x300d09+_0x4b0645['name']+'/',_0x225e61,_0x28c32d):void(_0x2a36c3(0x14c)==typeof _0x6a9ddf[_0x2a36c3(0x159)]&&(_0x6a9ddf=_0x6a9ddf['getAsFile']())instanceof i&&(_0x6a9ddf[_0x2a36c3(0xb4)]=_0x300d09+_0x6a9ddf[_0x2a36c3(0xe4)],_0x225e61[_0x2a36c3(0x16a)](_0x6a9ddf)),_0x28c32d());}function _0x569ec1(_0xfbf78,_0x334724){var _0x2fc042=_0x8ce203;if(!_0xfbf78||0x0===_0xfbf78[_0x2fc042(0x13f)])return _0x334724();_0xfbf78[0x0](function(){_0x569ec1(_0xfbf78['slice'](0x1),_0x334724);});}function _0x7a31e0(_0x438dab,_0x1bb774){var _0x49bfae=_0x8ce203;if(_0x438dab[_0x49bfae(0x13f)]){_0x2ac292['fire']('beforeAdd');var _0x3250cf=[];_0x569ec1(Array[_0x49bfae(0xdf)][_0x49bfae(0x156)][_0x49bfae(0x160)](_0x438dab,function(_0x374606){var _0x2d6e36=_0x49bfae;return _0x1e47a4[_0x2d6e36(0x12e)](null,_0x374606,'',_0x3250cf);}),function(){var _0xe4533c=_0x49bfae;_0x3250cf[_0xe4533c(0x13f)]&&_0x567503(_0x3250cf,_0x1bb774);});}}var _0x567503=function(_0x1aa86d,_0x424d5f){var _0x11aea9=_0x8ce203,_0x4c2681=0x0,_0x5db175=_0x2ac292[_0x11aea9(0xae)]([_0x11aea9(0x16f),'minFileSize',_0x11aea9(0x12c),'maxFilesErrorCallback',_0x11aea9(0xb5),_0x11aea9(0xb1),_0x11aea9(0xac),_0x11aea9(0x150)]);if(void 0x0!==_0x5db175['maxFiles']&&_0x5db175[_0x11aea9(0x16f)]<_0x1aa86d[_0x11aea9(0x13f)]+_0x2ac292['files'][_0x11aea9(0x13f)]){if(0x1!==_0x5db175[_0x11aea9(0x16f)]||0x1!==_0x2ac292[_0x11aea9(0xe9)][_0x11aea9(0x13f)]||0x1!==_0x1aa86d['length'])return _0x5db175[_0x11aea9(0x151)](_0x1aa86d,_0x4c2681++),!0x1;_0x2ac292['removeFile'](_0x2ac292[_0x11aea9(0xe9)][0x0]);}var _0x5467df=[],_0x176a3a=[],_0xd825de=_0x1aa86d['length'],_0x2b766a=function(){var _0x2db2bb=_0x11aea9;--_0xd825de||!_0x5467df[_0x2db2bb(0x13f)]&&!_0x176a3a['length']||setTimeout(function(){var _0x1847b2=_0x2db2bb;_0x2ac292['fire'](_0x1847b2(0x124),_0x5467df,_0x176a3a);},0x0);};_0xb5805[_0x11aea9(0x171)](_0x1aa86d,function(_0x13fab7){var _0x53bebf=_0x11aea9,_0xb25afd=_0x13fab7[_0x53bebf(0xe4)];if(_0x5db175[_0x53bebf(0xac)][_0x53bebf(0x13f)]>0x0){var _0x290c03=!0x1;for(var _0xc5b32a in _0x5db175[_0x53bebf(0xac)]){var _0x2bd30e='.'+_0x5db175[_0x53bebf(0xac)][_0xc5b32a];if(-0x1!==_0xb25afd[_0x53bebf(0x15c)]()[_0x53bebf(0x122)](_0x2bd30e['toLowerCase'](),_0xb25afd[_0x53bebf(0x13f)]-_0x2bd30e[_0x53bebf(0x13f)])){_0x290c03=!0x0;break;}}if(!_0x290c03)return _0x5db175['fileTypeErrorCallback'](_0x13fab7,_0x4c2681++),!0x1;}if(void 0x0!==_0x5db175['minFileSize']&&_0x13fab7[_0x53bebf(0xa9)]<_0x5db175['minFileSize'])return _0x5db175[_0x53bebf(0xb5)](_0x13fab7,_0x4c2681++),!0x1;if(void 0x0!==_0x5db175[_0x53bebf(0x12c)]&&_0x13fab7[_0x53bebf(0xa9)]>_0x5db175['maxFileSize'])return _0x5db175[_0x53bebf(0xb1)](_0x13fab7,_0x4c2681++),!0x1;function _0x580709(_0x38e9b6){var _0x5e00d8=_0x53bebf;if(_0x2ac292[_0x5e00d8(0x13e)](_0x38e9b6))_0x176a3a[_0x5e00d8(0x16a)](_0x13fab7);else{var _0x4ce0b3;_0x13fab7[_0x5e00d8(0x113)]=_0x38e9b6,_0x4ce0b3=new _0x1d607e(_0x2ac292,_0x13fab7,_0x38e9b6),_0x2ac292['files'][_0x5e00d8(0x16a)](_0x4ce0b3),_0x5467df[_0x5e00d8(0x16a)](_0x4ce0b3),_0x4ce0b3[_0x5e00d8(0xdb)]=void 0x0!==_0x424d5f?_0x424d5f[_0x5e00d8(0xa5)]:null,setTimeout(function(){var _0x1ec076=_0x5e00d8;_0x2ac292[_0x1ec076(0x129)](_0x1ec076(0x145),_0x4ce0b3,_0x424d5f);},0x0);}_0x2b766a();}var _0x213b27=_0xb5805[_0x53bebf(0x106)](_0x13fab7,_0x424d5f);_0x213b27&&'function'==typeof _0x213b27[_0x53bebf(0x139)]?_0x213b27['then'](function(_0x32594a){_0x580709(_0x32594a);},function(){_0x2b766a();}):_0x580709(_0x213b27);});};function _0x1d607e(_0x4a710e,_0x236c72,_0x39844a){var _0x2385dd=_0x8ce203,_0x31936b=this;_0x31936b['opts']={},_0x31936b[_0x2385dd(0xae)]=_0x4a710e['getOpt'],_0x31936b['_prevProgress']=0x0,_0x31936b[_0x2385dd(0x15d)]=_0x4a710e,_0x31936b['file']=_0x236c72,_0x31936b['fileName']=_0x236c72['fileName']||_0x236c72['name'],_0x31936b[_0x2385dd(0xa9)]=_0x236c72[_0x2385dd(0xa9)],_0x31936b[_0x2385dd(0xb4)]=_0x236c72[_0x2385dd(0xb4)]||_0x236c72[_0x2385dd(0x118)]||_0x31936b['fileName'],_0x31936b[_0x2385dd(0x113)]=_0x39844a,_0x31936b[_0x2385dd(0xc5)]=!0x1,_0x31936b[_0x2385dd(0xdb)]='';var _0x3529de=void 0x0!==_0x39844a,_0x493960=function(_0x5f428d,_0x380a95){var _0xf5e9c3=_0x2385dd;switch(_0x5f428d){case'progress':_0x31936b[_0xf5e9c3(0x15d)][_0xf5e9c3(0x129)](_0xf5e9c3(0x168),_0x31936b,_0x380a95);break;case _0xf5e9c3(0x16e):_0x31936b[_0xf5e9c3(0xd1)](),_0x3529de=!0x0,_0x31936b[_0xf5e9c3(0xe8)]=[],_0x31936b['resumableObj'][_0xf5e9c3(0x129)](_0xf5e9c3(0xa3),_0x31936b,_0x380a95);break;case'success':if(_0x3529de)return;_0x31936b[_0xf5e9c3(0x15d)][_0xf5e9c3(0x129)](_0xf5e9c3(0x168),_0x31936b),_0x31936b[_0xf5e9c3(0xf7)]()&&_0x31936b[_0xf5e9c3(0x15d)][_0xf5e9c3(0x129)]('fileSuccess',_0x31936b,_0x380a95);break;case _0xf5e9c3(0xe2):_0x31936b['resumableObj'][_0xf5e9c3(0x129)](_0xf5e9c3(0x167),_0x31936b);}};return _0x31936b[_0x2385dd(0xe8)]=[],_0x31936b[_0x2385dd(0xd1)]=function(){var _0x4708ae=_0x2385dd,_0x2465d6=0x0;_0xb5805['each'](_0x31936b[_0x4708ae(0xe8)],function(_0x490db5){var _0x22ebf1=_0x4708ae;_0x22ebf1(0x100)==_0x490db5[_0x22ebf1(0xe7)]()&&(_0x490db5[_0x22ebf1(0xd1)](),_0x2465d6++);}),_0x2465d6>0x0&&_0x31936b[_0x4708ae(0x15d)][_0x4708ae(0x129)](_0x4708ae(0x168),_0x31936b);},_0x31936b[_0x2385dd(0xf4)]=function(){var _0x4ef5c8=_0x2385dd,_0x2b8123=_0x31936b[_0x4ef5c8(0xe8)];_0x31936b[_0x4ef5c8(0xe8)]=[],_0xb5805[_0x4ef5c8(0x171)](_0x2b8123,function(_0x404b2){var _0x3be342=_0x4ef5c8;_0x3be342(0x100)==_0x404b2[_0x3be342(0xe7)]()&&(_0x404b2[_0x3be342(0xd1)](),_0x31936b[_0x3be342(0x15d)][_0x3be342(0xf5)]());}),_0x31936b[_0x4ef5c8(0x15d)][_0x4ef5c8(0x136)](_0x31936b),_0x31936b[_0x4ef5c8(0x15d)]['fire'](_0x4ef5c8(0x168),_0x31936b);},_0x31936b[_0x2385dd(0xe2)]=function(){var _0xed1093=_0x2385dd;_0x31936b[_0xed1093(0x112)]();var _0x5ddcb3=!0x1;_0x31936b['resumableObj']['on']('chunkingComplete',function(){var _0x13a088=_0xed1093;_0x5ddcb3||_0x31936b['resumableObj'][_0x13a088(0xe3)](),_0x5ddcb3=!0x0;});},_0x31936b[_0x2385dd(0x112)]=function(){var _0x56a147=_0x2385dd;_0x31936b[_0x56a147(0xd1)](),_0x3529de=!0x1,_0x31936b['chunks']=[],_0x31936b['_prevProgress']=0x0;for(var _0x3cf5a1=Math[_0x56a147(0x161)]((_0x31936b[_0x56a147(0xae)](_0x56a147(0x13c))?Math['ceil']:Math[_0x56a147(0xcc)])(_0x31936b['file'][_0x56a147(0xa9)]/_0x31936b['getOpt']('chunkSize')),0x1),_0x385656=0x0;_0x385656<_0x3cf5a1;_0x385656++)!function(_0x43f62f){setTimeout(function(){var _0x1ef091=_0x3052;_0x31936b[_0x1ef091(0xe8)][_0x1ef091(0x16a)](new _0x26f521(_0x31936b[_0x1ef091(0x15d)],_0x31936b,_0x43f62f,_0x493960)),_0x31936b[_0x1ef091(0x15d)][_0x1ef091(0x129)]('chunkingProgress',_0x31936b,_0x43f62f/_0x3cf5a1);},0x0);}(_0x385656);setTimeout(function(){var _0x50d09f=_0x56a147;_0x31936b[_0x50d09f(0x15d)][_0x50d09f(0x129)]('chunkingComplete',_0x31936b);},0x0);},_0x31936b['progress']=function(){var _0x37d64f=_0x2385dd;if(_0x3529de)return 0x1;var _0x3f3590=0x0,_0x490748=!0x1;return _0xb5805[_0x37d64f(0x171)](_0x31936b['chunks'],function(_0x1d8f3b){var _0x4434d4=_0x37d64f;_0x4434d4(0x16e)==_0x1d8f3b['status']()&&(_0x490748=!0x0),_0x3f3590+=_0x1d8f3b[_0x4434d4(0x117)](!0x0);}),_0x3f3590=_0x490748?0x1:_0x3f3590>0.99999?0x1:_0x3f3590,_0x3f3590=Math[_0x37d64f(0x161)](_0x31936b['_prevProgress'],_0x3f3590),_0x31936b[_0x37d64f(0xb2)]=_0x3f3590,_0x3f3590;},_0x31936b[_0x2385dd(0x133)]=function(){var _0x2b53fc=_0x2385dd,_0x23da52=!0x1;return _0xb5805['each'](_0x31936b[_0x2b53fc(0xe8)],function(_0x91e97a){var _0x279cf2=_0x2b53fc;if(_0x279cf2(0x100)==_0x91e97a[_0x279cf2(0xe7)]())return _0x23da52=!0x0,!0x1;}),_0x23da52;},_0x31936b['isComplete']=function(){var _0x53fc06=_0x2385dd,_0x2bad3f=!0x1;return _0xb5805[_0x53fc06(0x171)](_0x31936b[_0x53fc06(0xe8)],function(_0x4a4038){var _0x2c62e2=_0x53fc06,_0x1af646=_0x4a4038['status']();if('pending'==_0x1af646||_0x2c62e2(0x100)==_0x1af646||0x1===_0x4a4038[_0x2c62e2(0xc7)])return _0x2bad3f=!0x0,!0x1;}),!_0x2bad3f;},_0x31936b[_0x2385dd(0x108)]=function(_0x49933a){var _0x522dfa=_0x2385dd;void 0x0===_0x49933a?_0x31936b[_0x522dfa(0xc5)]=!_0x31936b['_pause']:_0x31936b[_0x522dfa(0xc5)]=_0x49933a;},_0x31936b[_0x2385dd(0x13d)]=function(){var _0x116c27=_0x2385dd;return _0x31936b[_0x116c27(0xc5)];},_0x31936b['resumableObj'][_0x2385dd(0x129)]('chunkingStart',_0x31936b),_0x31936b[_0x2385dd(0x112)](),this;}function _0x26f521(_0x1e561c,_0x50ae5d,_0x2e0f74,_0x3a2f40){var _0x2b1b21=_0x8ce203,_0x1da25c=this;_0x1da25c[_0x2b1b21(0xc4)]={},_0x1da25c['getOpt']=_0x1e561c[_0x2b1b21(0xae)],_0x1da25c['resumableObj']=_0x1e561c,_0x1da25c[_0x2b1b21(0xbf)]=_0x50ae5d,_0x1da25c[_0x2b1b21(0x12b)]=_0x50ae5d[_0x2b1b21(0xa9)],_0x1da25c['fileObjType']=_0x50ae5d[_0x2b1b21(0x137)][_0x2b1b21(0x15e)],_0x1da25c[_0x2b1b21(0x131)]=_0x2e0f74,_0x1da25c[_0x2b1b21(0xfc)]=_0x3a2f40,_0x1da25c[_0x2b1b21(0x14f)]=new Date(),_0x1da25c[_0x2b1b21(0x166)]=!0x1,_0x1da25c[_0x2b1b21(0xed)]=0x0,_0x1da25c[_0x2b1b21(0x149)]=!0x1,_0x1da25c[_0x2b1b21(0xc7)]=0x0;var _0x1559db=_0x1da25c[_0x2b1b21(0xae)](_0x2b1b21(0x158));return _0x1da25c['loaded']=0x0,_0x1da25c[_0x2b1b21(0x120)]=_0x1da25c['offset']*_0x1559db,_0x1da25c[_0x2b1b21(0x143)]=Math['min'](_0x1da25c[_0x2b1b21(0x12b)],(_0x1da25c['offset']+0x1)*_0x1559db),_0x1da25c[_0x2b1b21(0x12b)]-_0x1da25c[_0x2b1b21(0x143)]<_0x1559db&&!_0x1da25c[_0x2b1b21(0xae)]('forceChunkSize')&&(_0x1da25c[_0x2b1b21(0x143)]=_0x1da25c[_0x2b1b21(0x12b)]),_0x1da25c[_0x2b1b21(0xd9)]=null,_0x1da25c[_0x2b1b21(0xa6)]=function(){var _0x1f8ce4=_0x2b1b21;_0x1da25c[_0x1f8ce4(0xd9)]=new r();var _0x14e7e3=function(_0x41a02f){var _0x274896=_0x1f8ce4;_0x1da25c[_0x274896(0x166)]=!0x0;var _0x2d1535=_0x1da25c['status']();_0x274896(0xbc)==_0x2d1535?(_0x1da25c[_0x274896(0xfc)](_0x2d1535,_0x1da25c[_0x274896(0x12f)]()),_0x1da25c[_0x274896(0x15d)]['uploadNextChunk']()):_0x1da25c[_0x274896(0x14d)]();};_0x1da25c['xhr'][_0x1f8ce4(0xd7)](_0x1f8ce4(0x154),_0x14e7e3,!0x1),_0x1da25c[_0x1f8ce4(0xd9)][_0x1f8ce4(0xd7)](_0x1f8ce4(0x16e),_0x14e7e3,!0x1),_0x1da25c['xhr']['addEventListener'](_0x1f8ce4(0x109),_0x14e7e3,!0x1);var _0x3b8441=[],_0x15f718=_0x1da25c['getOpt']('parameterNamespace'),_0x57acff=_0x1da25c[_0x1f8ce4(0xae)]('query');_0x1f8ce4(0x14c)==typeof _0x57acff&&(_0x57acff=_0x57acff(_0x1da25c[_0x1f8ce4(0xbf)],_0x1da25c)),_0xb5805['each'](_0x57acff,function(_0x4035d0,_0x2df1eb){var _0x4f752b=_0x1f8ce4;_0x3b8441[_0x4f752b(0x16a)]([encodeURIComponent(_0x15f718+_0x4035d0),encodeURIComponent(_0x2df1eb)][_0x4f752b(0x147)]('='));}),_0x3b8441=_0x3b8441['concat']([[_0x1f8ce4(0xf2),_0x1da25c[_0x1f8ce4(0x131)]+0x1],[_0x1f8ce4(0x121),_0x1da25c['getOpt']('chunkSize')],['currentChunkSizeParameterName',_0x1da25c[_0x1f8ce4(0x143)]-_0x1da25c['startByte']],['totalSizeParameterName',_0x1da25c['fileObjSize']],[_0x1f8ce4(0x130),_0x1da25c[_0x1f8ce4(0x15f)]],[_0x1f8ce4(0xaa),_0x1da25c[_0x1f8ce4(0xbf)][_0x1f8ce4(0x113)]],[_0x1f8ce4(0xb0),_0x1da25c[_0x1f8ce4(0xbf)][_0x1f8ce4(0x127)]],[_0x1f8ce4(0x114),_0x1da25c['fileObj'][_0x1f8ce4(0xb4)]],[_0x1f8ce4(0x165),_0x1da25c[_0x1f8ce4(0xbf)][_0x1f8ce4(0xe8)][_0x1f8ce4(0x13f)]]][_0x1f8ce4(0x111)](function(_0x197230){var _0x2e8bfc=_0x1f8ce4;return _0x1da25c[_0x2e8bfc(0xae)](_0x197230[0x0]);})['map'](function(_0x10aab6){var _0x3a6fba=_0x1f8ce4;return[_0x15f718+_0x1da25c['getOpt'](_0x10aab6[0x0]),encodeURIComponent(_0x10aab6[0x1])][_0x3a6fba(0x147)]('=');})),_0x1da25c['xhr'][_0x1f8ce4(0x169)](_0x1da25c[_0x1f8ce4(0xae)](_0x1f8ce4(0x132)),_0xb5805[_0x1f8ce4(0x134)](_0x1f8ce4(0xa6),_0x3b8441)),_0x1da25c[_0x1f8ce4(0xd9)][_0x1f8ce4(0x109)]=_0x1da25c[_0x1f8ce4(0xae)]('xhrTimeout'),_0x1da25c[_0x1f8ce4(0xd9)][_0x1f8ce4(0x107)]=_0x1da25c[_0x1f8ce4(0xae)](_0x1f8ce4(0x107));var _0x5086ea=_0x1da25c[_0x1f8ce4(0xae)](_0x1f8ce4(0xce));_0x1f8ce4(0x14c)==typeof _0x5086ea&&(_0x5086ea=_0x5086ea(_0x1da25c[_0x1f8ce4(0xbf)],_0x1da25c)),_0xb5805[_0x1f8ce4(0x171)](_0x5086ea,function(_0x531026,_0x4db90f){_0x1da25c['xhr']['setRequestHeader'](_0x531026,_0x4db90f);}),_0x1da25c[_0x1f8ce4(0xd9)][_0x1f8ce4(0x14d)](null);},_0x1da25c[_0x2b1b21(0x15b)]=function(){var _0x2266c3=_0x2b1b21;_0x1da25c[_0x2266c3(0xc7)]=0x2,_0x1da25c[_0x2266c3(0x14d)]();},_0x1da25c[_0x2b1b21(0x14d)]=function(){var _0x13d18d=_0x2b1b21,_0x117247=_0x1da25c['getOpt'](_0x13d18d(0xc8));if(_0x13d18d(0x14c)==typeof _0x117247)switch(_0x1da25c[_0x13d18d(0xc7)]){case 0x0:_0x1da25c[_0x13d18d(0xc7)]=0x1,_0x117247(_0x1da25c);return;case 0x1:return;}if(_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0xa2))&&!_0x1da25c[_0x13d18d(0x166)]){_0x1da25c['test']();return;}_0x1da25c['xhr']=new r(),_0x1da25c[_0x13d18d(0xd9)][_0x13d18d(0xe3)][_0x13d18d(0xd7)](_0x13d18d(0x117),function(_0x33a779){var _0x118fc7=_0x13d18d;new Date()-_0x1da25c[_0x118fc7(0x14f)]>0x3e8*_0x1da25c[_0x118fc7(0xae)](_0x118fc7(0xa4))&&(_0x1da25c[_0x118fc7(0xfc)]('progress'),_0x1da25c[_0x118fc7(0x14f)]=new Date()),_0x1da25c[_0x118fc7(0x170)]=_0x33a779[_0x118fc7(0x170)]||0x0;},!0x1),_0x1da25c[_0x13d18d(0x170)]=0x0,_0x1da25c[_0x13d18d(0x149)]=!0x1,_0x1da25c[_0x13d18d(0xfc)]('progress');var _0x174e99=function(_0xa6c916){var _0x4ad99b=_0x13d18d,_0x3ba3d4=_0x1da25c[_0x4ad99b(0xe7)]();if(_0x4ad99b(0xbc)==_0x3ba3d4||'error'==_0x3ba3d4)_0x1da25c[_0x4ad99b(0xfc)](_0x3ba3d4,_0x1da25c[_0x4ad99b(0x12f)]()),_0x1da25c[_0x4ad99b(0x15d)][_0x4ad99b(0xf5)]();else{_0x1da25c['callback'](_0x4ad99b(0xe2),_0x1da25c[_0x4ad99b(0x12f)]()),_0x1da25c['abort'](),_0x1da25c[_0x4ad99b(0xed)]++;var _0x1498a6=_0x1da25c['getOpt'](_0x4ad99b(0x174));void 0x0!==_0x1498a6?(_0x1da25c[_0x4ad99b(0x149)]=!0x0,setTimeout(_0x1da25c[_0x4ad99b(0x14d)],_0x1498a6)):_0x1da25c[_0x4ad99b(0x14d)]();}};_0x1da25c[_0x13d18d(0xd9)]['addEventListener']('load',_0x174e99,!0x1),_0x1da25c[_0x13d18d(0xd9)][_0x13d18d(0xd7)](_0x13d18d(0x16e),_0x174e99,!0x1),_0x1da25c[_0x13d18d(0xd9)]['addEventListener'](_0x13d18d(0x109),_0x174e99,!0x1);var _0x3e8f8c=[[_0x13d18d(0xf2),_0x1da25c[_0x13d18d(0x131)]+0x1],[_0x13d18d(0x121),_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0x158))],[_0x13d18d(0xa7),_0x1da25c[_0x13d18d(0x143)]-_0x1da25c[_0x13d18d(0x120)]],['totalSizeParameterName',_0x1da25c['fileObjSize']],[_0x13d18d(0x130),_0x1da25c[_0x13d18d(0x15f)]],[_0x13d18d(0xaa),_0x1da25c[_0x13d18d(0xbf)]['uniqueIdentifier']],[_0x13d18d(0xb0),_0x1da25c[_0x13d18d(0xbf)]['fileName']],[_0x13d18d(0x114),_0x1da25c['fileObj']['relativePath']],[_0x13d18d(0x165),_0x1da25c['fileObj'][_0x13d18d(0xe8)][_0x13d18d(0x13f)]]][_0x13d18d(0x111)](function(_0x55e814){var _0x3b1243=_0x13d18d;return _0x1da25c[_0x3b1243(0xae)](_0x55e814[0x0]);})[_0x13d18d(0x144)](function(_0x28a87d,_0x2b8b0b){var _0x419f27=_0x13d18d;return _0x28a87d[_0x1da25c[_0x419f27(0xae)](_0x2b8b0b[0x0])]=_0x2b8b0b[0x1],_0x28a87d;},{}),_0x46a6a0=_0x1da25c[_0x13d18d(0xae)]('query');_0x13d18d(0x14c)==typeof _0x46a6a0&&(_0x46a6a0=_0x46a6a0(_0x1da25c[_0x13d18d(0xbf)],_0x1da25c)),_0xb5805[_0x13d18d(0x171)](_0x46a6a0,function(_0x141c62,_0xbb87a){_0x3e8f8c[_0x141c62]=_0xbb87a;});var _0x5852c6=_0x1da25c[_0x13d18d(0xbf)][_0x13d18d(0x137)][_0x13d18d(0x14a)]['slice']?'slice':_0x1da25c[_0x13d18d(0xbf)]['file'][_0x13d18d(0x14a)]['mozSlice']?'mozSlice':_0x1da25c[_0x13d18d(0xbf)]['file']['buffer']['webkitSlice']?_0x13d18d(0xe6):_0x13d18d(0x105),_0x32dcc3=_0x1da25c[_0x13d18d(0xbf)][_0x13d18d(0x137)]['buffer'][_0x5852c6](_0x1da25c[_0x13d18d(0x120)],_0x1da25c[_0x13d18d(0x143)],_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0xc2))?_0x1da25c[_0x13d18d(0xbf)]['file'][_0x13d18d(0x15e)]:''),_0x396da9=null,_0x1f6160=[],_0x530dbd=_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0xb3));if(_0x13d18d(0x10c)===_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0xca)))_0x396da9=_0x32dcc3,_0xb5805['each'](_0x3e8f8c,function(_0xdc2998,_0x27abd6){var _0x463634=_0x13d18d;_0x1f6160['push']([encodeURIComponent(_0x530dbd+_0xdc2998),encodeURIComponent(_0x27abd6)][_0x463634(0x147)]('='));});else{if(_0x396da9=new FormData(),_0xb5805['each'](_0x3e8f8c,function(_0x4a8ba0,_0x5e3c84){var _0x2f4c7f=_0x13d18d;_0x396da9[_0x2f4c7f(0x115)](_0x530dbd+_0x4a8ba0,_0x5e3c84),_0x1f6160[_0x2f4c7f(0x16a)]([encodeURIComponent(_0x530dbd+_0x4a8ba0),encodeURIComponent(_0x5e3c84)][_0x2f4c7f(0x147)]('='));}),'blob'==_0x1da25c[_0x13d18d(0xae)]('chunkFormat'))_0x396da9[_0x13d18d(0x115)](_0x530dbd+_0x1da25c[_0x13d18d(0xae)]('fileParameterName'),_0x32dcc3,_0x1da25c['fileObj']['fileName']);else{if(_0x13d18d(0xad)==_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0xd3))){var _0x25d086=new s();_0x25d086[_0x13d18d(0x155)]=function(_0x17df5e){var _0x318738=_0x13d18d;_0x396da9['append'](_0x530dbd+_0x1da25c[_0x318738(0xae)](_0x318738(0xc9)),_0x25d086[_0x318738(0x164)]),_0x1da25c['xhr'][_0x318738(0x14d)](_0x396da9);},_0x25d086[_0x13d18d(0xfa)](_0x32dcc3);}}}var _0x14dd4e=_0xb5805[_0x13d18d(0x134)](_0x13d18d(0xe3),_0x1f6160),_0x3d6230=_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0x10a));_0x1da25c[_0x13d18d(0xd9)][_0x13d18d(0x169)](_0x3d6230,_0x14dd4e),_0x13d18d(0x10c)===_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0xca))&&_0x1da25c['xhr'][_0x13d18d(0xe0)](_0x13d18d(0x12a),_0x13d18d(0xd6)),_0x1da25c[_0x13d18d(0xd9)]['timeout']=_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0x11b)),_0x1da25c[_0x13d18d(0xd9)][_0x13d18d(0x107)]=_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0x107));var _0x5a4be5=_0x1da25c['getOpt']('headers');_0x13d18d(0x14c)==typeof _0x5a4be5&&(_0x5a4be5=_0x5a4be5(_0x1da25c['fileObj'],_0x1da25c)),_0xb5805[_0x13d18d(0x171)](_0x5a4be5,function(_0x3fc914,_0x3e1c4f){var _0x2beebb=_0x13d18d;_0x1da25c['xhr'][_0x2beebb(0xe0)](_0x3fc914,_0x3e1c4f);}),'blob'==_0x1da25c[_0x13d18d(0xae)](_0x13d18d(0xd3))&&_0x1da25c[_0x13d18d(0xd9)][_0x13d18d(0x14d)](_0x396da9);},_0x1da25c[_0x2b1b21(0xd1)]=function(){var _0x49c6bb=_0x2b1b21;_0x1da25c[_0x49c6bb(0xd9)]&&_0x1da25c['xhr']['abort'](),_0x1da25c[_0x49c6bb(0xd9)]=null;},_0x1da25c[_0x2b1b21(0xe7)]=function(){var _0x2bb320=_0x2b1b21;return _0x1da25c[_0x2bb320(0x149)]?_0x2bb320(0x100):_0x1da25c[_0x2bb320(0xd9)]?_0x1da25c[_0x2bb320(0xd9)][_0x2bb320(0x152)]<0x4?_0x2bb320(0x100):0xc8==_0x1da25c[_0x2bb320(0xd9)][_0x2bb320(0xe7)]||0xc9==_0x1da25c[_0x2bb320(0xd9)]['status']?_0x2bb320(0xbc):_0xb5805['contains'](_0x1da25c[_0x2bb320(0xae)]('permanentErrors'),_0x1da25c['xhr'][_0x2bb320(0xe7)])||_0x1da25c[_0x2bb320(0xed)]>=_0x1da25c[_0x2bb320(0xae)]('maxChunkRetries')?_0x2bb320(0x16e):(_0x1da25c['abort'](),_0x2bb320(0xaf)):'pending';},_0x1da25c['message']=function(){var _0xd94e4a=_0x2b1b21;return _0x1da25c['xhr']?_0x1da25c[_0xd94e4a(0xd9)]['responseText']:'';},_0x1da25c[_0x2b1b21(0x117)]=function(_0xcfbe46){var _0x386fa4=_0x2b1b21;void 0x0===_0xcfbe46&&(_0xcfbe46=!0x1);var _0x58d38d=_0xcfbe46?(_0x1da25c['endByte']-_0x1da25c[_0x386fa4(0x120)])/_0x1da25c['fileObjSize']:0x1;if(_0x1da25c[_0x386fa4(0x149)])return 0x0;switch(_0x1da25c['xhr']&&_0x1da25c[_0x386fa4(0xd9)][_0x386fa4(0xe7)]||(_0x58d38d*=0.95),_0x1da25c[_0x386fa4(0xe7)]()){case _0x386fa4(0xbc):case _0x386fa4(0x16e):return 0x1*_0x58d38d;case _0x386fa4(0xaf):return 0x0*_0x58d38d;default:return _0x1da25c[_0x386fa4(0x170)]/(_0x1da25c[_0x386fa4(0x143)]-_0x1da25c['startByte'])*_0x58d38d;}},this;}return _0x2ac292[_0x8ce203(0xf5)]=function(){var _0x43bb19=_0x8ce203,_0x26d778=!0x1;if(_0x2ac292[_0x43bb19(0xae)](_0x43bb19(0xf9))&&(_0xb5805[_0x43bb19(0x171)](_0x2ac292[_0x43bb19(0xe9)],function(_0x2cd4ef){var _0x1f2378=_0x43bb19;return _0x2cd4ef[_0x1f2378(0xe8)][_0x1f2378(0x13f)]&&'pending'==_0x2cd4ef['chunks'][0x0][_0x1f2378(0xe7)]()&&0x0===_0x2cd4ef[_0x1f2378(0xe8)][0x0][_0x1f2378(0xc7)]?(_0x2cd4ef[_0x1f2378(0xe8)][0x0][_0x1f2378(0x14d)](),_0x26d778=!0x0,!0x1):_0x2cd4ef[_0x1f2378(0xe8)][_0x1f2378(0x13f)]>0x1&&_0x1f2378(0xaf)==_0x2cd4ef[_0x1f2378(0xe8)][_0x2cd4ef[_0x1f2378(0xe8)][_0x1f2378(0x13f)]-0x1]['status']()&&0x0===_0x2cd4ef['chunks'][_0x2cd4ef['chunks'][_0x1f2378(0x13f)]-0x1][_0x1f2378(0xc7)]?(_0x2cd4ef[_0x1f2378(0xe8)][_0x2cd4ef['chunks'][_0x1f2378(0x13f)]-0x1][_0x1f2378(0x14d)](),_0x26d778=!0x0,!0x1):void 0x0;}),_0x26d778)||(_0xb5805[_0x43bb19(0x171)](_0x2ac292[_0x43bb19(0xe9)],function(_0x28c8d6){var _0x698b0e=_0x43bb19;if(!0x1===_0x28c8d6[_0x698b0e(0x13d)]()&&_0xb5805[_0x698b0e(0x171)](_0x28c8d6[_0x698b0e(0xe8)],function(_0x18349e){var _0x185fa9=_0x698b0e;if('pending'==_0x18349e[_0x185fa9(0xe7)]()&&0x0===_0x18349e[_0x185fa9(0xc7)])return _0x18349e[_0x185fa9(0x14d)](),_0x26d778=!0x0,!0x1;}),_0x26d778)return!0x1;}),_0x26d778))return!0x0;var _0x4e0fc9=!0x1;return _0xb5805[_0x43bb19(0x171)](_0x2ac292[_0x43bb19(0xe9)],function(_0x24f718){var _0x37ce38=_0x43bb19;if(!_0x24f718[_0x37ce38(0xf7)]())return _0x4e0fc9=!0x0,!0x1;}),_0x4e0fc9||_0x2ac292['fire'](_0x43bb19(0xb8)),!0x1;},_0x2ac292[_0x8ce203(0x163)]=function(_0x25ec08,_0x183316){var _0x16e8b5=_0x8ce203;void 0x0===_0x25ec08[_0x16e8b5(0x13f)]&&(_0x25ec08=[_0x25ec08]),_0xb5805['each'](_0x25ec08,function(_0x57f71b){var _0x38a789=_0x16e8b5;'INPUT'===_0x57f71b['tagName']&&_0x38a789(0x137)===_0x57f71b[_0x38a789(0x15e)]?_0x1c23c7=_0x57f71b:((_0x1c23c7=document[_0x38a789(0x13b)](_0x38a789(0xda)))[_0x38a789(0x148)](_0x38a789(0x15e),'file'),_0x1c23c7[_0x38a789(0x126)][_0x38a789(0xd4)]=_0x38a789(0xec),_0x57f71b['addEventListener']('click',function(){var _0xc97f3=_0x38a789;_0x1c23c7[_0xc97f3(0x126)][_0xc97f3(0x11d)]=0x0,_0x1c23c7[_0xc97f3(0x126)][_0xc97f3(0xd4)]='block',_0x1c23c7[_0xc97f3(0x157)](),_0x1c23c7[_0xc97f3(0x16d)](),_0x1c23c7[_0xc97f3(0x126)][_0xc97f3(0xd4)]=_0xc97f3(0xec);},!0x1),_0x57f71b['appendChild'](_0x1c23c7));var _0x1c23c7,_0x2181ce=_0x2ac292[_0x38a789(0xae)](_0x38a789(0x16f));void 0x0===_0x2181ce||0x1!=_0x2181ce?_0x1c23c7[_0x38a789(0x148)](_0x38a789(0x101),'multiple'):_0x1c23c7['removeAttribute']('multiple'),_0x183316?_0x1c23c7['setAttribute'](_0x38a789(0xb7),_0x38a789(0xb7)):_0x1c23c7[_0x38a789(0xdc)](_0x38a789(0xb7));var _0x3af09e=_0x2ac292['getOpt'](_0x38a789(0xac));void 0x0!==_0x3af09e&&_0x3af09e[_0x38a789(0x13f)]>=0x1?_0x1c23c7['setAttribute'](_0x38a789(0x13a),_0x3af09e[_0x38a789(0x156)](function(_0x1097f7){return'.'+_0x1097f7;})[_0x38a789(0x147)](',')):_0x1c23c7[_0x38a789(0xdc)](_0x38a789(0x13a)),_0x1c23c7[_0x38a789(0xd7)](_0x38a789(0xab),function(_0x438424){var _0x2e4198=_0x38a789;_0x567503(_0x438424[_0x2e4198(0x14e)][_0x2e4198(0xe9)],_0x438424),_0x2ac292['getOpt'](_0x2e4198(0x140))&&(_0x438424[_0x2e4198(0x14e)][_0x2e4198(0xd0)]='');},!0x1);});},_0x2ac292[_0x8ce203(0x10b)]=function(_0x2d7fa2){var _0x1d4f8a=_0x8ce203;void 0x0===_0x2d7fa2[_0x1d4f8a(0x13f)]&&(_0x2d7fa2=[_0x2d7fa2]),_0xb5805[_0x1d4f8a(0x171)](_0x2d7fa2,function(_0x1d7475){var _0xb9c2c=_0x1d4f8a;_0x1d7475[_0xb9c2c(0xd7)]('dragover',_0x1c913a,!0x1),_0x1d7475[_0xb9c2c(0xd7)](_0xb9c2c(0x11a),_0x1c913a,!0x1),_0x1d7475[_0xb9c2c(0xd7)](_0xb9c2c(0x12d),_0x2fc03a,!0x1);});},_0x2ac292[_0x8ce203(0x11f)]=function(_0x2153fe){var _0x1a4cff=_0x8ce203;void 0x0===_0x2153fe[_0x1a4cff(0x13f)]&&(_0x2153fe=[_0x2153fe]),_0xb5805[_0x1a4cff(0x171)](_0x2153fe,function(_0x3f3e85){var _0x4198c4=_0x1a4cff;_0x3f3e85[_0x4198c4(0xf1)](_0x4198c4(0xcf),_0x1c913a),_0x3f3e85[_0x4198c4(0xf1)](_0x4198c4(0x11a),_0x1c913a),_0x3f3e85[_0x4198c4(0xf1)](_0x4198c4(0x12d),_0x2fc03a);});},_0x2ac292[_0x8ce203(0x133)]=function(){var _0x331abb=_0x8ce203,_0x402ea2=!0x1;return _0xb5805[_0x331abb(0x171)](_0x2ac292[_0x331abb(0xe9)],function(_0x4e3b01){var _0x4e0a1f=_0x331abb;if(_0x4e3b01[_0x4e0a1f(0x133)]())return _0x402ea2=!0x0,!0x1;}),_0x402ea2;},_0x2ac292[_0x8ce203(0xe3)]=function(){var _0x20411a=_0x8ce203;if(!_0x2ac292[_0x20411a(0x133)]()){_0x2ac292[_0x20411a(0x129)](_0x20411a(0x142));for(var _0x12d1d1=0x1;_0x12d1d1<=_0x2ac292[_0x20411a(0xae)](_0x20411a(0x10f));_0x12d1d1++)_0x2ac292['uploadNextChunk']();}},_0x2ac292[_0x8ce203(0x108)]=function(){var _0x3084be=_0x8ce203;_0xb5805[_0x3084be(0x171)](_0x2ac292[_0x3084be(0xe9)],function(_0x297f93){var _0x3366d2=_0x3084be;_0x297f93[_0x3366d2(0xd1)]();}),_0x2ac292[_0x3084be(0x129)](_0x3084be(0x108));},_0x2ac292[_0x8ce203(0xf4)]=function(){var _0x97ce07=_0x8ce203;_0x2ac292[_0x97ce07(0x129)](_0x97ce07(0xf0));for(var _0x44fffe=_0x2ac292[_0x97ce07(0xe9)][_0x97ce07(0x13f)]-0x1;_0x44fffe>=0x0;_0x44fffe--)_0x2ac292[_0x97ce07(0xe9)][_0x44fffe]['cancel']();_0x2ac292['fire'](_0x97ce07(0xf4));},_0x2ac292[_0x8ce203(0x117)]=function(){var _0x5a485d=_0x8ce203,_0x2f5318=0x0,_0x1e512d=0x0;return _0xb5805['each'](_0x2ac292[_0x5a485d(0xe9)],function(_0x148d20){var _0x5df70d=_0x5a485d;_0x2f5318+=_0x148d20[_0x5df70d(0x117)]()*_0x148d20['size'],_0x1e512d+=_0x148d20[_0x5df70d(0xa9)];}),_0x1e512d>0x0?_0x2f5318/_0x1e512d:0x0;},_0x2ac292['addFile']=function(_0x245974,_0x4cc66e){_0x567503([_0x245974],_0x4cc66e);},_0x2ac292['addFiles']=function(_0x304830,_0x5cd067){_0x567503(_0x304830,_0x5cd067);},_0x2ac292[_0x8ce203(0x136)]=function(_0x528a2a){var _0x2177b2=_0x8ce203;for(var _0x27441c=_0x2ac292[_0x2177b2(0xe9)][_0x2177b2(0x13f)]-0x1;_0x27441c>=0x0;_0x27441c--)_0x2ac292[_0x2177b2(0xe9)][_0x27441c]===_0x528a2a&&_0x2ac292[_0x2177b2(0xe9)][_0x2177b2(0x123)](_0x27441c,0x1);},_0x2ac292[_0x8ce203(0x13e)]=function(_0x8795b){var _0x5a39da=_0x8ce203,_0x4d0c61=!0x1;return _0xb5805['each'](_0x2ac292[_0x5a39da(0xe9)],function(_0x59f4e9){var _0x4ca484=_0x5a39da;_0x59f4e9[_0x4ca484(0x113)]==_0x8795b&&(_0x4d0c61=_0x59f4e9);}),_0x4d0c61;},_0x2ac292['getSize']=function(){var _0x433d5a=_0x8ce203,_0x2186f6=0x0;return _0xb5805[_0x433d5a(0x171)](_0x2ac292[_0x433d5a(0xe9)],function(_0x12034b){var _0x2b144e=_0x433d5a;_0x2186f6+=_0x12034b[_0x2b144e(0xa9)];}),_0x2186f6;},_0x2ac292['handleDropEvent']=function(_0x437f96){_0x2fc03a(_0x437f96);},_0x2ac292['handleChangeEvent']=function(_0x1b1f87){var _0x8fa82a=_0x8ce203;_0x567503(_0x1b1f87['target'][_0x8fa82a(0xe9)],_0x1b1f87),_0x1b1f87[_0x8fa82a(0x14e)][_0x8fa82a(0xd0)]='';},_0x2ac292[_0x8ce203(0xbd)]=function(_0x2d81cc){var _0x5bf049=_0x8ce203;_0x2ac292[_0x5bf049(0xc4)][_0x5bf049(0x16b)]=_0x2d81cc;},this;};function _0x44eb(){var _0x968ea6=['startByte','chunkSizeParameterName','indexOf','splice','filesAdded','63567EpYFKX','style','fileName','blob','fire','Content-Type','fileObjSize','maxFileSize','drop','bind','message','typeParameterName','offset','testMethod','isUploading','getTarget','resumableTotalChunks','removeFile','file','dataTransfer','then','accept','createElement','forceChunkSize','isPaused','getFromUniqueIdentifier','length','clearInput','resumableTotalSize','uploadStart','endByte','reduce','fileAdded','events','join','setAttribute','pendingRetry','buffer','nodejsSet','function','send','target','lastProgressCallback','fileTypeErrorCallback','maxFilesErrorCallback','readyState','1328ZBqVwM','load','onload','map','focus','chunkSize','getAsFile','132hFQWhV','preprocessFinished','toLowerCase','resumableObj','type','fileObjType','call','max','resumableCurrentChunkSize','assignBrowse','result','totalChunksParameterName','tested','fileRetry','fileProgress','open','push','query','catchall','click','error','maxFiles','loaded','each','GET','toFixed','chunkRetryInterval','./axios','testChunks','fileError','throttleProgressCallbacks','srcElement','test','currentChunkSizeParameterName','Please\x20upload\x20no\x20more\x20than\x20','size','identifierParameterName','change','fileType','base64','getOpt','pending','fileNameParameterName','maxFileSizeErrorCallback','_prevProgress','parameterNamespace','relativePath','minFileSizeErrorCallback','1851322xHaQmj','webkitdirectory','complete','isFile','items','defaults','success','updateQuery','exports','fileObj','\x20at\x20a\x20time.','apply','setChunkTypeFromFile','3771480DytsSA','opts','_pause','resumableChunkSize','preprocessState','preprocess','fileParameterName','method','webkitGetAsEntry','floor','replace','headers','dragover','value','abort','support','chunkFormat','display','stopPropagation','application/octet-stream','addEventListener','FileReader','xhr','input','container','removeAttribute','xhr2','mozSlice','prototype','setRequestHeader','POST','retry','upload','name','file-api','webkitSlice','status','chunks','files','resumableRelativePath','resumableChunkNumber','none','retries','preventDefault','\x20is\x20too\x20small,\x20please\x20upload\x20files\x20larger\x20than\x20','beforeCancel','removeEventListener','chunkNumberParameterName','stopEvent','cancel','uploadNextChunk','\x20GB','isComplete','formatSize','prioritizeFirstAndLastChunk','readAsDataURL','isDirectory','callback','\x20MB','\x20KB','testTarget','uploading','multiple','createReader','resumableFilename','1765692nmteNT','slice','generateUniqueIdentifier','withCredentials','pause','timeout','uploadMethod','assignDrop','octet','./node-blob','multipart','simultaneousUploads','15007716DgeFrq','filter','bootstrap','uniqueIdentifier','relativePathParameterName','append','81815DDGTtP','progress','webkitRelativePath','resumableIdentifier','dragenter','xhrTimeout','readEntries','opacity','1022141aKPLiM','unAssignDrop'];_0x44eb=function(){return _0x968ea6;};return _0x44eb();}function _0x3052(_0x585b62,_0x3bc241){var _0x44ebb8=_0x44eb();return _0x3052=function(_0x30522b,_0x192e47){_0x30522b=_0x30522b-0xa1;var _0x1c3baa=_0x44ebb8[_0x30522b];return _0x1c3baa;},_0x3052(_0x585b62,_0x3bc241);}module[_0x2ff747(0xbe)]=o;
|