Skip to content

Commit

Permalink
[e2e] [Complete user profile - unassociated] Ensure first name / last…
Browse files Browse the repository at this point in the history
… name have char limits (#971)

Characters limits and unicode character input tolerance need to be
validated in an e2e test.

## Changes

- Added unicodeConstants.ts file so that special Unicode Constants have
somewhere to go.
- Updated NonAssociatedUserProfile.spec.ts with a new test for character
limit validation

## How to test this PR

1. Pull the branch
2. Run the e2e tests and verify that the 'Complete User Profile with Bad
Unicode -- No Associations -- process' test passes
  • Loading branch information
tanner-ricks authored Sep 30, 2024
1 parent 916f49d commit c6f68dc
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
68 changes: 68 additions & 0 deletions e2e/pages/shared-lending-platform/NonAssociatedUserProfile.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { expect } from '@playwright/test';
import { test } from '../../fixtures/testFixture';
import { controlUnicode } from '../../utils/unicodeConstants';

const expectedNoAssociationsSummaryUrl =
/\/profile\/complete\/summary\/submitted$/;
Expand Down Expand Up @@ -31,3 +32,70 @@ test('Complete User Profile -- No Associations -- process', async ({
await expect(page.locator('#Summary div').first()).toBeVisible();
});
});

