// Copyright 2020 Garett Tok Ern Liang
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

const problemStrings = [
  '[]',
  '{}',
  '',
  ',',
  '~',
  'undefined',
  'undef',
  'null',
  'NULL',
  '(null)',
  'nil',
  'NIL',
  'true',
  'false',
  'True',
  'False',
  'TRUE',
  'FALSE',
  'None',
  '\\',
  '\\\\',
  '0',
  '1',
  '\$1.00',
  '1/2',
  '1E2',
  '-\$1.00',
  '-1/2',
  '-1E+02',
  '1/0',
  '0/0',
  '-0',
  '+0.0',
  '0..0',
  '.',
  '0.0.0',
  '0,00',
  ',',
  '0.0/0',
  '1.0/0.0',
  '0.0/0.0',
  '--1',
  '-',
  '-.',
  '-,',
  '999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999',
  'NaN',
  'Infinity',
  '-Infinity',
  'INF',
  '1#INF',
  '0x0',
  '0xffffffffffffffff',
  "1'000.00",
  '1,000,000.00',
  '1.000,00',
  "1'000,00",
  '1.000.000,00',
  ",./;'[]\\-=",
  '<>?:\"{}|_+',
  '!@#\$%^&*()`~',
  '\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f',
  '\t\u000b\f              ​    　',
  'ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็ ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็ ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็',
  "'",
  '"',
  "''",
  '\'\"',
  "'\"\'",
  '社會科學院語學研究所',
  'Ⱥ',
  'ヽ༼ຈل͜ຈ༽ﾉ ヽ༼ຈل͜ຈ༽ﾉ',
  '❤️ 💔 💌 💕 💞 💓 💗 💖 💘 💝 💟 💜 💛 💚 💙',
  '𝕋𝕙𝕖 𝕢𝕦𝕚𝕔𝕜 𝕓𝕣𝕠𝕨𝕟 𝕗𝕠𝕩 𝕛𝕦𝕞𝕡𝕤 𝕠𝕧𝕖𝕣 𝕥𝕙𝕖 𝕝𝕒𝕫𝕪 𝕕𝕠𝕘',
  ' ',
  '%',
  '%d',
  '%s%s%s%s%s',
  '{0}',
  '%*.*s',
  '%@',
  '%n',
  'The quic\b\b\b\b\b\bk brown fo\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007x... [Beeeep]',
];
