小程序生成二维码功能完成
This commit is contained in:
		@@ -56,6 +56,7 @@
 | 
				
			|||||||
  "requiredPrivateInfos": [
 | 
					  "requiredPrivateInfos": [
 | 
				
			||||||
    "chooseLocation"
 | 
					    "chooseLocation"
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
 | 
					  "lazyCodeLoading": "requiredComponents",
 | 
				
			||||||
  "style": "v2",
 | 
					  "style": "v2",
 | 
				
			||||||
  "sitemapLocation": "sitemap.json"
 | 
					  "sitemapLocation": "sitemap.json"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										12
									
								
								weixin-miniprogram/node_modules/.package-lock.json
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								weixin-miniprogram/node_modules/.package-lock.json
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,12 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "weixin-miniprogram",
 | 
					 | 
				
			||||||
  "lockfileVersion": 3,
 | 
					 | 
				
			||||||
  "requires": true,
 | 
					 | 
				
			||||||
  "packages": {
 | 
					 | 
				
			||||||
    "node_modules/blueimp-md5": {
 | 
					 | 
				
			||||||
      "version": "2.19.0",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmmirror.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w=="
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										20
									
								
								weixin-miniprogram/node_modules/blueimp-md5/LICENSE.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								weixin-miniprogram/node_modules/blueimp-md5/LICENSE.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,20 +0,0 @@
 | 
				
			|||||||
MIT License
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Copyright © 2011 Sebastian Tschan, https://blueimp.net
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
 | 
					 | 
				
			||||||
this software and associated documentation files (the "Software"), to deal in
 | 
					 | 
				
			||||||
the Software without restriction, including without limitation the rights to
 | 
					 | 
				
			||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 | 
					 | 
				
			||||||
the Software, and to permit persons to whom the Software is furnished to do so,
 | 
					 | 
				
			||||||
subject to the following conditions:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The above copyright notice and this permission notice shall be included in all
 | 
					 | 
				
			||||||
copies or substantial portions of the Software.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
					 | 
				
			||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 | 
					 | 
				
			||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 | 
					 | 
				
			||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 | 
					 | 
				
			||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
					 | 
				
			||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
					 | 
				
			||||||
							
								
								
									
										134
									
								
								weixin-miniprogram/node_modules/blueimp-md5/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										134
									
								
								weixin-miniprogram/node_modules/blueimp-md5/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,134 +0,0 @@
 | 
				
			|||||||
# JavaScript MD5
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Contents
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- [Demo](https://blueimp.github.io/JavaScript-MD5/)
 | 
					 | 
				
			||||||
- [Description](#description)
 | 
					 | 
				
			||||||
- [Usage](#usage)
 | 
					 | 
				
			||||||
  - [Client-side](#client-side)
 | 
					 | 
				
			||||||
  - [Server-side](#server-side)
 | 
					 | 
				
			||||||
- [Requirements](#requirements)
 | 
					 | 
				
			||||||
- [API](#api)
 | 
					 | 
				
			||||||
- [Tests](#tests)
 | 
					 | 
				
			||||||
- [License](#license)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Description
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
JavaScript [MD5](https://en.wikipedia.org/wiki/MD5) implementation.  
 | 
					 | 
				
			||||||
Compatible with server-side environments like [Node.js](https://nodejs.org/),
 | 
					 | 
				
			||||||
module loaders like [RequireJS](https://requirejs.org/) or
 | 
					 | 
				
			||||||
[webpack](https://webpack.js.org/) and all web browsers.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Usage
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Client-side
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Install the **blueimp-md5** package with [NPM](https://www.npmjs.org/):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```sh
 | 
					 | 
				
			||||||
npm install blueimp-md5
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Include the (minified) JavaScript [MD5](https://en.wikipedia.org/wiki/MD5)
 | 
					 | 
				
			||||||
script in your HTML markup:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```html
 | 
					 | 
				
			||||||
<script src="js/md5.min.js"></script>
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
In your application code, calculate the
 | 
					 | 
				
			||||||
([hex](https://en.wikipedia.org/wiki/Hexadecimal)-encoded)
 | 
					 | 
				
			||||||
[MD5](https://en.wikipedia.org/wiki/MD5) hash of a string by calling the **md5**
 | 
					 | 
				
			||||||
method with the string as argument:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```js
 | 
					 | 
				
			||||||
var hash = md5('value') // "2063c1608d6e0baf80249c42e2be5804"
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Server-side
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The following is an example how to use the JavaScript MD5 module on the
 | 
					 | 
				
			||||||
server-side with [Node.js](https://nodejs.org/).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Install the **blueimp-md5** package with [NPM](https://www.npmjs.org/):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```sh
 | 
					 | 
				
			||||||
npm install blueimp-md5
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Add a file **server.js** with the following content:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```js
 | 
					 | 
				
			||||||
require('http')
 | 
					 | 
				
			||||||
  .createServer(function (req, res) {
 | 
					 | 
				
			||||||
    // The md5 module exports the md5() function:
 | 
					 | 
				
			||||||
    var md5 = require('./md5'),
 | 
					 | 
				
			||||||
      // Use the following version if you installed the package with npm:
 | 
					 | 
				
			||||||
      // var md5 = require("blueimp-md5"),
 | 
					 | 
				
			||||||
      url = require('url'),
 | 
					 | 
				
			||||||
      query = url.parse(req.url).query
 | 
					 | 
				
			||||||
    res.writeHead(200, { 'Content-Type': 'text/plain' })
 | 
					 | 
				
			||||||
    // Calculate and print the MD5 hash of the url query:
 | 
					 | 
				
			||||||
    res.end(md5(query))
 | 
					 | 
				
			||||||
  })
 | 
					 | 
				
			||||||
  .listen(8080, 'localhost')
 | 
					 | 
				
			||||||
console.log('Server running at http://localhost:8080/')
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Run the application with the following command:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```sh
 | 
					 | 
				
			||||||
node server.js
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Requirements
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The JavaScript MD5 script has zero dependencies.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## API
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Calculate the ([hex](https://en.wikipedia.org/wiki/Hexadecimal)-encoded)
 | 
					 | 
				
			||||||
[MD5](https://en.wikipedia.org/wiki/MD5) hash of a given string value:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```js
 | 
					 | 
				
			||||||
var hash = md5('value') // "2063c1608d6e0baf80249c42e2be5804"
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Calculate the ([hex](https://en.wikipedia.org/wiki/Hexadecimal)-encoded)
 | 
					 | 
				
			||||||
[HMAC](https://en.wikipedia.org/wiki/HMAC)-MD5 hash of a given string value and
 | 
					 | 
				
			||||||
key:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```js
 | 
					 | 
				
			||||||
var hash = md5('value', 'key') // "01433efd5f16327ea4b31144572c67f6"
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Calculate the raw [MD5](https://en.wikipedia.org/wiki/MD5) hash of a given
 | 
					 | 
				
			||||||
string value:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```js
 | 
					 | 
				
			||||||
var hash = md5('value', null, true)
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Calculate the raw [HMAC](https://en.wikipedia.org/wiki/HMAC)-MD5 hash of a given
 | 
					 | 
				
			||||||
string value and key:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```js
 | 
					 | 
				
			||||||
var hash = md5('value', 'key', true)
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Tests
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The JavaScript MD5 project comes with
 | 
					 | 
				
			||||||
[Unit Tests](https://en.wikipedia.org/wiki/Unit_testing).  
 | 
					 | 
				
			||||||
There are two different ways to run the tests:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- Open test/index.html in your browser or
 | 
					 | 
				
			||||||
- run `npm test` in the Terminal in the root path of the repository package.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The first one tests the browser integration, the second one the
 | 
					 | 
				
			||||||
[Node.js](https://nodejs.org/) integration.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## License
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The JavaScript MD5 script is released under the
 | 
					 | 
				
			||||||
[MIT license](https://opensource.org/licenses/MIT).
 | 
					 | 
				
			||||||
							
								
								
									
										402
									
								
								weixin-miniprogram/node_modules/blueimp-md5/js/md5.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										402
									
								
								weixin-miniprogram/node_modules/blueimp-md5/js/md5.js
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,402 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * JavaScript MD5
 | 
					 | 
				
			||||||
 * https://github.com/blueimp/JavaScript-MD5
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Copyright 2011, Sebastian Tschan
 | 
					 | 
				
			||||||
 * https://blueimp.net
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Licensed under the MIT license:
 | 
					 | 
				
			||||||
 * https://opensource.org/licenses/MIT
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Based on
 | 
					 | 
				
			||||||
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 | 
					 | 
				
			||||||
 * Digest Algorithm, as defined in RFC 1321.
 | 
					 | 
				
			||||||
 * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
 | 
					 | 
				
			||||||
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 | 
					 | 
				
			||||||
 * Distributed under the BSD License
 | 
					 | 
				
			||||||
 * See http://pajhome.org.uk/crypt/md5 for more info.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* global define */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* eslint-disable strict */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;(function ($) {
 | 
					 | 
				
			||||||
  'use strict'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Add integers, wrapping at 2^32.
 | 
					 | 
				
			||||||
   * This uses 16-bit operations internally to work around bugs in interpreters.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {number} x First integer
 | 
					 | 
				
			||||||
   * @param {number} y Second integer
 | 
					 | 
				
			||||||
   * @returns {number} Sum
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function safeAdd(x, y) {
 | 
					 | 
				
			||||||
    var lsw = (x & 0xffff) + (y & 0xffff)
 | 
					 | 
				
			||||||
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
 | 
					 | 
				
			||||||
    return (msw << 16) | (lsw & 0xffff)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Bitwise rotate a 32-bit number to the left.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {number} num 32-bit number
 | 
					 | 
				
			||||||
   * @param {number} cnt Rotation count
 | 
					 | 
				
			||||||
   * @returns {number} Rotated number
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function bitRotateLeft(num, cnt) {
 | 
					 | 
				
			||||||
    return (num << cnt) | (num >>> (32 - cnt))
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Basic operation the algorithm uses.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {number} q q
 | 
					 | 
				
			||||||
   * @param {number} a a
 | 
					 | 
				
			||||||
   * @param {number} b b
 | 
					 | 
				
			||||||
   * @param {number} x x
 | 
					 | 
				
			||||||
   * @param {number} s s
 | 
					 | 
				
			||||||
   * @param {number} t t
 | 
					 | 
				
			||||||
   * @returns {number} Result
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function md5cmn(q, a, b, x, s, t) {
 | 
					 | 
				
			||||||
    return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Basic operation the algorithm uses.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {number} a a
 | 
					 | 
				
			||||||
   * @param {number} b b
 | 
					 | 
				
			||||||
   * @param {number} c c
 | 
					 | 
				
			||||||
   * @param {number} d d
 | 
					 | 
				
			||||||
   * @param {number} x x
 | 
					 | 
				
			||||||
   * @param {number} s s
 | 
					 | 
				
			||||||
   * @param {number} t t
 | 
					 | 
				
			||||||
   * @returns {number} Result
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function md5ff(a, b, c, d, x, s, t) {
 | 
					 | 
				
			||||||
    return md5cmn((b & c) | (~b & d), a, b, x, s, t)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Basic operation the algorithm uses.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {number} a a
 | 
					 | 
				
			||||||
   * @param {number} b b
 | 
					 | 
				
			||||||
   * @param {number} c c
 | 
					 | 
				
			||||||
   * @param {number} d d
 | 
					 | 
				
			||||||
   * @param {number} x x
 | 
					 | 
				
			||||||
   * @param {number} s s
 | 
					 | 
				
			||||||
   * @param {number} t t
 | 
					 | 
				
			||||||
   * @returns {number} Result
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function md5gg(a, b, c, d, x, s, t) {
 | 
					 | 
				
			||||||
    return md5cmn((b & d) | (c & ~d), a, b, x, s, t)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Basic operation the algorithm uses.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {number} a a
 | 
					 | 
				
			||||||
   * @param {number} b b
 | 
					 | 
				
			||||||
   * @param {number} c c
 | 
					 | 
				
			||||||
   * @param {number} d d
 | 
					 | 
				
			||||||
   * @param {number} x x
 | 
					 | 
				
			||||||
   * @param {number} s s
 | 
					 | 
				
			||||||
   * @param {number} t t
 | 
					 | 
				
			||||||
   * @returns {number} Result
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function md5hh(a, b, c, d, x, s, t) {
 | 
					 | 
				
			||||||
    return md5cmn(b ^ c ^ d, a, b, x, s, t)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Basic operation the algorithm uses.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {number} a a
 | 
					 | 
				
			||||||
   * @param {number} b b
 | 
					 | 
				
			||||||
   * @param {number} c c
 | 
					 | 
				
			||||||
   * @param {number} d d
 | 
					 | 
				
			||||||
   * @param {number} x x
 | 
					 | 
				
			||||||
   * @param {number} s s
 | 
					 | 
				
			||||||
   * @param {number} t t
 | 
					 | 
				
			||||||
   * @returns {number} Result
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function md5ii(a, b, c, d, x, s, t) {
 | 
					 | 
				
			||||||
    return md5cmn(c ^ (b | ~d), a, b, x, s, t)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Calculate the MD5 of an array of little-endian words, and a bit length.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {Array} x Array of little-endian words
 | 
					 | 
				
			||||||
   * @param {number} len Bit length
 | 
					 | 
				
			||||||
   * @returns {Array<number>} MD5 Array
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function binlMD5(x, len) {
 | 
					 | 
				
			||||||
    /* append padding */
 | 
					 | 
				
			||||||
    x[len >> 5] |= 0x80 << len % 32
 | 
					 | 
				
			||||||
    x[(((len + 64) >>> 9) << 4) + 14] = len
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var i
 | 
					 | 
				
			||||||
    var olda
 | 
					 | 
				
			||||||
    var oldb
 | 
					 | 
				
			||||||
    var oldc
 | 
					 | 
				
			||||||
    var oldd
 | 
					 | 
				
			||||||
    var a = 1732584193
 | 
					 | 
				
			||||||
    var b = -271733879
 | 
					 | 
				
			||||||
    var c = -1732584194
 | 
					 | 
				
			||||||
    var d = 271733878
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for (i = 0; i < x.length; i += 16) {
 | 
					 | 
				
			||||||
      olda = a
 | 
					 | 
				
			||||||
      oldb = b
 | 
					 | 
				
			||||||
      oldc = c
 | 
					 | 
				
			||||||
      oldd = d
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      a = md5ff(a, b, c, d, x[i], 7, -680876936)
 | 
					 | 
				
			||||||
      d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)
 | 
					 | 
				
			||||||
      c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)
 | 
					 | 
				
			||||||
      b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)
 | 
					 | 
				
			||||||
      a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)
 | 
					 | 
				
			||||||
      d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)
 | 
					 | 
				
			||||||
      c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)
 | 
					 | 
				
			||||||
      b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)
 | 
					 | 
				
			||||||
      a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)
 | 
					 | 
				
			||||||
      d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)
 | 
					 | 
				
			||||||
      c = md5ff(c, d, a, b, x[i + 10], 17, -42063)
 | 
					 | 
				
			||||||
      b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)
 | 
					 | 
				
			||||||
      a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)
 | 
					 | 
				
			||||||
      d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)
 | 
					 | 
				
			||||||
      c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)
 | 
					 | 
				
			||||||
      b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)
 | 
					 | 
				
			||||||
      d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)
 | 
					 | 
				
			||||||
      c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)
 | 
					 | 
				
			||||||
      b = md5gg(b, c, d, a, x[i], 20, -373897302)
 | 
					 | 
				
			||||||
      a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)
 | 
					 | 
				
			||||||
      d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)
 | 
					 | 
				
			||||||
      c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)
 | 
					 | 
				
			||||||
      b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)
 | 
					 | 
				
			||||||
      a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)
 | 
					 | 
				
			||||||
      d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)
 | 
					 | 
				
			||||||
      c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)
 | 
					 | 
				
			||||||
      b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)
 | 
					 | 
				
			||||||
      a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)
 | 
					 | 
				
			||||||
      d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)
 | 
					 | 
				
			||||||
      c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)
 | 
					 | 
				
			||||||
      b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      a = md5hh(a, b, c, d, x[i + 5], 4, -378558)
 | 
					 | 
				
			||||||
      d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)
 | 
					 | 
				
			||||||
      c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)
 | 
					 | 
				
			||||||
      b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)
 | 
					 | 
				
			||||||
      a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)
 | 
					 | 
				
			||||||
      d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)
 | 
					 | 
				
			||||||
      c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)
 | 
					 | 
				
			||||||
      b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)
 | 
					 | 
				
			||||||
      a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)
 | 
					 | 
				
			||||||
      d = md5hh(d, a, b, c, x[i], 11, -358537222)
 | 
					 | 
				
			||||||
      c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)
 | 
					 | 
				
			||||||
      b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)
 | 
					 | 
				
			||||||
      a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)
 | 
					 | 
				
			||||||
      d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)
 | 
					 | 
				
			||||||
      c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)
 | 
					 | 
				
			||||||
      b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      a = md5ii(a, b, c, d, x[i], 6, -198630844)
 | 
					 | 
				
			||||||
      d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)
 | 
					 | 
				
			||||||
      c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)
 | 
					 | 
				
			||||||
      b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)
 | 
					 | 
				
			||||||
      a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)
 | 
					 | 
				
			||||||
      d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)
 | 
					 | 
				
			||||||
      c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)
 | 
					 | 
				
			||||||
      b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)
 | 
					 | 
				
			||||||
      a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)
 | 
					 | 
				
			||||||
      d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)
 | 
					 | 
				
			||||||
      c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)
 | 
					 | 
				
			||||||
      b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)
 | 
					 | 
				
			||||||
      a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)
 | 
					 | 
				
			||||||
      d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)
 | 
					 | 
				
			||||||
      c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)
 | 
					 | 
				
			||||||
      b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      a = safeAdd(a, olda)
 | 
					 | 
				
			||||||
      b = safeAdd(b, oldb)
 | 
					 | 
				
			||||||
      c = safeAdd(c, oldc)
 | 
					 | 
				
			||||||
      d = safeAdd(d, oldd)
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return [a, b, c, d]
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Convert an array of little-endian words to a string
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {Array<number>} input MD5 Array
 | 
					 | 
				
			||||||
   * @returns {string} MD5 string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function binl2rstr(input) {
 | 
					 | 
				
			||||||
    var i
 | 
					 | 
				
			||||||
    var output = ''
 | 
					 | 
				
			||||||
    var length32 = input.length * 32
 | 
					 | 
				
			||||||
    for (i = 0; i < length32; i += 8) {
 | 
					 | 
				
			||||||
      output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff)
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return output
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Convert a raw string to an array of little-endian words
 | 
					 | 
				
			||||||
   * Characters >255 have their high-byte silently ignored.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} input Raw input string
 | 
					 | 
				
			||||||
   * @returns {Array<number>} Array of little-endian words
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function rstr2binl(input) {
 | 
					 | 
				
			||||||
    var i
 | 
					 | 
				
			||||||
    var output = []
 | 
					 | 
				
			||||||
    output[(input.length >> 2) - 1] = undefined
 | 
					 | 
				
			||||||
    for (i = 0; i < output.length; i += 1) {
 | 
					 | 
				
			||||||
      output[i] = 0
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    var length8 = input.length * 8
 | 
					 | 
				
			||||||
    for (i = 0; i < length8; i += 8) {
 | 
					 | 
				
			||||||
      output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return output
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Calculate the MD5 of a raw string
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} s Input string
 | 
					 | 
				
			||||||
   * @returns {string} Raw MD5 string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function rstrMD5(s) {
 | 
					 | 
				
			||||||
    return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Calculates the HMAC-MD5 of a key and some data (raw strings)
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} key HMAC key
 | 
					 | 
				
			||||||
   * @param {string} data Raw input string
 | 
					 | 
				
			||||||
   * @returns {string} Raw MD5 string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function rstrHMACMD5(key, data) {
 | 
					 | 
				
			||||||
    var i
 | 
					 | 
				
			||||||
    var bkey = rstr2binl(key)
 | 
					 | 
				
			||||||
    var ipad = []
 | 
					 | 
				
			||||||
    var opad = []
 | 
					 | 
				
			||||||
    var hash
 | 
					 | 
				
			||||||
    ipad[15] = opad[15] = undefined
 | 
					 | 
				
			||||||
    if (bkey.length > 16) {
 | 
					 | 
				
			||||||
      bkey = binlMD5(bkey, key.length * 8)
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    for (i = 0; i < 16; i += 1) {
 | 
					 | 
				
			||||||
      ipad[i] = bkey[i] ^ 0x36363636
 | 
					 | 
				
			||||||
      opad[i] = bkey[i] ^ 0x5c5c5c5c
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)
 | 
					 | 
				
			||||||
    return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Convert a raw string to a hex string
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} input Raw input string
 | 
					 | 
				
			||||||
   * @returns {string} Hex encoded string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function rstr2hex(input) {
 | 
					 | 
				
			||||||
    var hexTab = '0123456789abcdef'
 | 
					 | 
				
			||||||
    var output = ''
 | 
					 | 
				
			||||||
    var x
 | 
					 | 
				
			||||||
    var i
 | 
					 | 
				
			||||||
    for (i = 0; i < input.length; i += 1) {
 | 
					 | 
				
			||||||
      x = input.charCodeAt(i)
 | 
					 | 
				
			||||||
      output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return output
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Encode a string as UTF-8
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} input Input string
 | 
					 | 
				
			||||||
   * @returns {string} UTF8 string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function str2rstrUTF8(input) {
 | 
					 | 
				
			||||||
    return unescape(encodeURIComponent(input))
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Encodes input string as raw MD5 string
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} s Input string
 | 
					 | 
				
			||||||
   * @returns {string} Raw MD5 string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function rawMD5(s) {
 | 
					 | 
				
			||||||
    return rstrMD5(str2rstrUTF8(s))
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Encodes input string as Hex encoded string
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} s Input string
 | 
					 | 
				
			||||||
   * @returns {string} Hex encoded string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function hexMD5(s) {
 | 
					 | 
				
			||||||
    return rstr2hex(rawMD5(s))
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Calculates the raw HMAC-MD5 for the given key and data
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} k HMAC key
 | 
					 | 
				
			||||||
   * @param {string} d Input string
 | 
					 | 
				
			||||||
   * @returns {string} Raw MD5 string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function rawHMACMD5(k, d) {
 | 
					 | 
				
			||||||
    return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Calculates the Hex encoded HMAC-MD5 for the given key and data
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} k HMAC key
 | 
					 | 
				
			||||||
   * @param {string} d Input string
 | 
					 | 
				
			||||||
   * @returns {string} Raw MD5 string
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function hexHMACMD5(k, d) {
 | 
					 | 
				
			||||||
    return rstr2hex(rawHMACMD5(k, d))
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Calculates MD5 value for a given string.
 | 
					 | 
				
			||||||
   * If a key is provided, calculates the HMAC-MD5 value.
 | 
					 | 
				
			||||||
   * Returns a Hex encoded string unless the raw argument is given.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param {string} string Input string
 | 
					 | 
				
			||||||
   * @param {string} [key] HMAC key
 | 
					 | 
				
			||||||
   * @param {boolean} [raw] Raw output switch
 | 
					 | 
				
			||||||
   * @returns {string} MD5 output
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  function md5(string, key, raw) {
 | 
					 | 
				
			||||||
    if (!key) {
 | 
					 | 
				
			||||||
      if (!raw) {
 | 
					 | 
				
			||||||
        return hexMD5(string)
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      return rawMD5(string)
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (!raw) {
 | 
					 | 
				
			||||||
      return hexHMACMD5(key, string)
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return rawHMACMD5(key, string)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (typeof define === 'function' && define.amd) {
 | 
					 | 
				
			||||||
    define(function () {
 | 
					 | 
				
			||||||
      return md5
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
  } else if (typeof module === 'object' && module.exports) {
 | 
					 | 
				
			||||||
    module.exports = md5
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
    $.md5 = md5
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
})(this)
 | 
					 | 
				
			||||||
							
								
								
									
										2
									
								
								weixin-miniprogram/node_modules/blueimp-md5/js/md5.min.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								weixin-miniprogram/node_modules/blueimp-md5/js/md5.min.js
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,2 +0,0 @@
 | 
				
			|||||||
!function(n){"use strict";function d(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(n,t,r,e,o,u){return d((u=d(d(t,n),d(e,u)))<<o|u>>>32-o,r)}function l(n,t,r,e,o,u,c){return f(t&r|~t&e,n,t,o,u,c)}function g(n,t,r,e,o,u,c){return f(t&e|r&~e,n,t,o,u,c)}function v(n,t,r,e,o,u,c){return f(t^r^e,n,t,o,u,c)}function m(n,t,r,e,o,u,c){return f(r^(t|~e),n,t,o,u,c)}function c(n,t){var r,e,o,u;n[t>>5]|=128<<t%32,n[14+(t+64>>>9<<4)]=t;for(var c=1732584193,f=-271733879,i=-1732584194,a=271733878,h=0;h<n.length;h+=16)c=l(r=c,e=f,o=i,u=a,n[h],7,-680876936),a=l(a,c,f,i,n[h+1],12,-389564586),i=l(i,a,c,f,n[h+2],17,606105819),f=l(f,i,a,c,n[h+3],22,-1044525330),c=l(c,f,i,a,n[h+4],7,-176418897),a=l(a,c,f,i,n[h+5],12,1200080426),i=l(i,a,c,f,n[h+6],17,-1473231341),f=l(f,i,a,c,n[h+7],22,-45705983),c=l(c,f,i,a,n[h+8],7,1770035416),a=l(a,c,f,i,n[h+9],12,-1958414417),i=l(i,a,c,f,n[h+10],17,-42063),f=l(f,i,a,c,n[h+11],22,-1990404162),c=l(c,f,i,a,n[h+12],7,1804603682),a=l(a,c,f,i,n[h+13],12,-40341101),i=l(i,a,c,f,n[h+14],17,-1502002290),c=g(c,f=l(f,i,a,c,n[h+15],22,1236535329),i,a,n[h+1],5,-165796510),a=g(a,c,f,i,n[h+6],9,-1069501632),i=g(i,a,c,f,n[h+11],14,643717713),f=g(f,i,a,c,n[h],20,-373897302),c=g(c,f,i,a,n[h+5],5,-701558691),a=g(a,c,f,i,n[h+10],9,38016083),i=g(i,a,c,f,n[h+15],14,-660478335),f=g(f,i,a,c,n[h+4],20,-405537848),c=g(c,f,i,a,n[h+9],5,568446438),a=g(a,c,f,i,n[h+14],9,-1019803690),i=g(i,a,c,f,n[h+3],14,-187363961),f=g(f,i,a,c,n[h+8],20,1163531501),c=g(c,f,i,a,n[h+13],5,-1444681467),a=g(a,c,f,i,n[h+2],9,-51403784),i=g(i,a,c,f,n[h+7],14,1735328473),c=v(c,f=g(f,i,a,c,n[h+12],20,-1926607734),i,a,n[h+5],4,-378558),a=v(a,c,f,i,n[h+8],11,-2022574463),i=v(i,a,c,f,n[h+11],16,1839030562),f=v(f,i,a,c,n[h+14],23,-35309556),c=v(c,f,i,a,n[h+1],4,-1530992060),a=v(a,c,f,i,n[h+4],11,1272893353),i=v(i,a,c,f,n[h+7],16,-155497632),f=v(f,i,a,c,n[h+10],23,-1094730640),c=v(c,f,i,a,n[h+13],4,681279174),a=v(a,c,f,i,n[h],11,-358537222),i=v(i,a,c,f,n[h+3],16,-722521979),f=v(f,i,a,c,n[h+6],23,76029189),c=v(c,f,i,a,n[h+9],4,-640364487),a=v(a,c,f,i,n[h+12],11,-421815835),i=v(i,a,c,f,n[h+15],16,530742520),c=m(c,f=v(f,i,a,c,n[h+2],23,-995338651),i,a,n[h],6,-198630844),a=m(a,c,f,i,n[h+7],10,1126891415),i=m(i,a,c,f,n[h+14],15,-1416354905),f=m(f,i,a,c,n[h+5],21,-57434055),c=m(c,f,i,a,n[h+12],6,1700485571),a=m(a,c,f,i,n[h+3],10,-1894986606),i=m(i,a,c,f,n[h+10],15,-1051523),f=m(f,i,a,c,n[h+1],21,-2054922799),c=m(c,f,i,a,n[h+8],6,1873313359),a=m(a,c,f,i,n[h+15],10,-30611744),i=m(i,a,c,f,n[h+6],15,-1560198380),f=m(f,i,a,c,n[h+13],21,1309151649),c=m(c,f,i,a,n[h+4],6,-145523070),a=m(a,c,f,i,n[h+11],10,-1120210379),i=m(i,a,c,f,n[h+2],15,718787259),f=m(f,i,a,c,n[h+9],21,-343485551),c=d(c,r),f=d(f,e),i=d(i,o),a=d(a,u);return[c,f,i,a]}function i(n){for(var t="",r=32*n.length,e=0;e<r;e+=8)t+=String.fromCharCode(n[e>>5]>>>e%32&255);return t}function a(n){var t=[];for(t[(n.length>>2)-1]=void 0,e=0;e<t.length;e+=1)t[e]=0;for(var r=8*n.length,e=0;e<r;e+=8)t[e>>5]|=(255&n.charCodeAt(e/8))<<e%32;return t}function e(n){for(var t,r="0123456789abcdef",e="",o=0;o<n.length;o+=1)t=n.charCodeAt(o),e+=r.charAt(t>>>4&15)+r.charAt(15&t);return e}function r(n){return unescape(encodeURIComponent(n))}function o(n){return i(c(a(n=r(n)),8*n.length))}function u(n,t){return function(n,t){var r,e=a(n),o=[],u=[];for(o[15]=u[15]=void 0,16<e.length&&(e=c(e,8*n.length)),r=0;r<16;r+=1)o[r]=909522486^e[r],u[r]=1549556828^e[r];return t=c(o.concat(a(t)),512+8*t.length),i(c(u.concat(t),640))}(r(n),r(t))}function t(n,t,r){return t?r?u(t,n):e(u(t,n)):r?o(n):e(o(n))}"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:n.md5=t}(this);
 | 
					 | 
				
			||||||
//# sourceMappingURL=md5.min.js.map
 | 
					 | 
				
			||||||
							
								
								
									
										1
									
								
								weixin-miniprogram/node_modules/blueimp-md5/js/md5.min.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								weixin-miniprogram/node_modules/blueimp-md5/js/md5.min.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										74
									
								
								weixin-miniprogram/node_modules/blueimp-md5/package.json
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								weixin-miniprogram/node_modules/blueimp-md5/package.json
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,74 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "blueimp-md5",
 | 
					 | 
				
			||||||
  "version": "2.19.0",
 | 
					 | 
				
			||||||
  "title": "JavaScript MD5",
 | 
					 | 
				
			||||||
  "description": "JavaScript MD5 implementation. Compatible with server-side environments like Node.js, module loaders like RequireJS, Browserify or webpack and all web browsers.",
 | 
					 | 
				
			||||||
  "keywords": [
 | 
					 | 
				
			||||||
    "javascript",
 | 
					 | 
				
			||||||
    "md5"
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "homepage": "https://github.com/blueimp/JavaScript-MD5",
 | 
					 | 
				
			||||||
  "author": {
 | 
					 | 
				
			||||||
    "name": "Sebastian Tschan",
 | 
					 | 
				
			||||||
    "url": "https://blueimp.net"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "contributors": [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "name": "Paul Johnston",
 | 
					 | 
				
			||||||
      "url": "http://pajhome.org.uk/crypt/md5"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "repository": {
 | 
					 | 
				
			||||||
    "type": "git",
 | 
					 | 
				
			||||||
    "url": "git://github.com/blueimp/JavaScript-MD5.git"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "license": "MIT",
 | 
					 | 
				
			||||||
  "devDependencies": {
 | 
					 | 
				
			||||||
    "chai": "4",
 | 
					 | 
				
			||||||
    "eslint": "7",
 | 
					 | 
				
			||||||
    "eslint-config-blueimp": "2",
 | 
					 | 
				
			||||||
    "eslint-config-prettier": "8",
 | 
					 | 
				
			||||||
    "eslint-plugin-jsdoc": "36",
 | 
					 | 
				
			||||||
    "eslint-plugin-prettier": "4",
 | 
					 | 
				
			||||||
    "mocha": "9",
 | 
					 | 
				
			||||||
    "prettier": "2",
 | 
					 | 
				
			||||||
    "uglify-js": "3"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "eslintConfig": {
 | 
					 | 
				
			||||||
    "extends": [
 | 
					 | 
				
			||||||
      "blueimp",
 | 
					 | 
				
			||||||
      "plugin:jsdoc/recommended",
 | 
					 | 
				
			||||||
      "plugin:prettier/recommended"
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "env": {
 | 
					 | 
				
			||||||
      "browser": true,
 | 
					 | 
				
			||||||
      "node": true
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "eslintIgnore": [
 | 
					 | 
				
			||||||
    "js/*.min.js",
 | 
					 | 
				
			||||||
    "test/vendor"
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "prettier": {
 | 
					 | 
				
			||||||
    "arrowParens": "avoid",
 | 
					 | 
				
			||||||
    "proseWrap": "always",
 | 
					 | 
				
			||||||
    "semi": false,
 | 
					 | 
				
			||||||
    "singleQuote": true,
 | 
					 | 
				
			||||||
    "trailingComma": "none"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "scripts": {
 | 
					 | 
				
			||||||
    "lint": "eslint .",
 | 
					 | 
				
			||||||
    "unit": "mocha",
 | 
					 | 
				
			||||||
    "test": "npm run lint && npm run unit",
 | 
					 | 
				
			||||||
    "prebuild": "bin/sync-vendor-libs.sh",
 | 
					 | 
				
			||||||
    "build": "cd js && uglifyjs md5.js -c -m -o md5.min.js --source-map url=md5.min.js.map",
 | 
					 | 
				
			||||||
    "preversion": "npm test",
 | 
					 | 
				
			||||||
    "version": "npm run build && git add -A js",
 | 
					 | 
				
			||||||
    "postversion": "git push --tags origin master master:gh-pages && npm publish"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "files": [
 | 
					 | 
				
			||||||
    "js/*.js",
 | 
					 | 
				
			||||||
    "js/*.js.map"
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "main": "js/md5.js"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										17
									
								
								weixin-miniprogram/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								weixin-miniprogram/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,17 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "weixin-miniprogram",
 | 
					 | 
				
			||||||
  "lockfileVersion": 3,
 | 
					 | 
				
			||||||
  "requires": true,
 | 
					 | 
				
			||||||
  "packages": {
 | 
					 | 
				
			||||||
    "": {
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					 | 
				
			||||||
        "blueimp-md5": "^2.19.0"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "node_modules/blueimp-md5": {
 | 
					 | 
				
			||||||
      "version": "2.19.0",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmmirror.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w=="
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "dependencies": {
 | 
					 | 
				
			||||||
    "blueimp-md5": "^2.19.0"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -32,6 +32,7 @@ Page({
 | 
				
			|||||||
      wx.redirectTo({
 | 
					      wx.redirectTo({
 | 
				
			||||||
        url: '/pages/index/login'
 | 
					        url: '/pages/index/login'
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
 | 
					      return
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      // 用户已登录
 | 
					      // 用户已登录
 | 
				
			||||||
      this.userGroup = getUserGroupByRole(this.userInfo.role)
 | 
					      this.userGroup = getUserGroupByRole(this.userInfo.role)
 | 
				
			||||||
@@ -47,16 +48,18 @@ Page({
 | 
				
			|||||||
          wx.navigateTo({
 | 
					          wx.navigateTo({
 | 
				
			||||||
            url: "/pages/scan/entrance"
 | 
					            url: "/pages/scan/entrance"
 | 
				
			||||||
          })
 | 
					          })
 | 
				
			||||||
 | 
					          return
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 开发模式下自动跳转到指定页面,节省开发时间
 | 
					      // // 开发模式下自动跳转到指定页面,节省开发时间
 | 
				
			||||||
    console.log("app.globalData", app.globalData)
 | 
					      // console.log("app.globalData", app.globalData)
 | 
				
			||||||
    if (app.globalData.debugMode) {
 | 
					      // if (app.globalData.debugMode) {
 | 
				
			||||||
      wx.switchTab({
 | 
					      //   wx.switchTab({
 | 
				
			||||||
        url: '/pages/residents/report'
 | 
					      //     url: '/pages/residents/report'
 | 
				
			||||||
      })
 | 
					      //   })
 | 
				
			||||||
 | 
					      //   return
 | 
				
			||||||
 | 
					      // }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,8 @@
 | 
				
			|||||||
// pages/residents/code.js
 | 
					// pages/residents/code.js
 | 
				
			||||||
import SparkMD5 from '../../utils/spark-md5.min'
 | 
					import SparkMD5 from '../../utils/lib/spark-md5.min'
 | 
				
			||||||
import utils from '../../utils/util'
 | 
					import utils from '../../utils/util'
 | 
				
			||||||
import drawQrcode from '../../utils/qrcode/index'
 | 
					// import drawQrcode from '../../utils/qrcode/index'
 | 
				
			||||||
 | 
					import drawQrcode from '../../utils/lib/weapp.qrcode.esm.js'
 | 
				
			||||||
import scanQRCode from '../../utils/scanQRCode'
 | 
					import scanQRCode from '../../utils/scanQRCode'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const app = getApp();
 | 
					const app = getApp();
 | 
				
			||||||
@@ -132,7 +133,7 @@ Page({
 | 
				
			|||||||
            t: t
 | 
					            t: t
 | 
				
			||||||
          }));
 | 
					          }));
 | 
				
			||||||
          console.log("chksum", chksum)
 | 
					          console.log("chksum", chksum)
 | 
				
			||||||
          that.drawCode(`https://epp.cxyxiaomo.com/access/validCode?id=${that.data.userInfo.id}&t=${t}&chksum=${chksum}`, result.data.qrcodeColor)
 | 
					          that.drawCode(`${app.globalData.baseUrl}/access/validCode?id=${that.data.userInfo.id}&t=${t}&chksum=${chksum}`, result.data.qrcodeColor)
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          wx.showToast({
 | 
					          wx.showToast({
 | 
				
			||||||
            title: result.msg,
 | 
					            title: result.msg,
 | 
				
			||||||
@@ -186,15 +187,26 @@ Page({
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        console.log("canvas:", canvas, "res:", res)
 | 
					        console.log("canvas:", canvas, "res:", res)
 | 
				
			||||||
        // 调用方法drawQrcode生成二维码
 | 
					        // 调用方法drawQrcode生成二维码
 | 
				
			||||||
        await drawQrcode(wx, {
 | 
					        const query = wx.createSelectorQuery()
 | 
				
			||||||
          canvas: canvas,
 | 
					        query.select('#myQrcode')
 | 
				
			||||||
          canvasId: 'myQrcode',
 | 
					          .fields({
 | 
				
			||||||
          width: 150,
 | 
					            node: true,
 | 
				
			||||||
          padding: 0,
 | 
					            size: true
 | 
				
			||||||
          background: '#ffffff',
 | 
					          })
 | 
				
			||||||
          foreground: foreground,
 | 
					          .exec((res) => {
 | 
				
			||||||
          text: text,
 | 
					            var canvas = res[0].node
 | 
				
			||||||
        })
 | 
					
 | 
				
			||||||
 | 
					            // 调用方法drawQrcode生成二维码
 | 
				
			||||||
 | 
					            drawQrcode({
 | 
				
			||||||
 | 
					              canvas: canvas,
 | 
				
			||||||
 | 
					              canvasId: 'myQrcode',
 | 
				
			||||||
 | 
					              width: 150,
 | 
				
			||||||
 | 
					              padding: 0,
 | 
				
			||||||
 | 
					              background: '#ffffff',
 | 
				
			||||||
 | 
					              foreground: foreground,
 | 
				
			||||||
 | 
					              text: text,
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
        console.log("end drawQrcode")
 | 
					        console.log("end drawQrcode")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.updateTime();
 | 
					        this.updateTime();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1,2 @@
 | 
				
			|||||||
 | 
					weapp.qrcode.esm.js
 | 
				
			||||||
https://github.com/DoctorWei/weapp-qrcode-canvas-2d
 | 
					https://github.com/DoctorWei/weapp-qrcode-canvas-2d
 | 
				
			||||||
							
								
								
									
										5
									
								
								weixin-miniprogram/utils/lib/weapp.qrcode.esm.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								weixin-miniprogram/utils/lib/weapp.qrcode.esm.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,128 +0,0 @@
 | 
				
			|||||||
// import extend from 'extend'
 | 
					 | 
				
			||||||
import {
 | 
					 | 
				
			||||||
  QRCode,
 | 
					 | 
				
			||||||
  QRErrorCorrectLevel
 | 
					 | 
				
			||||||
} from './qrcode'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// support Chinese
 | 
					 | 
				
			||||||
function utf16to8(str) {
 | 
					 | 
				
			||||||
  var out, i, len, c
 | 
					 | 
				
			||||||
  out = ''
 | 
					 | 
				
			||||||
  len = str.length
 | 
					 | 
				
			||||||
  for (i = 0; i < len; i++) {
 | 
					 | 
				
			||||||
    c = str.charCodeAt(i)
 | 
					 | 
				
			||||||
    if ((c >= 0x0001) && (c <= 0x007F)) {
 | 
					 | 
				
			||||||
      out += str.charAt(i)
 | 
					 | 
				
			||||||
    } else if (c > 0x07FF) {
 | 
					 | 
				
			||||||
      out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F))
 | 
					 | 
				
			||||||
      out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F))
 | 
					 | 
				
			||||||
      out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F))
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F))
 | 
					 | 
				
			||||||
      out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F))
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return out
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function drawQrcode(Taro, opt) {
 | 
					 | 
				
			||||||
  let defaultOpt = {
 | 
					 | 
				
			||||||
    canvasId: 'myQrcode',
 | 
					 | 
				
			||||||
    canvas: null,
 | 
					 | 
				
			||||||
    text: '爱一个人就要勇敢说出来',
 | 
					 | 
				
			||||||
    width: 260,
 | 
					 | 
				
			||||||
    padding: 20,
 | 
					 | 
				
			||||||
    paddingColor: null, // 默认与background一致
 | 
					 | 
				
			||||||
    typeNumber: -1,
 | 
					 | 
				
			||||||
    correctLevel: QRErrorCorrectLevel.H,
 | 
					 | 
				
			||||||
    background: '#ffffff',
 | 
					 | 
				
			||||||
    foreground: '#000000',
 | 
					 | 
				
			||||||
    image: {
 | 
					 | 
				
			||||||
      imageResource: '',
 | 
					 | 
				
			||||||
      width: 80,
 | 
					 | 
				
			||||||
      height: 80,
 | 
					 | 
				
			||||||
      round: true
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  let options = defaultOpt
 | 
					 | 
				
			||||||
  for (let key in opt) {
 | 
					 | 
				
			||||||
    options[key] = opt[key]
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (!options.canvasId && !options.canvas) {
 | 
					 | 
				
			||||||
    console.warn('please set canvasId or canvas!')
 | 
					 | 
				
			||||||
    return
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (!options.paddingColor) options.paddingColor = options.background
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // createCanvas
 | 
					 | 
				
			||||||
  // create the qrcode itself
 | 
					 | 
				
			||||||
  var qrcode = new QRCode(options.typeNumber, options.correctLevel)
 | 
					 | 
				
			||||||
  qrcode.addData(utf16to8(options.text))
 | 
					 | 
				
			||||||
  qrcode.make()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const dpr = Taro.getSystemInfoSync().pixelRatio
 | 
					 | 
				
			||||||
  var canvas = options.canvas
 | 
					 | 
				
			||||||
  const ctx = canvas.getContext('2d')
 | 
					 | 
				
			||||||
  canvas.width = options.width * dpr
 | 
					 | 
				
			||||||
  canvas.height = options.width * dpr
 | 
					 | 
				
			||||||
  const width = canvas.width
 | 
					 | 
				
			||||||
  console.log(`canvas, ctx, width, dpr, qrcode, options`, canvas, ctx, width, dpr, qrcode, options)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // 填充背景色
 | 
					 | 
				
			||||||
  ctx.fillStyle = options.paddingColor
 | 
					 | 
				
			||||||
  // ctx.clearRect(0, 0, width + options.padding * 2, width + options.padding * 2) // 绘制前清空画布
 | 
					 | 
				
			||||||
  ctx.fillRect(0, 0, width + options.padding * 2, width + options.padding * 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  var tileW = (width - options.padding * 2) / qrcode.getModuleCount()
 | 
					 | 
				
			||||||
  var tileH = (width - options.padding * 2) / qrcode.getModuleCount()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // 绘制二维码
 | 
					 | 
				
			||||||
  for (var row = 0; row < qrcode.getModuleCount(); row++) {
 | 
					 | 
				
			||||||
    for (var col = 0; col < qrcode.getModuleCount(); col++) {
 | 
					 | 
				
			||||||
      ctx.fillStyle = qrcode.isDark(row, col) ? options.foreground : options.background
 | 
					 | 
				
			||||||
      var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW))
 | 
					 | 
				
			||||||
      var h = (Math.ceil((row + 1) * tileW) - Math.floor(row * tileW))
 | 
					 | 
				
			||||||
      ctx.fillRect(Math.round(col * tileW) + options.padding, Math.round(row * tileH) + options.padding, w, h);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // 绘制中心图标
 | 
					 | 
				
			||||||
  if (options.image.imageResource) {
 | 
					 | 
				
			||||||
    const imgW = options.image.width * dpr
 | 
					 | 
				
			||||||
    const imgH = options.image.height * dpr
 | 
					 | 
				
			||||||
    const dx = (width - imgW) / 2
 | 
					 | 
				
			||||||
    const dy = (width - imgH) / 2
 | 
					 | 
				
			||||||
    if (options.image.round) {
 | 
					 | 
				
			||||||
      // Logo边框
 | 
					 | 
				
			||||||
      const imgW2 = options.image.width * dpr + 30
 | 
					 | 
				
			||||||
      const dx2 = (width - imgW2) / 2
 | 
					 | 
				
			||||||
      const r2 = imgW2 / 2
 | 
					 | 
				
			||||||
      const cx2 = dx2 + r2;
 | 
					 | 
				
			||||||
      ctx.beginPath();
 | 
					 | 
				
			||||||
      ctx.arc(cx2, cx2, r2, 0, 2 * Math.PI);
 | 
					 | 
				
			||||||
      ctx.fillStyle = '#ffffff'
 | 
					 | 
				
			||||||
      ctx.fill();
 | 
					 | 
				
			||||||
      ctx.restore();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // 画Logo
 | 
					 | 
				
			||||||
      const r = imgW / 2
 | 
					 | 
				
			||||||
      const cx = dx + r;
 | 
					 | 
				
			||||||
      const cy = dy + r;
 | 
					 | 
				
			||||||
      ctx.beginPath();
 | 
					 | 
				
			||||||
      ctx.arc(cx, cy, r, 0, 2 * Math.PI);
 | 
					 | 
				
			||||||
      ctx.clip();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      ctx.drawImage(options.image.imageResource, dx, dy, imgW, imgW);
 | 
					 | 
				
			||||||
      ctx.restore();
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      ctx.drawImage(options.image.imageResource, dx, dy, imgW, imgH)
 | 
					 | 
				
			||||||
      ctx.restore();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return ctx
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default drawQrcode
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user