test('Complete User Profile with Bad Unicode -- No Associations -- process', async ({
page,
}) => {
test.slow();

await test.step('Fillout Complete User Profile (No Associations) with bad unicode and verify values', async () => {
const expectedValues = {
firstField: controlUnicode.slice(0, 255),
lastField: controlUnicode.slice(0, 255),
// TODO: Update with correct value after char limit in place, see:
// https://github.com/cfpb/sbl-frontend/issues/972
finField: controlUnicode,
// TODO: Update with correct value after char limit in place, see:
// https://github.com/cfpb/sbl-frontend/issues/972
leiField: controlUnicode,
};
const unexpectedValues = {
firstField: controlUnicode,
lastField: controlUnicode,
// TODO: Change to controlUnicode after char limit in place, see:
// https://github.com/cfpb/sbl-frontend/issues/972
finField: '',
// TODO: Change to controlUnicode after char limit in place, see:
// https://github.com/cfpb/sbl-frontend/issues/972
leiField: '',
};

await page.getByLabel('First name').click();
await page.getByLabel('First name').fill(controlUnicode);

await page.getByLabel('Last name').click();
await page.getByLabel('Last name').fill(controlUnicode);

await page.getByLabel('Financial institution name').click();
await page.getByLabel('Financial institution name').fill(controlUnicode);

await page.getByLabel('Legal Entity Identifier (LEI)').click();
await page.getByLabel('Legal Entity Identifier (LEI)').fill(controlUnicode);

await expect(page.getByLabel('First name')).not.toHaveValue(
unexpectedValues.firstField,
);
await expect(page.getByLabel('Last name')).not.toHaveValue(
unexpectedValues.lastField,
);
await expect(page.getByLabel('Financial institution name')).not.toHaveValue(
unexpectedValues.finField,
);
await expect(
page.getByLabel('Legal Entity Identifier (LEI)'),
).not.toHaveValue(unexpectedValues.leiField);

await expect(page.getByLabel('First name')).toHaveValue(
expectedValues.firstField,
);
await expect(page.getByLabel('Last name')).toHaveValue(
expectedValues.lastField,
);
await expect(page.getByLabel('Financial institution name')).toHaveValue(
expectedValues.finField,
);
await expect(page.getByLabel('Legal Entity Identifier (LEI)')).toHaveValue(
expectedValues.leiField,
);
});
});
4 changes: 4 additions & 0 deletions e2e/utils/unicodeConstants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// Test string that contains
// 'invisible' unicode
// control characters
export const controlUnicode = 'ȃ̸̡̡̡̛̛̛̛̛̛̛̮̝̫͓͚͎̘͉̞͙̯̲̬̖͕̥̦̼͈̳͔̟̥̜͕̯͚͈̩̼̪̤̝͉͙͕̭̃̔̈̂̇̅̀͊̀̓͋̽͊̍̄͆́̈́͛͒̈̉̇̑̓̊̋̔̒͆́͋͋̎̄͑̂̌̓̔̀͑̈́̀̑̈̔̊̾͂́̓̐͐͆́͐̀̋̓̄͛͊͗͊̒̿͗́͌̂̀̆̈́̈́͑̑͑̽̌̎́̏̓̈̎͐́̍̽̈͐̈́̃̔̒͒͛̎͆͋̆̈́͒͗̔̿̃͂͑͆͌͐̇̔́̅̄̄͆͋̆̇̀͊́̐̈́̽́̉͆̋͒̍́̊̈͐̐͊́̑͑̌̌́̐̽̇̂̓̆̿͒́̅͛̓͋̏̏̃̆͋͒͐͑̆͛͒́̋̄̈́́̾̍͗͆͊̈́̍͛͗̉̄̓̀̏͋͌͐́̿͌̿͆͂̀̈́̀͑́͆̎͐̾̊̅̅͑̎̆̈́̕͘̚̕̕̕͘̚̚̕͘͘̕̕̕̕͝͝͠͝͠͠͝͝͠͠͝͝͝͠ͅͅs̴̡̡̡̢̨̡̢̨̨̢̧̢̢̨̧̢̨̛̛̬̲̤̙̬̟͎͈̫̬̬̗͙̬̻͕̰̖͈͈͎͓̻̝̻͇̭̙̭̣̳͎͈̪̻̖͇̰̜̤̺̺̩͖̘̲̳̻͓͎̰̞̰͙̰̮̣͇̘̖̟͉̯̦̝̖͉̜̫̝͉̘͎̯̗̗͇̲̯̗̰̯͔̩̦̰̥̗͔̙̟̪̲̼̞̹̦̺̤̻͈̱̥̥͕̟͓̝͉̖̜̫̤̮̘͉͈̥̪͔͇̖̝͚̹̬̤̹̥̲̞̣̤̟͇͇̰͖̟̘̠̘͇̜̩̺̻̰͚̘̯̹͕̺̠̪̻̗̱̜̞̙̺̩̟̩̰̫͉̦̟̰̼͉͎̲̜̠̈̌͆͑̒̐́͌̏̍̑̃͊͋̾̈́̔̑̋̍̃̍͐̾̋̐̈̌͑̈́̍́͋͂͌̅̋͊͊̑̃̉̉̒͒̿͗̋̋̓͐̾͑͗́̇̎̾͑́̉͐͊̂̾̋̇͐̅̈́̏̓͗͐̀̏͗̔̍̇́͐̈̑̐̍̈́͑̇̓̾̈́̓̍͂́̏̋̋͂̅̅͊̓̆̈́̉̿̂͆̊̀͛͆̔̄̂̈́̌͒̍́̾̅̑͒̀̃̓̅̆̊̾̾̂͒̎̅̅̿̌́̊̃̾̍̾̍͒̉́̆̉̓͑͊͊̎̓̈́́̍̓̿͐̅̋̅́̃̒́̉̇̈́̏͒̒̅̅͊̈́͑̇̿̾̏̊̂̽̃̈́̃̈́̀̿̐̍͌̅͑̋͂̓̎̎͛̃̾͒͋̆̃́́͂͋̑̍̈̌̊̋̈̋̾̈͋̎͗̇̌̈́̀̂̇̚͘̕͘̕̚̚̕̕̕̕͘̕͘͘̚̕͜͜͜͜͜͜͜͝͝͝͝͝͝͝͝͝͠͠͝͝͝͠͠ͅͅͅͅͅḑ̶̡̡̨̧̡̨̧̧̡̡̢̡̡̨̡̢̧̛̭͔̦̱̖̰̲̼̥͔̙͓͎͇̗̣̞̘̯̜̟͙̘̫̘̹̲͈̩͈̙̻͚̺͓̭̤̣̣̩̗̬̳̜̜̣̤̥̯̬͙̗̬̩̲̮̱̝͖̱̥̭̙̖̰̻̱̗͖̲̮̬̺͔̞̬͎̫͕̖͇̹̩̳̟̹̯͍̤̥̗̼̩̝̱͉̹̦̣̬̖̜͓̖̘̖̣̳̻͙͓͍̮̥͕͚͉̼̤̤͍̰͖͙̭̫̠̠͓̫͚̯̝̘̰̤͛͊͒́̇̓̅̈́̃̉͂̾͐́̊̑̃̔̈́͋̈́̆̇̎̈͐̽͌̕̕͜͜͜͜͜͜͜͠͝͝ͅͅͅͅͅf̸̨̨̧̨̧̢̨̧̢̧̢̛̛̛̛̬̥̥͚͕̟̻̣͚͖̲̖̥̣͔̩͇̹̦̮͓̰̥̭͔̠̙͙͇̼̣͓̻͕̯̱͉̼̲͔̜͔͇͔̠̝̩̲͕̺̞͇̼̺̹̞̪̯̦̫̯̰̫̥͙̮̺̣̰̜̖͓̗̯̳͕͓̞̭̜̘̘̯̹̠̖̘̮̪̪͈̰̣̤̙̯͖͚͎̖̭͔̗͕͇̹̹̗̬̮̪͔̲̯͚̠͔̫͎͍͔̍̅̌͆͒͌́̐͑̌̏̇̒̌͋̂̃̀̑͒̅̔̔͗͒̾̃͊̆̔̿̀̓̋̀͑̅̒͑̎̔̑̉̍͊͑̂̉͒̔̈́͗̀̈̀̅͛̅̃͂͂͑̋͐͑̄͂͛̅̈͗̀͛̓̉̌̓͛͋̅̄̒̄́̈́̋̓̂̐̄̄́̂̄͊̌͛́̉̈́̃́̂̈́̈́͂̈́̏̋̇͆́̂̒̿̅̈̇͒̍͋̏͆͐̀͌͊͊͒̽̑̽̈́̀͆̎̔́̒̀̇͂́̐͆̊̀͋̓̈́̽̍̀͆̇͐̋̊̆̀͛̌͂̀̒̓̓̔̑͐̈́̿́̊̑̈̿̎̍̍͐̿̇̃͌̀̈́̉͐̓̋͊̇̓͊̄̔͆̍͐̀̎͌͋̓̀̅́̐͌͂̔̀̈̽̀̎͛̕̚̚̕̕͘͘̚͘͘̕̚̕̚̕̚̚̚͘̚͘̕͜͠͠͝͠͝͝͝͝͝͝͝͠͝͠͝ͅͅͅͅͅͅs̷̢̧̧̡̢̡̡̧̧̧̧̡̡̡̨̡̨̧̢̡̡̡̧̢̨̨̛̭̱̹̖͔̦̠̰͇͓͙̖̝̖̝͍̳̟̠͕̫̫͖̦͈̩̳͖̮̗̳̩̼̼̞̘͉͉͚̭̮͎̗͍̤̦͔̮̣̖͇͍͎̝̞̰̥̘̭̙͙͚̥̦̥̗̣̹̫̦̬̖̝̞̳̦̳̰̜̼̘̞͈̙̣̱̟̪̲̼̟̭͈̯̠̰͔̣͎͈̝̗͚͈͕̯̼͇͔͔̬̹͍̥̜͖͍̘̟͈̳͕̙͈̝̜̰͈̗͖̖̻͎̝̝͕͍͕͇̦̫͈͔̞̪̠̻͎̘̲̳̝̺̻̰̙͙̘̪͙̟͖͓̫̘̲͙͖̥͙̫̮̺̪̟̝͍͈̭͍͎͔͕̠̠̤̞͉̘̺̺͉̙͍͕̹̰̦̙̟̯̘̠͍̺̱͇̥͈̗̲̹̤̦̹̟̠̝͚̮̹͉͈͔̤̪̫͕͕͈͎̭̯̣̖̞̰͎̟̤̻̖̠͓̞̹͖͚̋͑́̈̎͌͋̀͗́̑̓̀̿̏̽̐͆͆̿̇̍́̌͗͘͘̕͘̕͜͜͜͜͜͠ͅͅḑ̸̢̧̧̧̢̨̨̢̧̧̢̨̧̡̨̢̧̡̡̨̨̢̨̧̛̛̛̛̛̛̫̩̳̖̘̪͚̭͖̱̥͙̹̖̞̗̫̘͕̲͎͍̖̣͍͈̜̮̤̮̩͍̖̜͉̼̮͙͎̤̪͇̗͚̥̟̺̘̗͉̱̟̼̥̞̜̤̫̫͉͇̳̻͇̣͎͔͇̤̼̭̠̗̭̻̘͈͔̣̞͕̜̗͇͓̥̩͖͎͔̪̝̳̦͖̙͕̟̘̜̝̫̥͈̣̬͎̻͈̝̹̼̱͇̞̬̩̹͓̠͇̩̱̗̰͕̖̺̹̪̗̙̞̱̫̻̩̮̣̳̗̣̣̦̖͚̠̝̗͖̯̣̦̜͈̻̫̟̙͎̳̻͕͎̝̥̭͙̰̻̖̲̜̪͔̼̖̰̠̖̙͓͎̬̼̫̙͂̿̇́̓̔͆́̀͐̂͒͛̀̀̃́̌̔̇͑͊́̌͛̎̓̒̈́̐͗̓̀̎̓̊̊̉̓̇̓̊̅̈́̉̈́͑̌̑͐̔͗̉̑̈́̈́͆́̍͂̋̈́̐̋̋͋̀̾͗̓̐͐̍͊͌͆̔̈́̓̒̂̀͋̀͛͌̆͋̒̀̀͌̾̈̉̇̅̀̀̋̃͆͗̕͜͜͜͜͝͝͝͝͝͝͝͝͝͠͝͝͝͝͠ͅͅͅͅf̵̨̧̨̢̧̡̢̨̢̨̡̡̛̛̛̭͎̜̰̩̞̣̣͕͈̤̟̪̥̗̻̹̳͍̝͓͈̲͙̦͈̰͎̣̖̹̥̪̼̜̻̞̫̘͔͙̞͖̝̣̳̖͚͔̺̳͉̳̞͎͉̼̬̠̝̼͙̖̠̯̼̭̙̞̲̙̟̙̺̖̙̻̥̘͎͕͕͍̠̳͉̰̣̺̩͖̦̼͔̪͉͓̹̳̤̦̆̽͒͗͆̓͛̐̉͑͛́͌̃̉̓͒̍̊͑̋̽̓̂̾̉͐͋͌̿͑͒̋̉̆́͋̄̎̓̅̈́̇̇̔͛̀̽̇̔͋̌̈́͌̇̌̈̈́̅̎̓̇̐͘͘̚̚̚͘͝͝͝͠͠͠͠ͅͅͅg̶̢̡̡̨̧̡̨̢̢̧̢̢̡̡̧̧̡̧̧̢̧̧̨̡̡̛̛̛̛̛̠̟͇̝̟̣̤̮̘̞̫̹͙̳̬̤̼̣͎̖̟͉̺̫͙̟̳͎̝̜̩̫͉̱̹͙̲̤̩̯̻̖̱͇̖̥̗̫̻̘̯̥̤̥̘̜̱̣͚̳͓̹̭̫̹̟̠͈̤̰̩̳͎̖͍̗̹͉͔̗͎̯͚̮̩̥̙͔̥͎̹̯͔̖̣͈͍͙̜̺̤̻̤̥̰͇̖̙̙̦̪̙̞̝͓̠͉̭̦͕̟̱͎̝͚̙̰͕̫̙̤̜̬̲̳̳͈̯̹͉̩̬͎̻͖̠͔̮̦͕̙̳̰̹̭̤̳̟̗̺͈̳̦͙̖͖͔̖̱̱̦̱̖͔̦̟̗͈̖̦̯̫͈̤̬̮͈̞͔̼͇̱͔̹̩̺̬̝̜̬͖͕̦̹̪͔̤̼͖̬̪͈̤̥̪̦̞̰̗̲̤̜̳̯̣̲͍̥̩͔͉̗̠̻̻̬͉̦̯̩̤̦͎̟̗͇̠͓͙̤͎̰̝̙͚͖̜̽͛̎̀͛̇̎̒̿̊͂̑̽͋̍͌͋̓̎̄͌͆̍͑͗̈̅͒̀̃̌̃̈͂̃̊̍̊͊̌̃̌́͗͆̀̿̃̀̈̂̐̈͑̍͊̂̓̍̎͒̐̔̔̀̏̇̄̈̓͊͒̽̓̏͌͆̐̍͛̑̌́̀̌̄͛̽̈́̒̉̋̈́̓̉̅̅̈́̋̓͂͌̌̀̽̿͋̈̾͂̉̌͆͛̄̋̏̓̍͌̈́̍̊̀̂͒̐̅̇̌̈́́̊̓̀̋͊̾̈́͌͌̌͌͋͐̓̍̂̔̾͑̿̿̏̇́̂͐́̈͑̑͛̆͌͐̄̒̽̌͌̈̅̀̉̈́̈́͆̏̍̅̈́͆̓́͆̈̅̓̄̍̉̋͌̀͊̐́́̀̓͐̀͌̀͛͂̏͆̽͌̐̅̈̃͌̌̏͒̍̾̈͛̾̆̊͑̃̿̾̃́͘͘̕̕̚͘̚͘̕̚̕̚͜͜͜͜͜͜͜͜͜͜͜͜͜͝͠͝͝͠͝͝͝͝͝͠͠͝͝͝͝ͅͅͅͅͅḑ̶̨̧̡̢̧̨̨̨̡̨̧̡̡̨̢̢̡̧̨̧̧̨̛̛͈͍̲̻͇̟̬̝̺̱͇͖̻͎͙̘̗̰̭͉͔̪͍̬̯͉̰̞̝̩̙̰͎̻̟͚̗̫͓̮̫̱͕͖̠̼̩̜͖̹͕͍͚̭̜̭͍͇͚̤̼͚̠͕̙͙̞̙͇̘͕̻͕͔̻̪̥͉̳̞̮̲̜̠̗͇̤͖̭̤͉͔̮͚͖̦̫̘̙̱͔̖̩̪̠̼͔̻͔͙͔̰̘̠̪̣͉̫̻̪͉͉͈͖̞̮͇͓͖͎͉̼̺̮̼̣̜̩̩̠̯̭̤̠̦̳͙̱͉̺͈̱̙̖̘̠̳̤̼̬̗̠̮͙͈̠̣̜̰̘̣͓̙̗̞̪͍̺̮͙͓̪̭͉̙̳͙̩̟̖̪̬̹̦̮͇̌̽͑̈̐͛̉͛͐̂̿͆́̏́͛̊͂̊̋́̄̅͌́͗͑̓͂͑̐̎̐͛͐̈́̅̓͊̈́̊͊̽̽̒̈́̇̊͒́̓̉̓̀̋͋̃̉̑͌̃͂̿͐̅̊͌̊̓̚̚̕̚͜͜͜͜͜͝͠͠͠͝͝͝͠͝͝ͅͅͅͅͅͅf̴̢̧̢̢̡̡̢̧̧̢̡̡̢̡̡̧̨̛̛̛̛̙͚̭̥͖̜̘̪͉̭̘̱̖̲̘̝̤̣̙̲̙͍̣̤͇̘͔͖̦̥͔͍͎̟͍͎̤̩̘̘͈͕͖̜̲̱̩̭̬̣̪̦͔͚͇͙͎͔͍͈̪͚̝̭͖̰̥̪͕̫̩̼̘͎͔̺̱̙̖̱̲͕̭̯̖͔̞̪̗̤̼̬̟̳̣͓̱̖̟̮̫͙̦̲̙̯͇͎̯̲̲̼̰̱̼͓̣̮̤͇̗̙̫̗̫͓̟̹͖̹͈̠̱̥̩͔͉̐̄͆͑̉̆̅̀̎͛̑̐̆̅̀̓̓͆̿̍̈͆̄̀̍̐͗͂̈́́̾͛͂̊̋͒͆̅̈͂̑͆̅̃̀̇̅̿̍̈̓̈́́̀̉͒̆̾̀́͌̓́̑̈́̓̀̋̈́͌̈̀̾̄̊̑̉̔̓̈͆̾́̊͋̆̓͐́̊̑̌͗͐͌̋̃́̀͗̋̐̄̂͆̾̂̀͑͗̇̐̋͊͂̄̏͊͐̎͆͗̽̐̀̀̃͛̽͆́́̃͌̉̾͊̋͊͌͗͋͒̃́̇͋̉͒̈͆͗͊̐̀̓̈́͗̈́͌͂͋̉͋̔͌̏̈́̊́͂͐́̆̏̅͑͗͌̎͘͘̚̕͘̕̕̕̚͘̚̚̕͘͘̕͜͜͝͠͝͠͝͝͠͠͝͝͠͠͠͝͝ͅͅͅͅġ̶̡̢̢̧̧̧̛̛̛̛͕̮͉̝̜̬̰̙͉̙̺̳͔̺͚̝̝̳̫͖̹̩͓̠̘͕̮̙͎͖̘̜̞̱̙̩͙͇̦̖͓̼̫͔̭̰͔̣̯̗͉̠̭̭̹̼͓̥̤̪̥̖͚̟̱͍͍͚͈̞͎͖̞̝̮̘̺͓̩̼͚̺̩̯̈́͛̃͌̆͋̀͌̽̐̐̏͂̒̐̈́͗̾͆̆̿̉̈̔̂̌̌̀̽̂͐̆̂̂̈̇̎̓̾͗̆͒̒̄̽̅̀̑̿̔̃̇̈́̈́̀̐͋̋͋̔̅̈́́̽̓̈́̇̓̉̀̑͋͑́̅̿͊̊͒̂̊̂̔͛͆͋̎͌͛̃̽̇̀͗͒́̍̓̊̊̓̅́̒͗́̍̃̉͊̓̃̋͗̈̀͌͐̊̊̋͐̓̍́̊̄͛̍͊̐͒͑͑̀͗̈͒̾́͆̊̓̒̆͂̊́̈́͛̾̿̏̽̐̇̎͛̊̾̽͆̅̓̈́̉̋̋́̈́́͑̐̀̽̃̽͂́͛́̿̓̿̀̉̓̈̒̂̈́̿̔͂̐͋͛̀̃̆̐̂͌͑̐͊͗̍̌̒̽͑̚̕͘̕̕͘͘̚̚̕̕͘̚͘̕͘̕͜͜͝͝͝͝͝͝͝͝͝͝͠͝͝͝͝h̷̡̡̨̨̧̨̢̨̢̧̧̧̢̢̡̡̡̡̢̡̢̡̡̡̨̡̨̡̨̛̛̛̛͎̠͚͙̗͍̯͈̻̘̰̖͕̗͎̭̤̬͙̱̙͖̩͇̱͇̠̺̠̫͈̗͔͚̭̹͕̹͕̫̭̳̰͚̪̰̗̘̻̩͕̟̩̲̪̲̞͖̜̹̪̩̟̫̤̯͖͇̹͉̰͎̫̪̲̞̰̰̳̗̲̗̦͔͈̳̟̻̦̤͕̳̞̯̳͉̫̭̰̲̗̟̰͈̼̥̞̖̪̳̯̠͎̭͇̩̠͈̙͙͕͕̖̗͖͓̜̫̪̺̗̟̗̭̣͔̝̳̮̠̭̘̰͙͈̗͕̲̫̘̬͙͓͎̖̱͇͙̯̳͖̜̪̤̝̟̮͓̖̝̠͓̟͇̺̘̗̠̘̺̘̱͓̮̩̤̺̜̬̦̺͍̩͎̱̰͍̜͔̜̖̝̩͔̯̤͚̤̣̬͙̳͎̪̯͙͙̮͔̲͕̩̩͈͚͓̣̞̫͖̼͈͙̪͈̻̹͍̱͚͎̬̹͉͎͔̫̜͖͙̉͆̈́̄͆́̌͋̀̊̏͑͗́̐̄̓̉͋̍͋̒̔͗̿̂̈́͑͆͆̏̌̋̃͊̆̃̏́͒̑́̎͆͆͂̾̒̈̒͆̐̃́͆̽̐́͌̏͛̔̾͌̓͛̊͆̑̊̾̔̍̊̔͊́̅̾́̓̓̏̌̈́̔̄͒̑͆̾͐͂̾͐͂͗̒̀̉̒̀̑̄̽̄͛͗͛͒̋̑̂͛̌̓͂̾̔͑̎̾̂̑̒̎͌̔̽̑̓̿̍̆̃̽̉͗̽̓̐̾̆́͗͌̏̏͗̽̿̈́̽̈́͗̌̋̄̈́̽̚͘̕̕̕̚̕̕͘̕͘͘͘͜͜͜͜͜͜͜͜͝͠͠͝͠͝͝͝͠͝ͅͅͅͅͅf̴̨̧̡̛͔̹̯̠̜̦̩̞̳͉͉̳̳̙̥̜̤̗̞̗͚̮̱̻͆͌̈́̈́̊̍̎̍̓̄͐̓̉͌͆͐̃̀̈́̌̉̿̈́́̇̀̈͆̌̇͊͛̿͂́̎̐̊́̂͆̿̅͘͜͝g̸̡̧̡̧̢̡̨̧̨̧̧̡̨̡̨̧̨̢̨̨͔̻͈͇̦͕͔̘̖̪̞̠̜͕͚͇̗͙̫̗͔̫̝̲̟͖̫͈̜̮̪̣̰̰̯̤͍͚̗̗̼͔͈̜̼̹̱͓͔̱͔͓͍̥̘̱̫̬̥̜̩̤͈͈̙͙̘̮̣̟͖̯͓͖̥̫͉͇̬̻̝͉̯̳̲̬̗̥̟͎̻̭̣̺̥͔͕̟͙̹̪̞͚̖͔̥̗͖̭̞̫͎̯̟͉̱̫͇̱͙̮̞͕̱͎̜̙̭̻̰̮̝̳̹̗͉͔͓̦̖̘̙͉͉̘̟̖̞̥͕͍̲̜̀̂̿͋́̿͗̽͒̍́̊͑̐̏̿́̊͌̽́͑̌͗̎̌̎̉̃͋͘̕͜͜͜͠͝͠͠ͅͅͅh̸̨̧̢̡̡̧̡̛͎͚̗͕͖̣̰̞̬̺̠̖͖̰̪̬͕̮͙̦̖̰̟̪̖̳̩̖̜̱̺̭̪̮̩̬̹̬̞̭̰̺̦͙̝̠̠͎̪̥̗̣̖̭̤͔̮͉͈͎̣͛͑̉̂͐͊͋̒̾͊́͗̌̔̈́̏͊̆́͋̀͛̋̎̓̈̿͊̊̃̉̂̌̎̍͗̅͘͜͜͠͠͝͝͝͠ͅj̸̧̡̡̡̢̢̡̢̨̨̨̨̧̡̡̡̧̧̢̧̨̨̛̛̛̛͖̼̥̰̠͍̳͈͎̟͓̲̬͉͎͖̖̳͔̝͈͇̘̦̭͙͈̳͖̪̦͚̞͕̜̬̥̦̮̟͚̹̗͈̫̠̮͉̩̥̲̪͎̭͖̜̣͙͖͓̦̱̻̲̖͉̖̮͙̦͔̣̬̤̠̙̖̤͈͕͓̙͉͈̮̭̝̪͉̯̖̤̤̭̭͚̱̪̬͙̱̞͙̪͉̺͍̮̘̩̱̬̳̞̱͙̯̣̯̜̗͕̯̖̬̬͉̠̠̪͉͚͙̤̫̱̪̳̤̤͙̝̳̮͓̼̪̜̳̦̫͓̩̤̞̜̲̣̘̜̖̠̠͚̟̤̳͓͙͈̥̪͕̼͇͔͔͉͔̮͇̹̰̥̳̰̺̼̘̟̗̦̳͍̪̬̤͕̠̭͓͚͓̝̼̙̘͍͉̯͕̬̳̋͛̽̀͑̈́̑͌̀͛̓̈́̈́̂̒̈͆̇̒̔̾̍̍̾̉͒̄̊̆̏̈́͑̇̏͊̿͂̂̊͌̈́͗͐͐̌̃͌̽̋̔̍̏͒̐̑̈́̏͊̃̀̈̈́̎̂̈́͛͂̽́̈̉̆̀̍̏̉́̃͛͊̓̿͛͂̋̃̍̔̏̅̍̄̏͒̋̊̋͗͆̓͌̄̈́̄̀̄̒͗̀̎͊̆̑̐͆̿͗̎́͆̕̕͘͘͜͜͜͜͜͜͜͜͜͜͠͝͝ͅͅͅͅͅͅͅǵ̶̢̧̧̨̧̧̨̢̡̧̡̢̢̢̨̨̡̧̢̛̛̛̤̜͈͇̟̼͖̞̫̫͕̻̞̰̞̹͈̜̜̰͙̳͖̙̝̹͉̭͓͖̹̼̮̳͔̗̮̖͈͙͍̭͎̩̮̼͚̝̱̜̭̠̣̤̤̣̺̰̪͕̤̣̖̣̳̻͙̯̤͉̠̮̜̪̳̦̤̫͕͍͕̺̪̘̰̣̹̹͖͍̹̱̲̣̗͉̙̟̟͈̦͇̘̭̥͈͖̬̙̜̝̦͎̣̗͍̯͉̦͙̫̞̙̹̙̝̣̹̪̝͚̱̝͍͓̜̭͉͎̭̹͎̖̮̙͓̝̱̭̠̯̖͈̯̟̟͈̥̲͖̜͎̠͎̟̩̻̻̗̹͕͙̟̳̘͉͕̪͈̙̞̙͇̬̺̟̻̯̘͚͕̬̝͈͉̣̬͚̻͓͔̩̳̣̜̯̬̳͎̺͖̣̗͇̦͇̞͐͂̽̑̍͛̀̒͛͊͑̀̾̃̔̏̌̐̐̉́̆͋̈́̈̆̐͊̒̽̂̐̓͐̓͋͒̐̈́̀̈́̓̄̿́͊̒̇̒̌̑͗͛̊̇̎̀͒͊̌̒̂̓̆͌̎̔͊̆͋͛̓̾͑̈́̓͋̀̄́͆͒̓̀̉̈́̀̌̊͐̀̀̅͑̿̾̾̿̽͂̈̊̌̔̿̿͗̂̊̊̓̋͂̇͋͛͛̚̕̚̕̚̕̕̚̕̕̕͘̕͘͘͜͜͜͜͜͜͜͝͠͝͝͠͝͝͠͝͝͠ͅͅͅḩ̷̡̢̡̡̢̡̡̡̢̧̢̡̡̛̛̛̞̞̙̦̹͉̭͉͎̯̘̤̤̖̬̦̼̻̮̬͖̟̤̥̤͉̫̲̲͍͚͕̥̹͚̺͚̞̝͖̳̗̬̤̱̜̰̞͇̬͈̣͚͉̜̲̲̱̭̟̰̠̥̜̦̦̤̞͇͇̼̹͉̟̝̼̹̦͙͔̹͈͉̞͖̯̘͈̼̗̦̖͇̭͚͔͖̻̮̞̗͖̟͎̠̦̰͙̯͉̪̘̩̠̻͍͚̻̲̠͓̠̗͙̖̻̯͙͈̖̯̟̦͚̘̹̮̦̲̮̱̩̻̫̫̮̰̥̠̩͍̙̺͇̱̘̝͓̭̱̜̯͎͎̱͕̥͇̬̫͉͕̣̬̩̮̮̮̲̪͈͔̱̬̱̖͓̳͚̥̃̃̓̌͐̾̊̉̔͊̂̍̃͛̈́̃̏́̉̾̓̔̅́̑̎̃́͑͂̑̉̈́́̈̄̾̾̎͆͗͑̆̈̊̋̋̅̌̓̀͋̈́͋͛̈͛̀͗̌̓̈͐͐̿̔̅͒̈́̎̈́̃̒̃͋͗͆̿̏͗̑̈́̎͗̾̆̔͊̓́̾͒͑̆̑̍̑̽̈͋͒̑͆͐̇͌̇̾̈́̏̂͛͆̄͗̌̍̒̈́̄̈́̽͊̂̈́̐̽́̈͌̍̌̄̄̔̅̇̑̃́̄͊̔͗̏̌̀̆̍̍̎̑̓̔̐͆̋̿͆̈́̌̔̓̇́͗̿͗̎͂̋̾͆͛̃̆̔͌̓̌̅̃͊͛̎̔̋̈́͌͊̍̽͌͋́̈̿̆̿̆̔̉̋́́̂̚̚̚̚̕̕̚̕̚͘̕̕͜͜͜͜͜͜͝͝͝͝͝͠͝͠͠͝͠͝͝͝͝ͅͅj̴̢̨̨̨̧̧̛̛̛̛̛̖̥̲̟͔̝̰̘͓̲̜̼̪̦̩̝̲͇̣͓͉̼̦̙͍͇͚̩͇̩̖͍͉̦͎̤̯͉̬̺̜̣̰̪̹͔̜̻̝̹͎̖̝̱̰͔̙̺̤͖̩̤̱̫̞͔̝̖̱̠̬̳̺̘̘̬̗̙̹̗͚̦̥̱̜͇̹̻̻͚̪̞̥̼̜̙̟̼̰͕̣̖͖̗͚͓͚̦͈̣̭͓̳̲̦̜̖̖̣̼̠̩͓̣͕̞̱̤̻̮̳̺̠̗̝̮̦̗̩͔̪̦̤̬̺̦̻̼͌̏̐͗̅́̄̌͌̑͆͂́̆̈́̒͋̔̑͌̔͒̋̀͐̑̓͑̃̍́̿͑͗̐͒̍͐̏̽͆̐̈̒̊́̒̑͑̑̃̓̿͗͗̀͒͋̂̏̽̏̇̉̀͊̽̃̆̔̅͆͊͆͋̆̍̅̃̍̆͑̓͐̌̈́̈̀̒̿̈́̈́̃̀́̈̃́̌́̏̎͆̓̒̆̉̓͋̉̿͛̐̀̈́̀̊̿̈́̒̽́̑͊̍̐̋̉̾̈́́͂̈́̒͆͗̈́̽́͒͛̑̀̽͊̽͋͋̀͊̎̌͂̆̌̎̓̄̓͌̾̾̒̆̋̂́͊̄̉͌̑̇͂̋̔̎͌͊͂̀͂͑̃͛̽̿͌̂̈́̀͑̏̆̈̒̈̅͂̋̌̎̌̅̾̈́̓̒̍̊̆͛͛͒̀̀̽͂̈́͊̆̍̅̐̿̽͑͌͂͆͐̿̍͂̏̌̈́̈́̇́͊͗̃̆̑͐͛̑͗͗̇͐̍̀̽͆̍̚͘̚͘̕͘̕͘̚̚͘͘̚͜͜͜͜͜͝͠͝͝͠͠͝͝͝͠͠͝͠͠͠͝͠ͅͅk̵̨̧̢̢̧̨̨̧̡̧̧̡̨̨̢̨̧̨̨̛̬̖̰̦̟̟̘̠͙͙̗̮̙̤̞̭͇̟̖̘̦͎̹̠̭̘͙̝̹̳̫͇̠̺̠̪̤͍͉̘̲̞̣̦͉͉̻͉͖͍̝̻̤͈͕̼̼͍͙͖͙̤̯̙̟̪̰̤̻͎͙̹̱̩̭̲̱̰͇͙͖̝̩͇͉̲͉͈̱̝͈̫̲͚̣͙̘͔̩̥̝̮̳̭̤͍̘̤̪͈̮̮͉̘̰͕̖̻̦͕̝̭̘̙͇͔̘̥͓̱̪͖̺͍̭͚̹͉̼͙̫̭̜͇̲̯̘̙̹̘͚͔̹͖̟̯͓͍̣̜̮͈͈̥̱̖͙̲̤͓͈̪̰͕̼̍̄͋́̌́̏̀̐̽̑̎̋́̑̐͛͊̂͊̔̉͒̒͑͜͜͜͜͜ͅͅͅ';

0 comments on commit c6f68dc

Please sign in to comment.