Skip to content

Commit

Permalink
feat: simplify num-at
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexAegis committed Oct 28, 2020
1 parent 33ac703 commit 1ada2fd
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 13 deletions.
22 changes: 18 additions & 4 deletions src/lib/typescript/functions/num-at.function.spec.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,29 @@
import { expect } from 'chai';
import { numAt } from './num-at.function';
import { numAt, numAtMath } from './num-at.function';

describe(`Number at`, () => {
it(`should work with numbers longer than the position`, async () => {
describe('Number at', () => {
it('should work with numbers longer than the position', () => {
expect(numAt(123, 1)).to.equal(2);
expect(numAt(7653, 3)).to.equal(3);
expect(numAt(85476847, 0)).to.equal(8);
});

it(`should work with the position being negative`, async () => {
it(`should work with the position being negative`, () => {
expect(numAt(123, -1)).to.equal(0);
expect(numAt(7653, -2)).to.equal(0);
});
});

// tslint:disable: deprecation
describe('Number at (Math)', () => {
it('should work with numbers longer than the position', () => {
expect(numAtMath(123, 1)).to.equal(2);
expect(numAtMath(7653, 3)).to.equal(3);
expect(numAtMath(85476847, 0)).to.equal(8);
});

it('should work with the position being negative', () => {
expect(numAtMath(123, -1)).to.equal(0);
expect(numAtMath(7653, -2)).to.equal(0);
});
});
16 changes: 14 additions & 2 deletions src/lib/typescript/functions/num-at.function.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
/**
* Returns the length of a number.
* Returns the nth digit of a number.
*
* This is actually faster than converting it to a string and getting its length.
* Proof: https://jsperf.com/number-of-digits-in-number
*
* @param n the number of whichs length will be returned
*/
export function numAt(n: number, p: number): number {
return parseInt(n.toString()[p], 10);
}

/**
* Returns the nth digit of a number.
*
* @deprecated left here for novelty reasons
*/
export function numAtMath(n: number, p: number): number {
return Math.floor((n / Math.pow(10, Math.floor(Math.log10(Math.abs(n))) - p)) % 10);
}

// Performance comparison
// tslint:disable-next-line: max-line-length
// https://perf.link/#eyJpZCI6ImtvNHM5emtvYnJ5IiwidGl0bGUiOiJGaW5kaW5nIHRoZSBudGggbnVtYmVyIGluIGFuIGludGVnZXIiLCJiZWZvcmUiOiJmdW5jdGlvbiBudW1BdChuLCBwKSB7XG5cdHJldHVybiBNYXRoLmZsb29yKChuIC8gTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoTWF0aC5sb2cxMChNYXRoLmFicyhuKSkpIC0gcCkpICUgMTApO1xufVxuXG5mdW5jdGlvbiBudW1BdFN0cihuLCBwKSB7XG5cdHJldHVybiBwYXJzZUludChuLnRvU3RyaW5nKClbcF0sIDEwKTtcbn1cbiIsInRlc3RzIjpbeyJuYW1lIjoiU3RyIiwiY29kZSI6Im51bUF0U3RyKDEyMzQ1Njc4LCA1KSIsInJ1bnMiOlszNzMwMDAsMTMyNTAwMCwxMDY3MDAwLDIwMDAwMCwyMzA1MDAwLDI1MDYwMDAsMTc0MDAwMCwyMzI2MDAwLDc4ODAwMCw2NzAwMDAsMTY5NTAwMCwyNTM4MDAwLDg0MjAwMCwxMDAwLDE2NTcwMDAsMTE0ODAwMCwxNjE2MDAwLDU5MTAwMCwzMjAwMDAsMTg4NDAwMCwyNTI2MDAwLDE0MzIwMDAsNjkyMDAwLDE2MzgwMDAsMjU2MzAwMCwzNDMwMDAsMjYyMzAwMCwxMDg5MDAwLDE4NzAwMDAsNzgyMDAwLDEwOTYwMDAsOTYwMDAsMTgwNTAwMCw0OTIwMDAsMTc1OTAwMCwxMTUwMDAwLDIyNjQwMDAsMTQyNzAwMCwyMTU4MDAwLDEwNDAwMCwxMzQ1MDAwLDI1NzAwMCwxNzU2MDAwLDI2OTIwMDAsMTQ5NzAwMCwyOTUwMDAsMjQxNDAwMCwyMjU1MDAwLDg4NjAwMCwxOTg5MDAwLDI2MDgwMDAsMTE1MDAwMCwyNjMwMDAsMjI1MDAwLDExNDUwMDAsMTA3MTAwMCwxODM2MDAwLDIzNzkwMDAsMTIxOTAwMCwyMzE4MDAwLDQ5MDAwMCwxMDAwLDI1NjAwMDAsNTk1MDAwLDIwMDAsMTcwMDAsMTQ0NTAwMCwxNDQ1MDAwLDE4MjcwMDAsMTYyMzAwMCw4MzkwMDAsMjQwMDAsMTkwMDAwMCwzODgwMDAsMjI4MDAwMCwxMDAwLDIwMDAwLDI2NzkwMDAsMTMzOTAwMCwyODE0MDAwLDE3OTAwMCwxMDI1MDAwLDE3NjUwMDAsMTY5MTAwMCwxNjUxMDAwLDI4NjIwMDAsMjcxNjAwMCwyNjgxMDAwLDU5NjAwMCwzNDQwMDAsMTM2MDAwMCwxNzg2MDAwLDkxNjAwMCw0MjQwMDAsMzU1MDAwLDEzOTEwMDAsMjEyNDAwMCwyODUzMDAwLDEyMTkwMDAsOTk4MDAwXSwib3BzIjoxMzQzMjYwfSx7Im5hbWUiOiJNYXRoIiwiY29kZSI6Im51bUF0KDEyMzQ1Njc4LCA1KSIsInJ1bnMiOlszNzUwMDAsNjMyMDAwLDM1MTAwMCw3ODkwMDAsMzMxMDAwLDEzODkwMDAsMTAwMCwxMDYwMDAwLDU1NjAwMCwxNDQwMDAsMTcwODAwMCw5OTUwMDAsMTcwMTAwMCwxMzU5MDAwLDE2ODgwMDAsNjYwMDAsMTAwMCw0OTMwMDAsODA3MDAwLDEzNjMwMDAsNzQ4MDAwLDk3NjAwMCwxMTI1MDAwLDE0MTYwMDAsMTEyNjAwMCw3MDIwMDAsNTI0MDAwLDExODMwMDAsOTc4MDAwLDE2MDUwMDAsNjE2MDAwLDk0MTAwMCwxNTE2MDAwLDc1NzAwMCw1ODAwMDAsMTQwMDAwLDUwMDAsMTAwNTAwMCwxNDQ1MDAwLDY2MDAwLDI1MDAwLDg2NzAwMCw3NDkwMDAsMTQxNDAwMCwxODQwMDAwLDMzNTAwMCw5NjUwMDAsMTUyNzAwMCwxMzYwMDAsMTI0NjAwMCwxMjk2MDAwLDE1MTEwMDAsMTQxMTAwMCwzMDMwMDAsMTEyMjAwMCw0NzUwMDAsMTAwMCwzMDcwMDAsMTE5MzAwMCwyMTkwMDAsMTcxNzAwMCwxMDAwLDE2MjMwMDAsMTAzOTAwMCwxMjU4MDAwLDEwNDkwMDAsMTUyMTAwMCwxMDc1MDAwLDE0NzcwMDAsMTEyNTAwMCw1NzgwMDAsODc1MDAwLDU1MTAwMCwzOTMwMDAsMTA0MDAwMCwxMTUzMDAwLDc3OTAwMCw3OTgwMDAsNjk0MDAwLDE1NjAwMCw5MTMwMDAsMTk4MDAwLDY5MDAwLDY3ODAwMCwxMjYxMDAwLDU5MDAwMCwxNjAzMDAwLDEwMDAsMzM2MDAwLDY0MjAwMCw3NzQwMDAsMTAwMCwxMzY5MDAwLDIxOTAwMCw3MjUwMDAsNTgwMDAsOTcwMDAsMTA1MTAwMCwxMDExMDAwLDEyMzAwMF0sIm9wcyI6ODA4MjYwfV0sInVwZGF0ZWQiOiIyMDIwLTA5LTAxVDIyOjUxOjQxLjkxN1oifQ%3D%3D
20 changes: 13 additions & 7 deletions src/lib/typescript/functions/num-length.function.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
/**
* Returns the length of a number.
*
* This is actually faster than converting it to a string and getting its length.
* Proof: https://jsperf.com/number-of-digits-in-number
*
* @param n the number of whichs length will be returned
* Returns the length of the integer part of a number.
*/
export function numLength(n: number): number {
export function integerLength(n: number): number {
return Math.floor(n).toString().length;
}

/**
* @deprecated
*/
export function integerLengthMath(n: number): number {
return Math.ceil(Math.log10(Math.abs(n) + 1));
}

// Performance comparison
// tslint:disable-next-line: max-line-length
// https://perf.link/#eyJpZCI6ImtvNHM5emtvYnJ5IiwidGl0bGUiOiJGaW5kaW5nIHRoZSBsZW5ndGggb2YgaW50ZWdlciBwYXJ0IG9mIG51bWJlciIsImJlZm9yZSI6ImZ1bmN0aW9uIG51bUxlbmd0aChuKSB7XG5cdHJldHVybiBNYXRoLmNlaWwoTWF0aC5sb2cxMChNYXRoLmFicyhuKSArIDEpKTtcbn1cblxuZnVuY3Rpb24gbnVtTGVuZ3RoU3RyKG4pIHtcblx0cmV0dXJuIG4udG9TdHJpbmcoKS5zcGxpdCgnLicpWzBdLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gbnVtTGVuZ3RoTWl4ZWQobikge1xuXHRyZXR1cm4gTWF0aC5mbG9vcihuKS50b1N0cmluZygpLmxlbmd0aDtcbn1cbiIsInRlc3RzIjpbeyJuYW1lIjoiTWl4ZWQgYXBwcm9hY2ggKGludGVnZXIpIiwiY29kZSI6Im51bUxlbmd0aE1peGVkKDE3NTY3NCkiLCJydW5zIjpbMTEwMDAwLDEyMjQwMDAsMTk3ODAwMCwxODg1MDAwLDE4NjkwMDAsMTAwMCwxNDYwMDAsMTE3NjAwMCwzODAwMDAsNDAwMDAsMTgzODAwMCwzMTAwMCwxNDU3MDAwLDExNTQwMDAsNDk0MDAwLDk0NjAwMCwzMTM1MDAwLDI4NzAwMCwyMDAwMDAwLDQ0MDAwLDE0MDAwLDY2NjAwMCwxNzI3MDAwLDEzNDAwMDAsMTAwMCwzODUwMDAsMTM4MDAwMCwxOTMyMDAwLDI4ODcwMDAsMTQ2NTAwMCwyMjI1MDAwLDU1MDAwMCwxMjkxMDAwLDIzMDAwLDgyNDAwMCwzNzEwMDAsMTcwOTAwMCw4NDQwMDAsMTAwMCwyNTQzMDAwLDEzOTcwMDAsMTMyMjAwMCwzNDMwMDAsMTg0OTAwMCwyNDU4MDAwLDIxMTkwMDAsMTM1NzAwMCwzMjEwMDAsMTg5MzAwMCwyMDAwMCwyMzAwMDAwLDU0NjAwMCwxMDYzMDAwLDEwMDAsMTE4NzAwMCwxNTAwMDAwLDg2MDAwLDIwODAwMCw2MDAwLDY2NDAwMCwyNDgwMDAwLDE0OTQwMDAsNjE3MDAwLDQ5OTAwMCw4MjQwMDAsMjU5MDAwMCwxNjYxMDAwLDQ3NDAwMCwxMDAwLDExMjkwMDAsNDM3MDAwLDIwMDIwMDAsMjEzODAwMCwyNjY2MDAwLDE0MDEwMDAsODU3MDAwLDI0NjUwMDAsNjM5MDAwLDEyNzAwMDAsNTExMDAwLDI3NTUwMDAsMzYwMDAwLDE1MDIwMDAsMTExMTAwMCwxNzgyMDAwLDI3OTUwMDAsNTkwMDAwLDEwMDAwMCwyODAzMDAwLDE1NDYwMDAsMTQwODAwMCwxMzc2MDAwLDgzMTAwMCw5NzgwMDAsMjQzMDAwMCw2ODYwMDAsMTk5MzAwMCwxMzkxMDAwLDEyNDgwMDAsMTE4NDAwMF0sIm9wcyI6MTE4MDM3MH0seyJuYW1lIjoiTWF0aCBvbmx5IChpbnRlZ2VyKSIsImNvZGUiOiJudW1MZW5ndGgoMTc1Njc0KSIsInJ1bnMiOlsyNDkwMDAsMTI5OTAwMCw5MDgwMDAsMTM1MDAwMCwyNzEwMDAwLDg1OTAwMCwyMjcwMDAwLDE1NzIwMDAsMTQ3MDAwLDE1NTkwMDAsMjIxNDAwMCwxMDE5MDAwLDk1MzAwMCwxMzk4MDAwLDU4NDAwMCwxMzU2MDAwLDE2MDgwMDAsMTgwMDAsNzA1MDAwLDE1MzEwMDAsMTQwMDAsNDQ1MDAwLDE0MjIwMDAsMzM1MDAwLDc2NjAwMCw0OTcwMDAsMTM0NTAwMCwxMjQ0MDAwLDE0NzEwMDAsMTg4NjAwMCwzMjMwMDAsMTM3NTAwMCw4NjIwMDAsMTIzOTAwMCwzMDEwMDAsMjUyODAwMCwxOTY2MDAwLDEzMTEwMDAsODgwMDAwLDkyMzAwMCwxNTc1MDAwLDE1MDcwMDAsMjQ4MDAwLDEyNTIwMDAsMTk3ODAwMCwxMjQ1MDAwLDExODAwMDAsMTQzNjAwMCwxMzk5MDAwLDEwMDAsMTkzNDAwMCwxOTAwMCwxMjA4MDAwLDIyODIwMDAsODU2MDAwLDEzOTAwMDAsMTI1MDAwLDE0NzYwMDAsMTQ0MjAwMCw2MDgwMDAsMTY4NjAwMCwxODg4MDAwLDI1NDAwMDAsOTAzMDAwLDE0NTEwMDAsMTAwMCw3NDcwMDAsNzE4MDAwLDEzMTAwMCwxMDY4MDAwLDExMzMwMDAsOTY1MDAwLDE3NTIwMDAsMTU0MTAwMCwyMjkwMDAsNDkyMDAwLDIyNjkwMDAsNzc1MDAwLDk1NzAwMCw2NjgwMDAsMTA1NTAwMCwxNjc5MDAwLDkxMDAwLDEzOTQwMDAsMTc4MjAwMCwxNzc3MDAwLDI1MDAwMCwzNjcwMDAsMTMwODAwMCw0NjcwMDAsNTA2MDAwLDM4OTAwMCw1MzAwMCw1OTIwMDAsNjI0MDAwLDI5NTAwMCwxOTAwMCwxMzExMDAwLDQ3NTAwMCwxMDczMDAwXSwib3BzIjoxMDYwMjQwfSx7Im5hbWUiOiJTdHJpbmcgb25seSAoaW50ZWdlcikiLCJjb2RlIjoibnVtTGVuZ3RoU3RyKDE3NTY3NCkiLCJydW5zIjpbMTQ0ODAwMCw3MDUwMDAsMjUxMDAwLDYxMDAwMCwyNjQwMDAsNjUxMDAwLDkxMDAwMCwxMDc1MDAwLDE5MDAwLDUxNDAwMCwxMTQ4MDAwLDE0NDAwMCwxNTAwMCw5MzEwMDAsMTc3MDAwLDM0OTAwMCwxMDMwMDAwLDE0MDAwLDM0MTAwMCwxMDY1MDAwLDU2MTAwMCwyNTkwMDAsNjczMDAwLDQzMDAwLDYxMTAwMCwxMTgwMDAwLDg4NDAwMCwxMjkwMDAsMTQxMjAwMCwxMjI0MDAwLDE4NTAwMCw0MzEwMDAsMTAxMDAwMCwzNjMwMDAsMTE5NDAwMCw5NTgwMDAsNTM3MDAwLDE4MDAwMCwxMTUxMDAwLDM2MzAwMCw1MzkwMDAsOTc0MDAwLDExOTEwMDAsMTMzMTAwMCw4NTUwMDAsNDQ1MDAwLDgwMDAwMCwxNDg2MDAwLDc4NjAwMCw2NzEwMDAsMTE3NTAwMCwxMTk0MDAwLDYzNTAwMCwxNTg4MDAwLDUzOTAwMCw5OTAwMDAsMTA4MDAwMCwzOTcwMDAsODczMDAwLDI2MzAwMCw2MTEwMDAsODI3MDAwLDEzNjEwMDAsNTU5MDAwLDgxMDAwLDExMzcwMDAsNzQ0MDAwLDk4MDAwMCwyMDAwLDU1MzAwMCwxMTA5MDAwLDM2NTAwMCwxMDg5MDAwLDgzMzAwMCwxNzkwMDAsMTE3ODAwMCw4MjAwMDAsMTU5MDAwMCwxMDAwLDExOTIwMDAsMTEzNTAwMCwxMDAwLDM1NDAwMCw4MDkwMDAsMTA5ODAwMCw5MjgwMDAsMTAxNTAwMCw0MTAwMDAsNzAwMDAwLDI1MDAwMCwyMDMwMDAsNjc0MDAwLDk3MDAwMCw5MTUwMDAsNzAwMCw5ODkwMDAsNjk3MDAwLDYxOTAwMCw1ODIwMDAsNTM2MDAwXSwib3BzIjo3MDkyNDB9LHsibmFtZSI6Ik1peGVkIGFwcHJvYWNoIiwiY29kZSI6Im51bUxlbmd0aE1peGVkKDE3NTY3NC41NCkiLCJydW5zIjpbNTIzMDAwLDg1NTAwMCwxNjQ0MDAwLDEzMzYwMDAsMTg1MjAwMCw3MTYwMDAsMTU4MTAwMCwxNjA5MDAwLDEwNjQwMDAsNTE5MDAwLDE1NzUwMDAsMTk4MDAwMCwyMDMxMDAwLDE4NjMwMDAsMjA3MDAwLDE3MDcwMDAsMjU4MTAwMCwxMjgxMDAwLDE2OTEwMDAsMTEwMDAsMTAzMjAwMCwxOTEwMDAsMTIxMTAwMCwxMDAwLDE5NzYwMDAsMTAyMDAwLDEyNzQwMDAsMjE1MjAwMCwxNDI4MDAwLDk1NjAwMCwyODkzMDAwLDUxMDAwMCw0MDAwLDYxODAwMCwyODEwMDAsMjA4MTAwMCwyMDUwMDAwLDU1MTAwMCwxODYyMDAwLDQ2OTAwMCwxMjI2MDAwLDkxMjAwMCw0NzgwMDAsMTkyOTAwMCwyMzc1MDAwLDg5MDAwMCwyMDE5MDAwLDE3MDEwMDAsNTY3MDAwLDIyMDAwLDE0MjAwMDAsMTk1NDAwMCwxMDAwLDE3MjAwMDAsNjg1MDAwLDI1MTAwMCwyMTgxMDAwLDc3MTAwMCwxOTY2MDAwLDUzMzAwMCwxODA5MDAwLDI3NzAwMCwzODAwMCwxMDAwLDE0NDAwMCw1NTYwMDAsMjA1NzAwMCw3MzcwMDAsMjE0MTAwMCw0NTAwMCwyNjY4MDAwLDEzMDAwLDQzMjAwMCwxNzY2MDAwLDM1MDAwMCwxNTI1MDAwLDE3ODkwMDAsODc0MDAwLDM3NzAwMCwxNDk5MDAwLDExNTQwMDAsMTA3MDAwMCw0MjkwMDAsNTU3MDAwLDE1MjIwMDAsNzI0MDAwLDE1NzgwMDAsMjA2OTAwMCw5NzcwMDAsNDQ1MDAwLDIzODIwMDAsMTQ0NjAwMCw2OTAwMCwxNjgwMDAwLDM3NjAwMCwxNTA4MDAwLDUzNTAwMCwyNTgwMDAsMjI0NDAwMCw0MTcwMDBdLCJvcHMiOjExMjQwNzB9LHsibmFtZSI6Ik1hdGggb25seSIsImNvZGUiOiJudW1MZW5ndGgoMTc1Njc0LjU0KSIsInJ1bnMiOlsyMTQwMDAwLDEwMDAsNTM1MDAwLDE0NDgwMDAsMjExMDAwLDM1NzAwMCwxMzA3MDAwLDk5MTAwMCwxMDQwMDAwLDk3MTAwMCw4NjkwMDAsMTgwMTAwMCw4MTAwMCwxNjEzMDAwLDI0MjAwMCwxNDAyMDAwLDY3MzAwMCw2NDMwMDAsMTAwODAwMCw5MDgwMDAsMjI1MDAwMCwxMDA4MDAwLDEyMDgwMDAsOTE0MDAwLDU1OTAwMCw2NjcwMDAsMjMwMDAsMTc4NDAwMCwxMzUwMDAwLDEwMDYwMDAsNDg1MDAwLDYwNjAwMCwzNTIwMDAsMzIyMDAwLDIxNjAwMCwxNjg5MDAwLDE4MDcwMDAsNTIyMDAwLDE4MDAwMCw3MjAwMDAsMTAwMDAwMCw2MzEwMDAsODMyMDAwLDMyOTAwMCwxODA0MDAwLDU4ODAwMCwxMDQyMDAwLDU1MDAwMCwyOTQwMDAsMjM2MzAwMCw4NDUwMDAsOTA0MDAwLDIwMDQwMDAsODQxMDAwLDU2ODAwMCwxNTc1MDAwLDc2MDAwLDI0MzAwMCwxMjA1MDAwLDEwMTQwMDAsOTM3MDAwLDU1MDAwLDMwMDAsMjYyMDAwLDEwMDAsMTUyNjAwMCw0NjMwMDAsMjA5NzAwMCwxMTQ4MDAwLDE1NTgwMDAsMTQ0MDAwLDE3MDAwLDIwMDAwLDEyNjkwMDAsMTI2NDAwMCwxNjMwMDAwLDMwMzAwMCw1MjIwMDAsNTg4MDAwLDY5MDAwLDQ1NTAwMCwxNjc0MDAwLDM0MDAwMCw0MTIwMDAsMTQ5NDAwMCwxMTEzMDAwLDE0ODEwMDAsMTQzMjAwMCw1NjEwMDAsMTg1MzAwMCwyMzYwMDAwLDc3OTAwMCwxMTA0MDAwLDczNDAwMCwyNDk4MDAwLDE0NzMwMDAsNTIyMDAwLDE3MjMwMDAsMjIwMDAsMzkxMDAwXSwib3BzIjo5MDkxNDB9LHsibmFtZSI6IlN0cmluZyBvbmx5IiwiY29kZSI6Im51bUxlbmd0aFN0cigxNzU2NzQuNTQpIiwicnVucyI6WzY4MDAwMCw5NjEwMDAsMjU0MDAwLDY5ODAwMCw3MDIwMDAsNDgyMDAwLDMyMDAwLDYzNDAwMCwxMjYwMDAsMTAwMDAsMTgwMDAwLDY5NDAwMCw0MDAwLDIwOTAwMCwxNjkwMDAsMzc1MDAwLDEwNDUwMDAsNzU2MDAwLDkyNTAwMCwyNTcwMDAsODY5MDAwLDg1NzAwMCwxMDcwMDAsMTgwMDAwLDEzOTYwMDAsODAwMDAwLDEwNzIwMDAsMTAwMCw1NzcwMDAsNDI0MDAwLDgxMDAwMCwxMTUwMDAsMTE2ODAwMCwyOTQwMDAsNTIwMDAsNjAwMDAwLDczMzAwMCwxMDE2MDAwLDgxMzAwMCwxMDkxMDAwLDIxMTAwMCw3MTUwMDAsMTAwMCwyNTIwMDAsMTgwMDAwLDY5ODAwMCwzNzAwMCw0MTMwMDAsMjU2MDAwLDc1NjAwMCwxNzQwMDAsMTI4MzAwMCw0MTcwMDAsNTA0MDAwLDE4MDAwMCwxNzgwMDAsMTMxNDAwMCwxMjgwMDAsNjQ3MDAwLDYzNTAwMCwyNjQwMDAsMTAyNzAwMCw1MDAwMDAsMjI2MDAwLDYzNzAwMCw0MzAwMDAsMjE2MDAwLDY2NTAwMCwxMjg3MDAwLDc3MjAwMCw5NzQwMDAsMjEwMDAwLDQ1ODAwMCwxNjAwMDAsMzY5MDAwLDg0ODAwMCwxMTEwMDAsODI4MDAwLDY1OTAwMCw0ODkwMDAsOTUwMDAsNjcxMDAwLDk1NjAwMCwyNTMwMDAsNjI4MDAwLDQyNDAwMCw3MTQwMDAsNjYyMDAwLDcxMDAwLDc0NTAwMCw4MDUwMDAsMjAyMDAwLDkwMDAsOTcwMDAwLDEzMDAwMCw1MjcwMDAsMjU2MDAwLDg0MDAwMCwyOTkwMDAsMTAwMF0sIm9wcyI6NTE1MzUwfV0sInVwZGF0ZWQiOiIyMDIwLTA5LTAxVDIzOjAzOjM3LjI1NloifQ%3D%3D

0 comments on commit 1ada2fd

Please sign in to comment.