{"version":3,"file":"static/js/main.6455a0d6.js","mappings":"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AE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACpM,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAChM,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1M,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACnM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAChN,EAAE,EAAE,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACxM,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACnN,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9M,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACvN,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACzN,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACzN,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACvN,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACtN,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACtN,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC5N,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9N,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1N,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EACxO,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EACnO,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAC/N,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAClO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EACpO,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAC/N,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAC/N,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,EACpO,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAC9N,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAClO,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EACtO,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAChO,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EACxO,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IACzO,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAChO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GACtO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAC/N,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GACxO,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GACtO,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAChO,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IACvO,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IACtO,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GACvO,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAClO,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IACrO,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAC1O,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAClO,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GACrO,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GACvO,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAC/N,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IACpO,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GACtO,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IACnO,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAC7N,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IACtO,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GACrO,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IACtO,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GACxO,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IACxN,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAC9N,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAC9N,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAC9N,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAC5N,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IACnN,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAC1N,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAC1N,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KA5IhN/iB,GAkLF2xB,aAAc,CAAC,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAE,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GAlL/P3xB,GAmLF4xB,aAAc,EAAE,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GAnL/P5xB,GAoLF6xB,aAAc,EAAE,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAE,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GApL/P7xB,GAqLF8xB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GArL/P9xB,GAsLF+xB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GAtL/P/xB,GAuLFgyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAG,EAAG,EAAI,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GAvL/PhyB,GAwLFiyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GAxL/PjyB,GAyLFkyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GAzL/PlyB,GA0LFmyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAE,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GA1L/PnyB,GA2LFoyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,GA3L/PpyB,GA4LFqyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA5L9PryB,GA6LFsyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA7L9PtyB,GA8LFuyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA9L9PvyB,GA+LFwyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA/L9PxyB,GAgMFyyB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAhM9PzyB,GAiMF0yB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAjM9P1yB,GAkMF2yB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAlM9P3yB,GAmMF4yB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAnM9P5yB,GAoMF6yB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IApM9P7yB,GAqMF8yB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IArM9P9yB,GAsMF+yB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAtM9P/yB,GAuMFgzB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAvM9PhzB,GAwMFizB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAxM9PjzB,GAyMFkzB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAzM9PlzB,GA0MFmzB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA1M9PnzB,GA2MFozB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA3M9PpzB,GA4MFqzB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA5M9PrzB,GA6MFszB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA7M9PtzB,GA8MFuzB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA9M9PvzB,GA+MFwzB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IA/M9PxzB,GAgNFyzB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAhN9PzzB,GAiNF0zB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,IAjN9P1zB,GAkNF2zB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,GAAI,GAAG,IAlN9P3zB,GAmNF4zB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,GAAI,GAAG,IAnN9P5zB,GAoNF6zB,aAAc,EAAE,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,EAAG,GAAG,IApN9P7zB,GAsNF6jB,YAAc,CAAC,GAAI7jB,GAAU6zB,aAAc7zB,GAAU4zB,aAAc5zB,GAAU2zB,aAAc3zB,GAAU0zB,aAAc1zB,GAAUyzB,aAAczzB,GAAUwzB,aAAcxzB,GAAUuzB,aAAcvzB,GAAUszB,aAActzB,GAAUqzB,aAAcrzB,GAAUozB,aAAcpzB,GAAUmzB,aAAcnzB,GAAUkzB,aAAclzB,GAAUizB,aAAcjzB,GAAUgzB,aAAchzB,GAAU+yB,aAAc/yB,GAAU8yB,aAAc9yB,GAAU6yB,aAAc7yB,GAAU4yB,aAAc5yB,GAAU2yB,aAAc3yB,GAAU0yB,aAAc1yB,GAAUyyB,aAAczyB,GAAUwyB,aAAcxyB,GAAUuyB,aAAcvyB,GAAUsyB,aAActyB,GAAUqyB,aAAcryB,GAAUoyB,aAAcpyB,GAAUmyB,aAAcnyB,GAAUkyB,aAAclyB,GAAUiyB,aAAcjyB,GAAUgyB,aAAchyB,GAAU+xB,aAAc/xB,GAAU8xB,aAAc9xB,GAAU6xB,aAAc7xB,GAAU4xB,aAAc5xB,GAAU2xB,cAtN30B3xB,GAuNF8zB,mBAAqB,CACxB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GACjB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EACjB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EACjB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EACjB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EACjB,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GACf,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EACjB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EACf,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GACjB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EACjB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EACjB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EACjB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EACjB,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GACf,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAtOZ9zB,GAuOF+zB,yBAA2B,CAAC,GAAY,GAAU,GAAU,GAAU,EAAG,GAAU,GAAU,GAAU,IAvOrG/zB,GAqdFimB,OAAS,IAAIxvH,IArdXupG,GAg2BF0pB,kCAA6Dp6I,EAh2B3D0wH,GAq0CFg0B,WAAa,IAAIruI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAr0C5Cq6G,GAs0CFosB,eAAiB,IAAItpJ,MAAc,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAt0ClDk9H,GAu0CFkuB,eAAiB,IAAIprJ,MAAc,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAv0CzDk9H,GAw0CF+B,gBAAkB,IAAIj/H,MAAc,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAx0C1Dk9H,GAy0CFi0B,cAAgB,IAAItuI,IAAY,CAAC,EAAE,EAAE,EAAE,IAz0CrCq6G,GA00CFk0B,cAAgB,IAAIvuI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IA10CvCq6G,GA20CFm0B,cAAgB,IAAIxuI,IAAY,CAAC,EAAE,EAAE,EAAE,IA30CrCq6G,GA40CFo0B,cAAgB,IAAIzuI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IA50CvCq6G,GA60CFq0B,cAAgB,IAAI1uI,IAAY,CAAC,EAAE,EAAE,EAAE,IA70CrCq6G,GA80CFs0B,cAAgB,IAAI3uI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IA90CvCq6G,GA+0CFu0B,cAAgB,IAAI5uI,IAAY,CAAC,EAAE,EAAE,EAAE,IA/0CrCq6G,GAg1CFw0B,cAAgB,IAAI7uI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAh1CvCq6G,GAi1CFy0B,cAAgB,IAAI9uI,IAAY,CAAC,EAAE,EAAE,EAAE,IAj1CrCq6G,GAk1CF00B,cAAgB,IAAI/uI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAl1CvCq6G,GAm1CF20B,cAAgB,IAAIhvI,IAAY,CAAC,EAAE,EAAE,EAAE,IAn1CrCq6G,GAo1CF40B,cAAgB,IAAIjvI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAp1CvCq6G,GAq1CF60B,cAAgB,IAAIlvI,IAAY,CAAC,EAAE,EAAE,EAAE,IAr1CrCq6G,GAs1CF80B,cAAgB,IAAInvI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAt1CvCq6G,GAu1CF+0B,cAAgB,IAAIpvI,IAAY,CAAC,EAAE,EAAE,EAAE,IAv1CrCq6G,GAw1CFg1B,cAAgB,IAAIrvI,IAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAx1CvCq6G,GAy1CFi1B,qBAAuB,CAC1B,CAACj1B,GAAU+0B,cAAc/0B,GAAU+0B,cAAc/0B,GAAUi0B,cAAcj0B,GAAU+0B,cAAc/0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU60B,cAAc70B,GAAUg0B,WAAWh0B,GAAUg0B,YAClM,CAACh0B,GAAUi0B,cAAcj0B,GAAUi0B,cAAcj0B,GAAUi0B,cAAcj0B,GAAU+0B,cAAc/0B,GAAUg0B,WAAWh0B,GAAUm0B,cAAcn0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUg0B,YAClM,CAACh0B,GAAUi0B,cAAcj0B,GAAUi0B,cAAcj0B,GAAUm0B,cAAcn0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUm0B,cAAcn0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUq0B,eAC/L,CAACr0B,GAAU60B,cAAc70B,GAAU+0B,cAAc/0B,GAAUg0B,WAAWh0B,GAAU60B,cAAc70B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU60B,cAAc70B,GAAU20B,cAAc30B,GAAUg0B,YAClM,GACA,CAACh0B,GAAUg0B,WAAWh0B,GAAUm0B,cAAcn0B,GAAUq0B,cAAcr0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUq0B,cAAcr0B,GAAUg0B,WAAWh0B,GAAUu0B,cAAcv0B,GAAUq0B,eAC/L,CAACr0B,GAAU60B,cAAc70B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU20B,cAAc30B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU20B,cAAc30B,GAAU20B,cAAc30B,GAAUy0B,eAC/L,CAACz0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU20B,cAAc30B,GAAUg0B,WAAWh0B,GAAUu0B,cAAcv0B,GAAUy0B,cAAcz0B,GAAUy0B,cAAcz0B,GAAUy0B,eAC/L,CAACz0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUq0B,cAAcr0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUu0B,cAAcv0B,GAAUy0B,cAAcz0B,GAAUu0B,cAAcv0B,GAAUu0B,gBAl2C1Lv0B,GAq2CFk1B,wBAA0B,CAC7B,CAACl1B,GAAU+0B,cAAc,IAAIpvI,IAAY,CAAC,EAAE,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,EAAE,IAAIq6G,GAAU+0B,cAAc,IAAIpvI,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAIq6G,GAAU+0B,eACrM,CAAC,IAAIpvI,IAAY,CAAC,EAAE,EAAE,IAAIq6G,GAAUi0B,cAAc,IAAItuI,IAAY,CAAC,EAAE,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAIq6G,GAAUi0B,cAAc,IAAItuI,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAIq6G,GAAUi0B,cAAc,IAAItuI,IAAY,CAAC,KAC/M,CAAC,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,EAAE,IAAIq6G,GAAUm0B,cAAc,IAAIxuI,IAAY,CAAC,IAAIq6G,GAAUm0B,cAAc,IAAIxuI,IAAY,CAAC,EAAE,EAAE,IAAIq6G,GAAUm0B,cAAc,IAAIxuI,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,KAC/M,CAAC,IAAIA,IAAY,CAAC,EAAE,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAIq6G,GAAU60B,cAAc70B,GAAU60B,cAAc70B,GAAU60B,cAAc,IAAIlvI,IAAY,CAAC,EAAE,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,KAC/M,GACA,CAAC,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,EAAE,IAAIq6G,GAAUq0B,cAAcr0B,GAAUq0B,cAAcr0B,GAAUq0B,cAAc,IAAI1uI,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,EAAE,KACjN,CAAC,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAIq6G,GAAU20B,cAAc,IAAIhvI,IAAY,CAAC,EAAE,EAAE,IAAIq6G,GAAU20B,cAAc,IAAIhvI,IAAY,CAAC,IAAIq6G,GAAU20B,cAAc,IAAIhvI,IAAY,CAAC,EAAE,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,KAC/M,CAAC,IAAIA,IAAY,CAAC,IAAIq6G,GAAUy0B,cAAc,IAAI9uI,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAIq6G,GAAUy0B,cAAc,IAAI9uI,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,EAAE,IAAIq6G,GAAUy0B,cAAc,IAAI9uI,IAAY,CAAC,EAAE,EAAE,KAC/M,CAACq6G,GAAUu0B,cAAc,IAAI5uI,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAIq6G,GAAUu0B,cAAc,IAAI5uI,IAAY,CAAC,EAAE,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,EAAE,EAAE,IAAIq6G,GAAUu0B,gBA92ChMv0B,GAg3CFm1B,gBAAkB,CACrB,CAACn1B,GAAU+0B,cAAc/0B,GAAU80B,cAAc90B,GAAU80B,cAAc90B,GAAU80B,cAAc90B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUg1B,cAAch1B,GAAUg0B,WAAWh0B,GAAUg0B,YAClM,CAACh0B,GAAUg1B,cAAch1B,GAAUi0B,cAAcj0B,GAAUg1B,cAAch1B,GAAUk0B,cAAcl0B,GAAUg0B,WAAWh0B,GAAUg1B,cAAch1B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUg0B,YAClM,CAACh0B,GAAUo0B,cAAcp0B,GAAUk0B,cAAcl0B,GAAUm0B,cAAcn0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUk0B,cAAcl0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUk0B,eAC/L,CAACl0B,GAAU80B,cAAc90B,GAAU60B,cAAc70B,GAAUg0B,WAAWh0B,GAAU60B,cAAc70B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU40B,cAAc50B,GAAU80B,cAAc90B,GAAUg0B,YAClM,GACA,CAACh0B,GAAUg0B,WAAWh0B,GAAUs0B,cAAct0B,GAAUo0B,cAAcp0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUq0B,cAAcr0B,GAAUg0B,WAAWh0B,GAAUo0B,cAAcp0B,GAAUo0B,eAC/L,CAACp0B,GAAU00B,cAAc10B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU40B,cAAc50B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU20B,cAAc30B,GAAU00B,cAAc10B,GAAU40B,eAC/L,CAAC50B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAU00B,cAAc10B,GAAUg0B,WAAWh0B,GAAU00B,cAAc10B,GAAU00B,cAAc10B,GAAUy0B,cAAcz0B,GAAUw0B,eAC/L,CAACx0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUw0B,cAAcx0B,GAAUg0B,WAAWh0B,GAAUg0B,WAAWh0B,GAAUw0B,cAAcx0B,GAAUw0B,cAAcx0B,GAAUw0B,cAAcx0B,GAAUu0B,gBAz3C1Lv0B,GA23CFssB,sBAAwB,CAC3B,CAAC,IAAI3mI,IAAY,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,KACzL,CAAC,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,KACzL,CAAC,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,EAAE,KACzL,CAAC,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,KAEzL,CAAC,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,KAEjL,CAAC,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,KACzL,CAAC,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,KACzL,CAAC,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,KACzL,CAAC,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,CAAC,EAAE,IAAI,IAAIA,IAAY,CAAC,IAAI,IAAIA,IAAY,MAt4CpLq6G,GAw4CFo1B,iBAAmB,CAACp1B,GAAU+0B,cAAc/0B,GAAUi0B,cAAcj0B,GAAUm0B,cAAcn0B,GAAU60B,cAAc70B,GAAUg0B,WAAWh0B,GAAUq0B,cAAcr0B,GAAU20B,cAAc30B,GAAUy0B,cAAcz0B,GAAUu0B,eAx4CzNv0B,GA04CF4sB,yBAA2B,IAAI9pJ,MAAuC,GA14CpEk9H,GA24CF8sB,wBAA0B,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE1gJ,KAAKksG,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,EAAElsG,KAAKksG,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,EAAElsG,KAAKksG,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,EAAElsG,KAAKksG,QAuc3O,0BCv6DO,IAAK+8C,IAQX,SARWA,GAAAA,EAAAA,EAAmB,iBAAnBA,EAAAA,EAAmB,eAAnBA,EAAAA,EAAmB,aAAnBA,EAAAA,EAAmB,iBAAnBA,EAAAA,EAAmB,6BAAnBA,EAAAA,EAAmB,iBAAnBA,EAAAA,EAAmB,mBAQ9B,CARWA,KAAAA,GAAmB,KAiW/B,SA/SA,MAGI1yJ,WAAAA,GAAe,KAFf2yJ,eAAiB,IAAIxyJ,MAAyB,KAK9CyyJ,sBAAgC,EAAE,KAiF3BC,WAAY,CAnFnB,CAIAC,UAAAA,GACI,OAAOzzJ,KAAKszJ,eAAejyJ,OAAS,CACxC,CAEAqyJ,YAAAA,CAAaC,GAET,GAAI3zJ,KAAKyzJ,cACL,GAAIE,EAAUC,OAASP,GAAoB5a,IAAK,CAC5C,MAAMob,EAAa7zJ,KAAKszJ,eAAetzJ,KAAKszJ,eAAejyJ,OAAS,GACpE,GAAIwyJ,EAAWD,OAASP,GAAoB5a,IAMxC,iBALyBnrI,IAArBumJ,EAAWzwJ,MACXywJ,EAAWzwJ,QAEXywJ,EAAWzwJ,MAAQ,EAI/B,OAGA,GAAIuwJ,EAAUC,OAASP,GAAoB5a,IACvC,OAIRz4I,KAAKszJ,eAAevxJ,KAAK4xJ,EAC7B,CAEOG,SAAAA,CAAU7rJ,GACb,IAA0B,IAAtBjI,KAAKyzJ,aACL,OAEJ,IAAIM,EAAY/zJ,KAAKszJ,eAAejyJ,SACpC4G,GACS,GAAKA,GAAK8rJ,IAGnB/zJ,KAAKszJ,eAAiBtzJ,KAAKszJ,eAAejnJ,MAAM,EAAGpE,GACnDjI,KAAKuzJ,sBAAwB,EACjC,CAEOS,gBAAAA,GAEH,IAA0B,IAAtBh0J,KAAKyzJ,aACL,OAEJ,IAAIQ,EAAQj0J,KAAKszJ,eAAejyJ,OAAS,EACrC6yJ,EAAO,EAEX,KAAOD,GAAS,GAAG,CACf,IAAIh+I,EAAOjW,KAAKszJ,eAAeW,GAC/B,GAAIh+I,EAAK29I,OAASP,GAAoBjlJ,OAAS6H,EAAK29I,OAASP,GAAoBpgB,MAAO,CACpF,KAAOihB,EAAO,GACVl0J,KAAKuzJ,sBAAsB,EAC3BvzJ,KAAKszJ,eAAenrJ,MACpB+rJ,IAEJ,MACJ,CACAD,IACAC,GACJ,CACJ,CAEOC,kBAAAA,GACH,IAAIJ,EAAY/zJ,KAAKszJ,eAAejyJ,OACpC,OAAkB,IAAd0yJ,EACO,QAGwB,IAA/B/zJ,KAAKuzJ,qBACE,MAEPQ,IAAc/zJ,KAAKuzJ,qBAAuB,EACnC,OAEJ,KACX,CAIOa,SAAAA,GAIH,GAFAp0J,KAAKwzJ,WAAY,GAEZxzJ,KAAKyzJ,aACN,MAAO,GAEX,IAAIY,EAAUr0J,KAAKszJ,eAGnBtzJ,KAAKuzJ,qBAFW,EAIhB,IAAIn6C,EAAM,EACV,IAAK,MAAMk7C,KAAOD,EAEd,OADAj7C,IACQk7C,EAAIV,MACR,KAAKP,GAAoBj1H,MACrBg7E,GAAQ,EACR,MACJ,KAAKi6C,GAAoB7zB,YACrBpmB,GAAO,EACP,MACJ,KAAKi6C,GAAoBj1B,KACzB,KAAKi1B,GAAoBjlJ,MACzB,KAAKilJ,GAAoBkB,OACrBn7C,GAAQ,EACR,MACJ,KAAKi6C,GAAoB5a,IACrBr/B,GAAO,EACP,MACJ,KAAKi6C,GAAoBpgB,MACrBjzI,KAAKwzJ,WAAY,EACjB,MAAMgB,EAAYF,EAClBl7C,GAAQ,GACR,IAAK,MAAMmnB,KAAQi0B,EAASC,MACxBr7C,GAAQ,EACRA,GAA0B,EAAlBmnB,EAAKm0B,OAAOrzJ,OAMpC,MAAMszJ,EAAO,IAAIpoJ,YAAY6sG,GACvBzgF,EAAO,IAAI6xD,SAASmqE,EAAM,GAChCv7C,EAAM,EACN,IAAK,MAAMk7C,KAAOD,EAEd,OADA17H,EAAK8xD,SAAS2uB,EAAKk7C,EAAIV,MAAMx6C,IACrBk7C,EAAIV,MACR,KAAKP,GAAoBj1H,MACrB,IAAIw2H,EAAW,IAAIv1D,GAAWi1D,EAA6Bl2H,OAAOqkE,QAClE9pE,EAAK8xD,SAAS2uB,EAAKw7C,EAAS74J,GAAGq9G,IAC/BzgF,EAAK8xD,SAAS2uB,EAAKw7C,EAASr5J,GAAG69G,IAC/BzgF,EAAK8xD,SAAS2uB,EAAKw7C,EAAS35J,GAAGm+G,IAC/B,MACJ,KAAKi6C,GAAoB7zB,YACrB,IAAIq1B,EAAeP,EAAmCQ,IACtDn8H,EAAK8xD,SAAS2uB,EAAKhvG,KAAKC,MAAMwqJ,IAAcz7C,IAC5C,MACJ,KAAKi6C,GAAoBj1B,KACzB,KAAKi1B,GAAoBjlJ,MACzB,KAAKilJ,GAAoBkB,OACrB,MAAMQ,EAAYT,EACZn4J,EAAIiO,KAAKC,MAAM0qJ,EAASjgD,GAAG34G,GAC3BC,EAAIgO,KAAKC,MAAM0qJ,EAASjgD,GAAG14G,GAC3BL,EAAIqO,KAAKC,MAAM0qJ,EAASD,KAC9Bn8H,EAAKq8H,SAAS57C,EAAKj9G,GAAGi9G,GAAK,EAC3BzgF,EAAKq8H,SAAS57C,EAAKh9G,GAAGg9G,GAAK,EAC3BzgF,EAAK8xD,SAAS2uB,EAAKr9G,GAAGq9G,IACtB,MACJ,KAAKi6C,GAAoB5a,IACrB,MAAMwc,EAAUX,EAChB,IAAIlxJ,EAAQ,OACSkK,IAAjB2nJ,EAAO7xJ,QACPA,EAAQ6xJ,EAAO7xJ,OAEfA,EAAQ,OACRA,EAAQ,MAEZu1B,EAAKu8H,UAAU97C,EAAKh2G,GAAOg2G,GAAK,EAChC,MACJ,KAAKi6C,GAAoBpgB,MACrB,MAAMuhB,EAAYF,EAClB37H,EAAK8xD,SAAS2uB,EAAKo7C,EAASM,KAAK17C,GAAK,EACtCzgF,EAAKu8H,UAAU97C,EAAKo7C,EAAS5hD,IAAIwG,GAAK,EACtCzgF,EAAKu8H,UAAU97C,EAAKo7C,EAAS3hD,IAAIuG,GAAK,EACtCzgF,EAAKu8H,UAAU97C,EAAKo7C,EAASlJ,IAAIlyC,GAAK,EACtCzgF,EAAKu8H,UAAU97C,EAAKo7C,EAAS1hD,IAAIsG,GAAK,EACtCzgF,EAAKu8H,UAAU97C,EAAKo7C,EAASC,MAAMpzJ,QAAQ+3G,GAAK,EAChD,IAAK,MAAMmnB,KAAQi0B,EAASC,MAAO,CAC/B97H,EAAKq8H,SAAS57C,EAAKmnB,EAAKzrB,GAAG34G,GAAGi9G,GAAK,EACnCzgF,EAAKq8H,SAAS57C,EAAKmnB,EAAKzrB,GAAG14G,GAAGg9G,GAAK,EACnCzgF,EAAKu8H,UAAU97C,EAAKmnB,EAAKm0B,OAAOrzJ,QAAQ+3G,GAAK,EAC7C,IAAK,MAAMlrF,KAAOqyG,EAAKm0B,OACnB/7H,EAAK8xD,SAAS2uB,EAAKlrF,EAAInyB,GAAGq9G,GAAK,EAC/BzgF,EAAK8xD,SAAS2uB,EAAKlrF,EAAI3yB,GAAG69G,GAAK,EAC/BzgF,EAAK8xD,SAAS2uB,EAAKlrF,EAAIjzB,GAAGm+G,GAAK,CAEvC,EAIZp5G,KAAKuzJ,qBAAuBvzJ,KAAKszJ,eAAejyJ,OAAS,EAGzD,OADgB8J,GAAAA,GAAOW,KAAK6oJ,EAAM,EAAGv7C,GAAKx3G,SAAS,SAEvD,CACOuzJ,OAAAA,CAAQC,GACXp1J,KAAKszJ,eAAiB,IAAIxyJ,MAC1Bd,KAAKuzJ,sBAAwB,EAC7B,MAAM8B,EAAUlqJ,GAAAA,GAAOW,KAAKspJ,EAAS,UAErC,IAAIE,EACAl8C,EAAM,EACV,KAAOA,EAAMi8C,EAAQh0J,QAAQ,CACzB,MAAMuyJ,EAAOyB,EAAQhgJ,UAAU+jG,GAC/B,OADoCA,IAC7Bw6C,GACH,KAAKP,GAAoBj1H,MACrB,IAAIriC,EAAIs5J,EAAQhgJ,UAAU+jG,GAAKA,IAC/B,IAAI79G,EAAI85J,EAAQhgJ,UAAU+jG,GAAKA,IAC/B,IAAIn+G,EAAIo6J,EAAQhgJ,UAAU+jG,GAAKA,IAC/B,IAAIw7C,EAAuC,CAAC74J,EAAEA,EAAGR,EAAEA,EAAGN,EAAEA,GACxD+E,KAAKszJ,eAAevxJ,KAAK,CAAC6xJ,KAAMA,EAAMx1H,MAAO,IAAIihE,GAAUu1D,GAAUrwD,gBACrE+wD,OAAgBhoJ,EAChB,MACJ,KAAK+lJ,GAAoB7zB,YACrB,IAAIq1B,EAAcQ,EAAQhgJ,UAAU+jG,GAAKA,IACzCp5G,KAAKszJ,eAAevxJ,KAAK,CAAC6xJ,KAAMA,EAAMkB,IAAKD,IAC3CS,OAAgBhoJ,EAChB,MACJ,KAAK+lJ,GAAoBj1B,KACzB,KAAKi1B,GAAoBjlJ,MACzB,KAAKilJ,GAAoBkB,OACrB,MAAMp4J,EAAIk5J,EAAQ5+I,YAAY2iG,GAAKA,GAAK,EACxC,MAAMh9G,EAAIi5J,EAAQ5+I,YAAY2iG,GAAKA,GAAK,EACxC,MAAM07C,EAAMO,EAAQhgJ,UAAU+jG,GAAKA,IACnCp5G,KAAKszJ,eAAevxJ,KAAK,CAAC6xJ,KAAMA,EAAM9+C,GAAI,IAAInD,GAAQx1G,EAAEC,GAAI04J,IAAIA,IAChEQ,OAAgBhoJ,EAChB,MACJ,KAAK+lJ,GAAoB5a,IACrB,IAAIr1I,EAAQiyJ,EAAQ7lJ,aAAa4pG,GAAKA,GAAK,OACrB9rG,IAAlBgoJ,EAGAA,EAAclyJ,MAAQA,GAEtBkyJ,EAAgB,CAAC1B,KAAMA,EAAMxwJ,MAAOA,GACpCpD,KAAKszJ,eAAevxJ,KAAKuzJ,IAE7B,MACJ,KAAKjC,GAAoBpgB,MACrB,MAAMwhB,EAAQ,IAAI3zJ,MACZ0zJ,EAAgC,CAACZ,KAAKA,EAAMa,MAAMA,EAAOK,IAAI,EAAGliD,GAAG,EAAG04C,GAAG,EAAGz4C,GAAG,EAAGC,GAAG,GAC3F9yG,KAAKszJ,eAAevxJ,KAAKyyJ,GACzBA,EAASM,IAAMO,EAAQhgJ,UAAU+jG,GAAKA,IACtCo7C,EAAS5hD,GAAKyiD,EAAQ7lJ,aAAa4pG,GAAKA,GAAK,EAC7Co7C,EAAS3hD,GAAKwiD,EAAQ7lJ,aAAa4pG,GAAKA,GAAK,EAC7Co7C,EAASlJ,GAAK+J,EAAQ7lJ,aAAa4pG,GAAKA,GAAK,EAC7Co7C,EAAS1hD,GAAKuiD,EAAQ7lJ,aAAa4pG,GAAKA,GAAK,EAC7C,MAAMm8C,EAAQF,EAAQ7lJ,aAAa4pG,GAAKA,GAAK,EAC7C,IAAK,IAAIo8C,EAAM,EAAGA,EAAQD,EAAOC,IAAQ,CACrC,MAAMd,EAAS,IAAI5zJ,MACby/H,EAAkC,CAACzrB,GAAG,IAAInD,GAAQ,EAAE,GAAI+iD,OAAQA,GACtEn0B,EAAKzrB,GAAG34G,EAAIk5J,EAAQ5+I,YAAY2iG,GAAMA,GAAK,EAC3CmnB,EAAKzrB,GAAG14G,EAAIi5J,EAAQ5+I,YAAY2iG,GAAMA,GAAK,EAC3C,MAAMq8C,EAASJ,EAAQ7/I,aAAa4jG,GAAMA,GAAK,EAC/C,IAAK,IAAIipC,EAAO,EAAGA,EAAOoT,EAAQpT,IAAQ,CACtC,MAAM9iD,EAAkC,CAACxjG,EAAE,EAAGR,EAAE,EAAGN,EAAE,GACrDskG,EAAIxjG,EAAIs5J,EAAQjgJ,UAAUgkG,GAAMA,IAChC7Z,EAAIhkG,EAAI85J,EAAQjgJ,UAAUgkG,GAAMA,IAChC7Z,EAAItkG,EAAIo6J,EAAQjgJ,UAAUgkG,GAAMA,IAChCs7C,EAAO3yJ,KAAKw9F,EAChB,CACAk1D,EAAM1yJ,KAAKw+H,EACf,CACA+0B,OAAgBhoJ,EAChB,MACJ,QAEI,YADApD,QAAQyoB,IAAI,YAIxB,CACJ,CAEO+iI,kBAAAA,GACH,IAAIC,EAAa,QACbC,EAAc53B,GAAUuiB,qBACxBsV,GAAsB,EACtBC,GAAuB,EAC3B,QAA4BxoJ,IAAxBtN,KAAKszJ,gBAAgCtzJ,KAAKszJ,eAAejyJ,OAAS,EAClE,IAAK,IAAI4G,EAAEjI,KAAKszJ,eAAejyJ,OAAS,EAAG4G,GAAK,EAAGA,IAAK,CACpD,MAAMqsJ,EAAMt0J,KAAKszJ,eAAerrJ,GAShC,IARmB,IAAf4tJ,GAAwBvB,EAAIV,OAASP,GAAoBj1H,QACzDu3H,EAAcrB,EAA6Bl2H,MAC3Cy3H,GAAa,IAEG,IAAhBC,GAAyBxB,EAAIV,OAASP,GAAoB7zB,cAC1Do2B,EAAetB,EAAmCQ,IAClDgB,GAAc,IAEC,IAAfD,IAAuC,IAAhBC,EACvB,KAER,CAEJ,MAAO,CAACH,EAAYC,EACxB,CAEAG,mBAAAA,GACI,OAAO/1J,KAAKszJ,eAAezjG,QAAQtsC,GAAOA,EAAGqwI,OAASP,GAAoBj1B,MAAQ76G,EAAGqwI,OAASP,GAAoBjlJ,OAASmV,EAAGqwI,OAASP,GAAoBkB,SAAQlzJ,MACvK,GCnWS20J,GAAkB,UAElBC,GACA,YADAA,GAEF,UAGEC,GACK,kBADLA,GAEH,SAFGA,GAGA,aAGAC,GACJ,QADIA,GAEI,iBAFJA,GAGE,eAHFA,GAIF,UAJEA,GAKD,WAGN7oG,GAAS,kBAEF8oG,GAAmB,CAC9BC,yBAA0B,IAC1BC,uCAAyC,sBAAqBN,UAC9DO,uBAAwBjpG,GACxBkpG,MAAQ,GAAElpG,MAAU6oG,KACpBM,YAAc,GAAEnpG,MAAU6oG,KAC1BO,cAAgB,GAAEppG,MAAU6oG,KAC5BQ,SAAW,GAAErpG,MAAU6oG,KACvBS,QAAU,GAAEtpG,MAAU6oG,KACtBU,OAAS,GAAEvpG,MAAU4oG,KACrBY,UAAY,GAAExpG,MAAU4oG,KACxBa,eAAiB,GAAEzpG,MAAU4oG,KAC7Bc,qBAAsB,gCACtBC,mBAAoB,6CCzBf,MAAMC,WAA0BC,GAAa5zJ,EAAAA,YAEhD5C,WAAAA,CAAY1B,GACRua,MAAMva,GAENe,KAAKygB,MAAQ,CACT22I,SAAS,EACTC,mBAAoBp4J,EAAMq4J,iBAElC,CAEAzoH,iBAAAA,GAGI7uC,KAAKO,SAAS,CAAE62J,SAAQ,GAC5B,CAEApgH,kBAAAA,CAAmBj2B,EAA6Cw2I,GACxDx2I,EAAUu2I,mBAAqBt3J,KAAKf,MAAMq4J,kBAC1Ct3J,KAAKO,SAAS,CAAC82J,mBAAoBr3J,KAAKf,MAAMq4J,kBAEtD,CAEAr8G,oBAAAA,GACIj7C,KAAKw3J,cACT,CAGAjzJ,MAAAA,GACI,IAAIkzJ,EAAcz3J,KACd03J,EAAe,IAAE13J,KAAKf,MAAM04J,SAAW,IAc3C,OAbAD,GAAe,kHACX13J,KAAKygB,MAAM42I,mBACXK,GAAe,8BAEfA,GAAe,mCAEgBpqJ,IAA/BtN,KAAKf,MAAM24J,kBACXF,GAAgB,IAAG13J,KAAKf,MAAM24J,mBAE9B53J,KAAKf,MAAM44J,eACXH,GAAe,yBAIfI,EAAAA,GAAAA,KAAA,OAAKl5J,IAAOoB,KAAK+3J,UAEb91I,UAAWy1I,EACXr1I,QAAUhnB,GAAsBo8J,EAAYp1I,QAAQhnB,EAAG2E,KAAKf,OAC5D+4J,cAAgB38J,GAAsBo8J,EAAYQ,UAAU58J,EAAG2E,KAAKf,OACpEi5J,cAAgB78J,IAA0Bo8J,EAAYU,WAAW98J,EAAG2E,KAAKf,MAAM,EAC/Em5J,YAAc/8J,IAA0Bo8J,EAAYY,YAAYh9J,EAAG2E,KAAKf,MAAM,EAC9Eq5J,cAAgBj9J,GAAyBo8J,EAAYc,YAAYl9J,EAAG2E,KAAKf,OACzEu5J,gBAAkBn9J,GAAyBo8J,EAAYgB,YAAYp9J,EAAG2E,KAAKf,OAAOqC,SAEjFtB,KAAKf,MAAMy5J,SAExB,EAWG,MAAMC,WAAyBxB,GAAa5zJ,EAAAA,YAE/C5C,WAAAA,CAAY1B,GACRua,MAAMva,GAENe,KAAKygB,MAAQ,CACT22I,SAAS,EACTC,mBAAoBp4J,EAAMq4J,iBAElC,CAEAzoH,iBAAAA,GAGI7uC,KAAKO,SAAS,CAAE62J,SAAQ,GAC5B,CAEApgH,kBAAAA,CAAmBj2B,EAA4Cw2I,GACvDx2I,EAAUu2I,mBAAqBt3J,KAAKf,MAAMq4J,kBAC1Ct3J,KAAKO,SAAS,CAAC82J,mBAAoBr3J,KAAKf,MAAMq4J,kBAEtD,CAEAr8G,oBAAAA,GACIj7C,KAAKw3J,cACT,CAGAjzJ,MAAAA,GACI,IAAIkzJ,EAAcz3J,KACd03J,EAAe,IAAE13J,KAAKf,MAAM04J,SAAW,8BAAgC,IAc3E,OAbAD,GAAe,6CACX13J,KAAKygB,MAAM42I,mBACXK,GAAe,6BAEfA,GAAe,kCAEgBpqJ,IAA/BtN,KAAKf,MAAM24J,kBACXF,GAAgB,IAAG13J,KAAKf,MAAM24J,mBAE9B53J,KAAKf,MAAM44J,eACXH,GAAe,yBAIfI,EAAAA,GAAAA,KAAA,OAAKl5J,IAAOoB,KAAK+3J,UACb91I,UAAWy1I,EACXr1I,QAAUhnB,GAAsBo8J,EAAYp1I,QAAQhnB,EAAG2E,KAAKf,OAC5D+4J,cAAgB38J,GAAsBo8J,EAAYQ,UAAU58J,EAAG2E,KAAKf,OACpEi5J,cAAgB78J,IAA0Bo8J,EAAYU,WAAW98J,EAAG2E,KAAKf,MAAM,EAC/Em5J,YAAc/8J,IAA0Bo8J,EAAYY,YAAYh9J,EAAG2E,KAAKf,MAAM,EAC9Eq5J,cAAgBj9J,GAAyBo8J,EAAYc,YAAYl9J,EAAG2E,KAAKf,OACzEu5J,gBAAkBn9J,GAAyBo8J,EAAYgB,YAAYp9J,EAAG2E,KAAKf,OAAOqC,SAEjFtB,KAAKf,MAAMy5J,SAExB,ECpGJ,MAAME,WAAmBC,GAAct1J,EAAAA,YAEnC5C,WAAAA,CAAY1B,GACRua,MAAMva,GACNe,KAAK84J,WAAW75J,EAAM85J,WAEtB/4J,KAAKygB,MAAQ,CACT22I,SAAS,EAEjB,CAEAvoH,iBAAAA,GAGI7uC,KAAKO,SAAS,CAAE62J,SAAQ,SACS9pJ,IAA7BtN,KAAKf,MAAM+5J,OAAOC,QAClBj5J,KAAKf,MAAM+5J,OAAOC,QAE1B,CAEAjiH,kBAAAA,CAAmBj2B,EAAsCw2I,GACjDv3J,KAAKf,MAAM+5J,MAInB,CAEA/9G,oBAAAA,GACA,CAGA12C,MAAAA,GACI,IAAIkzJ,EAAcz3J,KAElB,OACI83J,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,yBAAyBwL,MAAO,CAACyrI,SAAS,IAAKC,UAAU,KAAM1iG,SAAS,WAAYh0B,KAAK,EAAGE,IAAK,EAAG/V,OAAO,GAAIwsI,gBAAgB,yBAAyB93J,UACvKw2J,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,uCAAuCwL,MAAO,CAACgpC,SAAS,WAAYh0B,KAAK,EAAGE,IAAK3iC,KAAKf,MAAM+5J,OAAOK,KAAK/3J,UACnHg4J,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,yFAAwF3gB,SAAA,EACnGg4J,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,0DAAyD3gB,SAAA,EACpEw2J,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,aAAY3gB,SAAEtB,KAAKf,MAAM+5J,OAAOO,SAC/CzB,EAAAA,GAAAA,KAACa,GAAgB,CAACI,UAAW/4J,KAAKw5J,KAC9Bd,SAASZ,EAAAA,GAAAA,KAAA,QAAAx2J,SAAM,MACfm4J,OAAUz5J,KAAK05J,iBACfpC,kBAAoB,EACpBqC,cAAeC,UACPnC,EAAYx4J,MAAM+5J,OAAOa,UACzBpC,EAAYx4J,MAAM+5J,OAAOa,YAEtB,aAIYvsJ,IAA9BtN,KAAKf,MAAM+5J,OAAOc,SAAwBhC,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,KACvCjC,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,4BAA2B3gB,SACrCtB,KAAKf,MAAM+5J,OAAOc,eAIIxsJ,IAA9BtN,KAAKf,MAAM+5J,OAAOgB,SAAwBlC,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,KACvCjC,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,uBAAsB3gB,SAChCtB,KAAKf,MAAM+5J,OAAOgB,QAAQ/2J,KAAIkjD,IAC3B2xG,EAAAA,GAAAA,KAACa,GAAgB,CAACI,UAAW/4J,KAAKw5J,KAE9Bd,QAASvyG,EAAE8zG,OACXR,OAAUz5J,KAAK05J,iBACfpC,kBAAoB,EACpB4C,YAAe/zG,EAAE+zG,YACjBP,cAAeC,eAA4CzzG,EAAEg0G,WAC7DxC,SAAYxxG,EAAEwxG,UANPxxG,EAAEi0G,eAkBzC,EAYG,MAAMC,WAAoB92J,EAAAA,UAM7B5C,WAAAA,CAAY1B,GACRua,MAAMva,GAAO,KALjB2gH,MAAQ,ufAAuf,KAC/f06C,cAAQ,OACRC,oBAAc,EAKVv6J,KAAKu6J,eAAiB,IAAIC,GAC1Bx6J,KAAKs6J,SAAWvkE,EAAAA,YAChB/1F,KAAKygB,MAAQ,CACTg6I,aAAa,EAErB,CAEA5rH,iBAAAA,GAEI7uC,KAAKO,SAAS,CAAEk6J,aAAa,GAEjC,CAGAl2J,MAAAA,GACI,IAAIkzJ,EAAcz3J,KAElB,MAAM06J,EAAiBA,MACnBt1J,EAAAA,EAAAA,YAAU,KACN,MAAMu1J,EAAQlD,EAAY6C,SAASn7J,SACG,IAAlCs4J,EAAYh3I,MAAMg6I,aAAwBE,SAElBrtJ,IAApBqtJ,EAAMC,UACN56J,KAAKO,SAAS,CAACk6J,aAAa,KAG5Bz6J,KAAKu6J,eAAepF,QAAQn1J,KAAK4/G,OACjC+6C,EAAOE,eAAe,EAAG,IAAK76J,KAAKu6J,eAAejH,gBAAgB,KAAKtzJ,KAAKf,MAAM67J,UAAU,IAC5FrD,EAAYl3J,SAAS,CAACk6J,aAAa,KAE3C,KAGG3C,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,KAIX,OACIT,EAAAA,GAAAA,MAAAS,GAAAA,SAAA,CAAAz4J,SAAA,EACIw2J,EAAAA,GAAAA,KAAC4C,EAAc,KACf5C,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,uCAAuCwL,MAAO,CAACgpC,SAAS,WAAYh0B,KAAK,EAAGE,IAAK3iC,KAAKf,MAAMo6J,IAAKzsI,OAAO,KAAKtrB,UACxHw2J,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,sDAAsDwL,MAAO,CAAC/yB,MAAO,IAAKC,OAAO,KAAK2G,UACjGw2J,EAAAA,GAAAA,KAACiD,GAAK,CACFn8J,IAAMoB,KAAKs6J,SACXU,WAAY,QACZjC,UAAW/4J,KAAKf,MAAM85J,UACtBpB,UAAU,EACVsD,MAAO,QACPC,YAAc,EACdC,aAAe,EACfC,cAAgB,EAChBC,YAAa,EACbC,QAAS,EACTC,cAAgBh8D,MAChBi8D,UAAU,EACVC,UAAWz9B,GAAUuiB,qBACrBmb,eAAgB,EAChBC,eAAgB,EAChBC,YAAa,EACbC,iBAAkBA,CAACj9I,EAAgBg1I,EAAcz6I,EAAc2iJ,KAAsB97J,KAAKf,MAAM85J,UAAUgD,gBAAgBn9I,EAAQg1I,EAAMz6I,EAAM2iJ,EAAU,UAMhL,EAaG,MAAME,WAAoBz4J,EAAAA,UAM7B5C,WAAAA,CAAY1B,GACRua,MAAMva,GAAO,KALjBg9J,MAAQ,mMAAkM,KAC1M3B,cAAQ,OACRC,oBAAc,EAKVv6J,KAAKu6J,eAAiB,IAAIC,GAC1Bx6J,KAAKs6J,SAAWvkE,EAAAA,YAChB/1F,KAAKygB,MAAQ,CACTg6I,aAAa,EAErB,CAGA5rH,iBAAAA,GAEI7uC,KAAKO,SAAS,CAAEk6J,aAAa,GAEjC,CAGAl2J,MAAAA,GACI,IAAIkzJ,EAAcz3J,KAClB,MAAMk8J,EAAaA,IAIR,IAAI78D,GAAU,CAACtjG,EAHZqO,KAAKC,MAAsB,IAAhBD,KAAK46B,UAGFzpC,EAFd6O,KAAKC,MAAsB,IAAhBD,KAAK46B,UAEA/pC,EADhBmP,KAAKC,MAAsB,IAAhBD,KAAK46B,YACIu/D,cAG5Bm2D,EAAiBA,MACnBt1J,EAAAA,EAAAA,YAAU,KACN,MAAMu1J,EAAQlD,EAAY6C,SAASn7J,SACG,IAAlCs4J,EAAYh3I,MAAMg6I,aAAwBE,SAElBrtJ,IAApBqtJ,EAAMC,UACN56J,KAAKO,SAAS,CAACk6J,aAAa,KAG5BE,EAAOwB,UAAU,IAAIxqD,GAAQ,GAAG,IAAKuqD,IAAc,EAAG,EAAI9xJ,KAAKC,MAAsB,EAAhBD,KAAK46B,WAC1E21H,EAAOwB,UAAU,IAAIxqD,GAAQ,GAAG,IAAKuqD,IAAc,EAAG,EAAI9xJ,KAAKC,MAAsB,EAAhBD,KAAK46B,WAC1E21H,EAAOwB,UAAU,IAAIxqD,GAAQ,GAAG,IAAKuqD,IAAc,EAAG,EAAI9xJ,KAAKC,MAAsB,EAAhBD,KAAK46B,WAC1EyyH,EAAY8C,eAAepF,QAAQsC,EAAYwE,OAC/CtB,EAAOE,eAAe,GAAI,IAAKpD,EAAY8C,eAAejH,gBAAgB,KACtEmE,EAAYl3J,SAAS,CAACk6J,aAAa,GAAM,IAE1C,GACHhD,EAAYl3J,SAAS,CAACk6J,aAAa,KAE3C,KAGG3C,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,KAIX,OACIT,EAAAA,GAAAA,MAAAS,GAAAA,SAAA,CAAAz4J,SAAA,EACIw2J,EAAAA,GAAAA,KAAC4C,EAAc,KACf5C,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,uCAAuCwL,MAAO,CAACgpC,SAAS,WAAYh0B,KAAK,EAAGE,IAAK3iC,KAAKf,MAAMo6J,IAAKzsI,OAAO,KAAKtrB,UACxHw2J,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,sDAAsDwL,MAAO,CAAC/yB,MAAO,GAAIC,OAAO,IAAI2G,UAC/Fw2J,EAAAA,GAAAA,KAACiD,GAAK,CACFn8J,IAAMoB,KAAKs6J,SACXU,WAAY,QACZjC,UAAW/4J,KAAKf,MAAM85J,UACtBpB,UAAU,EACVsD,MAAO,QACPC,YAAc,EACdC,aAAe,EACfC,cAAgB,EAChBC,YAAa,EACbC,QAAS,EACTC,cAAgBh8D,MAChBi8D,UAAU,EACVC,UAAWz9B,GAAUuiB,qBACrBmb,eAAgB,EAChBC,eAAgB,EAChBC,YAAa,EACbC,iBAAkBA,CAACj9I,EAAgBg1I,EAAcz6I,EAAc2iJ,KAAsB97J,KAAKf,MAAM85J,UAAUgD,gBAAgBn9I,EAAQg1I,EAAMz6I,EAAM2iJ,EAAU,UAMhL,EAKJ,0BC3RA,MAAMM,WAAqBvD,GAAct1J,EAAAA,YAErC5C,WAAAA,CAAY1B,GACRua,MAAMva,GACNe,KAAK84J,WAAW75J,EAAM85J,WAEtB/4J,KAAKygB,MAAQ,CACT22I,SAAS,EAEjB,CAEAvoH,iBAAAA,GAGI7uC,KAAKO,SAAS,CAAE62J,SAAQ,IADNp3J,KAENw5J,KAAM6C,eAFAr8J,KAE2Bf,MAAM+5J,OAAOoB,IAE9D,CAEApjH,kBAAAA,CAAmBj2B,EAAwCw2I,GACnDv3J,KAAKf,MAAM+5J,MAInB,CAEA/9G,oBAAAA,GACA,CAGA12C,MAAAA,GACI,IAAIkzJ,EAAcz3J,KACds8J,EAAc,oBACdC,EAAUv8J,KAAKf,MAAM+5J,OAAOn+H,KAAO76B,KAAKf,MAAMu9J,MAC9CC,EAAWz8J,KAAKf,MAAM+5J,OAAO0D,MAAQ18J,KAAKf,MAAMu9J,MAChDG,EAAS38J,KAAKf,MAAM+5J,OAAOK,IAAMr5J,KAAKf,MAAMu9J,MAKhD,YAJgBlvJ,IAAZivJ,IACAD,EAAc,KAIdxE,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,yBAAyBwL,MAAO,CAACyrI,SAAS,IAAKC,UAAU,KAAM1iG,SAAS,WAAYh0B,KAAK,EAAGE,IAAK,EAAG/V,OAAO,GAAIwsI,gBAAgB,yBAC1IhB,YAAcwE,IACXnF,EAAYx4J,MAAM49J,WAAW,EAC7Bv7J,UAEPw2J,EAAAA,GAAAA,KAAA,OAAK71I,UAAY,WAAUq6I,IAAe7uI,MAAO,CAACgpC,SAAS,WAAYh0B,KAAK85H,EAAS55H,IAAKg6H,EAAQjiK,MAAO+hK,EAAU7vI,OAAO,IAAItrB,UAC1Hg4J,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,gGAA+F3gB,SAAA,MAC3EgM,IAA9BtN,KAAKf,MAAM+5J,OAAO8D,SAAwBhF,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,IAAQ/5J,KAAKf,MAAM+5J,OAAO8D,SAErExD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,sBAAqB3gB,SAAA,EAChCw2J,EAAAA,GAAAA,KAAA,QAAM71I,UAAU,+BAA8B3gB,SAAC,uCAC/Cg4J,EAAAA,GAAAA,MAAA,SAAOr3I,UAAU,yCAAyCm2I,YAAc/8J,GAAIA,EAAEq7B,kBAAkBp1B,SAAA,EACxFw2J,EAAAA,GAAAA,KAACt4I,GAAAA,EAAM,CACHnS,SAAS,EACTnT,MAAM,MACN0oB,SAAWg6I,IACPnF,EAAY+B,KAAM6C,eAAe,OACjC5E,EAAYx4J,MAAM49J,WAAW,KAErC/E,EAAAA,GAAAA,KAAA,QAAM71I,UAAU,aAAY3gB,SAAC,kDAYzD,EAGG,MAAMy7J,GAA8C,CACvD3C,IAAK,kBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,cACJw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,wDACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,qDACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,sFAIE07J,GAAkD,CAC3D5C,IAAK,iBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,qBACJw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,+JAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,wLAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,6JAGrB27J,GAAmD,CAC5D7C,IAAK,iBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,qBACJw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,+JAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,wLAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,sJAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,6JAIrB47J,GAA4C,CACrD9C,IAAK,gBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,sBACJw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,gHAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,mQAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,0HAIrB67J,GAA6C,CACtD/C,IAAK,iBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,sBACJw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,sHACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,+BACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,6LAGE87J,GAA4C,CACrDhD,IAAK,gBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,uBACJw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,yJAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,gLAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,8NAGrB+7J,GAA2C,CACpDjD,IAAK,eACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,iBACJw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,qGAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,oKAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,gHAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,wGAGrBg8J,GAA6C,CACtDlD,IAAK,iBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,6BACJw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,gSAC1Bw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAI,yLAICi8J,GAAkD,CAC3DnD,IAAK,sBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,2BACJw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,0DACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,iFACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,yFAIEk8J,GAA8C,CACvDpD,IAAK,kBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,kBACJw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,4DACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,sFACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,qGACHw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,uHAIrBm8J,GAA4C,CACrDrD,IAAK,gBACLf,IAAK,IACLx+H,KAAM,EACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,WACJw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,wDACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,oEAIEo8J,GAA6C,CACtDtD,IAAK,iBACLf,IAAK,IACLx+H,KAAM,EACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,mBACJw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,gIACHw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,kIAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,gFAMrBq8J,GAA4C,CACrDvD,IAAK,gBACLf,IAAK,IACLx+H,KAAM,EACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,mBACJw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,0RAC1Bw2J,EAAAA,GAAAA,KAAA,KAAG71I,UAAU,aAAY3gB,SAAC,sKAKrBs8J,GAA2C,CACpDxD,IAAK,eACLf,IAAK,IACLx+H,KAAM,EACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,wBACJw2J,EAAAA,GAAAA,KAAA,QAAM71I,UAAU,aAAY3gB,SAAC,+DAGzBg4J,EAAAA,GAAAA,MAAA,MAAIr3I,UAAU,aAAY3gB,SAAA,EACtBw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,oDACJw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,mHACJw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,gFACJw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,0JAMPu8J,GAA+C,CACxDzD,IAAK,mBACLf,IAAK,GACLx+H,KAAM,GACN6hI,MAAO,IACPI,SAASxD,EAAAA,GAAAA,MAAA,OAAKr3I,UAAU,UAAS3gB,SAAA,EAC7Bw2J,EAAAA,GAAAA,KAAA,MAAAx2J,SAAI,wBACJw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,mDACHw2J,EAAAA,GAAAA,KAAA,KAAAx2J,SAAG,+DAKEw8J,GAAe,CACxB,MACA,kBACA,iBACA,iBACA,gBACA,iBACA,gBACA,eACA,iBACA,sBACA,kBACA,gBACA,iBACA,gBACA,eACA,oBAGJ,MCxIA,MACA,GADY,IApLL,MAYHn9J,WAAAA,GAAe,KAVfo9J,eAAS,OACTC,2BAAqB,OACrBC,gBAAU,OACVC,iBAAW,OACXC,WAAK,OACLC,gBAAU,OACVC,kBAAY,OACZC,iBAAW,OACXC,mBAAa,OA2DbC,oBAAsB,UAxDlBx+J,KAAK+9J,UAAY,UACjB/9J,KAAKg+J,2BAAwB1wJ,EAC7BtN,KAAKi+J,WAAa,UAClBj+J,KAAKk+J,YAAc,UACnBl+J,KAAKm+J,OAAQ,EACbn+J,KAAKo+J,YAAa,EAClBp+J,KAAKq+J,aAAe,OACpBr+J,KAAKs+J,YAAc,OAGnBr6I,OAAOmM,iBAAiB,uBAAwB/0B,IAE5CA,EAAE+lB,iBACFphB,KAAKg+J,sBAAwB3iK,CAAC,IAGlC4oB,OAAOmM,iBAAiB,gBAAgBwpI,UACpC55J,KAAK+9J,UAAY,OACjB/9J,KAAKq+J,cAAc,IAIvBr+J,KAAKu+J,cAAgB,eAAgBt6I,aAAgC3W,IAAtB2W,OAAOw6I,WAClDz+J,KAAKu+J,eACLt6I,OAAOmM,iBAAiB,oBAAoB,KACxC,MAAMsuI,EAAMz6I,OAAOw6I,WAAW,8BAC1BC,GACAA,EAAItuI,iBAAiB,UAAWwsI,IACxBA,EAAIzmE,UACJn2F,KAAK+9J,UAAY,OACjB/9J,KAAKm+J,OAAQ,EACbn+J,KAAKs+J,cACT,GAER,GAGZ,CACOK,OAAAA,GAGH,OAFA3+J,KAAKm+J,OAAQ,GAERl6I,OAAOhb,UAAkB21J,YAAe36I,OAAOhb,UAAkB41J,eAMlE7+J,KAAKu+J,gBAAkBt6I,OAAOw6I,WAAW,8BAA8BtoE,UAAWlyE,OAAOw6I,WAAW,8BAA8BtoE,YALlIn2F,KAAKm+J,OAAQ,GACN,EAWd,CAGD,4BAAaW,GACT,IACI,GAAI,4BAA6B76I,OAAOhb,UAAW,MAELqE,WADfrE,UAA2C,2BACtDqlD,MAAMywG,IAAU,IAC5B/+J,KAAKw+J,oBAAsB,OAE3Bx+J,KAAKw+J,oBAAsB,OAEnC,MACIx+J,KAAKw+J,oBAAsB,UAE/B,OAAOx+J,KAAKw+J,mBAChB,CAAE,MAAOnjK,GACL,MAAO,SACX,CACJ,CAEO2jK,aAAAA,GACH,MAA8D,SAAvDj4G,aAAa4G,QAAQ,6BAChC,CAEOsxG,kBAAAA,GACH,MAAmE,SAA5Dl4G,aAAa4G,QAAQ,kCAChC,CAEOuxG,wBAAAA,GACHn4G,aAAa2G,QAAQ,kCAAmC,OAC5D,CAEOyxG,YAAAA,GACH,MAA6D,SAAtDp4G,aAAa4G,QAAQ,4BAChC,CAEOyxG,kBAAAA,GACHr4G,aAAa2G,QAAQ,4BAA6B,OACtD,CAEO2xG,WAAAA,GACHt4G,aAAa2G,QAAQ,6BAA8B,OACvD,CAEO4xG,wBAAAA,GACH,OAAOt/J,KAAKg+J,qBAChB,CAEOuB,aAAAA,GACH,MAAM55I,EAAK1c,UAAUyxD,UAErB,MAAI,WAAWr1C,KAAKM,GACT,UAGP,mBAAmBN,KAAKM,KAAS1B,OAAeu7I,UAIhDv2J,UAAUw2J,gBAAkBx2J,UAAUw2J,eAAiB,IAAM,WAAWp6I,KAAKM,IAAO,YAAYN,KAAKM,IAH9F,MAOJ,OACX,CAEO+5I,cAAAA,GACH,MAAM/5I,EAAK1c,UAAUyxD,UACrB,OAAI/0C,EAAG1W,QAAQ,WAAa,EACpB0W,EAAG1W,QAAQ,OAAS,EACb,QAEP0W,EAAG1W,QAAQ,SAAW,GAGtB0W,EAAG1W,QAAQ,SAAW,EAFf,OAMJ,SAEP0W,EAAG1W,QAAQ,YAAc,EAClB,UAEP0W,EAAG1W,QAAQ,WAAa,EACpB0W,EAAG1W,QAAQ,UAAY,EAChB,SAEJ,SAEJ,SACV,CAEA,6BAAa0wJ,GAMV,OALA3/J,KAAK+9J,gBAAkB/9J,KAAK8+J,yBAC5B9+J,KAAKi+J,WAAaj+J,KAAKu/J,gBACvBv/J,KAAKk+J,YAAcl+J,KAAK0/J,iBACxB1/J,KAAKm+J,MAAQn+J,KAAK2+J,UAClB3+J,KAAKo+J,WAAap+J,KAAK4/J,qBAChB,CACX,CAEAC,2BAAAA,GACI,MAAO,sBAAuB57I,QAAkD,oBAAjCA,OAA0B,wBAAqD3W,IAAhC2W,OAA0B,mBAAmD,OAAhCA,OAA0B,iBACzK,CAGC27I,iBAAAA,GACG,MAAQ,YAAa32J,WAA8C,oBAA1BA,UAAmB,cAA8CqE,IAAzBrE,UAAmB,SAA4C,OAAzBA,UAAmB,OAC7I,GC5IE,SAAS4vJ,GAAyCiH,GACvD,OAAO,cAAcA,EAMnBn/J,WAAAA,GACI6Y,QAAQ,KANZumJ,eAAyB,EAAE,KAC3BvG,UAAyBlsJ,EAAU,KACnC0yJ,eAA0C1yJ,EAAU,KACpD2yJ,QAAmB,EAAM,KACzBC,oBAAoD5yJ,CAGpD,CACAwrJ,UAAAA,CAAWiG,GACP/+J,KAAKw5J,KAAOuF,EACZ/+J,KAAKggK,UAAYjB,EAAIoB,cACrBngK,KAAKigK,OAASlB,EAAIqB,WAClBpgK,KAAKkgK,eAAiBlgK,KAAKw5J,KAAK0G,cACpC,CAGOG,YAAAA,CAAalnJ,GAChBnZ,KAAKw5J,KAAM8G,UAAUC,kBAAkBpnJ,EAC3C,CACOqnJ,eAAAA,CAAgBrnJ,GACnBnZ,KAAKw5J,KAAM8G,UAAUE,gBAAgBrnJ,EACzC,CAEOsnJ,WAAAA,CAAYr5I,EAAaiB,GAC5B,OAAOroB,KAAKw5J,KAAMiH,YAAYr5I,EAAKiB,EACvC,CACOq4I,WAAAA,CAAYt5I,EAAau5I,EAAmB3iE,GAC/C,OAAOh+F,KAAKw5J,KAAMkH,YAAYt5I,EAAKu5I,EAAU3iE,EACjD,CACO4iE,gBAAAA,CAAiBrzC,GACpBvtH,KAAKw5J,KAAMoH,iBAAiBrzC,EAChC,CACOszC,eAAAA,GACH7gK,KAAKw5J,KAAMqH,iBACf,CAEOnH,cAAAA,GAEH,QADUoH,GACFlB,qBACG5/J,KAAKygK,YAAY,gBAAgB,EAGhD,CAGAM,SAAAA,CAAUn+I,GACR5iB,KAAK+/J,cAAiB//J,KAAaf,MAAM85J,UAAUiI,YAAYD,UAAUn+I,EAC3E,CACAq+I,WAAAA,GACGjhK,KAAaf,MAAM85J,UAAUiI,YAAYC,YAAYjhK,KAAK+/J,cAC7D,CAEA,qBAAMmB,GACJ,aAAclhK,KAAaf,MAAM85J,UAAUiI,YAAYE,iBACzD,CAEA,oBAAMC,CAAeC,GACnB,aAAcphK,KAAaf,MAAM85J,UAAUiI,YAAYG,eAAeC,EACxE,CACA,aAAMjsG,GACJ,aAAcn1D,KAAaf,MAAM85J,UAAUiI,YAAY7rG,SACzD,CACA,eAAMksG,GACJ,aAAcrhK,KAAaf,MAAM85J,UAAUiI,YAAYK,WACzD,CACA,YAAMC,CAAO7gJ,GACX,aAAczgB,KAAaf,MAAM85J,UAAUiI,YAAYM,OAAO7gJ,EAChE,CACA,oBAAM8gJ,CAAe9gJ,GACnB,aAAczgB,KAAaf,MAAM85J,UAAUiI,YAAYO,eAAe9gJ,EACxE,CACA,aAAM+gJ,CAAQ/gJ,GACZ,aAAczgB,KAAaf,MAAM85J,UAAUiI,YAAYQ,QAAQ/gJ,EACjE,CACA,qBAAMghJ,CAAgBhhJ,GACpB,aAAczgB,KAAaf,MAAM85J,UAAUiI,YAAYS,gBAAgBhhJ,EACzE,CAEAihJ,YAAAA,CAAaC,GAAqF,IAA9DjgK,EAAgBN,UAAAC,OAAA,QAAAiM,IAAAlM,UAAA,IAAAA,UAAA,GAC5CwgK,EAAMd,GACV,IAAI9gK,KAAKigK,SACD2B,EAAI5C,gBAKZ,MAAO,CAAC6C,GAAG,SAAUC,QAAQpgK,GAJrBigK,GAKZ,CACA,uBAAMI,CAAkBJ,GACpB,IAAIC,EAAMd,GACV,IAAI9gK,KAAKigK,SACD2B,EAAI5C,gBAKZ,MAAO,CAAC6C,GAAG,gBAJGF,GAKlB,CAEA,wBAAMK,CAAmBC,EAAyDC,GAC9E,IAAIzK,EAAcz3J,KAClB,IAGI,GAFAmiK,GAAOC,QAAQ,SAAU,oBAAqB,SAElC90J,UADItN,KAAKw5J,KAAMwH,YAAYqB,6BAA6BH,GAEhE,OAEJliK,KAAK+gK,WAAU,IAAM/gK,KAAKsiK,sBAAsBL,WAE9BxK,EAAY0J,uBACxB1J,EAAY8K,4BAA4BN,EAClD,CAAE,MAAOO,GACLxiK,KAAKw5J,KAAMuC,gBAAgB,sBAAuB,KAAM,GAAIyG,EAChE,CACJ,CAEAC,kBAAAA,GACIziK,KAAKihK,aACT,CAEA,2BAAMqB,CAAsBL,SAClBjiK,KAAKuiK,4BAA4BN,EAC3C,CAEA,iCAAMM,CAA4BN,GAC9B,IACI,MAAMS,QAAsB1iK,KAAKkhK,kBACjCe,EAAK1hK,SAAS,CAAEmiK,cAAeA,SACqBp1J,IAA/C20J,EAAaU,qCACPV,EAAaU,8BAA8BD,EAG1D,CAAE,MAAOrnK,GACL2E,KAAKw5J,KAAMuC,gBAAiB,uBAAuB,KAAM,GAAI1gK,EACjE,CACJ,CAEAunK,cAAAA,GAAkB,IAADC,EACJ,QAATA,EAAA7iK,KAAKw5J,YAAI,IAAAqJ,GAATA,EAAWD,gBACf,CAEAE,YAAAA,GACI9iK,KAAKw5J,KAAMsJ,cACf,CAEAC,WAAAA,CAAYpgI,GACR,MAAO,CACH5lC,SAAS+6J,EAAAA,GAAAA,KAACuC,GAAW,CAACtB,UAAW/4J,KAAKw5J,KAAOH,IAAK12H,EAAKm4H,SAAUA,KAC5D96J,KAAsEO,SAAS,CAACyiK,iBAAa11J,GAAW,IAC7GusJ,SAAUA,IAAK75J,KAAsEO,SAAS,CAACyiK,iBAAa11J,IAEpH,CAGA21J,eAAAA,CAAgBjgJ,EAAoBvC,GAA0C,IAADyiJ,EACzE,IAAIzL,EAAcz3J,KAKdmjK,GAHsBpJ,GAAAA,UAGjBjC,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,KACLqJ,GAAKtL,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,IACLsJ,GAAMvL,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,IACNuJ,GAAUxL,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,IAEd,OAAwB,IAApBt5I,EAAM8iJ,WACNt/I,OAAOhH,SAASumJ,UACT1L,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,WAGczsJ,IAArBmT,EAAMgjJ,aACNN,GAAMrL,EAAAA,GAAAA,KAAC58D,EAAQ,CAACrB,GAAIp5E,EAAMgjJ,WAAW5B,GAAWngK,QAAS+e,EAAMgjJ,WAAW3B,QAASrhJ,MAAOA,EAAMgjJ,WAAW1zG,cAG9EziD,KAApB,QAAT41J,EAAAljK,KAAKw5J,YAAI,IAAA0J,OAAA,EAATA,EAAW/C,sBAEe7yJ,IAAtBmT,EAAMijJ,cACNN,GAAMtL,EAAAA,GAAAA,KAACc,GAAU,CACTG,UAAW/4J,KAAKw5J,KAChBmK,SAAU3jK,KAAKggK,UACfhH,OAAQv4I,EAAMijJ,oBAIAp2J,IAAtBmT,EAAMuiJ,cACNK,GAAOvL,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,yBAAyBwL,MAAO,CAAC0rI,UAAU,KAAMD,SAAS,IAAKziG,SAAS,WAAYh0B,KAAK,EAAGE,IAAK,GACnHtgB,QAAUhnB,IAAK,IAADuoK,OAC0Bt2J,KAAf,QAAjBs2J,EAAAnjJ,EAAMuiJ,mBAAW,IAAAY,OAAA,EAAjBA,EAAmB/J,WACnBp5I,EAAMuiJ,YAAYnJ,UACtB,EACFv4J,SACGmf,EAAMuiJ,YAAYjmK,gBAIJuQ,IAAvBmT,EAAMojJ,eACNP,GAAWxL,EAAAA,GAAAA,KAACsE,GAAY,CACZrD,UAAW/4J,KAAKw5J,KAChBmK,SAAU3jK,KAAKggK,UACfhH,OAAQv4I,EAAMojJ,aACdrH,MAAOx8J,KAAKw5J,KAAMsK,iBAAiB,GACnCjH,UAAWA,IAAKpF,EAAoBl3J,SAAS,CAACsjK,kBAAcv2J,QAIjD,IAAvBmT,EAAMsjJ,eACNV,GAAOvL,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,yBAAyBwL,MAAO,CAAC0rI,UAAU,KAAMD,SAAS,IAAKziG,SAAS,WAAYh0B,KAAK,EAAGE,IAAK,GAAGrhC,UACtHw2J,EAAAA,GAAAA,KAACkE,GAAW,CAACjD,UAAW/4J,KAAKw5J,KAAOH,IAAK,WAOjDvB,EAAAA,GAAAA,KAAA,OAAK71I,UAAU,iCAAgC3gB,UAC3Cg4J,EAAAA,GAAAA,MAAAS,GAAAA,SAAA,CAAAz4J,SAAA,CACK0hB,EACAogJ,EACAC,EACAC,EACAH,OAIjB,CAGAa,yBAAAA,CAA0B/+G,EAAcjT,GACtC,IAAIzjB,EAAOrK,SAASzpB,cAAc,KAClC8zB,EAAK4S,KAAO8jB,EACZ,MAAMg/G,EAAa,GAAE11I,EAAK4jE,aAAa5jE,EAAK6jE,OAAO7jE,EAAKmoE,WAAWnoE,EAAKmQ,SAASnQ,EAAKylD,OAEtF,MAAO,CAAC8tF,SAAQ,EAAMD,GADD,GAAa,WAAX7vH,EAAsBokH,GAAiBS,OAAqB,UAAX7kH,EAAqBokH,GAAiBI,MAAQ,OAAQP,MAAiCxyI,mBAAmBwgJ,KAEpL,CAEAC,OAAAA,CAAQxqI,EAA0ByqI,EAAyBC,GAEvD,IAAIzhI,EAAM,GAGV,QAAoBr1B,IAAhBosB,GAA6C,OAAhBA,EAAsB,CACnD,IAAI2qI,EAASrkK,KAAKw5J,KAAM8K,oBAAoBtkK,KAAKggK,UAAWuE,aAAa5pK,QAAUwpK,EAC/EK,EAASp6J,KAAK8I,IAAI,EAAG9I,KAAK8G,IAAIyxB,EAAK0hI,IACnCI,EAAW/qI,EAAYgrI,wBACvBC,EAAU3kK,KAAKw5J,KAAM8K,oBAAoBG,EAAS9hI,KAN9C,EAOJiiI,EAAa5kK,KAAKw5J,KAAM8K,oBAAoBG,EAASrwD,QAPjD,EAQJywD,EAAaD,EAAaD,EACZ,aAAdP,EACAzhI,EAAMv4B,KAAK8G,IAAImzJ,EAAQj6J,KAAK8I,IAAIsxJ,EAAQG,GAAWR,EAAkBU,GAAY,IAC5D,UAAdT,EAEHzhI,EADAiiI,EAAaP,EACPO,EAEFD,EAAUR,EAAkBK,EACtBG,EAAUR,EAEVE,EAGO,UAAdD,IAEHzhI,EADAgiI,EAAUR,EAAkBK,EACtBG,EAAUR,EAEZS,EAAaT,EAAkBE,EACzBO,EAEAJ,EAItB,CACA,OAAOxkK,KAAKw5J,KAAMsL,kBAAkBniI,EACxC,EAGJ,CAuBO,SAASw0H,GAAwC2I,GACtD,OAAO,cAAcA,EASnBn/J,WAAAA,GACI6Y,QAAQ,KARZurJ,iBAAmB,EAAE,KACrBhN,eAAS,OACTiN,gBAAU,OACVC,cAAwB,EAAK,KAC7BC,WAAqB,EAAM,KAC3BC,uBAA8C73J,EAI1CtN,KAAK+3J,UAAYhiE,EAAAA,WAErB,CAEA1zE,OAAAA,CAAQhnB,EAAoB4D,GACpBA,EAAMi7J,cAEV7+J,EAAE+lB,iBACF/lB,EAAEq7B,kBACN,CACA2iB,OAAAA,CAAQh+C,EAAc4D,GACdA,EAAMi7J,cACV7+J,EAAE+lB,iBACF/lB,EAAEq7B,uBACoBppB,IAAlBrO,EAAMmmK,SAAyBplK,KAAKilK,cACnChmK,EAAMmmK,UAEf,CACAnN,SAAAA,CAAU58J,EAAoB4D,GAC1B5D,EAAE+lB,iBACF/lB,EAAEq7B,iBACN,CAGAyhI,UAAAA,CAAW98J,EAAsB4D,GAM7B,GAH+B,OAA3Be,KAAK+3J,UAAU54J,cAAsCmO,IAAlBrO,EAAMmmK,UACzCplK,KAAK+3J,UAAU54J,QAAQk6C,QAAWh+C,GAAiB2E,KAAKq5C,QAAQh+C,EAAG4D,KAEnEA,EAAMi7J,cAELl6J,KAAKklK,YAAcjmK,EAAM04J,WAAsC,IAA1B33J,KAAK+kK,gBAC/C,CAYI,GAVA/kK,KAAKw3J,eACLx3J,KAAK+kK,gBAAkB1pK,EAAE05B,UAEzB15B,EAAE+lB,iBACF/lB,EAAEq7B,kBACFr7B,EAAEm8B,cAAc6tI,kBAAkBhqK,EAAE05B,WAEpC/0B,KAAKglK,WAAahlK,KAAK+3J,UAAU54J,QAASulK,wBAC1C1kK,KAAKu4J,YAAYl9J,EAAG4D,GAEhBA,EAAMw6J,OACN,IACIxwJ,UAAUq8J,QAAQ,EACtB,CAAE,MAEF,MAGuBh4J,IAAvBrO,EAAMsmK,cACNtmK,EAAMsmK,eAEV,IAAI9N,EAAcz3J,UACcsN,IAA5BrO,EAAMumK,mBAAmCvmK,EAAMumK,kBAAoB,IACnExlK,KAAKmlK,kBAAoBz+G,aAAY,KAC7B1mD,KAAKilK,cACLxN,EAAYgO,cAAcxmK,EAC9B,GACDA,EAAMumK,mBAEjB,CACJ,CAEAC,aAAAA,CAAcxmK,GACLe,KAAKklK,gBAAmC53J,IAAtBrO,EAAMymK,aACzBzmK,EAAMymK,aAEd,CAEAlO,YAAAA,IACkC,IAA1Bx3J,KAAK+kK,kBACL/kK,KAAK+kK,iBAAmB,QAEGz3J,IAA3BtN,KAAKmlK,oBACLx+G,cAAc3mD,KAAKmlK,mBACnBnlK,KAAKmlK,uBAAoB73J,EAEjC,CAEA+qJ,WAAAA,CAAYh9J,EAAsB4D,GAC9B,IAAIA,EAAMi7J,cAELl6J,KAAKklK,YAAcjmK,EAAM04J,UAAYt8J,EAAE05B,YAAc/0B,KAAK+kK,gBAAiB,CAO5E,GALA1pK,EAAE+lB,iBACF/lB,EAAEq7B,kBAEFr7B,EAAEm8B,cAAcmuI,sBAAsB3lK,KAAK+kK,iBAC3C/kK,KAAKw3J,eACDx3J,KAAKilK,aAAc,CACnB,GAAIhmK,EAAMw6J,OACN,IACIxwJ,UAAUq8J,QAAQ,EACtB,CAAE,MAEF,MAEwBh4J,IAAxBrO,EAAM06J,gBACN35J,KAAKklK,WAAY,EACjBjmK,EAAM85J,UAAUuH,UAAUC,mBAAkB3G,gBAClC36J,EAAM06J,gBACZ35J,KAAKklK,WAAY,CAAK,IAKlC,CACCllK,KAAoEO,SAAS,CAAC82J,mBAAoBp4J,EAAMq4J,kBAC7G,CACJ,CAEAmB,WAAAA,CAAYp9J,EAAsB4D,GAC1BA,EAAMi7J,aAELj7J,EAAM04J,UAAYt8J,EAAE05B,YAAc/0B,KAAK+kK,kBAGxC1pK,EAAEm8B,cAAcmuI,sBAAsB3lK,KAAK+kK,iBAC3C/kK,KAAKw3J,eACJx3J,KAAoEO,SAAS,CAAC82J,mBAAoBp4J,EAAMq4J,mBAEjH,CAGAsO,eAAAA,CAAgBvqK,EAAsB4D,GAClC,GAAI5D,EAAE05B,YAAc/0B,KAAK+kK,kBAAoB9lK,EAAM04J,SAAW,CAC1D,MAAMx7J,EAAId,EAAE8nB,QACN/mB,EAAIf,EAAE+nB,QACN8wF,EAAOl0G,KAAKglK,WAElB,QADmB7oK,EAAI+3G,EAAKzxE,MAAQtmC,GAAK+3G,EAAKC,OAAS/3G,EAAI83G,EAAKvxE,KAAOvmC,GAAK83G,EAAKE,OAErF,CACA,OAAO,CAEX,CAEAmkD,WAAAA,CAAYl9J,EAAsB4D,GAC1BA,EAAMi7J,aAEN7+J,EAAE05B,YAAc/0B,KAAK+kK,iBAAoB9lK,EAAM04J,WAG/C33J,KAAKilK,aAAejlK,KAAK4lK,gBAAgBvqK,EAAG4D,GAC3Ce,KAAoEO,SAAS,CAAC82J,mBAAoBr3J,KAAKilK,cAAgBhmK,EAAMq4J,iBAAmBr4J,EAAMq4J,mBAE/J,EAIJ,CAwBO,MAAM6K,GAAS,IAtBf,MAEHxhK,WAAAA,GAAe,KADfklK,YAAwB,EAGxB,CACOzD,OAAAA,CAAQhkD,EAAcpsE,EAAgBxkC,GACzCxN,KAAK6lK,YAAY9jK,KAAM,GAAE0G,KAAKF,SAAS61G,KAAQpsE,KAAUxkC,IAC7D,CACOs4J,SAAAA,GACH,GAAgC,IAA5B9lK,KAAK6lK,YAAYxkK,OACjB,MAAO,GAEX,MAAM0kK,EAAS/lK,KAAK6lK,YAAYzjK,KAAK,KAErC,OADApC,KAAKgmK,cACE76J,GAAAA,GAAOW,KAAKi6J,GAAQnkK,SAAS,SACxC,CACOokK,WAAAA,GACHhmK,KAAK6lK,YAAc,EAEvB,GCrcG,MAAMI,GAaTtlK,WAAAA,CAAYulK,EAA6FC,GAAuC,KAZhJA,gBAAU,OACVD,uBAAiB,OAIjBE,cAAgB,IAAItlK,MAAkBmlK,GAA0BI,QAAQ,KACxEC,YAAc,EAAE,KAChBC,YAAc,EAAE,KAChBC,QAAS,EAAK,KACdC,YAAa,EAAM,KACnBC,SAAU,EAGN1mK,KAAKmmK,WAAaA,EAClBnmK,KAAKkmK,kBAAoBA,CAC7B,CACAS,UAAAA,CAAWC,GACP,OAAO5mK,KAAKomK,cAAcQ,EAAKX,GAA0BI,OAC7D,CACAQ,SAAAA,GACI,IAAwB,IAApB7mK,KAAKymK,YAAwBzmK,KAAKsmK,aAAetmK,KAAKumK,WACtD,MAAM,IAAI/lK,MAAM,0DAEpB,IAAI8zJ,EAAMt0J,KAAKomK,cAAcpmK,KAAKsmK,WAAaL,GAA0BI,QAEzE,OADArmK,KAAKsmK,aACEhS,CACX,CACAwS,UAAAA,CAAWjjJ,GACP7jB,KAAKsmK,aACLtmK,KAAKomK,cAAcpmK,KAAKsmK,WAAaL,GAA0BI,QAAUxiJ,CAC7E,CAEAkjJ,WAAAA,CAAYljJ,GACR,GAAK7jB,KAAKwmK,OAAV,CAGA,IAAwB,IAApBxmK,KAAKymK,WACL,MAAM,IAAIjmK,MAAM,wCAEK,IAArBR,KAAKsmK,YACLtmK,KAAKsmK,WAAa,EAClBtmK,KAAKomK,cAAc,GAAKviJ,IAExB7jB,KAAKymK,YAAa,GACmD,IAAjEzmK,KAAKkmK,kBAAkBlmK,KAAKumK,WAAYvmK,KAAKsmK,WAAYziJ,KACzD7jB,KAAKsmK,aACLtmK,KAAKomK,cAAcpmK,KAAKsmK,WAAaL,GAA0BI,QAAUxiJ,GAE7E7jB,KAAKymK,YAAa,GAEtBzmK,KAAKgnK,aAfL,CAgBJ,CACAA,WAAAA,GACI,IAAoB,IAAhBhnK,KAAKwmK,QAAoBxmK,KAAKumK,aAAevmK,KAAKsmK,aAAkC,IAApBtmK,KAAKymK,aAAwC,IAAjBzmK,KAAK0mK,QACjG,OAEJ,IAAIO,EAAcjnK,KAAKumK,WAAa,EAChC1S,EAAazpJ,KAAK8G,IAAI+1J,EAAchB,GAA0BiB,cAAelnK,KAAKsmK,YAKtFtmK,KAAK0mK,SAAU,EACf,IAAIS,EAAYnnK,KAChBonK,uBAAsB,KAClB,MAA4B,IAArBD,EAAUX,QAAmBS,GAAepT,GAC/CsT,EAAUX,OAASW,EAAUhB,WAAWgB,EAAUf,cAAca,EAAchB,GAA0BI,SACxGc,EAAUZ,WAAaU,EACvBA,IAEJE,EAAUT,SAAU,EACpBS,EAAUH,aAAa,GAG/B,EA3ESf,GAGFI,OAAS,KAHPJ,GAIFiB,cAAgB,EA0E3B,MAAMnM,WAAclC,GAAct1J,EAAAA,YAyB9B5C,WAAAA,CAAY1B,GACRua,MAAMva,GAAO,KAxBjBooK,eAAS,OAETC,SAAU,EAAM,KAGhBC,UAAW,EAAM,KACjBC,WAAY,EAAM,KAEXppD,UAAyB9wG,EAAU,KACnCm6J,oBAA8B,EAAM,KAE3CC,aAAO,OACPlpC,gBAAU,OACVmpC,oBAAc,OACdC,oBAAc,OACdC,wBAAkB,OAElBC,cAAwB,EAAE,KAC1BC,cAAwB,EAAE,KAG1Bj4B,IAAM,IAAI94B,GAAe,KAyBzBgxD,iBAAwC16J,EAAU,KAClD26J,sBAAgC,EAAE,KAsFlCC,YAAc,EAAE,KAChBv2H,MAAQ,IAAIs0H,IACR,CAACM,EAAoBD,EAAoB6B,KACrC,IAAIC,EAAe9B,EACnB,IAAsB,IAAlB8B,EACA,OAAO,EAEX,IAAIC,EAAiBroK,KAAK2xC,MAAMg1H,WAAWyB,GAC3C,GAAID,EAAWG,UAAYH,EAAWI,SAAWF,EAAeC,SAC5D,OAAO,EAEX,IAAIztK,EAAIstK,EAAWrtB,QAAQ9mC,WAAWq0D,EAAevtB,SACjD0tB,EAAazN,GAAM0N,eACvB,GAAI5tK,EAAiB,EAAb2tK,EAAgB,CACpB,IAAI/0D,EAAS40D,EAAevtB,QAAQrnC,OAAO00D,EAAWrtB,SAClD4tB,EAAUj1D,EAAOpyG,OACjBsnK,EAASH,EACb,KAAOG,EAASD,EAAUF,GAAY,CAClC,IACII,EAAQ,CAACL,SAAQ,EAAOD,UAAS,EAAOxtB,QADhCrnC,EAAOk1D,GACwCtsC,OAAO8rC,EAAW9rC,OAAQmD,YAAY2oC,EAAW3oC,YAAaphG,MAAM+pI,EAAW/pI,OAC1Ip+B,KAAK2xC,MAAMm1H,WAAW8B,GACtBD,GAAUH,CACd,CACA,OAAO,CACX,CACA,OAAO,CAAI,IAEd3kJ,IACG,IAAuB,IAAnB7jB,KAAKwnK,UAEL,OAAO,EAIX,GADA3jJ,EAAGi3H,QAAU,IAAInpC,GAAQ9tF,EAAGi3H,QAAQ3+I,EAAG0nB,EAAGi3H,QAAQ1+I,GAC9CynB,EAAG0kJ,QAAS,CACZvoK,KAAKkoK,YAAcrkJ,EAAGi3H,QAAQ1+I,EAC9B,IAAI69I,EAAUpL,GAAK2J,sBAAsB,IAAIn5C,GAAUx7E,EAAGua,OAAOqkE,SACjEw3C,EAAQ7jB,OAASC,GAAUC,MAE3Bt2H,KAAK6oK,YAAYhlJ,EAAGi3H,QAASj3H,EAAGua,MAAOva,EAAGw4G,OAAQx4G,EAAG27G,YAAaya,QAC7B3sI,IAAjCtN,KAAKf,MAAM6pK,mBACX9oK,KAAKf,MAAM6pK,kBAAkB,CAAClV,KAAKP,GAAoBjlJ,MAAO0mG,GAAGjxF,EAAGi3H,QAASga,IAAKjxI,EAAGw4G,QAE7F,CAAE,GAAIx4G,EAAGykJ,UAEqD,IAAtDtoK,KAAK+oK,aAAa/oK,KAAKo+G,KAAMqyB,0BACQnjI,IAAjCtN,KAAKf,MAAM6pK,mBACX9oK,KAAKf,MAAM6pK,kBAAkB,CAAClV,KAAKP,GAAoBkB,OAAQz/C,GAAGjxF,EAAGi3H,QAASga,IAAKjxI,EAAGw4G,aAG3F,CACH,IAAI4d,EAAUpL,GAAK2J,sBAAsB,IAAIn5C,GAAUx7E,EAAGua,OAAOqkE,SACjEw3C,EAAQ7jB,OAASC,GAAU+H,KAC3B,MAAM4qC,EAAWhpK,KAAK8vI,IAAI74B,KAE1B,IAAIgyD,EAAOplJ,EAAGi3H,SACsD,IAAhE96I,KAAKkpK,eAAeD,EAAMplJ,EAAGw4G,OAAQx4G,EAAG27G,YAAaya,SAAoD3sI,IAAjCtN,KAAKf,MAAM6pK,kBAGnF9oK,KAAKf,MAAM6pK,kBAAkB,CAAClV,KAAKP,GAAoBj1B,KAAMtpB,GAAGjxF,EAAGi3H,QAASga,IAAKjxI,EAAGw4G,SAEpFr8H,KAAK8vI,IAAI74B,KAAO+xD,CAExB,CAIA,YAHoB17J,IAAhBuW,EAAGslJ,UACHtlJ,EAAGslJ,YAEA,CAAI,IAEjB,KAsEFC,kBAAoB,EAAE,KACtBC,eAAgB,EAAM,KA8ctBC,gBAAkB,EAAE,KAWpB1+C,aAAc,EAAM,KACpB2+C,QAAU,EAAE,KACZ3sC,cAAgB,IAAI97H,MAAyB,KAmgB7C0oK,QAAoB,IAAI73D,GAAQ,EAAE,GAttC9B3xG,KAAK84J,WAAW75J,EAAM85J,WAEtB/4J,KAAKqnK,UAAYtxE,EAAAA,YAEjB/1F,KAAK0nK,QAAU,IAAI/1D,GAAQ,EAAE,GAC7B3xG,KAAKw+H,WAAa,EAClBx+H,KAAK2nK,eAAiB,EACtB3nK,KAAK4nK,eAAiB,EACtB5nK,KAAK6nK,mBAAqB,EAE1B7nK,KAAKygB,MAAQ,CACT22I,SAAS,EAEjB,CAEAvoH,iBAAAA,GACIszH,GAAOC,QAAQ,QAAS,WAAYpiK,KAAKf,MAAM+7J,YAC/Ch7J,KAAKO,SAAS,CAAE62J,SAAQ,GAC5B,CAMApgH,kBAAAA,CAAmBj2B,EAAiCw2I,GAChD,MAAMn5C,EAAOp+G,KAAK46J,UAElB,QAAyBttJ,IAArBtN,KAAKgoK,aAAwD,IAA3BhoK,KAAKf,MAAMo8J,YAAmB,CAChE,IAAI5D,EAAcz3J,KAClBA,KAAKgoK,YAActhH,aAAY,KAGtB+wG,EAAY8P,UAAa9P,EAAY+P,iBACDl6J,IAAjCtN,KAAKf,MAAM6pK,mBACX9oK,KAAKf,MAAM6pK,kBAAkB,CAAClV,KAAKP,GAAoB5a,MAG3Dr6B,EAAKq6B,IAAIgf,EAAYx4J,MAAMq8J,QAAS,EAAGj6C,GAAIqvB,QAE/C,GACD1wI,KAAKf,MAAMo8J,YAClB,CAEJ,CAEApgH,oBAAAA,QAE6B3tC,IAArBtN,KAAKgoK,cACLrhH,cAAc3mD,KAAKgoK,aACnBhoK,KAAKgoK,iBAAc16J,IAGY,IAA/BtN,KAAKioK,uBAAkD,IAAnBjoK,KAAKwnK,YACzCiC,qBAAqBzpK,KAAKioK,sBAC1BjoK,KAAKioK,sBAAwB,EAC7BjoK,KAAKwnK,WAAY,EAEzB,CAEAkC,eAAAA,CAAgBvtK,EAAWC,GACvB4D,KAAK8nK,cAAgB3rK,EACrB6D,KAAK+nK,cAAgB3rK,CACzB,CAEAw+J,OAAAA,GAEI,QAA+BttJ,IAA3BtN,KAAKqnK,UAAUloK,SAAoD,OAA3Ba,KAAKqnK,UAAUloK,QAAkB,CACzE,QAAkBmO,IAAdtN,KAAKo+G,KAAoB,EACM,IAA3Bp+G,KAAKf,MAAMk8J,cACXn7J,KAAKo+G,KAAOp+G,KAAKygK,YAAYzgK,KAAKf,MAAM+7J,gBAAY1tJ,IAExD,IAAI5S,EAAQsF,KAAKqnK,UAAUloK,QAAQwqK,YAC/BhvK,EAASqF,KAAKqnK,UAAUloK,QAAQyqK,aACpC5pK,KAAKqnK,UAAUloK,QAAQzE,MAAMA,EAC7BsF,KAAKqnK,UAAUloK,QAAQxE,OAAOA,EAE9B,IAAIkvK,EAAU7pK,KAAKqnK,UAAUloK,QAAQ2lI,WAAW,OACV,IAAlC+kC,EAAQC,wBACRD,EAAQE,sBAAwB,aAGlBz8J,IAAdtN,KAAKo+G,MACLp+G,KAAKynK,oBAAqB,EAC1BznK,KAAKo+G,KAAO,IAAIywB,GAAKn0I,EAAOC,EAAQkvK,EAAS7pK,KAAKf,MAAM48J,iBAAkB77J,KAAKf,MAAM+qK,YAAahqK,KAAK8vI,IAAK9vI,KAAKf,MAAMm8J,aAAcp7J,KAAKf,MAAMo8J,YAAc,GAC9Jr7J,KAAKiqK,eAC0B,IAA3BjqK,KAAKf,MAAMk8J,aACXn7J,KAAK0gK,YAAY1gK,KAAKf,MAAM+7J,WAAYh7J,KAAKo+G,QAKjDp+G,KAAKynK,oBAAqB,EAC1BoC,EAAQr+C,UAAUxrH,KAAKo+G,KAAKwW,WAAWnJ,OAAQ,EAAG,GAClDzrH,KAAKo+G,KAAKwW,WAAai1C,EAE/B,CACA,OAAO7pK,KAAKo+G,IAChB,CAEJ,CACO8rD,kBAAAA,GACH,GAAuB,OAAnBlqK,KAAKqnK,WAAiD,OAA3BrnK,KAAKqnK,UAAUloK,QAC1C,OAAOa,KAAKqnK,UAAUloK,QAAQulK,uBAGtC,CA2EOuF,WAAAA,GAEHjqK,KAAKmqK,aAGL,MAAM/rD,EAAOp+G,KAAK46J,UAGlB56J,KAAK8vI,IAAM,IAAI94B,GACfoH,EAAKujB,MAAM3hI,KAAKf,MAAMmrK,QAASpqK,KAAKf,MAAM+qK,YAAahqK,KAAK8vI,IAAK9vI,KAAKf,MAAMm8J,mBACjD9tJ,IAAvBtN,KAAKf,MAAMmrK,SACXpqK,KAAKqqK,WAGb,CAEOF,UAAAA,GAEH,OAAmC,IAA/BnqK,KAAKioK,uBAAkD,IAAnBjoK,KAAKwnK,WACzCiC,qBAAqBzpK,KAAKioK,sBAC1BjoK,KAAKioK,sBAAwB,EAC7BjoK,KAAKwnK,WAAY,EACVxnK,KAAKopK,oBAGR,CAEZ,CAEOkB,YAAAA,CAAaC,EAAmBC,GACnC,IAAIpsD,EAAOp+G,KAAK46J,UAChB,QAAattJ,IAAT8wG,EACA,OAGJ,IAAIqsD,EAAQ,EACRC,EAAQ,EACRC,EAAYvsD,EAAKuV,WACjBi3C,EAAaxsD,EAAKwV,YAIlBi3C,EAASN,EAAYI,EACrBG,EAASN,EAAaI,EAE1B,GALgBL,EAAYC,EACZG,EAAYC,EAID,CACvB,IAAIG,EAAOR,EAAaI,EAAYG,EACpCC,GAAcD,EACdL,GAAUM,EAAM,EAChBJ,GAAavgK,KAAKmQ,IAAIwwJ,EAE1B,KAAO,CACH,IAAIC,EAAOR,EAAcI,EAAaC,EACtCG,GAAcH,EACdH,GAAUM,EAAM,EAChBJ,GAAcxgK,KAAKmQ,IAAIywJ,EAC3B,CAEA,IAAIC,EAAU/mJ,SAASzpB,cAAc,UAMrC,OALAwwK,EAAQvwK,MAAQ6vK,EAChBU,EAAQtwK,OAAS6vK,EACHS,EAAQnmC,WAAW,MACzBtZ,UAAUpN,EAAKwW,WAAWnJ,OAAQg/C,EAAOC,EAAOC,EAAWC,EAAY,EAAG,EAAGL,EAAWC,GACtFS,EAAQC,UAAU,aAEhC,CAKOrQ,cAAAA,CAAesQ,EAAwBC,EAAyBC,EAAkCC,EAAqBC,GAE1H,IAAuB,IAAnBvrK,KAAKwnK,UACL,OAeJxnK,KAAKwnK,WAAY,EACjB,MAAM/P,EAAcz3J,KAEpB,IAAIwrK,EAA2BxkH,eAAe2G,QAAQ,sBAClD89G,EAAwBzkH,eAAe2G,QAAQ,mBAC/C+9G,EAAqB,EACrBC,EAAkB,EACW,OAA7BH,IACAE,EAAqBx7J,SAASs7J,IAEJ,OAA1BC,IACAE,EAAkBv6D,WAAWq6D,IAI7BhU,EAAY4R,eACZn/J,QAAQ4oD,UAIZ,IAAI84G,EAAOP,EAAShqK,OAGpB,MAAM+8G,EAAOp+G,KAAK46J,UAClB56J,KAAK8vI,IAAM,IAAI94B,QAGC1pG,IAAZi+J,IAAqC,IAAZA,IACzBntD,EAAKujB,MAAM3hI,KAAKf,MAAMmrK,QAASpqK,KAAKf,MAAM+qK,YAAahqK,KAAK8vI,IAAK9vI,KAAKf,MAAMm8J,mBACjD9tJ,IAAvBtN,KAAKf,MAAMmrK,SACXpqK,KAAKqqK,aAIb,IAAIwB,EAAe,EACfC,EAAc,EAElB,GAAIF,EAAO,EAAG,CAMV5rK,KAAKopK,kBAAoB,EACzB,IAAI2C,EAAWV,EAASx7G,QAAQtsC,GAAOA,EAAGqwI,OAASP,GAAoBj1B,MAAQ76G,EAAGqwI,OAASP,GAAoBjlJ,OAC/EmV,EAAGqwI,OAASP,GAAoBkB,QAAUhxI,EAAGqwI,OAASP,GAAoBpgB,OACzE1vH,EAAGqwI,OAASP,GAAoB5a,MAAqC,IAA9Bgf,EAAY4R,gBAA0BhoK,OAE1G2qK,EAAwB,EAAXD,EAAe,GAC5BE,EAAc7hK,KAAK8I,IAAIi4J,EAAgB/gK,KAAK8G,IAAIk6J,EAAiBY,IACjEE,EAAgB,IAChBP,EAAkB,GAAKD,EAAqB,IAC5CQ,EAAgBR,EAAqBC,GAEzC,IAAIQ,EAAU,EAAMD,EAChBE,EAAsBL,EAAWI,EAGjCE,EAAe,EAAM,GAAMF,EAK3BC,EAAsBH,IACtBI,EAAcN,GAJgB,GAAdE,IAOpB/hK,QAAQyoB,IAAK,WAAUi5I,cAAiBG,mBAA0BK,+BAAiDJ,iBAA0BC,mBAA6BI,oBAC1K,IAAIvjK,EAAYL,KAAKF,MAKjBqsJ,EAAW,GACXC,EAAc,EACdyX,EAAqB,EACrBC,EAA8B,CAACt2C,WAAYC,GAAcC,OAAQC,OAAQC,GAAUG,QAASxkF,OAAQukF,GAAUoiB,MAAOliB,SAAU,GAEnI,MAAM+1C,EAAaA,KACf,IAA0C,IAAtC/U,EAAYwQ,qBACZ,OAAO,EAMXqE,GAAsBD,EACtBR,IAEA,IAAIY,EAAeriK,KAAKC,MAAMiiK,GAC9BA,GAAsBG,EAEF,GAAhBA,GACAX,IAGJ,IAAIY,EAAS,EACb,KAAMjV,EAAY2R,kBAAoBwC,GAAQc,GAAUD,GAAc,CAElE,IAAInY,EAAM+W,EAAU5T,EAAY2R,mBAChC,OAAO9U,EAAIV,MACP,KAAKP,GAAoBj1H,MACrBw2H,EAAYN,EAA6Bl2H,MACzCmuI,EAAa19B,GAAK2J,sBAAsB,IAAIn5C,GAAUu1D,GAAUnyD,SAChE,MACJ,KAAK4wD,GAAoB7zB,YACrBq1B,EAAeP,EAAmCQ,IAClD,MACJ,KAAKzB,GAAoBkB,OAErBkD,EAAYsR,aAAatR,EAAYr5C,KAAMqyB,oBAE3Ci8B,IACA,MACJ,KAAKrZ,GAAoBjlJ,MAGrB,MAAM2mJ,EAAYT,EAClB,IAAIxZ,EAAU,IAAInpC,GAAQojD,EAASjgD,GAAG34G,EAAIs7J,EAAYqQ,cAAe/S,EAASjgD,GAAG14G,EAAIq7J,EAAYsQ,eACjGtQ,EAAYoR,YAAY/tB,EAAS8Z,EAAUG,EAASD,IAAKD,EAAa0X,GAGtEG,IACA,MACJ,KAAKrZ,GAAoBj1B,KACrB,MAAMuuC,EAAWrY,EACjB,IAAIsY,EAAS,IAAIj7D,GAAQg7D,EAAQ73D,GAAG34G,EAAIs7J,EAAYqQ,cAAe6E,EAAQ73D,GAAG14G,EAAIq7J,EAAYsQ,eAC9FtQ,EAAYyR,eAAe0D,EAAQD,EAAQ7X,IAAKD,EAAa0X,GAC7DG,IACA,MACJ,KAAKrZ,GAAoB5a,IACrB,MAAMwc,EAAUX,EAChB,IAAIlxJ,EAAQ,OACSkK,IAAjB2nJ,EAAO7xJ,QACPA,EAAQ6xJ,EAAO7xJ,OAEnBg7G,EAAKq6B,IAAIgf,EAAYx4J,MAAMq8J,QAASl4J,EAAOi+G,GAAIqvB,QAC/Cg8B,IACA,MACJ,KAAKrZ,GAAoBpgB,MACrBwkB,EAAYoV,WAAWvY,EAA6B,IAAI3iD,GAAQ8lD,EAAYqQ,cAAerQ,EAAYsQ,gBAAiBtQ,EAAYx4J,MAAMm8J,cAC1IsR,IAIRjV,EAAY2R,mBAChB,CACA,GAAI3R,EAAY2R,kBAAoBwC,EAIhC,OAHAnU,EAAYwQ,qBAAuBb,uBAAsB,KACrDoF,GAAY,KAET,EACJ,CAEH,IAAIM,GAAQrkK,KAAKF,MAAQO,GAAa,IAClCikK,EAAMlB,EAAaiB,EAyBvB,OAxBIC,EAAM,IAAsB,IAAhBjB,IAGZH,GAAmBmB,EACnBpB,GAAsBK,EACtB/kH,eAAe0G,QAAQ,qBAAsBg+G,EAAmB9pK,YAChEolD,eAAe0G,QAAQ,kBAAmBi+G,EAAgB/pK,aAG9DsI,QAAQyoB,IAAK,gBAAek5I,aAAwBC,YAAsBgB,cAAiBC,SACvFtV,EAAY4R,gBAOZn/J,QAAQ8iK,aACRvV,EAAY4R,eAAgB,GAEhC5R,EAAY+P,WAAY,OACPl6J,IAAbg+J,GACAA,KAEG,CACX,GAWJtrK,KAAKioK,qBAAuBb,uBAAsB,KAC9CoF,GAAY,GAGpB,MACIxsK,KAAKwnK,WAAY,CAIzB,CAEOyF,gBAAAA,CAAiBC,EAAat1C,GAEjC,IAAIu1C,EAAQD,EAAIE,aAAa,EAAG,EAAGF,EAAIzhD,OAAO/wH,MAAOwyK,EAAIzhD,OAAO9wH,QAEhE,MAAM0yK,EAAa,IAAIvsK,MACjBwsK,EAAiC,CAAC1Z,KAAKP,GAAoBpgB,MAAO6hB,IAAKl9B,EAAO68B,MAAO4Y,EAAYz6D,GAAG,IAAS04C,GAAG,EAAGz4C,GAAG,IAASC,GAAG,GAExI,IAAI,IAAIy6D,EAAQ,EAAGA,EAAQJ,EAAMxyK,OAAQ4yK,IAAS,CAC9C,IAAIC,EACJ,IAAI,IAAIC,EAAQ,EAAGA,EAAQN,EAAMzyK,MAAO+yK,IAAS,CAC7C,IAAIC,EAAkB,EAAND,EAAUF,EAAQJ,EAAMzyK,MAAQ,EAC5CqB,EAAIoxK,EAAM3/J,KAAKkgK,GACfnyK,EAAI4xK,EAAM3/J,KAAKkgK,EAAU,GACzBzyK,EAAIkyK,EAAM3/J,KAAKkgK,EAAU,GAErB,IADAP,EAAM3/J,KAAKkgK,EAAU,UAIXpgK,IAAdkgK,IACAA,EAAY,CAAC14D,GAAI,IAAInD,GAAQ87D,EAAOF,GAAQ7Y,OAAQ,IAAI5zJ,OACxDusK,EAAWtrK,KAAKyrK,IAEpBF,EAAQ16D,GAAKxoG,KAAK8G,IAAIo8J,EAAQ16D,GAAI66D,GAClCH,EAAQhiB,GAAKlhJ,KAAK8I,IAAIo6J,EAAQhiB,GAAImiB,GAClCH,EAAQz6D,GAAKzoG,KAAK8G,IAAIo8J,EAAQz6D,GAAI06D,GAClCD,EAAQx6D,GAAK1oG,KAAK8I,IAAIo6J,EAAQx6D,GAAIy6D,GAClCC,EAAU9Y,OAAO3yJ,KAAK,CAAChG,EAAEA,EAAGR,EAAEA,EAAGN,EAAEA,IACvC,CACJ,CACA,OAAOqyK,CACX,CAEOK,UAAAA,CAAWt/I,EAAuBu/I,EAAcC,EAAcnzK,EAAeC,EAAgBmzK,EAAoBC,EAAqBC,EAAkBp2C,GAC3J,GAAI53H,KAAKf,MAAM04J,SACX,OAGJ,IAAI7lB,EAAY9xI,KAAKo+G,KAAMuV,WACvBoe,EAAa/xI,KAAKo+G,KAAMwV,YACxBq6C,EAAUp/B,GAAKK,gBAAgB4C,EAAWC,OAAYzkI,GACtD4gK,EAAaxzK,EAAMozK,EACnBK,EAAcxzK,EAAOozK,EACzBE,EAAQjsB,UAAU4rB,EAAMC,GACxBI,EAAQjsB,UAAUksB,EAAW,EAAGC,EAAY,GAC5CF,EAAQG,OAAOJ,GACfC,EAAQjsB,WAAWksB,EAAW,GAAIC,EAAY,GAC9CF,EAAQziD,UAAUn9F,EAAK,EAAG,EAAG3zB,EAAOC,EAAQ,EAAG,EAAGuzK,EAAYC,GAC9DF,EAAQjsB,WAAW4rB,GAAOC,GAE1B,IAAIP,EAAUttK,KAAKitK,iBAAiBgB,EAASr2C,QAERtqH,IAAjCtN,KAAKf,MAAM6pK,mBACX9oK,KAAKf,MAAM6pK,kBAAkBwE,GAEjCttK,KAAK6sK,WAAWS,OAAShgK,EAAWtN,KAAKf,MAAMm8J,aAEnD,CAEOiP,SAAAA,GACH,IAAIjsD,EAAOp+G,KAAK46J,UAChB,QAAattJ,IAAT8wG,EACA,OAEJ,IAAI8uD,EAAM9uD,EAAKwW,WACX04C,EAAUttK,KAAKitK,iBAAiBC,EAAK,GACzCltK,KAAK6sK,WAAWS,EAAS,IAAI37D,GAAQ,EAAG,GAAI3xG,KAAKf,MAAMm8J,cACvDh9C,EAAKq6B,IAAI,EAAGr6B,EAAKkyB,kBAAoB,EAAGjvB,GAAIqvB,OAChD,CAWQ29B,eAAAA,CAAgB9uB,EAAmB+uB,EAAwBjmK,GAC/D,IAAK,MAAMjN,KAAKmkJ,EAAOnR,MAAO,CAC1B,IAAIhwG,EAAQp+B,KAAKo+G,KAAMgzB,qBAAqBh2I,GAGxC64H,EAASj0H,KAAKo+G,KAAM6yB,oBAAoB71I,GACxCmzK,EAAU,IAAI58D,GAAQsiB,EAAO93H,EAAImyK,EAAcnyK,EAAG83H,EAAO73H,EAAIkyK,EAAclyK,GAC3EoyK,EAAS,GAAMD,EAAQnyK,EAAIiM,EAAG3N,MAAS6zK,EAAQpyK,GACnDkM,EAAGmF,KAAKghK,GAAUpwI,EAAMriC,EACxBsM,EAAGmF,KAAKghK,EAAO,GAAKpwI,EAAM7iC,EAC1B8M,EAAGmF,KAAKghK,EAAO,GAAKpwI,EAAMnjC,EAC1BoN,EAAGmF,KAAKghK,EAAO,GAAK,GACxB,CAEJ,CACQC,sBAAAA,CAAuBC,EAAqBnvB,EAAmB+uB,EAAwBjmK,GAE3F,MAAMsmK,EAAe,IAAIhrJ,IAAY47H,EAAOnR,OACtChwB,EAAOp+G,KAAKo+G,KACZwwD,EAAW,IAAIn6I,IAEfo6I,EAAYA,CAAC56C,EAAiBhiB,EAAYC,EAAY48D,KACxD,IAAIh6D,EAAK,IAAInD,GAAQsiB,EAAO93H,EAAI81G,EAAIgiB,EAAO73H,EAAI81G,GAC3C/rD,EAAIi4D,EAAK4yB,oBAAoBl8B,GACjC,IAAK65D,EAAa/pI,IAAIuhB,GAAI,CACtB,IAAI4oH,EAAMH,EAASx8J,IAAI+zC,QACX74C,IAARyhK,IACAA,EAAM,CAACC,SAAS,EAAGC,SAAS,EAAGC,SAAS,EAAGC,SAAS,EAAGC,SAAS,EAAGC,SAAS,EAAGC,SAAS,EAAGC,SAAS,GACpGX,EAASj8J,IAAIwzC,EAAG4oH,IAEpBD,EAAOC,EACX,GAGJ,IAAK,MAAM3zK,KAAKmkJ,EAAOnR,MAAO,CAC1B,IAAIna,EAAS7V,EAAK6yB,oBAAoB71I,GACtCyzK,EAAU56C,GAAS,GAAI,GAAI86C,IAASA,EAAIQ,QAAUn0K,CAAC,IACnDyzK,EAAU56C,EAAQ,GAAI,GAAI86C,IAASA,EAAIO,QAAUl0K,CAAC,IAClDyzK,EAAU56C,EAAQ,GAAI,GAAI86C,IAASA,EAAIM,QAAUj0K,CAAC,IAClDyzK,EAAU56C,GAAS,EAAG,GAAI86C,IAASA,EAAIK,QAAUh0K,CAAC,IAClDyzK,EAAU56C,EAAQ,EAAG,GAAI86C,IAASA,EAAII,QAAU/zK,CAAC,IACjDyzK,EAAU56C,GAAS,EAAG,GAAI86C,IAASA,EAAIG,QAAU9zK,CAAC,IAClDyzK,EAAU56C,EAAQ,EAAG,GAAI86C,IAASA,EAAIE,QAAU7zK,CAAC,IACjDyzK,EAAU56C,EAAQ,EAAG,GAAI86C,IAASA,EAAIC,QAAU5zK,CAAC,GACrD,CAKA,MAAMo0K,EAAWA,CAACz5D,EAAYC,EAAYC,KAC1B,IAARF,IAAqB,IAARC,IAAqB,IAARC,IAClBmI,EAAKizB,oBAAoBt7B,GAAMioB,GAAU0xB,qBAC7CtxC,EAAKizB,oBAAoBr7B,GAAMgoB,GAAU0xB,qBACzCtxC,EAAKizB,oBAAoBp7B,GAAM+nB,GAAU0xB,qBAMrDkf,EAAS1rK,SAAQ,CAACqgB,EAAI4iC,KAClB,IAAIspH,EAWJ,GAVID,EAASjsJ,EAAG4rJ,QAAS5rJ,EAAGyrJ,QAASzrJ,EAAG0rJ,SACpCQ,EAAWlsJ,EAAG4rJ,QACPK,EAASjsJ,EAAG0rJ,QAAS1rJ,EAAG2rJ,QAAS3rJ,EAAG6rJ,SAC3CK,EAAWlsJ,EAAG0rJ,QACPO,EAASjsJ,EAAG6rJ,QAAS7rJ,EAAGgsJ,QAAShsJ,EAAG+rJ,SAC3CG,EAAWlsJ,EAAG6rJ,QACPI,EAASjsJ,EAAG+rJ,QAAS/rJ,EAAG8rJ,QAAS9rJ,EAAG4rJ,WAC3CM,EAAWlsJ,EAAG+rJ,cAGDhiK,IAAbmiK,EAAwB,CACxB,IAAIC,EAAYtxD,EAAK6yB,oBAAoBw+B,GACrCE,EAAa,IAAIh+D,GAAQ+9D,EAAUvzK,EAAImyK,EAAcnyK,EAAGuzK,EAAUtzK,EAAIkyK,EAAclyK,GACpFwzK,EAAY,GAAMD,EAAWvzK,EAAIiM,EAAG3N,MAASi1K,EAAWxzK,GACxD0zK,EAAWzxD,EAAK6yB,oBAAoB9qF,GACpC2pH,EAAY,IAAIn+D,GAAQk+D,EAAS1zK,EAAImyK,EAAcnyK,EAAG0zK,EAASzzK,EAAIkyK,EAAclyK,GACjF2zK,EAAW,GAAMD,EAAU1zK,EAAIiM,EAAG3N,MAASo1K,EAAU3zK,GAEzDkM,EAAGmF,KAAKuiK,GAAY1nK,EAAGmF,KAAKoiK,GAC5BvnK,EAAGmF,KAAKuiK,EAAS,GAAK1nK,EAAGmF,KAAKoiK,EAAU,GACxCvnK,EAAGmF,KAAKuiK,EAAS,GAAK1nK,EAAGmF,KAAKoiK,EAAU,GACxCvnK,EAAGmF,KAAKuiK,EAAS,GAAK,GAC1B,IAGR,CAEQC,gBAAAA,CAAiB3nK,GAErB,IAAK,IAAIjM,EAAI,EAAGA,EAAIiM,EAAG1N,OAAQyB,IAC3B,IAAK,IAAID,EAAI,EAAGA,EAAIkM,EAAG3N,MAAOyB,IAAK,CAC/B,IAAIqyK,EAAS,GAAMpyK,EAAIiM,EAAG3N,MAASyB,GAEnC,GADU6D,KAAKo+G,KAAM+xB,eAAgB/zI,EAAIiM,EAAG3N,MAAQyB,GAC1C,EAAG,CACT,IACIG,EAAI,IAEJA,EADQ,IAFF0D,KAAKo+G,KAAMizB,oBAAoBj1I,EAAIiM,EAAG3N,MAAQyB,GAGlD,IAEE,IAERkM,EAAGmF,KAAKghK,EAAO,GAAKlyK,CACxB,CACJ,CAER,CAEQ2zK,WAAAA,CAAY5nK,GAChB,IAAI6nK,EAAM,EACV,IAAK,IAAI9zK,EAAI,EAAGA,EAAIiM,EAAG1N,OAAQyB,IAC3B,IAAK,IAAID,EAAI,EAAGA,EAAIkM,EAAG3N,MAAOyB,IAAK,CAC/B,IAAIqyK,EAAS,GAAMpyK,EAAIiM,EAAG3N,MAASyB,GAC/By7H,EAAQ53H,KAAKo+G,KAAMizB,oBAAoBj1I,EAAIiM,EAAG3N,MAAQyB,GAEtDJ,EAAI,EACJR,EAAI,EACJN,EAAI,EACR,GAAc,IAAV28H,EACA77H,EAAI,IACJR,EAAI,IACJN,EAAI,SACD,GAAI28H,EAAQoG,GAAUmgB,oBACzBpiJ,EAAI,IACJR,EAAI,EACJN,EAAI,OACD,GAAI28H,GAASoG,GAAU0xB,oBAC1B3zJ,EAAI,EACJR,EAAI,EACJN,EAAI,SACD,GAAI28H,EAAQoG,GAAU4Y,6BACzB76I,EAAI,GACJR,EAAI,IACJN,EAAI,OACD,CACC28H,EAAQ,IACRA,GAAS,IAEbA,EAAQxtH,KAAK8G,IAAI29H,GAAK4O,eAAgB7lB,GACtC,IACIu4C,EAAc,EADHv4C,EAAQiX,GAAK4O,eAE5B1hJ,EAAIqO,KAAKC,MAAoB,IAAd8lK,GACf50K,EAAI6O,KAAKC,MAAoB,IAAd8lK,GACfl1K,EAAImP,KAAKC,MAAoB,IAAd8lK,EACnB,CAEAD,GAAOt4C,EACPvvH,EAAGmF,KAAKghK,GAAUzyK,EAClBsM,EAAGmF,KAAKghK,EAAO,GAAIjzK,EACnB8M,EAAGmF,KAAKghK,EAAO,GAAKvzK,EACpBoN,EAAGmF,KAAKghK,EAAO,GAAK,GACxB,CAER,CAEOrS,SAAAA,CAAUjmD,EAAiB93E,EAAci+F,EAAgBmD,GAC5D,IAAI4wC,EAAkB,CAACn6C,WAAYC,GAAcC,OAAQC,OAAQC,GAAUC,MAAOtkF,OAAQukF,GAAUoiB,MAAOliB,SAAU,GAErHz2H,KAAK6oK,YAAY3yD,EAAQ93E,EAAOi+F,EAAQmD,EAAa4wC,EACzD,CAIAC,qBAAAA,CAAsB7wC,GAElB,IADAA,EAAcp1H,KAAK8I,IAAI8qH,GAAUC,gBAAiB7zH,KAAK8G,IAAI8sH,GAAUE,gBAAiBsB,OAClExB,GAAUE,gBAC1B,OAA6B,EAAtB2Q,GAAK4O,eAEhB,IAAI6yB,GAAc9wC,EAAcxB,GAAUC,kBAAoBD,GAAUE,gBAAkBF,GAAUC,iBACpG,OAAO7zH,KAAKC,OAAO2zH,GAAUgjB,mBAAqBsvB,EAAazhC,GAAK4O,gBAAgB,GACxF,CAMQorB,WAAAA,CAAY3yD,EAAiB93E,EAAci+F,EAAgBmD,EAAqB/X,GAgBpF,GAfAA,EAAiB,CAACwO,WAAYxO,EAAewO,WAAYG,OAAQC,GAAUC,MAAOtkF,OAAQy1E,EAAez1E,OAAQykF,SAAUhP,EAAegP,UAC1Iz2H,KAAKo+G,KAAMu8B,kBACX36I,KAAKo+G,KAAMw8B,uBACX56I,KAAKspK,gBAAkB9pC,EAEvBtpB,EAAS,IAAIvE,GAAQvnG,KAAKC,MAAM6rG,EAAO/5G,EAAI0yI,GAAKI,aAAc7kI,KAAKC,MAAM6rG,EAAO95G,EAAIyyI,GAAKI,cACzF5S,EAASjyH,KAAKC,MAAMgyH,GAEpBr8H,KAAK0nK,QAAUxxD,EACfl2G,KAAKw+H,WAAanC,EAClBr8H,KAAK2nK,eAAiB,EACtB3nK,KAAK4nK,eAAiB,EACtB5nK,KAAK6nK,mBAAqB,GAGI,IAA1B7nK,KAAKf,MAAMi8J,WAAqB,CAChC,IAAmB,IAAf75C,GAAIqvB,OAAiB,CACrBjpB,EAAiB,CAACwO,WAAYC,GAAc8c,WAAY5c,OAAQC,GAAUC,MAAOtkF,OAAQukF,GAAUg6C,OAAQ95C,SAAU,GACrHz2H,KAAKo+G,KAAMqyB,mBAAqBhpB,EAChC,IAEI+oD,EAAc,CAAC,CAACjyJ,MAFZy/G,GAAUme,eAAe,GAEJl/H,SAASi5F,EAAQugB,SAAS,IACnDg6C,EAAezwK,KAAKo+G,KAAMk0B,sBAAsBk+B,EAAa/oD,GAAgB,EAAO,GACxF,QAAqBn6G,IAAjBmjK,EAA4B,CAC5B,MAAMx+I,EAAKytF,GAAUklB,WAAW,eAEhC,GADA6rC,EAAahxD,eAAextF,EAAIjyB,KAAKo+G,KAAMwW,YACd,IAAzB7X,GAAWwkB,UAEX,YADAvhI,KAAKf,MAAM48J,iBAAiB9+C,GAAWykB,SAAU,MAAOzkB,GAAWwkB,UAAU3/H,WAAYm7G,GAAW0kB,WAIxG+uC,EAAY,GAAGvzJ,SAAW,IAAI00F,GAAQ6+D,EAAY,GAAGvzJ,SAAS9gB,EAAIs0K,EAAaptJ,MAAOmtJ,EAAY,GAAGvzJ,SAAS7gB,EAAIq0K,EAAantJ,OAC/HmtJ,EAAar0G,WACbp8D,KAAKf,MAAMs8J,cAAckV,EAAaryI,MAC1C,CAEJ,KAAO,CAEH,IAAIsyI,EAAU,EACVC,EAAS,EACTC,EAAW,EACXC,EAAU,EACd7yC,GAAUsb,eAAejd,EAAQ,GAAG,CAACp0H,EAAW6sG,KAC5C,MAAMmf,EAASj0H,KAAKo+G,KAAMmzB,gCAAgCz8B,EAAIoB,GAExDmgC,EAAar2I,KAAKo+G,KAAM4yB,oBAAoB/c,GAE5C71F,GAAwB,IAAhBi4G,EAAoB,CAACt6I,EAAG,EAAGR,EAAG,EAAGN,EAAG,GAAK+E,KAAKo+G,KAAMgzB,qBAAqBiF,GACnFj4G,EAAMriC,EAAIqiC,EAAM7iC,EAAI6iC,EAAMnjC,IAAM,IAChCy1K,IACAC,GAAYvyI,EAAMriC,EAClB60K,GAAcxyI,EAAM7iC,EACpBs1K,GAAazyI,EAAMnjC,EACvB,IAEAy1K,EAAU,GACV1wK,KAAKf,MAAMs8J,cAAc,CAACx/J,EAAGqO,KAAKC,MAAMsmK,EAAWD,GAAUn1K,EAAG6O,KAAKC,MAAMumK,EAAaF,GAAUz1K,EAAGmP,KAAKC,MAAMwmK,EAAYH,IAEpI,CAEA,MACJ,CAGA,GAAIjpD,EAAewO,aAAeC,GAAcqJ,MAG5C,YAFAv/H,KAAKo+G,KAAMqyB,mBAAqBhpB,GAKpC,IAAInsH,EAAI0iI,GAAUme,eAAe/xI,KAAKg3F,MAAMi7B,IAC5C,GAAI5U,EAAewO,aAAeC,GAAcuZ,KAC5C,IAAmB,IAAfpuB,GAAIqvB,OAAiB,CACrB1wI,KAAKo+G,KAAMqyB,mBAAqBhpB,EAChC,IAAIqpD,EAAY,CAAC,CAACvyJ,MAAMjjB,EAAG2hB,SAASi5F,EAAQugB,SAASz2H,KAAKqwK,sBAAsBrwK,KAAKspK,mBACjFyH,EAAa/wK,KAAKo+G,KAAMk0B,sBAAsBw+B,EAAWrpD,GAAgB,EAAO+X,GACpF,QAAmBlyH,IAAfyjK,EAA0B,CAC1B,MAAM9+I,EAAKytF,GAAUklB,WAAW,WAEhC,GADAmsC,EAAWtxD,eAAextF,EAAIjyB,KAAKo+G,KAAMwW,YACZ,IAAzB7X,GAAWwkB,UAEX,YADAvhI,KAAKf,MAAM48J,iBAAiB9+C,GAAWykB,SAAU,MAAOzkB,GAAWwkB,UAAU3/H,WAAYm7G,GAAW0kB,WAGxGqvC,EAAU,GAAG7zJ,SAAW,IAAI00F,GAAQm/D,EAAU,GAAG7zJ,SAAS9gB,EAAI40K,EAAW1tJ,MAAOytJ,EAAU,GAAG7zJ,SAAS7gB,EAAI20K,EAAWztJ,OACrHytJ,EAAW30G,WACXp8D,KAAK48H,cAAgB,IAAI97H,MACzBd,KAAK48H,cAAc76H,KAAK+uK,EAAU,IAClC9wK,KAAKo+G,KAAMg+B,eAAep8I,KAAK48H,cACnC,CAEJ,KAAO,CACH58H,KAAKo+G,KAAM+7B,QAAQ7+I,EAAG46G,EAAQl2G,KAAKqwK,sBAAsBrwK,KAAKspK,kBAE9D,IAAIjhK,EAAKrI,KAAKo+G,KAAMwW,WAAWw4C,aAAav+B,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgBhvI,KAAKo+G,KAAMwW,WAAWnJ,OAAO/wH,OAAQm0I,GAAKG,gBAAgBhvI,KAAKo+G,KAAMwW,WAAWnJ,OAAO9wH,SACtMqF,KAAK4qH,YACL5qH,KAAKiwK,YAAY5nK,GAEjBrI,KAAKgwK,iBAAiB3nK,GAE1BrI,KAAKo+G,KAAMwW,WAAWo8C,aAAa3oK,EAAIwmI,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GACzF,MAEA,IAAmB,IAAf3tB,GAAIqvB,OAAiB,CACrB1wI,KAAKo+G,KAAMqyB,mBAAqBhpB,EAChC,IAAIqxB,EAAU94I,KAAKo+G,KAAMk0B,sBAAsB,CAAC,CAAC/zH,MAAMjjB,EAAG2hB,SAASi5F,EAAQugB,SAAS,IAAKhP,GAAgB,EAAM+X,GAC/G,QAAgBlyH,IAAZwrI,EAAuB,CACvB94I,KAAKo+G,KAAMw6B,UAAUt9I,EAAG46G,EAAQ93E,EAAOohG,EAAasZ,GACpD,MAAM7mH,EAAKytF,GAAUklB,WAAW,gBAGhC,GAFAkU,EAAQr5B,eAAextF,EAAIjyB,KAAKo+G,KAAMwW,YACtCkkB,EAAQ18E,WACqB,IAAzB2gD,GAAWwkB,UAEX,YADAvhI,KAAKf,MAAM48J,iBAAiB9+C,GAAWykB,SAAU,MAAOzkB,GAAWwkB,UAAU3/H,WAAYm7G,GAAW0kB,UAG5G,CACJ,KAAO,CAGH,IAAI8d,EAEJ,GAJAv/I,KAAKo+G,KAAMw6B,UAAUt9I,EAAG46G,EAAQ93E,EAAOohG,OAAalyH,GAGpDiyI,EAASv/I,KAAKo+G,KAAM47B,SAAS1+I,EAAG46G,EAAQ93E,EAAOohG,GAC3C+f,EAAO1oC,UACP,OAAO,EAGX,IAIIxuG,EAJA4oK,EAAO1xB,EAAOpR,OAAOhyI,EAAIojJ,EAAOtR,OAAO9xI,EAAI,EAC3C+0K,EAAO3xB,EAAOpR,OAAO/xI,EAAImjJ,EAAOtR,OAAO7xI,EAAI,EAC3CkyK,EAAgB,IAAI38D,GAAQ4tC,EAAOtR,OAAO9xI,EAAI,EAAGojJ,EAAOtR,OAAO7xI,EAAI,GAInEiM,EADArI,KAAK4qH,YACA5qH,KAAKo+G,KAAMwW,WAAWw4C,aAAav+B,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgBhvI,KAAKo+G,KAAMwW,WAAWnJ,OAAO/wH,OAAQm0I,GAAKG,gBAAgBhvI,KAAKo+G,KAAMwW,WAAWnJ,OAAO9wH,SAEjMqF,KAAKo+G,KAAMwW,WAAWu8C,gBAAgBtiC,GAAKG,gBAAgBiiC,GAAOpiC,GAAKG,gBAAgBkiC,IAG5FlxK,KAAK4qH,aACL5qH,KAAKiwK,YAAY5nK,GACjBrI,KAAKo+G,KAAMwW,WAAWo8C,aAAa3oK,EAAIwmI,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,MAErFhvI,KAAKquK,gBAAgB9uB,EAAQ+uB,EAAejmK,GAC5CrI,KAAKyuK,uBAAuB,EAAGlvB,EAAQ+uB,EAAejmK,GACtD+oK,kBAAkB/oK,GAAI5F,MAAM4uK,IACxBrxK,KAAKo+G,KAAMwW,WAAWpJ,UAAU6lD,EAAKxiC,GAAKG,gBAAgBs/B,EAAcnyK,GAAI0yI,GAAKG,gBAAgBs/B,EAAclyK,GAAG,IAG9H,CAER,CACQ8sK,cAAAA,CAAehzD,EAAiBmmB,EAAgBmD,EAAqB/X,GACzE,IAA8B,IAA1BznH,KAAKf,MAAMi8J,WAEX,OAAO,EAGXzzC,EAAiB,CAACwO,WAAYxO,EAAewO,WAAYG,OAAQC,GAAU+H,KAAMpsF,OAAQy1E,EAAez1E,OAAQykF,SAAUhP,EAAegP,UAEzI,MAAMrY,EAAOp+G,KAAK46J,UAElB,IAAI9f,EAAU96I,KAAK0nK,QAEnB,GAAIxxD,EAAOhD,aAAa4nC,GAAW,EACnC,CAGI,GADA96I,KAAK4nK,eAAiB1xD,EAAOlE,eAAe8oC,GACZ,IAA5B96I,KAAK6nK,oBAA4B7nK,KAAK6nK,qBAAuB7nK,KAAK4nK,eAElE,OADA5nK,KAAK6nK,mBAAqB7nK,KAAK4nK,gBACxB,EAEX5nK,KAAK6nK,mBAAqB7nK,KAAK4nK,eAE/B9sB,EAAU,IAAInpC,GAAQvnG,KAAKC,MAAMywI,EAAQ3+I,EAAI0yI,GAAKI,aAAc7kI,KAAKC,MAAMywI,EAAQ1+I,EAAIyyI,GAAKI,cAC5F,IAAI8L,EAAQ,IAAIppC,GAAQvnG,KAAKC,MAAM6rG,EAAO/5G,EAAI0yI,GAAKI,aAAc7kI,KAAKC,MAAM6rG,EAAO95G,EAAIyyI,GAAKI,cAE5F,GAAIxnB,EAAewO,aAAeC,GAAcuZ,KAAM,CAClD,IAAI8P,EAASv/I,KAAKo+G,KAAM49B,YAAYlB,EAASC,EAAO/6I,KAAKw+H,WAAYnC,EAAQr8H,KAAKqwK,sBAAsBrwK,KAAKspK,iBAAkBtpK,KAAK2nK,eAAgB3nK,KAAK48H,cAAevb,GAAIqvB,QAM5K,GAJA1wI,KAAK0nK,QAAUxxD,EACfl2G,KAAKw+H,WAAanC,EAClBr8H,KAAK2nK,eAAiBpoB,EAAO,IAEV,IAAfl+B,GAAIqvB,OAAkB,CACtB,IAAIroI,EAAK+1G,EAAMwW,WAAWw4C,aAAav+B,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB5wB,EAAMwW,WAAWnJ,OAAO/wH,OAAQm0I,GAAKG,gBAAgB5wB,EAAMwW,WAAWnJ,OAAO9wH,SACvLqF,KAAK4qH,YACL5qH,KAAKiwK,YAAY5nK,GAEjBrI,KAAKgwK,iBAAiB3nK,GAE1B+1G,EAAMwW,WAAWo8C,aAAa3oK,EAAIwmI,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GACpF,CAEJ,KAAO,CAEH,IAAIuQ,EAASv/I,KAAKo+G,KAAMy8B,QAAQC,EAASC,EAAO/6I,KAAKw+H,WAAYnC,EAAQr8H,KAAK2nK,eAAgBnoC,EAAa/X,EAAgBpG,GAAIqvB,QAC/H,IAAmB,IAAfrvB,GAAIqvB,OAAiB,CAErB,IAAIoI,EAAU94I,KAAKo+G,KAAMk0B,sBAAsBiN,EAAOjR,cAAe7mB,GAAgB,EAAM+X,GAC3F,QAAgBlyH,IAAZwrI,EAAuB,CACvB,MAAM7mH,EAAKytF,GAAUklB,WAAW,QAGhC,GAFAkU,EAAQr5B,eAAextF,EAAIjyB,KAAKo+G,KAAMwW,YACtCkkB,EAAQ18E,WACqB,IAAzB2gD,GAAWwkB,UAEX,OADAvhI,KAAKf,MAAM48J,iBAAiB9+C,GAAWykB,SAAU,MAAOzkB,GAAWwkB,UAAU3/H,WAAYm7G,GAAW0kB,YAC7F,CAEf,CACJ,KAAO,CAEH,GAAI8d,EAAO1oC,UACP,OAAO,EAIX,IAIIxuG,EAJA4oK,EAAO1xB,EAAOpR,OAAOhyI,EAAIojJ,EAAOtR,OAAO9xI,EAAI,EAC3C+0K,EAAO3xB,EAAOpR,OAAO/xI,EAAImjJ,EAAOtR,OAAO7xI,EAAI,EAC3CkyK,EAAgB,IAAI38D,GAAQ4tC,EAAOtR,OAAO9xI,EAAI,EAAGojJ,EAAOtR,OAAO7xI,EAAI,GAUvE,GANIiM,EADArI,KAAK4qH,YACAxM,EAAKwW,WAAWw4C,aAAav+B,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB5wB,EAAKwW,WAAWnJ,OAAO/wH,OAAQm0I,GAAKG,gBAAgB5wB,EAAKwW,WAAWnJ,OAAO9wH,SAG/KyjH,EAAKwW,WAAWu8C,gBAAgBtiC,GAAKG,gBAAgBiiC,GAAOpiC,GAAKG,gBAAgBkiC,IAGtFlxK,KAAK4qH,YACL5qH,KAAKiwK,YAAY5nK,GACjB+1G,EAAKwW,WAAWo8C,aAAa3oK,EAAIwmI,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,QAG9E,CACD,IAAIsiC,EAAe/xB,EAAOlR,MAAM,GAAGgL,WACnCr5I,KAAKquK,gBAAgB9uB,EAAQ+uB,EAAejmK,GAC5CrI,KAAKyuK,uBAAuB6C,EAAc/xB,EAAQ+uB,EAAejmK,GACjE+oK,kBAAkB/oK,GAAI5F,MAAM4uK,IACxBjzD,EAAKwW,WAAWpJ,UAAU6lD,EAAKxiC,GAAKG,gBAAgBs/B,EAAcnyK,GAAI0yI,GAAKG,gBAAgBs/B,EAAclyK,GAAG,GAEpH,CACJ,CAEA4D,KAAK0nK,QAAUxxD,EACfl2G,KAAKw+H,WAAanC,EAClBr8H,KAAK2nK,eAAiBpoB,EAAOlR,MAAMkR,EAAOlR,MAAMhtI,OAAO,GAAGg4I,UAC9D,CACA,OAAO,CACX,CACA,OAAO,CAEX,CAEQ0vB,YAAAA,CAAawI,GACjB,IAAIC,EAAoB,CAACv7C,WAAYs7C,EAAgBt7C,WAAYG,OAAQC,GAAUiZ,KAAMt9F,OAAQu/H,EAAgBv/H,OAAQykF,SAAU86C,EAAgB96C,UAC/Ip4B,GAAS,EACb,QAAkB/wF,IAAdtN,KAAKo+G,KAAoB,CACzB,IAAIA,EAAOp+G,KAAKo+G,KAChB,GAAIozD,EAAkBv7C,aAAeC,GAAcuZ,KAE/C,GADApxC,GAAS,GACU,IAAfgjB,GAAIqvB,OACJ1wI,KAAKo+G,KAAMq6B,IAAI,KAAO,EAAGp3B,GAAIqvB,QAC7B1wI,KAAKo+G,KAAMg+B,qBACR,CACHh+B,EAAKu8B,kBACL,IAAItyI,EAAK+1G,EAAKwW,WAAWw4C,aAAav+B,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB5wB,EAAKwW,WAAWnJ,OAAO/wH,OAAQm0I,GAAKG,gBAAgB5wB,EAAKwW,WAAWnJ,OAAO9wH,SACxL,IAAK,IAAIyB,EAAI,EAAGA,EAAIiM,EAAG1N,OAAQyB,IAC3B,IAAK,IAAID,EAAI,EAAGA,EAAIkM,EAAG3N,MAAOyB,IAAK,CAC/B,IAAIqyK,EAAS,GAAMpyK,EAAIiM,EAAG3N,MAASyB,GACnCkM,EAAGmF,KAAKghK,EAAO,GAAK,GACxB,CAEJpwD,EAAKwW,WAAWo8C,aAAa3oK,EAAIwmI,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GACnF,MACG,GAAIwiC,EAAkBv7C,aAAeC,GAAcqJ,MACtDlhC,GAAS,OACN,GAAImzE,EAAkBv7C,aAAeC,GAAc8c,WACtD30C,GAAS,OACN,GAAImzE,EAAkBv7C,aAAeC,GAAc+c,MACtD50C,GAAS,MACN,CACHA,GAAS,EACT,IAAI6X,EAAS,IAAIvE,GAAQvnG,KAAKC,MAAMrK,KAAK0nK,QAAQvrK,EAAI0yI,GAAKI,aAAc7kI,KAAKC,MAAMrK,KAAK0nK,QAAQtrK,EAAIyyI,GAAKI,cACrG5S,EAASr8H,KAAKw+H,WACdljI,EAAI0iI,GAAUme,eAAe/xI,KAAKg3F,MAAMi7B,IAE5C,IAAmB,IAAfhb,GAAIqvB,OAAiB,CACrB,IAAIoI,EAAU94I,KAAKo+G,KAAMk0B,sBAAsB,CAAC,CAAC/zH,MAAMjjB,EAAG2hB,SAASi5F,EAAQugB,SAAS,IAAK+6C,GAAmB,EAAM,GAClH,QAAgBlkK,IAAZwrI,EAAuB,CACxB,MAAM7mH,EAAKytF,GAAUklB,WAAW,eAGhC,GAFAkU,EAAQr5B,eAAextF,EAAIjyB,KAAKo+G,KAAMwW,YACtCkkB,EAAQ18E,WACqB,IAAzB2gD,GAAWwkB,UAEX,OADAvhI,KAAKf,MAAM48J,iBAAiB9+C,GAAWykB,SAAU,MAAOzkB,GAAWwkB,UAAU3/H,WAAYm7G,GAAW0kB,YAC7F,CAEd,CACJ,KAAO,CAEH,IAAI8d,EAASnhC,EAAKi+B,UAAU/gJ,EAAG46G,EAAQs7D,GAEvC,GAAIjyB,EAAO1oC,UACP,OAAO,EAGX,IAIIxuG,EAJA4oK,EAAO1xB,EAAOpR,OAAOhyI,EAAIojJ,EAAOtR,OAAO9xI,EAAI,EAC3C+0K,EAAO3xB,EAAOpR,OAAO/xI,EAAImjJ,EAAOtR,OAAO7xI,EAAI,EAC3CkyK,EAAgB,IAAI38D,GAAQ4tC,EAAOtR,OAAO9xI,EAAI,EAAGojJ,EAAOtR,OAAO7xI,EAAI,GAInEiM,EADArI,KAAK4qH,YACAxM,EAAKwW,WAAWw4C,aAAav+B,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB5wB,EAAKwW,WAAWnJ,OAAO/wH,OAAQm0I,GAAKG,gBAAgB5wB,EAAKwW,WAAWnJ,OAAO9wH,SAE/KyjH,EAAKwW,WAAWu8C,gBAAgBtiC,GAAKG,gBAAgBiiC,GAAOpiC,GAAKG,gBAAgBkiC,IAGtFlxK,KAAK4qH,aACL5qH,KAAKiwK,YAAY5nK,GACjB+1G,EAAKwW,WAAWo8C,aAAa3oK,EAAIwmI,GAAKG,gBAAgB,GAAIH,GAAKG,gBAAgB,MAE/EhvI,KAAKquK,gBAAgB9uB,EAAQ+uB,EAAejmK,GAC5CrI,KAAKyuK,uBAAuB,EAAGlvB,EAAQ+uB,EAAejmK,GACtD+oK,kBAAkB/oK,GAAI5F,MAAM4uK,IACxBjzD,EAAKwW,WAAWpJ,UAAU6lD,EAAKxiC,GAAKG,gBAAgBs/B,EAAcnyK,GAAI0yI,GAAKG,gBAAgBs/B,EAAclyK,GAAG,IAGxH,CACJ,CACJ,CACA,OAAOiiG,CAEX,CAEOwuE,UAAAA,CAAWS,EAA+BmE,EAA+B7gC,GAC5E,MAAMxyB,EAAOp+G,KAAK46J,UAClB,QAAattJ,IAAT8wG,EACA,OAGJ,IAAI0zB,EAAY1zB,EAAKuV,WACjBoe,EAAa3zB,EAAKwV,YAElBgE,EAAQ01C,EAAQxY,IAEhBmc,EAAO3D,EAAQhiB,GAAKgiB,EAAQ16D,GAAK,EACjCs+D,EAAO5D,EAAQx6D,GAAKw6D,EAAQz6D,GAAK,EACjCy7D,EAAgB,IAAI38D,GAAQ27D,EAAQ16D,GAAK,EAAG06D,EAAQz6D,GAAK,GAK7D,QAJiBvlG,IAAbmkK,IACAnD,EAAgB,IAAI38D,GAAQ28D,EAAcnyK,EAAIs1K,EAASt1K,EAAGmyK,EAAclyK,EAAIq1K,EAASr1K,KAGtE,IAAfilH,GAAIqvB,OAAiB,CACrB,IAAIjpB,EAAiB,CAACwO,WAAYC,GAAc+c,MAAO7c,OAAQC,GAAUC,MAAOtkF,OAAQukF,GAAUoiB,MAAOliB,SAAU,GACnHz2H,KAAKo+G,KAAMqyB,mBAAqBhpB,EAEhC,IAAIiqD,EAAa,CAAC,CAACnzJ,MAAM,CAAC0zF,GAAGg/D,EAAM/+D,GAAGg/D,GAAOj0J,SAASqxJ,EAAe73C,SAAS,IAC1Ek7C,EAAc3xK,KAAKo+G,KAAMk0B,sBAAsBo/B,EAAYjqD,EAAgBmpB,EAAY,GAC3F,QAAoBtjI,IAAhBqkK,EAA2B,CAC3B,IAAI1wC,EAAc,IAAIz1H,WAAW,EAAIylK,EAAOC,GAE5C,IAAK,MAAM3wC,KAAQ+sC,EAAQ7Y,MAAO,CAC9B,IAAIpxI,EAAQk9G,EAAKzrB,GAAG34G,EAChBmnB,EAAQi9G,EAAKzrB,GAAG14G,EACpB,GAAIknB,GAASyuH,EACT,SAEJ,GAAI1uH,GAASyuH,EACT,SAGJ,IAAI8/B,EAAYrxC,EAAKm0B,OAAOrzJ,OAI5B,GAHIuwK,EAAYvuJ,EAAQyuH,IACpB8/B,EAAY9/B,EAAYzuH,GAEV,IAAduuJ,EACA,SAEJ,IAAIC,EAAY,IAAMvuJ,EAAQgrJ,EAAclyK,GAAK60K,GAAQ5tJ,EAAQirJ,EAAcnyK,IAC/E,IAAK,IAAI21K,EAAO,EAAGA,EAAOF,EAAWE,IACjC7wC,EAAY4wC,EAAY,GAAKtxC,EAAKm0B,OAAOod,GAAM/1K,EAC/CklI,EAAY4wC,EAAY,GAAKtxC,EAAKm0B,OAAOod,GAAMv2K,EAC/C0lI,EAAY4wC,EAAY,GAAKtxC,EAAKm0B,OAAOod,GAAM72K,EAC/CgmI,EAAY4wC,EAAY,GAAK,IAC7BA,GAAa,CAErB,CACAF,EAAY1wC,YAAcA,EAC1B0wC,EAAY7wC,WAAalJ,EACzB,MAAM3lG,EAAKytF,GAAUklB,WAAW,SAGhC,GAFA+sC,EAAYlyD,eAAextF,EAAIjyB,KAAKo+G,KAAMwW,YAC1C+8C,EAAYv1G,WACiB,IAAzB2gD,GAAWwkB,UAEX,YADAvhI,KAAKf,MAAM48J,iBAAiB9+C,GAAWykB,SAAU,MAAOzkB,GAAWwkB,UAAU3/H,WAAYm7G,GAAW0kB,UAI5G,CACA,MACJ,CAGA,IAAIp5H,EAAK+1G,EAAKwW,WAAWw4C,aAAav+B,GAAKG,gBAAgBs/B,EAAcnyK,GAAI0yI,GAAKG,gBAAgBs/B,EAAclyK,GAAIyyI,GAAKG,gBAAgBiiC,GAAOpiC,GAAKG,gBAAgBkiC,IAErK,MAAMa,EAAa3zD,EAAK6xB,SAClB+hC,EAAW,IAAIxmK,WAAW,GAEhC,IAAK,MAAM+0H,KAAQ+sC,EAAQ7Y,MAAO,CAC9B,IAAIpxI,EAAQk9G,EAAKzrB,GAAG34G,EAChBmnB,EAAQi9G,EAAKzrB,GAAG14G,EACpB,GAAIknB,GAASyuH,EACT,SAEJ,GAAI1uH,GAASyuH,EACT,SAGJ,IAAI8/B,EAAYrxC,EAAKm0B,OAAOrzJ,OAI5B,GAHIuwK,EAAYvuJ,EAAQyuH,IACpB8/B,EAAY9/B,EAAYzuH,GAEV,IAAduuJ,EAIJ,IAAK,IAAIE,EAAO,EAAGA,EAAOF,EAAWE,IAAQ,CACzCE,EAAS,GAAKzxC,EAAKm0B,OAAOod,GAAM/1K,EAChCi2K,EAAS,GAAKzxC,EAAKm0B,OAAOod,GAAMv2K,EAChCy2K,EAAS,GAAKzxC,EAAKm0B,OAAOod,GAAM72K,EAChC,MAAMg5H,EAAS,IAAItiB,GAAQtuF,EAAQyuJ,EAAMxuJ,GACzC,IAAIloB,EAAIgjH,EAAK4yB,oBAAoB/c,GAC7Bg+C,EAAU,GAAK72K,EAGf82K,GAAkB,IAAP92K,EAAW,EAAIgjH,EAAKizB,oBAAoBj2I,GACvD,GAAI82K,EAAW,EAAG,CAEd,IAAIC,EAASv6C,GAASA,EAAQs6C,GAC9B76D,GAAW06D,EAAYE,EAAUpjC,GAAKuG,UAAW48B,EAAU,EAAGG,EAAQJ,EAAYE,EAAUpjC,GAAKuG,WACjG88B,GAAYt6C,CAChB,MAEIm6C,EAAWE,EAAQpjC,GAAKuG,WAAa48B,EAAS,GAC9CD,EAAWE,EAAQpjC,GAAKwG,aAAe28B,EAAS,GAChDD,EAAWE,EAAQpjC,GAAKyG,YAAc08B,EAAS,GAC/CE,EAAWt6C,EAGf,IAAW,IAAPx8H,EAAU,CAGV,GAAIw1I,GAAcshC,GAAYl0C,GAAU4Y,6BAA8B,CAElE,IAAIC,EAAcq7B,EACdr7B,EAAc7Y,GAAU8Y,4BACxBD,EAAc,EAAI7Y,GAAU4Y,+BAAiCC,EAAY7Y,GAAU8Y,4BAA4B9Y,GAAU4Y,6BAA+B5Y,GAAU8Y,6BAEtK,IAAIC,EAAWlI,GAAKmI,yBAA2BH,EAAchI,GAAKmI,yBAElE3/B,GAAW06D,EAAYE,EAAUpjC,GAAKuG,UAAW28B,EAAYE,EAAUpjC,GAAK0G,UAAWwB,EAAUg7B,EAAYE,EAAUpjC,GAAKoI,UAChI,MAEI86B,EAAWE,EAAUpjC,GAAKoI,WAAa86B,EAAWE,EAAUpjC,GAAKuG,WACjE28B,EAAWE,EAAUpjC,GAAKqI,aAAe66B,EAAWE,EAAUpjC,GAAKwG,aACnE08B,EAAWE,EAAUpjC,GAAKsI,YAAc46B,EAAWE,EAAUpjC,GAAKyG,YAGtEl3B,EAAKkzB,oBAAoBl2I,EAAG82K,GAC5B9zD,EAAKm4B,oBAAoBn7I,GAEzB,IAAImzK,EAAU,IAAI58D,GAAQsiB,EAAO93H,EAAImyK,EAAcnyK,EAAG83H,EAAO73H,EAAIkyK,EAAclyK,GAC3EoyK,EAAS,GAAMD,EAAQnyK,EAAIiM,EAAG3N,MAAS6zK,EAAQpyK,GAEnDkM,EAAGmF,KAAKghK,GAAUuD,EAAWE,EAAUpjC,GAAKoI,WAC5C5uI,EAAGmF,KAAKghK,EAAO,GAAKuD,EAAWE,EAAUpjC,GAAKqI,aAC9C7uI,EAAGmF,KAAKghK,EAAO,GAAKuD,EAAWE,EAAUpjC,GAAKsI,YAC9C9uI,EAAGmF,KAAKghK,EAAO,GAAK,GAExB,CACJ,CACJ,CAEApwD,EAAKwW,WAAWo8C,aAAa3oK,EAAIwmI,GAAKG,gBAAgBs/B,EAAcnyK,GAAI0yI,GAAKG,gBAAgBs/B,EAAclyK,IAC3GgiH,EAAKq6B,IAAI,EAAG,EAAGp3B,GAAIqvB,OACvB,CAEA0hC,kBAAAA,CAAmBxV,GACf,IAAKA,EAAIplI,cACL,OAAO,IAAIm6E,GAAQ,EAAE,GAEzB,IAAIuC,EAAOl0G,KAAKkqK,qBAChB,YAAa58J,IAAT4mG,EACO,IAAIvC,GAAQ,EAAE,GAElB,IAAIA,GAAQirD,EAAIz5I,QAAU+wF,EAAKzxE,KAAMm6H,EAAIx5I,QAAU8wF,EAAKvxE,IACnE,CAEA0vI,YAAAA,CAAazV,GACL58J,KAAKunK,WACLvnK,KAAKunK,UAAW,EAChBvnK,KAAK2xC,MAAMo1H,YAAY,CAACwB,SAAS,EAAOD,UAAU,EAAMxtB,QAAS96I,KAAKoyK,mBAAmBxV,GAAMvgC,OAAQ,EAAGmD,YAAax/H,KAAKf,MAAM28J,YAAax9H,MAAMp+B,KAAKf,MAAMg8J,QAChKj7J,KAAKqnK,UAAUloK,QAASwmK,sBAAsB/I,EAAI7nI,gBACrBznB,IAAzBtN,KAAKf,MAAMqzK,WACXtyK,KAAKf,MAAMqzK,YAIvB,CAEA/tK,MAAAA,GACI,IACI,OAAOvE,KAAKuyK,YAChB,CAAE,MAAOl3K,GAEL,OADA2E,KAAKf,MAAM85J,UAAUgD,gBAAiB,gBAAgB,KAAM,GAAI1gK,IACzDy8J,EAAAA,GAAAA,KAAA,OAAAx2J,SAAK,QAChB,CACJ,CAEAixK,UAAAA,GACI,IAAI9a,EAAcz3J,KAElB,IAA2B,IAAvBA,KAAKygB,MAAM22I,QACX,OAAOU,EAAAA,GAAAA,KAAAiC,GAAAA,SAAA,IAyGX,OACIjC,EAAAA,GAAAA,KAAA,OAAKrqI,MAAO,CAAC/yB,MAAM,OAAQC,OAAO,QAAQ2G,UACtCw2J,EAAAA,GAAAA,KAAA,UAAQl5J,IAAKoB,KAAKqnK,UAAW55I,MAAQ,CAAC+kJ,UAAU,OAAQC,eAAgB,MAAOrZ,gBAAgB,QAASz+J,OAAO,OAAQD,MAAM,OAAQg4K,YAAY,QACjJxa,cAhFa0E,IACjB,GAAInF,EAAYx4J,MAAM04J,SAElB,YADAF,EAAY4a,aAAazV,GAG7B,GAAInF,EAAY8P,UAA2B,IAAf3K,EAAIrjI,OAC5B,OAEJ,QAAsCjsB,IAAlCmqJ,EAAYx4J,MAAM0zK,cACsB,IAApClb,EAAYx4J,MAAM0zK,cAClB,OAIR,IAAI7d,GAAO8H,EAAIliK,MAAM,EAAIkiK,EAAIjiK,OAAO,GAAK,EACzC,GAAY,IAARm6J,GAA6C,IAAhC2C,EAAYx4J,MAAMw8J,UAC/B,OAGOhE,EAAY2a,mBAAmBxV,GAkC1CnF,EAAY8P,UAAW,EACvB9P,EAAY4P,UAAUloK,QAASkmK,kBAAkBzI,EAAI7nI,WAErD/0B,KAAK2xC,MAAMo1H,YAAY,CAACwB,SAAS,EAAMD,UAAS,EAAOxtB,QAAS2c,EAAY2a,mBAAmBxV,GAAMvgC,OAAQ2B,GAAUiiB,qBAAqB6U,EAA4B,IAAvB90J,KAAKf,MAAMw8J,UAAez7J,KAAKf,MAAMw8J,UAAWz7J,KAAKf,MAAMy8J,eAAgB17J,KAAKf,MAAM08J,gBAAiBn8B,YAAax/H,KAAKf,MAAM28J,YAAax9H,MAAMp+B,KAAKf,MAAMg8J,QAE9S2B,EAAIx7I,gBAAgB,EAuBhBg3I,YArBWwE,IACXnF,EAAYx4J,MAAM04J,UAIjBF,EAAY8P,UAGE,IAAf3K,EAAIrjI,SAIRk+H,EAAY4a,aAAazV,GACzBA,EAAIx7I,iBAAgB,EAShBk3I,cA3GasE,IACjB,GAAInF,EAAYx4J,MAAM04J,SAElB,YADAF,EAAY4a,aAAazV,GAG7B,IAAKnF,EAAY8P,SACb,OAEJ,IAAIzS,GAAO8H,EAAIliK,MAAM,EAAIkiK,EAAIjiK,OAAO,GAAK,EACzC,GAAY,IAARm6J,GAA6C,IAAhC2C,EAAYx4J,MAAMw8J,UAC/B,OAGJ,IAAI1gB,EAAQ0c,EAAY2a,mBAAmBxV,GAQvC3hB,EAAYjd,GAAUiiB,qBAAqB6U,EAA4B,IAAvB90J,KAAKf,MAAMw8J,UAAez7J,KAAKf,MAAMw8J,UAAWz7J,KAAKf,MAAMy8J,eAAgB17J,KAAKf,MAAM08J,gBAC1I37J,KAAK2xC,MAAMo1H,YAAY,CAACwB,SAAS,EAAOD,UAAS,EAAOxtB,QAASC,EAAO1e,OAAQ4e,EAAWzb,YAAax/H,KAAKf,MAAM28J,YAAax9H,MAAMp+B,KAAKf,MAAMg8J,OAAO,KA0FhK,EAz2CEF,GAqIK0N,eAAiB,GAuuC5B,YCjgDMmK,GACF,CAAC,CACG,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIjhE,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,SAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,SAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,SAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,IACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,IACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,IACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,IACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,GACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,KAAK,GACvB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,GACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,IACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,IAAS,EAAE,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,IAAS,EAAE,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,EAAE,KACpB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,GAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,KACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,KACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,GAAG,IACrB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,EACR,GAAM,IAAIA,GAAQ,IAAI,IACtB,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,WAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,GAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,GAEZ,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR,MAAS,mBAEb,CACI,KAAQ,EACR,IAAO,IAEX,CACI,KAAQ,EACR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","sources":["../node_modules/react-toggle/dist/component/x.js","../node_modules/react/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react-toggle/dist/component/check.js","../node_modules/prop-types/index.js","../node_modules/react/cjs/react.production.min.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/buffer/index.js","../node_modules/react-dom/client.js","../node_modules/base64-js/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/react-toggle/dist/component/index.js","../node_modules/react/jsx-runtime.js","../node_modules/classnames/index.js","../node_modules/react-toggle/dist/component/util.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/universal-cookie/node_modules/cookie/index.js","../node_modules/scheduler/index.js","../node_modules/ieee754/index.js","../node_modules/react-dom/index.js","../node_modules/oidc-client/lib/oidc-client.min.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/extends.js","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../../packages/react-router-dom/index.tsx","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../node_modules/react-cookie/es6/Cookies.js","../node_modules/react-cookie/es6/CookiesContext.js","../node_modules/react-cookie/es6/withCookies.js","../node_modules/tinycolor2/esm/tinycolor.js","components/smash/utils.ts","components/smash/kubelkaMonk.ts","components/smash/PageChange.ts","components/smash/TouchPageChange.ts","components/smash/circlePageChange.ts","components/smash/dryPageChange.ts","components/smash/blowPageChange.ts","components/smash/refreshPageChange.ts","components/smash/smearPageChange.ts","components/smash/knifePageChange.ts","components/smash/samplePageChange.ts","components/smash/stampPageChange.ts","components/smash/GPURunner.ts","components/smash/page.ts","components/smash/fingertip.ts","components/smash/animationActions.ts","components/api-authorization/ApiAuthorizationConstants.js","components/smesshyButton.tsx","components/smesshyAsk.tsx","components/tutorialStep.tsx","envInst.ts","smesshyCommon.tsx","components/smash/smear.tsx","smeshySplash.ts","components/iconButton.tsx","components/gamePage.tsx","randoFacts.ts","storageManager.ts","components/countDownText.tsx","components/challengeTile.tsx","smesshy.tsx","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","components/imageLocate.tsx","../node_modules/react-infinite-scroll-component/node_modules/tslib/tslib.es6.js","../node_modules/react-infinite-scroll-component/node_modules/throttle-debounce/dist/index.esm.js","components/searchInput.tsx","components/followingPage.tsx","components/followingPicker.tsx","components/paintingPage.tsx","components/settingsPage.tsx","components/calibrateTouch.tsx","components/statsPage.tsx","components/smessage.tsx","components/api-authorization/AuthorizeService.tsx","components/api-authorization/Login.tsx","components/api-authorization/Logout.tsx","components/api-authorization/ApiAuthorizationRoutes.tsx","components/galleryDoorsPage.tsx","components/errorPage.tsx","components/paintingFrame.tsx","components/galleryPage.tsx","components/termsOfServicePage.tsx","components/privacyPage.tsx","components/votePage.tsx","components/setupPage.tsx","components/results.tsx","components/lunchboxPage.tsx","components/feedPage.tsx","App.tsx","version.ts","reportWebVitals.js","index.tsx"],"sourcesContent":["'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n return _react2.default.createElement(\n 'svg',\n { width: '10', height: '10', viewBox: '0 0 10 10' },\n _react2.default.createElement('path', { d: 'M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12', fill: '#fff', fillRule: 'evenodd' })\n );\n};","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n return _react2.default.createElement(\n 'svg',\n { width: '14', height: '11', viewBox: '0 0 14 11' },\n _react2.default.createElement('path', { d: 'M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0', fill: '#fff', fillRule: 'evenodd' })\n );\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _check = require('./check');\n\nvar _check2 = _interopRequireDefault(_check);\n\nvar _x = require('./x');\n\nvar _x2 = _interopRequireDefault(_x);\n\nvar _util = require('./util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Toggle = function (_PureComponent) {\n _inherits(Toggle, _PureComponent);\n\n function Toggle(props) {\n _classCallCheck(this, Toggle);\n\n var _this = _possibleConstructorReturn(this, (Toggle.__proto__ || Object.getPrototypeOf(Toggle)).call(this, props));\n\n _this.handleClick = _this.handleClick.bind(_this);\n _this.handleTouchStart = _this.handleTouchStart.bind(_this);\n _this.handleTouchMove = _this.handleTouchMove.bind(_this);\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_this);\n _this.handleFocus = _this.handleFocus.bind(_this);\n _this.handleBlur = _this.handleBlur.bind(_this);\n _this.previouslyChecked = !!(props.checked || props.defaultChecked);\n _this.state = {\n checked: !!(props.checked || props.defaultChecked),\n hasFocus: false\n };\n return _this;\n }\n\n _createClass(Toggle, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.checked !== this.props.checked) {\n // Disable linting rule here since this usage of setState inside\n // componentDidUpdate is OK; see\n // https://reactjs.org/docs/react-component.html#componentdidupdate\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ checked: !!this.props.checked });\n }\n }\n }, {\n key: 'handleClick',\n value: function handleClick(event) {\n if (this.props.disabled) {\n return;\n }\n var checkbox = this.input;\n if (event.target !== checkbox && !this.moved) {\n this.previouslyChecked = checkbox.checked;\n event.preventDefault();\n checkbox.focus();\n checkbox.click();\n return;\n }\n\n var checked = this.props.hasOwnProperty('checked') ? this.props.checked : checkbox.checked;\n\n this.setState({ checked: checked });\n }\n }, {\n key: 'handleTouchStart',\n value: function handleTouchStart(event) {\n if (this.props.disabled) {\n return;\n }\n this.startX = (0, _util.pointerCoord)(event).x;\n this.activated = true;\n }\n }, {\n key: 'handleTouchMove',\n value: function handleTouchMove(event) {\n if (!this.activated) return;\n this.moved = true;\n\n if (this.startX) {\n var currentX = (0, _util.pointerCoord)(event).x;\n if (this.state.checked && currentX + 15 < this.startX) {\n this.setState({ checked: false });\n this.startX = currentX;\n this.activated = true;\n } else if (currentX - 15 > this.startX) {\n this.setState({ checked: true });\n this.startX = currentX;\n this.activated = currentX < this.startX + 5;\n }\n }\n }\n }, {\n key: 'handleTouchEnd',\n value: function handleTouchEnd(event) {\n if (!this.moved) return;\n var checkbox = this.input;\n event.preventDefault();\n\n if (this.startX) {\n var endX = (0, _util.pointerCoord)(event).x;\n if (this.previouslyChecked === true && this.startX + 4 > endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({ checked: false });\n this.previouslyChecked = this.state.checked;\n checkbox.click();\n }\n } else if (this.startX - 4 < endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({ checked: true });\n this.previouslyChecked = this.state.checked;\n checkbox.click();\n }\n }\n\n this.activated = false;\n this.startX = null;\n this.moved = false;\n }\n }\n }, {\n key: 'handleFocus',\n value: function handleFocus(event) {\n var onFocus = this.props.onFocus;\n\n\n if (onFocus) {\n onFocus(event);\n }\n\n this.setState({ hasFocus: true });\n }\n }, {\n key: 'handleBlur',\n value: function handleBlur(event) {\n var onBlur = this.props.onBlur;\n\n\n if (onBlur) {\n onBlur(event);\n }\n\n this.setState({ hasFocus: false });\n }\n }, {\n key: 'getIcon',\n value: function getIcon(type) {\n var icons = this.props.icons;\n\n if (!icons) {\n return null;\n }\n return icons[type] === undefined ? Toggle.defaultProps.icons[type] : icons[type];\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n className = _props.className,\n _icons = _props.icons,\n inputProps = _objectWithoutProperties(_props, ['className', 'icons']);\n\n var classes = (0, _classnames2.default)('react-toggle', {\n 'react-toggle--checked': this.state.checked,\n 'react-toggle--focus': this.state.hasFocus,\n 'react-toggle--disabled': this.props.disabled\n }, className);\n\n return _react2.default.createElement(\n 'div',\n { className: classes,\n onClick: this.handleClick,\n onTouchStart: this.handleTouchStart,\n onTouchMove: this.handleTouchMove,\n onTouchEnd: this.handleTouchEnd },\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track' },\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track-check' },\n this.getIcon('checked')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track-x' },\n this.getIcon('unchecked')\n )\n ),\n _react2.default.createElement('div', { className: 'react-toggle-thumb' }),\n _react2.default.createElement('input', _extends({}, inputProps, {\n ref: function ref(_ref) {\n _this2.input = _ref;\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n className: 'react-toggle-screenreader-only',\n type: 'checkbox' }))\n );\n }\n }]);\n\n return Toggle;\n}(_react.PureComponent);\n\nexports.default = Toggle;\n\n\nToggle.displayName = 'Toggle';\n\nToggle.defaultProps = {\n icons: {\n checked: _react2.default.createElement(_check2.default, null),\n unchecked: _react2.default.createElement(_x2.default, null)\n }\n};\n\nToggle.propTypes = {\n checked: _propTypes2.default.bool,\n disabled: _propTypes2.default.bool,\n defaultChecked: _propTypes2.default.bool,\n onChange: _propTypes2.default.func,\n onFocus: _propTypes2.default.func,\n onBlur: _propTypes2.default.func,\n className: _propTypes2.default.string,\n name: _propTypes2.default.string,\n value: _propTypes2.default.string,\n id: _propTypes2.default.string,\n 'aria-labelledby': _propTypes2.default.string,\n 'aria-label': _propTypes2.default.string,\n icons: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.shape({\n checked: _propTypes2.default.node,\n unchecked: _propTypes2.default.node\n })])\n};","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pointerCoord = pointerCoord;\n// Copyright 2015-present Drifty Co.\n// http://drifty.com/\n// from: https://github.com/driftyco/ionic/blob/master/src/util/dom.ts\n\nfunction pointerCoord(event) {\n // get coordinates for either a mouse click\n // or a touch depending on the given event\n if (event) {\n var changedTouches = event.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n var touch = changedTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n var pageX = event.pageX;\n if (pageX !== undefined) {\n return { x: pageX, y: event.pageY };\n }\n }\n return { x: 0, y: 0 };\n}","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","!function t(e,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var n=r();for(var i in n)(\"object\"==typeof exports?exports:e)[i]=n[i]}}(this,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function e(){return t.default}:function e(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=22)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(t,e){for(var r=0;r=4){for(var e=arguments.length,r=Array(e),n=0;n=3){for(var e=arguments.length,r=Array(e),n=0;n=2){for(var e=arguments.length,r=Array(e),n=0;n=1){for(var e=arguments.length,r=Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:o.JsonService;if(s(this,t),!e)throw i.Log.error(\"MetadataService: No settings passed to MetadataService\"),new Error(\"settings\");this._settings=e,this._jsonService=new r([\"application/jwk-set+json\"])}return t.prototype.resetSigningKeys=function t(){this._settings=this._settings||{},this._settings.signingKeys=void 0},t.prototype.getMetadata=function t(){var e=this;return this._settings.metadata?(i.Log.debug(\"MetadataService.getMetadata: Returning metadata from settings\"),Promise.resolve(this._settings.metadata)):this.metadataUrl?(i.Log.debug(\"MetadataService.getMetadata: getting metadata from\",this.metadataUrl),this._jsonService.getJson(this.metadataUrl).then((function(t){i.Log.debug(\"MetadataService.getMetadata: json received\");var r=e._settings.metadataSeed||{};return e._settings.metadata=Object.assign({},r,t),e._settings.metadata}))):(i.Log.error(\"MetadataService.getMetadata: No authority or metadataUrl configured on settings\"),Promise.reject(new Error(\"No authority or metadataUrl configured on settings\")))},t.prototype.getIssuer=function t(){return this._getMetadataProperty(\"issuer\")},t.prototype.getAuthorizationEndpoint=function t(){return this._getMetadataProperty(\"authorization_endpoint\")},t.prototype.getUserInfoEndpoint=function t(){return this._getMetadataProperty(\"userinfo_endpoint\")},t.prototype.getTokenEndpoint=function t(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._getMetadataProperty(\"token_endpoint\",e)},t.prototype.getCheckSessionIframe=function t(){return this._getMetadataProperty(\"check_session_iframe\",!0)},t.prototype.getEndSessionEndpoint=function t(){return this._getMetadataProperty(\"end_session_endpoint\",!0)},t.prototype.getRevocationEndpoint=function t(){return this._getMetadataProperty(\"revocation_endpoint\",!0)},t.prototype.getKeysEndpoint=function t(){return this._getMetadataProperty(\"jwks_uri\",!0)},t.prototype._getMetadataProperty=function t(e){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i.Log.debug(\"MetadataService.getMetadataProperty for: \"+e),this.getMetadata().then((function(t){if(i.Log.debug(\"MetadataService.getMetadataProperty: metadata recieved\"),void 0===t[e]){if(!0===r)return void i.Log.warn(\"MetadataService.getMetadataProperty: Metadata does not contain optional property \"+e);throw i.Log.error(\"MetadataService.getMetadataProperty: Metadata does not contain property \"+e),new Error(\"Metadata does not contain property \"+e)}return t[e]}))},t.prototype.getSigningKeys=function t(){var e=this;return this._settings.signingKeys?(i.Log.debug(\"MetadataService.getSigningKeys: Returning signingKeys from settings\"),Promise.resolve(this._settings.signingKeys)):this._getMetadataProperty(\"jwks_uri\").then((function(t){return i.Log.debug(\"MetadataService.getSigningKeys: jwks_uri received\",t),e._jsonService.getJson(t).then((function(t){if(i.Log.debug(\"MetadataService.getSigningKeys: key set received\",t),!t.keys)throw i.Log.error(\"MetadataService.getSigningKeys: Missing keys on keyset\"),new Error(\"Missing keys on keyset\");return e._settings.signingKeys=t.keys,e._settings.signingKeys}))}))},n(t,[{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._settings.metadataUrl?this._metadataUrl=this._settings.metadataUrl:(this._metadataUrl=this._settings.authority,this._metadataUrl&&this._metadataUrl.indexOf(a)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=a))),this._metadataUrl}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UrlUtility=void 0;var n=r(0),i=r(1);e.UrlUtility=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.addQueryParam=function t(e,r,n){return e.indexOf(\"?\")<0&&(e+=\"?\"),\"?\"!==e[e.length-1]&&(e+=\"&\"),e+=encodeURIComponent(r),e+=\"=\",e+=encodeURIComponent(n)},t.parseUrlFragment=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#\",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.Global;\"string\"!=typeof e&&(e=o.location.href);var s=e.lastIndexOf(r);s>=0&&(e=e.substr(s+1)),\"?\"===r&&(s=e.indexOf(\"#\"))>=0&&(e=e.substr(0,s));for(var a,u={},c=/([^&=]+)=([^&]*)/g,h=0;a=c.exec(e);)if(u[decodeURIComponent(a[1])]=decodeURIComponent(a[2].replace(/\\+/g,\" \")),h++>50)return n.Log.error(\"UrlUtility.parseUrlFragment: response exceeded expected number of parameters\",e),{error:\"Response exceeded expected number of parameters\"};for(var l in u)return u;return{}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.JoseUtil=void 0;var n=r(26),i=function o(t){return t&&t.__esModule?t:{default:t}}(r(33));e.JoseUtil=(0,i.default)({jws:n.jws,KeyUtil:n.KeyUtil,X509:n.X509,crypto:n.crypto,hextob64u:n.hextob64u,b64tohex:n.b64tohex,AllowedSigningAlgs:n.AllowedSigningAlgs})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OidcClientSettings=void 0;var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=e.authority,i=e.metadataUrl,o=e.metadata,l=e.signingKeys,p=e.metadataSeed,v=e.client_id,y=e.client_secret,m=e.response_type,_=void 0===m?f:m,S=e.scope,b=void 0===S?g:S,w=e.redirect_uri,F=e.post_logout_redirect_uri,E=e.client_authentication,x=void 0===E?d:E,A=e.prompt,k=e.display,P=e.max_age,C=e.ui_locales,T=e.acr_values,R=e.resource,I=e.response_mode,D=e.filterProtocolClaims,L=void 0===D||D,N=e.loadUserInfo,U=void 0===N||N,B=e.staleStateAge,O=void 0===B?900:B,j=e.clockSkew,M=void 0===j?300:j,H=e.clockService,V=void 0===H?new s.ClockService:H,K=e.userInfoJwtIssuer,q=void 0===K?\"OP\":K,J=e.mergeClaims,W=void 0!==J&&J,z=e.stateStore,Y=void 0===z?new a.WebStorageStateStore:z,G=e.ResponseValidatorCtor,X=void 0===G?u.ResponseValidator:G,$=e.MetadataServiceCtor,Q=void 0===$?c.MetadataService:$,Z=e.extraQueryParams,tt=void 0===Z?{}:Z,et=e.extraTokenParams,rt=void 0===et?{}:et;h(this,t),this._authority=r,this._metadataUrl=i,this._metadata=o,this._metadataSeed=p,this._signingKeys=l,this._client_id=v,this._client_secret=y,this._response_type=_,this._scope=b,this._redirect_uri=w,this._post_logout_redirect_uri=F,this._client_authentication=x,this._prompt=A,this._display=k,this._max_age=P,this._ui_locales=C,this._acr_values=T,this._resource=R,this._response_mode=I,this._filterProtocolClaims=!!L,this._loadUserInfo=!!U,this._staleStateAge=O,this._clockSkew=M,this._clockService=V,this._userInfoJwtIssuer=q,this._mergeClaims=!!W,this._stateStore=Y,this._validator=new X(this),this._metadataService=new Q(this),this._extraQueryParams=\"object\"===(void 0===tt?\"undefined\":n(tt))?tt:{},this._extraTokenParams=\"object\"===(void 0===rt?\"undefined\":n(rt))?rt:{}}return t.prototype.getEpochTime=function t(){return this._clockService.getEpochTime()},i(t,[{key:\"client_id\",get:function t(){return this._client_id},set:function t(e){if(this._client_id)throw o.Log.error(\"OidcClientSettings.set_client_id: client_id has already been assigned.\"),new Error(\"client_id has already been assigned.\");this._client_id=e}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"response_type\",get:function t(){return this._response_type}},{key:\"scope\",get:function t(){return this._scope}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"post_logout_redirect_uri\",get:function t(){return this._post_logout_redirect_uri}},{key:\"client_authentication\",get:function t(){return this._client_authentication}},{key:\"prompt\",get:function t(){return this._prompt}},{key:\"display\",get:function t(){return this._display}},{key:\"max_age\",get:function t(){return this._max_age}},{key:\"ui_locales\",get:function t(){return this._ui_locales}},{key:\"acr_values\",get:function t(){return this._acr_values}},{key:\"resource\",get:function t(){return this._resource}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"authority\",get:function t(){return this._authority},set:function t(e){if(this._authority)throw o.Log.error(\"OidcClientSettings.set_authority: authority has already been assigned.\"),new Error(\"authority has already been assigned.\");this._authority=e}},{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._metadataUrl=this.authority,this._metadataUrl&&this._metadataUrl.indexOf(l)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=l)),this._metadataUrl}},{key:\"metadata\",get:function t(){return this._metadata},set:function t(e){this._metadata=e}},{key:\"metadataSeed\",get:function t(){return this._metadataSeed},set:function t(e){this._metadataSeed=e}},{key:\"signingKeys\",get:function t(){return this._signingKeys},set:function t(e){this._signingKeys=e}},{key:\"filterProtocolClaims\",get:function t(){return this._filterProtocolClaims}},{key:\"loadUserInfo\",get:function t(){return this._loadUserInfo}},{key:\"staleStateAge\",get:function t(){return this._staleStateAge}},{key:\"clockSkew\",get:function t(){return this._clockSkew}},{key:\"userInfoJwtIssuer\",get:function t(){return this._userInfoJwtIssuer}},{key:\"mergeClaims\",get:function t(){return this._mergeClaims}},{key:\"stateStore\",get:function t(){return this._stateStore}},{key:\"validator\",get:function t(){return this._validator}},{key:\"metadataService\",get:function t(){return this._metadataService}},{key:\"extraQueryParams\",get:function t(){return this._extraQueryParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraQueryParams=e:this._extraQueryParams={}}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraTokenParams=e:this._extraTokenParams={}}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WebStorageStateStore=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.WebStorageStateStore=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.prefix,n=void 0===r?\"oidc.\":r,s=e.store,a=void 0===s?i.Global.localStorage:s;o(this,t),this._store=a,this._prefix=n}return t.prototype.set=function t(e,r){return n.Log.debug(\"WebStorageStateStore.set\",e),e=this._prefix+e,this._store.setItem(e,r),Promise.resolve()},t.prototype.get=function t(e){n.Log.debug(\"WebStorageStateStore.get\",e),e=this._prefix+e;var r=this._store.getItem(e);return Promise.resolve(r)},t.prototype.remove=function t(e){n.Log.debug(\"WebStorageStateStore.remove\",e),e=this._prefix+e;var r=this._store.getItem(e);return this._store.removeItem(e),Promise.resolve(r)},t.prototype.getAllKeys=function t(){n.Log.debug(\"WebStorageStateStore.getAllKeys\");for(var e=[],r=0;r0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.Global.XMLHttpRequest,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;o(this,t),e&&Array.isArray(e)?this._contentTypes=e.slice():this._contentTypes=[],this._contentTypes.push(\"application/json\"),n&&this._contentTypes.push(\"application/jwt\"),this._XMLHttpRequest=r,this._jwtHandler=n}return t.prototype.getJson=function t(e,r){var i=this;if(!e)throw n.Log.error(\"JsonService.getJson: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.getJson, url: \",e),new Promise((function(t,o){var s=new i._XMLHttpRequest;s.open(\"GET\",e);var a=i._contentTypes,u=i._jwtHandler;s.onload=function(){if(n.Log.debug(\"JsonService.getJson: HTTP response received, status\",s.status),200===s.status){var r=s.getResponseHeader(\"Content-Type\");if(r){var i=a.find((function(t){if(r.startsWith(t))return!0}));if(\"application/jwt\"==i)return void u(s).then(t,o);if(i)try{return void t(JSON.parse(s.responseText))}catch(t){return n.Log.error(\"JsonService.getJson: Error parsing JSON response\",t.message),void o(t)}}o(Error(\"Invalid response Content-Type: \"+r+\", from URL: \"+e))}else o(Error(s.statusText+\" (\"+s.status+\")\"))},s.onerror=function(){n.Log.error(\"JsonService.getJson: network error\"),o(Error(\"Network Error\"))},r&&(n.Log.debug(\"JsonService.getJson: token passed, setting Authorization header\"),s.setRequestHeader(\"Authorization\",\"Bearer \"+r)),s.send()}))},t.prototype.postForm=function t(e,r,i){var o=this;if(!e)throw n.Log.error(\"JsonService.postForm: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.postForm, url: \",e),new Promise((function(t,s){var a=new o._XMLHttpRequest;a.open(\"POST\",e);var u=o._contentTypes;a.onload=function(){if(n.Log.debug(\"JsonService.postForm: HTTP response received, status\",a.status),200!==a.status){if(400===a.status)if(i=a.getResponseHeader(\"Content-Type\"))if(u.find((function(t){if(i.startsWith(t))return!0})))try{var r=JSON.parse(a.responseText);if(r&&r.error)return n.Log.error(\"JsonService.postForm: Error from server: \",r.error),void s(new Error(r.error))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(a.statusText+\" (\"+a.status+\")\"))}else{var i;if((i=a.getResponseHeader(\"Content-Type\"))&&u.find((function(t){if(i.startsWith(t))return!0})))try{return void t(JSON.parse(a.responseText))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(\"Invalid response Content-Type: \"+i+\", from URL: \"+e))}},a.onerror=function(){n.Log.error(\"JsonService.postForm: network error\"),s(Error(\"Network Error\"))};var c=\"\";for(var h in r){var l=r[h];l&&(c.length>0&&(c+=\"&\"),c+=encodeURIComponent(h),c+=\"=\",c+=encodeURIComponent(l))}a.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),void 0!==i&&a.setRequestHeader(\"Authorization\",\"Basic \"+btoa(i)),a.send(c)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninRequest=void 0;var n=r(0),i=r(3),o=r(13);e.SigninRequest=function(){function t(e){var r=e.url,s=e.client_id,a=e.redirect_uri,u=e.response_type,c=e.scope,h=e.authority,l=e.data,f=e.prompt,g=e.display,d=e.max_age,p=e.ui_locales,v=e.id_token_hint,y=e.login_hint,m=e.acr_values,_=e.resource,S=e.response_mode,b=e.request,w=e.request_uri,F=e.extraQueryParams,E=e.request_type,x=e.client_secret,A=e.extraTokenParams,k=e.skipUserInfo;if(function P(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SigninRequest.ctor: No url passed\"),new Error(\"url\");if(!s)throw n.Log.error(\"SigninRequest.ctor: No client_id passed\"),new Error(\"client_id\");if(!a)throw n.Log.error(\"SigninRequest.ctor: No redirect_uri passed\"),new Error(\"redirect_uri\");if(!u)throw n.Log.error(\"SigninRequest.ctor: No response_type passed\"),new Error(\"response_type\");if(!c)throw n.Log.error(\"SigninRequest.ctor: No scope passed\"),new Error(\"scope\");if(!h)throw n.Log.error(\"SigninRequest.ctor: No authority passed\"),new Error(\"authority\");var C=t.isOidc(u),T=t.isCode(u);S||(S=t.isCode(u)?\"query\":null),this.state=new o.SigninState({nonce:C,data:l,client_id:s,authority:h,redirect_uri:a,code_verifier:T,request_type:E,response_mode:S,client_secret:x,scope:c,extraTokenParams:A,skipUserInfo:k}),r=i.UrlUtility.addQueryParam(r,\"client_id\",s),r=i.UrlUtility.addQueryParam(r,\"redirect_uri\",a),r=i.UrlUtility.addQueryParam(r,\"response_type\",u),r=i.UrlUtility.addQueryParam(r,\"scope\",c),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id),C&&(r=i.UrlUtility.addQueryParam(r,\"nonce\",this.state.nonce)),T&&(r=i.UrlUtility.addQueryParam(r,\"code_challenge\",this.state.code_challenge),r=i.UrlUtility.addQueryParam(r,\"code_challenge_method\",\"S256\"));var R={prompt:f,display:g,max_age:d,ui_locales:p,id_token_hint:v,login_hint:y,acr_values:m,resource:_,request:b,request_uri:w,response_mode:S};for(var I in R)R[I]&&(r=i.UrlUtility.addQueryParam(r,I,R[I]));for(var D in F)r=i.UrlUtility.addQueryParam(r,D,F[D]);this.url=r}return t.isOidc=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"id_token\"===t}))[0]},t.isOAuth=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"token\"===t}))[0]},t.isCode=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"code\"===t}))[0]},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.State=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=e.id,n=e.data,i=e.created,s=e.request_type;a(this,t),this._id=r||(0,o.default)(),this._data=n,this._created=\"number\"==typeof i&&i>0?i:parseInt(Date.now()/1e3),this._request_type=s}return t.prototype.toStorageString=function t(){return i.Log.debug(\"State.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})},t.fromStorageString=function e(r){return i.Log.debug(\"State.fromStorageString\"),new t(JSON.parse(r))},t.clearStaleState=function e(r,n){var o=Date.now()/1e3-n;return r.getAllKeys().then((function(e){i.Log.debug(\"State.clearStaleState: got keys\",e);for(var n=[],s=function s(a){var c=e[a];u=r.get(c).then((function(e){var n=!1;if(e)try{var s=t.fromStorageString(e);i.Log.debug(\"State.clearStaleState: got item from key: \",c,s.created),s.created<=o&&(n=!0)}catch(t){i.Log.error(\"State.clearStaleState: Error parsing state for key\",c,t.message),n=!0}else i.Log.debug(\"State.clearStaleState: no item in storage for key: \",c),n=!0;if(n)return i.Log.debug(\"State.clearStaleState: removed item for key: \",c),r.remove(c)})),n.push(u)},a=0;a0&&void 0!==arguments[0]?arguments[0]:{};g(this,t),e instanceof o.OidcClientSettings?this._settings=e:this._settings=new o.OidcClientSettings(e)}return t.prototype.createSigninRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.response_type,o=r.scope,s=r.redirect_uri,u=r.data,c=r.state,h=r.prompt,l=r.display,f=r.max_age,g=r.ui_locales,d=r.id_token_hint,p=r.login_hint,v=r.acr_values,y=r.resource,m=r.request,_=r.request_uri,S=r.response_mode,b=r.extraQueryParams,w=r.extraTokenParams,F=r.request_type,E=r.skipUserInfo,x=arguments[1];i.Log.debug(\"OidcClient.createSigninRequest\");var A=this._settings.client_id;n=n||this._settings.response_type,o=o||this._settings.scope,s=s||this._settings.redirect_uri,h=h||this._settings.prompt,l=l||this._settings.display,f=f||this._settings.max_age,g=g||this._settings.ui_locales,v=v||this._settings.acr_values,y=y||this._settings.resource,S=S||this._settings.response_mode,b=b||this._settings.extraQueryParams,w=w||this._settings.extraTokenParams;var k=this._settings.authority;return a.SigninRequest.isCode(n)&&\"code\"!==n?Promise.reject(new Error(\"OpenID Connect hybrid flow is not supported\")):this._metadataService.getAuthorizationEndpoint().then((function(t){i.Log.debug(\"OidcClient.createSigninRequest: Received authorization endpoint\",t);var r=new a.SigninRequest({url:t,client_id:A,redirect_uri:s,response_type:n,scope:o,data:u||c,authority:k,prompt:h,display:l,max_age:f,ui_locales:g,id_token_hint:d,login_hint:p,acr_values:v,resource:y,request:m,request_uri:_,extraQueryParams:b,extraTokenParams:w,request_type:F,response_mode:S,client_secret:e._settings.client_secret,skipUserInfo:E}),P=r.state;return(x=x||e._stateStore).set(P.id,P.toStorageString()).then((function(){return r}))}))},t.prototype.readSigninResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSigninResponseState\");var o=\"query\"===this._settings.response_mode||!this._settings.response_mode&&a.SigninRequest.isCode(this._settings.response_type),s=o?\"?\":\"#\",c=new u.SigninResponse(e,s);if(!c.state)return i.Log.error(\"OidcClient.readSigninResponseState: No state in response\"),Promise.reject(new Error(\"No state in response\"));r=r||this._stateStore;var h=n?r.remove.bind(r):r.get.bind(r);return h(c.state).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSigninResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:l.SigninState.fromStorageString(t),response:c}}))},t.prototype.processSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSigninResponse\"),this.readSigninResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return i.Log.debug(\"OidcClient.processSigninResponse: Received state from storage; validating response\"),n._validator.validateSigninResponse(e,r)}))},t.prototype.createSignoutRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.id_token_hint,o=r.data,s=r.state,a=r.post_logout_redirect_uri,u=r.extraQueryParams,h=r.request_type,l=arguments[1];return i.Log.debug(\"OidcClient.createSignoutRequest\"),a=a||this._settings.post_logout_redirect_uri,u=u||this._settings.extraQueryParams,this._metadataService.getEndSessionEndpoint().then((function(t){if(!t)throw i.Log.error(\"OidcClient.createSignoutRequest: No end session endpoint url returned\"),new Error(\"no end session endpoint\");i.Log.debug(\"OidcClient.createSignoutRequest: Received end session endpoint\",t);var r=new c.SignoutRequest({url:t,id_token_hint:n,post_logout_redirect_uri:a,data:o||s,extraQueryParams:u,request_type:h}),f=r.state;return f&&(i.Log.debug(\"OidcClient.createSignoutRequest: Signout request has state to persist\"),(l=l||e._stateStore).set(f.id,f.toStorageString())),r}))},t.prototype.readSignoutResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSignoutResponseState\");var o=new h.SignoutResponse(e);if(!o.state)return i.Log.debug(\"OidcClient.readSignoutResponseState: No state in response\"),o.error?(i.Log.warn(\"OidcClient.readSignoutResponseState: Response was error: \",o.error),Promise.reject(new s.ErrorResponse(o))):Promise.resolve({state:void 0,response:o});var a=o.state;r=r||this._stateStore;var u=n?r.remove.bind(r):r.get.bind(r);return u(a).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSignoutResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:f.State.fromStorageString(t),response:o}}))},t.prototype.processSignoutResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSignoutResponse\"),this.readSignoutResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return e?(i.Log.debug(\"OidcClient.processSignoutResponse: Received state from storage; validating response\"),n._validator.validateSignoutResponse(e,r)):(i.Log.debug(\"OidcClient.processSignoutResponse: No state from storage; skipping validating response\"),r)}))},t.prototype.clearStaleState=function t(e){return i.Log.debug(\"OidcClient.clearStaleState\"),e=e||this._stateStore,f.State.clearStaleState(e,this.settings.staleStateAge)},n(t,[{key:\"_stateStore\",get:function t(){return this.settings.stateStore}},{key:\"_validator\",get:function t(){return this.settings.validator}},{key:\"_metadataService\",get:function t(){return this.settings.metadataService}},{key:\"settings\",get:function t(){return this._settings}},{key:\"metadataService\",get:function t(){return this._metadataService}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenClient=void 0;var n=r(7),i=r(2),o=r(0);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.TokenClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw o.Log.error(\"TokenClient.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r,this._metadataService=new a(this._settings)}return t.prototype.exchangeCode=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"authorization_code\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret,r.redirect_uri=r.redirect_uri||this._settings.redirect_uri;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.code?r.redirect_uri?r.code_verifier?r.client_id?r.client_secret||\"client_secret_basic\"!=i?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeCode: No client_secret passed\"),Promise.reject(new Error(\"A client_secret is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code_verifier passed\"),Promise.reject(new Error(\"A code_verifier is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No redirect_uri passed\"),Promise.reject(new Error(\"A redirect_uri is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code passed\"),Promise.reject(new Error(\"A code is required\")))},t.prototype.exchangeRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"refresh_token\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.refresh_token?r.client_id?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No refresh_token passed\"),Promise.reject(new Error(\"A refresh_token is required\")))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ErrorResponse=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.ErrorResponse=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=r.error,a=r.error_description,u=r.error_uri,c=r.state,h=r.session_state;if(i(this,e),!s)throw n.Log.error(\"No error passed to ErrorResponse\"),new Error(\"error\");var l=o(this,t.call(this,a||s));return l.name=\"ErrorResponse\",l.error=s,l.error_description=a,l.error_uri=u,l.state=c,l.session_state=h,l}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(Error)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninState=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.nonce,i=r.authority,o=r.client_id,u=r.redirect_uri,l=r.code_verifier,f=r.response_mode,g=r.client_secret,d=r.scope,p=r.extraTokenParams,v=r.skipUserInfo;c(this,e);var y=h(this,t.call(this,arguments[0]));if(!0===n?y._nonce=(0,a.default)():n&&(y._nonce=n),!0===l?y._code_verifier=(0,a.default)()+(0,a.default)()+(0,a.default)():l&&(y._code_verifier=l),y.code_verifier){var m=s.JoseUtil.hashString(y.code_verifier,\"SHA256\");y._code_challenge=s.JoseUtil.hexToBase64Url(m)}return y._redirect_uri=u,y._authority=i,y._client_id=o,y._response_mode=f,y._client_secret=g,y._scope=d,y._extraTokenParams=p,y._skipUserInfo=v,y}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.toStorageString=function t(){return i.Log.debug(\"SigninState.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,nonce:this.nonce,code_verifier:this.code_verifier,redirect_uri:this.redirect_uri,authority:this.authority,client_id:this.client_id,response_mode:this.response_mode,client_secret:this.client_secret,scope:this.scope,extraTokenParams:this.extraTokenParams,skipUserInfo:this.skipUserInfo})},e.fromStorageString=function t(r){return i.Log.debug(\"SigninState.fromStorageString\"),new e(JSON.parse(r))},n(e,[{key:\"nonce\",get:function t(){return this._nonce}},{key:\"authority\",get:function t(){return this._authority}},{key:\"client_id\",get:function t(){return this._client_id}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"code_verifier\",get:function t(){return this._code_verifier}},{key:\"code_challenge\",get:function t(){return this._code_challenge}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"scope\",get:function t(){return this._scope}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams}},{key:\"skipUserInfo\",get:function t(){return this._skipUserInfo}}]),e}(o.State)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(){return(\"undefined\"!=i&&null!==i&&void 0!==i.getRandomValues?o:s)().replace(/-/g,\"\")};var i=\"undefined\"!=typeof window?window.crypto||window.msCrypto:null;function o(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^i.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function s(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^16*Math.random()>>t/4).toString(16)}))}t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.User=void 0;var n=function(){function t(t,e){for(var r=0;r0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AccessTokenEvents=void 0;var n=r(0),i=r(46);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.AccessTokenEvents=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.accessTokenExpiringNotificationTime,n=void 0===r?60:r,s=e.accessTokenExpiringTimer,a=void 0===s?new i.Timer(\"Access token expiring\"):s,u=e.accessTokenExpiredTimer,c=void 0===u?new i.Timer(\"Access token expired\"):u;o(this,t),this._accessTokenExpiringNotificationTime=n,this._accessTokenExpiring=a,this._accessTokenExpired=c}return t.prototype.load=function t(e){if(e.access_token&&void 0!==e.expires_in){var r=e.expires_in;if(n.Log.debug(\"AccessTokenEvents.load: access token present, remaining duration:\",r),r>0){var i=r-this._accessTokenExpiringNotificationTime;i<=0&&(i=1),n.Log.debug(\"AccessTokenEvents.load: registering expiring timer in:\",i),this._accessTokenExpiring.init(i)}else n.Log.debug(\"AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration.\"),this._accessTokenExpiring.cancel();var o=r+1;n.Log.debug(\"AccessTokenEvents.load: registering expired timer in:\",o),this._accessTokenExpired.init(o)}else this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.unload=function t(){n.Log.debug(\"AccessTokenEvents.unload: canceling existing access token timers\"),this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.addAccessTokenExpiring=function t(e){this._accessTokenExpiring.addHandler(e)},t.prototype.removeAccessTokenExpiring=function t(e){this._accessTokenExpiring.removeHandler(e)},t.prototype.addAccessTokenExpired=function t(e){this._accessTokenExpired.addHandler(e)},t.prototype.removeAccessTokenExpired=function t(e){this._accessTokenExpired.removeHandler(e)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Event=void 0;var n=r(0);e.Event=function(){function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._name=e,this._callbacks=[]}return t.prototype.addHandler=function t(e){this._callbacks.push(e)},t.prototype.removeHandler=function t(e){var r=this._callbacks.findIndex((function(t){return t===e}));r>=0&&this._callbacks.splice(r,1)},t.prototype.raise=function t(){n.Log.debug(\"Event: Raising event: \"+this._name);for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:o.CheckSessionIFrame,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.Global.timer;if(a(this,t),!e)throw i.Log.error(\"SessionMonitor.ctor: No user manager passed to SessionMonitor\"),new Error(\"userManager\");this._userManager=e,this._CheckSessionIFrameCtor=n,this._timer=u,this._userManager.events.addUserLoaded(this._start.bind(this)),this._userManager.events.addUserUnloaded(this._stop.bind(this)),Promise.resolve(this._userManager.getUser().then((function(t){t?r._start(t):r._settings.monitorAnonymousSession&&r._userManager.querySessionStatus().then((function(t){var e={session_state:t.session_state};t.sub&&t.sid&&(e.profile={sub:t.sub,sid:t.sid}),r._start(e)})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from querySessionStatus:\",t.message)}))})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from getUser:\",t.message)})))}return t.prototype._start=function t(e){var r=this,n=e.session_state;n&&(e.profile?(this._sub=e.profile.sub,this._sid=e.profile.sid,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", sub:\",this._sub)):(this._sub=void 0,this._sid=void 0,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", anonymous user\")),this._checkSessionIFrame?this._checkSessionIFrame.start(n):this._metadataService.getCheckSessionIframe().then((function(t){if(t){i.Log.debug(\"SessionMonitor._start: Initializing check session iframe\");var e=r._client_id,o=r._checkSessionInterval,s=r._stopCheckSessionOnError;r._checkSessionIFrame=new r._CheckSessionIFrameCtor(r._callback.bind(r),e,t,o,s),r._checkSessionIFrame.load().then((function(){r._checkSessionIFrame.start(n)}))}else i.Log.warn(\"SessionMonitor._start: No check session iframe found in the metadata\")})).catch((function(t){i.Log.error(\"SessionMonitor._start: Error from getCheckSessionIframe:\",t.message)})))},t.prototype._stop=function t(){var e=this;if(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&(i.Log.debug(\"SessionMonitor._stop\"),this._checkSessionIFrame.stop()),this._settings.monitorAnonymousSession)var r=this._timer.setInterval((function(){e._timer.clearInterval(r),e._userManager.querySessionStatus().then((function(t){var r={session_state:t.session_state};t.sub&&t.sid&&(r.profile={sub:t.sub,sid:t.sid}),e._start(r)})).catch((function(t){i.Log.error(\"SessionMonitor: error from querySessionStatus:\",t.message)}))}),1e3)},t.prototype._callback=function t(){var e=this;this._userManager.querySessionStatus().then((function(t){var r=!0;t?t.sub===e._sub?(r=!1,e._checkSessionIFrame.start(t.session_state),t.sid===e._sid?i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:\",t.session_state):(i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:\",t.session_state),e._userManager.events._raiseUserSessionChanged())):i.Log.debug(\"SessionMonitor._callback: Different subject signed into OP:\",t.sub):i.Log.debug(\"SessionMonitor._callback: Subject no longer signed into OP\"),r&&(e._sub?(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed out event\"),e._userManager.events._raiseUserSignedOut()):(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed in event\"),e._userManager.events._raiseUserSignedIn()))})).catch((function(t){e._sub&&(i.Log.debug(\"SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event\",t.message),e._userManager.events._raiseUserSignedOut())}))},n(t,[{key:\"_settings\",get:function t(){return this._userManager.settings}},{key:\"_metadataService\",get:function t(){return this._userManager.metadataService}},{key:\"_client_id\",get:function t(){return this._settings.client_id}},{key:\"_checkSessionInterval\",get:function t(){return this._settings.checkSessionInterval}},{key:\"_stopCheckSessionOnError\",get:function t(){return this._settings.stopCheckSessionOnError}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CheckSessionIFrame=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.CheckSessionIFrame=function(){function t(e,r,n,o){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];i(this,t),this._callback=e,this._client_id=r,this._url=n,this._interval=o||2e3,this._stopOnError=s;var a=n.indexOf(\"/\",n.indexOf(\"//\")+2);this._frame_origin=n.substr(0,a),this._frame=window.document.createElement(\"iframe\"),this._frame.style.visibility=\"hidden\",this._frame.style.position=\"absolute\",this._frame.style.display=\"none\",this._frame.width=0,this._frame.height=0,this._frame.src=n}return t.prototype.load=function t(){var e=this;return new Promise((function(t){e._frame.onload=function(){t()},window.document.body.appendChild(e._frame),e._boundMessageEvent=e._message.bind(e),window.addEventListener(\"message\",e._boundMessageEvent,!1)}))},t.prototype._message=function t(e){e.origin===this._frame_origin&&e.source===this._frame.contentWindow&&(\"error\"===e.data?(n.Log.error(\"CheckSessionIFrame: error message from check session op iframe\"),this._stopOnError&&this.stop()):\"changed\"===e.data?(n.Log.debug(\"CheckSessionIFrame: changed message from check session op iframe\"),this.stop(),this._callback()):n.Log.debug(\"CheckSessionIFrame: \"+e.data+\" message from check session op iframe\"))},t.prototype.start=function t(e){var r=this;if(this._session_state!==e){n.Log.debug(\"CheckSessionIFrame.start\"),this.stop(),this._session_state=e;var i=function t(){r._frame.contentWindow.postMessage(r._client_id+\" \"+r._session_state,r._frame_origin)};i(),this._timer=window.setInterval(i,this._interval)}},t.prototype.stop=function t(){this._session_state=null,this._timer&&(n.Log.debug(\"CheckSessionIFrame.stop\"),window.clearInterval(this._timer),this._timer=null)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenRevocationClient=void 0;var n=r(0),i=r(2),o=r(1);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var a=\"access_token\",u=\"refresh_token\";e.TokenRevocationClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.XMLHttpRequest,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw n.Log.error(\"TokenRevocationClient.ctor: No settings provided\"),new Error(\"No settings provided.\");this._settings=e,this._XMLHttpRequestCtor=r,this._metadataService=new a(this._settings)}return t.prototype.revoke=function t(e,r){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"access_token\";if(!e)throw n.Log.error(\"TokenRevocationClient.revoke: No token provided\"),new Error(\"No token provided.\");if(o!==a&&o!=u)throw n.Log.error(\"TokenRevocationClient.revoke: Invalid token type\"),new Error(\"Invalid token type.\");return this._metadataService.getRevocationEndpoint().then((function(t){if(t){n.Log.debug(\"TokenRevocationClient.revoke: Revoking \"+o);var s=i._settings.client_id,a=i._settings.client_secret;return i._revoke(t,s,a,e,o)}if(r)throw n.Log.error(\"TokenRevocationClient.revoke: Revocation not supported\"),new Error(\"Revocation not supported\")}))},t.prototype._revoke=function t(e,r,i,o,s){var a=this;return new Promise((function(t,u){var c=new a._XMLHttpRequestCtor;c.open(\"POST\",e),c.onload=function(){n.Log.debug(\"TokenRevocationClient.revoke: HTTP response received, status\",c.status),200===c.status?t():u(Error(c.statusText+\" (\"+c.status+\")\"))},c.onerror=function(){n.Log.debug(\"TokenRevocationClient.revoke: Network Error.\"),u(\"Network Error\")};var h=\"client_id=\"+encodeURIComponent(r);i&&(h+=\"&client_secret=\"+encodeURIComponent(i)),h+=\"&token_type_hint=\"+encodeURIComponent(s),h+=\"&token=\"+encodeURIComponent(o),c.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),c.send(h)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaPopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.MetadataService,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.UserInfoService,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:c.JoseUtil,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.TokenClient;if(h(this,t),!e)throw i.Log.error(\"ResponseValidator.ctor: No settings passed to ResponseValidator\"),new Error(\"settings\");this._settings=e,this._metadataService=new r(this._settings),this._userInfoService=new n(this._settings),this._joseUtil=u,this._tokenClient=new l(this._settings)}return t.prototype.validateSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"ResponseValidator.validateSigninResponse\"),this._processSigninParams(e,r).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: state processed\"),n._validateTokens(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: tokens validated\"),n._processClaims(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: claims processed\"),t}))}))}))},t.prototype.validateSignoutResponse=function t(e,r){return e.id!==r.state?(i.Log.error(\"ResponseValidator.validateSignoutResponse: State does not match\"),Promise.reject(new Error(\"State does not match\"))):(i.Log.debug(\"ResponseValidator.validateSignoutResponse: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator.validateSignoutResponse: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):Promise.resolve(r))},t.prototype._processSigninParams=function t(e,r){if(e.id!==r.state)return i.Log.error(\"ResponseValidator._processSigninParams: State does not match\"),Promise.reject(new Error(\"State does not match\"));if(!e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: No client_id on state\"),Promise.reject(new Error(\"No client_id on state\"));if(!e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: No authority on state\"),Promise.reject(new Error(\"No authority on state\"));if(this._settings.authority){if(this._settings.authority&&this._settings.authority!==e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state\"),Promise.reject(new Error(\"authority mismatch on settings vs. signin state\"))}else this._settings.authority=e.authority;if(this._settings.client_id){if(this._settings.client_id&&this._settings.client_id!==e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state\"),Promise.reject(new Error(\"client_id mismatch on settings vs. signin state\"))}else this._settings.client_id=e.client_id;return i.Log.debug(\"ResponseValidator._processSigninParams: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator._processSigninParams: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):e.nonce&&!r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting id_token in response\"),Promise.reject(new Error(\"No id_token in response\"))):!e.nonce&&r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting id_token in response\"),Promise.reject(new Error(\"Unexpected id_token in response\"))):e.code_verifier&&!r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting code in response\"),Promise.reject(new Error(\"No code in response\"))):!e.code_verifier&&r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting code in response\"),Promise.reject(new Error(\"Unexpected code in response\"))):(r.scope||(r.scope=e.scope),Promise.resolve(r))},t.prototype._processClaims=function t(e,r){var n=this;if(r.isOpenIdConnect){if(i.Log.debug(\"ResponseValidator._processClaims: response is OIDC, processing claims\"),r.profile=this._filterProtocolClaims(r.profile),!0!==e.skipUserInfo&&this._settings.loadUserInfo&&r.access_token)return i.Log.debug(\"ResponseValidator._processClaims: loading user info\"),this._userInfoService.getClaims(r.access_token).then((function(t){return i.Log.debug(\"ResponseValidator._processClaims: user info claims received from user info endpoint\"),t.sub!==r.profile.sub?(i.Log.error(\"ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token\"),Promise.reject(new Error(\"sub from user info endpoint does not match sub in id_token\"))):(r.profile=n._mergeClaims(r.profile,t),i.Log.debug(\"ResponseValidator._processClaims: user info claims received, updated profile:\",r.profile),r)}));i.Log.debug(\"ResponseValidator._processClaims: not loading user info\")}else i.Log.debug(\"ResponseValidator._processClaims: response is not OIDC, not processing claims\");return Promise.resolve(r)},t.prototype._mergeClaims=function t(e,r){var i=Object.assign({},e);for(var o in r){var s=r[o];Array.isArray(s)||(s=[s]);for(var a=0;a1)return i.Log.error(\"ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));o=t[0]}return Promise.resolve(o)}))},t.prototype._getSigningKeyForJwtWithSingleRetry=function t(e){var r=this;return this._getSigningKeyForJwt(e).then((function(t){return t?Promise.resolve(t):(r._metadataService.resetSigningKeys(),r._getSigningKeyForJwt(e))}))},t.prototype._validateIdToken=function t(e,r){var n=this;if(!e.nonce)return i.Log.error(\"ResponseValidator._validateIdToken: No nonce on state\"),Promise.reject(new Error(\"No nonce on state\"));var o=this._joseUtil.parseJwt(r.id_token);return o&&o.header&&o.payload?e.nonce!==o.payload.nonce?(i.Log.error(\"ResponseValidator._validateIdToken: Invalid nonce in id_token\"),Promise.reject(new Error(\"Invalid nonce in id_token\"))):this._metadataService.getIssuer().then((function(t){return i.Log.debug(\"ResponseValidator._validateIdToken: Received issuer\"),n._getSigningKeyForJwtWithSingleRetry(o).then((function(s){if(!s)return i.Log.error(\"ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var a=e.client_id,u=n._settings.clockSkew;return i.Log.debug(\"ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: \",u),n._joseUtil.validateJwt(r.id_token,s,t,a,u).then((function(){return i.Log.debug(\"ResponseValidator._validateIdToken: JWT validation successful\"),o.payload.sub?(r.profile=o.payload,r):(i.Log.error(\"ResponseValidator._validateIdToken: No sub present in id_token\"),Promise.reject(new Error(\"No sub present in id_token\")))}))}))})):(i.Log.error(\"ResponseValidator._validateIdToken: Failed to parse id_token\",o),Promise.reject(new Error(\"Failed to parse id_token\")))},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return i.Log.debug(\"ResponseValidator._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return i.Log.debug(\"ResponseValidator._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),i.Log.debug(\"ResponseValidator._filterByAlg: Number of keys that match kty: \",n,e.length),e},t.prototype._validateAccessToken=function t(e){if(!e.profile)return i.Log.error(\"ResponseValidator._validateAccessToken: No profile loaded from id_token\"),Promise.reject(new Error(\"No profile loaded from id_token\"));if(!e.profile.at_hash)return i.Log.error(\"ResponseValidator._validateAccessToken: No at_hash in id_token\"),Promise.reject(new Error(\"No at_hash in id_token\"));if(!e.id_token)return i.Log.error(\"ResponseValidator._validateAccessToken: No id_token\"),Promise.reject(new Error(\"No id_token\"));var r=this._joseUtil.parseJwt(e.id_token);if(!r||!r.header)return i.Log.error(\"ResponseValidator._validateAccessToken: Failed to parse id_token\",r),Promise.reject(new Error(\"Failed to parse id_token\"));var n=r.header.alg;if(!n||5!==n.length)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n),Promise.reject(new Error(\"Unsupported alg: \"+n));var o=n.substr(2,3);if(!o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));if(256!==(o=parseInt(o))&&384!==o&&512!==o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));var s=\"sha\"+o,a=this._joseUtil.hashString(e.access_token,s);if(!a)return i.Log.error(\"ResponseValidator._validateAccessToken: access_token hash failed:\",s),Promise.reject(new Error(\"Failed to validate at_hash\"));var u=a.substr(0,a.length/2),c=this._joseUtil.hexToBase64Url(u);return c!==e.profile.at_hash?(i.Log.error(\"ResponseValidator._validateAccessToken: Failed to validate at_hash\",c,e.profile.at_hash),Promise.reject(new Error(\"Failed to validate at_hash\"))):(i.Log.debug(\"ResponseValidator._validateAccessToken: success\"),Promise.resolve(e))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserInfoService=void 0;var n=r(7),i=r(2),o=r(0),s=r(4);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.UserInfoService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService,c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:s.JoseUtil;if(a(this,t),!e)throw o.Log.error(\"UserInfoService.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r(void 0,void 0,this._getClaimsFromJwt.bind(this)),this._metadataService=new u(this._settings),this._joseUtil=c}return t.prototype.getClaims=function t(e){var r=this;return e?this._metadataService.getUserInfoEndpoint().then((function(t){return o.Log.debug(\"UserInfoService.getClaims: received userinfo url\",t),r._jsonService.getJson(t,e).then((function(t){return o.Log.debug(\"UserInfoService.getClaims: claims received\",t),t}))})):(o.Log.error(\"UserInfoService.getClaims: No token passed\"),Promise.reject(new Error(\"A token is required\")))},t.prototype._getClaimsFromJwt=function t(e){var r=this;try{var n=this._joseUtil.parseJwt(e.responseText);if(!n||!n.header||!n.payload)return o.Log.error(\"UserInfoService._getClaimsFromJwt: Failed to parse JWT\",n),Promise.reject(new Error(\"Failed to parse id_token\"));var i=n.header.kid,s=void 0;switch(this._settings.userInfoJwtIssuer){case\"OP\":s=this._metadataService.getIssuer();break;case\"ANY\":s=Promise.resolve(n.payload.iss);break;default:s=Promise.resolve(this._settings.userInfoJwtIssuer)}return s.then((function(t){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received issuer:\"+t),r._metadataService.getSigningKeys().then((function(s){if(!s)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No signing keys from metadata\"),Promise.reject(new Error(\"No signing keys from metadata\"));o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received signing keys\");var a=void 0;if(i)a=s.filter((function(t){return t.kid===i}))[0];else{if((s=r._filterByAlg(s,n.header.alg)).length>1)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));a=s[0]}if(!a)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var u=r._settings.client_id,c=r._settings.clockSkew;return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: \",c),r._joseUtil.validateJwt(e.responseText,a,t,u,c,void 0,!0).then((function(){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: JWT validation successful\"),n.payload}))}))}))}catch(t){return o.Log.error(\"UserInfoService._getClaimsFromJwt: Error parsing JWT response\",t.message),void reject(t)}},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return o.Log.debug(\"UserInfoService._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return o.Log.debug(\"UserInfoService._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),o.Log.debug(\"UserInfoService._filterByAlg: Number of keys that match kty: \",n,e.length),e},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllowedSigningAlgs=e.b64tohex=e.hextob64u=e.crypto=e.X509=e.KeyUtil=e.jws=void 0;var n=r(27);e.jws=n.jws,e.KeyUtil=n.KEYUTIL,e.X509=n.X509,e.crypto=n.crypto,e.hextob64u=n.hextob64u,e.b64tohex=n.b64tohex,e.AllowedSigningAlgs=[\"RS256\",\"RS384\",\"RS512\",\"PS256\",\"PS384\",\"PS512\",\"ES256\",\"ES384\",\"ES512\"]},function(t,e,r){\"use strict\";(function(t){Object.defineProperty(e,\"__esModule\",{value:!0});var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n={userAgent:!1},i={};\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nif(void 0===o)var o={};o.lang={extend:function t(e,r,i){if(!r||!e)throw new Error(\"YAHOO.lang.extend failed, please check that all dependencies are included.\");var o=function t(){};if(o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e,e.superclass=r.prototype,r.prototype.constructor==Object.prototype.constructor&&(r.prototype.constructor=r),i){var s;for(s in i)e.prototype[s]=i[s];var a=function t(){},u=[\"toString\",\"valueOf\"];try{/MSIE/.test(n.userAgent)&&(a=function t(e,r){for(s=0;s>>2]>>>24-s%4*8&255;r[i+s>>>2]|=a<<24-(i+s)%4*8}else for(s=0;s>>2]=n[s>>>2];return this.sigBytes+=o,this},clamp:function t(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=s.ceil(r/4)},clone:function t(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function t(e){for(var r=[],n=0;n>>2]>>>24-o%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new h.init(n,r/2)}},g=l.Latin1={stringify:function t(e){for(var r=e.words,n=e.sigBytes,i=[],o=0;o>>2]>>>24-o%4*8&255;i.push(String.fromCharCode(s))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new h.init(n,r)}},d=l.Utf8={stringify:function t(e){try{return decodeURIComponent(escape(g.stringify(e)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function t(e){return g.parse(unescape(encodeURIComponent(e)))}},p=u.BufferedBlockAlgorithm=c.extend({reset:function t(){this._data=new h.init,this._nDataBytes=0},_append:function t(e){\"string\"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function t(e){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,a=i/(4*o),u=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*o,c=s.min(4*u,i);if(u){for(var l=0;l>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;4>a&&o+.75*a>>6*(3-a)&63));if(r=i.charAt(64))for(;e.length%4;)e.push(r);return e.join(\"\")},parse:function t(r){var n=r.length,i=this._map;(o=i.charAt(64))&&(-1!=(o=r.indexOf(o))&&(n=o));for(var o=[],s=0,a=0;a>>6-a%4*2;o[s>>>2]|=(u|c)<<24-s%4*8,s++}return e.create(o,s)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}}(),function(t){for(var e=y,r=(i=e.lib).WordArray,n=i.Hasher,i=e.algo,o=[],s=[],a=function t(e){return 4294967296*(e-(0|e))|0},u=2,c=0;64>c;){var h;t:{h=u;for(var l=t.sqrt(h),f=2;f<=l;f++)if(!(h%f)){h=!1;break t}h=!0}h&&(8>c&&(o[c]=a(t.pow(u,.5))),s[c]=a(t.pow(u,1/3)),c++),u++}var g=[];i=i.SHA256=n.extend({_doReset:function t(){this._hash=new r.init(o.slice(0))},_doProcessBlock:function t(e,r){for(var n=this._hash.words,i=n[0],o=n[1],a=n[2],u=n[3],c=n[4],h=n[5],l=n[6],f=n[7],d=0;64>d;d++){if(16>d)g[d]=0|e[r+d];else{var p=g[d-15],v=g[d-2];g[d]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+g[d-7]+((v<<15|v>>>17)^(v<<13|v>>>19)^v>>>10)+g[d-16]}p=f+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+s[d]+g[d],v=((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+(i&o^i&a^o&a),f=l,l=h,h=c,c=u+p|0,u=a,a=o,o=i,i=p+v|0}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+a|0,n[3]=n[3]+u|0,n[4]=n[4]+c|0,n[5]=n[5]+h|0,n[6]=n[6]+l|0,n[7]=n[7]+f|0},_doFinalize:function e(){var r=this._data,n=r.words,i=8*this._nDataBytes,o=8*r.sigBytes;return n[o>>>5]|=128<<24-o%32,n[14+(o+64>>>9<<4)]=t.floor(i/4294967296),n[15+(o+64>>>9<<4)]=i,r.sigBytes=4*n.length,this._process(),this._hash},clone:function t(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(i),e.HmacSHA256=n._createHmacHelper(i)}(Math),function(){function t(){return n.create.apply(n,arguments)}for(var e=y,r=e.lib.Hasher,n=(o=e.x64).Word,i=o.WordArray,o=e.algo,s=[t(1116352408,3609767458),t(1899447441,602891725),t(3049323471,3964484399),t(3921009573,2173295548),t(961987163,4081628472),t(1508970993,3053834265),t(2453635748,2937671579),t(2870763221,3664609560),t(3624381080,2734883394),t(310598401,1164996542),t(607225278,1323610764),t(1426881987,3590304994),t(1925078388,4068182383),t(2162078206,991336113),t(2614888103,633803317),t(3248222580,3479774868),t(3835390401,2666613458),t(4022224774,944711139),t(264347078,2341262773),t(604807628,2007800933),t(770255983,1495990901),t(1249150122,1856431235),t(1555081692,3175218132),t(1996064986,2198950837),t(2554220882,3999719339),t(2821834349,766784016),t(2952996808,2566594879),t(3210313671,3203337956),t(3336571891,1034457026),t(3584528711,2466948901),t(113926993,3758326383),t(338241895,168717936),t(666307205,1188179964),t(773529912,1546045734),t(1294757372,1522805485),t(1396182291,2643833823),t(1695183700,2343527390),t(1986661051,1014477480),t(2177026350,1206759142),t(2456956037,344077627),t(2730485921,1290863460),t(2820302411,3158454273),t(3259730800,3505952657),t(3345764771,106217008),t(3516065817,3606008344),t(3600352804,1432725776),t(4094571909,1467031594),t(275423344,851169720),t(430227734,3100823752),t(506948616,1363258195),t(659060556,3750685593),t(883997877,3785050280),t(958139571,3318307427),t(1322822218,3812723403),t(1537002063,2003034995),t(1747873779,3602036899),t(1955562222,1575990012),t(2024104815,1125592928),t(2227730452,2716904306),t(2361852424,442776044),t(2428436474,593698344),t(2756734187,3733110249),t(3204031479,2999351573),t(3329325298,3815920427),t(3391569614,3928383900),t(3515267271,566280711),t(3940187606,3454069534),t(4118630271,4000239992),t(116418474,1914138554),t(174292421,2731055270),t(289380356,3203993006),t(460393269,320620315),t(685471733,587496836),t(852142971,1086792851),t(1017036298,365543100),t(1126000580,2618297676),t(1288033470,3409855158),t(1501505948,4234509866),t(1607167915,987167468),t(1816402316,1246189591)],a=[],u=0;80>u;u++)a[u]=t();o=o.SHA512=r.extend({_doReset:function t(){this._hash=new i.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function t(e,r){for(var n=(f=this._hash.words)[0],i=f[1],o=f[2],u=f[3],c=f[4],h=f[5],l=f[6],f=f[7],g=n.high,d=n.low,p=i.high,v=i.low,y=o.high,m=o.low,_=u.high,S=u.low,b=c.high,w=c.low,F=h.high,E=h.low,x=l.high,A=l.low,k=f.high,P=f.low,C=g,T=d,R=p,I=v,D=y,L=m,N=_,U=S,B=b,O=w,j=F,M=E,H=x,V=A,K=k,q=P,J=0;80>J;J++){var W=a[J];if(16>J)var z=W.high=0|e[r+2*J],Y=W.low=0|e[r+2*J+1];else{z=((Y=(z=a[J-15]).high)>>>1|(G=z.low)<<31)^(Y>>>8|G<<24)^Y>>>7;var G=(G>>>1|Y<<31)^(G>>>8|Y<<24)^(G>>>7|Y<<25),X=((Y=(X=a[J-2]).high)>>>19|($=X.low)<<13)^(Y<<3|$>>>29)^Y>>>6,$=($>>>19|Y<<13)^($<<3|Y>>>29)^($>>>6|Y<<26),Q=(Y=a[J-7]).high,Z=(tt=a[J-16]).high,tt=tt.low;z=(z=(z=z+Q+((Y=G+Y.low)>>>0>>0?1:0))+X+((Y=Y+$)>>>0<$>>>0?1:0))+Z+((Y=Y+tt)>>>0>>0?1:0);W.high=z,W.low=Y}Q=B&j^~B&H,tt=O&M^~O&V,W=C&R^C&D^R&D;var et=T&I^T&L^I&L,rt=(G=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),X=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),($=s[J]).high),nt=$.low;Z=K+((B>>>14|O<<18)^(B>>>18|O<<14)^(B<<23|O>>>9))+(($=q+((O>>>14|B<<18)^(O>>>18|B<<14)^(O<<23|B>>>9)))>>>0>>0?1:0),K=H,q=V,H=j,V=M,j=B,M=O,B=N+(Z=(Z=(Z=Z+Q+(($=$+tt)>>>0>>0?1:0))+rt+(($=$+nt)>>>0>>0?1:0))+z+(($=$+Y)>>>0>>0?1:0))+((O=U+$|0)>>>0>>0?1:0)|0,N=D,U=L,D=R,L=I,R=C,I=T,C=Z+(W=G+W+((Y=X+et)>>>0>>0?1:0))+((T=$+Y|0)>>>0<$>>>0?1:0)|0}d=n.low=d+T,n.high=g+C+(d>>>0>>0?1:0),v=i.low=v+I,i.high=p+R+(v>>>0>>0?1:0),m=o.low=m+L,o.high=y+D+(m>>>0>>0?1:0),S=u.low=S+U,u.high=_+N+(S>>>0>>0?1:0),w=c.low=w+O,c.high=b+B+(w>>>0>>0?1:0),E=h.low=E+M,h.high=F+j+(E>>>0>>0?1:0),A=l.low=A+V,l.high=x+H+(A>>>0>>0?1:0),P=f.low=P+q,f.high=k+K+(P>>>0>>0?1:0)},_doFinalize:function t(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128<<24-i%32,r[30+(i+128>>>10<<5)]=Math.floor(n/4294967296),r[31+(i+128>>>10<<5)]=n,e.sigBytes=4*r.length,this._process(),this._hash.toX32()},clone:function t(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),e.SHA512=r._createHelper(o),e.HmacSHA512=r._createHmacHelper(o)}(),function(){var t=y,e=(i=t.x64).Word,r=i.WordArray,n=(i=t.algo).SHA512,i=i.SHA384=n.extend({_doReset:function t(){this._hash=new r.init([new e.init(3418070365,3238371032),new e.init(1654270250,914150663),new e.init(2438529370,812702999),new e.init(355462360,4144912697),new e.init(1731405415,4290775857),new e.init(2394180231,1750603025),new e.init(3675008525,1694076839),new e.init(1203062813,3204075428)])},_doFinalize:function t(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}});t.SHA384=n._createHelper(i),t.HmacSHA384=n._createHmacHelper(i)}();\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nvar m,_=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";function S(t){var e,r,n=\"\";for(e=0;e+3<=t.length;e+=3)r=parseInt(t.substring(e,e+3),16),n+=_.charAt(r>>6)+_.charAt(63&r);for(e+1==t.length?(r=parseInt(t.substring(e,e+1),16),n+=_.charAt(r<<2)):e+2==t.length&&(r=parseInt(t.substring(e,e+2),16),n+=_.charAt(r>>2)+_.charAt((3&r)<<4)),\"=\";(3&n.length)>0;)n+=\"=\";return n}function b(t){var e,r,n,i=\"\",o=0;for(e=0;e>2),r=3&n,o=1):1==o?(i+=R(r<<2|n>>4),r=15&n,o=2):2==o?(i+=R(r),i+=R(n>>2),r=3&n,o=3):(i+=R(r<<2|n>>4),i+=R(15&n),o=0));return 1==o&&(i+=R(r<<2)),i}function w(t){var e,r=b(t),n=new Array;for(e=0;2*e>15;--o>=0;){var u=32767&this[t],c=this[t++]>>15,h=a*u+c*s;i=((u=s*u+((32767&h)<<15)+r[n]+(1073741823&i))>>>30)+(h>>>15)+a*c+(i>>>30),r[n++]=1073741823&u}return i},m=30):\"Netscape\"!=n.appName?(F.prototype.am=function A(t,e,r,n,i,o){for(;--o>=0;){var s=e*this[t++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},m=26):(F.prototype.am=function k(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var u=16383&this[t],c=this[t++]>>14,h=a*u+c*s;i=((u=s*u+((16383&h)<<14)+r[n]+i)>>28)+(h>>14)+a*c,r[n++]=268435455&u}return i},m=28),F.prototype.DB=m,F.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function N(t){this.m=t}function U(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function V(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function K(){}function q(t){return t}function J(t){this.r2=E(),this.q3=E(),F.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}N.prototype.convert=function W(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},N.prototype.revert=function z(t){return t},N.prototype.reduce=function Y(t){t.divRemTo(this.m,null,t)},N.prototype.mulTo=function G(t,e,r){t.multiplyTo(e,r),this.reduce(r)},N.prototype.sqrTo=function X(t,e){t.squareTo(e),this.reduce(e)},U.prototype.convert=function $(t){var e=E();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(F.ZERO)>0&&this.m.subTo(e,e),e},U.prototype.revert=function Q(t){var e=E();return t.copyTo(e),this.reduce(e),e},U.prototype.reduce=function Z(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},U.prototype.mulTo=function tt(t,e,r){t.multiplyTo(e,r),this.reduce(r)},U.prototype.sqrTo=function et(t,e){t.squareTo(e),this.reduce(e)},F.prototype.copyTo=function rt(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},F.prototype.fromInt=function nt(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},F.prototype.fromString=function it(t,e){var r;if(16==e)r=4;else if(8==e)r=3;else if(256==e)r=8;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return void this.fromRadix(t,e);r=2}this.t=0,this.s=0;for(var n=t.length,i=!1,o=0;--n>=0;){var s=8==r?255&t[n]:I(t,n);s<0?\"-\"==t.charAt(n)&&(i=!0):(i=!1,0==o?this[this.t++]=s:o+r>this.DB?(this[this.t-1]|=(s&(1<>this.DB-o):this[this.t-1]|=s<=this.DB&&(o-=this.DB))}8==r&&0!=(128&t[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},F.prototype.dlShiftTo=function st(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},F.prototype.drShiftTo=function at(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)<=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},F.prototype.rShiftTo=function ct(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1<>n;for(var s=r+1;s>n;n>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=t.s}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp()},F.prototype.multiplyTo=function lt(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},F.prototype.divRemTo=function gt(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t0?(n.lShiftTo(u,o),i.lShiftTo(u,r)):(n.copyTo(o),i.copyTo(r));var c=o.t,h=o[c-1];if(0!=h){var l=h*(1<1?o[c-2]>>this.F2:0),f=this.FV/l,g=(1<=0&&(r[r.t++]=1,r.subTo(y,r)),F.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t=0;){var m=r[--p]==h?this.DM:Math.floor(r[p]*f+(r[p-1]+d)*g);if((r[p]+=o.am(0,m,r,v,0,c))0&&r.rShiftTo(u,r),s<0&&F.ZERO.subTo(r,r)}}},F.prototype.invDigit=function dt(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},F.prototype.isEven=function pt(){return 0==(this.t>0?1&this[0]:this.s)},F.prototype.exp=function vt(t,e){if(t>4294967295||t<1)return F.ONE;var r=E(),n=E(),i=e.convert(this),o=L(t)-1;for(i.copyTo(r);--o>=0;)if(e.sqrTo(r,n),(t&1<0)e.mulTo(n,i,r);else{var s=r;r=n,n=s}return e.revert(r)},F.prototype.toString=function yt(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,n=(1<0)for(a>a)>0&&(i=!0,o=R(r));s>=0;)a>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=R(r));return i?o:\"0\"},F.prototype.negate=function mt(){var t=E();return F.ZERO.subTo(this,t),t},F.prototype.abs=function _t(){return this.s<0?this.negate():this},F.prototype.compareTo=function St(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},F.prototype.bitLength=function bt(){return this.t<=0?0:this.DB*(this.t-1)+L(this[this.t-1]^this.s&this.DM)},F.prototype.mod=function wt(t){var e=E();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(F.ZERO)>0&&t.subTo(e,e),e},F.prototype.modPowInt=function Ft(t,e){var r;return r=t<256||e.isEven()?new N(e):new U(e),this.exp(t,r)},F.ZERO=D(0),F.ONE=D(1),K.prototype.convert=q,K.prototype.revert=q,K.prototype.mulTo=function Et(t,e,r){t.multiplyTo(e,r)},K.prototype.sqrTo=function xt(t,e){t.squareTo(e)},J.prototype.convert=function At(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=E();return t.copyTo(e),this.reduce(e),e},J.prototype.revert=function kt(t){return t},J.prototype.reduce=function Pt(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},J.prototype.mulTo=function Ct(t,e,r){t.multiplyTo(e,r),this.reduce(r)},J.prototype.sqrTo=function Tt(t,e){t.squareTo(e),this.reduce(e)};var Rt=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],It=(1<<26)/Rt[Rt.length-1];\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Dt(){this.i=0,this.j=0,this.S=new Array}F.prototype.chunkSize=function Lt(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},F.prototype.toRadix=function Nt(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=D(r),i=E(),o=E(),s=\"\";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(t).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(t)+s},F.prototype.fromRadix=function Ut(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),n=Math.pow(e,r),i=!1,o=0,s=0,a=0;a=r&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(e,o)),this.dAddOffset(s,0)),i&&F.ZERO.subTo(this,this)},F.prototype.fromNumber=function Bt(t,e,r){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(F.ONE.shiftLeft(t-1),O,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(F.ONE.shiftLeft(t-1),this);else{var n=new Array,i=7&t;n.length=1+(t>>3),e.nextBytes(n),i>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=t.s}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp()},F.prototype.dMultiply=function Ht(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},F.prototype.dAddOffset=function Vt(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},F.prototype.multiplyLowerTo=function Kt(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i=0;)r[n]=0;for(n=Math.max(e-this.t,0);n0)if(0==e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},F.prototype.millerRabin=function Wt(t){var e=this.subtract(F.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var n=e.shiftRight(r);(t=t+1>>1)>Rt.length&&(t=Rt.length);for(var i=E(),o=0;o>24},F.prototype.shortValue=function Xt(){return 0==this.t?this.s:this[0]<<16>>16},F.prototype.signum=function $t(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},F.prototype.toByteArray=function Qt(){var t=this.t,e=new Array;e[0]=this.s;var r,n=this.DB-t*this.DB%8,i=0;if(t-- >0)for(n>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s<=0;)n<8?(r=(this[t]&(1<>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(e[i++]=r);return e},F.prototype.equals=function Zt(t){return 0==this.compareTo(t)},F.prototype.min=function te(t){return this.compareTo(t)<0?this:t},F.prototype.max=function ee(t){return this.compareTo(t)>0?this:t},F.prototype.and=function re(t){var e=E();return this.bitwiseTo(t,B,e),e},F.prototype.or=function ne(t){var e=E();return this.bitwiseTo(t,O,e),e},F.prototype.xor=function ie(t){var e=E();return this.bitwiseTo(t,j,e),e},F.prototype.andNot=function oe(t){var e=E();return this.bitwiseTo(t,M,e),e},F.prototype.not=function se(){for(var t=E(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var h=E();for(n.sqrTo(s[1],h);a<=c;)s[a]=E(),n.mulTo(h,s[a-2],s[a]),a+=2}var l,f,g=t.t-1,d=!0,p=E();for(i=L(t[g])-1;g>=0;){for(i>=u?l=t[g]>>i-u&c:(l=(t[g]&(1<0&&(l|=t[g-1]>>this.DB+i-u)),a=r;0==(1&l);)l>>=1,--a;if((i-=a)<0&&(i+=this.DB,--g),d)s[l].copyTo(o),d=!1;else{for(;a>1;)n.sqrTo(o,p),n.sqrTo(p,o),a-=2;a>0?n.sqrTo(o,p):(f=o,o=p,p=f),n.mulTo(p,s[l],o)}for(;g>=0&&0==(t[g]&1<=0?(r.subTo(n,r),e&&i.subTo(s,i),o.subTo(a,o)):(n.subTo(r,n),e&&s.subTo(i,s),a.subTo(o,a))}return 0!=n.compareTo(F.ONE)?F.ZERO:a.compareTo(t)>=0?a.subtract(t):a.signum()<0?(a.addTo(t,a),a.signum()<0?a.add(t):a):a},F.prototype.pow=function Fe(t){return this.exp(t,new K)},F.prototype.gcd=function Ee(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var n=e;e=r,r=n}var i=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(i0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(i=e.getLowestSetBit())>0&&e.rShiftTo(i,e),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},F.prototype.isProbablePrime=function xe(t){var e,r=this.abs();if(1==r.t&&r[0]<=Rt[Rt.length-1]){for(e=0;e>8&255,Te[Re++]^=e>>16&255,Te[Re++]^=e>>24&255,Re>=256&&(Re-=256)}((new Date).getTime())}if(null==Te){var De;if(Te=new Array,Re=0,void 0!==i&&(void 0!==i.crypto||void 0!==i.msCrypto)){var Le=i.crypto||i.msCrypto;if(Le.getRandomValues){var Ne=new Uint8Array(32);for(Le.getRandomValues(Ne),De=0;De<32;++De)Te[Re++]=Ne[De]}else if(\"Netscape\"==n.appName&&n.appVersion<\"5\"){var Ue=i.crypto.random(32);for(De=0;De>>8,Te[Re++]=255&De;Re=0,Ie()}function Be(){if(null==Ce){for(Ie(),(Ce=function t(){return new Dt}()).init(Te),Re=0;Re>24,(16711680&i)>>16,(65280&i)>>8,255&i]))),i+=1;return n}function He(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Ve(t,e){this.x=e,this.q=t}function Ke(t,e,r,n){this.curve=t,this.x=e,this.y=r,this.z=null==n?F.ONE:n,this.zinv=null}function qe(t,e,r){this.q=t,this.a=this.fromBigInteger(e),this.b=this.fromBigInteger(r),this.infinity=new Ke(this,null,null)}Oe.prototype.nextBytes=function Je(t){var e;for(e=0;e0&&e.length>0))throw\"Invalid RSA public key\";this.n=je(t,16),this.e=parseInt(e,16)}},He.prototype.encrypt=function Ye(t){var e=function r(t,e){if(e=0&&e>0;){var i=t.charCodeAt(n--);i<128?r[--e]=i:i>127&&i<2048?(r[--e]=63&i|128,r[--e]=i>>6|192):(r[--e]=63&i|128,r[--e]=i>>6&63|128,r[--e]=i>>12|224)}r[--e]=0;for(var o=new Oe,s=new Array;e>2;){for(s[0]=0;0==s[0];)o.nextBytes(s);r[--e]=s[0]}return r[--e]=2,r[--e]=0,new F(r)}(t,this.n.bitLength()+7>>3);if(null==e)return null;var n=this.doPublic(e);if(null==n)return null;var i=n.toString(16);return 0==(1&i.length)?i:\"0\"+i},He.prototype.encryptOAEP=function Ge(t,e,r){var n=function i(t,e,r,n){var i=br.crypto.MessageDigest,o=br.crypto.Util,s=null;if(r||(r=\"sha1\"),\"string\"==typeof r&&(s=i.getCanonicalAlgName(r),n=i.getHashLength(s),r=function t(e){return Nr(o.hashHex(Ur(e),s))}),t.length+2*n+2>e)throw\"Message too long for RSA\";var a,u=\"\";for(a=0;a>3,e,r);if(null==n)return null;var o=this.doPublic(n);if(null==o)return null;var s=o.toString(16);return 0==(1&s.length)?s:\"0\"+s},He.prototype.type=\"RSA\",Ve.prototype.equals=function Xe(t){return t==this||this.q.equals(t.q)&&this.x.equals(t.x)},Ve.prototype.toBigInteger=function $e(){return this.x},Ve.prototype.negate=function Qe(){return new Ve(this.q,this.x.negate().mod(this.q))},Ve.prototype.add=function Ze(t){return new Ve(this.q,this.x.add(t.toBigInteger()).mod(this.q))},Ve.prototype.subtract=function tr(t){return new Ve(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))},Ve.prototype.multiply=function er(t){return new Ve(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))},Ve.prototype.square=function rr(){return new Ve(this.q,this.x.square().mod(this.q))},Ve.prototype.divide=function nr(t){return new Ve(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))},Ke.prototype.getX=function ir(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ke.prototype.getY=function or(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ke.prototype.equals=function sr(t){return t==this||(this.isInfinity()?t.isInfinity():t.isInfinity()?this.isInfinity():!!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO)&&t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO))},Ke.prototype.isInfinity=function ar(){return null==this.x&&null==this.y||this.z.equals(F.ZERO)&&!this.y.toBigInteger().equals(F.ZERO)},Ke.prototype.negate=function ur(){return new Ke(this.curve,this.x,this.y.negate(),this.z)},Ke.prototype.add=function cr(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q),r=t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q);if(F.ZERO.equals(r))return F.ZERO.equals(e)?this.twice():this.curve.getInfinity();var n=new F(\"3\"),i=this.x.toBigInteger(),o=this.y.toBigInteger(),s=(t.x.toBigInteger(),t.y.toBigInteger(),r.square()),a=s.multiply(r),u=i.multiply(s),c=e.square().multiply(this.z),h=c.subtract(u.shiftLeft(1)).multiply(t.z).subtract(a).multiply(r).mod(this.curve.q),l=u.multiply(n).multiply(e).subtract(o.multiply(a)).subtract(c.multiply(e)).multiply(t.z).add(e.multiply(a)).mod(this.curve.q),f=a.multiply(this.z).multiply(t.z).mod(this.curve.q);return new Ke(this.curve,this.curve.fromBigInteger(h),this.curve.fromBigInteger(l),f)},Ke.prototype.twice=function hr(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=new F(\"3\"),e=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),i=n.multiply(r).mod(this.curve.q),o=this.curve.a.toBigInteger(),s=e.square().multiply(t);F.ZERO.equals(o)||(s=s.add(this.z.square().multiply(o)));var a=(s=s.mod(this.curve.q)).square().subtract(e.shiftLeft(3).multiply(i)).shiftLeft(1).multiply(n).mod(this.curve.q),u=s.multiply(t).multiply(e).subtract(i.shiftLeft(1)).shiftLeft(2).multiply(i).subtract(s.square().multiply(s)).mod(this.curve.q),c=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new Ke(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(u),c)},Ke.prototype.multiply=function lr(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F(\"3\")),i=this.negate(),o=this,s=this.curve.q.subtract(t),a=s.multiply(new F(\"3\")),u=new Ke(this.curve,this.x,this.y),c=u.negate();for(e=n.bitLength()-2;e>0;--e){o=o.twice();var h=n.testBit(e);h!=r.testBit(e)&&(o=o.add(h?this:i))}for(e=a.bitLength()-2;e>0;--e){u=u.twice();var l=a.testBit(e);l!=s.testBit(e)&&(u=u.add(l?u:c))}return o},Ke.prototype.multiplyTwo=function fr(t,e,r){var n;n=t.bitLength()>r.bitLength()?t.bitLength()-1:r.bitLength()-1;for(var i=this.curve.getInfinity(),o=this.add(e);n>=0;)i=i.twice(),t.testBit(n)?i=r.testBit(n)?i.add(o):i.add(this):r.testBit(n)&&(i=i.add(e)),--n;return i},qe.prototype.getQ=function gr(){return this.q},qe.prototype.getA=function dr(){return this.a},qe.prototype.getB=function pr(){return this.b},qe.prototype.equals=function vr(t){return t==this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)},qe.prototype.getInfinity=function yr(){return this.infinity},qe.prototype.fromBigInteger=function mr(t){return new Ve(this.q,t)},qe.prototype.decodePointHex=function _r(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var e=(t.length-2)/2,r=t.substr(2,e),n=t.substr(e+2,e);return new Ke(this,this.fromBigInteger(new F(r,16)),this.fromBigInteger(new F(n,16)));default:return null}},\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\n */\nVe.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},Ke.prototype.getEncoded=function(t){var e=function t(e,r){var n=e.toByteArrayUnsigned();if(rn.length;)n.unshift(0);return n},r=this.getX().toBigInteger(),n=this.getY().toBigInteger(),i=e(r,32);return t?n.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(e(n,32))),i},Ke.decodeFrom=function(t,e){e[0];var r=e.length-1,n=e.slice(1,1+r/2),i=e.slice(1+r/2,1+r);n.unshift(0),i.unshift(0);var o=new F(n),s=new F(i);return new Ke(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ke.decodeFromHex=function(t,e){e.substr(0,2);var r=e.length-2,n=e.substr(2,r/2),i=e.substr(2+r/2,r/2),o=new F(n,16),s=new F(i,16);return new Ke(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ke.prototype.add2D=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;if(this.x.equals(t.x))return this.y.equals(t.y)?this.twice():this.curve.getInfinity();var e=t.x.subtract(this.x),r=t.y.subtract(this.y).divide(e),n=r.square().subtract(this.x).subtract(t.x),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ke(this.curve,n,i)},Ke.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=this.curve.fromBigInteger(F.valueOf(2)),e=this.curve.fromBigInteger(F.valueOf(3)),r=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(t)),n=r.square().subtract(this.x.multiply(t)),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ke(this.curve,n,i)},Ke.prototype.multiply2D=function(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F(\"3\")),i=this.negate(),o=this;for(e=n.bitLength()-2;e>0;--e){o=o.twice();var s=n.testBit(e);s!=r.testBit(e)&&(o=o.add2D(s?this:i))}return o},Ke.prototype.isOnCurve=function(){var t=this.getX().toBigInteger(),e=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),n=this.curve.getB().toBigInteger(),i=this.curve.getQ(),o=e.multiply(e).mod(i),s=t.multiply(t).multiply(t).add(r.multiply(t)).add(n).mod(i);return o.equals(s)},Ke.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"},Ke.prototype.validate=function(){var t=this.curve.getQ();if(this.isInfinity())throw new Error(\"Point is at infinity.\");var e=this.getX().toBigInteger(),r=this.getY().toBigInteger();if(e.compareTo(F.ONE)<0||e.compareTo(t.subtract(F.ONE))>0)throw new Error(\"x coordinate out of bounds\");if(r.compareTo(F.ONE)<0||r.compareTo(t.subtract(F.ONE))>0)throw new Error(\"y coordinate out of bounds\");if(!this.isOnCurve())throw new Error(\"Point is not on the curve.\");if(this.multiply(t).isInfinity())throw new Error(\"Point is not a scalar multiple of G.\");return!0};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\n */\nvar Sr=function(){var t=new RegExp('(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)|(?:\"(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))*\"))',\"g\"),e=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\"),n={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function i(t,e,r){return e?n[e]:String.fromCharCode(parseInt(r,16))}var o=new String(\"\"),s=Object.hasOwnProperty;return function(n,a){var u,c,h=n.match(t),l=h[0],f=!1;\"{\"===l?u={}:\"[\"===l?u=[]:(u=[],f=!0);for(var g=[u],d=1-f,p=h.length;d=0;)delete i[o[h]]}return a.call(e,n,i)}({\"\":u},\"\")}return u}}();void 0!==br&&br||(e.KJUR=br={}),void 0!==br.asn1&&br.asn1||(br.asn1={}),br.asn1.ASN1Util=new function(){this.integerToByteHex=function(t){var e=t.toString(16);return e.length%2==1&&(e=\"0\"+e),e},this.bigIntToMinTwosComplementsHex=function(t){var e=t.toString(16);if(\"-\"!=e.substr(0,1))e.length%2==1?e=\"0\"+e:e.match(/^[0-7]/)||(e=\"00\"+e);else{var r=e.substr(1).length;r%2==1?r+=1:e.match(/^[0-7]/)||(r+=2);for(var n=\"\",i=0;i15)throw\"ASN.1 length too long to represent by 8x: n = \"+t.toString(16);return(128+r).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return\"\"},this.setByParam=function(t){this.params=t},null!=t&&null!=t.tlv&&(this.hTLV=t.tlv,this.isModified=!1)},br.asn1.DERAbstractString=function(t){br.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Dr(this.s).toLowerCase()},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(\"string\"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},o.lang.extend(br.asn1.DERAbstractString,br.asn1.ASN1Object),br.asn1.DERAbstractTime=function(t){br.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(t){var e=t.getTime()+6e4*t.getTimezoneOffset();return new Date(e)},this.formatDate=function(t,e,r){var n=this.zeroPadding,i=this.localDateToUTC(t),o=String(i.getFullYear());\"utc\"==e&&(o=o.substr(2,2));var s=o+n(String(i.getMonth()+1),2)+n(String(i.getDate()),2)+n(String(i.getHours()),2)+n(String(i.getMinutes()),2)+n(String(i.getSeconds()),2);if(!0===r){var a=i.getMilliseconds();if(0!=a){var u=n(String(a),3);s=s+\".\"+(u=u.replace(/[0]+$/,\"\"))}}return s+\"Z\"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join(\"0\")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Pr(t)},this.setByDateValue=function(t,e,r,n,i,o){var s=new Date(Date.UTC(t,e-1,r,n,i,o,0));this.setByDate(s)},this.getFreshValueHex=function(){return this.hV}},o.lang.extend(br.asn1.DERAbstractTime,br.asn1.ASN1Object),br.asn1.DERAbstractStructured=function(t){br.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},o.lang.extend(br.asn1.DERAbstractStructured,br.asn1.ASN1Object),br.asn1.DERBoolean=function(t){br.asn1.DERBoolean.superclass.constructor.call(this),this.hT=\"01\",this.hTLV=0==t?\"010100\":\"0101ff\"},o.lang.extend(br.asn1.DERBoolean,br.asn1.ASN1Object),br.asn1.DERInteger=function(t){br.asn1.DERInteger.superclass.constructor.call(this),this.hT=\"02\",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=br.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new F(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):\"number\"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},o.lang.extend(br.asn1.DERInteger,br.asn1.ASN1Object),br.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=br.asn1.ASN1Util.newObject(t.obj);t.hex=\"00\"+e.getEncodedHex()}br.asn1.DERBitString.superclass.constructor.call(this),this.hT=\"03\",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7i.length&&(i=n[r]);return(t=t.replace(i,\"::\")).slice(1,-1)}function Yr(t){var e=\"malformed hex value\";if(!t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw e;if(8!=t.length)return 32==t.length?zr(t):t;try{return parseInt(t.substr(0,2),16)+\".\"+parseInt(t.substr(2,2),16)+\".\"+parseInt(t.substr(4,2),16)+\".\"+parseInt(t.substr(6,2),16)}catch(t){throw e}}function Gr(t){for(var e=encodeURIComponent(t),r=\"\",n=0;n\"7\"?\"00\"+t:t}Er.getLblen=function(t,e){if(\"8\"!=t.substr(e+2,1))return 1;var r=parseInt(t.substr(e+3,1));return 0==r?-1:0=n)break}return s},Er.getNthChildIdx=function(t,e,r){return Er.getChildIdx(t,e)[r]},Er.getIdxbyList=function(t,e,r,n){var i,o,s=Er;return 0==r.length?void 0!==n&&t.substr(e,2)!==n?-1:e:(i=r.shift())>=(o=s.getChildIdx(t,e)).length?-1:s.getIdxbyList(t,o[i],r,n)},Er.getIdxbyListEx=function(t,e,r,n){var i,o,s=Er;if(0==r.length)return void 0!==n&&t.substr(e,2)!==n?-1:e;i=r.shift(),o=s.getChildIdx(t,e);for(var a=0,u=0;u=t.length?null:i.getTLV(t,o)},Er.getTLVbyListEx=function(t,e,r,n){var i=Er,o=i.getIdxbyListEx(t,e,r,n);return-1==o?null:i.getTLV(t,o)},Er.getVbyList=function(t,e,r,n,i){var o,s,a=Er;return-1==(o=a.getIdxbyList(t,e,r,n))||o>=t.length?null:(s=a.getV(t,o),!0===i&&(s=s.substr(2)),s)},Er.getVbyListEx=function(t,e,r,n,i){var o,s,a=Er;return-1==(o=a.getIdxbyListEx(t,e,r,n))?null:(s=a.getV(t,o),\"03\"==t.substr(o,2)&&!1!==i&&(s=s.substr(2)),s)},Er.getInt=function(t,e,r){null==r&&(r=-1);try{var n=t.substr(e,2);if(\"02\"!=n&&\"03\"!=n)return r;var i=Er.getV(t,e);return\"02\"==n?parseInt(i,16):function o(t){try{var e=t.substr(0,2);if(\"00\"==e)return parseInt(t.substr(2),16);var r=parseInt(e,16),n=t.substr(2),i=parseInt(n,16).toString(2);return\"0\"==i&&(i=\"00000000\"),i=i.slice(0,0-r),parseInt(i,2)}catch(t){return-1}}(i)}catch(t){return r}},Er.getOID=function(t,e,r){null==r&&(r=null);try{return\"06\"!=t.substr(e,2)?r:function n(t){if(!Xr(t))return null;try{var e=[],r=t.substr(0,2),n=parseInt(r,16);e[0]=new String(Math.floor(n/40)),e[1]=new String(n%40);for(var i=t.substr(2),o=[],s=0;s0&&(c=c+\".\"+a.join(\".\")),c}catch(t){return null}}(Er.getV(t,e))}catch(t){return r}},Er.getOIDName=function(t,e,r){null==r&&(r=null);try{var n=Er.getOID(t,e,r);if(n==r)return r;var i=br.asn1.x509.OID.oid2name(n);return\"\"==i?n:i}catch(t){return r}},Er.getString=function(t,e,r){null==r&&(r=null);try{return Nr(Er.getV(t,e))}catch(t){return r}},Er.hextooidstr=function(t){var e=function t(e,r){return e.length>=r?e:new Array(r-e.length+1).join(\"0\")+e},r=[],n=t.substr(0,2),i=parseInt(n,16);r[0]=new String(Math.floor(i/40)),r[1]=new String(i%40);for(var o=t.substr(2),s=[],a=0;a0&&(h=h+\".\"+u.join(\".\")),h},Er.dump=function(t,e,r,n){var i=Er,o=i.getV,s=i.dump,a=i.getChildIdx,u=t;t instanceof br.asn1.ASN1Object&&(u=t.getEncodedHex());var c=function t(e,r){return e.length<=2*r?e:e.substr(0,r)+\"..(total \"+e.length/2+\"bytes)..\"+e.substr(e.length-r,r)};void 0===e&&(e={ommit_long_octet:32}),void 0===r&&(r=0),void 0===n&&(n=\"\");var h,l=e.ommit_long_octet;if(\"01\"==(h=u.substr(r,2)))return\"00\"==(f=o(u,r))?n+\"BOOLEAN FALSE\\n\":n+\"BOOLEAN TRUE\\n\";if(\"02\"==h)return n+\"INTEGER \"+c(f=o(u,r),l)+\"\\n\";if(\"03\"==h){var f=o(u,r);if(i.isASN1HEX(f.substr(2))){var g=n+\"BITSTRING, encapsulates\\n\";return g+=s(f.substr(2),e,0,n+\" \")}return n+\"BITSTRING \"+c(f,l)+\"\\n\"}if(\"04\"==h){f=o(u,r);if(i.isASN1HEX(f)){g=n+\"OCTETSTRING, encapsulates\\n\";return g+=s(f,e,0,n+\" \")}return n+\"OCTETSTRING \"+c(f,l)+\"\\n\"}if(\"05\"==h)return n+\"NULL\\n\";if(\"06\"==h){var d=o(u,r),p=br.asn1.ASN1Util.oidHexToInt(d),v=br.asn1.x509.OID.oid2name(p),y=p.replace(/\\./g,\" \");return\"\"!=v?n+\"ObjectIdentifier \"+v+\" (\"+y+\")\\n\":n+\"ObjectIdentifier (\"+y+\")\\n\"}if(\"0a\"==h)return n+\"ENUMERATED \"+parseInt(o(u,r))+\"\\n\";if(\"0c\"==h)return n+\"UTF8String '\"+Lr(o(u,r))+\"'\\n\";if(\"13\"==h)return n+\"PrintableString '\"+Lr(o(u,r))+\"'\\n\";if(\"14\"==h)return n+\"TeletexString '\"+Lr(o(u,r))+\"'\\n\";if(\"16\"==h)return n+\"IA5String '\"+Lr(o(u,r))+\"'\\n\";if(\"17\"==h)return n+\"UTCTime \"+Lr(o(u,r))+\"\\n\";if(\"18\"==h)return n+\"GeneralizedTime \"+Lr(o(u,r))+\"\\n\";if(\"1a\"==h)return n+\"VisualString '\"+Lr(o(u,r))+\"'\\n\";if(\"1e\"==h)return n+\"BMPString '\"+Lr(o(u,r))+\"'\\n\";if(\"30\"==h){if(\"3000\"==u.substr(r,4))return n+\"SEQUENCE {}\\n\";g=n+\"SEQUENCE\\n\";var m=e;if((2==(b=a(u,r)).length||3==b.length)&&\"06\"==u.substr(b[0],2)&&\"04\"==u.substr(b[b.length-1],2)){v=i.oidname(o(u,b[0]));var _=JSON.parse(JSON.stringify(e));_.x509ExtName=v,m=_}for(var S=0;S31)&&(128==(192&r)&&(31&r)==n))}catch(t){return!1}},Er.isASN1HEX=function(t){var e=Er;if(t.length%2==1)return!1;var r=e.getVblen(t,0),n=t.substr(0,2),i=e.getL(t,0);return t.length-n.length-i.length==2*r},Er.checkStrictDER=function(t,e,r,n,i){var o=Er;if(void 0===r){if(\"string\"!=typeof t)throw new Error(\"not hex string\");if(t=t.toLowerCase(),!br.lang.String.isHex(t))throw new Error(\"not hex string\");r=t.length,i=(n=t.length/2)<128?1:Math.ceil(n.toString(16))+1}if(o.getL(t,e).length>2*i)throw new Error(\"L of TLV too long: idx=\"+e);var s=o.getVblen(t,e);if(s>n)throw new Error(\"value of L too long than hex: idx=\"+e);var a=o.getTLV(t,e),u=a.length-2-o.getL(t,e).length;if(u!==2*s)throw new Error(\"V string length and L's value not the same:\"+u+\"/\"+2*s);if(0===e&&t.length!=a.length)throw new Error(\"total length and TLV length unmatch:\"+t.length+\"!=\"+a.length);var c=t.substr(e,2);if(\"02\"===c){var h=o.getVidx(t,e);if(\"00\"==t.substr(h,2)&&t.charCodeAt(h+2)<56)throw new Error(\"not least zeros for DER INTEGER\")}if(32&parseInt(c,16)){for(var l=o.getVblen(t,e),f=0,g=o.getChildIdx(t,e),d=0;d=r?e:new Array(r-e.length+1).join(n)+e};void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:\"3021300906052b0e03021a05000414\",sha224:\"302d300d06096086480165030402040500041c\",sha256:\"3031300d060960864801650304020105000420\",sha384:\"3041300d060960864801650304020205000430\",sha512:\"3051300d060960864801650304020305000440\",md2:\"3020300c06082a864886f70d020205000410\",md5:\"3020300c06082a864886f70d020505000410\",ripemd160:\"3021300906052b2403020105000414\"},this.DEFAULTPROVIDER={md5:\"cryptojs\",sha1:\"cryptojs\",sha224:\"cryptojs\",sha256:\"cryptojs\",sha384:\"cryptojs\",sha512:\"cryptojs\",ripemd160:\"cryptojs\",hmacmd5:\"cryptojs\",hmacsha1:\"cryptojs\",hmacsha224:\"cryptojs\",hmacsha256:\"cryptojs\",hmacsha384:\"cryptojs\",hmacsha512:\"cryptojs\",hmacripemd160:\"cryptojs\",MD5withRSA:\"cryptojs/jsrsa\",SHA1withRSA:\"cryptojs/jsrsa\",SHA224withRSA:\"cryptojs/jsrsa\",SHA256withRSA:\"cryptojs/jsrsa\",SHA384withRSA:\"cryptojs/jsrsa\",SHA512withRSA:\"cryptojs/jsrsa\",RIPEMD160withRSA:\"cryptojs/jsrsa\",MD5withECDSA:\"cryptojs/jsrsa\",SHA1withECDSA:\"cryptojs/jsrsa\",SHA224withECDSA:\"cryptojs/jsrsa\",SHA256withECDSA:\"cryptojs/jsrsa\",SHA384withECDSA:\"cryptojs/jsrsa\",SHA512withECDSA:\"cryptojs/jsrsa\",RIPEMD160withECDSA:\"cryptojs/jsrsa\",SHA1withDSA:\"cryptojs/jsrsa\",SHA224withDSA:\"cryptojs/jsrsa\",SHA256withDSA:\"cryptojs/jsrsa\",MD5withRSAandMGF1:\"cryptojs/jsrsa\",SHAwithRSAandMGF1:\"cryptojs/jsrsa\",SHA1withRSAandMGF1:\"cryptojs/jsrsa\",SHA224withRSAandMGF1:\"cryptojs/jsrsa\",SHA256withRSAandMGF1:\"cryptojs/jsrsa\",SHA384withRSAandMGF1:\"cryptojs/jsrsa\",SHA512withRSAandMGF1:\"cryptojs/jsrsa\",RIPEMD160withRSAandMGF1:\"cryptojs/jsrsa\"},this.CRYPTOJSMESSAGEDIGESTNAME={md5:y.algo.MD5,sha1:y.algo.SHA1,sha224:y.algo.SHA224,sha256:y.algo.SHA256,sha384:y.algo.SHA384,sha512:y.algo.SHA512,ripemd160:y.algo.RIPEMD160},this.getDigestInfoHex=function(t,e){if(void 0===this.DIGESTINFOHEAD[e])throw\"alg not supported in Util.DIGESTINFOHEAD: \"+e;return this.DIGESTINFOHEAD[e]+t},this.getPaddedDigestInfoHex=function(t,e,r){var n=this.getDigestInfoHex(t,e),i=r/4;if(n.length+22>i)throw\"key is too short for SigAlg: keylen=\"+r+\",\"+e;for(var o=\"0001\",s=\"00\"+n,a=\"\",u=i-o.length-s.length,c=0;c=0)return!1;if(r.compareTo(n.ONE)<0||r.compareTo(o)>=0)return!1;var a=r.modInverse(o),u=t.multiply(a).mod(o),c=e.multiply(a).mod(o);return s.multiply(u).add(i.multiply(c)).getX().toBigInteger().mod(o).equals(e)},this.serializeSig=function(t,e){var r=t.toByteArraySigned(),n=e.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(n.length),(i=i.concat(n)).unshift(i.length),i.unshift(48),i},this.parseSig=function(t){var e;if(48!=t[0])throw new Error(\"Signature not a valid DERSequence\");if(2!=t[e=2])throw new Error(\"First element in signature must be a DERInteger\");var r=t.slice(e+2,e+2+t[e+1]);if(2!=t[e+=2+t[e+1]])throw new Error(\"Second element in signature must be a DERInteger\");var i=t.slice(e+2,e+2+t[e+1]);return e+=2+t[e+1],{r:n.fromByteArrayUnsigned(r),s:n.fromByteArrayUnsigned(i)}},this.parseSigCompact=function(t){if(65!==t.length)throw\"Signature has the wrong length\";var e=t[0]-27;if(e<0||e>7)throw\"Invalid signature type\";var r=this.ecparams.n;return{r:n.fromByteArrayUnsigned(t.slice(1,33)).mod(r),s:n.fromByteArrayUnsigned(t.slice(33,65)).mod(r),i:e}},this.readPKCS5PrvKeyHex=function(t){if(!1===h(t))throw new Error(\"not ASN.1 hex string\");var e,r,n;try{e=c(t,0,[\"[0]\",0],\"06\"),r=c(t,0,[1],\"04\");try{n=c(t,0,[\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}if(this.curveName=a(e),void 0===this.curveName)throw\"unsupported curve name\";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(t){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var r,n,i;try{c(t,0,[1,0],\"06\"),r=c(t,0,[1,1],\"06\"),n=c(t,0,[2,0,1],\"04\");try{i=c(t,0,[2,0,\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new e(\"malformed PKCS#8 plain ECC private key\")}if(this.curveName=a(r),void 0===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i),this.setPrivateKeyHex(n),this.isPublic=!1},this.readPKCS8PubKeyHex=function(t){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var r,n;try{c(t,0,[0,0],\"06\"),r=c(t,0,[0,1],\"06\"),n=c(t,0,[1],\"03\")}catch(t){throw new e(\"malformed PKCS#8 ECC public key\")}if(this.curveName=a(r),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(n)},this.readCertPubKeyHex=function(t,r){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var n,i;try{n=c(t,0,[0,5,0,1],\"06\"),i=c(t,0,[0,5,1],\"03\")}catch(t){throw new e(\"malformed X.509 certificate ECC public key\")}if(this.curveName=a(n),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i)},void 0!==t&&void 0!==t.curve&&(this.curveName=t.curve),void 0===this.curveName&&(this.curveName=\"secp256r1\"),this.setNamedCurve(this.curveName),void 0!==t&&(void 0!==t.prv&&this.setPrivateKeyHex(t.prv),void 0!==t.pub&&this.setPublicKeyHex(t.pub))},br.crypto.ECDSA.parseSigHex=function(t){var e=br.crypto.ECDSA.parseSigHexInHexRS(t);return{r:new F(e.r,16),s:new F(e.s,16)}},br.crypto.ECDSA.parseSigHexInHexRS=function(t){var e=Er,r=e.getChildIdx,n=e.getV;if(e.checkStrictDER(t,0),\"30\"!=t.substr(0,2))throw new Error(\"signature is not a ASN.1 sequence\");var i=r(t,0);if(2!=i.length)throw new Error(\"signature shall have two elements\");var o=i[0],s=i[1];if(\"02\"!=t.substr(o,2))throw new Error(\"1st item not ASN.1 integer\");if(\"02\"!=t.substr(s,2))throw new Error(\"2nd item not ASN.1 integer\");return{r:n(t,o),s:n(t,s)}},br.crypto.ECDSA.asn1SigToConcatSig=function(t){var e=br.crypto.ECDSA.parseSigHexInHexRS(t),r=e.r,n=e.s;if(\"00\"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),\"00\"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),r.length%32==30&&(r=\"00\"+r),n.length%32==30&&(n=\"00\"+n),r.length%32!=0)throw\"unknown ECDSA sig r length error\";if(n.length%32!=0)throw\"unknown ECDSA sig s length error\";return r+n},br.crypto.ECDSA.concatSigToASN1Sig=function(t){if(t.length/2*8%128!=0)throw\"unknown ECDSA concatinated r-s sig length error\";var e=t.substr(0,t.length/2),r=t.substr(t.length/2);return br.crypto.ECDSA.hexRSSigToASN1Sig(e,r)},br.crypto.ECDSA.hexRSSigToASN1Sig=function(t,e){var r=new F(t,16),n=new F(e,16);return br.crypto.ECDSA.biRSSigToASN1Sig(r,n)},br.crypto.ECDSA.biRSSigToASN1Sig=function(t,e){var r=br.asn1,n=new r.DERInteger({bigint:t}),i=new r.DERInteger({bigint:e});return new r.DERSequence({array:[n,i]}).getEncodedHex()},br.crypto.ECDSA.getName=function(t){return\"2b8104001f\"===t?\"secp192k1\":\"2a8648ce3d030107\"===t?\"secp256r1\":\"2b8104000a\"===t?\"secp256k1\":\"2b81040021\"===t?\"secp224r1\":\"2b81040022\"===t?\"secp384r1\":-1!==\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(t)?\"secp256r1\":-1!==\"|secp256k1|\".indexOf(t)?\"secp256k1\":-1!==\"|secp224r1|NIST P-224|P-224|\".indexOf(t)?\"secp224r1\":-1!==\"|secp384r1|NIST P-384|P-384|\".indexOf(t)?\"secp384r1\":null},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.ECParameterDB=new function(){var t={},e={};function r(t){return new F(t,16)}this.getByName=function(r){var n=r;if(void 0!==e[n]&&(n=e[r]),void 0!==t[n])return t[n];throw\"unregistered EC curve name: \"+n},this.regist=function(n,i,o,s,a,u,c,h,l,f,g,d){t[n]={};var p=r(o),v=r(s),y=r(a),m=r(u),_=r(c),S=new qe(p,v,y),b=S.decodePointHex(\"04\"+h+l);t[n].name=n,t[n].keylen=i,t[n].curve=S,t[n].G=b,t[n].n=m,t[n].h=_,t[n].oid=g,t[n].info=d;for(var w=0;w=2*u)break}var f={};return f.keyhex=c.substr(0,2*i[e].keylen),f.ivhex=c.substr(2*i[e].keylen,2*i[e].ivlen),f},a=function t(e,r,n,o){var s=y.enc.Base64.parse(e),a=y.enc.Hex.stringify(s);return(0,i[r].proc)(a,n,o)};return{version:\"1.0.0\",parsePKCS5PEM:function t(e){return o(e)},getKeyAndUnusedIvByPasscodeAndIvsalt:function t(e,r,n){return s(e,r,n)},decryptKeyB64:function t(e,r,n,i){return a(e,r,n,i)},getDecryptedKeyHex:function t(e,r){var n=o(e),i=(n.type,n.cipher),u=n.ivsalt,c=n.data,h=s(i,r,u).keyhex;return a(c,i,h,u)},getEncryptedPKCS5PEMFromPrvKeyHex:function t(e,r,n,o,a){var u=\"\";if(void 0!==o&&null!=o||(o=\"AES-256-CBC\"),void 0===i[o])throw\"KEYUTIL unsupported algorithm: \"+o;void 0!==a&&null!=a||(a=function t(e){var r=y.lib.WordArray.random(e);return y.enc.Hex.stringify(r)}(i[o].ivlen).toUpperCase());var c=function t(e,r,n,o){return(0,i[r].eproc)(e,n,o)}(r,o,s(o,n,a).keyhex,a);u=\"-----BEGIN \"+e+\" PRIVATE KEY-----\\r\\n\";return u+=\"Proc-Type: 4,ENCRYPTED\\r\\n\",u+=\"DEK-Info: \"+o+\",\"+a+\"\\r\\n\",u+=\"\\r\\n\",u+=c.replace(/(.{64})/g,\"$1\\r\\n\"),u+=\"\\r\\n-----END \"+e+\" PRIVATE KEY-----\\r\\n\"},parseHexOfEncryptedPKCS8:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={},s=n(e,0);if(2!=s.length)throw\"malformed format: SEQUENCE(0).items != 2: \"+s.length;o.ciphertext=i(e,s[1]);var a=n(e,s[0]);if(2!=a.length)throw\"malformed format: SEQUENCE(0.0).items != 2: \"+a.length;if(\"2a864886f70d01050d\"!=i(e,a[0]))throw\"this only supports pkcs5PBES2\";var u=n(e,a[1]);if(2!=a.length)throw\"malformed format: SEQUENCE(0.0.1).items != 2: \"+u.length;var c=n(e,u[1]);if(2!=c.length)throw\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+c.length;if(\"2a864886f70d0307\"!=i(e,c[0]))throw\"this only supports TripleDES\";o.encryptionSchemeAlg=\"TripleDES\",o.encryptionSchemeIV=i(e,c[1]);var h=n(e,u[0]);if(2!=h.length)throw\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+h.length;if(\"2a864886f70d01050c\"!=i(e,h[0]))throw\"this only supports pkcs5PBKDF2\";var l=n(e,h[1]);if(l.length<2)throw\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+l.length;o.pbkdf2Salt=i(e,l[0]);var f=i(e,l[1]);try{o.pbkdf2Iter=parseInt(f,16)}catch(t){throw\"malformed format pbkdf2Iter: \"+f}return o},getPBKDF2KeyHexFromParam:function t(e,r){var n=y.enc.Hex.parse(e.pbkdf2Salt),i=e.pbkdf2Iter,o=y.PBKDF2(r,n,{keySize:6,iterations:i});return y.enc.Hex.stringify(o)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function t(e,r){var n=Hr(e,\"ENCRYPTED PRIVATE KEY\"),i=this.parseHexOfEncryptedPKCS8(n),o=Zr.getPBKDF2KeyHexFromParam(i,r),s={};s.ciphertext=y.enc.Hex.parse(i.ciphertext);var a=y.enc.Hex.parse(o),u=y.enc.Hex.parse(i.encryptionSchemeIV),c=y.TripleDES.decrypt(s,a,{iv:u});return y.enc.Hex.stringify(c)},getKeyFromEncryptedPKCS8PEM:function t(e,r){var n=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(e,r);return this.getKeyFromPlainPrivatePKCS8Hex(n)},parsePlainPrivatePKCS8Hex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={algparam:null};if(\"30\"!=e.substr(0,2))throw\"malformed plain PKCS8 private key(code:001)\";var s=n(e,0);if(3!=s.length)throw\"malformed plain PKCS8 private key(code:002)\";if(\"30\"!=e.substr(s[1],2))throw\"malformed PKCS8 private key(code:003)\";var a=n(e,s[1]);if(2!=a.length)throw\"malformed PKCS8 private key(code:004)\";if(\"06\"!=e.substr(a[0],2))throw\"malformed PKCS8 private key(code:005)\";if(o.algoid=i(e,a[0]),\"06\"==e.substr(a[1],2)&&(o.algparam=i(e,a[1])),\"04\"!=e.substr(s[2],2))throw\"malformed PKCS8 private key(code:006)\";return o.keyidx=r.getVidx(e,s[2]),o},getKeyFromPlainPrivatePKCS8PEM:function t(e){var r=Hr(e,\"PRIVATE KEY\");return this.getKeyFromPlainPrivatePKCS8Hex(r)},getKeyFromPlainPrivatePKCS8Hex:function t(e){var r,n=this.parsePlainPrivatePKCS8Hex(e);if(\"2a864886f70d010101\"==n.algoid)r=new He;else if(\"2a8648ce380401\"==n.algoid)r=new br.crypto.DSA;else{if(\"2a8648ce3d0201\"!=n.algoid)throw\"unsupported private key algorithm\";r=new br.crypto.ECDSA}return r.readPKCS8PrvKeyHex(e),r},_getKeyFromPublicPKCS8Hex:function t(e){var r,n=Er.getVbyList(e,0,[0,0],\"06\");if(\"2a864886f70d010101\"===n)r=new He;else if(\"2a8648ce380401\"===n)r=new br.crypto.DSA;else{if(\"2a8648ce3d0201\"!==n)throw\"unsupported PKCS#8 public key hex\";r=new br.crypto.ECDSA}return r.readPKCS8PubKeyHex(e),r},parsePublicRawRSAKeyHex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={};if(\"30\"!=e.substr(0,2))throw\"malformed RSA key(code:001)\";var s=n(e,0);if(2!=s.length)throw\"malformed RSA key(code:002)\";if(\"02\"!=e.substr(s[0],2))throw\"malformed RSA key(code:003)\";if(o.n=i(e,s[0]),\"02\"!=e.substr(s[1],2))throw\"malformed RSA key(code:004)\";return o.e=i(e,s[1]),o},parsePublicPKCS8Hex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={algparam:null},s=n(e,0);if(2!=s.length)throw\"outer DERSequence shall have 2 elements: \"+s.length;var a=s[0];if(\"30\"!=e.substr(a,2))throw\"malformed PKCS8 public key(code:001)\";var u=n(e,a);if(2!=u.length)throw\"malformed PKCS8 public key(code:002)\";if(\"06\"!=e.substr(u[0],2))throw\"malformed PKCS8 public key(code:003)\";if(o.algoid=i(e,u[0]),\"06\"==e.substr(u[1],2)?o.algparam=i(e,u[1]):\"30\"==e.substr(u[1],2)&&(o.algparam={},o.algparam.p=r.getVbyList(e,u[1],[0],\"02\"),o.algparam.q=r.getVbyList(e,u[1],[1],\"02\"),o.algparam.g=r.getVbyList(e,u[1],[2],\"02\")),\"03\"!=e.substr(s[1],2))throw\"malformed PKCS8 public key(code:004)\";return o.key=i(e,s[1]).substr(2),o}}}();Zr.getKey=function(t,e,r){var n=(v=Er).getChildIdx,i=(v.getV,v.getVbyList),o=br.crypto,s=o.ECDSA,a=o.DSA,u=He,c=Hr,h=Zr;if(void 0!==u&&t instanceof u)return t;if(void 0!==s&&t instanceof s)return t;if(void 0!==a&&t instanceof a)return t;if(void 0!==t.curve&&void 0!==t.xy&&void 0===t.d)return new s({pub:t.xy,curve:t.curve});if(void 0!==t.curve&&void 0!==t.d)return new s({prv:t.d,curve:t.curve});if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(t.n,t.e),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.co&&void 0===t.qi)return(P=new u).setPrivateEx(t.n,t.e,t.d,t.p,t.q,t.dp,t.dq,t.co),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0===t.p)return(P=new u).setPrivate(t.n,t.e,t.d),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0===t.x)return(P=new a).setPublic(t.p,t.q,t.g,t.y),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0!==t.x)return(P=new a).setPrivate(t.p,t.q,t.g,t.y,t.x),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(Ir(t.n),Ir(t.e)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.qi)return(P=new u).setPrivateEx(Ir(t.n),Ir(t.e),Ir(t.d),Ir(t.p),Ir(t.q),Ir(t.dp),Ir(t.dq),Ir(t.qi)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d)return(P=new u).setPrivate(Ir(t.n),Ir(t.e),Ir(t.d)),P;if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0===t.d){var l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Ir(t.x)).slice(-l)+(\"0000000000\"+Ir(t.y)).slice(-l);return k.setPublicKeyHex(f),k}if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0!==t.d){l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Ir(t.x)).slice(-l)+(\"0000000000\"+Ir(t.y)).slice(-l);var g=(\"0000000000\"+Ir(t.d)).slice(-l);return k.setPublicKeyHex(f),k.setPrivateKeyHex(g),k}if(\"pkcs5prv\"===r){var d,p=t,v=Er;if(9===(d=n(p,0)).length)(P=new u).readPKCS5PrvKeyHex(p);else if(6===d.length)(P=new a).readPKCS5PrvKeyHex(p);else{if(!(d.length>2&&\"04\"===p.substr(d[1],2)))throw\"unsupported PKCS#1/5 hexadecimal key\";(P=new s).readPKCS5PrvKeyHex(p)}return P}if(\"pkcs8prv\"===r)return P=h.getKeyFromPlainPrivatePKCS8Hex(t);if(\"pkcs8pub\"===r)return h._getKeyFromPublicPKCS8Hex(t);if(\"x509pub\"===r)return on.getPublicKeyFromCertHex(t);if(-1!=t.indexOf(\"-END CERTIFICATE-\",0)||-1!=t.indexOf(\"-END X509 CERTIFICATE-\",0)||-1!=t.indexOf(\"-END TRUSTED CERTIFICATE-\",0))return on.getPublicKeyFromCertPEM(t);if(-1!=t.indexOf(\"-END PUBLIC KEY-\")){var y=Hr(t,\"PUBLIC KEY\");return h._getKeyFromPublicPKCS8Hex(y)}if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var m=c(t,\"RSA PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var _=i(R=c(t,\"DSA PRIVATE KEY\"),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),w=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new F(_,16),new F(S,16),new F(b,16),new F(w,16),new F(E,16)),P}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){m=c(t,\"EC PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END PRIVATE KEY-\"))return h.getKeyFromPlainPrivatePKCS8PEM(t);if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var x=h.getDecryptedKeyHex(t,e),A=new He;return A.readPKCS5PrvKeyHex(x),A}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var k,P=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"04\"),C=i(R,0,[2,0],\"06\"),T=i(R,0,[3,0],\"03\").substr(2);if(void 0===br.crypto.OID.oidhex2name[C])throw\"undefined OID(hex) in KJUR.crypto.OID: \"+C;return(k=new s({curve:br.crypto.OID.oidhex2name[C]})).setPublicKeyHex(T),k.setPrivateKeyHex(P),k.isPublic=!1,k}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var R;_=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),w=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new F(_,16),new F(S,16),new F(b,16),new F(w,16),new F(E,16)),P}if(-1!=t.indexOf(\"-END ENCRYPTED PRIVATE KEY-\"))return h.getKeyFromEncryptedPKCS8PEM(t,e);throw new Error(\"not supported argument\")},Zr.generateKeypair=function(t,e){if(\"RSA\"==t){var r=e;(s=new He).generate(r,\"10001\"),s.isPrivate=!0,s.isPublic=!0;var n=new He,i=s.n.toString(16),o=s.e.toString(16);return n.setPublic(i,o),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}if(\"EC\"==t){var s,a,u=e,c=new br.crypto.ECDSA({curve:u}).generateKeyPairHex();return(s=new br.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),s.setPrivateKeyHex(c.ecprvhex),s.isPrivate=!0,s.isPublic=!1,(n=new br.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}throw\"unknown algorithm: \"+t},Zr.getPEM=function(t,e,r,n,i,o){var s=br,a=s.asn1,u=a.DERObjectIdentifier,c=a.DERInteger,h=a.ASN1Util.newObject,l=a.x509.SubjectPublicKeyInfo,f=s.crypto,g=f.DSA,d=f.ECDSA,p=He;function v(t){return h({seq:[{int:0},{int:{bigint:t.n}},{int:t.e},{int:{bigint:t.d}},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.dmp1}},{int:{bigint:t.dmq1}},{int:{bigint:t.coeff}}]})}function m(t){return h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a0\",!0,{oid:{name:t.curveName}}]},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]})}function _(t){return h({seq:[{int:0},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}},{int:{bigint:t.y}},{int:{bigint:t.x}}]})}if((void 0!==p&&t instanceof p||void 0!==g&&t instanceof g||void 0!==d&&t instanceof d)&&1==t.isPublic&&(void 0===e||\"PKCS8PUB\"==e))return Mr(F=new l(t).getEncodedHex(),\"PUBLIC KEY\");if(\"PKCS1PRV\"==e&&void 0!==p&&t instanceof p&&(void 0===r||null==r)&&1==t.isPrivate)return Mr(F=v(t).getEncodedHex(),\"RSA PRIVATE KEY\");if(\"PKCS1PRV\"==e&&void 0!==d&&t instanceof d&&(void 0===r||null==r)&&1==t.isPrivate){var S=new u({name:t.curveName}).getEncodedHex(),b=m(t).getEncodedHex(),w=\"\";return w+=Mr(S,\"EC PARAMETERS\"),w+=Mr(b,\"EC PRIVATE KEY\")}if(\"PKCS1PRV\"==e&&void 0!==g&&t instanceof g&&(void 0===r||null==r)&&1==t.isPrivate)return Mr(F=_(t).getEncodedHex(),\"DSA PRIVATE KEY\");if(\"PKCS5PRV\"==e&&void 0!==p&&t instanceof p&&void 0!==r&&null!=r&&1==t.isPrivate){var F=v(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==d&&t instanceof d&&void 0!==r&&null!=r&&1==t.isPrivate){F=m(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==g&&t instanceof g&&void 0!==r&&null!=r&&1==t.isPrivate){F=_(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",F,r,n,o)}var E=function t(e,r){var n=x(e,r);return new h({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:n.pbkdf2Salt}},{int:n.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:n.encryptionSchemeIV}}]}]}]},{octstr:{hex:n.ciphertext}}]}).getEncodedHex()},x=function t(e,r){var n=y.lib.WordArray.random(8),i=y.lib.WordArray.random(8),o=y.PBKDF2(r,n,{keySize:6,iterations:100}),s=y.enc.Hex.parse(e),a=y.TripleDES.encrypt(s,o,{iv:i})+\"\",u={};return u.ciphertext=a,u.pbkdf2Salt=y.enc.Hex.stringify(n),u.pbkdf2Iter=100,u.encryptionSchemeAlg=\"DES-EDE3-CBC\",u.encryptionSchemeIV=y.enc.Hex.stringify(i),u};if(\"PKCS8PRV\"==e&&null!=p&&t instanceof p&&1==t.isPrivate){var A=v(t).getEncodedHex();F=h({seq:[{int:0},{seq:[{oid:{name:\"rsaEncryption\"}},{null:!0}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==d&&t instanceof d&&1==t.isPrivate){A=new h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:t.curveName}}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==g&&t instanceof g&&1==t.isPrivate){A=new c({bigint:t.x}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"dsa\"}},{seq:[{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}}]}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}throw new Error(\"unsupported object nor format\")},Zr.getKeyFromCSRPEM=function(t){var e=Hr(t,\"CERTIFICATE REQUEST\");return Zr.getKeyFromCSRHex(e)},Zr.getKeyFromCSRHex=function(t){var e=Zr.parseCSRHex(t);return Zr.getKey(e.p8pubkeyhex,null,\"pkcs8pub\")},Zr.parseCSRHex=function(t){var e=Er,r=e.getChildIdx,n=e.getTLV,i={},o=t;if(\"30\"!=o.substr(0,2))throw\"malformed CSR(code:001)\";var s=r(o,0);if(s.length<1)throw\"malformed CSR(code:002)\";if(\"30\"!=o.substr(s[0],2))throw\"malformed CSR(code:003)\";var a=r(o,s[0]);if(a.length<3)throw\"malformed CSR(code:004)\";return i.p8pubkeyhex=n(o,a[2]),i},Zr.getKeyID=function(t){var e=Zr,r=Er;\"string\"==typeof t&&-1!=t.indexOf(\"BEGIN \")&&(t=e.getKey(t));var n=Hr(e.getPEM(t)),i=r.getIdxbyList(n,0,[1]),o=r.getV(n,i).substring(2);return br.crypto.Util.hashHex(o,\"sha1\")},Zr.getJWKFromKey=function(t){var e={};if(t instanceof He&&t.isPrivate)return e.kty=\"RSA\",e.n=Rr(t.n.toString(16)),e.e=Rr(t.e.toString(16)),e.d=Rr(t.d.toString(16)),e.p=Rr(t.p.toString(16)),e.q=Rr(t.q.toString(16)),e.dp=Rr(t.dmp1.toString(16)),e.dq=Rr(t.dmq1.toString(16)),e.qi=Rr(t.coeff.toString(16)),e;if(t instanceof He&&t.isPublic)return e.kty=\"RSA\",e.n=Rr(t.n.toString(16)),e.e=Rr(t.e.toString(16)),e;if(t instanceof br.crypto.ECDSA&&t.isPrivate){if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw\"unsupported curve name for JWT: \"+n;var r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Rr(r.x),e.y=Rr(r.y),e.d=Rr(t.prvKeyHex),e}if(t instanceof br.crypto.ECDSA&&t.isPublic){var n;if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw\"unsupported curve name for JWT: \"+n;r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Rr(r.x),e.y=Rr(r.y),e}throw\"not supported key object\"},He.getPosArrayOfChildrenFromHex=function(t){return Er.getChildIdx(t,0)},He.getHexValueArrayOfChildrenFromHex=function(t){var e,r=Er.getV,n=r(t,(e=He.getPosArrayOfChildrenFromHex(t))[0]),i=r(t,e[1]),o=r(t,e[2]),s=r(t,e[3]),a=r(t,e[4]),u=r(t,e[5]),c=r(t,e[6]),h=r(t,e[7]),l=r(t,e[8]);return(e=new Array).push(n,i,o,s,a,u,c,h,l),e},He.prototype.readPrivateKeyFromPEMString=function(t){var e=Hr(t),r=He.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8])},He.prototype.readPKCS5PrvKeyHex=function(t){var e=He.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},He.prototype.readPKCS8PrvKeyHex=function(t){var e,r,n,i,o,s,a,u,c=Er,h=c.getVbyListEx;if(!1===c.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");try{e=h(t,0,[2,0,1],\"02\"),r=h(t,0,[2,0,2],\"02\"),n=h(t,0,[2,0,3],\"02\"),i=h(t,0,[2,0,4],\"02\"),o=h(t,0,[2,0,5],\"02\"),s=h(t,0,[2,0,6],\"02\"),a=h(t,0,[2,0,7],\"02\"),u=h(t,0,[2,0,8],\"02\")}catch(t){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(e,r,n,i,o,s,a,u)},He.prototype.readPKCS5PubKeyHex=function(t){var e=Er,r=e.getV;if(!1===e.isASN1HEX(t))throw new Error(\"keyHex is not ASN.1 hex string\");var n=e.getChildIdx(t,0);if(2!==n.length||\"02\"!==t.substr(n[0],2)||\"02\"!==t.substr(n[1],2))throw new Error(\"wrong hex for PKCS#5 public key\");var i=r(t,n[0]),o=r(t,n[1]);this.setPublic(i,o)},He.prototype.readPKCS8PubKeyHex=function(t){var e=Er;if(!1===e.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");if(\"06092a864886f70d010101\"!==e.getTLVbyListEx(t,0,[0,0]))throw new Error(\"not PKCS8 RSA public key\");var r=e.getTLVbyListEx(t,0,[1,0]);this.readPKCS5PubKeyHex(r)},He.prototype.readCertPubKeyHex=function(t,e){var r,n;(r=new on).readCertHex(t),n=r.getPublicKeyHex(),this.readPKCS8PubKeyHex(n)};var tn=new RegExp(\"[^0-9a-f]\",\"gi\");function en(t,e){for(var r=\"\",n=e/4-t.length,i=0;i>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return n}function nn(t){for(var e in br.crypto.Util.DIGESTINFOHEAD){var r=br.crypto.Util.DIGESTINFOHEAD[e],n=r.length;if(t.substring(0,n)==r)return[e,t.substring(n)]}return[]}function on(t){var e,r=Er,n=r.getChildIdx,i=r.getV,o=r.getTLV,s=r.getVbyList,a=r.getVbyListEx,u=r.getTLVbyList,c=r.getTLVbyListEx,h=r.getIdxbyList,l=r.getIdxbyListEx,f=r.getVidx,g=r.oidname,d=r.hextooidstr,p=on,v=Hr;try{e=br.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(t){}this.HEX2STAG={\"0c\":\"utf8\",13:\"prn\",16:\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"},this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){return null===this.hex||0!==this.version?this.version:\"a003020102\"!==u(this.hex,0,[0,0])?(this.version=1,this.foffset=-1,1):(this.version=3,3)},this.getSerialNumberHex=function(){return a(this.hex,0,[0,0],\"02\")},this.getSignatureAlgorithmField=function(){var t=c(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(t)},this.getAlgorithmIdentifierName=function(t){for(var r in e)if(t===e[r])return r;return g(a(t,0,[0],\"06\"))},this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())},this.getIssuerHex=function(){return u(this.hex,0,[0,3+this.foffset],\"30\")},this.getIssuerString=function(){return p.hex2dn(this.getIssuerHex())},this.getSubject=function(){return this.getX500Name(this.getSubjectHex())},this.getSubjectHex=function(){return u(this.hex,0,[0,5+this.foffset],\"30\")},this.getSubjectString=function(){return p.hex2dn(this.getSubjectHex())},this.getNotBefore=function(){var t=s(this.hex,0,[0,4+this.foffset,0]);return t=t.replace(/(..)/g,\"%$1\"),t=decodeURIComponent(t)},this.getNotAfter=function(){var t=s(this.hex,0,[0,4+this.foffset,1]);return t=t.replace(/(..)/g,\"%$1\"),t=decodeURIComponent(t)},this.getPublicKeyHex=function(){return r.getTLVbyList(this.hex,0,[0,6+this.foffset],\"30\")},this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],\"30\")},this.getPublicKeyContentIdx=function(){var t=this.getPublicKeyIdx();return h(this.hex,t,[1,0],\"30\")},this.getPublicKey=function(){return Zr.getKey(this.getPublicKeyHex(),null,\"pkcs8pub\")},this.getSignatureAlgorithmName=function(){var t=u(this.hex,0,[1],\"30\");return this.getAlgorithmIdentifierName(t)},this.getSignatureValueHex=function(){return s(this.hex,0,[2],\"03\",!0)},this.verifySignature=function(t){var e=this.getSignatureAlgorithmField(),r=this.getSignatureValueHex(),n=u(this.hex,0,[0],\"30\"),i=new br.crypto.Signature({alg:e});return i.init(t),i.updateHex(n),i.verify(r)},this.parseExt=function(t){var e,o,a;if(void 0===t){if(a=this.hex,3!==this.version)return-1;e=h(a,0,[0,7,0],\"30\"),o=n(a,e)}else{a=Hr(t);var u=h(a,0,[0,3,0,0],\"06\");if(\"2a864886f70d01090e\"!=i(a,u))return void(this.aExtInfo=new Array);e=h(a,0,[0,3,0,1,0],\"30\"),o=n(a,e),this.hex=a}this.aExtInfo=new Array;for(var c=0;c1){var a=o(t,s[1]),u=this.getGeneralName(a);null!=u.uri&&(i.uri=u.uri)}if(s.length>2){var c=o(t,s[2]);\"0101ff\"==c&&(i.reqauth=!0),\"010100\"==c&&(i.reqauth=!1)}return i},this.getX500NameRule=function(t){for(var e=null,r=[],n=0;n0&&(t.ext=this.getExtParamArray()),t.sighex=this.getSignatureValueHex(),t},this.getExtParamArray=function(t){null==t&&(-1!=l(this.hex,0,[0,\"[3]\"])&&(t=c(this.hex,0,[0,\"[3]\",0],\"30\")));for(var e=[],r=n(t,0),i=0;i0&&(c=new Array(r),(new Oe).nextBytes(c),c=String.fromCharCode.apply(String,c));var h=Nr(u(Ur(\"\\0\\0\\0\\0\\0\\0\\0\\0\"+i+c))),l=[];for(n=0;n>8*a-s&255;for(d[0]&=~p,n=0;nthis.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;var i=n[0];return n[1]==function t(e){return br.crypto.Util.hashString(e,i)}(t)},He.prototype.verifyWithMessageHash=function(t,e){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var r=je(e,16);if(r.bitLength()>this.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;n[0];return n[1]==t},He.prototype.verifyPSS=function(t,e,r,n){var i=function t(e){return br.crypto.Util.hashHex(e,r)}(Ur(t));return void 0===n&&(n=-1),this.verifyWithMessageHashPSS(i,e,r,n)},He.prototype.verifyWithMessageHashPSS=function(t,e,r,n){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var i,o=new F(e,16),s=function t(e){return br.crypto.Util.hashHex(e,r)},a=Nr(t),u=a.length,c=this.n.bitLength()-1,h=Math.ceil(c/8);if(-1===n||void 0===n)n=u;else if(-2===n)n=h-u-2;else if(n<-2)throw new Error(\"invalid salt length\");if(h>8*h-c&255;if(0!=(f.charCodeAt(0)&d))throw new Error(\"bits beyond keysize not zero\");var p=rn(g,f.length,s),v=[];for(i=0;i0)&&-1==(\":\"+n.join(\":\")+\":\").indexOf(\":\"+v+\":\"))throw\"algorithm '\"+v+\"' not accepted in the list\";if(\"none\"!=v&&null===e)throw\"key shall be specified to verify.\";if(\"string\"==typeof e&&-1!=e.indexOf(\"-----BEGIN \")&&(e=Zr.getKey(e)),!(\"RS\"!=y&&\"PS\"!=y||e instanceof i))throw\"key shall be a RSAKey obj for RS* and PS* algs\";if(\"ES\"==y&&!(e instanceof c))throw\"key shall be a ECDSA obj for ES* algs\";var m=null;if(void 0===s.jwsalg2sigalg[p.alg])throw\"unsupported alg name: \"+v;if(\"none\"==(m=s.jwsalg2sigalg[v]))throw\"not supported\";if(\"Hmac\"==m.substr(0,4)){if(void 0===e)throw\"hexadecimal key shall be specified for HMAC\";var _=new h({alg:m,pass:e});return _.updateString(g),d==_.doFinal()}if(-1!=m.indexOf(\"withECDSA\")){var S,b=null;try{b=c.concatSigToASN1Sig(d)}catch(t){return!1}return(S=new l({alg:m})).init(e),S.updateString(g),S.verify(b)}return(S=new l({alg:m})).init(e),S.updateString(g),S.verify(d)},br.jws.JWS.parse=function(t){var e,r,n,i=t.split(\".\"),o={};if(2!=i.length&&3!=i.length)throw\"malformed sJWS: wrong number of '.' splitted elements\";return e=i[0],r=i[1],3==i.length&&(n=i[2]),o.headerObj=br.jws.JWS.readSafeJSONString(Fr(e)),o.payloadObj=br.jws.JWS.readSafeJSONString(Fr(r)),o.headerPP=JSON.stringify(o.headerObj,null,\" \"),null==o.payloadObj?o.payloadPP=Fr(r):o.payloadPP=JSON.stringify(o.payloadObj,null,\" \"),void 0!==n&&(o.sigHex=Ir(n)),o},br.jws.JWS.verifyJWT=function(t,e,n){var i=br.jws,o=i.JWS,s=o.readSafeJSONString,a=o.inArray,u=o.includedArray,c=t.split(\".\"),h=c[0],l=c[1],f=(Ir(c[2]),s(Fr(h))),g=s(Fr(l));if(void 0===f.alg)return!1;if(void 0===n.alg)throw\"acceptField.alg shall be specified\";if(!a(f.alg,n.alg))return!1;if(void 0!==g.iss&&\"object\"===r(n.iss)&&!a(g.iss,n.iss))return!1;if(void 0!==g.sub&&\"object\"===r(n.sub)&&!a(g.sub,n.sub))return!1;if(void 0!==g.aud&&\"object\"===r(n.aud))if(\"string\"==typeof g.aud){if(!a(g.aud,n.aud))return!1}else if(\"object\"==r(g.aud)&&!u(g.aud,n.aud))return!1;var d=i.IntDate.getNow();return void 0!==n.verifyAt&&\"number\"==typeof n.verifyAt&&(d=n.verifyAt),void 0!==n.gracePeriod&&\"number\"==typeof n.gracePeriod||(n.gracePeriod=0),!(void 0!==g.exp&&\"number\"==typeof g.exp&&g.exp+n.gracePeriodr.length&&(n=r.length);for(var i=0;i\n * @license MIT\n */\nvar n=r(30),i=r(31),o=r(32);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s().toString(16)+\" bytes\");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return K(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return q(t).length;default:if(n)return K(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function p(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return I(this,e,r);case\"utf8\":case\"utf-8\":return A(this,e,r);case\"ascii\":return T(this,e,r);case\"latin1\":case\"binary\":return R(this,e,r);case\"base64\":return x(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return D(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function v(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function y(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:m(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function m(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var h=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var l=!0,f=0;fi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function A(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(h=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u)}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return function f(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n0&&(r=this.toString(\"hex\",0,n).match(/.{2}/g).join(\" \"),this.length>n&&(r+=\" ... \")),\"\"},u.prototype.compare=function t(e,r,n,i,o){if(!u.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError(\"out of range index\");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(this===e)return 0;for(var s=(o>>>=0)-(i>>>=0),a=(n>>>=0)-(r>>>=0),c=Math.min(s,a),h=this.slice(i,o),l=e.slice(r,n),f=0;fo)&&(n=o),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");for(var s=!1;;)switch(i){case\"hex\":return _(this,e,r,n);case\"utf8\":case\"utf-8\":return S(this,e,r,n);case\"ascii\":return b(this,e,r,n);case\"latin1\":case\"binary\":return w(this,e,r,n);case\"base64\":return F(this,e,r,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return E(this,e,r,n);default:if(s)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),s=!0}},u.prototype.toJSON=function t(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",o=e;or)throw new RangeError(\"Trying to access beyond buffer length\")}function N(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function U(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function B(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function O(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function j(t,e,r,n,o){return o||O(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function M(t,e,r,n,o){return o||O(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function t(e,r){var n,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(r=void 0===r?i:~~r)<0?(r+=i)<0&&(r=0):r>i&&(r=i),r0&&(o*=256);)i+=this[e+--r]*o;return i},u.prototype.readUInt8=function t(e,r){return r||L(e,1,this.length),this[e]},u.prototype.readUInt16LE=function t(e,r){return r||L(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function t(e,r){return r||L(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function t(e,r){return r||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function t(e,r){return r||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e],o=1,s=0;++s=(o*=128)&&(i-=Math.pow(2,8*r)),i},u.prototype.readIntBE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=r,o=1,s=this[e+--i];i>0&&(o*=256);)s+=this[e+--i]*o;return s>=(o*=128)&&(s-=Math.pow(2,8*r)),s},u.prototype.readInt8=function t(e,r){return r||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function t(e,r){r||L(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function t(e,r){r||L(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function t(e,r){return r||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function t(e,r){return r||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function t(e,r,n,i){(e=+e,r|=0,n|=0,i)||N(this,e,r,n,Math.pow(2,8*n)-1,0);var o=1,s=0;for(this[r]=255&e;++s=0&&(s*=256);)this[r+o]=e/s&255;return r+n},u.prototype.writeUInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},u.prototype.writeUInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeUInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeUInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):B(this,e,r,!0),r+4},u.prototype.writeUInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeIntLE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=0,a=1,u=0;for(this[r]=255&e;++s>0)-u&255;return r+n},u.prototype.writeIntBE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=n-1,a=1,u=0;for(this[r+s]=255&e;--s>=0&&(a*=256);)e<0&&0===u&&0!==this[r+s+1]&&(u=1),this[r+s]=(e/a>>0)-u&255;return r+n},u.prototype.writeInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},u.prototype.writeInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):B(this,e,r,!0),r+4},u.prototype.writeInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeFloatLE=function t(e,r,n){return j(this,e,r,!0,n)},u.prototype.writeFloatBE=function t(e,r,n){return j(this,e,r,!1,n)},u.prototype.writeDoubleLE=function t(e,r,n){return M(this,e,r,!0,n)},u.prototype.writeDoubleBE=function t(e,r,n){return M(this,e,r,!1,n)},u.prototype.copy=function t(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i=this.length)throw new RangeError(\"sourceStart out of bounds\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-r=0;--o)e[o+r]=this[o+n];else if(s<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"==typeof e)for(s=r;s55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function q(t){return n.toByteArray(function e(t){if((t=function e(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}(t).replace(H,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function J(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(29))},function(t,e){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e,r){\"use strict\";e.byteLength=function n(t){var e=f(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function i(t){var e,r,n=f(t),i=n[0],o=n[1],s=new u(function c(t,e,r){return 3*(e+r)/4-r}(0,i,o)),h=0,l=o>0?i-4:i;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;2===o&&(e=a[t.charCodeAt(r)]<<2|a[t.charCodeAt(r+1)]>>4,s[h++]=255&e);1===o&&(e=a[t.charCodeAt(r)]<<10|a[t.charCodeAt(r+1)]<<4|a[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e);return s},e.fromByteArray=function o(t){for(var e,r=t.length,n=r%3,i=[],o=16383,a=0,u=r-n;au?u:a+o));1===n?(e=t[r-1],i.push(s[e>>2]+s[e<<4&63]+\"==\")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(s[e>>10]+s[e>>4&63]+s[e<<2&63]+\"=\"));return i.join(\"\")};for(var s=[],a=[],u=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",h=0,l=c.length;h0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function g(t,e,r){for(var n,i,o=[],a=e;a>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join(\"\")}a[\"-\".charCodeAt(0)]=62,a[\"_\".charCodeAt(0)]=63},function(t,e){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\ne.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,h=-7,l=r?i-1:0,f=r?-1:1,g=t[e+l];for(l+=f,o=g&(1<<-h)-1,g>>=-h,h+=a;h>0;o=256*o+t[e+l],l+=f,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+t[e+l],l+=f,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),o-=c}return(g?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,h=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:o-1,d=n?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(e*u-1)*Math.pow(2,i),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;t[r+g]=255&a,g+=d,a/=256,i-=8);for(s=s<0;t[r+g]=255&s,g+=d,s/=256,c-=8);t[r+g-d]|=128*p}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(t){var e=t.jws,r=t.KeyUtil,n=t.X509,o=t.crypto,s=t.hextob64u,a=t.b64tohex,u=t.AllowedSigningAlgs;return function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.parseJwt=function t(r){i.Log.debug(\"JoseUtil.parseJwt\");try{var n=e.JWS.parse(r);return{header:n.headerObj,payload:n.payloadObj}}catch(t){i.Log.error(t)}},t.validateJwt=function e(o,s,u,c,h,l,f){i.Log.debug(\"JoseUtil.validateJwt\");try{if(\"RSA\"===s.kty)if(s.e&&s.n)s=r.getKey(s);else{if(!s.x5c||!s.x5c.length)return i.Log.error(\"JoseUtil.validateJwt: RSA key missing key material\",s),Promise.reject(new Error(\"RSA key missing key material\"));var g=a(s.x5c[0]);s=n.getPublicKeyFromCertHex(g)}else{if(\"EC\"!==s.kty)return i.Log.error(\"JoseUtil.validateJwt: Unsupported key type\",s&&s.kty),Promise.reject(new Error(s.kty));if(!(s.crv&&s.x&&s.y))return i.Log.error(\"JoseUtil.validateJwt: EC key missing key material\",s),Promise.reject(new Error(\"EC key missing key material\"));s=r.getKey(s)}return t._validateJwt(o,s,u,c,h,l,f)}catch(t){return i.Log.error(t&&t.message||t),Promise.reject(\"JWT validation failed\")}},t.validateJwtAttributes=function e(r,n,o,s,a,u){s||(s=0),a||(a=parseInt(Date.now()/1e3));var c=t.parseJwt(r).payload;if(!c.iss)return i.Log.error(\"JoseUtil._validateJwt: issuer was not provided\"),Promise.reject(new Error(\"issuer was not provided\"));if(c.iss!==n)return i.Log.error(\"JoseUtil._validateJwt: Invalid issuer in token\",c.iss),Promise.reject(new Error(\"Invalid issuer in token: \"+c.iss));if(!c.aud)return i.Log.error(\"JoseUtil._validateJwt: aud was not provided\"),Promise.reject(new Error(\"aud was not provided\"));if(!(c.aud===o||Array.isArray(c.aud)&&c.aud.indexOf(o)>=0))return i.Log.error(\"JoseUtil._validateJwt: Invalid audience in token\",c.aud),Promise.reject(new Error(\"Invalid audience in token: \"+c.aud));if(c.azp&&c.azp!==o)return i.Log.error(\"JoseUtil._validateJwt: Invalid azp in token\",c.azp),Promise.reject(new Error(\"Invalid azp in token: \"+c.azp));if(!u){var h=a+s,l=a-s;if(!c.iat)return i.Log.error(\"JoseUtil._validateJwt: iat was not provided\"),Promise.reject(new Error(\"iat was not provided\"));if(h1&&void 0!==arguments[1]?arguments[1]:\"#\";o(this,t);var n=i.UrlUtility.parseUrlFragment(e,r);this.error=n.error,this.error_description=n.error_description,this.error_uri=n.error_uri,this.code=n.code,this.state=n.state,this.id_token=n.id_token,this.session_state=n.session_state,this.access_token=n.access_token,this.token_type=n.token_type,this.scope=n.scope,this.profile=void 0,this.expires_in=n.expires_in}return n(t,[{key:\"expires_in\",get:function t(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function t(e){var r=parseInt(e);if(\"number\"==typeof r&&r>0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}},{key:\"isOpenIdConnect\",get:function t(){return this.scopes.indexOf(\"openid\")>=0||!!this.id_token}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutRequest=void 0;var n=r(0),i=r(3),o=r(9);e.SignoutRequest=function t(e){var r=e.url,s=e.id_token_hint,a=e.post_logout_redirect_uri,u=e.data,c=e.extraQueryParams,h=e.request_type;if(function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SignoutRequest.ctor: No url passed\"),new Error(\"url\");for(var f in s&&(r=i.UrlUtility.addQueryParam(r,\"id_token_hint\",s)),a&&(r=i.UrlUtility.addQueryParam(r,\"post_logout_redirect_uri\",a),u&&(this.state=new o.State({data:u,request_type:h}),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id))),c)r=i.UrlUtility.addQueryParam(r,f,c[f]);this.url=r}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutResponse=void 0;var n=r(3);e.SignoutResponse=function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var i=n.UrlUtility.parseUrlFragment(e,\"?\");this.error=i.error,this.error_description=i.error_description,this.error_uri=i.error_uri,this.state=i.state}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InMemoryWebStorage=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.SessionMonitor,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:f.TokenRevocationClient,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:g.TokenClient,y=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.JoseUtil;p(this,e),r instanceof s.UserManagerSettings||(r=new s.UserManagerSettings(r));var m=v(this,t.call(this,r));return m._events=new u.UserManagerEvents(r),m._silentRenewService=new n(m),m.settings.automaticSilentRenew&&(i.Log.debug(\"UserManager.ctor: automaticSilentRenew is configured, setting up silent renew\"),m.startSilentRenew()),m.settings.monitorSession&&(i.Log.debug(\"UserManager.ctor: monitorSession is configured, setting up session monitor\"),m._sessionMonitor=new o(m)),m._tokenRevocationClient=new a(m._settings),m._tokenClient=new l(m._settings),m._joseUtil=y,m}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getUser=function t(){var e=this;return this._loadUser().then((function(t){return t?(i.Log.info(\"UserManager.getUser: user loaded\"),e._events.load(t,!1),t):(i.Log.info(\"UserManager.getUser: user not found in storage\"),null)}))},e.prototype.removeUser=function t(){var e=this;return this.storeUser(null).then((function(){i.Log.info(\"UserManager.removeUser: user removed from storage\"),e._events.unload()}))},e.prototype.signinRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:r\";var r={useReplaceToNavigate:e.useReplaceToNavigate};return this._signinStart(e,this._redirectNavigator,r).then((function(){i.Log.info(\"UserManager.signinRedirect: successful\")}))},e.prototype.signinRedirectCallback=function t(e){return this._signinEnd(e||this._redirectNavigator.url).then((function(t){return t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinRedirectCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinRedirectCallback: no sub\"),t}))},e.prototype.signinPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:p\";var r=e.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.display=\"popup\",this._signin(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopup: signinPopup successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopup: no sub\")),t}))):(i.Log.error(\"UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured\"),Promise.reject(new Error(\"No popup_redirect_uri or redirect_uri configured\")))},e.prototype.signinPopupCallback=function t(e){return this._signinCallback(e,this._popupNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopupCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopupCallback: no sub\")),t})).catch((function(t){i.Log.error(t.message)}))},e.prototype.signinSilent=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=Object.assign({},r),this._loadUser().then((function(t){return t&&t.refresh_token?(r.refresh_token=t.refresh_token,e._useRefreshToken(r)):(r.request_type=\"si:s\",r.id_token_hint=r.id_token_hint||e.settings.includeIdTokenInSilentRenew&&t&&t.id_token,t&&e._settings.validateSubOnSilentRenew&&(i.Log.debug(\"UserManager.signinSilent, subject prior to silent renew: \",t.profile.sub),r.current_sub=t.profile.sub),e._signinSilentIframe(r))}))},e.prototype._useRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(r).then((function(t){return t?t.access_token?e._loadUser().then((function(r){if(r){var n=Promise.resolve();return t.id_token&&(n=e._validateIdTokenFromTokenRefreshToken(r.profile,t.id_token)),n.then((function(){return i.Log.debug(\"UserManager._useRefreshToken: refresh token response success\"),r.id_token=t.id_token||r.id_token,r.access_token=t.access_token,r.refresh_token=t.refresh_token||r.refresh_token,r.expires_in=t.expires_in,e.storeUser(r).then((function(){return e._events.load(r),r}))}))}return null})):(i.Log.error(\"UserManager._useRefreshToken: No access token returned from token endpoint\"),Promise.reject(\"No access token returned from token endpoint\")):(i.Log.error(\"UserManager._useRefreshToken: No response returned from token endpoint\"),Promise.reject(\"No response returned from token endpoint\"))}))},e.prototype._validateIdTokenFromTokenRefreshToken=function t(e,r){var n=this;return this._metadataService.getIssuer().then((function(t){return n.settings.getEpochTime().then((function(o){return n._joseUtil.validateJwtAttributes(r,t,n._settings.client_id,n._settings.clockSkew,o).then((function(t){return t?t.sub!==e.sub?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub\"),Promise.reject(new Error(\"sub in id_token does not match current sub\"))):t.auth_time&&t.auth_time!==e.auth_time?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time\"),Promise.reject(new Error(\"auth_time in id_token does not match original auth_time\"))):t.azp&&t.azp!==e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp\"),Promise.reject(new Error(\"azp in id_token does not match original azp\"))):!t.azp&&e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token\"),Promise.reject(new Error(\"azp not in id_token, but present in original id_token\"))):void 0:(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token\"),Promise.reject(new Error(\"Failed to validate id_token\")))}))}))}))},e.prototype._signinSilentIframe=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.prompt=e.prompt||\"none\",this._signin(e,this._iframeNavigator,{startUrl:r,silentRequestTimeout:e.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilent: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilent: no sub\")),t}))):(i.Log.error(\"UserManager.signinSilent: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype.signinSilentCallback=function t(e){return this._signinCallback(e,this._iframeNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilentCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilentCallback: no sub\")),t}))},e.prototype.signinCallback=function t(e){var r=this;return this.readSigninResponseState(e).then((function(t){var n=t.state;t.response;return\"si:r\"===n.request_type?r.signinRedirectCallback(e):\"si:p\"===n.request_type?r.signinPopupCallback(e):\"si:s\"===n.request_type?r.signinSilentCallback(e):Promise.reject(new Error(\"invalid response_type in state\"))}))},e.prototype.signoutCallback=function t(e,r){var n=this;return this.readSignoutResponseState(e).then((function(t){var i=t.state,o=t.response;return i?\"so:r\"===i.request_type?n.signoutRedirectCallback(e):\"so:p\"===i.request_type?n.signoutPopupCallback(e,r):Promise.reject(new Error(\"invalid response_type in state\")):o}))},e.prototype.querySessionStatus=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).request_type=\"si:s\";var n=r.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return n?(r.redirect_uri=n,r.prompt=\"none\",r.response_type=r.response_type||this.settings.query_status_response_type,r.scope=r.scope||\"openid\",r.skipUserInfo=!0,this._signinStart(r,this._iframeNavigator,{startUrl:n,silentRequestTimeout:r.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return e.processSigninResponse(t.url).then((function(t){if(i.Log.debug(\"UserManager.querySessionStatus: got signin response\"),t.session_state&&t.profile.sub)return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for sub: \",t.profile.sub),{session_state:t.session_state,sub:t.profile.sub,sid:t.profile.sid};i.Log.info(\"querySessionStatus successful, user not authenticated\")})).catch((function(t){if(t.session_state&&e.settings.monitorAnonymousSession&&(\"login_required\"==t.message||\"consent_required\"==t.message||\"interaction_required\"==t.message||\"account_selection_required\"==t.message))return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for anonymous user\"),{session_state:t.session_state};throw t}))}))):(i.Log.error(\"UserManager.querySessionStatus: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype._signin=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(e,r,i).then((function(t){return n._signinEnd(t.url,e)}))},e.prototype._signinStart=function t(e,r){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signinStart: got navigator window handle\"),n.createSigninRequest(e).then((function(e){return i.Log.debug(\"UserManager._signinStart: got signin request\"),o.url=e.url,o.id=e.state.id,t.navigate(o)})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signinStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signinEnd=function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(e).then((function(t){i.Log.debug(\"UserManager._signinEnd: got signin response\");var e=new a.User(t);if(n.current_sub){if(n.current_sub!==e.profile.sub)return i.Log.debug(\"UserManager._signinEnd: current user does not match user returned from signin. sub from signin: \",e.profile.sub),Promise.reject(new Error(\"login_required\"));i.Log.debug(\"UserManager._signinEnd: current user matches user returned from signin\")}return r.storeUser(e).then((function(){return i.Log.debug(\"UserManager._signinEnd: user stored\"),r._events.load(e),e}))}))},e.prototype._signinCallback=function t(e,r){i.Log.debug(\"UserManager._signinCallback\");var n=\"query\"===this._settings.response_mode||!this._settings.response_mode&&l.SigninRequest.isCode(this._settings.response_type)?\"?\":\"#\";return r.callback(e,void 0,n)},e.prototype.signoutRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:r\";var r=e.post_logout_redirect_uri||this.settings.post_logout_redirect_uri;r&&(e.post_logout_redirect_uri=r);var n={useReplaceToNavigate:e.useReplaceToNavigate};return this._signoutStart(e,this._redirectNavigator,n).then((function(){i.Log.info(\"UserManager.signoutRedirect: successful\")}))},e.prototype.signoutRedirectCallback=function t(e){return this._signoutEnd(e||this._redirectNavigator.url).then((function(t){return i.Log.info(\"UserManager.signoutRedirectCallback: successful\"),t}))},e.prototype.signoutPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:p\";var r=e.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri;return e.post_logout_redirect_uri=r,e.display=\"popup\",e.post_logout_redirect_uri&&(e.state=e.state||{}),this._signout(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(){i.Log.info(\"UserManager.signoutPopup: successful\")}))},e.prototype.signoutPopupCallback=function t(e,r){void 0===r&&\"boolean\"==typeof e&&(r=e,e=null);return this._popupNavigator.callback(e,r,\"?\").then((function(){i.Log.info(\"UserManager.signoutPopupCallback: successful\")}))},e.prototype._signout=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(e,r,i).then((function(t){return n._signoutEnd(t.url)}))},e.prototype._signoutStart=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=this,n=arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signoutStart: got navigator window handle\"),r._loadUser().then((function(n){return i.Log.debug(\"UserManager._signoutStart: loaded current user from storage\"),(r._settings.revokeAccessTokenOnSignout?r._revokeInternal(n):Promise.resolve()).then((function(){var s=e.id_token_hint||n&&n.id_token;return s&&(i.Log.debug(\"UserManager._signoutStart: Setting id_token into signout request\"),e.id_token_hint=s),r.removeUser().then((function(){return i.Log.debug(\"UserManager._signoutStart: user removed, creating signout request\"),r.createSignoutRequest(e).then((function(e){return i.Log.debug(\"UserManager._signoutStart: got signout request\"),o.url=e.url,e.state&&(o.id=e.state.id),t.navigate(o)}))}))}))})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signoutStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signoutEnd=function t(e){return this.processSignoutResponse(e).then((function(t){return i.Log.debug(\"UserManager._signoutEnd: got signout response\"),t}))},e.prototype.revokeAccessToken=function t(){var e=this;return this._loadUser().then((function(t){return e._revokeInternal(t,!0).then((function(r){if(r)return i.Log.debug(\"UserManager.revokeAccessToken: removing token properties from user and re-storing\"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,e.storeUser(t).then((function(){i.Log.debug(\"UserManager.revokeAccessToken: user stored\"),e._events.load(t)}))}))})).then((function(){i.Log.info(\"UserManager.revokeAccessToken: access token revoked successfully\")}))},e.prototype._revokeInternal=function t(e,r){var n=this;if(e){var o=e.access_token,s=e.refresh_token;return this._revokeAccessTokenInternal(o,r).then((function(t){return n._revokeRefreshTokenInternal(s,r).then((function(e){return t||e||i.Log.debug(\"UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format\"),t||e}))}))}return Promise.resolve(!1)},e.prototype._revokeAccessTokenInternal=function t(e,r){return!e||e.indexOf(\".\")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(e,r).then((function(){return!0}))},e.prototype._revokeRefreshTokenInternal=function t(e,r){return e?this._tokenRevocationClient.revoke(e,r,\"refresh_token\").then((function(){return!0})):Promise.resolve(!1)},e.prototype.startSilentRenew=function t(){this._silentRenewService.start()},e.prototype.stopSilentRenew=function t(){this._silentRenewService.stop()},e.prototype._loadUser=function t(){return this._userStore.get(this._userStoreKey).then((function(t){return t?(i.Log.debug(\"UserManager._loadUser: user storageString loaded\"),a.User.fromStorageString(t)):(i.Log.debug(\"UserManager._loadUser: no user storageString\"),null)}))},e.prototype.storeUser=function t(e){if(e){i.Log.debug(\"UserManager.storeUser: storing user\");var r=e.toStorageString();return this._userStore.set(this._userStoreKey,r)}return i.Log.debug(\"storeUser.storeUser: removing user\"),this._userStore.remove(this._userStoreKey)},n(e,[{key:\"_redirectNavigator\",get:function t(){return this.settings.redirectNavigator}},{key:\"_popupNavigator\",get:function t(){return this.settings.popupNavigator}},{key:\"_iframeNavigator\",get:function t(){return this.settings.iframeNavigator}},{key:\"_userStore\",get:function t(){return this.settings.userStore}},{key:\"events\",get:function t(){return this._events}},{key:\"_userStoreKey\",get:function t(){return\"user:\"+this.settings.authority+\":\"+this.settings.client_id}}]),e}(o.OidcClient)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManagerSettings=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.popup_redirect_uri,i=r.popup_post_logout_redirect_uri,g=r.popupWindowFeatures,d=r.popupWindowTarget,p=r.silent_redirect_uri,v=r.silentRequestTimeout,y=r.automaticSilentRenew,m=void 0!==y&&y,_=r.validateSubOnSilentRenew,S=void 0!==_&&_,b=r.includeIdTokenInSilentRenew,w=void 0===b||b,F=r.monitorSession,E=void 0===F||F,x=r.monitorAnonymousSession,A=void 0!==x&&x,k=r.checkSessionInterval,P=void 0===k?2e3:k,C=r.stopCheckSessionOnError,T=void 0===C||C,R=r.query_status_response_type,I=r.revokeAccessTokenOnSignout,D=void 0!==I&&I,L=r.accessTokenExpiringNotificationTime,N=void 0===L?60:L,U=r.redirectNavigator,B=void 0===U?new o.RedirectNavigator:U,O=r.popupNavigator,j=void 0===O?new s.PopupNavigator:O,M=r.iframeNavigator,H=void 0===M?new a.IFrameNavigator:M,V=r.userStore,K=void 0===V?new u.WebStorageStateStore({store:c.Global.sessionStorage}):V;l(this,e);var q=f(this,t.call(this,arguments[0]));return q._popup_redirect_uri=n,q._popup_post_logout_redirect_uri=i,q._popupWindowFeatures=g,q._popupWindowTarget=d,q._silent_redirect_uri=p,q._silentRequestTimeout=v,q._automaticSilentRenew=m,q._validateSubOnSilentRenew=S,q._includeIdTokenInSilentRenew=w,q._accessTokenExpiringNotificationTime=N,q._monitorSession=E,q._monitorAnonymousSession=A,q._checkSessionInterval=P,q._stopCheckSessionOnError=T,R?q._query_status_response_type=R:arguments[0]&&arguments[0].response_type?q._query_status_response_type=h.SigninRequest.isOidc(arguments[0].response_type)?\"id_token\":\"code\":q._query_status_response_type=\"id_token\",q._revokeAccessTokenOnSignout=D,q._redirectNavigator=B,q._popupNavigator=j,q._iframeNavigator=H,q._userStore=K,q}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),n(e,[{key:\"popup_redirect_uri\",get:function t(){return this._popup_redirect_uri}},{key:\"popup_post_logout_redirect_uri\",get:function t(){return this._popup_post_logout_redirect_uri}},{key:\"popupWindowFeatures\",get:function t(){return this._popupWindowFeatures}},{key:\"popupWindowTarget\",get:function t(){return this._popupWindowTarget}},{key:\"silent_redirect_uri\",get:function t(){return this._silent_redirect_uri}},{key:\"silentRequestTimeout\",get:function t(){return this._silentRequestTimeout}},{key:\"automaticSilentRenew\",get:function t(){return this._automaticSilentRenew}},{key:\"validateSubOnSilentRenew\",get:function t(){return this._validateSubOnSilentRenew}},{key:\"includeIdTokenInSilentRenew\",get:function t(){return this._includeIdTokenInSilentRenew}},{key:\"accessTokenExpiringNotificationTime\",get:function t(){return this._accessTokenExpiringNotificationTime}},{key:\"monitorSession\",get:function t(){return this._monitorSession}},{key:\"monitorAnonymousSession\",get:function t(){return this._monitorAnonymousSession}},{key:\"checkSessionInterval\",get:function t(){return this._checkSessionInterval}},{key:\"stopCheckSessionOnError\",get:function t(){return this._stopCheckSessionOnError}},{key:\"query_status_response_type\",get:function t(){return this._query_status_response_type}},{key:\"revokeAccessTokenOnSignout\",get:function t(){return this._revokeAccessTokenOnSignout}},{key:\"redirectNavigator\",get:function t(){return this._redirectNavigator}},{key:\"popupNavigator\",get:function t(){return this._popupNavigator}},{key:\"iframeNavigator\",get:function t(){return this._iframeNavigator}},{key:\"userStore\",get:function t(){return this._userStore}}]),e}(i.OidcClientSettings)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RedirectNavigator=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1])||arguments[1];n.Log.debug(\"UserManagerEvents.load\"),t.prototype.load.call(this,r),i&&this._userLoaded.raise(r)},e.prototype.unload=function e(){n.Log.debug(\"UserManagerEvents.unload\"),t.prototype.unload.call(this),this._userUnloaded.raise()},e.prototype.addUserLoaded=function t(e){this._userLoaded.addHandler(e)},e.prototype.removeUserLoaded=function t(e){this._userLoaded.removeHandler(e)},e.prototype.addUserUnloaded=function t(e){this._userUnloaded.addHandler(e)},e.prototype.removeUserUnloaded=function t(e){this._userUnloaded.removeHandler(e)},e.prototype.addSilentRenewError=function t(e){this._silentRenewError.addHandler(e)},e.prototype.removeSilentRenewError=function t(e){this._silentRenewError.removeHandler(e)},e.prototype._raiseSilentRenewError=function t(e){n.Log.debug(\"UserManagerEvents._raiseSilentRenewError\",e.message),this._silentRenewError.raise(e)},e.prototype.addUserSignedIn=function t(e){this._userSignedIn.addHandler(e)},e.prototype.removeUserSignedIn=function t(e){this._userSignedIn.removeHandler(e)},e.prototype._raiseUserSignedIn=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedIn\"),this._userSignedIn.raise()},e.prototype.addUserSignedOut=function t(e){this._userSignedOut.addHandler(e)},e.prototype.removeUserSignedOut=function t(e){this._userSignedOut.removeHandler(e)},e.prototype._raiseUserSignedOut=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedOut\"),this._userSignedOut.raise()},e.prototype.addUserSessionChanged=function t(e){this._userSessionChanged.addHandler(e)},e.prototype.removeUserSessionChanged=function t(e){this._userSessionChanged.removeHandler(e)},e.prototype._raiseUserSessionChanged=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSessionChanged\"),this._userSessionChanged.raise()},e}(i.AccessTokenEvents)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Timer=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.Global.timer,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;a(this,e);var s=u(this,t.call(this,r));return s._timer=n,s._nowFunc=i||function(){return Date.now()/1e3},s}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.init=function t(e){e<=0&&(e=1),e=parseInt(e);var r=this.now+e;if(this.expiration===r&&this._timerHandle)i.Log.debug(\"Timer.init timer \"+this._name+\" skipping initialization since already initialized for expiration:\",this.expiration);else{this.cancel(),i.Log.debug(\"Timer.init timer \"+this._name+\" for duration:\",e),this._expiration=r;var n=5;e {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"147f50b8\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"smesshy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksmesshy\"] = self[\"webpackChunksmesshy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n ParamParseSegment extends string\n ? ParamParseSegment\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch(\n branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from 'universal-cookie';\r\nexport default Cookies;\r\n","import * as React from 'react';\r\nimport Cookies from './Cookies';\r\nvar CookiesContext = React.createContext(new Cookies());\r\nexport var Provider = CookiesContext.Provider, Consumer = CookiesContext.Consumer;\r\nexport default CookiesContext;\r\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nimport * as React from 'react';\r\nimport hoistStatics from 'hoist-non-react-statics';\r\nimport { Consumer } from './CookiesContext';\r\nexport default function withCookies(WrappedComponent) {\r\n // @ts-ignore\r\n var name = WrappedComponent.displayName || WrappedComponent.name;\r\n var CookieWrapper = /** @class */ (function (_super) {\r\n __extends(CookieWrapper, _super);\r\n function CookieWrapper() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.onChange = function () {\r\n // Make sure to update children with new values\r\n _this.forceUpdate();\r\n };\r\n return _this;\r\n }\r\n CookieWrapper.prototype.listen = function () {\r\n this.props.cookies.addChangeListener(this.onChange);\r\n };\r\n CookieWrapper.prototype.unlisten = function (cookies) {\r\n (cookies || this.props.cookies).removeChangeListener(this.onChange);\r\n };\r\n CookieWrapper.prototype.componentDidMount = function () {\r\n this.listen();\r\n };\r\n CookieWrapper.prototype.componentDidUpdate = function (prevProps) {\r\n if (prevProps.cookies !== this.props.cookies) {\r\n this.unlisten(prevProps.cookies);\r\n this.listen();\r\n }\r\n };\r\n CookieWrapper.prototype.componentWillUnmount = function () {\r\n this.unlisten();\r\n };\r\n CookieWrapper.prototype.render = function () {\r\n var _a = this.props, forwardedRef = _a.forwardedRef, cookies = _a.cookies, restProps = __rest(_a, [\"forwardedRef\", \"cookies\"]);\r\n var allCookies = cookies.getAll();\r\n return (React.createElement(WrappedComponent, __assign({}, restProps, { ref: forwardedRef, cookies: cookies, allCookies: allCookies })));\r\n };\r\n CookieWrapper.displayName = \"withCookies(\" + name + \")\";\r\n CookieWrapper.WrappedComponent = WrappedComponent;\r\n return CookieWrapper;\r\n }(React.Component));\r\n var ForwardedComponent = React.forwardRef(function (props, ref) {\r\n return (React.createElement(Consumer, null, function (cookies) { return (React.createElement(CookieWrapper, __assign({ cookies: cookies }, props, { forwardedRef: ref }))); }));\r\n });\r\n ForwardedComponent.displayName = CookieWrapper.displayName;\r\n ForwardedComponent.WrappedComponent = CookieWrapper.WrappedComponent;\r\n return hoistStatics(ForwardedComponent, WrappedComponent);\r\n}\r\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","export class Point2D {\r\n x: number;\r\n y: number;\r\n\r\n constructor(x: number, y: number) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n\r\n public newRelative(distance: number, angle: number | undefined): Point2D {\r\n if (angle === undefined) {\r\n return new Point2D(this.x, this.y);\r\n }\r\n return new Point2D(this.x + distance * Math.cos(angle), this.y + distance * Math.sin(angle));\r\n }\r\n\r\n public newRotated(ptCenter: Point2D, sinA: number, cosA: number) : Point2D {\r\n let x1 = this.x - ptCenter.x; \r\n let y1 = this.y - ptCenter.y;\r\n let x2 = x1 * cosA - y1 * sinA;\r\n let y2 = x1 * sinA + y1 * cosA;\r\n return new Point2D(x2 + ptCenter.x, y2 + ptCenter.y);\r\n }\r\n \r\n public angleToward(destination: Point2D): number | undefined {\r\n if (this.x === destination.x && this.y === destination.y) {\r\n return undefined;\r\n }\r\n return (Math.atan2(destination.y - this.y, destination.x - this.x));\r\n }\r\n\r\n public taxiDistance(from: Point2D): number {\r\n return Math.max(Math.abs(from.x - this.x), Math.abs(from.y - this.y));\r\n }\r\n\r\n public midTo(to: Point2D) : Point2D {\r\n return new Point2D(this.x + (to.x - this.x) / 2, this.y + (to.y - this.y) / 2);\r\n }\r\n\r\n static stepLineLow(pt0: Point2D, pt1: Point2D, into: Array) {\r\n let dx = pt1.x - pt0.x;\r\n let dy = pt1.y - pt0.y;\r\n let yi = 1;\r\n if (dy < 0) {\r\n yi = -1;\r\n dy = -dy;\r\n }\r\n let D = (2 * dy) - dx;\r\n let y = pt0.y;\r\n\r\n for(let x = pt0.x; x <= pt1.x; x++) {\r\n into.push(new Point2D(x, y));\r\n if (D > 0) {\r\n y = y + yi;\r\n D = D + (2 * (dy - dx));\r\n } else {\r\n D = D + 2*dy;\r\n }\r\n }\r\n }\r\n static stepLineHigh(pt0: Point2D, pt1: Point2D, into: Array) {\r\n let dx = pt1.x - pt0.x;\r\n let dy = pt1.y - pt0.y;\r\n let xi = 1;\r\n if (dx < 0) {\r\n xi = -1;\r\n dx = -dx;\r\n }\r\n let D = (2 * dx) - dy;\r\n let x = pt0.x;\r\n\r\n for(let y = pt0.y; y <= pt1.y; y++) {\r\n into.push(new Point2D(x, y));\r\n if (D > 0) {\r\n x = x + xi;\r\n D = D + (2 * (dx - dy));\r\n } else {\r\n D = D + 2*dx;\r\n }\r\n }\r\n }\r\n\r\n public lineTo(to: Point2D): Array {\r\n let result = new Array();\r\n if (Math.abs(to.y - this.y) < Math.abs(to.x - this.x)) {\r\n if (this.x > to.x) {\r\n Point2D.stepLineLow(to, this, result);\r\n result.reverse();\r\n } else {\r\n Point2D.stepLineLow(this, to, result);\r\n }\r\n } else {\r\n if (this.y > to.y) {\r\n Point2D.stepLineHigh(to, this, result);\r\n result.reverse();\r\n } else {\r\n Point2D.stepLineHigh(this, to, result);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n pushTL(using: Point2D): void {\r\n if (using.x < this.x) {\r\n this.x = using.x;\r\n }\r\n if (using.y < this.y) {\r\n this.y = using.y;\r\n }\r\n }\r\n pushTR(using: Point2D): void {\r\n if (using.x > this.x) {\r\n this.x = using.x;\r\n }\r\n if (using.y < this.y) {\r\n this.y = using.y;\r\n }\r\n }\r\n pushBL(using: Point2D): void {\r\n if (using.x < this.x) {\r\n this.x = using.x;\r\n }\r\n if (using.y > this.y) {\r\n this.y = using.y;\r\n }\r\n }\r\n pushBR(using: Point2D): void {\r\n if (using.x > this.x) {\r\n this.x = using.x;\r\n }\r\n if (using.y > this.y) {\r\n this.y = using.y;\r\n }\r\n }\r\n \r\n distanceTo(to: Point2D): number {\r\n return Math.sqrt((this.x - to.x) * (this.x - to.x) + (this.y - to.y) * (this.y - to.y));\r\n }\r\n\r\n inRect(rect:DOMRect): boolean {\r\n return (this.x >= rect.left && this.x <= rect.right && this.y >= rect.top && this.y <= rect.bottom);\r\n }\r\n\r\n static normalizeAngle(angle: number) {\r\n // assumes we didn't add more than pi\r\n if (angle > Math.PI) {\r\n angle = -Math.PI + (angle - Math.PI);\r\n }\r\n if (angle < -Math.PI) {\r\n angle = Math.PI + (angle - -Math.PI);\r\n\r\n }\r\n return angle;\r\n };\r\n static angleDiff(angleA: number, angleB: number) : number {\r\n let d = Math.min(Math.abs(angleA - angleB), Math.PI * 2 - Math.abs(angleA - angleB));\r\n return d;\r\n };\r\n\r\n static windOrder(pts: Array): number {\r\n let areaTotal = 0;\r\n for (let i = 0; i < pts.length; i++) {\r\n const ptNext = pts[i === pts.length - 1 ? 0 : i+1];\r\n const pt = pts[i];\r\n areaTotal += ((pt.x * ptNext.y) - (ptNext.x * pt.y));\r\n }\r\n if (areaTotal > 0) {\r\n return 1;\r\n }\r\n return -1;\r\n }\r\n // normal octants are\r\n public octantFrom = (ptFrom: Point2D): number=> {\r\n let sx = Math.abs(this.x - ptFrom.x);\r\n let sy = Math.abs(this.y - ptFrom.y);\r\n if (sx === 0 && sy===0) {\r\n return 4;\r\n }\r\n if (this.y < ptFrom.y && this.x <= ptFrom.x) {\r\n if (sx < sy) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n } else if (this.y <= ptFrom.y && this.x > ptFrom.x) {\r\n if (sx <= sy) {\r\n return 2;\r\n } else {\r\n return 5;\r\n }\r\n } else if (this.y > ptFrom.y && this.x >= ptFrom.x) {\r\n if (sx < sy) {\r\n return 7;\r\n } else {\r\n return 8;\r\n }\r\n } else {\r\n if (sx <= sy) {\r\n return 6;\r\n } else {\r\n return 3;\r\n }\r\n }\r\n }\r\n public moveOctantFrom = (ptFrom: Point2D): number=> {\r\n let dx = this.x - ptFrom.x;\r\n let dy = this.y - ptFrom.y;\r\n let sx = Math.abs(dx);\r\n let sy = Math.abs(dy);\r\n if (sx === 0 && sy===0) {\r\n return 4;\r\n }\r\n if (sy === sx) {\r\n if (dx < 0 && dy < 0) {\r\n return 0;\r\n }\r\n if (dx > 0 && dy < 0) {\r\n return 2;\r\n }\r\n if (dx < 0 && dy > 0) {\r\n return 6;\r\n }\r\n return 8;\r\n } else if (sx === 0) {\r\n return dy < 0 ? 1 : 7;\r\n } else if (sy === 0) {\r\n return dx < 0 ? 3 : 5;\r\n } else if (sy > sx) {\r\n if (dy < 0) {\r\n if (sy >= sx*2) {\r\n return 1;\r\n }\r\n return dx < 0 ? 0 : 2;\r\n } else { // dy > 0\r\n if (sy > sx*2) {\r\n return 7;\r\n }\r\n return dx < 0 ? 6 : 8;\r\n }\r\n\r\n } else { // sx > sy\r\n if (dx < 0) {\r\n if (sx > sy*2) {\r\n return 3;\r\n }\r\n return dy < 0 ? 0 : 6;\r\n } else { // dx > 0\r\n if (sx > sy*2) {\r\n return 5;\r\n }\r\n return dy < 0 ? 2 : 8;\r\n }\r\n\r\n }\r\n }\r\n \r\n static center = new Point2D(0,0);\r\n static octantFromOffsets = (dx:number, dy: number): number=> {\r\n return new Point2D(dx*8, dy*8).octantFrom(Point2D.center);\r\n }\r\n\r\n static offsetsFromOctant = (octant: number):Point2D=> {\r\n switch(octant) {\r\n case 0:\r\n return new Point2D(-1, -1);\r\n case 1:\r\n return new Point2D(0, -1);\r\n case 2:\r\n return new Point2D(1, -1);\r\n case 3:\r\n return new Point2D(-1, 0);\r\n default:\r\n case 4:\r\n return new Point2D(0, 0);\r\n case 5:\r\n return new Point2D(1, 0);\r\n case 6:\r\n return new Point2D(-1, 1);\r\n case 7:\r\n return new Point2D(0, 1);\r\n case 8:\r\n return new Point2D(1, 1);\r\n }\r\n }\r\n\r\n static moveOctantPointDistanceCoeficients = [\r\n { dx: -Math.SQRT2 / 2, dy: Math.SQRT2 / 2 }, // 0 = left up\r\n { dx: 0, dy: 1 }, // 1 = up\r\n { dx: Math.SQRT2 / 2, dy: Math.SQRT2 / 2 }, // 2 = right up\r\n { dx: -1, dy: 0 }, // 3 = left\r\n { dx: 0, dy: 0 }, // 4 = none\r\n { dx: 1, dy: 0 }, // 5 = right\r\n { dx: -Math.SQRT2 / 2, dy: -Math.SQRT2 / 2 }, // 6 = left down\r\n { dx: 0, dy: -1 }, // 7 = down\r\n { dx: Math.SQRT2 / 2, dy: -Math.SQRT2 / 2 } // 8 = right down\r\n ];\r\n\r\n componentDistanceWithMoveOctantTo(ptTo: Point2D, moveOct: number): { dx: number, dy: number } {\r\n const coef = Point2D.moveOctantPointDistanceCoeficients[moveOct];\r\n const dx = (ptTo.x - this.x) * coef.dx - (ptTo.y - this.y) * coef.dy;\r\n const dy = (ptTo.x - this.x) * coef.dy + (ptTo.y - this.y) * coef.dx;\r\n return { dx, dy };\r\n }\r\n\r\n static sutherlandHodgman(subjectPolygon: Point2D[], clipPolygon: Point2D[]): Point2D[] {\r\n let outputList = subjectPolygon;\r\n let cp1 = clipPolygon[clipPolygon.length - 1];\r\n\r\n for (let j = 0; j < clipPolygon.length; j++) {\r\n let cp2 = clipPolygon[j];\r\n let inputList = outputList;\r\n outputList = [];\r\n let s = inputList[inputList.length - 1];\r\n\r\n for (let i = 0; i < inputList.length; i++) {\r\n let e = inputList[i];\r\n if (Point2D.isInside(cp1, cp2, e)) {\r\n if (!Point2D.isInside(cp1, cp2, s)) {\r\n outputList.push(Point2D.intersection(cp1, cp2, s, e));\r\n }\r\n outputList.push(e);\r\n } else if (Point2D.isInside(cp1, cp2, s)) {\r\n outputList.push(Point2D.intersection(cp1, cp2, s, e));\r\n }\r\n s = e;\r\n }\r\n cp1 = cp2;\r\n }\r\n return outputList;\r\n }\r\n\r\n static polygonArea (polygon: Point2D[]): number {\r\n let area = 0;\r\n for (let i = 0; i < polygon.length; i++) {\r\n let j = (i + 1) % polygon.length;\r\n area += polygon[i].x * polygon[j].y;\r\n area -= polygon[j].x * polygon[i].y;\r\n }\r\n return Math.abs(area / 2);\r\n }\r\n\r\n\r\n static isInside(cp1: Point2D, cp2: Point2D, p: Point2D): boolean {\r\n return (cp2.x - cp1.x) * (p.y - cp1.y) > (cp2.y - cp1.y) * (p.x - cp1.x);\r\n }\r\n\r\n static intersection(cp1: Point2D, cp2: Point2D, s: Point2D, e: Point2D): Point2D {\r\n let dc = new Point2D(cp1.x - cp2.x, cp1.y - cp2.y);\r\n let dp = new Point2D(s.x - e.x, s.y - e.y);\r\n let n1 = cp1.x * cp2.y - cp1.y * cp2.x;\r\n let n2 = s.x * e.y - s.y * e.x;\r\n let n3 = 1.0 / (dc.x * dp.y - dc.y * dp.x);\r\n return new Point2D((n1 * dp.x - n2 * dc.x) * n3, (n1 * dp.y - n2 * dc.y) * n3);\r\n }\r\n\r\n}\r\n\r\nexport interface LRUStringNode {\r\n value: string;\r\n next: LRUStringNode | null;\r\n prev: LRUStringNode | null;\r\n}\r\n\r\nexport class LRUStrings {\r\n head: LRUStringNode | null = null;\r\n tail: LRUStringNode | null = null;\r\n addFirst(t: string) : LRUStringNode {\r\n let addNode = { value: t, next: null, prev: null } as LRUStringNode;\r\n if (this.head === null) {\r\n this.head = addNode;\r\n this.tail = addNode;\r\n } else {\r\n this.head.prev = addNode;\r\n addNode.next = this.head!;\r\n this.head = addNode;\r\n }\r\n return addNode;\r\n }\r\n removeAny(node: LRUStringNode) {\r\n if (node.prev === null) {\r\n if (node !== this.head) {\r\n throw new Error(\"Invalid node\");\r\n }\r\n this.head = node.next;\r\n if (this.head === null) {\r\n this.tail = null;\r\n }\r\n } else {\r\n node.prev.next = node.next;\r\n }\r\n if (node.next === null) {\r\n this.tail = node.prev;\r\n } else {\r\n node.next.prev = node.prev;\r\n }\r\n }\r\n removeLast() : string {\r\n let t = this.tail!.value;\r\n this.tail = this.tail!.prev;\r\n if (this.tail === null) {\r\n this.head = null;\r\n } else {\r\n this.tail.next = null;\r\n }\r\n return t;\r\n }\r\n}\r\n\r\n// Node class representing individual elements in the list\r\nexport interface DoublyLinkedPointListNode {\r\n value: Point2D;\r\n next: DoublyLinkedPointListNode | undefined;\r\n prev: DoublyLinkedPointListNode | undefined;\r\n}\r\n\r\n// Doubly linked list class\r\nexport class DoublyLinkedPointList {\r\n public head: DoublyLinkedPointListNode | undefined;\r\n public tail: DoublyLinkedPointListNode | undefined;\r\n public size: number;\r\n\r\n constructor() {\r\n this.head = undefined;\r\n this.tail = undefined;\r\n this.size = 0;\r\n }\r\n\r\n // Check if the list is empty\r\n public isEmpty(): boolean {\r\n return this.size <= 0;\r\n }\r\n\r\n // Add an element to the end of the list\r\n public addLast(pt: Point2D) {\r\n const newNode: DoublyLinkedPointListNode = {\r\n value: pt,\r\n next: undefined,\r\n prev: undefined,\r\n };\r\n\r\n if (this.isEmpty()) {\r\n this.head = newNode;\r\n this.tail = newNode;\r\n } else {\r\n this.tail!.next = newNode;\r\n newNode.prev = this.tail;\r\n this.tail = newNode;\r\n }\r\n\r\n this.size++;\r\n }\r\n\r\n // Add an element to the beginning of the list\r\n public addFirst(pt: Point2D) {\r\n const newNode: DoublyLinkedPointListNode = {\r\n value: pt,\r\n next: undefined,\r\n prev: undefined,\r\n };\r\n\r\n if (this.isEmpty()) {\r\n this.head = newNode;\r\n this.tail = newNode;\r\n } else {\r\n this.head!.prev = newNode;\r\n newNode.next = this.head;\r\n this.head = newNode;\r\n }\r\n\r\n this.size++;\r\n }\r\n\r\n}\r\n\r\n\r\nexport class SeededRandom\r\n{\r\n public seed: number = 1000;\r\n \r\n nextFloat() : number{\r\n this.seed ++;\r\n let t = this.seed += 0x6D2B79F5;\r\n t = Math.imul(t ^ (t >>> 15), t | 1);\r\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\r\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\r\n }\r\n}\r\n\r\nlet measureTextCanvas: HTMLCanvasElement;\r\n\r\nexport function getTextSegments(text : string, font: string, maxWidth: number) : Array {\r\n // re-use canvas object for better performance\r\n const canvas = measureTextCanvas || (measureTextCanvas = document.createElement(\"canvas\"));\r\n const context = canvas.getContext(\"2d\")!;\r\n context.font = font;\r\n\r\n let segments = new Array();\r\n\r\n let iSegmentStart = 0;\r\n let iLastSpace = -1;\r\n let measureText = '';\r\n for(let i = 0; i < text.length; i++) {\r\n if (text[i] === ' ') {\r\n iLastSpace = i;\r\n } \r\n measureText += text[i];\r\n let width = context.measureText(measureText).width;\r\n if (width > maxWidth) {\r\n if (iLastSpace === -1) {\r\n segments.push(text.substring(iSegmentStart, i));\r\n iSegmentStart = i;\r\n } else {\r\n segments.push(text.substring(iSegmentStart, iLastSpace));\r\n iSegmentStart = iLastSpace + 1;\r\n }\r\n measureText = '';\r\n iLastSpace = -1;\r\n i = iSegmentStart;\r\n }\r\n }\r\n segments.push(text.substring(iSegmentStart, text.length));\r\n return segments\r\n}\r\n \r\nexport class BitVector {\r\n private data: Uint32Array;\r\n private size: number;\r\n constructor(size: number) {\r\n this.size = size;\r\n this.data = new Uint32Array((size + 31) / 32);\r\n }\r\n\r\n setBit(index: number) {\r\n this.data[index >> 5] |= 1 << (index & 31);\r\n }\r\n clearBit(index: number) {\r\n this.data[index >> 5] &= ~(1 << (index & 31));\r\n }\r\n\r\n getBit(index: number): boolean {\r\n let set = this.data[index >> 5];\r\n return (set !==0 && (set & (1 << (index & 31))) !== 0);\r\n }\r\n\r\n clear() {\r\n this.data.fill(0);\r\n }\r\n\r\n isAllFalse() {\r\n for (let i = 0; i < this.data.length; i++) {\r\n if (this.data[i] !== 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}","// I took the code from these fine folks and modified / simplified it\r\n\r\n// ==========================================================\r\n// MIXBOX 2.0 (c) 2022 Secret Weapons. All rights reserved.\r\n// License: Creative Commons Attribution-NonCommercial 4.0\r\n// Authors: Sarka Sochorova and Ondrej Jamriska\r\n// ==========================================================\r\n//\r\n// BASIC USAGE\r\n//\r\n// var rgb = mixbox.lerp(rgb1, rgb2, t);\r\n//\r\n// MULTI-COLOR MIXING\r\n//\r\n// var z1 = mixbox.rgbToLatent(rgb1);\r\n// var z2 = mixbox.rgbToLatent(rgb2);\r\n// var z3 = mixbox.rgbToLatent(rgb3);\r\n//\r\n// var zMix = new Array(mixbox.LATENT_SIZE);\r\n//\r\n// for (var i = 0; i < zMix.length; i++) { // mix:\r\n// zMix[i] = (0.3*z1[i] + // 30% of rgb1\r\n// 0.6*z2[i] + // 60% of rgb2\r\n// 0.1*z3[i]); // 10% of rgb3\r\n// }\r\n//\r\n// var rgbMix = mixbox.latentToRgb(zMix);\r\n//\r\n// PIGMENT COLORS\r\n//\r\n// Cadmium Yellow 254, 236, 0\r\n// Hansa Yellow 252, 211, 0\r\n// Cadmium Orange 255, 105, 0\r\n// Cadmium Red 255, 39, 2\r\n// Quinacridone Magenta 128, 2, 46\r\n// Cobalt Violet 78, 0, 66\r\n// Ultramarine Blue 25, 0, 89\r\n// Cobalt Blue 0, 33, 133\r\n// Phthalo Blue 13, 27, 68\r\n// Phthalo Green 0, 60, 50\r\n// Permanent Green 7, 109, 22\r\n// Sap Green 107, 148, 4\r\n// Burnt Sienna 123, 72, 0\r\n//\r\n// LICENSING\r\n//\r\n// If you want to obtain commercial license, please\r\n// contact us at: mixbox@scrtwpns.com\r\n//\r\n\r\n\r\nimport tinycolor from 'tinycolor2';\r\n\r\nexport interface Latent {\r\n concentration0 : number,\r\n concentration1 : number,\r\n concentration2 : number,\r\n concentration3 : number,\r\n missingRed: number,\r\n missingGreen: number,\r\n missingBlue: number\r\n}\r\n\r\nlet u_latentScale = 65535.0;\r\nlet u_maxC0 = 0.993;\r\nlet u_minC0 = 0.0;\r\nlet u_maxC1 = 0.991;\r\nlet u_minC1 = 0.0;\r\nlet u_maxC2 = 0.998;\r\nlet u_minC2 = 0.0;\r\nlet u_maxC3 = 1.0;\r\nlet u_minC3 = -0.0087;\r\nlet u_maxMRed = 0.19;\r\nlet u_minMRed = -0.31;\r\nlet u_maxMGreen = 0.38;\r\nlet u_minMGreen = -0.38;\r\nlet u_maxMBlue = 0.39;\r\nlet u_minMBlue = -0.24;\r\n\r\nfunction clamp(x: number, min:number, max:number): number {\r\n return Math.min(Math.max(x, min), max);\r\n}\r\nfunction uvec4(x: number, y:number, z:number, w:number): number[] {\r\n return [x, y, z, w];\r\n}\r\nfunction uint(x: number): number {\r\n let u = Math.round(x);\r\n if (x < 0) {\r\n console.log('uint: x < 0');\r\n }\r\n if (x > 65534) {\r\n console.log('uint: x > 65535');\r\n }\r\n return u;\r\n}\r\n\r\nexport function latentToLatentC(latent:Latent): number[]{\r\n\r\n let c0 = clamp(latent.concentration0, u_minC0, u_maxC0);\r\n let c1 = clamp(latent.concentration1, u_minC1, u_maxC1);\r\n let c2 = clamp(latent.concentration2, u_minC2, u_maxC2);\r\n let c3 = clamp(latent.concentration3, u_minC3, u_maxC3);\r\n c0 = (c0 - u_minC0) / (u_maxC0 - u_minC0);\r\n c1 = (c1 - u_minC1) / (u_maxC1 - u_minC1);\r\n c2 = (c2 - u_minC2) / (u_maxC2 - u_minC2);\r\n c3 = (c3 - u_minC3) / (u_maxC3 - u_minC3);\r\n return uvec4(uint(c0 * u_latentScale), uint(c1 * u_latentScale), uint(c2 * u_latentScale), uint(c3 * u_latentScale));\r\n}\r\n\r\nexport function latentToLatentM(latent: Latent): number[] {\r\n\r\n let missingRed = clamp(latent.missingRed, u_minMRed, u_maxMRed);\r\n let missingGreen = clamp(latent.missingGreen, u_minMGreen, u_maxMGreen);\r\n let missingBlue = clamp(latent.missingBlue, u_minMBlue, u_maxMBlue);\r\n missingRed = (missingRed - u_minMRed) / (u_maxMRed - u_minMRed);\r\n missingGreen = (missingGreen - u_minMGreen) / (u_maxMGreen - u_minMGreen);\r\n missingBlue = (missingBlue - u_minMBlue) / (u_maxMBlue - u_minMBlue);\r\n return uvec4(uint(missingRed * u_latentScale), uint(missingGreen * u_latentScale), uint(missingBlue * u_latentScale), 0);\r\n}\r\n\r\nexport function latentFromLatentCM(latentC: number[], latentM: number[]) : Latent {\r\n let c0 = latentC[0] / u_latentScale * (u_maxC0 - u_minC0) + u_minC0;\r\n let c1 = latentC[1] / u_latentScale * (u_maxC1 - u_minC1) + u_minC1;\r\n let c2 = latentC[2] / u_latentScale * (u_maxC2 - u_minC2) + u_minC2;\r\n let c3 = latentC[3] / u_latentScale * (u_maxC3 - u_minC3) + u_minC3;\r\n let missingRed = latentM[0] / u_latentScale * (u_maxMRed - u_minMRed) + u_minMRed;\r\n let missingGreen = latentM[1] / u_latentScale * (u_maxMGreen - u_minMGreen) + u_minMGreen;\r\n let missingBlue = latentM[2] / u_latentScale * (u_maxMBlue - u_minMBlue) + u_minMBlue;\r\n return {concentration0:c0, concentration1:c1, concentration2:c2, concentration3:c3, missingRed:missingRed, missingGreen:missingGreen, missingBlue:missingBlue };\r\n}\r\n\r\n\r\nexport function colorMixKM(buf1: Uint8Array, off1: number, buf2: Uint8Array, off2: number, weight2:number, bufResult: Uint8Array, offResult: number) {\r\n\r\n // convert each rgb value into a mixture of concentrations of 4 primary pigments\r\n var latent1 = rgbToLatent(buf1, off1);\r\n var latent2 = rgbToLatent(buf2, off2);\r\n\r\n // linear interpolate those pigment parts and then convert the final pigment mixture back into RGB\r\n latentToRgb(lerpLatent(latent1, latent2, weight2), bufResult, offResult);\r\n}\r\n\r\nexport function latentToRgb(latent: Latent, bufResult: Uint8Array, offResult: number) {\r\n var rgb = evalPolynomial(latent.concentration0, latent.concentration1, latent.concentration2, latent.concentration3);\r\n\r\n let r = (clamp01(rgb[0] + latent.missingRed)*255.0 + 0.5) | 0;\r\n let g = (clamp01(rgb[1] + latent.missingGreen)*255.0 + 0.5) | 0;\r\n let b = (clamp01(rgb[2] + latent.missingBlue)*255.0 + 0.5) | 0;\r\n\r\n if (r*g*b === 1) {\r\n r=g=b=0;\r\n }\r\n\r\n bufResult[offResult] = r;\r\n bufResult[offResult+1] = g;\r\n bufResult[offResult+2] = b;\r\n}\r\n\r\nfunction clamp01(x: number): number {\r\n return Math.min(Math.max(x, 0.0), 1.0);\r\n}\r\n\r\nexport function lerpLatent(latent1: Latent, latent2: Latent, weight2: number) {\r\n const weight1 = 1.0 - weight2;\r\n return {\r\n concentration0: latent1.concentration0 * weight1 + latent2.concentration0 * weight2,\r\n concentration1: latent1.concentration1 * weight1 + latent2.concentration1 * weight2,\r\n concentration2: latent1.concentration2 * weight1 + latent2.concentration2 * weight2,\r\n concentration3: latent1.concentration3 * weight1 + latent2.concentration3 * weight2,\r\n missingRed: latent1.missingRed * weight1 + latent2.missingRed * weight2,\r\n missingGreen: latent1.missingGreen * weight1 + latent2.missingGreen * weight2,\r\n missingBlue: latent1.missingBlue * weight1 + latent2.missingBlue * weight2\r\n };\r\n}\r\n\r\nexport function rgbToLatent(buf: Uint8Array, off: number) : Latent {\r\n var r = clamp01(buf[off]/255);\r\n var g = clamp01(buf[off+1]/255);\r\n var b = clamp01(buf[off+2]/255);\r\n\r\n var x = r * 63.0;\r\n var y = g * 63.0;\r\n var z = b * 63.0;\r\n\r\n var ix = x | 0;\r\n var iy = y | 0;\r\n var iz = z | 0;\r\n\r\n var tx = x - ix;\r\n var ty = y - iy;\r\n var tz = z - iz;\r\n\r\n var xyz = ix + iy*64 + iz*64*64;\r\n const idx = (red: number, green:number, blue:number)=> {\r\n return red + green*64 + blue*64*64;\r\n }\r\n\r\n var c0 = 0.0;\r\n var c1 = 0.0;\r\n var c2 = 0.0;\r\n\r\n var w = 0.0;\r\n\r\n w = (1.0-tx)*(1.0-ty)*(1.0-tz); c0 += w*lut[idx(ix+0, iy+3, iz+0)]; c1 += w*lut[idx(ix+0, iy+3, iz+64)]; c2 += w*lut[idx(ix+0, iy+3, iz+128)];\r\n w = ( tx)*(1.0-ty)*(1.0-tz); c0 += w*lut[idx(ix+1, iy+3, iz+0)]; c1 += w*lut[idx(ix+1, iy+3, iz+64)]; c2 += w*lut[idx(ix+1, iy+3, iz+128)];\r\n w = (1.0-tx)*( ty)*(1.0-tz); c0 += w*lut[idx(ix+0, iy+4, iz+0)]; c1 += w*lut[idx(ix+0, iy+4, iz+64)]; c2 += w*lut[idx(ix+0, iy+4, iz+128)];\r\n w = ( tx)*( ty)*(1.0-tz); c0 += w*lut[idx(ix+1, iy+4, iz+0)]; c1 += w*lut[idx(ix+1, iy+4, iz+64)]; c2 += w*lut[idx(ix+1, iy+4, iz+128)];\r\n w = (1.0-tx)*(1.0-ty)*( tz); c0 += w*lut[idx(ix+0, iy+3, iz+1)]; c1 += w*lut[idx(ix+0, iy+3, iz+65)]; c2 += w*lut[idx(ix+0, iy+3, iz+129)];\r\n w = ( tx)*(1.0-ty)*( tz); c0 += w*lut[idx(ix+1, iy+3, iz+1)]; c1 += w*lut[idx(ix+1, iy+3, iz+65)]; c2 += w*lut[idx(ix+1, iy+3, iz+129)];\r\n w = (1.0-tx)*( ty)*( tz); c0 += w*lut[idx(ix+0, iy+4, iz+1)]; c1 += w*lut[idx(ix+0, iy+4, iz+65)]; c2 += w*lut[idx(ix+0, iy+4, iz+129)];\r\n w = ( tx)*( ty)*( tz); c0 += w*lut[idx(ix+1, iy+4, iz+1)]; c1 += w*lut[idx(ix+1, iy+4, iz+65)]; c2 += w*lut[idx(ix+1, iy+4, iz+129)];\r\n\r\n // w = (1.0-tx)*(1.0-ty)*(1.0-tz); c0 += w*lut[xyz+ 192]; c1 += w*lut[xyz+262336]; c2 += w*lut[xyz+524480];\r\n // w = ( tx)*(1.0-ty)*(1.0-tz); c0 += w*lut[xyz+ 193]; c1 += w*lut[xyz+262337]; c2 += w*lut[xyz+524481];\r\n // w = (1.0-tx)*( ty)*(1.0-tz); c0 += w*lut[xyz+ 256]; c1 += w*lut[xyz+262400]; c2 += w*lut[xyz+524544];\r\n // w = ( tx)*( ty)*(1.0-tz); c0 += w*lut[xyz+ 257]; c1 += w*lut[xyz+262401]; c2 += w*lut[xyz+524545];\r\n // w = (1.0-tx)*(1.0-ty)*( tz); c0 += w*lut[xyz+4288]; c1 += w*lut[xyz+266432]; c2 += w*lut[xyz+528576];\r\n // w = ( tx)*(1.0-ty)*( tz); c0 += w*lut[xyz+4289]; c1 += w*lut[xyz+266433]; c2 += w*lut[xyz+528577];\r\n // w = (1.0-tx)*( ty)*( tz); c0 += w*lut[xyz+4352]; c1 += w*lut[xyz+266496]; c2 += w*lut[xyz+528640];\r\n // w = ( tx)*( ty)*( tz); c0 += w*lut[xyz+4353]; c1 += w*lut[xyz+266497]; c2 += w*lut[xyz+528641];\r\n\r\n\r\n c0 /= 255.0;\r\n c1 /= 255.0;\r\n c2 /= 255.0;\r\n\r\n var c3 = 1.0 - (c0 + c1 + c2);\r\n\r\n var c00 = c0 * c0;\r\n var c11 = c1 * c1;\r\n var c22 = c2 * c2;\r\n var c33 = c3 * c3;\r\n var c01 = c0 * c1;\r\n var c02 = c0 * c2;\r\n var c12 = c1 * c2;\r\n\r\n var rmix = 0.0;\r\n var gmix = 0.0;\r\n var bmix = 0.0;\r\n\r\n var w = 0.0;\r\n w = c0*c00; rmix += +0.07717053*w; gmix += +0.02826978*w; bmix += +0.24832992*w;\r\n w = c1*c11; rmix += +0.95912302*w; gmix += +0.80256528*w; bmix += +0.03561839*w;\r\n w = c2*c22; rmix += +0.74683774*w; gmix += +0.04868586*w; bmix += +0.00000000*w;\r\n w = c3*c33; rmix += +0.99518138*w; gmix += +0.99978149*w; bmix += +0.99704802*w;\r\n w = c00*c1; rmix += +0.04819146*w; gmix += +0.83363781*w; bmix += +0.32515377*w;\r\n w = c01*c1; rmix += -0.68146950*w; gmix += +1.46107803*w; bmix += +1.06980936*w;\r\n w = c00*c2; rmix += +0.27058419*w; gmix += -0.15324870*w; bmix += +1.98735057*w;\r\n w = c02*c2; rmix += +0.80478189*w; gmix += +0.67093710*w; bmix += +0.18424500*w;\r\n w = c00*c3; rmix += -0.35031003*w; gmix += +1.37855826*w; bmix += +3.68865000*w;\r\n w = c0*c33; rmix += +1.05128046*w; gmix += +1.97815239*w; bmix += +2.82989073*w;\r\n w = c11*c2; rmix += +3.21607125*w; gmix += +0.81270228*w; bmix += +1.03384539*w;\r\n w = c1*c22; rmix += +2.78893374*w; gmix += +0.41565549*w; bmix += -0.04487295*w;\r\n w = c11*c3; rmix += +3.02162577*w; gmix += +2.55374103*w; bmix += +0.32766114*w;\r\n w = c1*c33; rmix += +2.95124691*w; gmix += +2.81201112*w; bmix += +1.17578442*w;\r\n w = c22*c3; rmix += +2.82677043*w; gmix += +0.79933038*w; bmix += +1.81715262*w;\r\n w = c2*c33; rmix += +2.99691099*w; gmix += +1.22593053*w; bmix += +1.80653661*w;\r\n w = c01*c2; rmix += +1.87394106*w; gmix += +2.05027182*w; bmix += -0.29835996*w;\r\n w = c01*c3; rmix += +2.56609566*w; gmix += +7.03428198*w; bmix += +0.62575374*w;\r\n w = c02*c3; rmix += +4.08329484*w; gmix += -1.40408358*w; bmix += +2.14995522*w;\r\n w = c12*c3; rmix += +6.00078678*w; gmix += +2.55552042*w; bmix += +1.90739502*w;\r\n\r\n return {\r\n concentration0: c0,\r\n concentration1: c1,\r\n concentration2: c2,\r\n concentration3: c3,\r\n missingRed: r - rmix,\r\n missingGreen: g - gmix,\r\n missingBlue: b - bmix,\r\n };\r\n}\r\n\r\nfunction evalPolynomial(c0: number, c1: number, c2: number, c3: number) {\r\n var r = 0.0;\r\n var g = 0.0;\r\n var b = 0.0;\r\n\r\n var c00 = c0 * c0;\r\n var c11 = c1 * c1;\r\n var c22 = c2 * c2;\r\n var c33 = c3 * c3;\r\n var c01 = c0 * c1;\r\n var c02 = c0 * c2;\r\n var c12 = c1 * c2;\r\n\r\n var w = 0.0;\r\n w = c0*c00; r += +0.07717053*w; g += +0.02826978*w; b += +0.24832992*w;\r\n w = c1*c11; r += +0.95912302*w; g += +0.80256528*w; b += +0.03561839*w;\r\n w = c2*c22; r += +0.74683774*w; g += +0.04868586*w; b += +0.00000000*w;\r\n w = c3*c33; r += +0.99518138*w; g += +0.99978149*w; b += +0.99704802*w;\r\n w = c00*c1; r += +0.04819146*w; g += +0.83363781*w; b += +0.32515377*w;\r\n w = c01*c1; r += -0.68146950*w; g += +1.46107803*w; b += +1.06980936*w;\r\n w = c00*c2; r += +0.27058419*w; g += -0.15324870*w; b += +1.98735057*w;\r\n w = c02*c2; r += +0.80478189*w; g += +0.67093710*w; b += +0.18424500*w;\r\n w = c00*c3; r += -0.35031003*w; g += +1.37855826*w; b += +3.68865000*w;\r\n w = c0*c33; r += +1.05128046*w; g += +1.97815239*w; b += +2.82989073*w;\r\n w = c11*c2; r += +3.21607125*w; g += +0.81270228*w; b += +1.03384539*w;\r\n w = c1*c22; r += +2.78893374*w; g += +0.41565549*w; b += -0.04487295*w;\r\n w = c11*c3; r += +3.02162577*w; g += +2.55374103*w; b += +0.32766114*w;\r\n w = c1*c33; r += +2.95124691*w; g += +2.81201112*w; b += +1.17578442*w;\r\n w = c22*c3; r += +2.82677043*w; g += +0.79933038*w; b += +1.81715262*w;\r\n w = c2*c33; r += +2.99691099*w; g += +1.22593053*w; b += +1.80653661*w;\r\n w = c01*c2; r += +1.87394106*w; g += +2.05027182*w; b += -0.29835996*w;\r\n w = c01*c3; r += +2.56609566*w; g += +7.03428198*w; b += +0.62575374*w;\r\n w = c02*c3; r += +4.08329484*w; g += -1.40408358*w; b += +2.14995522*w;\r\n w = c12*c3; r += +6.00078678*w; g += +2.55552042*w; b += +1.90739502*w;\r\n\r\n return [r, g, b];\r\n}\r\n\r\nfunction decompress(input: string) : Uint8Array {\r\n //console.log('decompress start', Date.now());\r\n //var output = new Uint8Array(64*64*64*3 + 4353);\r\n var output = new Uint8Array(64*64*64*3 + 4353 + 767); // add 767 to make it divide by 1024\r\n\r\n var inPos = 0;\r\n var outPos = 0;\r\n var numBits = 0;\r\n var codeBuffer = 0;\r\n let inputDecoded: Uint8Array;\r\n\r\n var fastBits = 9;\r\n var fastMask = ((1 << fastBits) - 1);\r\n\r\n var distExtra = [\r\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,\r\n 10, 10, 11, 11, 12, 12, 13, 13\r\n ];\r\n\r\n var lenghtBase = [\r\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13,\r\n 15, 17, 19, 23, 27, 31, 35, 43, 51, 59,\r\n 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\r\n ];\r\n\r\n var lengthExtra = [\r\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4,\r\n 4, 4, 4, 5, 5, 5, 5, 0, 0, 0\r\n ];\r\n\r\n var distBase = [\r\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\r\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193,\r\n 12289, 16385, 24577, 0, 0\r\n ];\r\n\r\n var lengthDezigzag = [\r\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2,\r\n 14,\r\n 1, 15\r\n ];\r\n\r\n class Huffman {\r\n fast = new Uint16Array(1 << fastBits);\r\n firstCode = new Uint16Array(16);\r\n firstSymbol = new Uint16Array(16);\r\n maxCode = new Int32Array(17);\r\n size = new Uint8Array(288);\r\n value = new Uint16Array(288);\r\n\r\n constructor(sizeListArray: Uint8Array, sizeListOffset: number, sizeListCount: number) {\r\n var i = 0;\r\n var k = 0;\r\n var nextCode = new Int32Array(16);\r\n var sizes = new Int32Array(17);\r\n\r\n for (i = 0; i < this.fast.length; i++) this.fast[i] = 0xffff;\r\n for (i = 0; i < sizeListCount; i++) { ++sizes[sizeListArray[i + sizeListOffset]]; }\r\n\r\n sizes[0] = 0;\r\n var code = 0;\r\n for (i = 1; i < 16; i++) {\r\n nextCode[i] = code;\r\n this.firstCode[i] = code;\r\n this.firstSymbol[i] = k;\r\n code = (code + sizes[i]);\r\n this.maxCode[i] = code << (16 - i);\r\n code <<= 1;\r\n k += sizes[i];\r\n }\r\n this.maxCode[16] = 0x10000;\r\n\r\n for (i = 0; i < sizeListCount; i++) {\r\n var s = sizeListArray[i + sizeListOffset];\r\n if (s !== 0) {\r\n var c = nextCode[s] - this.firstCode[s] + this.firstSymbol[s];\r\n this.size[c] = s;\r\n this.value[c] = i;\r\n if (s <= fastBits) {\r\n var j = bitReverse(nextCode[s], s);\r\n while (j < (1 << fastBits)) {\r\n this.fast[j] = c;\r\n j += (1 << s);\r\n }\r\n }\r\n nextCode[s] += 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n let distance: Huffman;\r\n let length: Huffman;\r\n\r\n function bitReverse16(n: number) {\r\n n = ((n & 0xAAAA) >>> 1) | ((n & 0x5555) << 1);\r\n n = ((n & 0xCCCC) >>> 2) | ((n & 0x3333) << 2);\r\n n = ((n & 0xF0F0) >>> 4) | ((n & 0x0F0F) << 4);\r\n n = ((n & 0xFF00) >>> 8) | ((n & 0x00FF) << 8);\r\n return n;\r\n }\r\n\r\n function bitReverse(v: number, bits: number) {\r\n return bitReverse16(v) >>> (16 - bits);\r\n }\r\n\r\n function get8() {\r\n return inPos >= inputDecoded.length ? 0 : inputDecoded[inPos++];\r\n }\r\n\r\n function fillBits() {\r\n do {\r\n codeBuffer |= (get8() << numBits);\r\n numBits += 8;\r\n } while (numBits <= 24);\r\n }\r\n\r\n function receive(n: number) {\r\n if (numBits < n) fillBits();\r\n var k = (codeBuffer & ((1 << n) - 1));\r\n codeBuffer >>>= n;\r\n numBits -= n;\r\n return k;\r\n }\r\n\r\n function huffmanDecode(z:Huffman) {\r\n var s;\r\n if (numBits < 16) fillBits();\r\n var b = z.fast[codeBuffer & fastMask];\r\n if (b < 0xffff) {\r\n s = z.size[b];\r\n codeBuffer >>>= s;\r\n numBits -= s;\r\n return z.value[b];\r\n }\r\n\r\n var k = bitReverse(codeBuffer, 16);\r\n for (s = fastBits + 1;; ++s)\r\n if (k < z.maxCode[s])\r\n break;\r\n if (s === 16) return -1;\r\n\r\n b = (k >>> (16 - s)) - z.firstCode[s] + z.firstSymbol[s];\r\n codeBuffer >>>= s;\r\n numBits -= s;\r\n return z.value[b];\r\n }\r\n\r\n function parseHuffmanBlock() {\r\n for (;;) {\r\n var z = huffmanDecode(length);\r\n if (z < 256) {\r\n output[outPos++] = z;\r\n }\r\n else {\r\n if (z === 256) return;\r\n z -= 257;\r\n var len = lenghtBase[z];\r\n if (lengthExtra[z] !== 0) len += receive(lengthExtra[z]);\r\n z = huffmanDecode(distance);\r\n var dist = distBase[z];\r\n if (distExtra[z] !== 0) dist += receive(distExtra[z]);\r\n dist = outPos - dist;\r\n for (var i = 0; i < len; i++, dist++) { output[outPos++] = output[dist]; }\r\n }\r\n }\r\n }\r\n\r\n function computeHuffmanCodes() {\r\n var lenCodes = new Uint8Array(286 + 32 + 137);\r\n var codeLengthSizes = new Uint8Array(19);\r\n\r\n var hlit = receive(5) + 257;\r\n var hdist = receive(5) + 1;\r\n var hclen = receive(4) + 4;\r\n\r\n for (var i = 0; i < hclen; i++) { codeLengthSizes[lengthDezigzag[i]] = receive(3); }\r\n\r\n var codeLength = new Huffman(codeLengthSizes,0,codeLengthSizes.length);\r\n\r\n var n = 0;\r\n while (n < hlit + hdist) {\r\n var c = huffmanDecode(codeLength);\r\n\r\n if (c < 16) { lenCodes[n++] = c; }\r\n else if (c === 16) {\r\n c = receive(2) + 3;\r\n for (var i = 0; i < c; i++) lenCodes[n + i] = lenCodes[n - 1];\r\n n += c;\r\n }\r\n else if (c === 17) {\r\n c = receive(3) + 3;\r\n for (var i = 0; i < c; i++) lenCodes[n + i] = 0;\r\n n += c;\r\n }\r\n else {\r\n c = receive(7) + 11;\r\n for (var i = 0; i < c; i++) lenCodes[n + i] = 0;\r\n n += c;\r\n }\r\n }\r\n\r\n length = new Huffman(lenCodes, 0, hlit);\r\n distance = new Huffman(lenCodes, hlit, hdist);\r\n }\r\n\r\n function decodeChar(c: number) {\r\n return c >= 92 ? c-36 : c-35;\r\n }\r\n\r\n function decodeBase85(input: string): Uint8Array {\r\n var output = new Uint8Array((input.length * 4) / 5);\r\n var inPos = 0;\r\n var outPos = 0;\r\n\r\n while (input.charCodeAt(inPos)) {\r\n var block = decodeChar(input.charCodeAt(inPos + 0)) +\r\n 85*(decodeChar(input.charCodeAt(inPos + 1)) +\r\n 85*(decodeChar(input.charCodeAt(inPos + 2)) +\r\n 85*(decodeChar(input.charCodeAt(inPos + 3)) +\r\n 85*decodeChar(input.charCodeAt(inPos + 4)))));\r\n\r\n output[outPos + 0] = (block & 0xFF);\r\n output[outPos + 1] = ((block >>> 8) & 0xFF);\r\n output[outPos + 2] = ((block >>> 16) & 0xFF);\r\n output[outPos + 3] = ((block >>> 24) & 0xFF);\r\n\r\n inPos += 5;\r\n outPos += 4;\r\n }\r\n\r\n return output;\r\n }\r\n\r\n inputDecoded = decodeBase85(input);\r\n\r\n var final = false;\r\n do {\r\n final = receive(1) !== 0;\r\n var type = receive(2);\r\n computeHuffmanCodes();\r\n parseHuffmanBlock();\r\n } while (!final);\r\n\r\n for (var i = 0; i < output.length; i++) {\r\n output[i] = ((i & 63) ? output[i - 1] : 127) + (output[i] - 127);\r\n }\r\n\r\n //console.log('decompress end', Date.now());\r\n return output;\r\n}\r\n\r\nexport function getLookUpTable() {\r\n //console.log('when done with gpu, make this inline');\r\n return lut;\r\n}\r\nconst lut = decompress(\"#$6cTLFMX$M:PgZQ0uX#c3Hv3j%J:58NctbqUCrcZ#^pc.=#G_)_C0K)6PdZZKP0X+Aa=(i0V9/QuO-^mL`JLUJeIfW7ZB#F+q-M>)n/f_1tB_s)ew2HO[e.0^o0?E$(-_.`Ij#hBlY-^hjMZl*uMf6]jE31glP(x^K4T9hiBQi4p;(wguxYlHI^$:u3[D^L4r&`uif7UBV=dDJ%D-SkSvcri,->']48?P3kFDd-;XcL0-+iia2FtMDDQ7=<1jAr>%tk0;6*9Km,'6R$u@Q'3:-.F/9IFca[Jkqkb#aSp<`kHv]HklG(B>tr'LRbTLY;UK)o9N_m`+krq4wH*Zj.5TG[&u?9ml$fZWsx#`R=Qm.kJah+[oMCud1eE4k(PPNPTos_R#9<9H.BnW/u./Y'O$Jul.$4BX)#Q>k/TI?^DCp(?lf,Je[=KWgUAg)#AM'?Es=lAOJG7m.rk`d[i]#L@IMU,*lRc1ik%%.1aG/ws,O5RD2;iPaP)U`h#nLR1t--NV7HhSU1]xPHq4'S[WwcS'l$^/8eE`]6K&3AWba8CXaY#%/F7xa;#jn0[aA.0E2E/u/$w]HSu[Lw#k0ujSr%1&@iH85LjfdZCi7gLnZiu17>pjC@l+aAHqnBH#P66q?ULl12KxS)x;K>mCm$q;4s<2e(uc3.eqwt`JuNtc%YR4WW55Q9Hd%@3>Q/6qt5D46fU]DJ=?A2D5Hf20n5vU&x1-%uom[l_(wt#mdhq-6C7tgv><^EnZ=ujsK5v=SU?o/J^o0jlosUZfskS+-wpD.`njbMU3i;hbgFi'dJ06l]r^O2dx]Zxv@xFHbMQu2[k/v:^x9#.Mbl/^P.$SbB+1[BA'##;fp6711@`<4F+2u;-ftg^Qtmkev9x5PLd7uBYJ+N5qG.r>.Wn:8X*8tVibD+3Rk^a=`0fuqB(p1?#'XP%hWB36t65[?>>BmnwX(FWfO#BrH3%lLB2UDd+)1pGfCTh,)p@X8uITrXZf4vPg)8tw]+mf]Y-3_X9O$vHbe$vI55^se.EOumJ-gW%6eL#RkC?uSj:.;xGgR[fLqHpu9k@iL42+Lodf`o*owCXT#b/vwPCk9vBVK=0*Uke@/p4pWc])0Vl8`60^$6)n.vSE1uhi,i+r(AxDVQTBQfi%7Ydn+-K_^X-IoAEMH8XZ)oB&2rj;U8jnJ:G^W)+#Mn&rRKbq?RqZhSfF`mNs/,eV*o)Yi$sZ)vjA5n/qL<(T$?^.KX*%qjQ*g^v_5rb*6A8u,$?ek+3bMX@kw4*r+6QZN:F=tP9=E?'15-#ruGot-q>SKfe=KGY/t1+6,ustAEIBj+N]*pdaSCeN`e@kGc>#8Y@A]FUtsfe->Cp'm>C9u+W8LT5v#TY$mI8#_c;Xa_WiTk6:R%lcZ..P`;DTiQgZGbP13G;_P/viP+A:DPSK>0U4tttFM^MJ%+e*(^^H,v[qq9F[rC[DuMbwk*I1`av1ABEY'BFVP57,kF(_9v8j'ocNNCVSIpB0rrXH-L=Z-@5tq:xf_E^Ar$Puekh[Is:kDQGSrL7#eHOnm5U4H1rpW:9v@+B.qur*W&0&=uqD2#xsK;l$GNj@;aiOg.:+ZQAe#s>J1d].Wps)G*tWd_g4_u/04Bo']t?'A(t#Ha**R[6]m-mC9u^++'t?RZvtC879[J=g.:(alXN6dO=A?,reL;Ot'S3:YM;X/FT$^7#B7nEv%S3.v%#eFBOJ$+1$VLSv/pat3g_5JoGJ$'U6eePcR,n)R@b*6qFr;HpRprv_g]SeUIn$6`,v/uURnimD*vS#^YgCG4.(3[(&#rYZTV:Y/hVR22AFVj>'s(@J1v9hFGI8O=]sm3hUUw6hT0.lGiKQYw`'+?uR^428K2nK/U&7aHN<5t0R.^r():hQ.37S7u9BRevHOQf]EL5v&0__6jF)mSkb^[CWebXYSffNt_(6x=WxXTsI9SrHsCCdNE'+_Y&S1Um4#e](>#EidWMo@:mE)2hLS[Amd:.]s$h&,LraGiHX2qmk1'r@l/htZHhq9am7vwWl1k@YYaQ+9$Vm^hs>BmfHhuPVvhaZ%)=Y4^%'fl2aAu?14?+dj?U8,HZBpwUwH^,mq9l@`V-LYv4tGvi*CHq]%6H$-x>JAmd:l]&mTi?>8tuaPm,m&/'-msCmqnpu9X@-3EEE&Z(:v#Mk[hEmv.($s^c'*&3@ubR;s_FXU+U^dY-qRYgR/ruaglI-RJ6qbiRVib?eNqvL[*(gtR[?>5]F@TnN4t2>^3[U*FhiTmR%&Uq5(G;N1g5rj5ZPF:Mq'*Z/t9.q(#g3c<(nf/>te[UeL=i^vt<9@8v:L)kV2*'eu-s4Q`;>(+B)SC;$F>c/$Pr42Lj99lfpKR:$?&X/u&tRAd5X<3#c%ouk9)w;eeWVUu$J$%#V..75%#e&qI<)YlKh?@lV5+Uf034<7%e3YEhK:`I?t`=lSnbNF,QB^Lq_%kcX,i/:fWAlfLUDF`%`_PA-ECS751Xi&+HbCV2;rs^*Gml_YcImD2E+xkC?b1os1'&Kb$c_1QDr'Oi]YbHuH-p.Za?,I0.P[$vaI85aphaNqBk[+i0qdr>'AwF7)J.]tTjpku(n-0uwmesBDpIuk%e1XA;*4[R'V/'>uX-6Kmr5nVC@rSoJpt)qA4+OE%`Z&8cD]^'e`,DuY)d0CtdDJ`uD1FZVO=aK7Y/te';h.mr4IucuDx:D1)i86?,YBr3EHr),dLf#T:Clf>n&BW$n%KXRKFkXR-]KlApAcK.)Y%R?pcPnEvrj`TSM&Lo^pGUFRdmjgqjub$c$DWXW=Yl(N8]X7vmnJigq:Q0TsM87H_Z+.)*FrIAkFiTL,%7?m#pt.DI;mCB:5f@_E`<1(69-7h[t'9lFd'Qe-cr9HG-WhQg8i5L_l/eYsvOv;t*MQ[I%tS4f@2dG_HgYTbc]Wf7&XX-wW6`9$.L;EMlUiA?7v^3Yj1TUhx4mj,9tXmpGKS::J:-Ev[U+0XXuH0o6c]Vd'vC(,kUHP=M97QX`/8`',v-uR9VOB5-L&x302F'N2(Tu;u:F;G28[AteqT73L[rIga^-sukY4YU/5eXu#dpr+HTkBmA18DR.b9@+k+5Et?`c-*V71]FiB0e@4TdgOJU6766fx`me0$w-##4@YK'1^OcZLS4AjQ_nco?[6a7ae#v(,<2)9Z7(+oSrdd`NbQvMB/Kwi@gXPi-E$cn3.5N1nY#Og]Cfi;vc7nr.Omq9`.BMsQshY9`Zp]3oH29f<_4shguBrGG#b/k:uZV$,/?$9^Fj)2%phw5sk;6N-BlWLuFAU=&v=BIx*J=FAk'pVBiSE1?bAXp[OpDI+o/gedowI''B#poSNcgR3&A>cvJEGcHhg1`vmMljv@-RL4)Lf1F/7uS:)e%SaNAL46ONvRBJ5U*lJRZS=K6x('m+[`t+,.isCR]hx48IPub9ruZDQwpugIUYCCu%.$vA^o?dG(Vq1tr(?k:ElW5]Fed-wU(5:(9Q?./(@.@:vNcC.J.rubs#,Yi9[M*s6YQ9OFd[%;OvX=wq0uYtAqE)SUgSJ([#n`7v'P$*dP:54vfw,1g]o27ULg1#noZ@=-]52)lTa*_sH`s9r(xUxK#@hV]3/Q0-ueh-G<9>6sge5G_vdG:v:vhOIaO%VmoF?TpME*h>qXU88sIw@Pft`5:Wh?hE$HuD2FLoNKiflF#-7h8v;2LMqk-FgPv]2.:8nEixW7v=*P#6oSC(504]30mVY?qTBs6]4V^SttvLbS`j+L>=FWcmK6XeX$i77U=0#v[#:S7*4[=7OA_O#vS6N7T;#0^`DR:#jH^1uKH/,D_&9uuJfI>s2N-7_t0ox^>OLJq-IBsKLVOI7KlF3K'-00g>GgC%J`1fq>`q;[C/4@.'1s$b6f1R@b)^sF?MjK9mPbR58M[H`aP2Ff`$v%qg&ZfLXaOcfW]HgY,El=5dX`UKb;mpaVI>MR<-QfqVrt44RKZI7e13=juS@t$#*eN''@jaa>F7@i<1ob_9cjf4ON/lJ/BAuAl`%i`J#.w+O3dXN3L4CU_C&d9^=?h#q-=O7n.MgO$a.x+I#<1'&[LqjEx?@'^[SZur[XHk0rq^f?b>SGEeq'q,Vm)qw(.sTKo%D;EbRh$s;Y(GF#kE8^L28t*eF/)N:BA%4G`vmr0-]bJXAVn(S']u^9=cnK;j0udC&Nsdu[,a4Bj,2V?tSux,DS78wtE;DmF'vukAp,./k/v@h1[G96PruAu=(etj[WWhv9mTcp6BASQa8v1p_XcCZ28v[AvpSb?+,v8JT/vCv<8_@XG22ojZBk5H_=OuXXE%8vnb0R[$w+kQKLieFLJ61bSk.:0MYln_m8CqH;h#X-Ac;gohh9[JYiTQ?p3-l#ffuF3@G'V;oh*6YcP1a)Li8U;Ac?)G'bn1b7t_+E=T)W;u]B[Qn*_Y,Fk3l5Hc,<'iGH5Z7w#(OKgWef;Tx+Cs^cnguV]r]dB>LUV_bN^]/HoSInV^:mW06#cN6:lAN:Iuci%EoV@h6:lweXfaQaRP4WpGJug2gl/-#1mn8.-&fs#Db^Hx-8ohGD$mn@JR%([pjfpBhwt:i9eqM+J%bBrJG6s%+;uvJt3oDWQX/J(o1BAr3jHRJ%GeVvrjArSnR[#i-rI)K%t^kO*g]?skRn[Z1ed(9IooG^%m8XB9.(>hl<.*NxSn*=SL707>/j2lI1=oWJ[4M.kl8s>-c#NE's`@bro2TNB)W+s^)dHD+%$607vTW>r4L,e7Qtk@_aSW<,^k7Y=*ad;xaoK8sb`Km?KLWqd6j[A*wXXAqA-&XC$$V7%xG#/a0pDG>agiM3]k9[5e4'#75aM)[;1]HVOL,lx5qM$If*-N;ruLWk)_,v$@PPE:VPx&JIRsj4uK=_KuKXv#=0EHd=6+6>x=1.bv&-3*h&<)A(Wj6<,vGZjlEv>>]Oo$j#Nbuq5v^qaV7+,>lA-Q-ZKv?5_up4lx4-4g9`iDD.qwxw'.9+Bot%;q(rSSb-$*rMdT6_)>#dG>KutchSaJ^Jl7=TY7f#jaiku$:AoAmT<(hhIXm/0vqipR%Qqh&n/EEkSGpJTamr^i9%3Kn%:$g)7v?UgK`X9r_>)taI:]HeIFfAF`3D9:^SP.hlIA*RwRfHR4Htb;0lC&dv[mrZWl38Rd_a%;*D4&UwF4f]pOvhc,D,aNFox+rL@Xu9Tt27TXpvp:ND1Sv=n#tfgAI6?VCRUY5_mJq<[fE:)f6vqmA@GIXV-HRBmWC8cQ/Ud[06vb.i)mSL_8E'Aw1a>UGVmIPh:Z#43UuXfajo.UclpeSx1spV;TRxhdSJN4<4e5GZ-r4b]4-$twFsBYD%JSsgCMZp]-L+@uo$l)kI'R;7Cqd7f##E)j'59%f2]U&&.(p33T_=kN7vQhr%$GO4$1]A2&>,W7)*Q3g)vR2(;?7+L(`Ve7]*,coS6K-xF-NqCAQjf'$#cb/I]=9Q$7vD^e8vweDS%n2IEOsbQ;i#=sP&j>C.(1l_Q#<[S2^-ME*JY0u@dx_w4(_O,#5.L]I^*krwF1$=17:Nqr?c&Q^AK]YEK.*-]T&.Miu60A_A^Ugc4b6SfY,5PCLmk;+`AgiHJ]G>94wZP#(u4XlUY7u'G?0o?($E,DIGH41oDaC'.?leSB:#Njie.lx9cJ6raH&0*uYkZE2eQNC_nN`io*6LfemR7c=AKT3#W@,?;8UuxeiiGd`h8_6FvXlj_oNqNj_1uBjkR7),99J+0@6'TVF$G'8rOr#+]Pq].MQtBnPdZm#aqgU>;d(JXk8h7K,:v-*Zb->xSku(gG.3OB>&b>XqfsZQ%e+HK:BW^9947WVYc7G@WZN5AX:doK#C_jhMQhft-.L@.:u,0#qF0Yu:Bg[Kte6a?eX5()0]F#vj?6n'cDYaJI9;Pr64:rLR@uMJsNX]wHGprCjb0([u**h(QA'_s[-&)Nhpnfe$XBjPrL50iST@c4Z,1shxYg[]En9>._oP0Tat,=H9gF0q'fVd(P7RrkWG@AI$c2^)@ZqAP4=jshUuo/ZelFERw^H]^wZRHmfa=M9YclP+rbQoXLKu$?-]42fI&5m@N,L#K:>6cH)Ju]0v$8v%Qs66MVG`PQP2r;xS6vnh+qeE@CX2vqH6#h5)cKLr^`=s=dDu>r@:-xi9fUROmnu?r$boJ25vaT#4a5FnAZH-F)=:AdYeg,;4kwp]+w]kpo+Tk5Z2hLToq/:'Y'YuI`0pK`.>+%HhQ4'DIRr6.97nl>X83R3%C[ceR6iJ#a9kJZR4ss^N/MBLqCs#/RP95pHiV7G=VrKaRu=?Q+nDu`R+$,'96'$-uA*iFC_,D)<2cWF/6Q%tKiO$FRcV*4$d+Uk'OU.A-M%L$=kT/7_ftcBN9awFVM7Ck?-:AF4j^[okHDH.q[SL$ZHJY>bET;fn7P-btEaC'NUP-Gx&#&fFIb&I]#J.ogkLg](:lIMHV&_OwA).0?(6b@`G#[?[*uLrFiKfPCqH^h>Lqv)ueUYeF)6r+.s7COxFKcOw9Om(E$0Em(rdMp1&$m,8S%sPAn&SZL9.8[O^t4mRh9HT7k:P;)It0f=k4FaD#-v^TgcXTlYu.x:%NK0e%Ng@o$=/M>juM$e:dEmj+UPG8^amqH(sW92HqdBW##aE*JLRH%SfW)wZi15Z.<:YR(W3)O=^dxNHr>(IwB_aSuZ*JXT;S7YR?(>Y>jWK1^MS]Y[a1vux=aqg]CnWoT-vu5Sbkir0t-WP,3@b][Ocsh]OuYIOZDm#np9kR]C(E]@sVUBs4OeYpd&v`Ri]arMvZQh=;Q/SMR6BJ7L=O%T&`,Nn-qoNA04:V9N'x8OR=1d<0GW^XxRA?_3O@.6W7lUv)#'*,Hi-Xi=G4Kl':W)`1qJlavKP-k@MYK>/*d>sk?8Z2j^7r;YaGa=lF.OU($L'$O(@b=uOvYX%10Buf2^w3ZJ&57/uP%Qs3O.4VTLHS,'V=Ht^.hwk4&-eQVecDRnmvN%(`[M-T=;LEn^*#GstK-(rZ,%+eNd]8`khSd3RJfi7TGGgxjt$WkafC0Pv.sm$asOcuqdjVVUe`tS7QK3/'gt$ZNYH7)72c9sa2GfXF/ZB4&/c%VHE[]`Xcl%Gn_oKuuuRp'0]4C6)]sYh31A2xq-Q.bLZlTPM>Q=MAUQ3^_JAQ_&)aA3e)ZhmLIk-q42'$AJl-di@#+Ek`q^sLX./7Qk*m@gHQCV?:]1['uLmxRsF*a*cUjbpx7f@&#GB0St[V0tn5:a@,2P/fI#d+C0vHL-42x@Aa7N/+_fhi5MTMj^CgxRA'l@G/((VHE)([;A4r_'q]dK'5o=YlX88t/(8uZPT8rRgxZ%o.Et?'q1u]7c?h#G5cQt5Aq,0b`mogxE([&d;/xkF5cYTA:E&s@8wOUTD#[D#L45r4$';$kQj0V+q,es[XR[+oAk8mY(%HH>SZ_R4u6W=:P21Io87fpNvuZhlq8T[cG@vfVRt/NNg3'q6YXo5d=V(4/DbN(lCSnR_0vaSMtlNXbMNsuM7nB20ugvUxL7Y>L9Y'.x,=pQ)DnF=m>dqjvbNbV]ll'U4-rN&c)bs_+-pDXb'2'ghp3jvtbZ8S4lHt%r5lVpoqDGXm[/>?O%Y3l/Rik=1(q2+UfXIs>I0,S:-`(q//TDwfs)RY+?k$kC`3K;QA1]kLq=K&Wq-->DF`YDVq>0F.9Br2p^Wo<'`6%/L$JkkZL@^eY^d3LQI4QHiL`a-$&3l7Lcud#p$i6>)W*=+,?-qP+xv8Alu2G:;tg+q^geF#/&PV+o5V1f8vp[/r>S#ZiL)l^Kcm)*B#lGUjUBLLv/A07Av`xZJEX+$eg2jO&$HbK8)Sf3->LHKfQ4hJfW:MBo)OG)F+?F7-6EYP04#pLb8$&#mESfs8Kp$#LEUlJQG_o^xDHT<&(S?s-Q7@FY;8QjZpVoAk8sHlZ;Q5CbGR)<+9*/L=2=r.GVao@5qOKYQr@@E#v$B`4>0JU;H-axpV%t_L2'2dke&(eaflGO@rev`G[,d.FlMDPn^?*4AuH$J7v0(l:QWgJi]6@_c7J4pWdu>lP5an^Sg(52fc44uLgr7-&-Umi0fWZ(W=x0w,]@F/qVRZ.abEA.qf/Dm3'as#g-p=_/(^c/vjR,iKOg8BW:0mg/m<2&o3LGOH,,h8'`NoO038YtoY+^$B^rwkKj6#P65gS5qJ8(^,q`P.(;w.udkdmsIMD)@6:Pc<>7bkbN'X6?6()qW,P1R%g]DOUVD#NBmc8>Z*sKh7L=tLg>j]h%F;VaM50)_XaLn+v.r'4cBPuf;gD`ui()xBrrZ'f5D%N$fxUs/0.^nShlHv,+kh1/h$8.8J_ZxPOJ2pPT1bSM9WK;hl,UJqLr'aY1$)hAh2fr)us/[##?.S?YC[^HLKm=x48HvVr=U&F`vp&Jcha=hPUh0ZqSce:;+/qYM.HSu+JD2?FpgR&'7ZTDN)B-vYcfeqjOer;,KF@J%ux7X9&TbUen6>U4L;:;sqO-(JABcH)Ha^fYxs.#N*lgik^iZkdYY+W-dW5>7a>*EHP,?@7bD*emwHEATWn[=?mvJP$J75lF@>d[o?D5GjCHFr?a+Qt$uNh8-sSY&VLv9K]C^U?MjbD(],%wu*Av5*u'r8)99lCDoJtY6C*fr/J)a@bk%@(oh&]HQ3$vL7MHSq'Wlca#5l#%v_ZT6IQ$H4ep=)b*kkfg?wI'%lsBP?[^C(JmrpW0brYH+wJ68.Kd>)hkTW6NB>5(/TspSK@f^Za.g]:&MBqCjggKkdAp-JVop*MrmCp?5_9JF0iY6pSNgM3sEk$iwiU2?-S^=Ex^8]P6`XHm:*;ns,9hh;T.(-o[)(BAAwL]@iIEMdB2u=q+;?jMsbtk0&R<-A[guLf.h$`pNT^[7,Sn_XZBP`4j[HS@+G`Rqnr6wSprFl^T?#CCZs1&&I%@DAv:X.urVvBQ6#DfutXKu,b)SH[I?[c@;w3/a]c`Ef-`aHV9JJLTGXLmhsKG@Ns?B'liLWjIbg,tcG6MTJ-;5m'Cqi7ACreM>>$@k3$PoDBeo*$I,;*Z7JM,dCUqMLe_Wj:X5&twNl&i6msrL,ISZ19YWY<-ah=u_A$BEx*P7Ue`bdFh#4M9#^jbd[%FI8B28g0-AjK4N0x)sM$x?l6+M9`:R)#Fuq1q5_&wo5*G`E.[B%Sd,O#BPec`<4Q%leDWpP3es%],MtCj2K,N)DaEF;sIoNx)>%T9V3>$Yu]qihWEnqE/S8&5gXK3M3i[HqjC#i22^K_K_IeB)tgp8r_@oMP4gbD(lU;6/O2m%nRPUY9-kxKZQ.Ju]D::95i1Bk:O*]u1rG1n_u^R,k>X'q'KcOR@Waw,Lks1i`B=pM$TmE`xg[FE`[d^f7nLru.W?Q*`hiEImxUn/CP&;?EH;$:fZJdFE1CNr3(Zmk)nUJn2WDL9?F%fmIfumJf=odJTeHUOVd`'f+H&:?2ZadR0C/bDS`&lUX>Q2nW;>oO/(r?f_bj@k'U]''u#25Tc;Gt57oXX&7MCI&I%U1d:oS:G$VuG#7iLh-d3Z4WYjBckZcR*[=-B071fpkqfsU-wo3+YH)a4i1^-qC*A7PXFLor:.d:'_$6(P10B2GhJ^*M[kD^n_'xJb[O@b[-([(;;^pM1mVEogA'qjGOQgV5M:Yb?_5mD,?h2ur/*2_SSb?<$&m[5xSilEN,SbF?ufRGTC);V;+JCMfRL+To1%YuHlT3NG9@g&TTqvuVrM_1Rg$9%hgt/*$V[#UBV7rTQV^kB.cJIpgN?CH[^hKRviKWBfah64[vGBhBj(i7s6g>lI+kLfbP+(H39.eO+SQx42GG^,]iGQ7rYgl;=l5aN.fouf8[-<7rwEmLke++^>Dx7qlA^nP4VfSYcaCHh#gcX5sI4Du()Q/mE2u;$gqvY4YYKWG@f:9b`3d7L`<4Og)D=/:uTv]`>LPlHsX=A>xti@G7(ij9pq3igfuEJ@_i=1deU$&s&jH2e?MtIfKw6Pas^p#aqRPS/&q*N*tt*adJs9X,g;ag5Q[JpEs[jT5v'Y>,F#n1[^AMr[2_)V's>Jwor4Z-(vQp9lsrd9gp?m1EInd?aMD)57vTre@r'[:4sQ4hm@>GI]B'45:;]Jx[6^X92L+#neLe]_g+'eQ:btJ'^^)Up^@aqSX$'JBaKFf'RO.KK;MUArPqKUC<#N?U$(hXR?#:ZSeAp,u948PLd*L-M?0keB;%0E6p&>,Pw#+QW%oS%-i+:$7qW_b$okx;(k-;001E8pqwDvO-6+pVLb@RK9k-I_mE11gF$g#cO'8ZZ/H[p/,%+ks_B9f%[FtiE`8fLP`mh@XL`qE8pqLHR7+gLEh8i1G=Ee`1iwgU1-GGK2@l2a>B[Jj*2ZUp^fTX./,hO8_]81LXDL+MJ@fY+K/9RnLK&($Qe5$ciN/PrTUQ0LhAG%tb,__CG/EtI.Y)6=5;[+&jmUVt&wQwWJnNgla6PsI$Z-F74;XDb3ifD+M,R/V.u[0Ysch#u2RnDoit^777J#jZp0GMr^;dwKS.Sq31uF?S'd*u9P]R7^2P&:A+:H?Tek'u@Cx=#$E#9HIaq]s/;t&OCVtAuUOh68?]N8rOOc5hH@,972KM-a(I1i*tB[]2g&03vc7un&E1-he%hlN%7-XwrND^#FFA8`+ij%`sI]jZ4'Z^QtvHUX_SVRUCG:6jF/g;%u))8>Qaq<=$HFRT`wK76INocJaCN-`A*SZWfUA2KBIwbhKI&`/V8)5=7n6XAt5BU*K42Ska.FOsOU=i1[Y+H`3(GjSAO[g7v'fAQJeCV*e)FhmiDLR.d?QT((TTp`'q6RQ?5;-Zp*Hu_V^8-bQ=ft6(NIhh0@Q-AQ1Tr@`'Qp'T5*;k*fRSAW'ZIDS=7ESmBZ#o5;/TKS4IS&HWu#K66/&e9VHo*>V-?cJE/k$xH-#*7_36$F-GA5qT%vFl/+h9An`aHE2tr59:[KKm6o[ZViD(W)_eS/It(QrtBW%_0tUf#Mk1VUr<=6L%B6757#H:&5IIIu=Fo/t,q)>EOjl]9$nPWB*M1J=Of,E%Lh?4A4/dY9Mhvl[fg#DC8=fdS$wIbR%558wQ^eI.s^[X6tA2LW&V^^^>jJvn#,Q%?6(kIE[^KhcNM:G(a4*FZc6$,6Db(6/s0$XuG75Q;#793'b43HY5&<2%uIAN^aR43NjERv%+BTevR2qRHi-elG*Om1[uKJ)-Q(lu*=KtZNr_udaj>J,(Yi1(v@QipaIfb*i%aF,C)g*h6fj]9;#sIir]jeT6XjHaBKiar%YPmhC_nNrvPe)86PB+=bE0#=DNpX'_kHI58IH@6R^n*,FM_X(j98sia7&8(n3K:OOOCcssqYMH%tM_eC7^s0_&m+fR7&/WYgxSZ8b*tG67]dRtoVQKLKdCrTI6:;^J=`*;-BNmIovRN)qv1+[juSoZK_<3B6J>(1Ta`O2ZKN;xt&$6_DpFr`nZ''R@7*w8G:N4PJ*Xb:d^34$KVxYm],Z54W4fpmtbq2Hpe_^o0ik]PAnEfFiR#2Vr&ijY-j@pRnVOpCI)V+Jt&AnesdUMxkf3YxFDHb#[RDuX#4di3v4tU0v>fxX*=?H6E+=j;lk)^Kdts2fMA6CAh+dP#vup8#$<-E>#PqoxKG5LA_F?Ho7QO]ZgIrm-(j?ZRt-8p?)MA`2Krj_l-^9`8gfJBJl5Y[j<:')MMe%+D:DCDAHe5p4heXQ7+(2FuwDCB72i^Nkom9]/PP<)s,`7Yl6eFm6W#eI%S&HE6m>T-kGed?JQ_X?BrV8fLHHtx>HUY*Bc9cO7]up'uWX,:-qEM/o^)H2fE1]tU-M<0aFq-:SZS5W,S#0>6@<-RZGsFH`<(>$;*(NY8=$@a>R.T`f0nI>03l/UA6&v9[TJD*xRdCnc[a*W,5#upJcSI`&d=N0'.8[[n.oi[2_:b+sgoetk.gAnS/_Uxb68^LLB71nn(L-Mc[un6AauH,K%phsEsnFOldkM@8MsuE_a[CiK+v7RhO$ZSmOs*(@5`BZkUI#=4Xe?'SWoSsW2jGJf]B7f524IBul$q1ST88VQj+`4^;@lUb?B*mIL9f`P9LdGV%%[Pk&Jo0=lV#O@0#,BKivAjIBYZ0N*hYdI#G;IrMiPGk;1.=OPIJD9',$lsKNgAp*.K7B)8V#4t$?l2E#B&=b6Mg4X0F<2T^@NOBsLuhviTVK`M-M7hu&8-`?8%?v0okN*$>$DGM9v9M.&Gr=Xo7#VwYZ;CJR%v7e%BuEmou4ot'8E;5`L(_)V7d#(JL&:joQ`&q;:@[loua.mPFOv/aivui*SlEH%bQO[mX)YY/((:)n7(K.Rl2F#i7^2Br$q*QOg*t-RN0pVgt:F6p&Lg4aVvna3S@wKm:jn/@I]O7RUil%f>Z?t%rm519n=&llLsl$)SQGpfQD2oiQ^nmlOA@NTmSa`Xsn$n)=1:?+k:d%RoILG=tFe*Fj.vB31&cYu3dqck@bYm3jm$dW]e=i8at]Lp+eu:`H6Bw0YHQrqM,>4k.gRlhxImTBn_Y*N@@i]s$i`xg^0%#Zm9tn&#-CVYF:6Wgb_S>??if7[r3$eJG$,;nS>DUqBBTesX8*Pk##*auh9;cU5O0k$Y&65N/*qA(F&K%bMn3RfV'OB,-VKN7_dA5qflr=I%)jH-f]j32VlV&F'<<`W7)c:ZB@4kX;60P%iS&t:X6,kBia`$r[1l^]ZRjB7hw>Q%:jhV?SW0;$UF(N2E09jA&pD)(Kg4Q%kH)FBo.%:3_/O'LV_j(E$ia##gRN@roW?S7XIq?'`4-;$iZwcU8-*JV&oBcoZpBIB5AFa>='YWLXgC^ghi;f;&Hc>>q,@k8%;#GV8?jsqjx71L#g=guUMK80l3tGi^d_b8C#SA_<+l4UXbTND':La@b><4T@lL-gL/FnpVIcZmke.YwZo>a9MN`/gY'K0aHKH+)Gtn6rs5qumo@b8>#Y8W>-cU7$B6N(;$`n6p&mNL-(2-X-3$bJlHTu;6hB-[EUbxH).(NLe)2Dik_@41sfk$>&3o/a2vneTsSe(A%S%mQQpuw9h7[b#A#MJ$EUE7K&RlDS'.vu(?lbtrGEg^v/EQ7bia?`QqxCpm*2N+3bgxl?-fChg4'r3/Z%b]&UU%;_tN+;T;6vJx`qg<*Jhu6`2=JqnW)INqUnuA3opt_k*ZIY@`^oK.fwk(E[7Rjr2ub]&Eo/>0`=Ie2B:4nT,63-lrj'S&>,v^BuO^[(Cw=gR<7GNv%)bNH'o(Q%icX[J^xL>#0xw=`JuY`%jIeO2>Fv48t^@;Km4hRthaN%b?ctY*s(a0lhw.$_;+2M#l2hw/C4m1KirlWC'(HgnVcs]8oQ@&SN'F'M;MGE=(Q%Hu?-u/*_$[KrC@s2'Z6oaER.I,$#R51K8n_HDUHb'GpO[mef9P3ZnM&On.Igml^9ouXASm7n[#ngu?bC_adL1Nad^WZ@[rJ$91MD]*.C$f4MEZWh#B@^7(#cWij2qr6CVA_KA4H0vL0Zs4FK]`cGKYxDD:H0veM)v^@XNS%;EBlSfTb(>c.Q%u#$0lf;@7;kJTF%55WL[0#WlQ^`cToaF(BW-OJmM5>@#Q/D>`EqtFVe.]<:LV&cEm<^7OrQxYS4BLW`efFgT.q[xRkjOQ:)JLR0=7]vVE89W36-ds`+5SR&AQKq)d*`6DwUQQKh*oIcK9D3p;pspFunE8gU2-bS`YK$1DW0a8v,v2$M%Qwfb')O>OwYSu7H@?.fPPvh^ZM4$sZt^a>2CFtvNql.ouGMCZRfv.$:vausXuQxH$#seb.L'swk7M+pSUgmxg_`[gu+Mel']rp2d.Lv?g7R)BWT[6lOYu6M9(ael-jLe%AHt)f+7uw-%;$SJC'o'troSrM5A4vo(M4Y6*)<)0J87EZ:mljt$gUS(x'N'*[Go[MX;dcek>@RtsPup-vmogl$]bJx@kN0wFV(sY5J9iZ%uubSZ=,ukHV_+*k/e&3IuE>W6`C$*1$K6&xke+Z9),0_N$=08wpEntE#vgQb4BbT22QtXWY2ftLu*Llho_JGB#Eh82v,vkP'A&EYKgsJrrEJ@xT7([P0V5/?<-E]Hs3G=wU?to;gwlUJVxOKZb;Ac(lLKdS%`v4?*?9_UGsa[0-X&L*[r_Ztl_l-gNB>A.^'A_'qw&x*MufDp^5KH(vm33$c=J0;7sV>]=R&Z'sg3gVYbQhY%xCluu=m0GtogN=l[wO:]nXKlAa=OYt(7$B-d'<-#Jr6&vjIau@Z0n7R9auA7a,F0v@k/8vI]-r+sw]&L2g].UKdGo+&ZlmalvV;[2K;Z'QG>MpcV.7Q=]g4fkXGr,aHtN7g-DXBJk_JaIW(7ie62JVMK-PRg&1;H0v6<^4Md]JfD&Mg^]mnTl&eM6hG9sqMKDt_J:#cKl8kLOru*mQW@VxTKQ*FI_G%N^k&cxES%N.PMtYsi+D+5l:$g*P^)QHQh[9eq/8herL7_0@#2xIIV%aJF4A<7PHr=dxS4kWFAhoYB4fMTHO7:7BM/SefouHgRL7rvj8T>jp4bA^uc*8M)%Dk`:.(nfsZhmI>H7j4wZ#v_$D@,Ngffwt9iaf,kdrS=h>bp2,ljF4?&v?.Jb)TDV-vrTX^<^fv:C++0.,@fO>AWS$gUBA_&#M3vB;2/m^rQ9;qNWs-$u-GOmO`a4B#Gm;gb67DH1KbOqG3SceSSjQwp,)6mYkN2BTAm>QX&3)PsFPY`J9-/Nm,i5_QT^JIu;=Dwb)6hH=VJB0jM#FHum,]Opt7JTZcjs7If)0s'*/CFX6/m]&utK`aoK_sTu['E;KtR[W9rV2[Man.-O;I2V05Gsdf:5%b*MG/$F%'kF,xX'v:8_8J_6iC[7_a[W6`/q)pE'cD?'Cd>pOMO#-1])5Gk9gC$%-R#psAmk-jIh(GP=%c>J,fKbs%k`Z:AbI><_r?vceZa'@sb'WcG?-b*Q3u'x2QnxiTBYNFSw1o]#I2b$6k9:,[F2+(@,;Xd#N;kds*u&>oAOxihK#FVkCr3amOZr:/5vF/ep4a68r$v<@I,)6HWrD@rXr-]%A7G+Yb%,?F>uf<[NOYG(tm*rZ6Np`O$rD^DfLGn+37fVHCVilJ^UKI=+>?CG=a*r'^*HDduDXvEdA=h7a'u86CLh7_7jgQaAoH;6weN)Xu#IJ4pK.pLPceK4$c]OL5?]spbnPRWA53%0,(/>Pm8-/pu#fo8tuDMw-$F`'4H#=2K0mwk:QgbJx;$FW7mw_6P%g(pVe3'YRLIA*[r.W99O7HMCXgMglu-3]RKttt6s1s?%3'rH4B+xkjH'qs]-*+qe*6D;8X8MT$3i`#+VNmj#;cqJ%wU9#[;dho-eqC.^x2jtE7p9$7i`g/&2:iuA3usKRY/cC2vT_a;GL3lnmx+IhCRd7::$T,29rSQRYK`$=qNh$UU%AwBpYQ[se(pbUQ%8--:$cJWF2:@xpm-vpX;>0KUMvm#[A`a`nR^#4IB8-f8dM(l-Bk02fS;Z,U+:mhv$mXp3TP70P>W2=N%:vdot2vBkxI:JL'5vE[$VUM;W&El0clJ[rG;[EI5&mrm8;HWG]X#qWLlJ5#O_s]:AU*`T/:+L=aAQYW:8KRtH'tNvl>6*neS@mo$:1S:k8-02a-Lg.Y9#KYwI_:_4ft%^8:'W6VoN,:Evo@2sZ/NYgIUX%^,u-IDF;EHQRV*.WU(8,(9vIO]TDtWZ+:15]V24;X^7`/BU2<9tfrT4os[f7w8vxI]lOYk>JJZOCwSrE+Z78F(9rQj>uaaM5/$_XSV%NLd=6#oXfaGEE>#:`0&vR4obgikIi7E5C0_[P;?nOLvj9Q-J=AkI6oO1U6(vs>,_^[b2i[JspqN$iD_a9&$&++*uD7F/Thr+U+N'kQ.$lb=/tg%sH7Cq5'^,j:^FiR>`up1U]m&Sp_`Ti2LY#F;Cs+;Qh)#f7m%[ZW<[$2cBqsCdbJYO5NY#S^*3fl2]+vjh6;Fi79-L`wO0L7YN%(dxq1vZ1nh/@:R.18p$EdE,mkS46HBT)lbhl`kmcEpvE=YodoVuRbclc>AtO%kQbmkbnX,lfvaK_b]A976PIU'BeI>?$Yi<&u2(N;%mLts_[I>?et&%sDgb?,Zp5cuLKl+sWmO%=+QkvJ?Mf?ngW'.(h8O_/%EGJVs'W-(a@Vnmbb;F`qVq7jdZmct'.6>n.7=cVCqUPsmXqo+3B'3u'>6Caq_=xkZ%HZr/M%_q[C3tZ_k-@A%`j(7WgM+LEmqwKL,$-#Gs'.v4FCpGYnt7G8]GOQT0[?9-IH@^X025JB=RGVU?3'J@<6&#eg/)7Y]E^K[4WXtF/0_/K'3hC1bq-(QTbH-Yk-,XOtljA6mxYJcgSSVQB$,]=cUnu@LeR$`5NY6TGO^L`tDJq`Os8O.'f'v>6>>`@#_@u_BlXJ7-uXn1Axlubu;^vfaASp#$d)mm'Fp8%^t#Kotka&KlQ,<<#:Z&6vjk_mD=jF-LZd.oUrmfQCKMF]H/*,Ste4jK.F#,>tuZExk7OVW'WF/i%P`JgcJ8:IU^$hGUJcrIWbbS)(+k:Bolfs*?bqjULnE1M+Pp6Cl7(pPGfL#5sed_o6FNU9Z%LPM^>[-`#R)K@iVfqC/](Db(qn9ixq6Dq0J91]kpu&O@0Gu+rle.8LPqQ`1&#;^Qm88%04vL)-56:W>wH?kS>eM1WhA0.H4v1YHX%/I2.J^O[[*1QOIM#bSlrB2NV2?T$Wh*RC:vY.0-mslP;tK/l`eJK58q,b6=&;QkH7tgGTCmEM.ht]sMV=6X0#e,/;t)/]NuT5Xgh0%cZ6>gE2aES+%F#K$pAkM7,5[(MYmG*1sG(g(2_#K:T7TdDX@n5I?tw9GJVx^.>#E.5bB'#OD2NiNEPk,%5G,B@/X`FPp6J5@&RmO/+kv7W7us0Xu?luYve862Tc1BEw9lp.8.w4UsM+l)>P)L#JZ;UlXT*MlJCkuf=v,7)htSP@As:-LMr>cUj7_PWQDKtch(/($vx;WaV@kP'As=#*L`9vv(BTp#F*j&EmRLM_']0i:QLMsfOqK7=,fk`Zxu*e1Bs9$Qano8e2>EqGJn)e=u05BeQjZc,7mN?c(pOAa4`xJl[e[O6s@uegjiXCm>_f=$u_xF/,lY]ET=8kE^h7?RTYansB@p^77I.vdcx'd=0PV[*B=Pp;NAsAC0I;(pthfUL)9daRJ1vu/Fx)U5@R@$D5&*v#Ta&sEID.vbE^EW&NuU%pw-a%PS&06,1)5t*q>Fu009T%4o6A*rrsp1T;6(LWCjO71H?CaN@vel)kNxuh&X5->=(d)SnVcp>MA?YKMf&.EA`Vth&9$DT/pfNT:AY+_Ebx=euh4Eu+%N7Pf+MCXW%_p:$)('g5`//dX;Nnv*xP`bunt,sfZ$Di2SYGY#eo1)exD1*q`Do>I88W:$Dugc_9Tn6u&9NF9@cJFTN%`/U;T>dsWg4S$NkGY#P'tLJpuG,($%gasmuECh^.#p4Q;S_uVa7V%]7Y+HY)rM%Oe_?[Vl5$vO<_R[d?:C9x]*H7JPF5o.:=dqVe=>QQ5KJ7=Qf_:e(JnhFX0I#8HgWD20Y0Ib2aVo7AGo4*d,W8:7T$r>uZDVK$oTAg4lX3:fW.hPtsM7.6XO49tpXPJ5s#L/aZSp'749Qtw7imj<3DZ1P>;6%Mb7(CtdLfCE/<6vdhXZH/ueau$sw:HLv6D'C#B7IlVar5vsOo*nw.r9rBrrpEg:,'//H0P)TWhuxOY#aK.cJ]=Jn>s&)EIWRvtlFUt?-6v60-)(3F6=7kTYSA3Wnx+>ipPj?VS&(Fhpfs1?CgA-XU]e.CBa#M3%=u;N;8LbfL;2i_aI^?mIak58:6Y]-#iScJjX48`WBLIKA+kpQt[g1'Ae9dE[8'Z%L9H3?XxA3hCC8D;tnY8LDQGm':%JSO+?Z.^LxKZ)[YGTX&$vllA[clVPN_?&@&'enK98@e]49Z+MX6YV`$[rNZ,-n8v9.&0j9BE5q02TL6_?trjf&5tldD54($)uA)6>[_W^Me7n>dog),@BQA)p#qmg[J+,kmsOI:f-juS(Y.(Nefs:v/g1pc3S:XKWumoH;Q$$B>xY,OUiD)nGNHr>ap&=@w,sf%nxT%P9/9mU?J>,mVaofHSmi7:]uMT^qjM7HXZctY-TpniGtXJQc_`nxd,aaieAJv5GifrMO%K'.$pNb))La`ue8ETf$JbZhXcAe6.vTOev8-3Tet_#;bMvw]/va&TR%cJ=M)o8KYY_9eEn9ZNw,9Fin9/K@nh,*_Vl5B:heOR.jk3e'+Zpk,Y#gb2`aD[;xk(bq?dF&BP8VrjZtH-Y;qAUe,mxLf4s#W(^BrA=#AeH^tMkWd9C+tvt'[sBR'Kcb7dG=uL4Wgi%V;qtc/SK-?C$`N1xvTSDG@YlLaWuNHq_'+Fsk8k>LS63?0:vZD2/n69(7Pn(0@&W@&GVQfL$LAo36]X6NDV@odf>Qmv2Bl3@u#PVer$JOJ;$G:)+YVO2kf%f;n4f7Gd2.mEmcR0.>,dW4xtCts%WlKs&#NWUF;7NlMR1X=vqv;__<;:+abhO6(VkUlQ,Avf2vaO%E)ngMdPH[bGtU^P&49-X[SaLS.nb7-Ln4Arkne.`sTJ&V,.ob&+n??`oUVE5fX,8:v1O?8v79/%5]O)ku3$iGr_o/.Mmjqkf%rhJD1W8F&>aGN#Mc;D)vNX*v0r9&4@/n=^KE+b2d3:(CpnL$>]LeJ)7n6Of2rl&NE/PSnMPv7I]S5f'&8,(u>.tuV^;P&=bhNX>?gl8/c#G:oMKfY@rsm8qlK+1xA%bCJSoEIo/?P%U+vd40xtlnQ.qN7+D'A0g;e:;@9$0TDmN>wI0oO9`KCK5Fu7XA-Xnmu`mf.Yf`8`SYlj;m)M4tNk(5QNoY#:mN7Hs.GF>0tmJ.vKd5j2bPP1YEqMG.gIf5s-a&=J1IBruW;m#g4$$/a8>B'WYYqRo'(%ks6*AWT.]..8EWD`Eed&S%_mWA%1[K:-H%s/m$h12eGtwwfM).wEJT$90gb-a=UlGle1#[NFH&Z`_r#O9:$o2LOdP-'mun+5<)D:((E7V;8vmv;4d^UU.1G$)Gu^@(AuI=tXLSvSI$14wRD@F]:d=JgOH)7pE9-N;6vxYI>E>*airKk1@n8E..vLSS.:N7uWM?(l3vbNq1LE+q7+<*H7tUb].L$D'YukYXB5)qq(;[[gV*$E27&#:'Xjor6>(OUYSb2VO2tUQ&a,.(#SAo.gbojrG%X8&r;Y#4hNB`b1C;oihAP/?Zp^b5;ZA#E`/garT5+#dL,*u]/9&qZxhfU[o?#G,N?=tkw7#,Cc9#vh2M0$:>8&v+wq<2W2PpdP4#ip/UG%(%l&0lCMraeN5-QAIg:38%/+s3I9v2n3:fq9g'qvx2$4QixP:[b?Jn>;lx+#-d1B#2UaQ,Xr$I9RmwkHUULt@8*d@r98rK]^]$$?G+/haED'L-fSq.6vA8pM>WVYhSSd3<7hIE(LJO*G=3Xxod*cnf,6OuIU.BY)Z8hT]/dDqSOSlC'-CGrQf^O-35b&4[1Oq?:#SN]V]pl/P$&lAnV4loe^&R%bCB&v_u[#+B7m/KYaA-5$v1aaOsYeAeqISdtcrZLqhjaup6FaKN*E=#n[2L85]4DkJgnPBV5q.(mG$w^;I-sa&Z'hTvkB0njwrH'>&P^2_I$O^_a.wgtLK;D@WB[`8oGYg;4(3b+$qCrT8eEdm%#/g^)(J?C+X`7xeo)i*a#,7IO+^N4d5Ub_m2x-kP%`Mn]J(cn6u>`/ut,N(3tc3GmkC:(v>*mH^&>cUxU+2f3*;?8/co-,KgDniLA0GKKRJDf5<#L8Uc9OMtqZY;oQ-#dL+ku*gm._tu0R%_Q5+#]M6.(K2MVdxADhKPaP$m)N>9D)U@oe^%f1gvY(ZKorT^oVM=xOLtx+IS`T'LrpOmW*TqK`bl@,U>%H'VXo5E%3MG=QVHY(+O>6]*RUm0D28ghkA9Q1I*s8qIhX#;Oi3>5qSZua*MN5LK8fmfp?r?gtS4'GW>]4MBI2hiBP3jwVB=58_T%*D@Z@c=c`iTnl4sZ$#[b&wtbYoDN_@@3orwQCtr1M+$70[jas/09$F_m$vT?.]N;>V*#`Rr-BHc1#-c&WX<8,Hg:_wUGu8-r_NN`Q]fI_`U$KVJ]=hlZ5b(D>IoG)Xf6XdEaRt+:H)?,Zf(7,4R%Wu25v-,0h`51O./#oFhL2JA%tBB9vs.X`1u*G@t1@:?X&/tKG(T5dS$@8#`ugtK$mX+acA4^K):k_lb'-:unUW9a3@Q--Qk%7->&vDJG;-O;-eEK7ThYcf6+Hts#6&HhpkOY3>oBlSbXq)(:JtU#tW;9v?Z0Ka[NF:-h.PD+.=%$BNpe:5d[;[*x4akN%ZC2m81pnbm9CS%Vlte:4UhJ`+p,ntB'10ql:Y*tUuWq_HXRR,GS0`NNmJo;36T4o,AvI@-'90vrdR=O1:(*8#dgoIU]]JDpki3rs6jZG$eG)JL%$go[&ZAOr&,JHrDB&E%+t9X5lK,:6Za2oLfHCfL3poY7#0-$lcrh@bvMVKT.%L%b'DLKCv7EIaX$GipZTX.(KT_V$9l%Wp:BV,uG:1#V/IE+LfUtvL9r+U&&=3'^#wJd)-Vhe3[1c[?fj[hT3n(lcN$3N`a/rMGq2bHSIqLM`^nHqI7xx4;X/bkW-1(x'h4YMNs#Q@&#qj[me=GOZ=(hf'-?Wo'nbr$;-wYa<,W6@kgfMYK'=+4)EZh:75JhfAi<[.VPqZj-/Wh-]4rUSCPtvUe[#B*w6&eM7FV561gH2bVpnha+SfER&>;Kk>xN7H-xf71SXSPEA,(f]xOs_8&q2RQA^uA8?ZuJDjRp`%CYu&&#:vgjt/m=KL2:S;egYU&CT#^8#1-IT.;=jV.rE)qTf*h?.#*j1?GoFAK'3YYs&3M,EKE6T#hRn5:j^8gJ'>XDOo9$jen^gNVKY#Ko+>u1S%_uYKqDJ3x#luLDM0#j@'GM?NP_r,;?S%RZRgAZw9duoZG&Qb/g?bjjSxuR^h5v@b`e#=6:IEv^xSIJ@imq[NlTgJ^8koiYg[bow^LUEAtV'cVBxtBWZg?eF?3bm2Ap1,C.CGV#*7[Dno`338l]m3b^n@gDrI`t+7dup*-%YAZZ#2Cp=2]TD:-CU+_uZe(+YqY9wF2sHX#p^Z5V(#spuJ].#hQpt=Ki1@rKEZ)gxvtU2o;sa5nbGSk)*-IQ@^uMc?lb(>S^H:C.S7Euk2LD4(9Qqi:q2DQ_GktU<>%`?E3J(/C7%F,/#vnM<8vIe-%+lkf9vit7c`8k^E-Z4V%+:>+6v[]bx+nv7xsMT;lfNB5GVjMWGkS]],?2v[+Lqo;H6Psa.LFrtSKg<.YcI-3m%:Lw_5e]k=c**d7T-bE##H,cQupg-1I;3;bo9lD&#pu:3?[0GZa&iLQIu;Wi28VO'N2OM&6-1+QMaPsD)JasGp5>ZRtNJK$#LIw$V/xV8V4B%t'>BheL+,k89BpYA4;$0lRS@w:js$hP%N`7UF:BqkAmclPnffhot4sZMjq'>EeaL2SIda4ArJ?(stljL#Ll7-B:ptFu^2YU0DbBCsFe+k/2cwmFMbdYQ#pCxH2D7,]GV5[mKqt'aj()2R%^@A8#>A+/_Nds)Gti,jJJCOqfi>0rK29F4M2mxF;>csugpULrY%d*OmP#_hoZlnnfRRD.$g*'lfv^tK-0&^4'S0ni'_UgAJG.&LBG]41#;iBukkFdbqcZ5p&l@nb#]1$guxn^5Q:#8l#4OW.E)b7q,M=I.oL+Lx]goatt)b/A(]r-^LH3ue.?Yl?`w3meKR5]Uj&rc=,87%rf-176I>buCo:.v4==S)0BXpuw_/TltW%`a-jcPtHX#B)o*l5:naJV<>TtpV,B`M%#dTb^;e%?r`G3nYPU[5fL&a*h6%SC(N2J?(Z^uFLtd]psLiqRtf:WRH#`-j1v-W0YYb[Jd9K8h'aG(*DuWW'LpC0qQr?6+loc^S?oLQ#lfCJC>-49k]>/;26MBi3A4iM_HGu1l.FO`['_KH*'M-Qd5fhaI07NVFSPqdrH5vd>n(t6j_4Q#$&2^(C^0-nkYrsYX43J^Z%vkfhq+rFc,gN@b?.qI#B3a[3<[r&btlJZpBBuG%a;#xH,x&fLYiT:rsU#1C_+VIe0Ln$8l9S]iBY#'FWg(dIn_ePIcdd)^L^70UEc?$PBACS5>OZTQan2fwB-LB;v09`'McVWlw1vADn%;#^k>r4/HeoU3l*Wdu'pp`(6p.>jSR7+O44vBH;2K/11K)Z[-LKM#vp2S1g[eQe:`L:kF*vnvB`wIA7@Ir5u;aEH4TK'Ma]6sxBY(D$Yskfk^$RU<R*Aar?w#4s<`C)nvf2n.@:7vZ_L[t+IPkPBY8Zf3.`o/.WiQ[;tS9I&BvPK6EV8v9*u?,eh[@uT^YmeCQ39>[5kYu7:6`uf5[+64f,vuJ/(R7DeQeU``93^_`5J`&7/luue?EVn.$xkw)-'tJZ(wq3,^*(X>K_T[A`&-&22(]@H%nsc4Vcaa'8/Pa&*S7)HM2v(*$Xa%(M0-J*Vj0mKjwuOOb>Ym<81v[u4G.Ewu>`P]%KouX#llwq-?xvcU=OmiJ8Skma`e#C_hpJ9-th6I.6S+^*>eh/:.q]V-FJjs#k@DTfZt/['&,=QRCxhmn9xIKueIK?tmdM3t_ReKK[./VZJtZH73q=S@[:nESVOLIKt3+B*h-?88swEe&HQ)>(6>5T'mJ&b]/Pt=*t1q?=+LG`q%++k&RiS#D(HcdvG-qN4)]dq*ep,Qj):vdfaV`TXUqsoH]uN8A)%v.iH-'9xWBN+$u5,csFL3A4?$)#()22#tl35^u?FkJCGArPX%8.`uQK0v#B-xf?hHCTTLi*G5efhpu;K8#?#sP2K2`b(j3v2`qFp*aE]t/?TIC#.MZp-SHStJ0#SHLXZTCrb6L-fW)]bqvA@cc5l4u(NT8.Vi=P$@$[Q0,XY5aOr>k11ZA1Zn^gUYWVWx+2$e3+Ig=;qZiYbsXl0m%$;mCrxVkP;WFoW(Zqd@XDaT7#=]3=G*D@Tt0.]ZsdeZ-RM#5AuHDkfH2J?l4Jk:U82e+hTl1IUhtwZ1prIB7a3i^=X#AG-oN-)1L,3X1c[*8Sx=vbv>7j:XjHp>^ZuDF)V%joCrla3NlJ?+rdnR@eStSReb2dmHC'>kcm1'6XLDl/v2Mk?a7FIe,?wcvg$Ak45c/2wokgb*nf;`PdNgD3t#Y6)Kw5/>#Skxx4uQtHYH4vC_0LRG*rF`asWPgk2:@XRYcdU*pk@=W58MTS/;VVj=V3*u`j_a*o-tZ-O=-(M.i)#;G%GVtYG%b`]GV.CE`,5wkfh)v1m=5N2(DY%,LT-ecf$G#lfftY&s/XQ(NE5V;W(LW7a_ZoPt'b9xngsjPn:^=Wu+jsHtuLfiFDQ.ppp]G8V(p3+0RJosu?U;4ueFb3_EF.?-HNs`uej9h:hSj>h>+5c*vhN3Jj%SIk$#MEs1%dl/s>jepmXB?ta1))QT@k8op(o=YsZU^;9P/5f*,q.:jqkE.^9^LaCqHX_3]UNKO^OoYa93`#nL@Z1xWTqT&nNa59V02Njj0=qK;q//#oa>wUg15CBd5o'Lc-dxUaUP0m+RPUu9:ix4`e#?>OUDBb6we+Lu@M`3etYqXo-:m1kDq:#j^w8u;ZT&W0i`'-cV^.rsM@1geU]QQ#r@^-xRUh-;Y].rS2UoVV&*;Z/$SxXJi2L(kGKxXD2I.qk,O.h+5=sG:t0-v43wUNQ1vtus2a(N%v6r##e`O&.q>9u>i%Ec./SJnV%1HVWXa?8hI-Qj^moPIL#/@2uw^EiB#rN%K0D6KgrXXBiH-1m9vZDqY[bY-af$5L0E;#$sf'r/ErQ/T:$lY)qmdP:^e3h[%bmgvaA(to5u4q[H-K0oHnLts'bE3uS=Rb/PEovX:P([E<^uxDu[cokl#r65(cC&B3Xw7RRq;6as7$^PLV?HQ1PGfo0vp:6vYB-K<&YhcsERHQF?@`pj_f.%7hpiZOaVIhG`O%YLmPXN0]T5ri0hlPXAO3d,?x-ud']DaAZuL.trF1-HVC3tE5^xF?#*7.fC`xFBQcUI./_x4ruc.mF0%%q>,#5LB;A/fN/ixQP;;st'Unw;E`0D03xB=k3V0n<2=lwu/=jR7MJ6MBK;Boel'7xCJJ:/vvKmek%]]B_ehWKPI=9RA94mRi5Dp+L*/7xk0XKB[%eUY#ZWI%kk9.^ERVx3YLCWYf?/MYpMl3&creI:Z/'YQua[OYuZNH*u<8`WPVq*i_Qi2jA^2/-_Dw%jJa%&'[(ZG^uU2#6&0bCM0L'O:-%A`v'4_J$vji)?E3G3M+Cck.Ls9$2d3U$;?7ucLh7jp+Lb[q.(t4.fqR,w?rD*u3v,^_$vPZlAucn*MT/%6,LS&Brtb:pf@K&N%?mnW[Tq1Gwu.'t9v>&<9`Q,47ZBc&h06N?R7Lr:^3`LhL>>+;fAM7-jtuK3-rg0A+3O@GbDmGC*MTtZ6HrC&)Se+lZ?l7nD,`MQZDa08x`,/GrY5h'>uup(JwdBGAQKu#VGJa#tuFsNdK7:hBao7Jh/v]2%(SSjt0[G>:T`(01qS^NEG;6f$O=xnXWtXKfN4LQ5]l?GjMi=I'g[bo:'ZGu;Qs7Ii'kon`G63A6V(MT:hp+LYT,'rF`?6P7j#JEI:E>f](:I72pAfa5FJY#@2#[snTei'CHYSRB;rsP+tU>VS`s`[g.kx#`&?6v;pH=re7%K=rLfeLc)j>gjeQUH=RF9:Rdv.C9KJ:v[2kx+`XWx$gT%kkCP[St;=e7[7fs5S_8-=J&1WCZ(2*JVKMkNd+H;tjD=5>VXVr9cAd%Qna%_JuQ0s(rlZu5u'fDCNZQ1U#mq^RI)b4l_=#J8qAnpQ)NtpA,?ttd=tH8$l`#36geXYj2/&'ObI7'T/B2]>#Mxd`a/nr:2Y4?f_G,(wGjK7b[Pg8v)IB7[]PEo7jr.Ln=J)d?gQsIaN^l@KA6Rdox.HPuD(FEti9FV-MA<9uAR@^s+8ER:#9w(ukms.(lq67uEg:>#GnBoeTa,up7^>@s#b4C#pYL1J`2#S79AXq;@rF7v/o-+BM?/XudeUb%[._$?8tu;+l6ulO@S7$#D%>Xwr4-mI.Of[NXOe&[75)7A[P]t,xwP7l95Y+LCnK>oKR7tKVj/BT9.-4Mhn<]<5Y<(nt$m&#:$#nWEStnWD=l3x>cn)+-[qa#3QCs0Y=/ebNoR=Kc#g@,.(:iX8;o@BtVK#&)YEVwhSKfTTJ2xL*U$RB'MIg?se/wg,Q(N8.)ATVk@OOT>9$NU&<9$(tC)H8-2-9&_GCb9=#siU(sfvlU;&o=pwt*fN:dqDKl6E1*S[5@G%L5[`5_T3$5HRbaSpT(S6QMx+8f#@i#_b,Ftu-,IKmE^L,%8@LBS2+gdPfgUc[V:X9QL*negHgMpa%Am8`-F[rK@/A5v'KbBQC(^17*pX2t^he]FqdhOs;2PVKgbksX1r'8vh4>8pM>f'24-4YYjQ-EABcS#v<6:`WWJ_(cL@cF%-wTOnDS[(qnJTkJM.w:HX=*`a/KXchM=8pB)w8XqO6O?KtVFxkYZ@k95WfeA=mq8vv]S&$)36=u=dNcR&R=5`w&/(b*R6bbHcEr_wXD:BD6)*Dn4&PK1rSu%&sbuCWkq4m-LJ60EraEqn(9s2QF]U.9#LePep=QRR5G2Hp9N7g?vi&u8m@3N+Q3ce,`JVvHrW1[soW75e$6h`jiA?iG34*9>&M9uoJiF.#+VJ@6J#,Nq)T;j8L^ap9dR=Q]*'tV)5S%=`'v8DTRang)eoUrP,FuT]o.vNKjSgtk5%#G4%5&cl];IN:^jm'fu,_jM)Wq)7(jtb_'_]Q(LN[6KG$?,,ULl[DagnxxauS)0L>dI5d.tl;I]Ix]Z(v23)6v@>>[#j)8YK3vD/@lnl/ukZ=tsPQ-td6DMLKboAXa_*3-Zr[CI_)(HKpMh.nZkX9q#J=7GR(m0:v'tME(gqe3vSfoLpvNX:qNKFiTJt;*('qPS.X6Zff4c,Pde`>wk;],&v(qf_a9MG`<*N$Q[XkaQN@Z=&sATD-G2;a^c)&*t7IGri@qnA)KtqHeeVob^fkDt;)+Jf+.L*`Yt&]9A:vmQ^IsxMAV7?nn]&hj,f;]Hl:QpwGjtJSPDHxt[R3u388vml#Bsh@Dt$ahW/t(ebXIr/^OeDuLlSpMJS.?Bs48BI;4#NG=%cmrKQrCCWFV:+-ik%4eQ<%U,7vatU:q^*^[OsxI=VCpK2rLbB#L)?#iK]WJRI6*a*`XuOf:g:FC&9I1KXJ<%?nr8(O7w)fukM^+:?g4h=O'8f1tXV4aqffDRekrJ)(Q)pXs/)sQ1OlNFWCuXXP(tY9iFTR%Yu9;,u<)T1B8VT4t(E]Mi,+TmAf*gsq9vA;dY9Akf[d;xJld<#54*9./&GP8uaUGHDXKSrKS:)fsE77uuHl0f>?&'[)$qc'L7ewr(6>g-Rm.47vU+ja`w1'=c?&a4t(RWH`D=6W$cP8Q(xYjkof$@?7cMth_=$'#OE]#72j/;rrI7meI(21HtV-?i^RYk,iW50Nk+Kq__bi3rO)u]Z>*dcDrH@]a8vW/_QRJV?B#=T[J?RRu%pRJa4-]q#GAAM'UcIJV]4QM.XH9:u(03]p(008?b'?R,;,AFiPsIfuU-ge%b7I_W;&/?g_wI4rk_w.((EQrqf?T^AK+u;Vho>B7;)X$0g?O,F]a`X[7`gge9:$pu+PB8KZY^mt@TGB-.OE1vw5E^jbQ`NE*f51eqMsubb,?bO+g7-0o?9v9v*7v3K'kpUl-gfBTuq+R-N=DD6qC$H#R$vNpOD`92-goa6[<1$JP%bJ`Jd6(o)mK0f;Gp>bc^s-.V/J/)Zfrp7K[a*K#<_cU8tqEF59-CnP/tLlnUnY(>##^kf#vXMd77Nr8bAo(u)O(u1Kp'9%+qRiKc`pYfXu+?],tc6W1gN&wcuH@oI:Efoa_ahn*F:F)N6c=mQ<3eLFDJR)AJhiRrQ_McP%dlQCW%b-b.rkg2tXLU)2.=FE#KZC&+u7+F`&X*EQbh6RVAdlGa%4I_41ADG);Ol(1WM-LF(Bv+[)f%/1;,P.qw;p.seNCfqRsQ`*?w4.LmK=-Eg2l)6A&H(#::FrdZV+6-NGBJ'e.N.q^=hR,:onD=lL1UDLX?e7sB+numDTWh#59cD,@NP%nBf`;xTE)L0($xVmK9Vp5ID;QB8/#Poml/S:QnomEtvn'WNlJrcuB7q=6x&q%K*16tXQ-1$#7sVY#p-Zd'HNl0-sIj,(>?33M`9l*r.plXsVvd^si=1;2;[P+V2PQ5ZxI&(Kcwh;-]s7uuZ#XAkx7PZaGJ:*rkKjoFvfdXu@xp&8'`ioo/;8snc5wnsPUPKdk7n_o>1q-oLWMwtJl1%amFxJ)oiMwtX&9iu9Y1AVO^oweZ6`3VfO,eeT-3rm__LU?o*/Bu9=n77EV0MKgpaX7eLo5Hcd@YGbZU[**Axm<&&Nbuf2/42&>P.UAvQ,oawoweem_Sr@ibm%G^'An8+1.n*gNL,Dbq:tbhZ]cvqrZ9-e'#Xi,/qK$o%3tV5HQ'eXpIOpH)6G2ZV?U3+nKftG%Y#MD)BEUUgTi%L@,v7SL@ev^p$1bVdZKLX#E^_Jx/u>r9JSWGD%'j5x9ATi9#:H&ERquruEthgB^*=2h-$f04m'o8c2tqL:1%fUiMg+NMFrtg5k`-(Gr@m3m5(avbhf:>E,ZGS/kfl0(VZ-nOmuPtuLKqJiq/]m8hj3h7>luc_6TM[m_`Kb`,t^'K^#q91NtFKvJa+1s*qUqmJpJYRHVM7aL.&/),$JAFDOHh[#siK^sck7QV:PWiB%GJ@2na(fq2xS(v;K/@OD2=_ETe:NtaSO2^^lPrfA9UfuPZLm<+wZro=J3%v:ol*`hj%_O)2_T9AfE9ZH$vjdhouL$/X#EbVBAZ'4PuDsnwt'IT-^rnZG`G>$/(bVd,q3iYqJa>mj:H=gfEaUaqdTH9^?b]N_-g(aGnVcpHr(nqEr:8,`jP$_R7lrwA]O36FU=88=Zod7S7*%;Ji$UCru;hEK`Sf]>a#9o5v/.Do%bVb:dA#@tY2gnLAXP_Ac^@rQ38iIesIY]s5YHZmamenH%#m4Ut5Uwp`#LF(uCl1tZhsJV.?sZ[)'rX^nP$:,[^vno]fNL&KVfcL(q]-/wbhoRk5fP=Xus)eCHR5oQ[=%bBL'x%]5EujE%CS2MII5.+rZ'TloB-gZf@1^j][m_D,X;/o[viCV/53-%`NOfeLm;]5ZDZk/2^%%ZeA9=@tkK5wZ7u>cp'LoF@4s_mP(#C;)vTG71E2rADf_6bGXu.cK:tPHeot*jTCaZXe,q:,7_cX(@'#u%mT2`0)(V%[Y,q,''2_8$$Xp]=g,72;p3d-gqakl8-,qI`xEAITp]W.1[wtISCU*i?Co.>C&#w[ppncmf8tTM1qmmVSfumHS^oWb5N+ZIYXlh7OTrGb=05ZTE[UaJi,q%>heud>+65_4bifB%hJksk)KuQQ/d4_86%s)-*&L-6eHm(lS1OuFtF`OMY_)H4L'f.]sou8oKe57jOb^4Sf-m`,mftsZ1(vO0[?rP=.=)>*Kmu-`@xtEa6GrlB,]k,Go-udY-e-_5bBa2<<<-pBPxOi7?,Uij]RIV;*/vbP(c7Mt]hJ6xLb`v@xigsCb#9.&7W/sW/0nKA?lsuP#,tdEBw%q;P`IUTp/*sxa>-LE_K[hEDQCn/>U0,p,9&sj>hI1)j%eu5Yp4J?<$nN;bTw$+leu,RHX._WHn=-k4j:Qg7K=Ui.f1_-URsn)^;5sQHBOiB9NtT$TuKKgMZQe*+j[EnDtA-tF6R7G#YqmPGWd-ucvrqm7`CWburhAPG*c`AGqfYYc@cu^6k0nSE*P7)%]FuGLb)k4?j'LQpaiBIA:-C'VevK1FuvoYbmkJTV#+[j3<(a(To%kC483v4xV-q'*eI_M9JPu^YrP//Evh%v3#]kJ5VRtu^TaM9tj4o&4X*@[S#j](U1_s:0Y?i5&$NIZp3uuq&I%<=LUXuVxcLKLr$Q.s'=vJi2B-glfKx3@>1G;:B`wXM]_u't>`WUmO(x,Rcol8R_7dum%BXA)+N:v/,HZjq7X)>a[nuKxg>aSnQR:v6SK.L%^pWZUY0H[=3mM%#o*tt'8buiNxQT7^K=^s1/0)-AfOJt>--[];2+%UIp4-WoHGOhI5d29GMN_P`3]]82d[xH(s]b>N?_w/SRbeB4[fEi6vbH@Z3x'1u,7ho[oYGCLlx,I@2j51GMX<4=]3PJGNdd'#XvitXV^59:uA5nP'Z[]J[_/jk/DB?U[7+Solv#=X74wrW1VkBHt.'W.-S`Qwku9>A79$a>J(vK[3h5-=iZS^3*T`97Ku+Qa1BsXsi3e_RdU?xUFLotH7gw$t7,v&9Qg#CrUm`)2vKKG@JuWW1bUjh_jhcM77vvZYag%1D<_JeI_Z$]hIv?&5u?9K+iVBqrkWn%+Jls2*6Zwq19@xY*B?Oh[&eA=tk`*B0#(#wULs/j[XUrejsI_g>7dK'Wu5(o&I(@fLK,`gQn>b?guHL$+c44Qbfbc6hKD@u1q3VBrt&xHk^SnUun>&7.C,tj,(iqv2Q%]kb`fC7tJ:V34ncZ*=72+38t/>6CsW_;:4>joK>_AM(D?5Vvk;A,g]8`H`W[jh,vEPUlAdv@YKqSZifUp]LB:bv77HPVf&*vSruXL?Ra`34Qo@sUOl4p4@Mb/P8ujU`5(kK?6sY2K(qdKI=aZ'?Q%&,Q$-GKuirLTDW-[CYg^:*=6WiDI4&o_8=?<1f-v/Em[Wk?n4vZ,$mie44]upG#ajoUkWPXnctN%Z4ieDv18&NkJS%RW')v?XlSfI=?ZuR_]f)2m,G2'xgtL-0PV([+FxkTc#Z$r]uT2[,#wfJmhNtoa]nI+UWPpkWGxX4xR.GI%4lUI:#i=@N0SIRltb;rFbkJ)QYv$n9>a`kd+Ta75ZN+jbL9:?l^j*J%GqTEE0ntCfsM0kl9u(s@9MLTd<7d29:2,;(Safl7R%8CAw'L^F@a_%PFrOI1iqYEWQICQ2/Csjel/jd(5vVfO@pUENK7o[+-5'VcR<mrdk84I+U1_sT=,B1E3S:v_cCIJ:g&%CeHnDr7ZU)d9/02NA0r'$`-c;M0L8$p_V-(7Q5j;==G@CvkMgp&]eU/5%CM0%Z>a<===.>'mH[kL?'kl9OC6-?pJWO+YIuKZi'&hm#w?Jd?S>7cdk>.rI<G3M?MmwklZYtcB'uwKX8#Q67LQBoN=.?gu'&5uMT@-?h=ZGZB'9N7>w80sO;Bjs-[t:Ai_]:usEK^jT*28$Yv5w9Wh^[u&p^]3Y-H+tUt0QA>ig,qJ'-O'HstWu%^K^sP5V'&^p'Sa[.c:QG*eZK&W=1ERDI[3FnPQa63FVHF2;.L%#3l=xjbtcvN'ZR%3fiuA0#'Mu*br(]]-W9RabZR%inusq2/d5-DMT:uPWwO7o#G--;g=kQL=JRuO6&S7xh4:#^'aIQD8hFM$r>QeR>CDpg>c)C@h*Z7NZ?4qG6Mx+Rkg^sUm'gfpe()(L-[,qBJjh>u-*rH4`c%u)RNYd?P@l8NM'e+ZV:suGIl&a@#`vkn/E-$PW2xDV)qVt*+MMs@<#H?n*^Hn6QFZtOcs`_$sB*o$.M:vL+7B%tgUHH*qR*(k,cx=eSb-v5c(65$K9@iwhTbpgWF*6&%1]3@RWh[^AmYeI<@h6]RGHhH2IErVp8oi85Pn]XBtlBVx^YX5)$SIgJ^K*3A,@#qL(gA4(*j-9M&re##HK[6cJDn&sE>eOGwoi6E$)*ZBHmNuVAhpAF^O?:ncfu:HLclSSB,r4w/D)vTU6J[h2tow*DiUW]ITPB8ur%OYL:`Ts/W3q<$LK[%LrKU.l<]E:9N8EDu-Rd;fggqUrIHUv%&?m)*//8,W-cjtGj(N-q/'Wu-XlRf/Td.skGH`u,7fpth`XELso$C2/1=ju,mLF[aH.&m_8[&QM[hQL7&Kn^j`FP9$(9FF`;qFE_MRu')*N2TNK+v'%Sr-9@6;VS2&UDhw`fICA3ZkT@T6TEq1/vQS=QeBK-;6''5sK=k=^sK5DZ;@q[G4e.tj/v*#D-(tNd6v^[NucCHP.qSr^=nuJHg]GRIF_T8v.C/xHDV-$J07']3t>U,ofu9(UfudgJWP#1KE26>)H%/mIk'gr2ts>;VFn:JuJT0i8eJrd&?Dw;(B?er^XtIl6^u'XTF)jG#gAHp3USCDr3dc2kQufYJ/lNdsUm3LUGmrosDIWCi7x:Hf=$lt8r3nr^TP7eg<(ob8dNM(e-g)a62/HV:>0Vrt/D,#'GV/P>X7EQ=xr6ev656Vmp4UtJJnjAGMuccvV,(#4Pa>W*+I0Dnf+$[8cFft4L2BTxKFs(nmmL;@SX*piOocY[&@wnVurg''^`UUrP^-IXgTRBHBqZjVN&$P&;I_s]sidU4mHZHaJm]?.99a-+iko6kXHZu0+r]R+Tm($Uw2m.#(_.rAXJpq#P3eY$U(:bVYED&(I7ebWwo>@7b'B[hC4(q2&)m3kPUI['X<6q`9l;8vd3&GgJL3L](I$uk=wYD4<$Uq0V1o,7G%k=Hc7L=mgd5BWwwT)6lj019;5#/UZH7r2KMr+[%nuAilU^ov4i6GvD[_:L3.19Fo5A4ADHvSc(h<_DM3wXURugNkJFc;xc_/U-bUGVdg4+L1WI#0*Vnrh#BI#^6A%ubNlg;G]c>7N9/Ia2E;gE%S@a#9L/*-t0mBOCN=<1%[O(LDv4,HPn[1C*a:@p5NJmp[^/TsqPAVA1dH%BDA(JJDtl&98*v1Z/hu/V&0H?'QcJES=:FV4%2Q,m`:*1H;A*F[3[v;-`aE`V3(PsG?@ra#%`YL0mJJf_'bg8q&7DM.S,QY*'c]x8/O%BR.m&/;q-Gg;Mth=u)7Yf#N<*[,mS7FI*@;B%YTDRN]l[I#e.BwU+?*.WojDYnx7--H1>qwi^:;T/fwK2VbaO6%)Xi)?YV0notxx##c)sAQ]q'1M%t[uI8%>UnRke+/8c$UOo&q*A/t0u=PL$4tJ^4nsqF]L`[3c'$f3DPgGKLjG+2TrQ5+jHR]t_(_*_HQfoM`^Ie2ohIU4^j%Uur1+;1rHW.D39#ZSQuQpF7xrOv6=t,^P9R$498$&958.RC`o)`)m`alic3#7N4IDF4iHOJ]#DjDLV`2dvN]a4LAC&iptefe?<<1d6L6qBrcqX[XAe;`Sos52ASifJ%=7*`;gE(41^m92bL;@0GJAIPu99L1+OoKamshW**9K@hAS>V[jeaYIlVq)roLY$2h6f?Bs..cq`K:ggfE--H+iYIHu[Z$Mu/_H8vsX7EC:M2uR$dU*v0;AVa)n[5:X,Ibr7CGQ$%A?lANI,'`)GLk[:T5N32SI8lh/Vc80Bn^5ussmR<9m[n,ntw)?US[Y]quZ`nA?kgB`<@rkFVr6^_i')Uxk#&U(*&rCTY^K2D<#e^Ku?,*x&)enH6Twx:?$;[j(0UBfPD;)['lc3tC/7g(2(Yhla=0+:=hK2t?=RY*iY9Jlu333:'ON3htHLt*v&xoK,pF69vtLhOLPC.uXMQPA'Jxhv>(*h7-(Zl'v_=(ip@VYD`8IJZ1FcLfAs;XYu7c@?LNFJM@=v(/(0Ta*;L84>H8Uil&wlFRa9oXpmc)d,a3Bv1q>Fr7IJH&OpDZs,V:U#-h$AHpBkp7xDJG$.L#BTI^]9+_u^oOiuu$aUk;SUfNe7`mr3Mo/1Ee$vd`[$`s.N&c2XWn-Le4M?so8`L-,cb0%l.P_ai_^SubY-wfu&86Nfq0Q$)8tBrOf%ck1.a?k5[sQ%&6ph'eGD^jobP>^^Qj&@N4,1O*-;*VJWwdPT4(MM#fKYP8+Z>(.UEF78pX:[9@3j:u&%sE*W=3Ihe530In3Aoc32+-(('tu=LCN;nKATLN'Q_k^E[^dKq']#daj=S6vP[,upsMxp;jKXWk7QhLuSKv`NXnf$Lk'Y_nvb0[K)GZ)h.Lj<$=YF@#1gGl)?k2dsKSIgRw?3Sc?n.DB#*`8PT(9^0jb?Q,umK_C@>3w=8PuTN$4H:&b6v3D43$cQi`hd_9kFZCaImkbDTrX_##F%Mumn:%B3Gb14EVO-]ZTg[j6l5(/lXO?m7t]%p7N6/b&qKI9eFE/vuuq?S6vZ^W@^Lxwa1sJS/v8@#Fi?s/qmKD]ncJ,U`a;;q5`4Idi1CGEwV0H1:uj@54IQOP@=i2Q-NUh:h*w159I6=j9Q-`qZ767U#g_HR/rFOCK0rT_kXY]o%3L+K^s&M4U4f=^>kExs>%*%F76_g[7[r=38@I./U['T[u,gWRBD4Dl&)_-:X>v3vSKTNH4a3om#'i[EfK:]?,#=Xu7TlrK8L'NI(a@@B.VTPH+,g/1r;;1p6uLbV5lSq`u5B6`CUCU*/9*a?a0Pl9)ZkHCKYw*D1=`)/9+B-37f@g,lqj6o7bwxt;_>#gR8ilU_tec78],C'nU;'3@MCAJVi>).>3$kSijh-_s*d=-'(ipm$N^>QE0n:4U2p1BN+?m#v?OVuk)bGlH&(iocQF2v19`b7M+jStK.e;QhpYg7#1Sg9t9Xco0S`XHE,fB(r&lR*i#=@kT^K8uJN[hk'7c;d(`*%XakB5k29D;AQ`_AVhQS=NJ0e4uIkj)A2mc)v(saC$ql/pI_n[.aKA#7%2t(M%#Sq3?NNMrr8Y?Q%+?1Q';LsQ+$J2mfHCM9v@uBFM987(?korJu%GVbl8YUX2Nn4l4Z@d[Zjpd@`LGEtuG;rmR[>cmXXJLbt2Bo52+-x/J(VLeNnk46Bep'KGw6-aK&b[*&-XB6twfXLK2%*@aR8bjBL]fU@aA8I#kF;lm)-h;qRq.0Ch:Bd?trlgfk](U.U]hu8io_8%v7heM-_=VW>C@sVB@*RTGv2s#&2.gYT6&Ph,;>9[a4_gTZeX2x8n)6#f;/9qaWnF;fBMCdcS^Cul,(OGu:l7SCOS^.hfAn,('s.<@vhq:$WfE(a.`UIjPX)#_%Ac##@0K]Lf+.n@(mmDrQ`*S6>*wYS#oqsUNTpoK1:)+6YbXREW[Nef2o/hiE#qjeFGHO<`4vc==d#[De3tD1OfogueJ9bI$Z[;>J)vP3=omZMdo6w&(3v;1b(vhcfOnd)rN(J`j7ngi%.aR$g`dj[e+DH;oUG$k<(KosFmu&dqQ4-pR)lODJ9D4xc-Q-2gi8NSWdpNqE8A>34IifVBh*o-gUqCa,I^75];iUcw8Y$doOJ7R?Ul(+CFt-c6ZVgmo_ailCQs>WcSInQG=388W$Bx3o1`vtfOj5U`1G?KI9NTKhN%7Ys$?`Na->_<15/Eu45eFYcf`9QejCZ&m%.`1VnC0t#svo=Wh'=C`jAQ@JKo,tks$^e#,K<@j86AO/k9^'U[^CCV'nBdUvi2T_s^aOH>B8F'2gY/bge5U_Gcxk]JG`4*72rrIWQ2%IX/up%vpNp/=g]v/=M6piC:'kfGvasQ.C.10<6p1iGO(8?I=Ght1GXRMxYX0FvMXK^s<`4u#bGhe,pbJa,kd#kL>a6vn=]vSg&R>+;,Ap>Yk50u^:$s&g1e?)-qsL,80;pcu@O1KiPm61p,sfXxj7.:F#6-X3=bE1@`nSJql3>w4%'G:cNUeXa[#LEQX0:wC77O-_u`]ki+(0ZT%GRdhJ<9m%7NLf%>G[K1sd*CxE[6]HVtAmA@P,@Ou=Xj()E1TIAt,4mNK:ZvB9'v]/q8itQuUm?cVRr*U2GuoCs>NP.L*t3Bjl;wo7YgCM0w5CnW+$,.LmU`n4?Q3ktPN`tstQlu2jLq'*&m-(PJfx9v%&)QiFgiRa^:UEK)ff)BtNBhV-KRLkF3&Ca<2Gl4TIxQ*OMIukt^Nj+91?w>qXe[LQPc0@eWm7(5;bP-a?EJV3h`xAe7jkKgs/RF)rKc;uscCQdv&u%d8qqqOY8[RJnrgcQD)96Y=P7r]#E?Juj1M%1C)8pnT)xbZ.Neq1CMnF[(hKIZ3BB-Gu5Euk&*[`##..:bJCa;i%elbdm+&reTH.]V6;etvkY4+ht/GGDn[3P;7A[2`adN/dKX3Wcb^E@[Y7L0;$Cn)xtf,FFMGI`&InRw9SX;?_*2K,W[]x'3uvx;8tYfOhkp092a`_/ATt:p^`D@gXdO77riWs6xt)^Dfr32m++$_EXPb[3][:o1*v'-i'Lj5uKg;JAigDI*0K%Mlx)]+Ej2;a4S-bB:J_2C`4d1>bRm:@[8v3^bMDS5@05KZoDVbhDW$(0Z5:u]c35TbfVvp^NLrCNO/-qbH'iaWSJd#$t>S@e_6$BCbu]QfZ9sd8k28H5x9GN&t4L1A04HoE;/'8tk:n&F5`k8[(e+ur_%`$oOtMK]b3)(rUX>fknxUvLLEV+rRtZ`(pldoNKur`uuLeN]a-aa?YbU.LLG0+vMjOgK&rqmR<*.,Wvevx>,N&*md6fS9.4^[=F/s_aX.Ikc^iISfbd&VZ^:d@lY.%ZJc(c%'JYl>)okuu8'riA>NSx@3N]d4vv9#L)`5@Z%B5.?S._;qpgX4BaW^Ti$eLaL%l0:?^ma`sol`ib)3h^N&4Zq0gTOe*,44=Fb:WGqGkS>$Zm[4`>wBEmJ8*$rAo'xaK'u77Lx&[4U[$hBu-Kp&1H3S,5:W7;6=dh_s-x)1-j6,:X3+D7194mkRS%m.[GFUmOw=X$K?vp0Lanm]QL:DYkIa)-&H>0CCHYWI:*g0m(:0#TPMeT(IqZj06r8_uvtqZlt'aI+#7/Qrgul$7/QN,]hk)OvFp4@aOpZS+9vBilsXmN?,$^1&;,RfkZZ;f_J4D%j_3D@?@Do'_N4oGt)7Ht_Cipg('iLK;E7@$Nj2ax5TKt5%:veWK-LHO/AK$+wQ*^6*.mvJ=Pp`J,,L8;Z&U?d-2]tjA9v@roO#Ff_nFTh6WfrXDSK0AK[@sfO](#6S$v6H-3IO4u;p5N#l=[axcu'1OpG1b$L)Xpg,qd'q>]oe)S'xEG&a8mEQ`n8p?rj,;D*R4`(qTAnAH&Q_.Qgv2_#=0u3PAO3]$:r?3/a`&`emrJK-(C]'bZ9xQcT9L$+8CsD8(P(aqlbA)Ed=,EILpOSLU`MYsf/lv(t#/wTFI#>(]QCaKQN:SV`SI%Gtk?kYL3-EIf'MjpOw^-xrMTbK]qvqu(+<0m2um2Pp#1TbSW<>q5X)Q#:S`rQqWCNWi,wbm*F'(sM.QI&%glqogcZ#X4>Y[4a$hZ+)w;Bh7)H]SK*Mt7+'=i#Xs$Z&)w4COUlsfh_43_Q-Y1J8GGi_%Z4*vV?3]%@O@.ipRVQ0Emct]>E2uFI.t(ET#F)f,V9Y*hcO57)]-T7XT[HZB*lc=U04CWE.MjM^?tZ9vY9E`:c.sea^6MJ'fkfn4=^8G-Aq7a6W5Z0c=*Y_=YHd7J%ZeCsP^.U_F#E>F=mcT_*$ANHuXO0?p*g@?Mdk^fl(4A9Ivh9wht#V<1;Cr03J&lQ;/KLL/;mUe*0-qWrgINih?`'WI^TN3bv:lqO%cKnsWj)A(a5Nm54Y=v]1Uu?_:&f,$=[-/WcI,CZQuP)dEFe8oSVG7gg[2lPq,q.hE(aD#G*q%w%JuB;n58?^URmx$d2RvpX`uHtG0uJ@CLI)r&oe=k_7v_f/4Hx&FVfQ/#B6W#]f7XlTtm-Xsq?QuT%-Fd%*6r>Y5morX.UE_/1vSKK$U64]HA+ql-vnA47,V5)@V7qUMgBSi:?roG1u(aCxkI0S5v;PU:$:9gX='W2]lnZ&?5FJdY>-ww0.C2S`3tDPY69rD46?VWHQUH#+^YrAjtpvH>`ZU:,dVTt+i+9&?UE96>6U/k.l*nM-*/=ibNNEPb&F]_-L*3/Cgv*DLlF$lsj`F62i[79a7:n-0sGEWbL+A/_1Hk,&_FH4jbloMMsem(/tA1a4`f_=%OwV=QqH1k-Ta++B+7[6Z@tBo:QD#e2F)W-R9rJDh%;2kr-heq3aj%o';uthQ@_?453-Rl=dA).Z):5HuWo<;=?PH4L-/^ICM59b2'mtG=tH6OV-6V'.@@=P1Sdl]u'>iPa5uR>KXRKK,Wwn7S71CaBn#[$2(FbOj)I(GYXESo)nMEZC,3G_`3;[Db5?&E]$n7l[1VsHn&,3mo;RnP&au&$Tb9+.R@prnO_frbanq^Uw/s?i=(aOOehJ;IQsE.`0P%i]bOpfMlMJ?Uhh^4t#90uMO'bowcUk[#gGclF,4n7;Wp4`xkgefq1FmaeF%K_#iT27Sk0Xj4=*%g8wXWnXk>C#x]LJ(ccT_DqR(]#RjuXNaa;K^k^biVwp2c'>I4=+4WPArf8KuGTdA,Ec['-@NIO7:HBr35me?S3OI6>rQa83d&XEl]12c-@=@J*;*an<,4bGXVx2&%PPvG&Os?QM<>sII=sj*a>'s6f[Prjir@`EhvK:Bl^8/$3r#EEv/WIeG-tQ#if'ef)(pa%%=441fKA$v&Y+L4+j+YlYC'$`J=s_aa7N0etD62]w*a,.,:gcUT(KnFe&7A&0YoUuf<;>,r&20$(be*dxZ]%b#Vo7u>?]7692KB]RfUaf+Dc0.H(46uv$PSp3:vv#LD#;Jn`1'Pepc&ELJ:N;]HGbubGP5bl,h,r)N_scn%%hGHTmnsggb1Ot,&k@;?7Vn$#4BVN1`hSds.fQO9h=fSlt&ME;(5,bb(dE'`atW-P;mG[ZXRL5J7c_?$Q/1P10Gm[)HHbV5jpM9_<)o@ZE3o%r@ZTB$`Nqx@EPj&Yr%%T2Dv24#2/Un]3H]DltNJ#(U2w1g_;]X&FYq((t>)Rb@%(k66LR%rPu-3vjl-mLaMpW%'J;'K-aPp)+'R6b&%-*tQ3J,rxic%an+H._]BsoMYVn]V[?-xX/1E'vdN`BZbO(1e/CoE(5=Rs=`5ep(h4>0_M_Lg:A#dsQvf7nTc91L?KIhtl&cB-L`TO7^o($O`7'Ohs3WnSn3HG[<6;XH;Erw-t1s^u'siS&5FSGF`p$/3o#+Is7$N*rL%B2gLi>g:Z1]2(p@$[qdmUT>+?`%QrqF*M.@Aogms:]I)D]m_a_Nr^9kuZa,R9-0rf9Vfp'e6&cO66:&QMR27rs],f:PL;?F`L7F2tl?.L4kg]^CWh%$>?U7IOnoSCC2*r8rf9W4@CIbfHn$:L3E%t4mkF#&S03Y[$5e7h)&3.ZnK[gN.xV7sGK0h,sW[-ufIc5k]jV8*,m1HeM@cup*-tEluZAXo/D5L9dUaeK>Q3vokC+e,A76?]=E92)v[l8HJIBLn4-YEjQAI6x48*qv3UT[p3&aah%EQ1nak40V1l/:VratfeOh7c=3]Y0>>&k#=r('#p`7<&MxMrXM6Of`TYG2$u$2h%rtg0MX?-^nhKQWo9IVS@rWU9['G>[$&0silSE+Sud@8K5Q)B6,:9V$X^_lfuFUc%&.DAq_T%5$Vpu[[cjjFsjhMMm/vw#'&&1G'pg@glXnNMUEOun%X5qA)bfQL?r-`0W^`VN%P[%4n%FsT__@h6Po^C)@FnTGVJx4F^cQL(R8J]>cr-&6[mU)@HfN&-3)Q*J_*-se:jgp.)MUGCF)OI8DM^ABP34jR(W_-:n$'^bvu]QEHS&Aci_]1q>s,tj]Z_WW+)rK5hT?fIc&/:WgEWu7L]XUhdG'hmv9Ykl[/.LlSk0R*)(U.ce)S-a?F+NmHt>%n<[i_02h_&tK2or_/=Mik`&NbtH)9AOq,R1Z@9SU*)r3xHHbcg(.%^-aJZ0(sQC,RN7%u:E6eRWn&U&Bt8'6=/Gl7^;&Bjs%rvR*1XU&52sNZiLr:80wFK_5SaDFCL[qb*(-wghxf1c>dqwPm_g4plOnSK0gN.lB-LcxvFV#1g:5B*We/_THsATYR-(&+P:#*pp'rFjA]VfKO+VOfI)jR5GDnXuI52sa9ES5S+)u]dVlRD7*YsZG^9pun/ifiCbvYbdx5CP]l_a/-INf'M]f/HSLtn6C86UnQ-SSwdS:$VG)bk0H6:NFj]UD.g*+vQD$JubW#EZAwTOnt3cU%,Q<&dFIlidfRRx:mG&`j^C5d+mV02qZ`S-s^)PUleQd_uQ>N#(Be$Mu8RISm`.WlsN8Uo&rYtju5'-=@M==(6Xx(LTIQ<*d'n^+3k2D25sTjdFg-o+L6<>>a8i:%7JZCF+U[o%m($eqFo&[hICdN5v0BTRNb$Z@LOC3i]u`3a,pIWaJqAiw,Q)@:v?N%p9lvB<5BYk.pg4bs5P;E8MatSTLQfVoXu]+f1w;-S#,S$sJKLIEKF-/iDZ0Uhs@IPNUe&W#,)G9,P#vDhr'(n/&jT&@AkUrJDEnc=DwK>Qo;G7SnKBIF'Pa`dO;Qr:*11-A2LajTij*B&*&EB=.q(xP@Un3ofE0YL?xR9OZlk0BM=vk=WF1FZS]=Ud&1J?'nGavFXFL15<+FB/2^U[OrG)3`aAZ)J,CT?lnoK-bK;ehXbh[ikLY*O_J:]/npTWI#)W=#k1?/D9#9FA(s0dM[p,&:DQ.Af>tOb0Me0p%0i5jPju?p3(3QbtKdGXDEa#P3x4k.*euctZXuK_b$V--uVT^v#uT?Uf`_S4T3JMM_r(t.h7OgTP*Fk3@JT1(:(4(5oWs@#G18bT##,H6ZGk8%s(VWB3_$m-8iMWd[NaXUm4S4)0O?p&5=ql#5qgL35_cp<$sMrJ%LkR`*dY-X+-vX'vJgmTGb>O*lLGIvh9Yau4X;TGkaYA;^i7'/*>Hv+vjs?>V-ca@#)0:AG74V2]]8(U7tdMj#+H,i.2cB4)LvT'#xl-FP7r`9uEIKE;`[t@4TGx^j$bfw6:WanPKxFc_dpe/TBI_SsjZsMp'E#0qRr/HnXT'/m%YMl@.q>Se.bQ8-9va4tJ$UKTiJBB1e3JR7`AI9-lLZ+(1VB1^Na%piaU-/V^Ko.&Ya]CN0JmIM1LUYW@dJKWb?x84DKnF/I?DP`OtFvRUTR'SJ21)Go'mLamqx+N:d(h:3YGJlg&tA+?GWqIUepQ[uwSr`d0:J&6='S;kj)S`dYSjpd+S>6`Bvtd.ium&e.j_ShJx.QPB/bGY#8@3AXq33wGgAq,#,i:D167S/PUp(BG[Hx_[$vX$8$Qda`nm(iZ4q;Qg,J9RSf_M&l5sjg.CtqLc/;=2UtlKww(38u_oGwONg?cdYbrIHYN`ko`4uCMJaavgl-au@eCr_X+A)nO2f2Ec82GldNt1NrXkX3GOJ1oP2;?Vm^)&)Z&_eMItGV'$5a&VS8d7rZLB6Oe8F+.je'ZGPOFFYvu'alI*ne@PG;D6&>slcJaSUCq=^AM&3vNG4Z,m&7/urwoUHAH$-NnFiFc3?adsiOAf9:NRZIS[q(J=+D;:69-IUjgq^2I`N(MEfKsS2gk#*=b6?9^@LDENaECQ)Td.9j$k@$.kdKhvYqDIL^V3pDO2J,WL/Q4SYR@$`GINBhlENXCs?j^&_h6H.c+wwUArQu(e/[V$ns<32br?gUNcfshK$Ah?_s?(>DpA]K3mbP3k_7iveMI?q.a^AbYaH5#?&0-$Ze7hFl`J7>W,viqxs.@#m]d[';-5w[C1wQ30kkRGqChZIqCu5NI3&sJ@X7;WG>6b@NtUa1Z2eGbbQAWnwJC_'`IQVYN5'u`cYlNrBqGZp@rnZpcrpd/c(m96QC^w`>?Ggj%BJm@NM)AWp'qB%R/PPEE(w-H9^E&q+gxS`?Ivn%#2.5G>,8ja&d[AVwZ=^vkJ/VtHaV+f/_ui^LSDfI:m8.NG%]e:k/YVVPLZ.>.7Ic]JYoscGtmek=K[4;6Nf/E7BZIp*9EnUa,cJEeB[X]-v:2F5IjThuQ8)rUG3?0E6EtF'g?N/^([w>Lte5,ha[)05Ao=4A+Dj6;rwi(o6g*CM.@6KUnB&xNLn%vatvQEn/P#oc2>5@nxZbeqS0+%bqLqEk_0Tif&8Gr$_H^*s7seiaSsSFt2?P@b'gMNfkf@61b]K=f:CQ6Vhg2747VG^X&DU3Z:MHo[lLbTVqMf,$k9=*Ec(<@tP?IermEYED.L3.gUOO3ercRHjExdGO[F^Z^9^L3vt71+IZB[Va7$KcLL=xKdL(XTG)KKqpnYjk;p:uMYr2.#&kax+FJ/gWX*A`^hd.+9V>)0U$9[d]H,16F@E/6FM2aWJ2T&$%q@'@4lfRL51Ae#JpKtAho?1S&-l=_A:sC0@a1%Y8lo5))vYr&MEgQI6F5J@&b-+ZLtv*?$;B[L02XbX%<:jEi&D[;6(3&1:D[j@)E<[&wM%,bal*ij3#35946#s[[.]29O;Qd%K4SUiHAGY_4B(#6annVO0MqB'`O8enLhrDm.P4).sNk)d2J+6TTF2G0JH^2D'*[_6)*8_GUbss5a_M-m'E,R>m*p.+G7s3ZWO%[P+l,[RET1a>H,h5mvB_k;+.q'1X<20b9O7@+Q7_gtBV$'EI`e0Z&Ajjj]1k^>_1p0.N>%g'gSnnk]XWHrH^*ONM%LX9(xXnc7j`/s=$7hDNSlP0q`Y#'>76>55N%,Kh'kw@43FdvRW`pF*x;WCE)10T'%a]gZt1UfQiuqYJdFB.O<8f0K*UTX5b[F0#AIi*+.$GO`ngitf'l:r]-aQuFnT'u?gJ:^_ve=H6nj/.+&nj=ZC(vuqcn86n?X)QCFh&jZ=sqd.qBU3.:&e]H5@%ukJbd6OuiGu%+F&V3ovfaOL';7=f@hXg`1OhEU^HTjSN`Eim_io%gniN[K&]#D'uo$>d@UG_YD.mhkwc4@HI8N5AfAA3&->=J`vL(eS0v7vg(06W=,X&/T^o?sYC-xFq@/XDhG;2T`p,8Rc+us73>-,&Y,Nm>g)I[kp$L[^MN@rV&TAk`vX,:W(6HSV=V[8Fd]?NNg#mlP(#X)wxfj,TwFMbav/kL)cRg43L1#]$O/vGOrFM7k7_MDx1Q4hb48fQ,-rSL`C0@74bIr[S@8vkUBbj]e_d]33mdtVQCfcMsh:RUIX<&h&6;c&'As*59L8&sC$((lnj,mmb2vJlUcElLX;u.QchS9MLuuaY+'.XT8wT,ei7R]_=guI2k,^fkJfj=6'%)>XnZM/sffpo)uq^#-vNiiof)=kAfDo'&LQ]*$LgOKn5<#ij&I'k4vpZFJ;vEL7R^elw.x,n#E0@WAG;K&=9OZ]>p&SLw#CbIp:J=j=Si;X?sP$FQ/RxPe'=9r9_G3%6Dw<;YsQG4]d?)voE0`kNh<8S@*&Ja0c.(Envb:%fMv@5XiGnoC(NAD*illP^FA?7QmlK'_%1GsR(&Pe&ELJF.2=ut,%t:artX[2^<3d&a,qmf]Ee%u+*a^0A@r+7^KY_(._bMt+A[;S^-u:5h5Q>FpceD'&WObm2SMdn*Tv9-W5DWFHcj.UeBx2DRn=/IMJ]C3LgcK7hQLbnYcwTA/Jr,([%8TGRuowk/1Sf@9aPQa1OV=X'?>esm1uUU30gpt4dsg3)&iLbnpALW#4PPKnd&OG>xPW`,tFIGdA<9BA=un+v6q)iJSiUL9`+eBSok.fQ7q00*MKliZc2AYKRfl7xEbwHi<-Ep1I#V&[PlFA1=@*<4;-FNaDLd&PU[CFw4ZD3U/VH]hdxxU>Kof==ND&9@USE3mqpPHH)VfltSnLF0bTW2u4#Q/N*7$nLt$7Ig%1$Dn/Bs^a.3bBaK>^KT==xjgN.51VOq,i9wTx9:u6F^sDDvvUhRZ7$<@),q-OhqTtR+e?p'[kS?vHo68&4rq5[@-?BJ>aIAg(@a%Xp^pwSa`Apsn@#BjuS;-1c'rJ2a,sI34x_:5_TL6Ac*eq9dEqC&gWVIE'8/m-/g:G6s4[+R&lLC#ci)2eJc]L2J7^2N.g13Q`4j:r?%.u:A#7/F/kPwh$-Jp5:44Lc6M--'pZLnw&'##cKh=Ng1Ys7P3=XNfAS7].)`0,7)24q#;SM%k_i4@Y6T.7)C]k117me`@Wd;ddIUww`,G3Qxp2oTOIZwHK$s/Fg1W@2.f.xh`KPifFpP^]GB1db#PsV^uAJ-nNmuZ4bZjH8?,;R]skj]HSr`Mo[88qN1x@#3KDZ;Vr%+V93Stm_@7bY,(Z0LjkvXQNtXBpH(4X._k[.B4B%H3+XR651q>-WAY*J_/9;k:46nZe5Y-D?M,$255Q4@/W:ZJOB)$*J&9sa#`okF(KZ%+1sS*BvYTM#A>N^WgpbaB7t`#a_oclQBf/Ki4==6`IIuKR:g1/;:8V>=7%G^=#i7h2D&Rt]:ju#I#5mmLHV;;asR$9BYm0uug^BITRTgW&$xFW:vK'wS.(tIbK[tcH$8x7Zti(J$7Q14M7xU@c(/cgaN;+nM6`9s=t1U=1_8wvRAY,g*83T?qSMxvJthswU-A=>_'Qe/']HmNd<&I,L:FhfiL_e;[u%k6N6)I*?o4.;^ag2f-hN8ZSuSZ0Y?PS5O5x4PY6XJlN)kffk/CQbrKRrx*[.D/[aU`hMUf_.8_;$jmn&*b6tk;*5CUmS/%5uL27rn_-#r5BX(/V`q=I-#je48Qj.-L]LbPBa15vec#lhP`vwws*L44@qAT/BxfGR@W3)coNiKaMo8UI=dJZAbj@8unF4WCTrp_F>3uF.gEF.J1XguS#JxMnHijHD4R:;larjFd<4GMl]i/6%+:BYt/mh+T*DpAP7?wZvTC]'<[_ad#Wqv`lnM#)Wo1s0Ffww9tJQj[^j]jqnAgR%xs58LXV9SI9F&laCioRAwt?C#UjL_Uo*E)>a.k%-IVq4&ijxgAAh&pFxsdF[MFxKcH#:>4^r+dWM'OaPdIkog*de)2LiaLOSR/2=vs%aS8:+tPs_'6'[.u1w]XJ[_0)*%43ZiuB6>,Lj_(0^_?]t;a?AJe+Ht8$vf;wm+e(6-T'S%iSB+P8ew.[68vW1vIY*7r]b(Ss7MalNi.HFtot3SP1xu&.JWT-;v+%Ma1DWPq8xLk&BU3mboV^*hu]tJE08H?9f_X>G9xX5_,:/$m<@9*;.-'dm7<*1vj5ap'Eg)6U#G1LZHr(CCW-wHI.7hwg[F)D#5,>V)DDJN728uRG369-?_/M=e1nrMDh#h_iUa6oPiXd:Lu>4o[;M5`25@Pd#`0#+mtIp[LJ,I/[EV0j$vkIpewch>:$;PnQ*E1B*Ep&+0,q1#A^eKGp3Z'xYc+'&MBQt99E#ZENP#BAkHQF_s/*QEK3B>qXhlio+?.Zq&1vF49V<-HO7LGBmJ'bO@2Qq4S_anOJdFv.`vO$3RhRPq^.6NKjjJQYAXsZ8]:6*QU;LM_50BGg:+G9]v4$oeo'q&8L=;JX$@rj#a,+O$029wGwT%RneB3EUQc?70p,$i>a%9%qQTqBTawr[i`b3vCX)>XUb7.dge[F?>'hn]`QcuAp[0UnZlf/R;g8(UK(&v0JRH#@6b0U%N?[t#XsvP:KqKaUg23rx5B`<.&nI<+@3Np%8H+2rkWgVdMxS6onqs1[mejv&MuN7Xw`^:Q>nDg/wj>.Z/tXP#nuein3.`(5o6lHHKPOiMh@P##U<4Qv7IjMfIA1xK$:<@eqKu)wNiQ0[_m*O1^j/wT5j-NJN<6usvK^6%idRd'hG1B@^VPVc7.Xwgn1N<`Rv:Rr4s*Ar0+1bAPKcHN#JMbKgg2W(5l+)OKvxjF7s<0:4b6>[I-.U-q0Ns=_ttTQEf+L'1ngF_n@sMH[X,b-X'_a7Z3_Klse7EPnViv;iXt^sPC5GWHC4_'oHB:44mrS'vPe&ca_hOq(Y)oY()QYk'_*7pcL?Vs+OVt#rknW0D^3NuKk^)tP5o;#4GZ:m@,E@A6gn8V?s-^^48jsf<@;1E5JAN?@sBt(%@oPVg97C%FEM^thTD%tK<-mi*H'6t0w@W=HGtvp9lUps6llGo=lA)$qQQ`sKgKi-6/+ipt@:(L)[A:`o*`#bYl3NI;tcr6>M0j##-&LPTNQ^seF6$75'c2rHnhBejxGXOW:^92,3w:d2mJMdS'oG(-H7&SqJZ%tXZUERM`Jq<'Pv(^@OUaVt2G'T0[JG7&$+faXbh4&*kN5_W<&xtuN@#e,p]g0iKVG%6FgfLw9-S9qx_@t2HKh04Jg:$iB.h#6,'$]`]VQ#WGtkr>nof,/NQm:3-XClTAf&$_<#Qpm-Nsw4Y_FMioSGm]m1'HB,E3-mlH5rI6XHiILfmqmJ0KgHm-Q;vo,%RUX9uxEA2-Zj>0FKS/YLJ=c8oH^$r]T1a/>kV*7bNd(1ChUIcg6V2KDKH[O4OXM7L'nuE;[u>ND>sFGx55D5s_Oto_6Z,YnA#JPs?Y-lUXCJH-nVTiEr[aJMq<-A@UDm>os7vYo:oHKCIx=Us*'gjeXr5nvINBkoN?pi:gRcA^,WI[@k:Z];7G2r*=>RtCQe0cIF:Zs_o^@]?gPok=1kTQV0:vJu$gUceG?&ac]k2M-D=(k$]mXf,o8'u^melwsdR7*?O$hC-thu(V?N'7p1PS.`tm.Atr1qOQ3Z0FVH0]TIQ-HCR/pqG0?A2-tR_q`q4gFnKn.:u#l,Y8)H^XfIA`FElGUa.-rh/pYGK#@XOskGegYe7`s/kR.tntZ9'D<1*:N8b_^Mk?0ra_CPC)#<8_Vuxi@s1e`WG>>$2Ol&rvDC#rQV#G^m)J2`XN(*CNBfU0f8'l^1rLpmml=nX'R/_R%*=TWZ-Wn5WL+VQS2Z7MkYS@f0V*i9a^;8g>H/tW[<9d_L8aE)TcH-Z,'$OfnBMq4C)rt0/v*-X5+@toZ??2OdSKaSvEx45sk9Ng4U8d6[6Utd9aZuwh()8Vsr9W6=#itc7IfGVK/>&Dif]r+#fdhehdQs@C=RIO$2FKx]6B7bod3?e/h'92%n>+^2+l;lcYnxLs+<1gVX15r2LMxXHrYs+8/8DiKuaX3dw,4&F@Te5W'x=#_#mZ&Rcu=PCVC]9P7DjZ$YAnd`[6Dp9,t5M`=U'E4HhhVnEdaoU,%3%1S[h,?VqrP^.K?eUB6iYiR7cWH$v?'O-Q?5uTmx307S`=P(IpN:'7JQE=$<+mZc9GvP^J:he&K)tP]FH$F/TkQJ7g*'oA*_TjA*v4w>dtcZY6ls9%fDsVL)+=^a#AY.$lBVNMO#9Al8]$C.E&%oK]Hx1L2FT-6VtmKG`QF,8#:bTuUea$vo+A_Iqt)'=Y7sp*K0mPL_V;xnavplJl/c_Jj5L.3#2I>O';73Fnn#g&&DO/CV8c-p^s_5$#JSKXD4-Z7f$.7nFQ.oUr38QACIUOVWa*'Vhha9v%^;2`t`r0&e+[>KG_uft2c4Ru`H)Nb>R25aLp[a#G`M;6*6%B80-o_`4Gfa>@UBgAm-M-$VNH7:gHE=$`FWdk%3H=I_C#`a4BBD@mjc,L72Bk)v4w?rZN_[EhGp9rrf&pN9HEjLfs$jiPYcv^vdBso>=ldKQW)lJ3-38XHTs$u+`NHCm`lZDM)Mvp6D.113ZZwr28X.OQH*-d:_rb';iF7b+[C`<>tpXGVdb)%#?a4AAD0r6DrP>6e&SUuh[HlFx>6xu6GHQEDiRZk^-:G`D%VX`bN0m8>=jMA)%H.w_nMWQOVP67O5e8$4dd/`CsSs)Y<5tH_L&$_J;)6m^kV,iTSCOtJdK+:^-^7b[34oMYh`gQ4aG=E_7x:Fi8>Aw+q#NY2i7=ee&)lBfu,E=2c4s2oUpf+bNt(Z=Ct89oHnfa0a`OhuNI;NoU+S@:6VPqo/dO/&ov_W8lTcLNueI0=(4p_nuYaj;lE1,F%>xhm7qPmxD8;hDG/5OU4>r;C`c`LxOjm@9$F]9+L1Z`/C_$gVtl$?1FUEext#LWq0gYElA)@R0kIEC*EX;?TV`OB^sRa`4Zk$%/'pxucU]YLP&UE4R*uAm@m#2bHHL;R;RaeF/_GiWfp0mC)qBKmdJoH><.xV;^mF+i07^u7YI6t$5_xw/5i>82JesjpS:jvOf9gKcaMk8#gD9nj8;RLY5Y7+m+GAV7-LktMReZ?nXnS6':K7JZ<>v?JqCM%L>lUw>6c9wtDwgl'p:-&vIST)@c(IXuWQ:6_0IJJ#mP:Gf0[b9a1K/rcAxIGb,VkbqKLR#RFkrHK#*H6BsB`iQ+jqfP^58L5XUxM5*/%_SUF.q@A5D2T)q_u*e_i0F#%P;^`6eY@-R]b3:jWU1QmoB@gf8q&aw+OtFL&lY/:::NqW%RF@j<$S+>4=rnMXaAOS.I(J$7NYBv6GdRsAfQsPX3M9n20l>w1S9HS`jZ]_^st]V@K8NmtLIgNQaH9nhk#C>Cdg&r+r2s*,6b)l4_o9pb(a23g'cj?iu]g%@MA,:&lVt4OI_[)[$`FO-su1Uj#Y8w3iUu&Qk5'g0ISj5(ume=R*MaK<.,VKo$%S#V(Q4H=iLiZAJgS,eqJ2[[c`5Ks12<;N)0V;A'nj`Su<6O:p2PLZ.uPt&gs#4^7l;x9kakT//s(Kb_lC[O%@8GHIG%Z)(M.E$OdHj'L,QpO.0*%asIs[ZN/XW6b:&-t6_HoC6W(,F7(FgKe;_r/l`*hu#B_@S6:S55Ef,KQt<]2,Fbux:DYO'i/ZbVO7F@E_aM())dKiRjs;[qv`?m^fUKCW>Ku;T*vae%ku&^q@_mEGH)Wt>th>6iw`EGZ%ME?k^SS6TA7Bv*7@47T,gcvUL.d;Y+?7Y(2(oe.0oaJ;PA-.K3b^qdkoq#3c[QWYZPe,Wl])L6]F)a=bft7G,vRVphfa5RU+pqBuT8;Bk<$m[d+oT=+qAg><0OEnCjVkO68B:`o@H*kH(bjV>-.1pm@$?<-vG)@+uMS1YZx^Wv6:vF.LT86$KHRckUEixwgQR>2CEcnC*A6Z#7c'v/KN$D*L`+'Ja_r8g*rw]M^*02wL:baa%rAo9t:f]lKu5HjF1cwKCj$>2Q@gVW?k>`@._j&?Zs[*,<&B8&,:gCn.m>7)?-N^2v6Qe.apJQ8[CF?w7U-P)'r4B$'^j(-f/Yi85oW'%;/^vub2B7,9O0BEXf1-rhuKN^8+qZ@Utj%bpR[1Ucs:e]wO4H:X?Jg2UJ$D+gkI5QmeFrsSSM8uFAYHc7;_dEOU9U:M==GTetxOO/d/3I//6f=,RxKS%;i0W5gR%U*D[jgVD^%w_HxFGWe2rlSx],V:9j&4iNhpB>f$7sUZ(xYcRh>Q>P8pouM4b&a>b`A)l2Z:Y1KlAmLid].U;H>w,R-6YYLO%5)%l&Vd7iie5RmNnJ=iaU$gc4kc)=(>>V)uFM>r2j^3'(bWDjucO$BZVA$U/&>c]=asd9aj#C'?BNhSCX.sj+K.*oB%$'_[rK%HhnfS'i5*[#D:6ZdfS.=Y(2W)vIQ.Iwx_h#@5t#xKp7%U*O7$5VAmkoAt5<[=$c>SPZ)qa9S?UeD.$TXKR0u+sie-ZoC`E,J#'JZ-r:u[ek):*b2/(gs'%_a9P,5MASSAc=PWaJ:@wK>0G*p*vKruxYYvZqu.T-@45gaDE4vc=)NDukv'5vncg+@ktXtV:Ga+kv)[2xrm>Hf9oH/+KpU40S,=v,Q1gN[Fd$U,n=?O__gpAWN7i*a?;Vq3,-P@MI/-8ls]JNIt1BTPVDIxP0qsJFBXXlun^/)ST_cM=g>]>8#dfGs@Hn?Cl]jo@iQp)7MC`G(`r.&QT8.&/p=Jw%VNp;EB)jlLfG4i'f;Q/UE1vsu7&E_12.imXVlkAx08R/L;5E'o'FEbsc'x1C(CU(L124U_=:rkW3<3^Hom=,`lBW(*%]=b,MDdDW-iS&OWCmeL%1m)l39@nX[BlmbYC_.LSWAhat5DEoZbYcwJbIm0'2&x_NC,v]7uQ$LuCDU^f-Cgn)#Rf^%>*$daKCX5Q%0*djP&8-vxg8xE`bsn3k(dS2rMPKc2`/^jJ:qoK%knhb_;in8Oe.St*0RVDa+7))S7[-J`YcC>04C:-UqJOlE+IP7BVwf2(jqm7k:duDOO`hkxI-WXMbtTBFsV'%8#dvZ8aqS7hgNhM`pM5#a:q,vF:os133i/#I_@3b0]RIE0cj'o=u-^7P6hKlpT5fMMUBW@tba:,L'#.&g8f=u.Fc(`:8wfstHD?mhd2qr*dtw4p%vi$^ra+>L9JwopNW2-ZDK_,P2nIVe#$eZV[A9Fh;dg/iE^(PQ)e4?X$4M5_?C%k/Iv(Cf=Zlmu0afAFZV1*KBd4&3)&Axj8u54tYtU[F7rjm*5vW*%eaJR@At0;'5%bw_AQ70-(2Fm$=uN@s'a3WQj@'2PL/vQw.vlo9XDYFOL>.VrtJb>R>E+JdfVE0@)4jOp.Rvsj5lS7b-a)]E>HlR7H_V)i/tD%k@3Q[POJA0qW,lnx`$wTL.Nm;JID[jIfJchwhAv[>`PI-s>#MhJ(1[QBrmo'o3P*aq/UGfo3A0l-@$/i.xtC]f,'2AAiS89jY3>Qq6*si#arHYENK)X5op1,ZNr'q/X0^8Wf8-Qj1`7pXtTwK0iSOd]'u.:4J^*GlLfADE7G?tjV(=5/^4+6:#A9wWe>^k%Pk-0Xo#9r8vS9/b*5?b@b?s(`a]f-PE1lppHpxK5_)XQQIC'%/@f&;f9;BEMSdn7fY;@;ErA@xuU7KEsNEv4^Fm>>8$*%RnKu3/d[8OW-8f_hrHJoOWb7@12]mHk&v(2-CTZt6:X$6/$V8bCuW)QjWo=#L9b*h0e_jmxTf)KAn^k+@N=bn8e*nv)^1;>p?75=8R3BK8,=YnAM?SNrFgsn@%XTRos@BPf=2Zg_SL6v>/k^.B3auGnYxU(FplIo>KO9E`Xw3F/.WQ2BNjgKI(B9Cw=@(ph+[G,pc?l6;lH`iFMY'_SI4Grv^dvYAm76w&L%OiQc'Fej,(`1v.mAw91nrY%='LPIm[2sZPf.huC=S0([*%2GEts=+S7?uXgVSeK3l_*s5tOvLmocEm3Up(u=PGUhi^,-rvOp8n9_-4YrKBJvX%:#B2X0Tc[1]1LV-t?3jJIEc@b_-U^f==pS&Vg-[>LuvCTtE7S%FrPdO?Uok721k=5-Xmku64`vDAm45(Y]orcQXrixkxdBYIbkxA%*frcjGo?[C]bRK=:vQf9?o7NIDLY<[;rEY1)q?MZ;-UsATma:Fc-VWhupn6N?ZG1`=^M8=gblH1<4#gVQ7;i46%ST^xs>sE9(^A4.7>WC-qIJH8`*t0+hYlS1AK`J^aJ)g9-oOXFmAV>#vpDG?Bd=n7$'kkQ+^jh8$Ki1*q:Aru$NH-nL+*F@)k$OkOh.bg'8<+htf$hh*kW(9iJ+A+Q3'.N$pX*i`P&oISp1KtGBIS+G@jSFm*m)`Yp6vtq?8%uo6q$LB4&X6%;$SK[.2m>ArPsRIGFhLFl[J0INfKX#19/jEStsJp9-C<--Y3+/N@uHvai'^O9l`Dfh:ZS/X5tb'oZDl>7)qIo^_Xt3+ZK.+Wq1$t'N[V>V44`G1E9w'vVsF+[,X+(']8lBN47FT.)KRo_?)UI=kTZ/HaO%P$=##NkNA`YYScN;qTlkABNq-'%8GMl.9kJRK-$uU-dj%3Yrp)_#=puTn1]bXbjEj%rF$T@_o*^5OC&bMGu'hv@YtNk:@rtpmou#eK0mk);rY6BunuUR4v#e-PO?`2.cN`v>vQJ]<&:8LWxnmKN1Kp^+VYD[jsas)/Ee#xG#v#k93OKfmYC(0i3Q7w#_,46S<]wr[[q$VwT4Z(r`ot_4_Qg#UvO*a9e;/P^xr*,8W0c'BE#Nsh=E3SABR3Qvg;NZPdw^8p`V^+>'(.842ox(E2U_CNtU-+FGpS?nKVVqJbY$s=pbuI'FPluFg'welCfUa`s?U+DEXpFb#_ca;7MH`vgK(U6$:%-g8^/v[O$vlMDR:uWi&M7N:0C8s+$dItO)S7jw+oqP&*JavBex5lu',Higt3QxZU#b>%n3?$A5D%/QlMsKR*'.*tC9Fk&R2OZ#.h+YEt[MRo87.*DceMZXBUW^fD#HqDOm#77#Dig#n*@0lds%?n?UR%vP[?DWw4b):rD<==CtW1uu.QxpJ/?p7B-#aU-F5k,&8GYKT)f]0%0vBtPmt-dpmiRth9iNB*WT^p(*piY8tToI49FMN?a6]/nS=n:I&m:_d'_fQAbaleCarm,3voWrX,T.k.L&s0.L15s6utd#Xj8I#d/p0mYPJFUo+xI5`GEZDS*iIbV7uXx=leuXY`ZH(KL-W#cqj5emN#Lj,*%Bm1(D1o+2a1n)*aWt(ahOaoFf,q6lK5ou>V0ccucCj_1t^g$(x/U:WL#Nxa^R'=dxo[jbj>cuWQ8h+C1OS^Wjo]iT[:QKbgBBMnV?q4.^D]Bb'_5kJI%],LsTuoQ/UV.:(AW)ESI-r4CB&_au$6/5WBM*9g(-h*#@kJp''paYDA>[bYEuLu8Gvllot(7.=f5WtPK5i^>Y%x4c_w=61*9^R]Nfokm4>p5b5'8gXULfS5ncHVfXCS7:CL*t7n99Vn.Ijmf&,Bre+Xut`+)S%*?q]I9g'+ve1E><8=_cmK.(fu/pxu(wc1?BLMtPpc@H-q7f@))]`WCO6/,A)H3SFK%Lq:$Ik-4FemI4$Y$xjJFXI.9kxgiuHH:-5:O&;$^Xj]'S5%,t/F'8ZifUU7b;rj94%UWWihLX4eRO9vH0Yh[T5qmaHdRxFq,[.L;j.MoREfvf(h$eZ;u>Z71>jrk?OrY&i9f=l0KXan3j'6Ab)(`aC;&Cq*w[7[dN6bTG]WA+la3e_lb;Xg5wLO?TSIL_hH?bAVbe@ZMEIT#/mKj7Z-jG_nUHAo.D#9xiu>8u_T(Y8xu4icZU&N8]AZVS^2tBs2`Nl,4Ut38IP7I7o_j>-4I_Gd1D'9tr19SIj2aeU$f/^7fcaV8O5oGR8BWL`jdXH#&=^*t':(mrX0m]*&)qi*P]bsV7i+oJR-uVw9Y94POY5C[vfqMX1Zaf@+:_-[E&?1qhv<88tt*smkKHwV.I.ZX%gual6lJ?I_KGW_pTan@1)lqwg2qOahmjsYJ>7c,r.:`_(2vD;1@t#g/RjRc/JaD`n/O)tvg?-U*@FmwX>Bnn_+UHCF8/&q+2tCOYDs'3QS@Vxu5$)/.#gSOLk$+>uV%n9,MtK$Qn%0EuwDl?5d#Q9[nUfqEjs7&n5:@nA(#N@%rlc=FK_R0?lArwPh4c1n[#@ChYn=T$G2ogL9H1/gc1N=8N4KLw%Yx7CuXd4RWtwM5aN:WY[bikPQ*2;jMVsk0O/DfMbi0g9+%h>u_H37BB3[)s#a&J8,lYbY%(]RQeumaR22.BN#LQDf+_nJF]+.$=Y[-_C5iFX-(M<`^:QrDw-ARjf,nqA$aE-(%vr*Hnlo5KPq%II`L.tebtrd&Wl'ceG^2T+,:*'C:?KH<=^bo8RcsD8t8_Lm3qa$D/O&4EXd7ov7k]^P[l1:N^]sM@)VJ@dUWY>'27OfJoC;sVigg5.7nJI>IMedm>8vLPFpM>RY)v3otvthr.beiQ+Ergvh$(*]IW2j)Csk'/tJfM2RZKUBLV-FZ7MaN0Q.(CaCQs1gNGlx#`[j6O>4cwDc7-,6O2$0MP'tAJdfU-w5r$I&io]^,v'5F6S9c0Pnr6E=m:$I68o%'UGCu[O+3kxYv:$Av,NttnN+%t)T,=GCUR>]'$JHc?Xu8kl(a:bC?uE-CPl_,g_F_LRrZ?fp3uHp2g'`]`cs`^0Co>?f#KaLoV.t'I%K^nL65/6)RA#b7H1t`Ear6B.SoR1A2jiSA,+B$(+Lkjmbu_*MVX8l59d#L%QWASrP2))0;M'::4@coeVGsKWVq=TTs[dox.K7#ejU:YFF/ub-Xw>EsV`f$u&.Ew`Gj,_qkrP,]xfKBhtPY)npvDsFsGeWLcA'mtA(.]WLnE4(GQ:jVZqnP71d1QQpsl@uxxUOeJh#VuE;iO7OWUekfb]Kr)u:&5([-DmlkkcE6DUB'5dl48rNMd5X8,QU;D,X#4W]J-f0@8Jsr9n%NJ(0AF)_H1s]2R%*MHu4#lHH_*Ch>P-Bu&gd6Q,h;BC(o:J4F<:.tK386MMC2$Bc/u$D9uo,w?t@g=l$'6bZf0_tr4,B%mk%W=U4p&57rG?;'vkNo5t`vdxh'w3cAQ)WA=3U-EJ3u)4AvlJ(4Z;?%9Aw9WY*CL,FiouNc*_4o>^8OjTa`(>Ob=-#nBhLgj&K?3cv48k;3a%o],nV-bo,rphp2_S5Ups?>9R<<2j0-$VCto32aO3Duq]6rKQ.q$tcbp5M%jtdl3&mdbAe0XdZ)QNhc'nuB/_TLuf3,PMaAUq.+G6%(7Z(SAM&ox/7(cb.G.T]#L9vahODrfj8S%nFH_hgq-;$C8ueUB0j4gSc#8vI#kSnNi6W?a5eU8_l9jMrTn7r)KUp/KaFN7313T@8/?l8xNH(<[-P)GWvurtu<7wl7$c9;t&O-smIVKwkte:Fqk#Njk28J9ZsErl12rwf[2t3vS$muo*pxFYL_Eg:e]Qkh>nijls`0qC[sEFJv).Q3vj9APIG1'(@qPcY-U+]P^roK`W1@Jw/7lpvI(_o&lZ(w`XE&UnLl`ITMI[.('U/[i0aXQT5u3NQeqH$fi8.$6su=^u8aiEjD'*F3UKP>u]q;f4&LkO7hv7SIlh6sC`,x9v$'p5[kS'6V'Si`f^:VRGkfK=7kl^Mi(0iN&f34B7xq@duHbQJa[=2?fDfdi&/odh8qPnj.M57(j_PUs-Sx^Y<@pD%[#1`.24$.+BVwJI2@AXt-#;p8-cNO(JI_w>[).qa*iC_6ASaghojfKD2nUL*MfYw9a80XmSZ5]:LC#'hJkEsg9989f'LPj96&+&WTeU,Qi_mWIKt^+8$95]ptLN`o7%N'2awYF^6rM74/Qmu&hg:;2idt*j-Dv#7qPff,4_bVOO@?M8N(a&+rCcv1-lL;UK^mexp4;Mp7n;5_L^k7@>q6Emu-/]'/Z[^-P+=fH^&nk[?MEsu9Nqd2Ix6uHZA0G>v[nf%,kx$O)`A=Ot3@kJ$:w5JheK6%mk$6pD&mH8SbMX`f_i.jc`2='g?a_)`T8WY=%p)3#jY&='_EeX0(GfKGd4F:c^[8iFIR6R=gbe*,01=TB1fWO*RuO-8-UAwaWmA/)tR@r=1a%-X<7)5QZsD5])(bih-(AP&Ya`BDfurc:Jar0OAdSPEar0Ku2vIRaYn=,,2V7/l6^s^o'f]9Rtu@dEC^S$tQ'VZBq$?45eb'^;VgK[*XPOhr>J'uA15NO2(H[XP@Q3cupVgW%/aXhVpRL+x]tCRAp]rIW5-o1a8cV6dIkr@[;SfDQ7K*ms5m[7,qT^OT,_SZL(-bWx^VL2.t/cP`GsR%`)5j'-7pKv30#&Oj`A:ZdC;nmdlJx67SI:fcoU7aiMM%uOjf%Wm<7;'lr)R5o5(U6/nts^*2oIMt_V:PItN-I)v1x3s6u8)E92%@QA202]MD]Q)k/LL9ZMPBVF74sFVuG?=&ZQ'mtF$6:u>Gu8-I.fwUM>685J/,Kj&)^*L#%^DRF`I^DX5OpfDcbWk?On38F^<5Lu*7Lg*gwJdWjRYP;>aMwtV+CAoQm9?S7LTv'NWi-U/x*o,mD.79aT2%VlE5.ic#Yw[FwpvDEQ[dvtFrYdf4@*$TdY7I)=X^t6hi1gae8;s@#V-?-+mps/12KwC_eY`XLj]2#VoXs&-Lq0lb)MepjG-vsX0Xq*HX5p/,u$rfdwoC2t/6@dK3#fAgaNoAtGenX^PG@rV^s*I'hgh1s9&IMld5PpK&][S?-L<'9sKAdM,c.UuV6RT7s&QZr2D=lGEa%EG#Q-LXvLk&=WK1QiSVcu+xopr0qf0-oLt3lNnM_qK3A_Sduh`bi5UQFFTh9ii,YoXnI8)Sh^CFTK'L>)c^kNb);&FX@=]Iceg94dxxR?BLk'RkUVdSOq$%CYGA;9D)k/j/@Y_JqV7g%/ZS=N'KW%+mmN]48QT[*QbJ;,(Fe,/qZW.$a*io6vN`+rb5jnMteEQ&rbf2w$;1--$**#N.YU#blYwNTW2R)@#n:tSDpH8r,AZE*&*6%nNTxj0`#&c+&*p%-kSWmxSb'L,9mE7Of6(:D@D1Jpq6R9gV3wB2i@c(MQ31p%I^ggT5=Y#[Ruvqqin6vUugjFW=d;r2Rk^E0uGqtRa$sFfKL>7UbpnUM^a0PF*>n0I)%_8]T$8[c$URI/m1]N#G&/dBA3VkS/cP%6#.9$6Z+moREU)(hn`=E4`aD2<&%=7$F]4fH(lIpdO(Iv;HMfs*i$&EgN)UwA(hcM6?ZL)BVmAV[73j'BEJ4>_CeJ#<^[S0QfV6]AQ3u]C^x.?N).tA>(N'`AmPrkh-Z#`5&d77-K;mdd/6,VgJWG6I358Yd'J)(SK4%kAsdgu1SJCrW%NXuVM6XeeZD48%rAH7AYU,u-u2)?i,,#(lq-Dtn$$Ye$_gDA=gUmShqhbqnLi-('O9?0c2$fMcDA;$]9[tZS+FD;bQ,fL=L&H2F0bV@8(626F5u;H^=HL)^VSSHg.,qt>]v^N/A0hlK-^w]+-/Y#q16Z4+L^]:M=o3v,d?ipZ:ET9/&c_aT$P(Y3>>5q[R]Dvk7e8cUK59(>8^S)B2oJT#W7@$Z6W@6%b8E%[-[)Yo@#>98ot3RpO_N1Y5V3O3r.h;S7DL;wkfBiQN[)D8.LS@rdB&LBtc,m%b*T;gt)M,YK_?`9vM*bsm5qt5-pFv),HW>Ua&Kdt68GhB2ndH&V`/qd;F[)+[HJVEs%4h;^UWsd##'$?QT/$owZh*VI4,kx(j/4B9o48U4@I+k+pEmt'<[tn;p4/xU8eKK/hj9+`sjoBA7abgV,Mn7#DAd?gkXrA1Qo%Mk:luHAvXeM4`c5<)+05]/Qj$i;*tdS2.8SD;HX@(W6x$OHlP,M_l&+[RV[Ldbk'Lc-q]jkl8'2LN%[kw:>R0w?#'sAso^*ig@DaUJjCK7r_PAPgR*>YD?6UZOlqunWu/v$CL>7L.8%LRDFa;'@1-m]s?/aHGpETQ1ow4tu^EMS-W[=CPh4p#`)sfjE@=7Ah2p`^4g-((2I=b[j,,aY(A:2;abm/.I'54#(R*tA@6)N5mb9`%.;0(g&w0)*CANbP5ZJsx]w;lb7R]*dUfAI3fh46,dO,($gT;$V&`.rfE-RfjpPV$sKa/Nx=L67mU[j3d>#CqP;th(r=80YtmBwt+bWwT4B?[D_Es+6>Ab,j,^>u23mbi7?9RFr]9D1P2sUvt-ditS*-2#^+=Y9uDJl6*U:T)(kmt*DMN3JG?',=`6-T6krL[DtsPM0L4K'D4TqfIRaKJZ*(Y]G37S9N7Yp,Y8Cuojmu=ErOUII5q(YJ3F>M5nmA;h/DArJ,XCKe0tI0`H(KRO,as^JKl_3eROB^2ALe/5`aY)seuQS(5vNJ7=.YC$W$+Ac^DjQEwZ(s%SfP%]_C=*j/Dg*ae^c@X==RKeF`>73Y=6unCeIj[fZDuHfR4l$djs#Q]H<]tPKR7=9%F2>&O?jPP1>'*6?,a1rVY*8h^a[&?]uADn_WhG.LoK#;mr%x)A&LoH(]]s/J&LB'@R,+n<(WGP'=K()_q+k6JD^_;EX<`9(`s0FPfIdlb?9dD[RD>$q5/3OXu_t.s*w>pu''Sj0f&tM[<.3)Yshx;un=/l?-4u6S,I_XPvts@>XYlx4E^3)q5AmFqmok_n'kO6JA]0KY--pKAani)V]&=s3]B;2EVvY[#)1R%>1Gos%PAI$>U-L`#-@L'LHtx=N2h:6t''YO]Wj46cbF'$cHwMl+4],%Gx&%aSr5,(I3ss/QZ9F6BR/U[v`SfE2:r&l7:R19t9=M$t.bPjjR/eIt7dQu&_E^4g=,g)(fFIuJldqLiI.+vkT`;u*e>$0fX^TRvB9xl%kCDGFl3]Fw']t(g#6)]biG7:_$$w:>8M2bKL=/j[^][ReV3aY^jANw8r@lO,(wFwX#8YVoTuK7Sf($CxD^44ZI9*c.topJ-m.EKPu_*CKlc@xrM%EGNs%sqR%@Zx5-,bf&r;:75'BFN,Lkbp6lY??aN6.D5--4IA,aq>Csb(:Aa+]B8I/6IY3*w`.u@/19+1i(Fn++&7#62upB=&kdN$,nRpBFlZO.R$lSB,'_,Xs)r[UW@uZ8TrupTPu]kYA*t1-On[`j:fMK0,m/agxg-LubQ@`4>GNA&D>MIFOkGg;WhbYZ,Z6v/n.@bjC0tCX'%t0>R^P)`pP*iU;(G'3-s.1Q?si.7o=*vM`nQq;c+HMcOsBb=695ar3*B9dTn`HaZ&b5%T^(&b?@p/v'L*TPL4J8A$`H'u6XvT9as^_IXvG9i4h1.TBE`C&:XA3vp,CsFfKL>7@_+:uq8v(J/Ke?jP'bYn53ux2/,d[qdL#ZRaw9$L(]j'/E[N`qTe3ZK(x^s-B:KK$qe]&jqFre8goU'4(gd5rOOCK&im/>4Zd2kJ8eVIeEQbC93(Vx64d?8%1SqaU$:pV(VuLHQ^942Q`2JDfl#3L(KXc)L`Ga3gRn;(l(7@777k4suR6s[NgQXfR,']K[0oWqU`SU8TS;x-0:Y:v,]i#WZ08rJpf6Aa=l#/D#nN%$VWls4'qqma<9v9@BMLDsd-3-/?#,==Q*Q;Lb0Zu/[3*[S9t(Yw8rQo>nu)^uF@[C/t's?f/s&QGF@4):6%GF1m/4*f&sK/^9pK9,tHt@D3J_m48X%GiW-2Nb#I1b6A$w0#R:kjM7gYRJu`//i/LcFb.Elk;VQvLslDFRin/]PVI&6I?[`X6>uFcb_#%b.d%7%WP@@I-waB.bq6#G)M/wFhe'xaXwk`S=+Ut'3v4:P*OOCMxvl-0[nn.sh/-OCQqg:gB3#)(kW/Y$Jt^T?8[%G(xxRn*3,u1r5VYd7?#4Xu-o2v4E^3)q7'DVupClP%&7I0-Ad@0KGQEX`s06#s4O2[ged_=q@QB-#8=*CP@`[CMYxB0#3aYN>DX&v3sjZ_NsD0&`Lik-XOR&#IeZ?;:VXS*q?an1(*k5l9,c+2Kdg8**<#M)0AOs:Q.L.A_Hdm]NY490vh,CsF['/$L@HAXu]KP:rt`jFVDEq]PEdQxcdd&iO3uMq.*5H0JBOE8&,>C,Q198[u,JSvJ21UFrm)nh97NZE+8#H$+Y36c_=kl<')HWuO&KRM%*pOZQQ`Siq.-YlJ5^WCWk/tIj?E?A2-F3ed;V>JMbfR>glI4aps]x_qQMujpjqt)80$TMk>JACLgO2P6LhIM-1[ZO0:uF2?6Oc0qtFW2[uId)th.Gl4x%Rpcsb$E.&x[18rDbFMG[LTL*.x=X0)YCWL)(/D[NO&?FIRTg#up4K^[CrlT=l>((I7qad4]U@]X,hE'(Jh,r+r1wqlP0lgY$oN6WVtKDd_^`v0$sow^F3th1+nxRL_C[x+u:X$'[JZsJ983>Z:QR#rAa[gNJKQs2Ur.h*3_qKoKm0p8(J?J(RHYTBD;aJtfX=h:s7Cln9wk)#.,QY<5:B'#31L?@5Dd^+PI,10'>]:L45:4?2h^4fK+F-U[`f@S`ng1K0*c6#Z,ta`#^^DqfPWXP#t@EM@c,xBwR&;>>UN5@V).877<=`DI(Xwp#Qlaj2OI8-r5wu?'L7&$J74LS/DA:v?DHMj8Ka5r$0D;bsIa:LsJ:Q),MDEFk=c4^f5QjluEs]qrDoCEOg&(4?=8`6vci[ll5H>T-HCCbI;#C6e2I.(Lw1nl//DbXt/)ioa/a]&jWM%P:H;mN=)vNxX:AMtUVDi(<#YZ]3QFNLuk%2v4p,CsF)tBsb@G4:vaJYOe.gnrb.ZLJBfFGR7D&+-5/=]922DW4uOY>@Eu;TM-7T[%>`PicFFx>We+m%UeSe_>7t8mOn#mEnK1mX=PVjhKUWaC8BZR&(SKpQ`QZq8k*urnoAU0O@bx_H$vWR+.^F3t7['EA[a$9^HaS4qO-H%O38#(/3aS=uh1r-g/:Fc9JJ(X&VRFD/,)$v_=(_hjZR&%o/apoNJVj80r(Z0r;uE&K'#fV+b)7BS-su(AsFg6dmkn'u12BeIlu+uK%t=bed6C(3;24RgAA/RmjAPtAFro]O[PZ[)7q5EqdN%`]a>UGq1&[_]nJ_d.M1tCpS'2>bT1kRJwkMp$@B)7Ak_dG->kT+mJN,*1R%4XaZ#SnQ583OGFM:ApO.#Ufdq26.)NlSrIAfVin7TBK'_->o;&I;4t=vEpW(tL./%u`7k8vQ:kdA0[pl,m6tdR`)u40)^G;.b$'h6r-.?7nI%ewk7kHA_Pmkq.`SS^.%AC'0Al_fFgA32X5QiiNL9UbekpIt/hL9Gk=ADT2>[RAHm#r2C.uaG,>s5e#iAqiVjAf3oL9<>C2('f%`s.8.7&JdjIi%^JG2b*qQltruEIu[[IuhYi`Wh3gK]<1Bl$hu6O,G7,5H-fSWnYcLRAC>0[]v-,R`5kb,CEN[H-k*<]tqN_.uPoh9t(Yw8r3(@U6Sl&WblfV1`W-'H_S6MxtBK#LFp]CZ_E-Ch(^e&Q,GinrPg[vFn]$Cop/XnJRHvu]i[g@bZT@g+)C>aQabF4hk)hiW#@wH-L]-dYrYwIp%5r(ub@pIFi5=^,u&AC*&[-Hp_A3#h1LvvILBGdsuWt/:Im7c-*CPGWf<;>bXCaiEJK'f(E1iwqd)(OY#&ivnJ=8LeW@OEOiYEm1BXu,7_$IW-.M-$L7$BkAER$Zc*/a/k9jpJ:&b7GOjd7k:Fo]t+rgf.haVICgW^ZETf`^RfSl+^pJ5rtaYZk:Uh'#_(w@F2?LU0>N,qkn?%TIwS$$*)TDmRB.0xFYx]-PZmWs^A4XGJ6))*s;vMRM0?qn>vp5*PH)2BpcsG?h.n9Yh`1Dh7eU'MTF<&vqg,nd9Y)8)?SG^X748;8*O[.vNL4Le9kI,OEKuTq2Xva2/g_h+v`WPubx#8)>CNvK,9xR=#X?SC>Fa:EZ>&(%uljRIF)-p7h<@RW+9+%'EV5=NIxD#G%=g[r.V'#umL5*.w$aEP%0DXa^V7`*1Tsng^TOk^e0M9vf0R,Wq2#kfTJoSIaFqN$m,1GDqbp'r+$gV.6(@&/50Z2rLmo%*R_[o/?PTn3kq2>=0whcj8AZGS'&ad*NTMm0FF%+x@fNh4SP[ow,^+`C_lLw`&%qn?iJD%3aX(os4B9;(L9;AC<9(D;@9(C:]eCpGl_nhbI5c*v.'_,:%Z3Scr_jHQF/a_e7Iar^Lo_8Ear8;wQVjZ$rGA[?%Tj$+w'C$mYEAxA4hH:.%:u^bjqrg1n:LFH7$Bc.K>^JjKc2]1A2RgP*UfJ^2NI:-wRp.#mFVU1p0LB//D(YIXETE:J(-(PM_H@FIWK_]Gr?6tI0T2l$^*3*Xs6jZX:LgXeAD5R(W%N&39s?GG5vVD5`q/6[NOLs-#GqOE`9xc4-$k,TRod[Pfua52*bjs_DNIAx'(=f9.I2/<0LDDh&ldBHlDv1h3vPs3UCFZVIJC>]YooV,v6?ij3fU]b:d;xjZWK:,L#YV>cVdAb1dK:P:-k6b<(+K22m<5)_FAYpWB@Pdh+EMu?JY8po$77;j$OgYfu*?$TIfP007'uMXas:g:hwWJ6)uT&kYEF)qF_7kBwH[Z0d4-71TZT;AdR*1-M*bU@xtCTQ)S%6neAX6B+SKDlD,O'(K@VJ8%Uh=jMMauQ(R7mgH`:Fnog2c14((Y>^8Kh9u6[pjNY6alAd7Q.-e;Gi_7n+udlfNSktknaw66:kJlQJqY0HRFF0H=7QkkeU65(lr$Z1lDXBA3MSqX;GWxCgViDB>a%7Z7:,%YnGXD0vH[WbtvnR2u^np3vt6&CsN+?hdv[aI)WfFnrT@EhufE$xI*fO7v188%o[BoatEO%B;P%+orT4(%v.uD;QF?ok7S:1SRoL]%O$l2G2'_YZ0FYV7vH>nbmP$9Kc5on3?u(nvkB.Px8d%DfmqIRR[mZ/lf1?f/J2P)rH$Z&Faw@lfA`8GHj&Xmu6m,:9`QkwVpY(6mt;^PjU[72`aTQd;u01dhfBf=msuaMgp2t',k,_)Io=#P:vqr*9Q$ug6O>k>BV-+H&si%9SAEo]sPSno7u@K(_s_G4Lon.YZatW^)ogjB-njQ6LgN&1@b36es;mrDN#as&4fYkC9v,x6/L-'w2f>k%EIZb0:uZp+EnHO&hdWfLB*q'5C/kc3HQOwtfVq]Wob9@aAlb,K[c;E%coq@*9-ht;jo7NT#e]*qhX@,vgdlgO%-F=#6=jJ1eB3@u.O*RIJ*sD?,L.oi-lTTjBeOo[EX>[9OJ@l#Ra4_R8h>_n>7-*Uf:&0Wb$%=3n;WlqEV8%Z9;$9tTuO^@U5cn>V#dB7;$)L1r1o9YT6a@P`3hD2>e1:V8vV[v5frr%%`U#bYuaTN=AG#enp[0P]8o&:7vX+q.(cd#n`U$hZ]TcdQI+g:PBsdq/Xwl?>^`Cu`@aa=rZ1#-A&[SW3iSubL'EoaaMR(pQm^nP]]tt_ku>'gH*Ss,o_$NHZAD%pA/'KnGa4MCsft(9rFrG-C&11Y,0FIPF7[8unq^f$s6_*Pt35cuTAZ[#%O=o8biuHqOr&;0v9N.6lg&HcaTWIuP:kOx'6du@sN-i9vEM$mq0,F_LefdbrhAo;n6B09%l-tQ#9J>7vRS9:uY%sAuq?,oQ`,daOq_9`oaKptmgEbhKm4&tuBb,+sES+9a%;8bruGv3IeEG:vEK-Bj7cEw5XkmlqcaYuC(=7t^dRg8uPx4/dR,Y]1_US*^j_B6JLb6vdqxLMuj&6vs[uIQ5c-oY_+Zw2LJTcNIGc/.vlxs^jb.&%v,NWUeO-eeo$NBeh7aU>+pA9U3eP4c$gnB$)xN@r?5.`*2[>8tuC0[hffg'c`5+XN.22Z2g^?1h,ae=kSawqM^<4u+_WMcrF)(,9`hp.RIxHNLmIBV2+V^H:vQ7<8rlpIXWL/74JqpOtk[?KOJ6r(L_D%,OF`F1q4iC3xK`F?;qq`:3PuEK6nbC'-U./Q2kkHP/N_W5Yddnh1n<:2T=$'9+vH_=PMrIVBvkvYNdpWqW%lJ<5[HuxYMuE;w8mQk092gn(DE1MM2vGMHo@Q^TQt[jp6rRGZ]7R'=*2q/DYdcY6Ia^(QwktWA/u*dVKibJ0uu$Lu7b/Xk:D`QCkflh:S7vuVPA#fN]N&x#K3e%^r?LrTB#u.=g9Ko6#gC6am&OLN2(%%$7=rS9squ`h3vX2seiZPQn-aXQ8^tqXYg$-Mssk8$Zo>NY-LwSoh;,mPYBLQ'fkS(hwadR2op7Qn-'jq&2vs_8-LPjTN_sG?8pt*@ZU%[SpK=)-GF,52<96$#fgSQB#If.(#H=[9Rot3k6B-pd(K7/s[S:&RQ]Fq%pNdGh#X>MY1_%q]kb`P@b?#.[ug`nL9N27$A]G491vBQ8vRJkKYc.qYTI'L?GieudB)R.qIFRZ)Ig/vdsYGMtWd]0bcxEXp3sAbV2/M6jLY#oo_@JP2tKJ7NKi]F_:fWlsdkXu_TS(3hVIuPP]][4I)_l&65U?bAcJV$qle4U$Fnf'sNkfXSJ-$TlZTQt/+R[^/T*lJr8lp[Q&xP,4Fie8'&S1pRtwk-M]kJrZ/s-$'nEkPaxW[K#_)p^EIx$11V:>GG?bJq*-Rxf-[7E1suGW=O$[lfkN4NZRnQ;gLZag8_F+vXXuU+xMOTGwouP0l[tqXh+tL&jLpUD`:teZj0Qn[A]f+#L=_iX&$#P-cWI(XS7Vp+UxlZ'Z@tj?[o@4krk6?H^Anm[@xpPb+/CiruK'b2uEIX6FRaU19-mnU80LW9f,(rbk#-;D56q2okqMO.RWUD>=5%F3oE%*I`D$Cr]-Qq.g(8aCg;pO7e:r%6$gY<#A--0Ok@>v]Mee''b5[dxaR7'6rC>2^.qcGh;5qkdbD95xvhCU[maaAHQ5>@^d]sI+iQ%)P]LE$-qJXT%?AL%.>Qs^Beo0)q1LZl+<_VBcC[d)uAV-$O@hPG[)lfipI9&EdY-`HS5_`9U((u8*E$L%t9Z3_h370C^*/r5M(q&2Oc*c4Y=c^5#52Ga9G<[h`,T;W33u-#cQgfk;lkN7WsqMgbl1`^LnU#rMr/r)F<_x,hQk*Rch=>6Z$r;;=0Y[esOsnrH=#jgwaLt(6H+nFCko.AI$8$e-fuFo1BVn8D4#3RPbu^b1lk4v/28E]YEKf^=fLX'%fLi$'Bt@x:=<7x[+vn'p4J'Z'OnNxfCMZl+UT$W;@=XGA7vf]SPAXn6x9_TnLp-.%vkoG3fbUjZ?9c(t.2aUahEZ>vS#/uMY,*>YP%J28e$ZEW*%*iFVUheD#@Ux@O>(5.rruRcr$`r%G5d%D[in:`m&bq'>bHQI_X7IehJ'^KLBVq.(1j6JE6K?DoL2/.^akeUi'%Z6?F9s0s#m1(K*lhVpdHogIqe.[77lp1wR'd:j_x'3)6?HV3YVqn8&xsS>t>SVlLF1Ncs5ft']NXM@8ogZ?nxda%G0+TepA/Cq6(,j-^N&-+qkd8)VxmnA[i-mpVrp0Y5BUF7vVkg?bZ@qo_7JrM&uGJAHOPCJkrc`+Ea<$O8(f86ngkHJ@b%lC5XJ#Tf_qNvLhAkL_*.8xbaYn]3^Z40Iw%TN=;=+8[TtK8cBnr>ha9Owm48vOG8BpIaRfJ)fPT;)n1E#_aXYKRbh]d+H)ge[7:f-;8OXf`oRrkcB*GDOjLXA'eD[PY4ajNX:(xbU@PZt7L(d5UtnNn1OJ&$,h(b7twEucKK_G#=lb8j$Z&Wr3iN5viZ&*aV8M:L8cEng7b<(6TNK.LgmQdEn=6,8w6I?TV2Kka-&Khnedm.Q3s9lf,6Q_[3HckHIeGX3R-%uP_^^NlFva0hAW?gLFgpb$.ao3vD305a)A9TqAvxBdf_c'v>_S9;q99PA)BwaZ?kA8v3A83v_KxeQS:x&fY%#>CdRU5vvI8)dncN7v(2;srZC'+N-UA*>mJHhAskb6PA@$3:vZcUvuhSS*7^`Pdt2@xnkd+-c#B7S.qP:M4JW5L0vn/<:s=b?FnfEj%h56SffT-I$:>FDV$U?]?PH`ooQx?lEqwsFZf(qLIhJ8o-qg%WT`di^0p0K>>s*WE-?cL>srqN_Op9]VR./L1a[7`;eoT9(/?:9@5B2c+kJ7U+@X(^,ul(=kQkj&'>$M6*I)mw`[NF,Z:?%j1`)V7&i&x%6(FO,`jNID=u&CPn1-2X:>nA(/l%Mc64^xR:2-Q,Aa%4ir5vI^vELBwU.fo7N/I=J*xkh:p+a6xQl$@29=eVh-Or)L[-QjDRED;pr66hLCmJGt:xLnS.rK-5m]rdLM.uvuXJ2$O.vIOGwwshTs*uu,oC2PDHi`3FEMBl-1V3[[DE`i7HgA2dYT%heMkh`]1jJ6nx7.L]0iYIMNs%Bpk[wteO__;w?bwGd7@d5i+ef6e9W+`G]9Y=LotSxFm96N+,+h`#)K+b'Gx_kubD0&v%S;f_)tN>A'Fx>S@Fdp)L^RU1v3>MLui*)YP'tuE:08P`9J)KL)G:3XeK]S7MYHCuw9W4qrH*PSiv4hT@k&>Xe;N7vd_wftX2NE%B3-w4mMe,e.X_$*8K.>SJe5tu0GG`r,nK5vwN6:BSL05mDmSR>uSJ2XkDpHHuE?[lk:c0em:jmu-->fF33[)5niispsYW7n6$K#v;Hw6vot>8vYmR9vUNnwurKJ@217q)qBmVIUF(ogkc[%(%@*s0$@utITvbL.Plf6gr]1T0v-2gVG4hXjuFRL;?o^@Wv8W4oC[k06`:&xK.sg>d]hw7(36$'7hDCEMq*r^*XAG[/*;:/`<7L^:Zk`_>L,'Vw+qufH^:X>utmlo]k_`X?6d4HCq0I3U=[rYAJq2Su^n=LZ^4OJaQiB.VUJsJr$Q6t1Yb/<2b0v6['Jqcbp%F-Q[l/O_xF2OQ+h($q,AXg&i+:aSiGuDoaC%k?';QneN7ZXe54voTg(*([)Crj'%.;<a``tXXTdNa_E5&&6v#$nU3X&R/(%JaIIA5=)8_:Mnq?%#YN=o[VpP.Q?u[TqcdOtV/_9-gn(IiWLusA0oIVFo3vb?PRuf7Wu`A($HQ,t/`aeWF]NX@5_`]'H)$3av*eKk>:?AjLvoe&=#DmojK2+HZrU#4p+8TunkN)vj>&ro)HW_hP%NH0]3Vb/9-oIb.UX*-iYhXbifp5Adq0B2mu&Rh^Ejh>?,x3d'jDn*EV[-Fv9vaB0sD4dmQ4gt(:2mOJDn1Yift/ah_rlR'$qiJ8ikfij_lTZrCYWWqe9/L%tC(X5K=n85MmSCpG;jCT#OttK^*38J$m;1j(:8]tN?FULOnt[P1CE3K2v][B6kCi*'Eq.l,vXt>wkvPo,5#ZVF`'.QpK29I;o9*.GsFMM-Qe*J$lQ]%f/Pjr7v,$SsEhd'S[f]?ht.ltF(2X;1^:U8TI75>+L1=>&6#T0[a`Dso-HgF)7o5RhsUZv/r*b(BDKM(%b_5?C#(R23(qPciUX?nmus$dAXi_jJI`FM)vs1oxlEgCUQUie5v7VHgt=T6_84L<%n+S@YK:a&x;tRSE7:Im7ur[-G9V/f]jD$hLUuoVk6F)5hkCr=3'KF,a?Lo^:mAL]-)`07T.a2@6,t&?$eA/oYr=>;?xHC&4>nBCretBi*S[ZjK?[wipG'6nUv2vOeR5gGYQ)NjUNvk&3%0^;dJnH?>,PEhE2iJeWYp#l3>aO9EhKl^4EoUc8Om#>%pd>,N/O=,GKNfO+MGD4?7Qo(et,r8orG_*Q,BS:?8BkCHGukwCCug#k@U$1qO[,q3^SmBplkrDWXZR6pisJ-6%veZ3u)Y$g4ATTbuk3XSXuDLl$O6C)HiOQpYqFBjW<2[s+L@k=Aq9@k*r@iUbJk`[xDn8L%fA*:vImtC[]+gm]lk[2ZYa:F@B]IihVLDxck7TR7NuX&.=)P8SN=9fP]a/#:Ih&;DIJ9*I)aExBsr6E1oLwt>f;r/b#598'>7&Z2)ukkO1TBKOXGpkx1XHB_c^[,@PAr.)*,.ALeJc:Cqan+8(W=oY'Y6RG]lHb518cgD6t`1r.E>TN_a:M%WO];Tf(I&a&#pEfvUc/1k_Ja4dA:(iDUSVZ7fk9uIV`KB>H@:rHFYkMt$b%:Tp2;G2b0T`RNqvoWf<]7A1RUGlOvL^0sOl]+vb[gqH)/@?&f+:tJJPn?]nER8TJD;koFGlWNmC8ue)sg(eAAUUs0u@J5k@;np8Ft*[:.1``(Hu*bRC$PA?-0=v2Ut#AOjS#,GraruvdY#wtSD2>I.GR]a(HcRnR(5Mgw-kg*0=(X.L]lAY'F;#lpPQq+tUmwFD;Q+U@2tOM,]4G]/rqG>q4ba/3$(HR4n>jJHFD=)gqt$ZuEFP[9X`VSd)qp*kDdG0Xo@_Y*SoLj`%MLD'Na6>MQWjjjcUwglLBiUH4)(1>]Ou=jXX+<.tCkmpGd-_tUGuZw^Ag(.,V=2n4vedF_IDho*UM>o7JmaR3Z+=skmg`xdaIs+IkBt3.D6BL>9AJ1X8-$(1N%;k>72`a$,-,DiDA-%,(FjfAPmr:$p47v+a18Qx8JoR`ALkuUf;xeu/Tj`pgIH>GGL=(uA),mN#S-Jl8cfDR&JB<.l1So7^R+#aBX0W@Jv9'kRaD4mX(/iVPYQG&E+Jx$$^]m$TkMl]%(Ucmf@5'K:oXPqk99,DkRZi_LAtjuL_(A`G&EUcA;Cvd.3t-hg8W1?43d6rdWXnxS+$'oZhGU#5=F_jHT#Z5l$&Sf:;;>+WVeUpdJ`GcgKGaZ:ZRdJaKm7pcdDCS/u#kY,_o1*7JXrsGm>=pukRSA&v<=3]sxf1-ql8+,L$Z/Wl)^rR77NPX5)MH0u6AB[2Ln67R=T=*tH[gbXPq3A5cNJ6Mh1ewFHW$JFtq[[rDm4M9gYdtP@.KS2+#]Wr`UUTK(9kWKCd`V-:2Siq[Em2gogetW7dS5t1CmIl6/<-L)HslKjJf.rN@7&*oH$,$8r'GV5'qSVd`205mCd[N6u%Ysh:P3_Z(J&#FlXgCnR,qd;s]UsAJeB%hm/dNh)`(**GfXl9tQ0Qc/n(Lqglg2Kcp3J/obO2$EfILVQg^:KmZtkBc_:82F?]FHn6/^F>W2GZS83/BB^&9kx'(OoJT+L3p(,v5R.oBvQ(wf,hs[VwnD#LG$FTmNWUZ8ni?(vGON1pW)Y&X0-Lg^u6J`,sV+N/>n4v4l%5$o0vq>Nv0w;s-0Bfa2TEF*Ui:L$nZE-$e:q2`enefV-LJN4Uqlc)@6.=.Ek>DlS$JbLT-qtTU5(qIQstknj3PaJ;9SnHVZ+4atPR]v)M1ciX4J9vCUG3uG&r?MD1'R@qM^&-W[WbDGn^>V`u)AlFK_L/cx16j&g`kXBV3/lVF%rqMUN%l8$N'_?1*/U9t^?9q.YPqDVZFD7A`pr,%52lR4dF&w=dZ8p4S'Vs:IpW4_I=cPBpV37``gbEFpihCZ.s?o,(]#kDhZ5(uW^_m(88h.R.IE2mhh'I%ku'*8TP.HP8:XAKDSc#u:b$H9iYeK.qO^h%uIZJE@j$Nq_0>I_o#M0?`t&hC&?99Xs?ha$U91&Yl:Bf@ba^.W:/tD`NuVHx#OsqAhF*3:AD#M=gdK2WBZa;uJ13vWa)2Lg`UnVZbh4<>K5YF4$%/5Cjs>;s3lU)nhE5dr6nCUo'hGH9i;UXc_Oj*OGt:RlAgBSBI5KL3T_lc/4Wv:`qTk_vZ1GeL1L^k)o#?i-&gaB)R,;/C@g?2d4(P#2@S$>f8d`O@FAL1p_rua+Exp/Q_rA@S/ssF3V*2V:K9rPR/1&*vX0']9p7w`35I6l^j';?rYOrWX,dM:Q%N%vx_hbQM@/Kkf8MY7I@$1Xbs>WGS_?5]4/JAiJL9VYnTq)6teik0(e*?9v/fb^tJOvMt1jJrQpEI^aLkVBa'5@Zs:hx`JsW:.Bx80gf8jJWpN/HvtKGHM[7,woMY$0'tk_?ecK]NA-V0i'vbKHv:-.YS/,]Xa/eGafbs.$'YlCL$FEfBXpe_=^%mJ`7xtoskH@B(XtVY],:-dpcx=)-jp^_XFxKu6mZ_%JaE'cp'V5[d.4)J=33&X'O5d0D-edC/w(4:`Tl?)pW4O6.LsZU%[&f].a-g6s2PkiOOrutt-3kl=obR,bnIiO3,E3PNaHuJ+3'a/Vdp`1-*^j[TmeGnVv?nf[fbP_-QKP`484nExLg4mFIWrogA6t^T8atQX5[H7%P-LUue8vgnpT@HbA=OxoA00+RKXunB+uu^kiitbh+YsfnSGkpq*ZK9/;8v+Fm@bgK@df*,::m.I)=*gJw+2Q2Srg?uk-f/%@Lpw?QX3U3]92&gwY4M'1fqE?Ik/3;@L@0SpflEt.AVuq(eDg##)Mumhrui7pj7=$Q's6_WOa_:^HHSv0NZf.LEo/vQcc?LQ$L6(^R70`)=a)TIqOS_gprjwFIqA&4:v?Y^fo59qPMF[PtHf@5shT]0@VU[_tudZEM+bWT)4s$+;6Ckp>D8c.'J]scNu3o3#>^RSFqYX%Q(V[@iv>R6Zt6bj8432_sj$XF0qnB`B=8'^j6m%ip?UE+Gse4bA/v5UZe.L7vUKP;#%7ECnd+7)&I0(`:VLdF`+QZ(K>Mm;/CV?+:&:73*P.L:oEndZ=]rgW3D`$bk,WaXlL7HbGRHM,q&@Q+.=7t0v(TF)7FB_+R1sMjusnG_.0-Lu/fcNvk_LOZ?@p_9$j;RbTOi*R0PQO#p`Y491fDZxh)?CTdqHD`EftU%Fb9v_S.b.?qRXoq)1Y>>qk8NR.j1&v&.#.f'J$YpjhoWNu;eKrBS./']n_R(hw@nA'n$up&+2F3nP=g'F`tb3fIClK67nJtpM%])f2BuIfw]K8eBOoeQQ*%WbooKg2tCPBwsuhImB]mhG:YA.`(qh2AOnTOvBaD7]dVn*>$viY=it9,P1rHFpED#9v8/d)eT`R'vd4,+DYVm%l@q[NuariotA$&Se_+EOnsnnr=@tb7TFY9@s)5NfUPD=u,-rO6vaZ(0&:AJV&c`.uGe3)R7D;6Pq;IvGFdl(j&[XRWUG7(j&2];VcYX#:t#l(+p?wm'2@uPD?+c#it,^??Od?'$uQSQSDZMl>-L3(VJFl[Ye9;>2l@T/J5,fi4SM4:GB?&$wnRlPrZXTF%76.s2pZtKqkrR>]g_4YjlYWH7GP^A8-.?Z/LO@+WOTw`(ERK%58qgV+`]@VwPtKaglia]bqmb(7VFtQoZ&Vra-]w@2'KMP]c&%UGEuVsd3UagE7'@-x'ZQlg+?Q(^f,C*J`q]8>#O:O)ln-(b'oBCM99x]OTsuP?N$oE4ZqnvFMsL*-)NKEA%DGkAIl5a`IRB:ZOu_V7/ogZ'5Ya8M%A`EQD+]&5;JfrO>;lFCS?Y#q;v7[l)8M*YlF3t`S:2pWQ&@@u)UDH/:KS`/[[AkX1q`[<B.wY2n^#ippmKHE,[K+rq:u0-obo86``aC5.MIlAe@5Cn+fQA6lJ^o>+sM+:]4dBf3G%Iajodtm^fTLKtdh]eihAFM'nCe`*L_KSWJo9rxt1oTqsZisK#cS%pu:Y7I;w%C#`mD<^bd,#qrL3F*lP+2=.>gD12Y0V9dc[e:n@L$VG@CHA0q[il&(]2p^`Qir-^GV-&&fHgAP*AUb624n%6G5xtI0:3uZLH#QG8>QL3DJ21ojUC^aTc5p`.eWtLvl_Kw%g=;tkg6itQBArsw7PuaDKh$;X&Q(Xr$5q%p'R@GDuJfh&Yq-;a*LkT,e(MTF=%-#@([d+Yswv6njo(GaR*2,A0<5o>0>aP*Xw-37oVa+]&K;cu+]3cUQ^eJMRL&W&&n0abS4GeGDnw'#aNS5m&cMMKN@+sTE-p:sKOlAhk0rq;'F-+9:N0/%w^cNIbV'/_I3D<)I:e'^$LS%KKtR:5bDJVir?gMT$ao8VrAS?7nNkmhgDW`6>R:vNj@cf[QNr[pm@##8Z6oJ]GwiJa+.5qbd_runj#@b*Fg,(+kkIYvJ9`Nn/M37Sm:SI:c+ck>Bg:-p00fqcT[(bY(kOm$*a7vjJXdQ9wHu?Nu=^X*I-2qgD0Bmb_q$DJZHu6<$+_JsF9xbgwl#9hEAts=1QM2mE-fE3hm@dBoAM%$w?.qWBfd`&0&Vg/7/l45^-Lk`JI]:b5D`_RHnJo9'xXb8>5d(O>%'jrPm]D.4C>d)gGfL,PfsQ/IOWlZ)B47LU&L,@:mDt7%]7@C;;Ns&@95B_C3^_Edmu2[,%QRSdM'u<*h(pQr8vhHxwkmTB?b?XkauQ`easp.Dr5bkwYi>?W86l.g:%^T;c1M*sDk`[ut56R7c`puU##Ph1iSxN(nuMT>oRPhK:6dh-/QUMh853c@_om3*%a<]JH?*Lm(p=uCjauadS(0u_:K6v+iDN*?Fd:,oST)c7Mojloq*vc:B00$loR7nEgZU'1H=qxL41onLnEl#6n(`-#_+q05at*cFaL7Vhh)+%)3bM]/1X4ihws`))nxS&YhK?.mt9$jc_KcE->rmMMCwTdE/*_HU_'ICjRuCu@o^2Pr;x'<[)Gqx6@t5or#)u)=;1'C.;IAqdi:QWX]5(eY:lt^&aN%cF,lO+:1)KU6Gu]ohC'o%sQS:'qT0o*2STjoIn$:<6@/*0llTQG)nb/-L&P4`%1RtF`<)7PSD%#3QeI,S/S5L$WhILF(Y:vA@7jM?fq1JSi@htRtk[WQ_EFV6Wvjk1;ere3(LXP38NuCX:gC;4BAH9#u7e?GX&`MoxqKcf7v7g+`N$Qx#ke1*ecYQ_5#C)su'LM_R5.LUbB/j<3L@?HBquj0%WL8#rk-vu_LeHJ5D##I:510KeH>UG8&HSdPHUI9M2BdW(,G2A`rc^8I%l8Ccte90U+'IC0Dg&AI.R*Ml[=re+3mevZ2eOiq`a7F`P*a/V0S.;5CxIl(JS.^3qJu^T:Y6IZX/EhLMFtTxTPkA`.L#cxAMHffVq0_e^,qo%.NA7P:A+U>67[.9whJjk_BEAlXGlu5`nU[o9r$NhdG]^_F4v?o1pjq:n2(-*j1a_,522(rOeUhxm&vsw+N25'6Of':,OHH[m0-XRUY#Vgw=#4#wif59/G2vLARu&OI.NTe#+`)CgF#bY(GDtM]KWR4br635a1o.&uE%Q(*.bM(kIU&3coeLd6>_ZKBML,nn+Yu]MP6$Mf>;HPpbokk=h9fA7v'I,8ApAaM%`D;&boKi=U)m6bej%?^f0G,G7_nV&3f&w(7v6da_gexfa?Ud4h$D:[6^gN5-F8^B#h_V8`URtO3=.1,)<^(+8O]=U,A(G^kpu8MPra]g7'J=dqU_d#*XsvHoTZ]YKjPkw`FXJ=.]C7kQrGDY]vYSq]Pq)-3%;hZ['77[(0UQaBh`0%+*l)OtuYc,vZaS5%o7Q%t>8JXhFi;c5FLT+x[kQL(7>aX:3O$CW.o3Pq:uM5Rn77OjK7N.J,$ENSL/fGn1''acXo7a'n>g8v-IH'Tk.Jb_-2`6ZBPi5G%3P4iAa4A4hRe9uN/-kVF2mFi7qu;&s9jKP3V`TWnE(4,NvVxE^TnV+t?GDTi[(G,un-2d+MRrmt6(id1%HIC+DMw^N?u3[H12Qlt+.u(1^ihQP-KhDlF^hNK[YkOq`j(d)'u5uQh*6js#pwIG>jB;Bh=+g7VY;Ks3Z=TId_9p4Kg>]ucsbwfYAwG0q^b:-+pMP&^/7VQ_-919&dBaS#jotL-Wi;Os$B2v4oWb4]8K43Mw+O?j'JREkx+euYu6xsfBc;dV9ukpu/o9bs(Z$e?cjKi%:VQ>oPe(t3VT(t/;tu%L^s4[1A(_ZtxCT38jtS<w.%+P;3MqUa+ekde15I's7&=ln)HH_sP<,NY=@EsFtw]'Qq4GhE*+tG,+g1NCQGGR`BO](bHknLV:Ro:5)gE2p,ao/+rEf?60U$2K4oe5f6'ugxaJIucve&NdGiK@TD*I$^$+qIt_;AZ:+?$+lb8v(0C=kBT?2`&0qvOtS[uI1t,=L)o5(A3c;IA-1f4qUqe[O@O#bWI#(>VA,JFrC4b?OJHQDu0R<`sQl:(]b6u*r6[8%lW-DA;ncN7vePwEe$xg?mKA)#R4=x/#^jc.q.vApc[OS.h-kn<-7jnegl<2asOC20K(U.Fu$i')sXGAoe1*p.VMf=42^@)27R+p;e+3LA7>D5'FN:%MK6k9wkf@21)GG#-vZ6p1>bxln&0MJw70CaWUP3kNK6Vn:n0N^'q+uu22?gF^)$#d:U(#CH;pvN0J^J#Ht7G<)s3<6R78.Oe#,X6]s=m,-LMx^&RbD^>k#;8ip&nwa]3mY+V%le8uM,:I7Nu1`7Lf^:twC?`3p^hXqmMTwt6P#nf5']6*2b+N7+vRLcK'mqKmJ'QCIn6&4rk'rc1vLsnE`4Rt.(rqEPf&fcfLVl[.9>KNv8HxXZ*hd>TF*1h*vov#6>Q^jt-Gvik+Z'gZuOZd#Y)?r=<:o4Z,I''Uc(NP2B%l+LI9cG(v5+r`FXqr[/;-:%O`7bD'6E6Fuo%#O1hqv[U*OG$G(5)9uNY2prT$ic@-vYSi,.X9qnYNu?#mFf,,_K*':vivVR[Qq^>>@k#S[2$vKgij-fot&i$&_<&'8v.rgAcouw-LR[D2utn+kedooLpT'2>lOo#Yam7VloPFsFi_RBoepcTwil68opbMZ9vmrilNth7c9vwo(Kb[p7xt&r2jNSfQw1P$-DE7oe'*4t#nJqeUbTllP*(8GU*Kg&(wp.nBQ%,KUsFpWEtXW1wAt*=:M'Gw0;$T;-[tRi__3P=G+v#10Eme*6lI#0V<`OiD7bq%uOo2kir-0eT$Zq&6S^=UKgLEfC%bj//5L6jmP@2;.g>3jY#Qq;tJxNh4sqoUf]_,exr>raCDA)M-qS/QU8jkO0fqS77vBnvdhIpt?,iDv#s:&a51$I_._Z,;Gk+SnRnA3wguWst_uIt@ShvpVH:2oTuLC9ppwh%*+'q+r];)/s*5#a,n@Fq/c.p@NFSNE+lQsD:ca_shcMhhF=8VQnr]GfL*.h@KBAlEO8S:xkko]NGtns5$XmP3u?vP7vq.<,EEHiFi4Yh7qB'+)8Pd`TuwamCMp0x:?Z8*h>AT5'qEE[S>)RE2*FA25#ZB,tL;]g=l_7v7Ijmr68_b3rq$T0X2CQ?0vWDwOF5V(7tY4i=cAp$CjLns&pm[%8UC7SfCDi)LYG6ua<#F&9[JEop^[)MeS*9gLk=jwu0-0P#SOA05n-xT378bbqt:@uMZ$)kgkSA/u@H7W#Iq*'-?r&au-VJ%bJB@JnCcE<:^Tc#9(LXsIwtUm9GbL53U.-vRQar6lcU-ZIi'a6F?EZ]K:K9P$ErfH&>ocbq&Igd?Rcgu]>n3x=)>x&:$:*t#LicZsY-XNLt<2D&&[X#b%4^cUXd*6A]mn7vnd?rJ0fAk6bI&k0dTV1ex;BC>f8'[S]3/X,0wQk8f=lX)oYc[Q5.e-AwNuRvpDd)omthD/L/nD8XpvLttT$G/LD9UYra2>6W)^7'W]8([aCo=SA4q*Iq,njju.e7#Lr$J%tUvLY50EYdfUrfOmc*22&O_4>%PJ8(EdK2O,U:)0[Jkn_`(QfSftV%dko))ukkC=VH]UhmjZS;ca1CX*$Nw2es=_khpxfTD<'5Ym6Q>hku1cRtuY['94mrA6<$o)S%lvfuP7D)m,LikRG6x#@bwBOjf:T4:k/s.;mRL;efX6ZhIQX`]a:e`p-jTV._0dHxg0Y]l/jObW'/NIr4]0Kk>aN^'q0iE[9^Rt%#J7>4eNiJ=#F<6Pn:E@WZ7pin'+D+&'1qiTK^t2QVA?gOIFj=Ydw&*,8)lGp0fq/iKxjB>uIEGhJKb?7m?v:0DN(#jEc1?#i'7kDD6u-F38'@-aAi3u5vjvNsZHf12-iOuHL&m>/;q,PZ*+4't*kZhNto^1k]NPc;1ap7Pl4U7ip,_D#HN[Vj64-tZh&OQA+Q$u;uoMaMqHO#I94+RS?AlA,]B_k[iuI-^mGCeo[ON3lFZgWL-5/;.>$+cm43mk+:FL2/Kp<^.F91SR`j7QspQ/]u?d$0c[[N'lYror$1V^xFWDc7QkxcWG2DY0-g=>9v%No:QbaEV>0^glA4[v,$UHv^cFhX(sH5xof%Gfc'FDdSa%>^-QSW;%](AN9#Lo$e-oE@Uf>6O(kquP)dD^N:##ZHE*kGh)Y#%s%k(2c.MoZU'2W,A#&6Y9hx&ikwQlOhf7H_Fq.8O:6I9'EIQs4VghSNJ;1^YwgM-u<(fM.JFKf:%^d&$oC2v]j]SoW`&Lr19tQqbg>rpNclf$vkLlA69Jsf8p,+qPUGp*F6m=jXYEdd:W(f_TMh7p=,wQ6+cN`*i%(qYT=#P5%9V?.581'TtS#M-d)1>Q5_,hZ:lr,4uu]8bY4PG$S[wC3Lp_AA_2,(c#%E[v-Zc*YnG#Ovsu=B4.%t,6NWm-#C'co/9uMiWLbl,2;-HB^q/8d);`QnvM%8MJAq&A$%DnQaC5Tf3]uWDJ[C6A5:^6wp`AQxtVlj:7xMTs#Z'eL6.m)JLlR>>[Nosrsi(S9H9w=,VAs-fUX3jj7rHk/q'O%9v$#[WG0CCXcdIfKUbgJ4jOdCfLX'A%s1A4]u9?0;tfxK>rap-N6`8d=J*D'pHS;*q+^3T:-3R#QeFv*267pH%`*mc3Gk#Yfn#Hi'_9@/I]c&PU)fbx&.qaTwqN#v(TQ9s$MKI_V.eju-_srvPQh5ju1RiNNba#PLKlo6h+>_=l8mSQ+i877ToKtQ2)Q3GItf$+/'&=G`a,kQCO`ix'u<;Q?tPQ.w2Z$tfeWbeAZVWPxv@`BbCX/q5OXWtE45Rk-5-V<+)5rfAE5bstqZ>t%<,gSLncLu@tS+EZ^jUIFA3%mD3N+LC7_37EHqXOiWKifFM(^s8hY-)Re)[=,X%n3=duB=_['k+E$SWoQblfa,(7xZ2@5PfIWPjViu3e1&2fo7dGb+C(`Q+2gx1Js.K+A`*Q.RAN01SN]p%N4'&Rd$R0EG`=r8Q[t@Q,=T34*NZg4>[Dg/pT(Zl&jn)pTsUe-T$JdhmNP6>^tGN-*s3e5qcKqDqXM-dHU.JWn-Nfj>/L#W6v0$mtM6NmV]9a;S7R3s.k#WUl*:%O'#48v8u.*@FapU@b;?&iFa*_JF&=@rod@=e=FwdUTrt&2@1I@2VhTd>.kT7GmkYafL-/Ei/tdml(#cXT'l:@&2b?G)YwG?%LbX_kpZ0ci(V2&S*[FO*DfKC*#`eR79nQ,C.,80q>'1bpxM/gh_*@C?HKt_#_cJsuaNB#ljJ9Y#Xn]juA]fY7OYR;7^HnG$D)A[u>Dsp`X?:S7p/_^f9PaWUXwA,(pup=al=>UYp)_UIH=vfoH$%=uiA/9rk2=f0$s9Jud7@TZM5p5J;u?WfX#(IbvkZLV/uR67,:)T6[s=:<3(Kc^L9=1wk76tG&D<.Y2tJIO87ElR:mMLjADeU5)l+x$6LcvdkZ1_3O^0>o]`.TG.K28?+U:F9dF:T[hD;4UK,d1bIqZOuGFc]J-?KrxmI6n?YGf5vgJA4V(#Z&I'hnxVFkB?e,lmj1;-Tl8rg#5/s3[apWMxFH#/D;ccKB%u]P-q]$BoM-G5hp]c]TMVew^1[]2DW9KdfNt,T.LAi^kr*8H`<$tECanLBQ.@Qu1vdAH-d%3`]`[lI+#5ds`s,cEoB-WZ-L+wEY_](OE*_v2mCjK.Ss+E-rXgI*]%u'h7vwsFQnvs$KWOd)xu22nLApecMpqhv5v8`;Ls/mm/LY-m1K':^>BHQ/xkHX^E7v_.8U3$cfh7<$=mB7m3))`sr;V5K;8W4Q1;WRd8YYE`Gl0$G=BH.K?;/bEN`ZFMUW5TLe.1g_fS>,(p,3%P]V63u7L=La/AH*O^'.(SW1MK^+H/vhfofMbP7X<^qA_0ubV5v&1wR[1'u:9VM1&[V0L]P8-O+:&PM1vGH6A3m-xR[7:2fh:F4E%x/)SM4*IuuT(5AvT#cW=1X_['YrhaY(lb)>;f7vZRr/v8)'oeQC%7P.?.AtCxb4]oKl>pDEuktgFm0:u0?funl#5&x#lN7CO$ZSeURp,c5f7v[]qwXiok?M-Q$J7T)[&eCC1_L/7FY>0955J?XM>rW>dAU*^:6#g]tuWtTMro=f-8G@kE#8>8sfCEo]ka&=,vJY`5cRoK4IY)A/u@kPRnfs,Lf,Zh%ir$S#.ipCK2So].qHb>(hC<9oq)YpoK0x4GGk$*,Nft9ZKZ2eJa>K^?tP:v(l[=6l,Ak*Kr;.^,JL9YdqL&k3GEt>6v;p=S@)(HxiAK2X5W(xrkpTY:mG-TR7CF#fVpY8au7J=efIP@sLatt]a*lJr:dboQl;eTRaodmk?.>Dle8ex3$-UGFMI76<_P0O8u`4m05JCx@OZQ?tQpZ55u.wwkl$=H5Lf=,5*Z]HIBr,3jLe>KiKsoN_jN3RR7/=w],`KnLp%**:vPOJ+qvrxskfNi-LYR0%a;n'=2u)R.hVm62B_F%1q0c)R%iME8hSMF`j:Qe8vUs#6Ows;I,aliJO*L2FlQs15IFM*d:h,:&koKfXIQt]p^qkv'R?r)T2+01X'>5/a8`5r&S`jUap/VavMe.*+^;G,B5aKJKfI(]V';$Xl>Nf^#L5fNxwxt8niWKhQsJfwE]:QLSYEIt0mG_pE'J:f-=+L6Pk0qvZ(2nJ$7qf@'+gAiWpoKkeJT;SIQJ[r)sAFcHXr-ESN,U;f%-u[Y[&mu_DL'd2l&(FS4#SlU7;$nERJ[u'-Gjk+d2_P0b-`32G5I>%<#IpJNp2v9(THMp4[TaA9t(3ltvCWq-N5sul.ln-nRKT-Xj3Wm@^,2#N@^uj?ZEpefkFiB-6/qTQ:pVKhLBBNd^i'Wl):v,0NL%t&i9vRIXJax4)r+B>N6ka5q=udCK6dhZIk9GC-Ms7UDVeX&l(<'9Nd1_$45Ld;e'vSZ6utG2=?khA%:WW(t`UISVh1IDMSYf5Auk+J+l]8/ohSmP-LU/x=CHXaNKR@G-jXi8--dY1R6#0lUAoE[f$%sCKX,;'wXlme_Y?2VC4`$%=%KmE0S72IEJoutblKk@KG76eZCD-JB7vo`fp4xP5=Yg0J3b[l7&mts[>$)ZEY30=7X9[pim6@=b+Ri;jnhw(8i*8*q.q35SD(-/*NWbRqp.5nIF&2e7'5b8gV@2rsb9'SYV$gtA[HevpT_,n7)X[.eRI?_*lP7[O7x`AD^fVruk2g3GFia5vJle,r._jnPW,:$gE.CDI+#6%]9OlSr6D/uaZc=/f@k]UY5v3Y%6.Ihj1v/i/YB_<39>4U8#YbdAU`nG?0M_,d8:Zj['L/'C7N)n=6u,Q2.=7,4<#0`hVeK0%[[Z1j-Lr>L1#IF'V#^br/5EwtItEK)fL+,^WGCE9aJ$gj]@Q0jguWgSgLcAW<6Ibox$(%7R%laDbL24#0+:h2u=>kTWt#JQiqV%[-1lEO.rC;t?kNSX6vPhC&J/+1Zv88=uEA$`6Vi5`7j1==tq(:oVNZv(EKkDEjV_&jcUd(I4oS'K.Yfn5%S(;A``eo'g[Q-F0d(Lf'WbDw^O;j$veTdm)_S^-`]u2n>A(lXdfTZ_.LE2.Z<%0ETrb-7hkuiqbfvAMHQ1P)ls$@jp#q1/B+dn#EnI/Tm]bn1a08]*4UZS5r4bv[ek(6ROQ34X+,kP&H.(hutArCVm?7((RSA&f]a7QRL10MK]j1'v00te'Pjf;K%j&Uxtg^X*#'8,1g3SGAaxNk>KV#gag$1VEC_vvH)#5(7j8ZX?1VBodYmt=.VT$R[ubh'cYlW`8c>lk#a3AZ--)IZYejtB?gdc;Y#`OWDI;a)S73S^m%@2sR2Sw:+m5ud(hbe?i]RUWiKZHuYXf9d3tX$eH$HYeFr4H>a)Q.+GD&e^M.'eR-v.3)]:vvB:rG@T4/qkPV2v'^3uOshmZt<%J92m+xt'0FsH?4Hd]sX-$jtE]frlFE%%mNW'-KT3[1Aq042iGp**@68p>_]-/cuhU5l[cLHuB0nm:QQ,=ibLHoImw_2+v3KcG`IbnquN3UVRkaK`s3'A-K-nKtCAW6T#pQA^`mRCDu#MvS%Ws,Jpi+LhJ>7='v(kiFVKcl/QN[a9vJs0R%f%aV]HNrNb0?%T*?>%csg6U(.m7)_@uYtAuxGLn3l8D@)+,Th&Z6:#5>@H;u<18fNq12SIsr_NTlGCMGx17%>l%VvN$UVMKKE=tbIWDq0rn`:dFnXSM]V#5r,%;00kv+F(g^mkUs&'M0%sUTV?KgBu$*&MbCF6SH`ve.Tqfm>lL(X',AIwFVW]QK+pp0$+YETHib>oJ=2+eb[HMamvOQUc(u7Efmdd0ZfXV7?4w.1T)`K#.Y>:uur8or,f>ju[v*.Q&3g2Q/>Rxp&o.xk0e^d6[E`370fX((S2t?+Lts:H]Ax9vw)bE@&p5fqoSjeYY83jj]5plFWe;5-%KK7EO-EL2^X=2#KE%wcH-xfNE9m3vx:WT)*:V.h6MbM7F;Xh$_q48f3kROn0T4H9(<[8vC)x?+#Klgc_&7R%;Q@1+X1c`FOa4riU.15v.Jenns,^SMj1$7umM4$ZXjIqT6lZDlKg]op4J9RlTRRIBVQD*^ITB'Cj.W]*,kj#anfGXqi-IKX,2(fL;/aS+JNm[lt36hhDVk/Q-PAL#`)e8G9CtbRO$aRj`7v.3A;CHmRQa:g].L'V(l-j`F$G1JX6v(l_jkvLQVs3X9Y52n>YofR3$KQ`77U^R[JWLcYr62%U<-rJlu7Gc4b%Jh-lo:%Q,vhJ]oK6>fI4^M#;?Tpu)v'*PQuQ>R8-Xjp[gEM+MTfqhisB#m9mVR5`ftMB5).+x$;#2w37RwMO`(:n07to$e?Td5MnUH2U&K4(KK,H*GhllR/m.J^,'#Gxjpq9kd_3858J&)]8OxXSWj'a>vnbE#=kE@$O$X`VMV[&9I-AIq`SEaZm1g6Ak]<:J;2SRc:kbbk8YSb6)JCGgI/q5rke=/vRWi1q5taEp5o.u5)^lV,ZZ.(5'suruPU6G$ZhQEB+<6G$wLLvYTg4Z*C+[psOOPlI@WarTHaQWS[+b4r*l).q=8SA&rC?3])(pmN]xs;p&__?Y$[-M#V)cGEsir1v.)jBT=>Xv9r&M83wjjJqf3/]$s7S(a1;w9vb&J]=`pG(s(#gpr;cXl86P`mZ<,%YqwJpk7;WVwcqc]-1;$O*7#C5)lI5$Be>HQXgMmX:`;?TEi5s4&nMTs=CrF`^KY6uTwC;-Ec,GDx4=ou?LudpMX1#Px*W&?U)>`qoM)']ki1G2n:F6-:ZF^rru+'t2LQNVVvtHwWj0Hr1Yk)JUgU+:F:t:T?>OMw>dJnaD[t:$EduQgf<@(*aJ'6su45%aZt>NO*uU6*O9;]jROj6F+A9*;;tC`sL^T0,)h#9Zb/Q-L0BGKcEYIb^N73SSfpYZKvvv9$CYd]s'L.k@Q2LvpgXvrK^T8q+silsP(PYkSlq[jti(qnjxTsM2nqAs$5jk`Pa$e8Vdgv+qAEiFFnMa:,cA]'qoZ;SK.2%fq,]2QnO')du]uW'$4:MV[V4?[J&RbE@_5s/d81^%5bUSqQ0`4msrB6jqfREHt/du:#(e8D3T@xh(.GBe0N+Pi;l$;(2QRD-(%#lWNBc*5uw+q2?SvZca7Y']#7S*-=OvqWtOo@>Q*EhvC&=fxF,G/fq[;XRrYR_R7TwrR%ew7h'%#ubBqK.5Ll9m:QY&KCiHBu.]1UVIQJO9qq_%4oeAq/Nbi'C_$$K)k%TFrJrC61l(r=ur+P(q%,5&,*,/iBO5djA=Q0iu[++Oo*FFFaIej$,RW%xk>#V87DAnif/v'.6)&g(vbo>W&[dK28^1c?ds%#AFttv/2K09NZbZ'ZcMkH)>['&CKx&d;oZG1Joa/1U+vNkEi.-l)>mY@t7uJ*V?UL(/u'[H'S7+w1pVQ(X-L.1*oqV288v^]V%vs8R)vHC?ItJ?e`Ne5-,qt-*-#k>HUgw:/vb4>r(vuH4/aa6/cjLAp%LxToi5stfmKkSZh^&aAV-v[IE[O:8PZuE28So*x2e#Y=[8#?$9xn&l5W`U(*R,6CJ/hhhlLn[=UR#TWJ/vnq>#&G=boervIbT68+dutPm:rdSR<:HCe'7vW/EF`;<(Qn7?s3dveURNQepm4/>#]II^chfXRFQ1D/?W&V8v7LSwv[X]?:x3D`wM[_N'0tiOnEdo=<7tX(f?`MKj?VM(`EY^i73R8Sg6#8DG'LrDf:%jl-EQbxRAC(xIpdGYRWt<#.,vXc`<@onN^[ioOOu^W`,Sr2JPrL:Rsu:#%N$$Le>IO)PHc)g53#7I[0:t.7?5cU3;sP.=)_%k_%vTK-_smi7Io;?LJs>nQrQ4MW2&2=2V;9pXFB&gQ2&l/e?r6dQ.k:WEUl1*q-q9rNtl]$jG;FV''<%h/*ndL_^VdqMFLq8vZ8trKwmI^kv7#NY$bj/o#l/N;%)L0QMu7Q7^7S2aK.[IEUI7r'OOa3vHprR6F#b4uVJ8)`JJPomS*2M04`NRen[B(+p5'GMOBeR7kq`#$=P4C+v]*c*o/VDDghHvkZXb*v4Nu_sl8TJi=aaB?L]+]t9c]+qvGhJ0`BhP>&qdL9pLZVq,wH.h^/AL6SIMxuiT?Kua_?5q1'?F;q^vO)w5&pp.RuM$FA;O%OLBKIi&x%/@lvLRwRO#qT`l5QHgYW$^ml0f0MwiJE;[`1,2^JPG[O`U;6K^'6.>ELXNY^f>4CDVJ]HPq695Fic88tutK?Wu;$M9#M/>.:76mx++b?`<;ZBfubKUt?qS8&d0*Q8S?Z3;lV;/'%InY(spDrnUR90vgj?.[um;ioAH/mIn+m:YPdg^aa(%t5vF6Jn]Z)].vrC#8dxtV.Ujl>El1KOh6snRWVR0;O#WXx9ZXU^8v;wqaG;*+If-ov]Z9_^-YmW(;L2-GWKmoC-UUcV^e,)Xp2v^NE>H/,gws']gctYe*/nCe]_`5rN+rf,[Csv7M'mqfwY,jeR6vF8sf^6XDvP/8&OME8kCjFP]ruh22tkb+E/2e((8EHDr(OFs,b%*o:S7tvAj@]lC+Ua^+[sG'cx9+$__$:RhR<.GW0Tp`A?HDUgZ(UOm3ZQ_C*L`>lp2`R(7veeH$rNXN9va^*Ru?'i%lYpj,P+2)QMqwT>[V7Ud'tTh0aEtAfai%R1EFo:xFD.eNuSwr>%_)v%+:?^[a2JgE`D%KUun@YLkWAB9vL3TVGO5x9vJ[xm(^qH+OroH(W#-GiANjQW&_iH'&;/v>7&@;3a)'t1?[@ox+)*Y0`LLQkS>#iS*af[xEO3`;r-8@gCYcwc3JN`(7u&Hau[5V_Wp-9.qb5>5lHBr@1=%7K'#%L?%8]IN0/ap=YbSb>jSvWt4iwvjLJErw''j&Xv'GbmR7dA`*vSI#^0aH+eu%[judwiOYu`C/]I6;+r=UqNKPb@SGu-rOaH8xp/q-hvrq3lR&`#=X]FOmv$`[?,,Cb2G,o-j@F;&$j7b,p5n0efirZ/[:DVe*:G`-LcP7U^oJ`>j6WGAbts[H$hKhR7'Q%Du?'*3t@v/L8(5:g_T?'Rm#UqFW*>NscUO`QdrY`*Va2qsWl@fuWAPHVv95RQv@)._CvN:m$R*PSCYm#MJLR]DhB'2&P8w$LTw)m9P/puW(x3/O3&-UceQAkA%905dkR9;u4&gLB5U;]udT.LIOe_sT;ALVUXX4vqs`jsY$-4m;CRho1IQT[2F2YGA@s^JPG,g7P1InlhKs1HaGW_*lJ>=jdf2T1&;D=F)Nf2nFD2R.Lu,,Y*[j%:Q@K997_.>5t1C/1BLFTHm;bbjeQj=p43;/Lfab'c<,n>mKYKiuk%v)s=??_?'GKk*pMC,xtUIUf:uXAq=gG+QV(J*k6N]L(Dhq41pRVuIMF)lgfhUxg)gU9xugD)2BQ#x5L35SKmd31]3TIQI'`T8KE-/ouq%ZJjojU&`H+g[f:&Dh?jlt_fHwC#qq61DKV-IsLb9M^<&(-3lN&=*@uxrtts-vkuN<];$vY)AuYOMP+EAXF`JtVP_HCKgd(2?46)p_d-J1QOndxtA#4/4GjHluwMYne?U#fl9;`/ojIH]7v$Mo`AsJqQbNXH4$bHDJ(us`wKHclRAjVVbl0^pqut;aki#@)uu$K(4BA'hr*UGN<(Knt)]o=tPYU:QnRnH=r/gsIa]g)8tkBaod0@xh(L)ho=.N#kE:#l?%POj#W37LI>(._QgO@)X7qW1/d&AFI&u;q12H17KtUE2F#tkJupIa(C*)dXGM9dM:J^5v3@X+qHn42t9+A,r-dc;8Dcn>gC=B(aiZPPiL0O3sK--OGo*<>tT19DA?J`B?mrlFo4IWu>pwfffP5qM-9v+W['u1xW,tNFi>Da88cEqa_159Qss4`M[1fxD-@khO@-n*)vcM?mkj+R3vSf++@XW*s7lHo5v-iZ_tE*ThKhP8w6?w'?B^TZdu17uXuQO*lR31kj81jM`wX4FHZtlZ86v7k@97'^xIBA)(87O8M_sbXT0V8x16qY[SJ<+J@T5&TEjk:45iT_E4XtE($V#+O6tJ&^@'-3S=v,mL#t5Y)`&K_:M_a^DJQmCF,VdPvEL>1PO+rpUn,L>w*]:cG7v+HQ28v_cxA)m,RLf-gaJIg7;kYSq^8QFo3H6@t_XGk&qC?>E^ZUL=$pr@-')jl9/?uc$rH'.#caT3hQ6lj`>JuDO)wtq3A=jfU&?pc/cM_;-;p*@(;_N:dTn>?bg:QNjWIumtp_LB_'_/I'ugH5sjdT9xw-#LX?I$_kjju3E9Zfc+V:^8@n=q[.fDH@'=%k[t%jmRe]qx^a($VHFPVVu_5h,QR02EK**IWT%QQW)WR,`BL3V6MBVdxbaK.jhf>i2S$oCabYMD$%4gaI[ax)'IVFH&+c>n+'5-E96)P0EODDpNKPAX)Pnn28tuTgL8`u*c8%Qp?J`Rj*eCj>$^*OKf6vp>Lbs.=KMuuNG*lXG;S7q2dmK/f,)vuS]K($]tOna1gF2R9:=gSVBX)AF^a*,mQ?r620,J5VuqH/[WX#&oUBpNXA)RvBOq&=6ex4Te.ba6=WJh<#FopVw>+U/#U^bN-Ppm=li8H'O$gkMPL@2K-*T;bv[^s^0B@&E&G'?9IXtj>SCa,didd[u$ghtHutl]vhH.vEPj4u0ggplPej(C'x^lkh@*uj_#stP`,Px45KXkhw3nH`uh<=tcKO--VnHCsjF'9-0Th6rZqHsZ5r?--7f-JrtW+8v_ib.LjbeiU92vXNc$?pD9.QpKbKlhJd>.eD.n=Za/7k(se9m4m$qP77RMmB:AqM]aig,2ue4n=785&S[Sg8?bG`)GMZe,go+e:BSHi)rHqj0sOSoV6nn,2GuELqDd-L3@rjq*+Lg]B^slJ]`Nx%Ov0s=[C(/_l54gtr,F[j-Lwqtas:^-h]tESQs=@2SR/&w*1g;lCa[AJvnRgBG)`36W_,Eb1Kn4hA6(^3VHbTCcul#d;bqDYv_w6MNk.3s@Fs'adeM:3ht*e,rO;A=;r_c&*sd8oXuamFdlbg3,mHD@h`S#;=jjRv.,Q^lFb&j_[+V/[a$lht5.ut#;Bfa(28tcirhua;Lw+]hrml0$[ct';0>kYW+CH/KhQuYPDotZm:S7^52fl$(M4S-Yp8-=m2o%ASSXu:9AneZ30akj(0B#-I2RmH#]R%-M,4A0v9=uNUq.:4dJu#8SdumfABYY,c8kfsK:1t^'kGlmlJef[R<+J&-Nvk4c(.qS*&rKeT'[Wb6KefCwjEAJ=#D<_JjWS4%cx4lp#S@=;$ok_nq-_cRrB/YxRIaMKf6vPuZ*:CDel]'Q/D`[n64J5]u2kH:*tLl[s*_r;hu,W(%:2tN.SO+@lc2-iRS8:>40.pF0qjfYp1=joxEn`M1EtRn)15Rl=AtX79Tg8iLCVpmZfhN-,]eq5GR^0<^d6Au/s9R@'Tj@V4b)YK9;1;@?PVOo]Flru4NIfHiJxtudF-=H.p/%aPT;WH3exMa4[tV,OnUvk3U?0#CRM@)Lu2#0DgX#5isNurwb6P3N+mgG',XHp>vM#t^;+uA`P1%4<*wSlZhpdHI_0Tu(,7[se(mus6hDh'w$hRu99v^PFt7U+U2&[t[dR4TbEftudXralLv&SIPLLNJjf0)oFF4,vWoY@%*DP)_N>TH4EfPV>^rYPqY`D#qfI7NpcBo2*i=UxF=q6xtv0DttJfZ:GnSju-%X,-d]p49Q<$bi'W@(b7-xOMVH7Z2Q:>Goss6u77M:C`<]hU]+s7+C`(XUxO[f*GM&r25&nbaX,gBr=IRW1-O:evNUdI/6vD[:9V-@Ra2xJw[jQZWk7xtFYsOlR5vn,<,pfihN4/1=hQe#hi8D=jjJc[0I7;@MqMMCf'BX'+`k*'v77B$notIWlCaI0KMU;6`0a&U%1%6n:m5LcXhspX#K*8e_'qKO38^HmFIs7v?1B#8#FtrqafLQSEEc4(+7v7P0iS4Ip]l8=2AK'?gB:JVvvk49F7Rle%OckG=(/CD@+e8O*2V7l3:*ok3#RX?NaJh#QpIswR'_/`5`*Lv@eEej2iaG&Sv8upR,GEX/9dK]EW$61X+.f=fDxoKS0-K%p)gt)nD^3W(s*TdO.bmgobposPWjLF$nTcM89uu>9GtuQrjcaPMHbo5or.(ZjNEs*bLLID4V4kd;+TUk1$o%UjR^)/$87vkhsDD,07u,XQ:`NK*]:m%uHx,hj1[`gCx>]kaIvk5[:WupOCEip51eOD0Ket>[RDl.;N2qP2APOXKu.v1N[miZa-#_7>a6lbha_aT32s=5uv.28TL4o$=6&L^wtIq`oR)7B#,5J]7:3vh>9s]hsYK5cvc-AE.KP.bPHJT*&'VA*^u_a7[Kc@KZ)4m%jj+4>b_8v7gRWIWgI*vGcpI9,SU#_S:YWu'vb,vSTgM`=E-'a=YElA;1?Y),V(rt[v&;1;E''#VkP2G%Nco@kM_B/cAL`P5T3qa^*;r=Ookt@$+qwtVk0D)<,Ei&tJ2cu-jc6lZ<#TrA]i+^i3MNT@owxKu+,W^7M*k&q?U^8vR8%tuR7cHkCDb0p#jd6-c*&:v5[Jkd(U[CM:$J'u/4==tAw`tK3_9BsA4/@O4Y4X[0naR##m<+'QLEQad>kbP6<)?gl.getAttribLocation(programInfo.program, \"a_position\"), checkLoc) as GLint,\r\n texCoordLocation: gc.checkAPI('2', ()=>gl.getAttribLocation(programInfo.program, \"a_texCoord\"), checkLoc) as GLint,\r\n };\r\n }\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'page-pass');\r\n PageChange.vertexBuffers = {} as ProgramBuffers;\r\n PageChange.addPermanentStorage(gc, PageChange.vertexBuffers!, textureCallback);\r\n }\r\n\r\n static verts = 6;\r\n //static verts = 24;\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: ProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'addPermanentStorage');\r\n const gl = gc.gl;\r\n if (PageChange.vertexBuffers!.vertexPositionBuffer === undefined) {\r\n PageChange.vertexBuffers = {\r\n vertexPositionBuffer: gc.checkAPI('1', ()=>gl.createBuffer()!, true) as WebGLBuffer,\r\n texCoordBuffer: gc.checkAPI('2', ()=>gl.createBuffer()!, true) as WebGLBuffer,\r\n }\r\n \r\n //let positions = new Float32Array(12);\r\n let positions = new Float32Array(48);\r\n\r\n positions[0] = -1; positions[1] = 1;\r\n positions[2] = 1; positions[3] = 1;\r\n positions[4] = -1; positions[5] = -1;\r\n\r\n positions[6] = -1; positions[7] = -1;\r\n positions[8] = 1; positions[9] = 1;\r\n positions[10] = 1; positions[11] = -1;\r\n\r\n // positions[0] = -1; positions[1] = 1;\r\n // positions[2] = 0; positions[3] = 1;\r\n // positions[4] = -1; positions[5] = 0;\r\n\r\n // positions[6] = -1; positions[7] = 0;\r\n // positions[8] = 0; positions[9] = 1;\r\n // positions[10] = 0; positions[11] = 0;\r\n\r\n // positions[12] = 0; positions[13] = 1;\r\n // positions[14] = 1; positions[15] = 1;\r\n // positions[16] = 0; positions[17] = 0;\r\n\r\n // positions[18] = 0; positions[19] = 0;\r\n // positions[20] = 1; positions[21] = 1;\r\n // positions[22] = 1; positions[23] = 0;\r\n\r\n // positions[24] = -1; positions[25] = 0;\r\n // positions[26] = 0; positions[27] = 0;\r\n // positions[28] = -1; positions[29] = -1;\r\n\r\n // positions[30] = -1; positions[31] = -1;\r\n // positions[32] = 0; positions[33] = 0;\r\n // positions[34] = 0; positions[35] = -1;\r\n\r\n // positions[36] = 0; positions[37] = 0;\r\n // positions[38] = 1; positions[39] = 0;\r\n // positions[40] = 0; positions[41] = -1;\r\n\r\n // positions[42] = 0; positions[43] = -1;\r\n // positions[44] = 1; positions[45] = 0;\r\n // positions[46] = 1; positions[47] = -1;\r\n\r\n\r\n // Now pass the list of positions into WebGL to build the\r\n gc.checkAPI('3', ()=>gl.bindBuffer(gl.ARRAY_BUFFER, PageChange.vertexBuffers!.vertexPositionBuffer));\r\n gc.checkAPI('4', ()=>gl.bufferData(gl.ARRAY_BUFFER, positions, gl.STATIC_DRAW));\r\n\r\n let coords = new Float32Array([\r\n 0.0, 1.0,\r\n 1.0, 1.0,\r\n 0.0, 0.0,\r\n 0.0, 0.0,\r\n 1.0, 1.0,\r\n 1.0, 0.0]);\r\n\r\n // let coords = new Float32Array([\r\n // 0.0, 1.0,\r\n // 0.5, 1.0,\r\n // 0.0, 0.5,\r\n\r\n // 0.0, 0.5,\r\n // 0.5, 1.0,\r\n // 0.5, 0.5,\r\n\r\n // 0.5, 1.0,\r\n // 1.0, 1.0,\r\n // 0.5, 0.5,\r\n\r\n // 0.5, 0.5,\r\n // 1.0, 1.0,\r\n // 1.0, 0.5,\r\n\r\n // 0.0, 0.5,\r\n // 0.5, 0.5,\r\n // 0.0, 0.0,\r\n\r\n // 0.0, 0.0,\r\n // 0.5, 0.5,\r\n // 0.5, 0.0,\r\n\r\n // 0.5, 0.5,\r\n // 1.0, 0.5,\r\n // 0.5, 0.0,\r\n\r\n // 0.5, 0.0,\r\n // 1.0, 0.5,\r\n // 1.0, 0.0\r\n\r\n // ]);\r\n \r\n\r\n gc.checkAPI('5', ()=>gl.bindBuffer(gl.ARRAY_BUFFER, PageChange.vertexBuffers!.texCoordBuffer));\r\n gc.checkAPI('6', ()=>gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW));\r\n\r\n }\r\n buffers.vertexPositionBuffer = PageChange.vertexBuffers!.vertexPositionBuffer;\r\n buffers.texCoordBuffer = PageChange.vertexBuffers!.texCoordBuffer;\r\n }\r\n\r\n pageWetLatentCTexture: WebGLTexture | null = null;\r\n pageWetLatentMTexture: WebGLTexture | null = null;\r\n pageWetDepthTexture: WebGLTexture | null = null;\r\n pageDryDepthTexture: WebGLTexture | null = null;\r\n pageWetAgeTexture: WebGLTexture | null = null;\r\n pageDryLatentCTexture: WebGLTexture | null = null;\r\n pageDryLatentMTexture: WebGLTexture | null = null;\r\n pageVisibleLatentCTexture: WebGLTexture | null = null;\r\n pageVisibleLatentMTexture: WebGLTexture | null = null;\r\n pageWetLatentCFramebufferW: WebGLFramebuffer | null = null;\r\n pageWetLatentMFramebufferW: WebGLFramebuffer | null = null;\r\n pageWetDepthFramebufferW: WebGLFramebuffer | null = null;\r\n pageDryDepthFramebufferW: WebGLFramebuffer | null = null;\r\n pageWetAgeFramebufferW: WebGLFramebuffer | null = null;\r\n pageDryLatentCFramebufferW: WebGLFramebuffer | null = null;\r\n pageDryLatentMFramebufferW: WebGLFramebuffer | null = null;\r\n pageVisibleLatentCFramebufferW: WebGLFramebuffer | null = null;\r\n pageVisibleLatentMFramebufferW: WebGLFramebuffer | null = null;\r\n\r\n pageX: number;\r\n pageY: number;\r\n width: number;\r\n height: number;\r\n\r\n constructor(page: Page, pageX: number, pageY: number, width: number, height: number) {\r\n this.page = page;\r\n this.pageX = pageX;\r\n this.pageY = pageY;\r\n this.width = width;\r\n this.height = height;\r\n\r\n }\r\n\r\n\r\n static setTextureCoordBuffer(gl: WebGL2RenderingContext) {\r\n\r\n }\r\n \r\n\r\n public processChanges(gcFrom: GPUChecker, crcDebug: CanvasRenderingContext2D) {\r\n if (!GPURunner.gl) {\r\n console.log('no working gl context, paint skipped');\r\n return;\r\n }\r\n this.crcDebug = crcDebug;\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'processChanges');\r\n\r\n this.setViewport();\r\n gc.check('1', ()=>this.preparePageForStartup(gc));\r\n let pi: ProgramInfo = gc.check('2', ()=>this.selectStartupProgram(gc)) as ProgramInfo;\r\n gc.check('3', ()=>this.initializeStartupProgram(gc, pi));\r\n gc.check('4', ()=>this.specializeStartupRoutine(gc, pi));\r\n gc.check('5', ()=>this.runStartupRoutine(gc, pi));\r\n gc.check('6', ()=>this.finalizeStartup(gc, pi));\r\n gc.check('7', ()=>this.applyStartupToPage(gc));\r\n\r\n gc.check('8', ()=>this.preparePageForProcess(gc));\r\n pi = gc.check('9', ()=>this.selectProcessProgram(gc)) as ProgramInfo;\r\n gc.check('10', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.check('11', ()=>this.specializeProcessRoutine(gc, pi));\r\n gc.check('12', ()=>this.runProcessRoutine(gc, pi));\r\n gc.check('13', ()=>this.finalizeProcess(gc, pi));\r\n gc.check('14', ()=>this.applyProcessToPage(gc));\r\n\r\n gc.check('15', ()=>this.preparePageForFinish(gc));\r\n pi = gc.check('16', ()=>this.selectFinishProgram(gc)) as ProgramInfo;\r\n gc.check('17', ()=>this.initializeFinishProgram(gc, pi));\r\n gc.check('18', ()=>this.specializeFinishRoutine(gc, pi));\r\n gc.check('19', ()=>this.runFinishRoutine(gc, pi));\r\n gc.check('20', ()=>this.finalizeFinish(gc, pi));\r\n gc.check('21', ()=>this.applyFinishToPage(gc));\r\n GPURunner.gl!.flush();\r\n\r\n GPURunner.workingFrameFactory.clearUsage(gc);\r\n\r\n if (App.trustGPU === false) {\r\n if (GPUChecker.healthy) {\r\n App.doTrustGPU();\r\n }\r\n }\r\n if (GPUChecker.healthy === false) {\r\n App.doAvoidGPU();\r\n }\r\n }\r\n \r\n abstract setViewport(): void;\r\n abstract preparePageForStartup(gcFrom: GPUChecker): void;\r\n abstract selectStartupProgram(gcFrom: GPUChecker): ProgramInfo;\r\n abstract initializeStartupProgram(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract specializeStartupRoutine(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract runStartupRoutine(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract finalizeStartup(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract applyStartupToPage(gcFrom: GPUChecker): void;\r\n abstract preparePageForProcess(gcFrom: GPUChecker): void;\r\n abstract selectProcessProgram(gcFrom: GPUChecker): ProgramInfo;\r\n abstract initializeProcessProgram(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract specializeProcessRoutine(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract runProcessRoutine(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract finalizeProcess(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract applyProcessToPage(gcFrom: GPUChecker): void;\r\n abstract preparePageForFinish(gcFrom: GPUChecker): void;\r\n abstract selectFinishProgram(gcFrom: GPUChecker): ProgramInfo;\r\n abstract initializeFinishProgram(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract specializeFinishRoutine(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract runFinishRoutine(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract finalizeFinish(gcFrom: GPUChecker, pi: ProgramInfo): void;\r\n abstract applyFinishToPage(gcFrom: GPUChecker): void;\r\n \r\n finalize() { \r\n\r\n }\r\n\r\n debugGetIntTexture(tex: WebGLTexture, width: number, height: number, entries: number, byte: boolean = false): Uint8Array | Uint32Array {\r\n const gl = GPURunner.gl!;\r\n let sampFb = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, sampFb);\r\n\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex, 0);\r\n let texBuff: Uint32Array | Uint8Array;\r\n let type = byte ? gl.UNSIGNED_BYTE : gl.UNSIGNED_INT;\r\n let format = byte ? gl.RGBA : gl.RGBA_INTEGER;\r\n let resBuff: Uint32Array | Uint8Array;\r\n if (byte) {\r\n texBuff = new Uint8Array(width * height * 4);\r\n if (entries === 1) {\r\n resBuff = new Uint8Array(width * height);\r\n }\r\n } else {\r\n texBuff = new Uint32Array(width * height * 4);\r\n if (entries === 1) {\r\n resBuff = new Uint32Array(width * height);\r\n }\r\n }\r\n gl.readPixels(0, 0, width, height, format, type, texBuff);\r\n if (entries === 1) {\r\n for (let i = 0; i < width * height; i++) {\r\n resBuff![i] = texBuff[i * 4];\r\n }\r\n\r\n } else {\r\n resBuff = texBuff;\r\n }\r\n return resBuff!;\r\n }\r\n}\r\n\r\n","import { CircleTouchProgramBuffers } from './circlePageChange';\r\nimport { ChangeTextureIndexes, ChangeTextureSet, FingerTip, TipApplication } from './fingertip';\r\nimport { WorkingItem, GPUChecker, GPURunner, ProgramBuffers, ProgramInfo, UniformLocations } from './GPURunner';\r\nimport { getLookUpTable } from './kubelkaMonk';\r\nimport { Page } from './page';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\nimport { Point2D } from './utils';\r\n\r\n\r\nexport interface TouchUniformLocations extends UniformLocations {\r\n\r\n kmLookupTexNum: WebGLUniformLocation,\r\n \r\n debug: WebGLUniformLocation,\r\n writeAccum: WebGLUniformLocation,\r\n resolution: WebGLUniformLocation,\r\n maxDepthTextureOffset: WebGLUniformLocation,\r\n actionTextureOffset: WebGLUniformLocation,\r\n maxDepthTextureIndex: WebGLUniformLocation,\r\n actionTextureIndex: WebGLUniformLocation,\r\n referenceLatentCTexNum: WebGLUniformLocation,\r\n referenceLatentMTexNum: WebGLUniformLocation,\r\n referenceWetDepthTexNum: WebGLUniformLocation,\r\n referenceDryDepthTexNum: WebGLUniformLocation,\r\n workingLatentCTexNum: WebGLUniformLocation,\r\n workingLatentMTexNum: WebGLUniformLocation,\r\n workingWetDepthTexNum: WebGLUniformLocation,\r\n workingDryDepthTexNum: WebGLUniformLocation,\r\n accumLatentCTexNum: WebGLUniformLocation,\r\n accumLatentMTexNum: WebGLUniformLocation,\r\n accumWetDepthTexNum: WebGLUniformLocation,\r\n accumDryDepthTexNum: WebGLUniformLocation,\r\n actionFromTexNum: WebGLUniformLocation,\r\n actionFracTexNum: WebGLUniformLocation,\r\n actionCommitTexNum: WebGLUniformLocation,\r\n maxDepthTexNum: WebGLUniformLocation,\r\n dryTransmits: WebGLUniformLocation,\r\n doAntiAlias: WebGLUniformLocation,\r\n doDepthLighting: WebGLUniformLocation,\r\n workingWetAgeTexNum: WebGLUniformLocation,\r\n};\r\n\r\nexport interface TouchProgramInfo extends ProgramInfo {\r\n uniformLocations: TouchUniformLocations\r\n};\r\n\r\nexport interface TouchProgramBuffers extends ProgramBuffers {\r\n kmLookupTexture: WebGLTexture,\r\n nullDepthTexture: WebGLTexture | null,\r\n nullLatentCTexture: WebGLTexture | null,\r\n nullLatentMTexture: WebGLTexture | null,\r\n};\r\n\r\nexport abstract class TouchPageChange extends PageChange {\r\n \r\n static debugRenderDepth: TouchProgramInfo = {tag:'debugRenderDepth', uniformLocations:{}} as TouchProgramInfo;\r\n\r\n static externalToLatentProgram: TouchProgramInfo = {tag:'externalToLatentProgram', uniformLocations:{}} as TouchProgramInfo;\r\n static latentToExternalProgram: TouchProgramInfo = {tag:'latentToExternalProgram', uniformLocations:{}} as TouchProgramInfo;\r\n static processAccumulateTakesProgram: TouchProgramInfo = {tag:'processAccumulateTakesProgram', uniformLocations:{}} as TouchProgramInfo;\r\n static processCommitAccumulatorProgram: TouchProgramInfo = {tag:'processCommitAccumulatorProgram', uniformLocations:{}} as TouchProgramInfo;\r\n static wetChangesToVisibleChangesProgram: TouchProgramInfo = {tag:'wetChangesToVisibleChanges', uniformLocations:{}} as TouchProgramInfo;\r\n static visibleChangesToFinalProgram: TouchProgramInfo = {tag:'visibleChangesToFinal', uniformLocations:{}} as TouchProgramInfo;\r\n static centralPullWetChangesProgram: TouchProgramInfo = {tag:'centralPullWetChangesProgram', uniformLocations:{}} as TouchProgramInfo;\r\n static debugTypeEffects: TouchProgramInfo = {tag:'debugTypeEffects', uniformLocations:{}} as TouchProgramInfo;\r\n \r\n static touchBuffers: TouchProgramBuffers | undefined;\r\n\r\n \r\n static fsColorMixLatentSource = `\r\n#line 10096\r\nhighp uvec4 emptyLatentPart = uvec4(0, 0, 0, 0);\r\nhighp uvec4 smudgeLatentM = uvec4(0, 0, 0, 1);\r\nhighp uvec4 wetScrapeLatentM = uvec4(0, 0, 0, 2);\r\nhighp uvec4 dryScrapeLatentM = uvec4(0, 0, 0, 3);\r\nhighp uvec4 neutralLatentM = uvec4(43000, 33000, 27000, 0);\r\nhighp uvec4 whiteLatentC = uvec4(0, 0, 0, 65535);\r\nhighp uvec4 greyLatentC = uvec4(0, 0, 0, 42000);\r\nhighp uvec4 cyanLatentC = uvec4(65000, 0, 0, 32000);\r\nhighp uvec4 mustardLatentC = uvec4(0, 65000, 0, 0);\r\nhighp uvec4 greenLatentC = uvec4(65000, 65000, 0, 65535);\r\nhighp uvec4 orangeLatentC = uvec4(0, 65000, 65000, 0);\r\nhighp uvec4 redLatentC = uvec4(0, 0, 65000, 0);\r\nhighp uvec4 violetLatentC = uvec4(65000, 0, 65000, 0);\r\n\r\n// struct Latent {\r\n// highp float concentration0;\r\n// highp float concentration1;\r\n// highp float concentration2;\r\n// highp float concentration3;\r\n// highp float missingRed;\r\n// highp float missingGreen;\r\n// highp float missingBlue;\r\n// highp float isSmudge;\r\n// };\r\n// replaced by array of floats because of struct precision issues\r\n\r\nhighp float emptyLatent[8] = float[](0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0);\r\nhighp float smudgeLatent[8] = float[](0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0);\r\n`;\r\n\r\n static fsColorMixLerpLatentSource = TouchPageChange.fsColorMixLatentSource + `\r\n#line 10128\r\nhighp float u_latentScale = 65535.0;\r\nhighp float u_maxC0 = 0.993;\r\nhighp float u_minC0 = 0.0;\r\nhighp float u_maxC1 = 0.991;\r\nhighp float u_minC1 = 0.0;\r\nhighp float u_maxC2 = 0.998;\r\nhighp float u_minC2 = 0.0;\r\nhighp float u_maxC3 = 1.0;\r\nhighp float u_minC3 = -0.0087;\r\nhighp float u_maxMRed = 0.19;\r\nhighp float u_minMRed = -0.31;\r\nhighp float u_maxMGreen = 0.38;\r\nhighp float u_minMGreen = -0.38;\r\nhighp float u_maxMBlue = 0.39;\r\nhighp float u_minMBlue = -0.24;\r\n\r\n// many latents give the same rgb.\r\nbool latentPartMatch(uvec4 cpart1, uvec4 cpart2, uvec4 mpart1, uvec4 mpart2) {\r\n if (mpart1.a != mpart2.a) {\r\n return false;\r\n }\r\n if (abs(float(cpart1.r) - float(cpart2.r)) > 60.0 || abs(float(cpart1.g) - float(cpart2.g)) > 60.0 || abs(float(cpart1.b) - float(cpart2.b)) > 60.0 || abs(float(cpart1.a) - float(cpart2.a)) > 60.0 ||\r\n abs(float(mpart1.r) - float(mpart2.r)) > 60.0 || abs(float(mpart1.g) - float(mpart2.g)) > 60.0 || abs(float(mpart1.b) - float(mpart2.b)) > 60.0 || abs(float(mpart1.a) - float(mpart2.a)) > 60.0) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nbool latentsMatch(highp float latent1[8], highp float latent2[8]) {\r\n return (latent1[7] > 0.0 && latent2[7] > 0.0) || \r\n (latent1[0] == latent2[0] && latent1[1] == latent2[1] && latent1[2] == latent2[2] && latent1[3] == latent2[3] && \r\n latent1[4] == latent2[4] && latent1[5] == latent2[5] && latent1[6] == latent2[6] && latent1[7] == latent2[7]);\r\n}\r\n\r\nhighp uvec4 latentToLatentC(highp float latent[8]) {\r\n if (latent[7] > 0.0 || latentsMatch(latent, emptyLatent)) {\r\n return emptyLatentPart;\r\n }\r\n highp float c0 = clamp(latent[0], u_minC0, u_maxC0);\r\n highp float c1 = clamp(latent[1], u_minC1, u_maxC1);\r\n highp float c2 = clamp(latent[2], u_minC2, u_maxC2);\r\n highp float c3 = clamp(latent[3], u_minC3, u_maxC3);\r\n c0 = (c0 - u_minC0) / (u_maxC0 - u_minC0);\r\n c1 = (c1 - u_minC1) / (u_maxC1 - u_minC1);\r\n c2 = (c2 - u_minC2) / (u_maxC2 - u_minC2);\r\n c3 = (c3 - u_minC3) / (u_maxC3 - u_minC3);\r\n return uvec4(uint((c0 * u_latentScale) + 0.5), uint((c1 * u_latentScale) + 0.5), uint((c2 * u_latentScale) + 0.5), uint((c3 * u_latentScale) + 0.5));\r\n}\r\nhighp uvec4 latentToLatentM(highp float latent[8]) {\r\n if (latentsMatch(latent, emptyLatent)) {\r\n return emptyLatentPart;\r\n }\r\n if (latent[7] > 0.0) {\r\n return smudgeLatentM;\r\n }\r\n\r\n highp float missingRed = clamp(latent[4], u_minMRed, u_maxMRed);\r\n highp float missingGreen = clamp(latent[5], u_minMGreen, u_maxMGreen);\r\n highp float missingBlue = clamp(latent[6], u_minMBlue, u_maxMBlue);\r\n missingRed = (missingRed - u_minMRed) / (u_maxMRed - u_minMRed);\r\n missingGreen = (missingGreen - u_minMGreen) / (u_maxMGreen - u_minMGreen);\r\n missingBlue = (missingBlue - u_minMBlue) / (u_maxMBlue - u_minMBlue);\r\n return uvec4(uint(round(missingRed * u_latentScale)), uint(round(missingGreen * u_latentScale)), uint(round(missingBlue * u_latentScale)), latent[7] > 0.0 ? 1u : 0u);\r\n}\r\nvoid latentFromLatentCM(highp uvec4 latentC, highp uvec4 latentM, inout highp float result[8]) {\r\n if (latentC == emptyLatentPart && latentM == emptyLatentPart) {\r\n result = emptyLatent;\r\n return;\r\n }\r\n if (latentC == emptyLatentPart && latentM == smudgeLatentM) {\r\n result = smudgeLatent;\r\n return;\r\n }\r\n highp float c0 = float(latentC.r) / u_latentScale * (u_maxC0 - u_minC0) + u_minC0;\r\n highp float c1 = float(latentC.g) / u_latentScale * (u_maxC1 - u_minC1) + u_minC1;\r\n highp float c2 = float(latentC.b) / u_latentScale * (u_maxC2 - u_minC2) + u_minC2;\r\n highp float c3 = float(latentC.a) / u_latentScale * (u_maxC3 - u_minC3) + u_minC3;\r\n highp float missingRed = float(latentM.r) / u_latentScale * (u_maxMRed - u_minMRed) + u_minMRed;\r\n highp float missingGreen = float(latentM.g) / u_latentScale * (u_maxMGreen - u_minMGreen) + u_minMGreen;\r\n highp float missingBlue = float(latentM.b) / u_latentScale * (u_maxMBlue - u_minMBlue) + u_minMBlue;\r\n highp float isSmudge = latentM.a > 0u ? 1.0 : 0.0;\r\n highp float _result[8];\r\n _result[0] = c0;\r\n _result[1] = c1;\r\n _result[2] = c2;\r\n _result[3] = c3;\r\n _result[4] = missingRed;\r\n _result[5] = missingGreen;\r\n _result[6] = missingBlue;\r\n _result[7] = isSmudge;\r\n\r\n result = _result;\r\n}\r\n\r\nvoid lerpLatent(highp float latent1[8], highp float latent2[8], highp float weight2, inout highp float result[8]) {\r\n if (latent1[7] > 0.0) {\r\n result = latent2;\r\n return;\r\n }\r\n if (latent2[7] > 0.0) {\r\n result = latent1;\r\n return;\r\n }\r\n highp float weight1 = 1.0 - weight2;\r\n highp float _result[8];\r\n _result[0] = latent1[0] * weight1 + latent2[0] * weight2;\r\n _result[1] = latent1[1] * weight1 + latent2[1] * weight2;\r\n _result[2] = latent1[2] * weight1 + latent2[2] * weight2;\r\n _result[3] = latent1[3] * weight1 + latent2[3] * weight2;\r\n _result[4] = latent1[4] * weight1 + latent2[4] * weight2;\r\n _result[5] = latent1[5] * weight1 + latent2[5] * weight2;\r\n _result[6] = latent1[6] * weight1 + latent2[6] * weight2;\r\n _result[7] = 0.0;\r\n result = _result;\r\n}`;\r\n\r\nstatic fsColorMixRGBToLatentSource = TouchPageChange.fsColorMixLerpLatentSource + `\r\n#line 10223\r\nvoid rgbaToLatent(highp vec4 rgba, inout highp float result[8]) {\r\n if (rgba.r == 1.0/255.0 && rgba.g == 1.0/255.0 && rgba.b == 1.0/255.0 && rgba.a == 1.0) {\r\n result = smudgeLatent;\r\n return;\r\n }\r\n if (rgba.r == 0.0 && rgba.g == 0.0 && rgba.b == 0.0 && rgba.a == 0.0) {\r\n result = emptyLatent;\r\n return;\r\n }\r\n highp float x = (rgba.r * 63.0);\r\n highp float y = (rgba.g * 63.0);\r\n highp float z = (rgba.b * 63.0);\r\n\r\n highp int ix = int(x);\r\n highp int iy = int(y);\r\n highp int iz = int(z);\r\n\r\n highp float tx = x - float(ix);\r\n highp float ty = y - float(iy);\r\n highp float tz = z - float(iz);\r\n\r\n highp int xyz = ix + iy*64 + iz*64*64;\r\n\r\n highp float c0 = 0.0;\r\n highp float c1 = 0.0;\r\n highp float c2 = 0.0;\r\n highp float w = 0.0;\r\n\r\n w = (1.0-tx)*(1.0-ty)*(1.0-tz); \r\n c0 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 192) % 1024, (xyz+ 192) / 1024), 0).r); \r\n c1 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 262336) % 1024, (xyz+ 262336) / 1024), 0).r);\r\n c2 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 524480) % 1024, (xyz+ 524480) / 1024), 0).r);\r\n w = ( tx)*(1.0-ty)*(1.0-tz); \r\n c0 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 193) % 1024, (xyz+ 193) / 1024), 0).r);\r\n c1 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 262337) % 1024, (xyz+ 262337) / 1024), 0).r);\r\n c2 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 524481) % 1024, (xyz+ 524481) / 1024), 0).r);\r\n w = (1.0-tx)*( ty)*(1.0-tz); \r\n c0 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 256) % 1024, (xyz+ 256) / 1024), 0).r);\r\n c1 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 262400) % 1024, (xyz+ 262400) / 1024), 0).r);\r\n c2 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 524544) % 1024, (xyz+ 524544) / 1024), 0).r);\r\n w = ( tx)*( ty)*(1.0-tz); \r\n c0 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 257) % 1024, (xyz+ 257) / 1024), 0).r);\r\n c1 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 262401) % 1024, (xyz+ 262401) / 1024), 0).r);\r\n c2 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 524545) % 1024, (xyz+ 524545) / 1024), 0).r);\r\n w = (1.0-tx)*(1.0-ty)*( tz); \r\n c0 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 4288) % 1024, (xyz+ 4288) / 1024), 0).r);\r\n c1 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 266432) % 1024, (xyz+ 266432) / 1024), 0).r);\r\n c2 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 528576) % 1024, (xyz+ 528576) / 1024), 0).r);\r\n w = ( tx)*(1.0-ty)*( tz); \r\n c0 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 4289) % 1024, (xyz+ 4289) / 1024), 0).r);\r\n c1 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 266433) % 1024, (xyz+ 266433) / 1024), 0).r);\r\n c2 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 528577) % 1024, (xyz+ 528577) / 1024), 0).r);\r\n w = (1.0-tx)*( ty)*( tz); \r\n c0 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 4352) % 1024, (xyz+ 4352) / 1024), 0).r);\r\n c1 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 266496) % 1024, (xyz+ 266496) / 1024), 0).r);\r\n c2 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 528640) % 1024, (xyz+ 528640) / 1024), 0).r);\r\n w = ( tx)*( ty)*( tz); \r\n c0 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 4353) % 1024, (xyz+ 4353) / 1024), 0).r);\r\n c1 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 266497) % 1024, (xyz+ 266497) / 1024), 0).r);\r\n c2 += w*float(texelFetch(u_kmLookupTexNum, ivec2((xyz+ 528641) % 1024, (xyz+ 528641) / 1024), 0).r);\r\n\r\n c0 /= 255.0;\r\n c1 /= 255.0;\r\n c2 /= 255.0;\r\n\r\n highp float c3 = 1.0 - (c0 + c1 + c2);\r\n\r\n highp float c00 = c0 * c0;\r\n highp float c11 = c1 * c1;\r\n highp float c22 = c2 * c2;\r\n highp float c33 = c3 * c3;\r\n highp float c01 = c0 * c1;\r\n highp float c02 = c0 * c2;\r\n highp float c12 = c1 * c2;\r\n\r\n highp float rmix = 0.0;\r\n highp float gmix = 0.0;\r\n highp float bmix = 0.0;\r\n \r\n w = 0.0;\r\n\r\n w = c0*c00; rmix += +0.07717053*w; gmix += +0.02826978*w; bmix += +0.24832992*w;\r\n w = c1*c11; rmix += +0.95912302*w; gmix += +0.80256528*w; bmix += +0.03561839*w;\r\n w = c2*c22; rmix += +0.74683774*w; gmix += +0.04868586*w; bmix += +0.00000000*w;\r\n w = c3*c33; rmix += +0.99518138*w; gmix += +0.99978149*w; bmix += +0.99704802*w;\r\n w = c00*c1; rmix += +0.04819146*w; gmix += +0.83363781*w; bmix += +0.32515377*w;\r\n w = c01*c1; rmix += -0.68146950*w; gmix += +1.46107803*w; bmix += +1.06980936*w;\r\n w = c00*c2; rmix += +0.27058419*w; gmix += -0.15324870*w; bmix += +1.98735057*w;\r\n w = c02*c2; rmix += +0.80478189*w; gmix += +0.67093710*w; bmix += +0.18424500*w;\r\n w = c00*c3; rmix += -0.35031003*w; gmix += +1.37855826*w; bmix += +3.68865000*w;\r\n w = c0*c33; rmix += +1.05128046*w; gmix += +1.97815239*w; bmix += +2.82989073*w;\r\n w = c11*c2; rmix += +3.21607125*w; gmix += +0.81270228*w; bmix += +1.03384539*w;\r\n w = c1*c22; rmix += +2.78893374*w; gmix += +0.41565549*w; bmix += -0.04487295*w;\r\n w = c11*c3; rmix += +3.02162577*w; gmix += +2.55374103*w; bmix += +0.32766114*w;\r\n w = c1*c33; rmix += +2.95124691*w; gmix += +2.81201112*w; bmix += +1.17578442*w;\r\n w = c22*c3; rmix += +2.82677043*w; gmix += +0.79933038*w; bmix += +1.81715262*w;\r\n w = c2*c33; rmix += +2.99691099*w; gmix += +1.22593053*w; bmix += +1.80653661*w;\r\n w = c01*c2; rmix += +1.87394106*w; gmix += +2.05027182*w; bmix += -0.29835996*w;\r\n w = c01*c3; rmix += +2.56609566*w; gmix += +7.03428198*w; bmix += +0.62575374*w;\r\n w = c02*c3; rmix += +4.08329484*w; gmix += -1.40408358*w; bmix += +2.14995522*w;\r\n w = c12*c3; rmix += +6.00078678*w; gmix += +2.55552042*w; bmix += +1.90739502*w;\r\n\r\n highp float _result[8];\r\n _result[0] = c0;\r\n _result[1] = c1;\r\n _result[2] = c2;\r\n _result[3] = c3;\r\n _result[4] = rgba.r-rmix;\r\n _result[5] = rgba.g-gmix;\r\n _result[6] = rgba.b-bmix;\r\n _result[7] = 0.0;\r\n result = _result;\r\n}\r\n`;\r\n\r\nstatic fsColorMixLatentToRGBSource = TouchPageChange.fsColorMixLerpLatentSource + `\r\n#line 10329\r\nhighp vec3 evalPolynomial(highp float c0, highp float c1, highp float c2, highp float c3) {\r\n highp float r = 0.0;\r\n highp float g = 0.0;\r\n highp float b = 0.0;\r\n\r\n highp float c00 = c0 * c0;\r\n highp float c11 = c1 * c1;\r\n highp float c22 = c2 * c2;\r\n highp float c33 = c3 * c3;\r\n highp float c01 = c0 * c1;\r\n highp float c02 = c0 * c2;\r\n highp float c12 = c1 * c2;\r\n\r\n highp float w = 0.0;\r\n w = c0*c00; r += +0.07717053*w; g += +0.02826978*w; b += +0.24832992*w;\r\n w = c1*c11; r += +0.95912302*w; g += +0.80256528*w; b += +0.03561839*w;\r\n w = c2*c22; r += +0.74683774*w; g += +0.04868586*w; b += +0.00000000*w;\r\n w = c3*c33; r += +0.99518138*w; g += +0.99978149*w; b += +0.99704802*w;\r\n w = c00*c1; r += +0.04819146*w; g += +0.83363781*w; b += +0.32515377*w;\r\n w = c01*c1; r += -0.68146950*w; g += +1.46107803*w; b += +1.06980936*w;\r\n w = c00*c2; r += +0.27058419*w; g += -0.15324870*w; b += +1.98735057*w;\r\n w = c02*c2; r += +0.80478189*w; g += +0.67093710*w; b += +0.18424500*w;\r\n w = c00*c3; r += -0.35031003*w; g += +1.37855826*w; b += +3.68865000*w;\r\n w = c0*c33; r += +1.05128046*w; g += +1.97815239*w; b += +2.82989073*w;\r\n w = c11*c2; r += +3.21607125*w; g += +0.81270228*w; b += +1.03384539*w;\r\n w = c1*c22; r += +2.78893374*w; g += +0.41565549*w; b += -0.04487295*w;\r\n w = c11*c3; r += +3.02162577*w; g += +2.55374103*w; b += +0.32766114*w;\r\n w = c1*c33; r += +2.95124691*w; g += +2.81201112*w; b += +1.17578442*w;\r\n w = c22*c3; r += +2.82677043*w; g += +0.79933038*w; b += +1.81715262*w;\r\n w = c2*c33; r += +2.99691099*w; g += +1.22593053*w; b += +1.80653661*w;\r\n w = c01*c2; r += +1.87394106*w; g += +2.05027182*w; b += -0.29835996*w;\r\n w = c01*c3; r += +2.56609566*w; g += +7.03428198*w; b += +0.62575374*w;\r\n w = c02*c3; r += +4.08329484*w; g += -1.40408358*w; b += +2.14995522*w;\r\n w = c12*c3; r += +6.00078678*w; g += +2.55552042*w; b += +1.90739502*w;\r\n \r\n return vec3(r, g, b);\r\n}\r\n\r\nhighp vec4 latentToRgba(highp float latent[8]) {\r\n if (latent[7] > 0.0) {\r\n return vec4(1.0/255.0, 1.0/255.0, 1.0/255.0, 1.0);\r\n }\r\n if (latentsMatch(latent, emptyLatent)) {\r\n return vec4(0.0, 0.0, 0.0, 0.0);\r\n }\r\n\r\n highp vec3 rgb = evalPolynomial(latent[0], latent[1], latent[2], latent[3]);\r\n\r\n highp float r = max(0.0, min(1.0, rgb.r + latent[4]));\r\n highp float g = max(0.0, min(1.0, rgb.g + latent[5]));\r\n highp float b = max(0.0, min(1.0, rgb.b + latent[6]));\r\n\r\n if (r < 1.6/255.0 && g < 1.6/255.0 && b < 1.6/255.0) {\r\n r=g=b=0.0;\r\n }\r\n return vec4(r, g, b, 1.0);\r\n}\r\n`;\r\n\r\nstatic fsActionPositionsSource = `\r\n#line 10390\r\n\r\nhighp ivec3 workingPositionToActionPosition(highp ivec2 workingPosition, highp uvec2 workingSize, highp ivec2 actionOffset, highp uvec2 actionSize, highp int textureIndex) {\r\n // external texture so flip y\r\n workingPosition.y = int(workingSize.y) - workingPosition.y - 1;\r\n\r\n highp ivec3 actionPosition = ivec3(workingPosition - actionOffset, textureIndex);\r\n if (actionPosition.x < 0 || uint(actionPosition.x) >= actionSize.x || actionPosition.y < 0 || uint(actionPosition.y) >= actionSize.y) {\r\n actionPosition.x = -1;\r\n actionPosition.y = -1;\r\n } \r\n return actionPosition;\r\n}\r\n\r\nhighp ivec2 actionIndexToWorkingPosition(highp uint actionIndex, highp ivec2 actionOffset, highp uvec2 actionSize, highp uvec2 workingSize) {\r\n highp ivec2 actionPosition = ivec2(actionIndex % actionSize.x, actionIndex / actionSize.x);\r\n highp ivec2 workingPosition = actionPosition + actionOffset;\r\n // external texture so flip y\r\n workingPosition.y = int(workingSize.y) - workingPosition.y - 1;\r\n return workingPosition;\r\n}\r\n`;\r\n\r\n\r\nstatic fsSourceExternalToLatent = `#version 300 es\r\n#line 10416\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp usampler2D u_kmLookupTexNum;\r\nuniform highp sampler2D u_externalColorTexNum;\r\nuniform highp usampler2D u_externalDepthTexNum;\r\nuniform highp vec2 u_resolution;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nlayout(location = 0) out highp uvec4 outputLatentC;\r\nlayout(location = 1) out highp uvec4 outputLatentM;\r\nlayout(location = 2) out highp uint outputDepth;\r\n` + TouchPageChange.fsColorMixRGBToLatentSource + `\r\n#line 10426\r\nvoid main() {\r\n outputDepth = texture(u_externalDepthTexNum, v_texCoordExternal).r;\r\n highp vec4 outputColor = texture(u_externalColorTexNum, v_texCoordExternal);\r\n highp float outputLatent[8];\r\n rgbaToLatent(outputColor, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n\r\n}`;\r\n\r\nstatic fsSourceDoDepthLighting = `\r\n#line 10436\r\nhighp vec4 doDepthLighting(highp vec4 outputColor, highp uint depthHere, highp usampler2D wetDepthTexNum, highp usampler2D dryDepthTexNum, highp vec2 texCoordRendered) {\r\n highp uvec2 workingSize = uvec2(textureSize(wetDepthTexNum, 0));\r\n highp ivec2 workingPos = ivec2(texCoordRendered * vec2(workingSize));\r\n if (workingPos.x < int(workingSize.x - 1u) && workingPos.y < int(workingSize.y - 1u)) {\r\n depthHere += texelFetch(dryDepthTexNum, workingPos, 0).r;\r\n highp ivec2 posThere = ivec2(workingPos.x+1, workingPos.y+1);\r\n highp uint depthThere = texelFetch(wetDepthTexNum, posThere, 0).r;\r\n depthThere += texelFetch(dryDepthTexNum, posThere, 0).r;\r\n depthHere = min(depthHere, 3000u);\r\n depthThere = min(depthThere, 3000u);\r\n\r\n if (depthHere != depthThere) {\r\n // convert into normalized cube root space, since volume grows with the cube of height.\r\n highp float depthHereAlt = pow(float(depthHere), 1.0/3.0) / pow(3000.0, 1.0/3.0);\r\n highp float depthThereAlt = pow(float(depthThere), 1.0/3.0) / pow(3000.0, 1.0/3.0);\r\n // in one x move the height changes by the delta\r\n highp vec2 depthDiffVec = normalize(vec2(-1.0, depthHereAlt - depthThereAlt));\r\n // normal vector of that paint slope face that's pointing into the light source\r\n highp vec2 depthDiffNormalVec = vec2(depthDiffVec.y, -depthDiffVec.x);\r\n // cosine of the light source (up, right) angle and the paint slope face is the amount of incident light\r\n highp float align = dot(depthDiffNormalVec, normalize(vec2(1.0, 1.0)));\r\n // i want flat paint to get the 'expected' color but that is at a 45 to the light, so adapt\r\n align = align - .7071068;\r\n // how bright (dim actually) is the color, because this effect is much harder to see on darker paint, so boost it\r\n highp float lum = 1.0 - (0.299*outputColor.r + 0.587*outputColor.g + 0.114*outputColor.b);\r\n // apply the effect using magic numbers. the 0.13 is what makes white paint show a bit of the effect and the 0.60 is the boost that makes black paint show a small effect.\r\n outputColor.rgb += align * (0.13 + 0.60 * lum);\r\n outputColor.rgb = max(min(outputColor.rgb, vec3(1.0,1.0,1.0)), vec3(0.0,0.0,0.0));\r\n\r\n }\r\n }\r\n return outputColor;\r\n}\r\n\r\n`;\r\n\r\nstatic fsSourceLatentToExternal = `#version 300 es\r\n#line 10478\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp usampler2D u_workingLatentCTexNum;\r\nuniform highp usampler2D u_workingLatentMTexNum;\r\nuniform highp usampler2D u_workingWetDepthTexNum;\r\nuniform highp usampler2D u_workingDryDepthTexNum;\r\nuniform highp usampler2D u_kmLookupTexNum;\r\nuniform highp int u_doDepthLighting;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nlayout(location = 0) out highp vec4 outputColor;\r\nlayout(location = 1) out highp uint outputDepth;\r\n` + TouchPageChange.fsColorMixLatentToRGBSource \r\n + TouchPageChange.fsSourceDoDepthLighting\r\n+ `\r\n#line 10488\r\nvoid main() {\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n highp uvec4 latentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n highp uvec4 latentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n highp float outputLatent[8];\r\n latentFromLatentCM(latentC, latentM, outputLatent);\r\n outputColor = latentToRgba(outputLatent);\r\n if (u_doDepthLighting > 0) {\r\n outputColor = doDepthLighting(outputColor, outputDepth, u_workingWetDepthTexNum, u_workingDryDepthTexNum, v_texCoordRendered);\r\n }\r\n}`;\r\n\r\nstatic fsSourceProcessGlobals = `#version 300 es\r\n#line 10508\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp usampler2D u_workingLatentCTexNum;\r\nuniform highp usampler2D u_workingLatentMTexNum;\r\nuniform highp usampler2D u_workingWetDepthTexNum;\r\nuniform highp usampler2D u_workingDryDepthTexNum;\r\nuniform highp usampler2D u_accumLatentCTexNum;\r\nuniform highp usampler2D u_accumLatentMTexNum;\r\nuniform highp usampler2D u_accumWetDepthTexNum;\r\nuniform highp usampler2D u_accumDryDepthTexNum;\r\nuniform highp usampler2D u_referenceLatentCTexNum;\r\nuniform highp usampler2D u_referenceLatentMTexNum;\r\nuniform highp usampler2D u_referenceWetDepthTexNum;\r\nuniform highp usampler2D u_referenceDryDepthTexNum;\r\nuniform highp usampler2DArray u_maxDepthTexNum;\r\nuniform highp sampler2DArray u_actionCommitTexNum;\r\nuniform highp usampler2DArray u_actionFromTexNum;\r\nuniform highp sampler2DArray u_actionFracTexNum;\r\nuniform highp int u_maxDepthTextureIndex;\r\nuniform highp int u_actionTextureIndex;\r\nuniform highp int u_writeAccum;\r\nuniform highp int u_debug;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nlayout(location = 0) out highp uvec4 outputLatentC;\r\nlayout(location = 1) out highp uvec4 outputLatentM;\r\nlayout(location = 2) out highp uint outputDepth;\r\nuniform highp ivec2 u_actionTextureOffset;\r\nuniform highp ivec2 u_maxDepthTextureOffset;\r\n`;\r\n\r\nstatic fsSourceProcessAccumulateTakes =\r\n TouchPageChange.fsSourceProcessGlobals \r\n + TouchPageChange.fsColorMixLerpLatentSource\r\n + TouchPageChange.fsActionPositionsSource + \r\n`\r\n#line 10536\r\n\r\nhighp float accumulateTakes(highp float error, highp uint srcOffset, highp float srcFrac, highp ivec2 actionTextureOffset, highp uvec2 actionTextureSize, \r\n highp ivec2 maxTextureOffset, highp uvec2 maxTextureSize, highp int maxDepthTextureIndex, highp uvec2 workingSize, \r\n inout highp float outputLatent[8], inout highp uint outputDepth) {\r\n \r\n highp ivec2 workingSrcPos = actionIndexToWorkingPosition(srcOffset, actionTextureOffset, actionTextureSize, workingSize);\r\n highp ivec3 workingMaxPos = workingPositionToActionPosition(workingSrcPos, workingSize, maxTextureOffset, maxTextureSize, maxDepthTextureIndex);\r\n \r\n highp uint srcDepth = texelFetch(u_workingWetDepthTexNum, workingSrcPos, 0).r;\r\n highp uint srcMax = texelFetch(u_maxDepthTexNum, workingMaxPos, 0).r;\r\n\r\n highp float newError = error;\r\n highp float takef = ((float(srcDepth) - float(srcMax)) * srcFrac) + error;\r\n if (takef > 0.0) {\r\n highp uint takeDepth = uint(takef);\r\n newError = takef - float(takeDepth);\r\n highp float blendWeight = takef / (takef + float(outputDepth));\r\n highp float srcLatent[8];\r\n latentFromLatentCM(texelFetch(u_workingLatentCTexNum, workingSrcPos, 0), texelFetch(u_workingLatentMTexNum, workingSrcPos, 0), srcLatent);\r\n lerpLatent(outputLatent, srcLatent, blendWeight, outputLatent);\r\n outputDepth += takeDepth;\r\n // if (outputDepth > 65535u) {\r\n // outputLatent = latentFromLatentCM(cyanLatentC, neutralLatentM);\r\n // }\r\n }\r\n return newError;\r\n}\r\n\r\nvoid main() {\r\n \r\n highp uvec2 workingSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n highp uvec2 actionSize = uvec2(textureSize(u_actionFromTexNum, 0));\r\n highp ivec3 actionPos = workingPositionToActionPosition(workingPos, workingSize, u_actionTextureOffset, actionSize, u_actionTextureIndex);\r\n highp uvec2 maxDepthSize = uvec2(textureSize(u_maxDepthTexNum, 0));\r\n \r\n outputDepth = 0u;\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n\r\n if (actionPos.x < 0) {\r\n return;\r\n }\r\n // apply the movements\r\n // movement instructions are in the movements texture.\r\n highp uvec4 vMovements = texelFetch(u_actionFromTexNum, actionPos, 0);\r\n highp vec4 vFractions = texelFetch(u_actionFracTexNum, actionPos, 0);\r\n highp float outputLatent[8] = smudgeLatent;\r\n outputDepth = uint(0);\r\n\r\n highp float error = 0.0;\r\n if (vMovements.r > uint(0)) {\r\n error = accumulateTakes(error, vMovements.r, vFractions.r, u_actionTextureOffset, actionSize, u_maxDepthTextureOffset, maxDepthSize, u_maxDepthTextureIndex, workingSize, outputLatent, outputDepth);\r\n }\r\n if (vMovements.g > uint(0)) {\r\n error = accumulateTakes(error, vMovements.g, vFractions.g, u_actionTextureOffset, actionSize, u_maxDepthTextureOffset, maxDepthSize, u_maxDepthTextureIndex, workingSize, outputLatent, outputDepth);\r\n }\r\n if (vMovements.b > uint(0)) {\r\n error = accumulateTakes(error, vMovements.b, vFractions.b, u_actionTextureOffset, actionSize, u_maxDepthTextureOffset, maxDepthSize, u_maxDepthTextureIndex, workingSize, outputLatent, outputDepth);\r\n }\r\n if (vMovements.a > uint(0)) {\r\n error = accumulateTakes(error, vMovements.a, vFractions.a, u_actionTextureOffset, actionSize, u_maxDepthTextureOffset, maxDepthSize, u_maxDepthTextureIndex, workingSize, outputLatent, outputDepth);\r\n }\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent); \r\n \r\n return;\r\n}\r\n`;\r\nstatic fsSourceProcessCommitAccumulator = \r\n TouchPageChange.fsSourceProcessGlobals \r\n + TouchPageChange.fsColorMixLerpLatentSource \r\n + TouchPageChange.fsActionPositionsSource + \r\n`\r\n#line 10631\r\n\r\nvoid main() {\r\n\r\n // apply the commit texture. the accumulator adds to the source and removes down to the max depth\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n highp uvec2 actionSize = uvec2(textureSize(u_actionFromTexNum, 0));\r\n highp ivec3 actionPos = workingPositionToActionPosition(workingPos, workingSize, u_actionTextureOffset, actionSize, u_actionTextureIndex);\r\n highp uvec2 maxDepthSize = uvec2(textureSize(u_maxDepthTexNum, 0));\r\n highp ivec3 maxDepthPos = workingPositionToActionPosition(workingPos, workingSize, u_maxDepthTextureOffset, maxDepthSize, u_maxDepthTextureIndex);\r\n \r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n if (outputDepth == 0u) {\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n } else {\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n }\r\n\r\n if (u_debug == 1) {\r\n outputDepth = 13u;\r\n return;\r\n }\r\n\r\n if (actionPos.x < 0) {\r\n return;\r\n }\r\n \r\n\r\n highp float destCommitFrac = texelFetch(u_actionCommitTexNum, actionPos, 0).r;\r\n if (destCommitFrac > 0.0) {\r\n highp uint destMaxDepth = texelFetch(u_maxDepthTexNum, maxDepthPos, 0).r;\r\n\r\n if (outputDepth > destMaxDepth) {\r\n highp float removef = (destCommitFrac * float(outputDepth - destMaxDepth));\r\n highp uint remove = uint(removef);\r\n if (remove >= outputDepth) {\r\n outputDepth = uint(0);\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n } else {\r\n outputDepth -= remove;\r\n }\r\n }\r\n }\r\n\r\n highp uint accumDepth = texture(u_accumWetDepthTexNum, v_texCoordRendered).r;\r\n if (u_writeAccum == 1 && accumDepth > uint(0)) {\r\n // blend\r\n highp float blendWeight = float(accumDepth) / (float(accumDepth) + float(outputDepth));\r\n highp float outputLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n highp float accumLatent[8];\r\n latentFromLatentCM(texture(u_accumLatentCTexNum, v_texCoordRendered), texture(u_accumLatentMTexNum, v_texCoordRendered), accumLatent);\r\n lerpLatent(outputLatent, accumLatent, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n outputDepth += accumDepth;\r\n // if (outputDepth > 65535u) {\r\n // outputLatentC = cyanLatentC;\r\n // outputLatentM = neutralLatentM;\r\n // }\r\n }\r\n}\r\n`;\r\n\r\nstatic fsSourceCentralPullWetChanges = \r\nTouchPageChange.fsSourceProcessGlobals \r\n+ TouchPageChange.fsColorMixLerpLatentSource \r\n+`\r\n#line 10679\r\n\r\nvoid main() {\r\n // working is the wet paint. reference is the starting wet. accumulator is the pull gradients\r\n highp uvec4 newWetLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n highp uvec4 newWetLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n highp uvec4 newWetDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered);\r\n highp uvec4 startWetDepth = texture(u_referenceWetDepthTexNum, v_texCoordRendered);\r\n highp uvec4 pullParams0123 = texture(u_accumLatentCTexNum, v_texCoordRendered);\r\n highp uvec4 pullParams5678 = texture(u_accumLatentMTexNum, v_texCoordRendered);\r\n highp uvec4 pullParamsSelf = texture(u_accumWetDepthTexNum, v_texCoordRendered);\r\n\r\n outputDepth = newWetDepth.r;\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = emptyLatentPart;\r\n\r\n // first, remove percentage that gets shoved inward\r\n if (outputDepth > 0u) {\r\n highp float pctRemove = float(pullParamsSelf.r) / 60000.0;\r\n outputDepth -= uint(float(outputDepth) * pctRemove + 0.5);\r\n }\r\n if (outputDepth > 0u) {\r\n outputLatentC = newWetLatentC;\r\n outputLatentM = newWetLatentM;\r\n }\r\n\r\n // now, add the pulls\r\n highp uvec2 workingSize = uvec2(textureSize(u_accumLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n highp float accumDepth = float(outputDepth);\r\n highp float outputLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n\r\n highp float pctThere = float(pullParams0123.r) / 60000.0;\r\n if (pctThere > 0.0) {\r\n highp ivec2 posThere = ivec2(workingPos.x-1, workingPos.y+1);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp float giveFracThere = float(texelFetch(u_accumWetDepthTexNum, posThere, 0).r) / 60000.0;\r\n highp float takeAmount = float(depthThere) * giveFracThere * pctThere;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n takeAmount = max(1.0, takeAmount);\r\n highp float blendWeight = takeAmount / (accumDepth + takeAmount);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n accumDepth += takeAmount;\r\n }\r\n }\r\n pctThere = float(pullParams0123.g) / 60000.0;\r\n if (pctThere > 0.0) {\r\n highp ivec2 posThere = ivec2(workingPos.x, workingPos.y+1);;\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp float giveFracThere = float(texelFetch(u_accumWetDepthTexNum, posThere, 0).r) / 60000.0;\r\n highp float takeAmount = float(depthThere) * giveFracThere * pctThere;\r\n //outputDepth = uint(60000.0 * giveFracThere);\r\n //return;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n takeAmount = max(1.0, takeAmount);\r\n highp float blendWeight = takeAmount / (accumDepth + takeAmount);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n accumDepth += takeAmount;\r\n }\r\n }\r\n pctThere = float(pullParams0123.b) / 60000.0;\r\n if (pctThere > 0.0) {\r\n highp ivec2 posThere = ivec2(workingPos.x+1, workingPos.y+1);;\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp float giveFracThere = float(texelFetch(u_accumWetDepthTexNum, posThere, 0).r) / 60000.0;\r\n highp float takeAmount = float(depthThere) * giveFracThere * pctThere;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n takeAmount = max(1.0, takeAmount);\r\n highp float blendWeight = takeAmount / (accumDepth + takeAmount);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n accumDepth += takeAmount;\r\n }\r\n }\r\n pctThere = float(pullParams0123.a) / 60000.0;\r\n if (pctThere > 0.0) {\r\n highp ivec2 posThere = ivec2(workingPos.x-1, workingPos.y);;\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp float giveFracThere = float(texelFetch(u_accumWetDepthTexNum, posThere, 0).r) / 60000.0;\r\n highp float takeAmount = float(depthThere) * giveFracThere * pctThere;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n takeAmount = max(1.0, takeAmount);\r\n highp float blendWeight = takeAmount / (accumDepth + takeAmount);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n accumDepth += takeAmount;\r\n }\r\n }\r\n pctThere = float(pullParams5678.r) / 60000.0;\r\n if (pctThere > 0.0) {\r\n highp ivec2 posThere = ivec2(workingPos.x+1, workingPos.y);;\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp float giveFracThere = float(texelFetch(u_accumWetDepthTexNum, posThere, 0).r) / 60000.0;\r\n highp float takeAmount = float(depthThere) * giveFracThere * pctThere;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n takeAmount = max(1.0, takeAmount);\r\n highp float blendWeight = takeAmount / (accumDepth + takeAmount);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n accumDepth += takeAmount;\r\n }\r\n }\r\n pctThere = float(pullParams5678.g) / 60000.0;\r\n if (pctThere > 0.0) {\r\n highp ivec2 posThere = ivec2(workingPos.x-1, workingPos.y-1);;\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp float giveFracThere = float(texelFetch(u_accumWetDepthTexNum, posThere, 0).r) / 60000.0;\r\n highp float takeAmount = float(depthThere) * giveFracThere * pctThere;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n takeAmount = max(1.0, takeAmount);\r\n highp float blendWeight = takeAmount / (accumDepth + takeAmount);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n accumDepth += takeAmount;\r\n }\r\n }\r\n pctThere = float(pullParams5678.b) / 60000.0;\r\n if (pctThere > 0.0) {\r\n highp ivec2 posThere = ivec2(workingPos.x, workingPos.y-1);;\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp float giveFracThere = float(texelFetch(u_accumWetDepthTexNum, posThere, 0).r) / 60000.0;\r\n highp float takeAmount = float(depthThere) * giveFracThere * pctThere;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n takeAmount = max(1.0, takeAmount);\r\n highp float blendWeight = takeAmount / (accumDepth + takeAmount);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n accumDepth += takeAmount;\r\n }\r\n }\r\n pctThere = float(pullParams5678.a) / 60000.0;\r\n if (pctThere > 0.0) {\r\n highp ivec2 posThere = ivec2(workingPos.x+1, workingPos.y-1);;\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp float giveFracThere = float(texelFetch(u_accumWetDepthTexNum, posThere, 0).r) / 60000.0;\r\n highp float takeAmount = float(depthThere) * giveFracThere * pctThere;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n takeAmount = max(1.0, takeAmount);\r\n highp float blendWeight = takeAmount / (accumDepth + takeAmount);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n accumDepth += takeAmount;\r\n }\r\n }\r\n\r\n \r\n outputDepth = uint(accumDepth + 0.5);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n\r\n return;\r\n}\r\n`;\r\n\r\n\r\nstatic fsSourceWetChangesToVisibleChanges = `#version 300 es\r\n#line 10863\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp usampler2D u_workingLatentCTexNum;\r\nuniform highp usampler2D u_workingLatentMTexNum;\r\nuniform highp usampler2D u_workingWetDepthTexNum;\r\nuniform highp usampler2D u_workingWetAgeTexNum;\r\nuniform highp usampler2D u_accumLatentCTexNum;\r\nuniform highp usampler2D u_accumLatentMTexNum;\r\nuniform highp usampler2D u_accumWetDepthTexNum;\r\nuniform highp usampler2D u_referenceLatentCTexNum;\r\nuniform highp usampler2D u_referenceLatentMTexNum;\r\nuniform highp usampler2D u_referenceWetDepthTexNum;\r\nuniform highp int u_dryTransmits;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nlayout(location = 0) out highp uvec4 outputLatentC;\r\nlayout(location = 1) out highp uvec4 outputLatentM;\r\nlayout(location = 2) out highp uint outputDepth;\r\nlayout(location = 3) out highp uint outputAge;\r\n\r\nhighp float preferredMeniscusScrapeDepth = 8.0 * 4.0; \r\nhighp float preferredSmashScrapeDepth = 3.0 * 4.0; \r\nhighp float backgroundImplicitDepth = 1.5;\r\n` \r\n+ TouchPageChange.fsColorMixLerpLatentSource \r\n+`\r\n#line 10878\r\n\r\nvoid main() {\r\n // make the new wet paint mask. source is the new wet paint and accumulator is the starting\r\n highp uvec4 newWetLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n highp uvec4 newWetLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n highp uvec4 newWetDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered);\r\n highp uvec4 startWetLatentC = texture(u_accumLatentCTexNum, v_texCoordRendered);\r\n highp uvec4 startWetLatentM = texture(u_accumLatentMTexNum, v_texCoordRendered);\r\n highp uvec4 startWetDepth = texture(u_accumWetDepthTexNum, v_texCoordRendered);\r\n highp uint startWetAge = texture(u_workingWetAgeTexNum, v_texCoordRendered).r;\r\n\r\n outputAge = startWetAge;\r\n outputDepth = 0u;\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = emptyLatentPart;\r\n\r\n if (newWetDepth.r == startWetDepth.r && latentPartMatch(newWetLatentC, startWetLatentC, newWetLatentM, startWetLatentM)) {\r\n return;\r\n }\r\n \r\n highp uvec4 dryLatentC = texture(u_referenceLatentCTexNum, v_texCoordRendered);\r\n highp uvec4 dryLatentM = texture(u_referenceLatentMTexNum, v_texCoordRendered);\r\n\r\n if (newWetDepth.r == 0u) {\r\n outputLatentC = dryLatentC;\r\n outputLatentM = dryLatentM;\r\n outputAge = 0u;\r\n return;\r\n }\r\n outputAge = 8u;\r\n \r\n if (u_dryTransmits == 0) {\r\n outputLatentC = newWetLatentC;\r\n outputLatentM = newWetLatentM;\r\n return;\r\n }\r\n // blend\r\n // scale between depth and 4* depth so thicker paint blocks out effect of blending much more\r\n highp float scaledDepth = float(newWetDepth.r);\r\n if (scaledDepth > preferredSmashScrapeDepth) {\r\n scaledDepth = 4.0 * preferredMeniscusScrapeDepth * ((scaledDepth-preferredSmashScrapeDepth)/(preferredMeniscusScrapeDepth - preferredSmashScrapeDepth));\r\n }\r\n highp float depthRat = backgroundImplicitDepth / (scaledDepth + backgroundImplicitDepth);\r\n highp float outputLatent[8];\r\n latentFromLatentCM(dryLatentC, dryLatentM, outputLatent);\r\n highp float newLatent[8];\r\n latentFromLatentCM(newWetLatentC, newWetLatentM, newLatent);\r\n lerpLatent(newLatent, outputLatent, depthRat, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n \r\n return;\r\n}\r\n`;\r\n\r\nstatic fsSourceVisibleChangesToFinal = `#version 300 es\r\n#line 10945\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp usampler2D u_workingLatentCTexNum;\r\nuniform highp usampler2D u_workingLatentMTexNum;\r\nuniform highp usampler2D u_workingWetDepthTexNum;\r\nuniform highp usampler2D u_accumLatentCTexNum;\r\nuniform highp usampler2D u_accumLatentMTexNum;\r\nuniform highp usampler2D u_accumWetDepthTexNum;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nuniform highp int u_doAntiAlias;\r\nlayout(location = 0) out highp uvec4 outputLatentC;\r\nlayout(location = 1) out highp uvec4 outputLatentM;\r\n\r\n` \r\n+ TouchPageChange.fsColorMixLerpLatentSource \r\n+`\r\n#line 10948\r\n\r\nvoid accumulateInfluence(highp uvec4 inflLatentC, highp uvec4 inflLatentM, highp float inf, inout highp float influenceLatent[8], inout highp float votes) {\r\n if (!(inflLatentC == emptyLatentPart && inflLatentM == emptyLatentPart)) {\r\n highp float l[8];\r\n latentFromLatentCM(inflLatentC, inflLatentM, l);\r\n if (votes == 0.0) {\r\n votes=inf;\r\n influenceLatent = l;\r\n } else {\r\n // blend\r\n votes+=inf;\r\n if (influenceLatent != l) {\r\n highp float blendWeight = inf / votes;\r\n lerpLatent(influenceLatent, l, blendWeight, influenceLatent);\r\n }\r\n }\r\n }\r\n}\r\n\r\nvoid main() {\r\n // produce the final visible.\r\n // source is external visible\r\n // accumulator is the new visible mask from step 6\r\n highp uvec4 newVisibleLatentC = texture(u_accumLatentCTexNum, v_texCoordRendered);\r\n highp uvec4 newVisibleLatentM = texture(u_accumLatentMTexNum, v_texCoordRendered);\r\n highp uvec4 oldVisibleLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n highp uvec4 oldVisibleLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n\r\n highp uvec2 workingSize = uvec2(textureSize(u_accumLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n\r\n if (!(newVisibleLatentC == emptyLatentPart && newVisibleLatentM == emptyLatentPart)) {\r\n outputLatentC = newVisibleLatentC;\r\n outputLatentM = newVisibleLatentM;\r\n } else {\r\n outputLatentC = oldVisibleLatentC;\r\n outputLatentM = oldVisibleLatentM;\r\n\r\n if (u_doAntiAlias == 1) {\r\n // if next to any new visibles, collect the influence for anti aliasing\r\n highp float influenceLatent[8] = smudgeLatent;\r\n highp float votes = 0.0;\r\n\r\n highp uvec4 inflLatentC = texelFetch(u_accumLatentCTexNum, workingPos + ivec2(-1, -1), 0);\r\n highp uvec4 inflLatentM = texelFetch(u_accumLatentMTexNum, workingPos + ivec2(-1, -1), 0);\r\n accumulateInfluence(inflLatentC, inflLatentM, 0.707, influenceLatent, votes);\r\n inflLatentC = texelFetch(u_accumLatentCTexNum, workingPos + ivec2(0, -1), 0);\r\n inflLatentM = texelFetch(u_accumLatentMTexNum, workingPos + ivec2(0, -1), 0);\r\n accumulateInfluence(inflLatentC, inflLatentM, 1.0, influenceLatent, votes);\r\n inflLatentC = texelFetch(u_accumLatentCTexNum, workingPos + ivec2(1, -1), 0);\r\n inflLatentM = texelFetch(u_accumLatentMTexNum, workingPos + ivec2(1, -1), 0);\r\n accumulateInfluence(inflLatentC, inflLatentM, 0.707, influenceLatent, votes);\r\n inflLatentC = texelFetch(u_accumLatentCTexNum, workingPos + ivec2(-1, 0), 0);\r\n inflLatentM = texelFetch(u_accumLatentMTexNum, workingPos + ivec2(-1, 0), 0);\r\n accumulateInfluence(inflLatentC, inflLatentM, 1.0, influenceLatent, votes);\r\n inflLatentC = texelFetch(u_accumLatentCTexNum, workingPos + ivec2(1, 0), 0);\r\n inflLatentM = texelFetch(u_accumLatentMTexNum, workingPos + ivec2(1, 0), 0);\r\n accumulateInfluence(inflLatentC, inflLatentM, 0.707, influenceLatent, votes);\r\n inflLatentC = texelFetch(u_accumLatentCTexNum, workingPos + ivec2(-1, 1), 0);\r\n inflLatentM = texelFetch(u_accumLatentMTexNum, workingPos + ivec2(-1, 1), 0);\r\n accumulateInfluence(inflLatentC, inflLatentM, 0.707, influenceLatent, votes);\r\n inflLatentC = texelFetch(u_accumLatentCTexNum, workingPos + ivec2(0, 1), 0);\r\n inflLatentM = texelFetch(u_accumLatentMTexNum, workingPos + ivec2(0, 1), 0);\r\n accumulateInfluence(inflLatentC, inflLatentM, 1.0, influenceLatent, votes);\r\n inflLatentC = texelFetch(u_accumLatentCTexNum, workingPos + ivec2(1, 1), 0);\r\n inflLatentM = texelFetch(u_accumLatentMTexNum, workingPos + ivec2(1, 1), 0);\r\n accumulateInfluence(inflLatentC, inflLatentM, 0.707, influenceLatent, votes);\r\n\r\n if (votes > 0.0) {\r\n // blend\r\n highp float depthRat = votes / 10.0;\r\n highp float outputLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n lerpLatent(outputLatent, influenceLatent, depthRat, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n //outputLatentM = neutralLatentM;\r\n //outputLatentC = cyanLatentC;\r\n }\r\n }\r\n }\r\n return;\r\n}\r\n`;\r\n\r\n\r\nstatic fsSourceDebugRenderDepth = `#version 300 es\r\n#line 11050\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp usampler2D u_workingLatentCTexNum;\r\nuniform highp usampler2D u_workingLatentMTexNum;\r\nuniform highp usampler2D u_workingWetDepthTexNum;\r\nuniform highp usampler2D u_kmLookupTexNum;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nlayout(location = 0) out highp vec4 outputColor;\r\nlayout(location = 1) out highp uint outputDepth;\r\n` + TouchPageChange.fsColorMixLatentToRGBSource + `\r\n#line 11044\r\nvoid main() {\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n if (outputDepth == 0u) {\r\n outputColor = vec4(0.0, 0.0, 0.0, 1.0);\r\n } else if (outputDepth < 5u) {\r\n outputColor = vec4(1.0, 1.0, 1.0, 1.0);\r\n } else if (outputDepth < 11u) {\r\n outputColor = vec4(1.0, 0.0, 0.0, 1.0);\r\n } else if (outputDepth < 21u) {\r\n outputColor = vec4(1.0, 0.5, 0.0, 1.0);\r\n } else if (outputDepth < 36u) {\r\n outputColor = vec4(1.0, 1.0, 0.0, 1.0);\r\n } else if (outputDepth < 66u) {\r\n outputColor = vec4(0.0, 1.0, 0.0, 1.0);\r\n } else if (outputDepth < 150u) {\r\n outputColor = vec4(0.0, 0.5, 0.9, 1.0);\r\n } else if (outputDepth < 500u) {\r\n outputColor = vec4(0.0, 0.0, 1.0, 1.0);\r\n } else if (outputDepth < 2001u) {\r\n outputColor = vec4(0.0, 0.5, 0.9, 1.0);\r\n } else {\r\n outputColor = vec4(0.5, 0.5, 0.5, 1.0);\r\n }\r\n}`;\r\n\r\nstatic fsSourceDebugTypeEffects =\r\n TouchPageChange.fsSourceProcessGlobals \r\n + TouchPageChange.fsColorMixLerpLatentSource\r\n +\r\n`\r\n#line 11075\r\n\r\nvoid main() {\r\n \r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n if (outputDepth == 0u) {\r\n return;\r\n }\r\n \r\n uvec4 mustC = mustardLatentC;\r\n mustC.g = 62053u;\r\n uvec4 mustM = neutralLatentM;\r\n highp float l[8];\r\n latentFromLatentCM(mustC, mustM, l);\r\n\r\n l[1] = float(62053u) / u_latentScale * (u_maxC1 - u_minC1) + u_minC1;\r\n highp float mc0 = float(62053u) / u_latentScale * (u_maxC1 - u_minC1) + u_minC1;\r\n \r\n highp float cdiff = mc0-l[1];\r\n if (cdiff * 4000.0 > 1.0) {\r\n outputLatentC = mustardLatentC;\r\n outputLatentM = neutralLatentM;\r\n return;\r\n }\r\n //l.concentration1 = 0.9383388289;\r\n //mediump float cy = 0.9383388289;\r\n //mediump float c1 = clamp(cy, u_minC1, u_maxC1);\r\n //c1 = (c1 - u_minC1) / (u_maxC1 - u_minC1);\r\n //highp uint c1u = uint((c1 * u_latentScale) + 0.5);\r\n\r\n uvec4 convertedC = latentToLatentC(l);\r\n if (mustC.g - convertedC.g > 20u) {\r\n outputLatentC = cyanLatentC;\r\n outputLatentM = neutralLatentM;\r\n }\r\n \r\n return;\r\n}\r\n`;\r\n static getPrograms(): Array<[string, ProgramInfo]> {\r\n return [[TouchPageChange.fsSourceExternalToLatent, TouchPageChange.externalToLatentProgram],\r\n [TouchPageChange.fsSourceLatentToExternal, TouchPageChange.latentToExternalProgram], \r\n [TouchPageChange.fsSourceProcessAccumulateTakes, TouchPageChange.processAccumulateTakesProgram], \r\n [TouchPageChange.fsSourceProcessCommitAccumulator, TouchPageChange.processCommitAccumulatorProgram], \r\n [TouchPageChange.fsSourceWetChangesToVisibleChanges, TouchPageChange.wetChangesToVisibleChangesProgram],\r\n [TouchPageChange.fsSourceVisibleChangesToFinal, TouchPageChange.visibleChangesToFinalProgram],\r\n [TouchPageChange.fsSourceCentralPullWetChanges, TouchPageChange.centralPullWetChangesProgram],\r\n [TouchPageChange.fsSourceDebugRenderDepth, TouchPageChange.debugRenderDepth],\r\n [TouchPageChange.fsSourceDebugTypeEffects, TouchPageChange.debugTypeEffects],\r\n \r\n ];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-initProgramLocations');\r\n const gl = gc.gl;\r\n\r\n TouchPageChange.externalToLatentProgram.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('1', ()=>TouchPageChange.addStartupProgramLocations(gc, TouchPageChange.externalToLatentProgram));\r\n\r\n TouchPageChange.latentToExternalProgram.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('2', ()=>TouchPageChange.addStartupProgramLocations(gc, TouchPageChange.latentToExternalProgram));\r\n gc.check('3', ()=>TouchPageChange.addFinalProgramLocations(gc, TouchPageChange.latentToExternalProgram));\r\n\r\n TouchPageChange.processAccumulateTakesProgram.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('4', ()=>TouchPageChange.addProcessProgramLocations(gc, TouchPageChange.processAccumulateTakesProgram));\r\n\r\n TouchPageChange.processCommitAccumulatorProgram.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('5', ()=>TouchPageChange.addProcessProgramLocations(gc, TouchPageChange.processCommitAccumulatorProgram));\r\n\r\n TouchPageChange.wetChangesToVisibleChangesProgram.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('6', ()=>TouchPageChange.addFinishProgramLocations(gc, TouchPageChange.wetChangesToVisibleChangesProgram));\r\n\r\n TouchPageChange.visibleChangesToFinalProgram.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('7', ()=>TouchPageChange.addFinishProgramLocations(gc, TouchPageChange.visibleChangesToFinalProgram));\r\n\r\n TouchPageChange.centralPullWetChangesProgram.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('8', ()=>TouchPageChange.addFinishProgramLocations(gc, TouchPageChange.centralPullWetChangesProgram));\r\n\r\n TouchPageChange.debugRenderDepth.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('9', ()=>TouchPageChange.addStartupProgramLocations(gc, TouchPageChange.debugRenderDepth));\r\n\r\n TouchPageChange.debugTypeEffects.uniformLocations = {} as TouchUniformLocations;\r\n gc.check('10', ()=>TouchPageChange.addFinishProgramLocations(gc, TouchPageChange.debugTypeEffects));\r\n\r\n }\r\n\r\n static addSharedProgramLocations(gcFrom: GPUChecker, programInfo: TouchProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-addSharedProgramLocations');\r\n const gl = gc.gl;\r\n\r\n programInfo.uniformLocations.kmLookupTexNum = gc.checkAPI('1', ()=>gl.getUniformLocation(programInfo.program, 'u_kmLookupTexNum')!) as WebGLUniformLocation;\r\n programInfo.uniformLocations.workingLatentCTexNum = gc.checkAPI('2', ()=>gl.getUniformLocation(programInfo.program, 'u_workingLatentCTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.workingLatentMTexNum = gc.checkAPI('3', ()=>gl.getUniformLocation(programInfo.program, 'u_workingLatentMTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.workingWetDepthTexNum = gc.checkAPI('4', ()=>gl.getUniformLocation(programInfo.program, 'u_workingWetDepthTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.workingDryDepthTexNum = gc.checkAPI('5', ()=>gl.getUniformLocation(programInfo.program, 'u_workingDryDepthTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.accumLatentCTexNum = gc.checkAPI('6', ()=>gl.getUniformLocation(programInfo.program, 'u_accumLatentCTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.accumLatentMTexNum = gc.checkAPI('7', ()=>gl.getUniformLocation(programInfo.program, 'u_accumLatentMTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.accumWetDepthTexNum = gc.checkAPI('8', ()=>gl.getUniformLocation(programInfo.program, 'u_accumWetDepthTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.accumDryDepthTexNum = gc.checkAPI('9', ()=>gl.getUniformLocation(programInfo.program, 'u_accumDryDepthTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.referenceLatentCTexNum = gc.checkAPI('10', ()=>gl.getUniformLocation(programInfo.program, 'u_referenceLatentCTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.referenceLatentMTexNum = gc.checkAPI('11', ()=>gl.getUniformLocation(programInfo.program, 'u_referenceLatentMTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.referenceWetDepthTexNum = gc.checkAPI('12', ()=>gl.getUniformLocation(programInfo.program, 'u_referenceWetDepthTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.referenceDryDepthTexNum = gc.checkAPI('13', ()=>gl.getUniformLocation(programInfo.program, 'u_referenceDryDepthTexNum')!) as WebGLUniformLocation;;\r\n\r\n }\r\n\r\n static addStartupProgramLocations(gcFrom: GPUChecker, programInfo: TouchProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-addStartupProgramLocations');\r\n const gl = gc.gl;\r\n\r\n gc.check('1', ()=>TouchPageChange.addSharedProgramLocations(gc, programInfo));\r\n gc.check('2', ()=>PageChange.addProgramLocations(gc, programInfo, true));\r\n }\r\n\r\n static addProcessProgramLocations(gcFrom: GPUChecker, programInfo: TouchProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-addProcessProgramLocations');\r\n const gl = gc.gl;\r\n\r\n gc.check('1', ()=>TouchPageChange.addSharedProgramLocations(gc, programInfo));\r\n programInfo.uniformLocations.maxDepthTexNum = gc.checkAPI('2', ()=>gl.getUniformLocation(programInfo.program, 'u_maxDepthTexNum')!) as WebGLUniformLocation;\r\n programInfo.uniformLocations.actionCommitTexNum = gc.checkAPI('3', ()=>gl.getUniformLocation(programInfo.program, 'u_actionCommitTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.actionFromTexNum = gc.checkAPI('4', ()=>gl.getUniformLocation(programInfo.program, 'u_actionFromTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.actionFracTexNum = gc.checkAPI('5', ()=>gl.getUniformLocation(programInfo.program, 'u_actionFracTexNum')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.maxDepthTextureIndex = gc.checkAPI('6', ()=>gl.getUniformLocation(programInfo.program, 'u_maxDepthTextureIndex')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.actionTextureIndex = gc.checkAPI('7', ()=>gl.getUniformLocation(programInfo.program, 'u_actionTextureIndex')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.writeAccum = gc.checkAPI('8', ()=>gl.getUniformLocation(programInfo.program, 'u_writeAccum')!) as WebGLUniformLocation;\r\n programInfo.uniformLocations.debug = gc.checkAPI('9', ()=>gl.getUniformLocation(programInfo.program, 'u_debug')!) as WebGLUniformLocation;\r\n programInfo.uniformLocations.actionTextureOffset = gc.checkAPI('10', ()=>gl.getUniformLocation(programInfo.program, 'u_actionTextureOffset')!) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.maxDepthTextureOffset = gc.checkAPI('11', ()=>gl.getUniformLocation(programInfo.program, 'u_maxDepthTextureOffset')!) as WebGLUniformLocation;;\r\n\r\n gc.check('12', ()=>PageChange.addProgramLocations(gc, programInfo, true));\r\n }\r\n\r\n static addFinishProgramLocations(gcFrom: GPUChecker, programInfo: TouchProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-addFinishProgramLocations');\r\n const gl = gc.gl;\r\n\r\n gc.check('1', ()=>TouchPageChange.addSharedProgramLocations(gc, programInfo));\r\n programInfo.uniformLocations.dryTransmits = gc.checkAPI('2', ()=>gl.getUniformLocation(programInfo.program, 'u_dryTransmits')!) as WebGLUniformLocation;\r\n programInfo.uniformLocations.doAntiAlias = gc.checkAPI('3', ()=>gl.getUniformLocation(programInfo.program, 'u_doAntiAlias')!) as WebGLUniformLocation;\r\n programInfo.uniformLocations.workingWetAgeTexNum = gc.checkAPI('4', ()=>gl.getUniformLocation(programInfo.program, 'u_workingWetAgeTexNum')!) as WebGLUniformLocation;;\r\n gc.check('5', ()=>PageChange.addProgramLocations(gc, programInfo, true));\r\n }\r\n\r\n static addFinalProgramLocations(gcFrom: GPUChecker, programInfo: TouchProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-addFinalProgramLocations');\r\n const gl = gc.gl;\r\n\r\n programInfo.uniformLocations.doDepthLighting = gc.checkAPI('', ()=>gl.getUniformLocation(programInfo.program, 'u_doDepthLighting')!, true) as WebGLUniformLocation;;\r\n }\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n TouchPageChange.touchBuffers = {} as TouchProgramBuffers;\r\n TouchPageChange.addPermanentStorage(gc, TouchPageChange.touchBuffers, textureCallback);\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: TouchProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-addPermanentStorage');\r\n const gl = gc.gl;\r\n\r\n gc.check('1', ()=>PageChange.addPermanentStorage(gc, buffers, textureCallback));\r\n if (TouchPageChange.touchBuffers!.kmLookupTexture == undefined) {\r\n\r\n TouchPageChange.touchBuffers!.kmLookupTexture = gc.checkAPI('18', ()=>GPURunner.initTexture(gc, 'kmLookupTexture'), true) as WebGLTexture;;\r\n TouchPageChange.touchBuffers!.nullDepthTexture = gc.checkAPI('19', ()=>GPURunner.initTexture(gc, 'nullDepthTexture'), true) as WebGLTexture;;\r\n TouchPageChange.touchBuffers!.nullLatentCTexture = gc.checkAPI('20', ()=>GPURunner.initTexture(gc, 'nullLatentCTexture'), true) as WebGLTexture;;\r\n TouchPageChange.touchBuffers!.nullLatentMTexture = gc.checkAPI('21', ()=>GPURunner.initTexture(gc, 'nullLatentMTexture'), true) as WebGLTexture;;\r\n\r\n let lut = getLookUpTable();\r\n gc.checkAPI('27', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.kmLookupTexNumVal));\r\n gc.checkAPI('28', ()=>gl.bindTexture(gl.TEXTURE_2D, TouchPageChange.touchBuffers!.kmLookupTexture));\r\n gc.checkAPI('29', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, gl.R8UI, 1024, 773, 0, gl.RED_INTEGER, gl.UNSIGNED_BYTE, lut));\r\n\r\n gc.checkAPI('30', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.accumWetDepthTexNumVal));\r\n gc.checkAPI('31', ()=>gl.bindTexture(gl.TEXTURE_2D, TouchPageChange.touchBuffers!.nullDepthTexture));\r\n gc.checkAPI('32', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, gl.R16UI,\r\n 2, 2, 0,\r\n gl.RED_INTEGER, gl.UNSIGNED_SHORT, null));\r\n\r\n gc.checkAPI('33', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.accumLatentCTexNumVal));\r\n gc.checkAPI('34', ()=>gl.bindTexture(gl.TEXTURE_2D, TouchPageChange.touchBuffers!.nullLatentCTexture));\r\n gc.checkAPI('35', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA16UI,\r\n 2, 2, 0,\r\n gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, null));\r\n gc.checkAPI('36', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.accumLatentMTexNumVal));\r\n gc.checkAPI('37', ()=>gl.bindTexture(gl.TEXTURE_2D, TouchPageChange.touchBuffers!.nullLatentMTexture));\r\n gc.checkAPI('38', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA16UI,\r\n 2, 2, 0,\r\n gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, null));\r\n \r\n }\r\n\r\n buffers.kmLookupTexture = TouchPageChange.touchBuffers!.kmLookupTexture;\r\n buffers.nullDepthTexture = TouchPageChange.touchBuffers!.nullDepthTexture;\r\n buffers.nullLatentCTexture = TouchPageChange.touchBuffers!.nullLatentCTexture;\r\n buffers.nullLatentMTexture = TouchPageChange.touchBuffers!.nullLatentMTexture;\r\n }\r\n\r\n // shared\r\n static workingLatentCTexNumVal = 0;\r\n static workingLatentMTexNumVal = 1;\r\n static workingWetDepthTexNumVal = 2;\r\n static workingDryDepthTexNumVal = 3;\r\n static workingWetAgeTexNumVal = 4;\r\n static accumLatentCTexNumVal = 5;\r\n static accumLatentMTexNumVal = 6;\r\n static accumWetDepthTexNumVal = 7;\r\n static accumDryDepthTexNumVal = 8;\r\n static referenceLatentCTexNumVal = 9;\r\n static referenceLatentMTexNumVal = 10;\r\n static referenceWetDepthTexNumVal = 11;\r\n static referenceDryDepthTexNumVal = 12;\r\n static kmLookupTexNumVal = 13;\r\n // process only\r\n static maxDepthTexNumVal = 14;\r\n static actionFromTexNumVal = 15;\r\n static actionFracTexNumVal = 16;\r\n static actionCommitTexNumVal = 17;\r\n\r\n // finish only\r\n\r\n\r\n\r\n entries: Array;\r\n tipApplication: TipApplication;\r\n dryTransmits: boolean;\r\n centralPull: ((d:number)=>number) | undefined\r\n\r\n activeWorkingLatentCTexture: WebGLTexture | null = null;\r\n activeWorkingLatentMTexture: WebGLTexture | null = null;\r\n activeWorkingDepthTexture: WebGLTexture | null = null;\r\n activeWorkingFramebuffer: WebGLFramebuffer | null = null;\r\n activeAccLatentCTexture: WebGLTexture | null = null;\r\n activeAccLatentMTexture: WebGLTexture | null = null;\r\n activeAccDepthTexture: WebGLTexture | null = null;\r\n activeAccFramebuffer: WebGLFramebuffer | null = null;\r\n activeOutputLatentCTexture: WebGLTexture | null = null;\r\n activeOutputLatentMTexture: WebGLTexture | null = null;\r\n activeOutputDepthTexture: WebGLTexture | null = null;\r\n activeOutputFramebuffer: WebGLFramebuffer | null = null;\r\n activeStashedLatentCTexture: WebGLTexture | null = null;\r\n activeStashedLatentMTexture: WebGLTexture | null = null;\r\n activeStashedDepthTexture: WebGLTexture | null = null;\r\n activeStashedFramebuffer: WebGLFramebuffer | null = null;\r\n activePreservedLatentCTexture: WebGLTexture | null = null;\r\n activePreservedLatentMTexture: WebGLTexture | null = null;\r\n activePreservedDepthTexture: WebGLTexture | null = null;\r\n activePreservedFramebuffer: WebGLFramebuffer | null = null;\r\n\r\n initialWetLatentCTexture: WebGLTexture | null = null;\r\n initialWetLatentMTexture: WebGLTexture | null = null;\r\n initialWetDepthTexture: WebGLTexture | null = null;\r\n initialWetAgeTexture: WebGLTexture | null = null;\r\n working1LatentCTexture: WebGLTexture | null = null;\r\n working1LatentMTexture: WebGLTexture | null = null;\r\n working1DepthTexture: WebGLTexture | null = null;\r\n working1Framebuffer: WebGLFramebuffer | null = null;\r\n working2LatentCTexture: WebGLTexture | null = null;\r\n working2LatentMTexture: WebGLTexture | null = null;\r\n working2DepthTexture: WebGLTexture | null = null;\r\n working2Framebuffer: WebGLFramebuffer | null = null;\r\n working3LatentCTexture: WebGLTexture | null = null;\r\n working3LatentMTexture: WebGLTexture | null = null;\r\n working3DepthTexture: WebGLTexture | null = null;\r\n working3Framebuffer: WebGLFramebuffer | null = null;\r\n accLatentCTexture: WebGLTexture | null = null;\r\n accLatentMTexture: WebGLTexture | null = null;\r\n accDepthTexture: WebGLTexture | null = null;\r\n accFramebuffer: WebGLFramebuffer | null = null;\r\n finalWetAgeTexture: WebGLTexture | null = null;\r\n\r\n\r\n constructor(page: Page, pageX: number, pageY: number, width: number, height: number,\r\n tipsAndLocations: Array, tipApplication: TipApplication,\r\n dryTransmits: boolean, centralPull: ((d:number)=>number) | undefined) {\r\n super(page, pageX, pageY, width, height);\r\n this.entries = tipsAndLocations;\r\n this.tipApplication = tipApplication;\r\n this.dryTransmits = dryTransmits;\r\n this.centralPull = centralPull;\r\n }\r\n\r\n debugShowAt = 0;\r\n debugShowAt2 = 0;\r\n\r\n debugRenderLatentOutput(piRestart: ProgramInfo, depthRender: boolean = false) {\r\n const gc = new GPUChecker(GPURunner.gl!, undefined, 'debugRenderLatentOutput');\r\n const gl = gc.gl;\r\n let saveInputLatentCTex = this.activeWorkingLatentCTexture;\r\n let saveInputLatentMTex = this.activeWorkingLatentMTexture;\r\n let useOutputLatentCTex = this.activeOutputLatentCTexture;\r\n let useOutputLatentMTex = this.activeOutputLatentMTexture;\r\n let saveInputDepthTex = this.activeWorkingDepthTexture;\r\n let useOutputDepthTex = this.activeOutputDepthTexture;\r\n if (!depthRender) {\r\n saveInputDepthTex = null;\r\n useOutputDepthTex = null;\r\n }\r\n if (depthRender === false) {\r\n gl.useProgram(TouchPageChange.latentToExternalProgram.program);\r\n this._initializeOutputProgram(gc, TouchPageChange.latentToExternalProgram, null as any);\r\n } else {\r\n gl.useProgram(TouchPageChange.debugRenderDepth.program);\r\n this._initializeOutputProgram(gc, TouchPageChange.debugRenderDepth, null as any);\r\n }\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n if (depthRender === false) {\r\n gl.activeTexture(gl.TEXTURE0 + TouchPageChange.workingLatentCTexNumVal);\r\n gl.bindTexture(gl.TEXTURE_2D, useOutputLatentCTex);\r\n gl.activeTexture(gl.TEXTURE0 + TouchPageChange.workingLatentMTexNumVal);\r\n gl.bindTexture(gl.TEXTURE_2D, useOutputLatentMTex);\r\n } else {\r\n gl.activeTexture(gl.TEXTURE0 + TouchPageChange.workingWetDepthTexNumVal);\r\n gl.bindTexture(gl.TEXTURE_2D, useOutputDepthTex);\r\n }\r\n gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts);\r\n //gl.drawArrays(gl.TRIANGLES, 0, 24);\r\n this.crcDebug!.clearRect(this.debugShowAt, this.debugShowAt2, 50, 50);\r\n this.crcDebug!.drawImage(gl.canvas, this.debugShowAt, this.debugShowAt2);\r\n this.debugShowAt += 50;\r\n if (this.debugShowAt > 250) {\r\n this.debugShowAt = 0;\r\n this.debugShowAt2 += 50;\r\n if (this.debugShowAt2 > 250) {\r\n this.debugShowAt2 = 0;\r\n }\r\n\r\n }\r\n if (depthRender === false) {\r\n gl.activeTexture(gl.TEXTURE0 + TouchPageChange.workingLatentCTexNumVal);\r\n gl.bindTexture(gl.TEXTURE_2D, saveInputLatentCTex);\r\n gl.activeTexture(gl.TEXTURE0 + TouchPageChange.workingLatentMTexNumVal);\r\n gl.bindTexture(gl.TEXTURE_2D, saveInputLatentMTex);\r\n } else {\r\n gl.activeTexture(gl.TEXTURE0 + TouchPageChange.workingWetDepthTexNumVal);\r\n gl.bindTexture(gl.TEXTURE_2D, saveInputDepthTex);\r\n }\r\n gl.useProgram(piRestart.program);\r\n }\r\n\r\n debugMeasureDepthTexture(text: WebGLTexture, byte: boolean = false): [number, Uint8Array | Uint32Array] {\r\n const gl = GPURunner.gl!;\r\n let texDepth = this.debugGetIntTexture(text, this.width, this.height, 1, byte);\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.activeOutputFramebuffer);\r\n let d = 0;\r\n (texDepth.values() as any).forEach((element: number) => { d+=element; });\r\n return [d, texDepth];\r\n }\r\n debugSpewArray(buffer: Uint8Array | Uint32Array, intPer: number, cellWidth: number, scaleDown: number, altWidth: number | undefined = undefined, altHeight: number | undefined = undefined) {\r\n\r\n let width = altWidth === undefined ? this.width : altWidth;\r\n let height = altHeight === undefined ? this.height : altHeight;\r\n\r\n console.log('values');\r\n for (let i = height-1; i >= 0; i--) {\r\n let spew = '';\r\n if (i === height-1) {\r\n spew = ' ';\r\n for (let j = 0; j < width; j++) {\r\n let cellSpew = `${j<10?' ':''}${j}`;\r\n spew += ' '.repeat(cellWidth-cellSpew.length) + cellSpew + ',';\r\n }\r\n console.log(spew);\r\n }\r\n spew = `${i<10?' ':''}${i} ${(height-1-i)<10?' ':''}${(height-1-i)} `;\r\n for (let j = 0; j < width; j++) {\r\n let idx = i*intPer*height + j*intPer;\r\n let d = buffer[idx];\r\n let cellSpew = '';\r\n for (let k = 0; k < intPer; k++) {\r\n d = buffer[idx+k];\r\n cellSpew += (Math.floor(d/scaleDown) + (d > 0 && d <= scaleDown ? 1 : 0)).toString();\r\n }\r\n if (cellWidth < cellSpew.length) {\r\n spew += cellSpew + ',';\r\n } else {\r\n spew += ' '.repeat(cellWidth-cellSpew.length) + cellSpew + ',';\r\n }\r\n \r\n }\r\n console.log(spew);\r\n\r\n }\r\n }\r\n\r\n debugSpewDepthTexture(text: WebGLTexture, byte: boolean = false) {\r\n let d = this.debugMeasureDepthTexture(text, byte);\r\n if (byte) {\r\n this.debugSpewArray(d[1] as Uint8Array, 1, 4, 1);\r\n } else {\r\n this.debugSpewArray(d[1] as Uint32Array, 1, 4, 1);\r\n }\r\n }\r\n debugSpewLatentTexture(text: WebGLTexture) {\r\n const gl = GPURunner.gl!;\r\n let texLat = this.debugGetIntTexture(text, this.width, this.height, 4, false);\r\n //this.debugSpewArray(texLat, 4, 4, 6554);\r\n this.debugSpewArray(texLat, 4, 20, 1);\r\n }\r\n\r\n debugMeasureOutput() : [cntTot: number, cntFill: number, depth: number, c0: number, c1: number, c2: number, c3: number, mRed: number, mGreen: number, mBlue: number] {\r\n let latC = this.debugGetIntTexture(this.activeOutputLatentCTexture!, this.width, this.height, 4, false);\r\n let latM = this.debugGetIntTexture(this.activeOutputLatentMTexture!, this.width, this.height, 4, false);\r\n let dep = this.debugGetIntTexture(this.activeOutputDepthTexture!, this.width, this.height, 1, false);\r\n let cnt = 0;\r\n let totD = 0;\r\n let totC0 = 0;\r\n let totC1 = 0;\r\n let totC2 = 0;\r\n let totC3 = 0;\r\n let totM0 = 0;\r\n let totM1 = 0;\r\n let totM2 = 0;\r\n let totM3 = 0;\r\n for (let y = 0; y < this.height; y++) {\r\n for (let x = 0; x < this.width; x++) {\r\n let d = dep[(y * this.width + x)];\r\n totD += d;\r\n if (d > 0) {\r\n let off = (y * this.width + x) * 4;\r\n totC0 += d * latC[off];\r\n totC1 += d * latC[off + 1];\r\n totC2 += d * latC[off + 2];\r\n totC3 += d * latC[off + 3];\r\n totM0 += d * latM[off];\r\n totM1 += d * latM[off + 1];\r\n totM2 += d * latM[off + 2];\r\n totM3 += d * latM[off + 3];\r\n cnt++;\r\n }\r\n }\r\n }\r\n return [this.height*this.width, cnt, totD, totC0, totC1, totC2, totC3, totM0, totM1, totM2];\r\n \r\n\r\n }\r\n\r\n workingFrameTextureNumbers = [TouchPageChange.workingLatentCTexNumVal, TouchPageChange.workingLatentMTexNumVal, TouchPageChange.workingWetDepthTexNumVal];\r\n\r\n\r\n bindWorkingFrame(gc: GPUChecker, frame: WebGLFramebuffer | null = null, latentCTex: WebGLTexture | null = null, latentMTex: WebGLTexture | null = null, depthTex: WebGLTexture | null = null) {\r\n let gl = GPURunner.gl!;\r\n this.activeWorkingFramebuffer = frame;\r\n this.activeWorkingLatentCTexture = latentCTex;\r\n this.activeWorkingLatentMTexture = latentMTex;\r\n this.activeWorkingDepthTexture = depthTex;\r\n\r\n if (frame === null) {\r\n //console.log('bindWorking null frame');\r\n // indicates the working frame is external\r\n if (depthTex !== null) {\r\n gc.check('bwf1', ()=>GPURunner.activateTexture(gc, this.workingFrameTextureNumbers[2], depthTex));\r\n }\r\n if (latentMTex !== null) {\r\n gc.check('bwf2', ()=>GPURunner.activateTexture(gc, this.workingFrameTextureNumbers[1], latentMTex));\r\n }\r\n if (latentCTex !== null) {\r\n gc.check('bwf3', ()=>GPURunner.activateTexture(gc, this.workingFrameTextureNumbers[0], latentCTex));\r\n }\r\n\r\n } else {\r\n if (this.activeWorkingFramebuffer === this.working1Framebuffer) {\r\n this.activeWorkingDepthTexture = this.working1DepthTexture;\r\n this.activeWorkingLatentCTexture = this.working1LatentCTexture;\r\n this.activeWorkingLatentMTexture = this.working1LatentMTexture;\r\n } else if (this.activeWorkingFramebuffer === this.accFramebuffer) {\r\n this.activeWorkingDepthTexture = this.accDepthTexture;\r\n this.activeWorkingLatentCTexture = this.accLatentCTexture;\r\n this.activeWorkingLatentMTexture = this.accLatentMTexture;\r\n } else if (this.activeWorkingFramebuffer === this.working2Framebuffer) {\r\n this.activeWorkingDepthTexture = this.working2DepthTexture;\r\n this.activeWorkingLatentCTexture = this.working2LatentCTexture;\r\n this.activeWorkingLatentMTexture = this.working2LatentMTexture;\r\n } else if (this.activeWorkingFramebuffer === this.working3Framebuffer) {\r\n this.activeWorkingDepthTexture = this.working3DepthTexture;\r\n this.activeWorkingLatentCTexture = this.working3LatentCTexture;\r\n this.activeWorkingLatentMTexture = this.working3LatentMTexture;\r\n } else {\r\n //console.log('bindWorking unknown');\r\n }\r\n\r\n if (this.activeWorkingDepthTexture !== null) {\r\n gc.check('bwf5', ()=>GPURunner.activateTexture(gc, this.workingFrameTextureNumbers[2], this.activeWorkingDepthTexture));\r\n }\r\n if (this.activeWorkingLatentMTexture !== null) {\r\n gc.check('bwf6', ()=>GPURunner.activateTexture(gc, this.workingFrameTextureNumbers[1], this.activeWorkingLatentMTexture));\r\n }\r\n if (this.activeWorkingLatentCTexture !== null) {\r\n gc.check('bwf7', ()=>GPURunner.activateTexture(gc, this.workingFrameTextureNumbers[0], this.activeWorkingLatentCTexture));\r\n }\r\n }\r\n }\r\n\r\n bindOutputFrame(gc: GPUChecker, frame: WebGLFramebuffer | null = null, latentCTex: WebGLTexture | null = null, latentMTex: WebGLTexture | null = null, depthTex: WebGLTexture | null = null) {\r\n let gl = GPURunner.gl!;\r\n if (frame === null) {\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n this.activeOutputLatentCTexture = null;\r\n this.activeOutputLatentMTexture = null;\r\n this.activeOutputDepthTexture = null;\r\n this.activeOutputFramebuffer = null;\r\n return;\r\n }\r\n this.activeOutputFramebuffer = frame;\r\n if (latentCTex === null) {\r\n if (this.activeOutputFramebuffer === this.working1Framebuffer) {\r\n this.activeOutputLatentCTexture = this.working1LatentCTexture;\r\n } else if (this.activeOutputFramebuffer === this.accFramebuffer) {\r\n this.activeOutputLatentCTexture = this.accLatentCTexture;\r\n } else if (this.activeOutputFramebuffer === this.working2Framebuffer) {\r\n this.activeOutputLatentCTexture = this.working2LatentCTexture;\r\n } else if (this.activeOutputFramebuffer === this.working3Framebuffer) {\r\n this.activeOutputLatentCTexture = this.working3LatentCTexture;\r\n } else {\r\n this.activeOutputLatentCTexture = null;\r\n }\r\n } else {\r\n this.activeOutputLatentCTexture = latentCTex;\r\n }\r\n if (latentMTex === null) {\r\n if (this.activeOutputFramebuffer === this.working1Framebuffer) {\r\n this.activeOutputLatentMTexture = this.working1LatentMTexture;\r\n } else if (this.activeOutputFramebuffer === this.accFramebuffer) {\r\n this.activeOutputLatentMTexture = this.accLatentMTexture;\r\n } else if (this.activeOutputFramebuffer === this.working2Framebuffer) {\r\n this.activeOutputLatentMTexture = this.working2LatentMTexture;\r\n } else if (this.activeOutputFramebuffer === this.working3Framebuffer) {\r\n this.activeOutputLatentMTexture = this.working3LatentMTexture;\r\n } else {\r\n this.activeOutputLatentMTexture = null;\r\n }\r\n } else {\r\n this.activeOutputLatentMTexture = latentMTex;\r\n }\r\n\r\n if (depthTex === null) {\r\n if (this.activeOutputFramebuffer === this.working1Framebuffer) {\r\n this.activeOutputDepthTexture = this.working1DepthTexture;\r\n } else if (this.activeOutputFramebuffer === this.accFramebuffer) {\r\n this.activeOutputDepthTexture = this.accDepthTexture;\r\n } else if (this.activeOutputFramebuffer === this.working2Framebuffer) {\r\n this.activeOutputDepthTexture = this.working2DepthTexture;\r\n } else if (this.activeOutputFramebuffer === this.working3Framebuffer) {\r\n this.activeOutputDepthTexture = this.working3DepthTexture;\r\n } else {\r\n this.activeOutputDepthTexture = null;\r\n }\r\n } else {\r\n this.activeOutputDepthTexture = depthTex;\r\n }\r\n\r\n gc.check('bof', ()=>gl.bindFramebuffer(gl.FRAMEBUFFER, this.activeOutputFramebuffer));\r\n\r\n }\r\n\r\n bindExternalOutputFrame(gcFrom: GPUChecker, fbTemp: WebGLFramebuffer, colorTex: WebGLTexture, depthTex: WebGLTexture | null) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'bindExternalOutputFrame');\r\n const gl = gc.gl;\r\n gc.checkAPI('1', ()=>gl.bindFramebuffer(gl.FRAMEBUFFER, fbTemp));\r\n gc.checkAPI('2', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, colorTex, 0));\r\n if (depthTex !== null) {\r\n gc.checkAPI('3', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.TEXTURE_2D, depthTex, 0));\r\n gc.checkAPI('4', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1]));\r\n } else {\r\n gc.checkAPI('5', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0]));\r\n }\r\n\r\n this.activeOutputFramebuffer = fbTemp;\r\n this.activeOutputLatentCTexture = colorTex;\r\n this.activeOutputLatentMTexture = null;\r\n this.activeOutputDepthTexture = depthTex;\r\n }\r\n\r\n // importExternalTextures(textColor: WebGLTexture, textDepth: WebGLTexture | null) {\r\n // let gl = GPURunner.gl!;\r\n // let pi = TouchPageChange.externalToLatentProgram;\r\n // gl.useProgram(pi.program);\r\n // this.initializeStartupProgram(pi);\r\n // this.bindOutputFrame(TouchPageChange.touchBuffers!.importedFramebuffer, TouchPageChange.touchBuffers!.importedLatentCTexture, TouchPageChange.touchBuffers!.importedLatentMTexture, TouchPageChange.touchBuffers!.importedDepthTexture);\r\n\r\n // // set up the source color texture\r\n // gl.activeTexture(gl.TEXTURE0 + TouchPageChange.externalColorTexNumVal);\r\n // gl.bindTexture(gl.TEXTURE_2D, textColor);\r\n // if (textDepth !== null) {\r\n // gl.activeTexture(gl.TEXTURE0 + TouchPageChange.externalDepthTexNumVal);\r\n // gl.bindTexture(gl.TEXTURE_2D, textDepth);\r\n // } else {\r\n // gl.activeTexture(gl.TEXTURE0 + TouchPageChange.externalDepthTexNumVal);\r\n // gl.bindTexture(gl.TEXTURE_2D, TouchPageChange.touchBuffers!.nullDepthTexture);\r\n // }\r\n // gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts);\r\n\r\n // }\r\n\r\n stashOutput() {\r\n this.activeStashedLatentCTexture = this.activeOutputLatentCTexture;\r\n this.activeStashedLatentMTexture = this.activeOutputLatentMTexture;\r\n this.activeStashedDepthTexture = this.activeOutputDepthTexture;\r\n this.activeStashedFramebuffer = this.activeOutputFramebuffer;\r\n }\r\n\r\n bindStashAsWorking(gc: GPUChecker) {\r\n this.bindWorkingFrame(gc, this.activeStashedFramebuffer, this.activeStashedLatentCTexture, this.activeStashedLatentMTexture, this.activeStashedDepthTexture);\r\n this.activeStashedFramebuffer = this.activeStashedLatentCTexture = this.activeStashedLatentMTexture = this.activeStashedDepthTexture = null;\r\n }\r\n\r\n preserveOutput() {\r\n if (this.activePreservedLatentCTexture !== null) {\r\n console.log('preserved output already set');\r\n }\r\n this.activePreservedLatentCTexture = this.activeOutputLatentCTexture;\r\n this.activePreservedLatentMTexture = this.activeOutputLatentMTexture;\r\n this.activePreservedDepthTexture = this.activeOutputDepthTexture;\r\n this.activePreservedFramebuffer = this.activeOutputFramebuffer;\r\n }\r\n\r\n bindPreservedAsWorking(gc: GPUChecker) {\r\n this.bindWorkingFrame(gc, this.activePreservedFramebuffer, this.activePreservedLatentCTexture, this.activePreservedLatentMTexture, this.activePreservedDepthTexture);\r\n this.activePreservedFramebuffer = this.activePreservedLatentCTexture = this.activePreservedLatentMTexture = this.activePreservedDepthTexture = null;\r\n }\r\n\r\n directOutputTowardAccumulator(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'directOutputTowardAccumulator');\r\n const gl = gc.gl;\r\n let buffers = TouchPageChange.touchBuffers!;\r\n //console.log('bindOutputIntoAccumulator');\r\n\r\n // no accumulator because we write to the accumulator\r\n gc.check('1', ()=>GPURunner.activateTexture(gc, TouchPageChange.accumWetDepthTexNumVal, null));\r\n gc.check('2', ()=>GPURunner.activateTexture(gc, TouchPageChange.accumLatentCTexNumVal, null));\r\n gc.check('3', ()=>GPURunner.activateTexture(gc, TouchPageChange.accumLatentMTexNumVal, null));\r\n \r\n gc.check('4', ()=>this.bindOutputFrame(gc, this.accFramebuffer, this.accLatentCTexture, this.accLatentMTexture, this.accDepthTexture));\r\n this.activeAccFramebuffer = null;\r\n this.activeAccLatentCTexture = null;\r\n this.activeAccLatentMTexture = null;\r\n this.activeAccDepthTexture = null;\r\n }\r\n\r\n useTempAccumulator(gcFrom: GPUChecker, frame: WebGLFramebuffer | null = null, latentCTex: WebGLTexture | null = null, latentMTex: WebGLTexture | null = null, depthTex: WebGLTexture | null = null) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'useTempAccumulator');\r\n const gl = gc.gl;\r\n\r\n this.activeAccFramebuffer = frame;\r\n this.activeAccLatentCTexture = latentCTex;\r\n this.activeAccLatentMTexture = latentMTex;\r\n this.activeAccDepthTexture = depthTex;\r\n\r\n gc.check('1', ()=>GPURunner.activateTexture(gc, TouchPageChange.accumWetDepthTexNumVal, this.activeAccDepthTexture));\r\n gc.check('2', ()=>GPURunner.activateTexture(gc, TouchPageChange.accumLatentMTexNumVal, this.activeAccLatentMTexture));\r\n gc.check('3', ()=>GPURunner.activateTexture(gc, TouchPageChange.accumLatentCTexNumVal, this.activeAccLatentCTexture));\r\n }\r\n useAccumulator(gcFrom: GPUChecker) {\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this.useTempAccumulator(gcFrom, this.accFramebuffer, this.accLatentCTexture, this.accLatentMTexture, this.accDepthTexture);\r\n }\r\n\r\n useAvailableOutputFrame(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'useAvailableOutputFrame');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n // use either frame1 or frame2 as the output.\r\n // this assumes that one of those is not the stash, working or accumulator\r\n if (this.working1LatentCTexture !== this.activeWorkingLatentCTexture && this.working1LatentCTexture !== this.activeAccLatentCTexture && this.working1LatentCTexture !== this.activeStashedLatentCTexture && this.working1LatentCTexture !== this.activePreservedLatentCTexture) {\r\n gc.check('', ()=>this.bindOutputFrame(gc, this.working1Framebuffer));\r\n } else if (this.working2LatentCTexture !== this.activeWorkingLatentCTexture && this.working2LatentCTexture !== this.activeAccLatentCTexture && this.working2LatentCTexture !== this.activeStashedLatentCTexture && this.working2LatentCTexture !== this.activePreservedLatentCTexture) {\r\n gc.check('', ()=>this.bindOutputFrame(gc, this.working2Framebuffer));\r\n } else if (this.working3LatentCTexture !== this.activeWorkingLatentCTexture && this.working3LatentCTexture !== this.activeAccLatentCTexture && this.working3LatentCTexture !== this.activeStashedLatentCTexture && this.working3LatentCTexture !== this.activePreservedLatentCTexture) {\r\n gc.check('', ()=>this.bindOutputFrame(gc, this.working3Framebuffer));\r\n } else {\r\n console.log('no available output frame');\r\n }\r\n }\r\n\r\n usePageReference(gcFrom: GPUChecker, latentCTex: WebGLTexture | null = null, latentMTex: WebGLTexture | null = null, wetDepthTex: WebGLTexture | null = null, dryDepthTex: WebGLTexture | null = null) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'usePageReference');\r\n const gl = gc.gl;\r\n\r\n gc.check('1', ()=>GPURunner.activateTexture(gc, TouchPageChange.referenceDryDepthTexNumVal, dryDepthTex));\r\n gc.check('2', ()=>GPURunner.activateTexture(gc, TouchPageChange.referenceWetDepthTexNumVal, wetDepthTex));\r\n gc.check('3', ()=>GPURunner.activateTexture(gc, TouchPageChange.referenceLatentMTexNumVal, latentMTex));\r\n gc.check('4', ()=>GPURunner.activateTexture(gc, TouchPageChange.referenceLatentCTexNumVal, latentCTex));\r\n }\r\n\r\n\r\n //static setviewportcount = 0;\r\n\r\n override setViewport(): void {\r\n // set the resolution\r\n let gl = GPURunner.gl!;\r\n let width = this.width;\r\n let height = this.height;\r\n if (gl.canvas.width !== width || gl.canvas.height !== height) {\r\n gl.canvas.width = width;\r\n gl.canvas.height = height;\r\n gl.viewport(0, 0, width, height);\r\n // TouchPageChange.setviewportcount ++;\r\n // if (TouchPageChange.setviewportcount % 10 === 0) {\r\n // console.log('setviewportcount', TouchPageChange.setviewportcount);\r\n // }\r\n }\r\n }\r\n\r\n override preparePageForStartup(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n GPURunner.initTouchWetPageChange(gc, this.page, this);\r\n //console.log('preparePageForStartup');\r\n //this.debugSpewDepthTexture(this.pageWetDepthTexture!);\r\n\r\n //GPURunner.initTouchVisiblePageChange(this.page, this);\r\n\r\n }\r\n override applyStartupToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForProcess(gcFrom: GPUChecker): void {\r\n }\r\n override applyProcessToPage(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n GPURunner.applyTouchWetPageChange(gc, this.page, this);\r\n }\r\n override preparePageForFinish(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n GPURunner.initTouchVisiblePageChange(gc, this.page, this);\r\n }\r\n override applyFinishToPage(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n //GPURunner.applyTouchWetPageChange(this.page, this);\r\n GPURunner.applyTouchVisiblePageChange(gc, this.page, this);\r\n\r\n }\r\n\r\n\r\n override selectStartupProgram(gcFrom: GPUChecker): TouchProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = TouchPageChange.externalToLatentProgram;\r\n\r\n gcFrom.checkAPI('touch-ssp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n }\r\n\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: TouchProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._initializeStartupProgram(gc, pi, buffers);\r\n }\r\n\r\n _initializeSharedProgram(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n const gl = gc.gl;\r\n \r\n if (GPURunner.doInitializeProgram(pi, 'touch-shared')) {\r\n gl.uniform1i(pi.uniformLocations.kmLookupTexNum, TouchPageChange.kmLookupTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.workingLatentCTexNum, TouchPageChange.workingLatentCTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.workingLatentMTexNum, TouchPageChange.workingLatentMTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.workingWetDepthTexNum, TouchPageChange.workingWetDepthTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.workingDryDepthTexNum, TouchPageChange.workingDryDepthTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.accumLatentCTexNum, TouchPageChange.accumLatentCTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.accumLatentMTexNum, TouchPageChange.accumLatentMTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.accumWetDepthTexNum, TouchPageChange.accumWetDepthTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.accumDryDepthTexNum, TouchPageChange.accumDryDepthTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.referenceLatentCTexNum, TouchPageChange.referenceLatentCTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.referenceLatentMTexNum, TouchPageChange.referenceLatentMTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.referenceWetDepthTexNum, TouchPageChange.referenceWetDepthTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.referenceDryDepthTexNum, TouchPageChange.referenceDryDepthTexNumVal);\r\n\r\n }\r\n \r\n }\r\n\r\n\r\n _initializeStartupProgram(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers) {\r\n let gl = GPURunner.gl!;\r\n\r\n if (GPURunner.doInitializeProgram(pi, 'touch')) {\r\n gl.uniform1i(pi.uniformLocations.kmLookupTexNum, TouchPageChange.kmLookupTexNumVal);\r\n //gl.uniform1i(pi.uniformLocations.externalColorTexNum, TouchPageChange.externalColorTexNumVal);\r\n //gl.uniform1i(pi.uniformLocations.externalDepthTexNum, TouchPageChange.externalDepthTexNumVal);\r\n }\r\n\r\n }\r\n\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._specializeStartupRoutine(gc, pi, buffers);\r\n }\r\n\r\n _specializeStartupRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, '_specializeStartupRoutine');\r\n const gl = gc.gl;\r\n \r\n // set the resolution\r\n gl.canvas.width = this.width;\r\n gl.canvas.height = this.height;\r\n\r\n // set up the working textures\r\n let working = gc.check('1', ()=>GPURunner.workingFrameFactory.getItem(gc, undefined, this.width, this.height, [\r\n {tag:'initial-latC', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'initial-latM', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'initial-wetD', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'initial-wetA', internalFormat:gl.R8UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_BYTE}\r\n ])) as WorkingItem;\r\n\r\n this.initialWetLatentCTexture = working.tex0;\r\n this.initialWetLatentMTexture = working.tex1;\r\n this.initialWetDepthTexture = working.tex2;\r\n this.initialWetAgeTexture = working.tex3;\r\n\r\n working = gc.check('2', ()=>GPURunner.workingFrameFactory.getItem(gc, 'working1', this.width, this.height, [\r\n {tag:'latC', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'latM', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'depth', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT}\r\n ])) as WorkingItem;\r\n\r\n this.working1Framebuffer = working.fb;\r\n this.working1LatentCTexture = working.tex0;\r\n this.working1LatentMTexture = working.tex1;\r\n this.working1DepthTexture = working.tex2;\r\n\r\n working = gc.check('3', ()=>GPURunner.workingFrameFactory.getItem(gc, 'working2', this.width, this.height, [\r\n {tag:'latC', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'latM', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'depth', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT}\r\n ])) as WorkingItem;\r\n\r\n this.working2Framebuffer = working.fb;\r\n this.working2LatentCTexture = working.tex0;\r\n this.working2LatentMTexture = working.tex1;\r\n this.working2DepthTexture = working.tex2;\r\n \r\n working = gc.check('4', ()=>GPURunner.workingFrameFactory.getItem(gc, 'working3', this.width, this.height, [\r\n {tag:'latC', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'latM', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'depth', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT}\r\n ])) as WorkingItem;\r\n\r\n this.working3Framebuffer = working.fb;\r\n this.working3LatentCTexture = working.tex0;\r\n this.working3LatentMTexture = working.tex1;\r\n this.working3DepthTexture = working.tex2;\r\n\r\n working = gc.check('4', ()=>GPURunner.workingFrameFactory.getItem(gc, 'acc', this.width, this.height, [\r\n {tag:'latC', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'latM', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'depth', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT}\r\n ])) as WorkingItem;\r\n\r\n this.accFramebuffer = working.fb;\r\n this.accLatentCTexture = working.tex0;\r\n this.accLatentMTexture = working.tex1;\r\n this.accDepthTexture = working.tex2;\r\n }\r\n\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._runStartupRoutine(gc, pi, buffers);\r\n\r\n }\r\n _runStartupRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, '_runStartupRoutine');\r\n const gl = gc.gl;\r\n\r\n // stash the starting wet paint\r\n const fbTemp1 = gc.checkAPI('1', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n gc.checkAPI('2', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('3', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.pageWetLatentCTexture, 0));\r\n const fbTemp2 = gc.checkAPI('4', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n gc.checkAPI('4', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, fbTemp2));\r\n gc.checkAPI('5', ()=>gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.initialWetLatentCTexture, 0));\r\n gc.checkAPI('6', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('8', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('9', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.pageWetLatentMTexture, 0));\r\n gc.checkAPI('10', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, fbTemp2));\r\n gc.checkAPI('11', ()=>gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.initialWetLatentMTexture, 0));\r\n gc.checkAPI('12', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('13', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('14', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.pageWetDepthTexture, 0));\r\n gc.checkAPI('15', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, fbTemp2));\r\n gc.checkAPI('16', ()=>gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.initialWetDepthTexture, 0));\r\n gc.checkAPI('17', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('18', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('19', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.pageWetAgeTexture, 0));\r\n gc.checkAPI('20', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, fbTemp2));\r\n gc.checkAPI('21', ()=>gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.initialWetAgeTexture, 0));\r\n gc.checkAPI('22', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n this.activeOutputDepthTexture = this.initialWetDepthTexture;\r\n this.activeOutputLatentCTexture = this.initialWetLatentCTexture;\r\n this.activeOutputLatentMTexture = this.initialWetLatentMTexture;\r\n \r\n gl.invalidateFramebuffer(gl.READ_FRAMEBUFFER, []);\r\n gl.deleteFramebuffer(fbTemp1);\r\n }\r\n\r\n override finalizeStartup(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._finalizeStartup(gc, pi, buffers);\r\n\r\n }\r\n _finalizeStartup(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n\r\n }\r\n\r\n override selectProcessProgram(gcFrom: GPUChecker): TouchProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = TouchPageChange.processAccumulateTakesProgram;\r\n\r\n gcFrom.checkAPI('touch-spp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n }\r\n\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._initializeProcessProgram(gc, pi, buffers);\r\n\r\n }\r\n\r\n _initializeProcessProgram(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, '_initializeProcessProgram');\r\n const gl = gc.gl;\r\n\r\n gc.check('1', ()=>this._initializeSharedProgram(gc, pi, buffers));\r\n if (GPURunner.doInitializeProgram(pi, 'touch')) {\r\n gl.uniform1i(pi.uniformLocations.actionFromTexNum, TouchPageChange.actionFromTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.actionFracTexNum, TouchPageChange.actionFracTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.actionCommitTexNum, TouchPageChange.actionCommitTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.maxDepthTexNum, TouchPageChange.maxDepthTexNumVal);\r\n }\r\n \r\n }\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._specializeProcessRoutine(gc, pi, buffers);\r\n }\r\n\r\n _specializeProcessRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, '_specializeProcessRoutine');\r\n const gl = gc.gl;\r\n\r\n let working = gc.check('1', ()=>GPURunner.workingFrameFactory.getItem(gc, undefined, this.width, this.height, [\r\n {tag:'finalWetAge', internalFormat:gl.R8UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_BYTE}\r\n ])) as WorkingItem;\r\n this.finalWetAgeTexture = working.tex0;\r\n \r\n }\r\n\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._runProcessRoutine(gc, pi, buffers);\r\n }\r\n _runProcessRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n }\r\n\r\n accumulateForEntries(gcFrom: GPUChecker, perEntryDo: (tipLoc: PageChangeEntry)=>boolean): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'accumulateForEntries');\r\n const gl = gc.gl;\r\n \r\n // start with accumulator set\r\n gc.check('1', ()=>this.useAccumulator(gc));\r\n for (const tipLoc of this.entries) {\r\n if (perEntryDo(tipLoc) === false) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n accumulateTextures(gcFrom: GPUChecker, center: Point2D, textures: ChangeTextureIndexes, idxFirst:number, idxLast:number, getAccumulateProgram: (idx: number)=>TouchProgramInfo, getCommitProgram: (idx: number, stopEarly: boolean)=>TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'accumulateTextures');\r\n const gl = gc.gl;\r\n \r\n let offsetX = center.x - (textures.width)/2;\r\n let offsetY = center.y - (textures.height)/2;\r\n\r\n for (let idx=idxFirst; idx < idxLast; idx++) {\r\n let stopNow = false;\r\n let pi = getAccumulateProgram(idx - idxFirst);\r\n if ((idx - idxFirst) === 0) {\r\n gc.check('1', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.checkAPI('2', ()=>gl.uniform2i(pi.uniformLocations.maxDepthTextureOffset, offsetX, offsetY));\r\n gc.checkAPI('3', ()=>gl.uniform2i(pi.uniformLocations.actionTextureOffset, offsetX, offsetY));\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.maxDepthTextureIndex, textures.idxMax));\r\n gc.checkAPI('5', ()=>gl.uniform1i(pi.uniformLocations.writeAccum, 1));\r\n }\r\n gc.checkAPI('6', ()=>gl.uniform1i(pi.uniformLocations.actionTextureIndex, textures.idxsAction[idx]));\r\n\r\n this.stashOutput();\r\n gc.check('7', ()=>this.directOutputTowardAccumulator(gc));\r\n gc.check('8', ()=>this.bindStashAsWorking(gc));\r\n //console.log('depth into accumulate') \r\n //this.debugSpewDepthTexture(this.workingDepthTexture!)\r\n\r\n\r\n gc.checkFB('pre9');\r\n gc.checkAPI('9', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n\r\n //console.log('accumulator') \r\n //this.debugSpewDepthTexture(this.outputDepthTexture!)\r\n\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!)\r\n //console.log('acum', this.debugMeasureDepthTexture(this.outputDepthTexture!));\r\n\r\n // peek ahead to see if we need to avoid writing to the accumulator and stop now\r\n stopNow = idx+1 < textures.idxsAction.length && textures.idxsAction[idx + 1] === -1;\r\n\r\n pi = getCommitProgram((idx - idxFirst), stopNow);\r\n if ((idx - idxFirst) === 0) {\r\n gc.check('10', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.checkAPI('11', ()=>gl.uniform2i(pi.uniformLocations.maxDepthTextureOffset, offsetX, offsetY));\r\n gc.checkAPI('12', ()=>gl.uniform2i(pi.uniformLocations.actionTextureOffset, offsetX, offsetY));\r\n gc.checkAPI('13', ()=>gl.uniform1i(pi.uniformLocations.maxDepthTextureIndex, textures.idxMax));\r\n gc.checkAPI('14', ()=>gl.uniform1i(pi.uniformLocations.writeAccum, 1));\r\n }\r\n gc.checkAPI('15', ()=>gl.uniform1i(pi.uniformLocations.actionTextureIndex, textures.idxsAction[idx]));\r\n\r\n // make the output the frame that isn't the accumulator or the input\r\n gc.check('16', ()=>this.useAvailableOutputFrame(gc));\r\n // use that accumulator\r\n gc.check('17', ()=>this.useAccumulator(gc));\r\n\r\n //gl.uniform1i(pi.uniformLocations.debug, 1);\r\n\r\n\r\n gc.checkFB('pre18');\r\n gc.checkAPI('18', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n //console.log('new depth') \r\n //this.debugSpewDepthTexture(this.outputDepthTexture!)\r\n //console.log('new depth', this.debugMeasureDepthTexture(this.outputDepthTexture!)[0])\r\n\r\n if (stopNow) {\r\n break;\r\n } \r\n }\r\n\r\n }\r\n\r\n override finalizeProcess(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._finalizeProcess(gc, pi, buffers);\r\n }\r\n\r\n static anglePushes: Array;\r\n _finalizeProcess(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, '_finalizeProcess');\r\n const gl = gc.gl;\r\n\r\n\r\n if (this.centralPull !== undefined) {\r\n let buff0123 = new Uint16Array(this.width * this.height * 4);\r\n let buff5678 = new Uint16Array(this.width * this.height * 4);\r\n let buffSelf = new Uint16Array(this.width * this.height);\r\n\r\n if (TouchPageChange.anglePushes === undefined) {\r\n // once around a circle about 55 units out \r\n // go in 4 sections with 80 angles in each. push percentages range ove the 80\r\n TouchPageChange.anglePushes = new Array(9 * 80 * 4);\r\n let quadParams = [{memberStart: 3, memberMid: 6, memberEnd: 7},\r\n {memberStart: 7, memberMid: 8, memberEnd: 5},\r\n {memberStart: 5, memberMid: 2, memberEnd: 1},\r\n {memberStart: 1, memberMid: 0, memberEnd: 3}\r\n ];\r\n let aiOff = 0;\r\n for (let q=0; q < 4; q++) {\r\n let quad = quadParams[q];\r\n \r\n for (let ai = 0; ai < 80; ai++) {\r\n let pctStart = (80.0 - 1 - ai) / 80.0;\r\n let pctEnd = ai / 80.0;\r\n let pctMid = ai < 40 ? ai / 40.0 : (40 - 1 - (ai-40)) / 40.0;\r\n // normalize these to 0-1. this turns this linear interpolation into more of a circle effect\r\n let total = pctStart + pctMid + pctEnd;\r\n pctStart /= total;\r\n pctMid /= total;\r\n pctEnd /= total;\r\n let scaleStart = Math.round(pctStart * 60000.0);\r\n let scaleMid = Math.round(pctMid * 60000.0);\r\n let scaleEnd = Math.round(pctEnd * 60000.0);\r\n if (total > 0) {\r\n let scaleGap = 60000.0 - (scaleStart + scaleMid + scaleEnd);\r\n if (scaleGap > 0) {\r\n let scaleMax = Math.max(scaleStart, scaleMid, scaleEnd);\r\n if (scaleMax === scaleStart) {\r\n scaleStart += scaleGap;\r\n } else if (scaleMax === scaleMid) {\r\n scaleMid += scaleGap;\r\n } else {\r\n scaleEnd += scaleGap;\r\n }\r\n } else if (scaleGap < 0) {\r\n let scaleMin = Math.min(scaleStart === 0 ? 2 : scaleStart, scaleMid === 0 ? 2 : scaleMid, scaleEnd === 0 ? 2 : scaleEnd);\r\n if (scaleMin === scaleStart) {\r\n scaleStart += scaleGap;\r\n } else if (scaleMin === scaleMid) {\r\n scaleMid += scaleGap;\r\n } else {\r\n scaleEnd += scaleGap;\r\n }\r\n\r\n }\r\n }\r\n\r\n TouchPageChange.anglePushes[aiOff * 9 + quad.memberStart] = scaleStart;\r\n TouchPageChange.anglePushes[aiOff * 9 + quad.memberMid] = scaleMid;\r\n TouchPageChange.anglePushes[aiOff * 9 + quad.memberEnd] = scaleEnd;\r\n aiOff ++;\r\n }\r\n }\r\n }\r\n const buffOff = (x:number, y:number):number => {\r\n //return (( this.height - 1 - y) * this.width + x);\r\n return (( y) * this.width + x);\r\n }\r\n\r\n\r\n let ptCenter = new Point2D(this.page.cellsWidth/2, this.page.cellsHeight/2);\r\n let pageFirstY = this.page.cellsHeight - 1 - (this.height + this.pageY);\r\n const aiFromPageOff = (dx: number, dy:number): number => {\r\n let ptLocate = new Point2D(this.pageX +dx, pageFirstY + dy);\r\n let aLocate = ptCenter.angleToward(ptLocate)!;\r\n let aiLocate = Math.floor((aLocate >= 0 ? aLocate : aLocate + Math.PI * 2) / (Math.PI * 2) * 80*4);\r\n return aiLocate * 9;\r\n }\r\n for (let y = 0; y < this.height; y++) {\r\n for (let x = 0; x < this.width; x++) {\r\n let offset = buffOff(x,y);\r\n let ptPage = new Point2D(this.pageX + x, pageFirstY + y);\r\n let d = ptCenter.distanceTo(ptPage);\r\n let c = Math.min(1.0, this.centralPull(d));\r\n buffSelf[offset] = Math.round(c * 60000);\r\n\r\n //let pushes = TouchPageChange.anglePushes.slice(ai * 9, ai * 9 + 9);\r\n // if (x > this.width/2 - 1 && x < this.width/2 + 1) {\r\n // console.log('centerish', ptPage.x, ptPage.y, ptCenter.x, a, ai, pushes[7], pushes[1]);\r\n // }\r\n \r\n if (x > 0 && y < this.height - 1) {\r\n let aiPusher = aiFromPageOff(x-1, y+1);\r\n buff0123[offset*4 + 0] = TouchPageChange.anglePushes[aiPusher + 8];\r\n }\r\n if (y < this.height - 1) {\r\n let aiPusher = aiFromPageOff(x, y+1);\r\n buff0123[offset*4 + 1] = TouchPageChange.anglePushes[aiPusher + 7];\r\n }\r\n if (x < this.width - 1 && y < this.height - 1) {\r\n let aiPusher = aiFromPageOff(x+1, y+1);\r\n buff0123[offset*4 + 2] = TouchPageChange.anglePushes[aiPusher + 6];\r\n }\r\n if (x > 0) {\r\n let aiPusher = aiFromPageOff(x-1, y);\r\n buff0123[offset*4 + 3] = TouchPageChange.anglePushes[aiPusher + 5];\r\n }\r\n if (x < this.width - 1) {\r\n let aiPusher = aiFromPageOff(x+1, y);\r\n buff5678[offset*4 + 0] = TouchPageChange.anglePushes[aiPusher + 3];\r\n }\r\n if (x > 0 && y > 0) {\r\n let aiPusher = aiFromPageOff(x-1, y-1);\r\n buff5678[offset*4 + 1] = TouchPageChange.anglePushes[aiPusher + 2];\r\n } \r\n if (y > 0) {\r\n let aiPusher = aiFromPageOff(x, y-1);\r\n buff5678[offset*4 + 2] = TouchPageChange.anglePushes[aiPusher + 1];\r\n }\r\n if (x < this.width - 1 && y > 0) {\r\n let aiPusher = aiFromPageOff(x+1, y-1);\r\n buff5678[offset*4 + 3] = TouchPageChange.anglePushes[aiPusher + 0];\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n // console.log('buffs');\r\n // for (let y = this.height - 1; y >= 0; y--) {\r\n // let spew = '';\r\n // // for (let x = 0; x < this.width; x++) {\r\n // // let offset = y*this.width + x;\r\n // // // if (offset == 54) {\r\n // // // console.log('offset 54', buff0123[54*4 + 0], buff0123[54*4 + 1], buff0123[54*4 + 2], buff0123[54*4 + 3]);\r\n // // // }\r\n // // let s = buffSelf[offset]/60000;\r\n // // let si = Math.floor(s * 100);\r\n // // let p0 = buff0123[offset*4 + 0] / 60000;\r\n // // let p0i = Math.floor(p0 * 100);\r\n // // let p1 = buff0123[offset*4 + 1] / 60000;\r\n // // let p1i = Math.floor(p1 * 100);\r\n // // let p2 = buff0123[offset*4 + 2] / 60000;\r\n // // let p2i = Math.floor(p2 * 100);\r\n // // let p3 = buff0123[offset*4 + 3] / 60000;\r\n // // let p3i = Math.floor(p3 * 100);\r\n // // let p5 = buff5678[offset*4 + 0] / 60000;\r\n // // let p5i = Math.floor(p5 * 100);\r\n // // let p6 = buff5678[offset*4 + 1] / 60000;\r\n // // let p6i = Math.floor(p6 * 100);\r\n // // let p7 = buff5678[offset*4 + 2] / 60000;\r\n // // let p7i = Math.floor(p7 * 100);\r\n // // let p8 = buff5678[offset*4 + 3] / 60000;\r\n // // let p8i = Math.floor(p8 * 100);\r\n // // spew += '[' +si.toString().padStart(3) + p0i.toString().padStart(3) + p1i.toString().padStart(3) + p2i.toString().padStart(3) + p3i.toString().padStart(3) + p5i.toString().padStart(3) + p6i.toString().padStart(3) + p7i.toString().padStart(3) + p8i.toString().padStart(3) + '] ';\r\n // // //spew += p0.toString().padStart(3) + ' ';\r\n // // //spew += s.toString().padStart(2)+'='+p0.toString().padStart(2) + '-' + p1.toString().padStart(2) + '-' + p2.toString().padStart(2) + ',';\r\n // // //spew += `[${si}=${p0i}-${p1i}-${p2i},] `;\r\n // // //spew += `[${si}=${p1i}] `;\r\n // // //spew += `${s},${p0},${p1},${p2},`;\r\n \r\n // // }\r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let s = buffSelf[offset]/60000;\r\n // let si = Math.floor(s * 100);\r\n // spew += `${s},`;\r\n // }\r\n // spew += '99,';\r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let p0 = buff0123[offset*4 + 0] / 60000;\r\n // let p0i = Math.floor(p0 * 100);\r\n // spew += `${p0},`;\r\n // }\r\n // spew += '99,';\r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let p1 = buff0123[offset*4 + 1] / 60000;\r\n // let p1i = Math.floor(p1 * 100);\r\n // spew += `${p1},`;\r\n // }\r\n // spew += '99,';\r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let p2 = buff0123[offset*4 + 2] / 60000;\r\n // let p2i = Math.floor(p2 * 100);\r\n // spew += `${p2},`;\r\n // }\r\n // spew += '99,';\r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let p3 = buff0123[offset*4 + 3] / 60000;\r\n // let p3i = Math.floor(p3 * 100);\r\n // spew += `${p3},`;\r\n // }\r\n // spew += '99,';\r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let p5 = buff5678[offset*4 + 0] / 60000;\r\n // let p5i = Math.floor(p5 * 100);\r\n // spew += `${p5},`;\r\n // }\r\n // spew += '99,'; \r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let p6 = buff5678[offset*4 + 1] / 60000;\r\n // let p6i = Math.floor(p6 * 100);\r\n // spew += `${p6},`;\r\n // }\r\n // spew += '99,'; \r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let p7 = buff5678[offset*4 + 2] / 60000;\r\n // let p7i = Math.floor(p7 * 100);\r\n // spew += `${p7},`;\r\n // }\r\n // spew += '99,'; \r\n // for (let x = 0; x < this.width; x++) {\r\n // let offset = y*this.width + x;\r\n // let p8 = buff5678[offset*4 + 3] / 60000;\r\n // let p8i = Math.floor(p8 * 100);\r\n // spew += `${p8},`;\r\n // }\r\n // console.log(spew);\r\n\r\n // }\r\n\r\n //let d1 = this.debugMeasureDepthTexture(this.outputDepthTexture!, false)[0];\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n\r\n pi = TouchPageChange.centralPullWetChangesProgram;\r\n gc.checkAPI('1', ()=>gl.useProgram(pi.program));\r\n gc.check('2', ()=>this.initializeFinishProgram(gc, pi));\r\n\r\n // upload those into the accumulator textures\r\n gc.checkAPI('3', ()=>gl.bindTexture(gl.TEXTURE_2D, this.accLatentCTexture));\r\n gc.checkAPI('4', ()=>gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, this.width, this.height, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, buff0123));\r\n gc.checkAPI('5', ()=>gl.bindTexture(gl.TEXTURE_2D, this.accLatentMTexture));\r\n gc.checkAPI('6', ()=>gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, this.width, this.height, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, buff5678));\r\n gc.checkAPI('7', ()=>gl.bindTexture(gl.TEXTURE_2D, this.accDepthTexture));\r\n gc.checkAPI('8', ()=>gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, this.width, this.height, gl.RED_INTEGER, gl.UNSIGNED_SHORT, buffSelf));\r\n gc.check('9', ()=>this.useAccumulator(gc));\r\n\r\n // last output is the working\r\n this.stashOutput();\r\n gc.check('10', ()=>this.bindStashAsWorking(gc));\r\n\r\n // reference input is the wet paint\r\n gc.check('11', ()=>this.usePageReference(gc, this.initialWetLatentCTexture, this.initialWetLatentMTexture, this.initialWetDepthTexture));\r\n\r\n gc.check('12', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkFB('pre13');\r\n gc.checkAPI('13', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!));\r\n //let d2 = this.debugMeasureDepthTexture(this.outputDepthTexture!, false)[0];\r\n //if (d2 !== d1) {\r\n // console.log('different', d2!-d1!));\r\n //}\r\n\r\n }\r\n\r\n // pull out the final wet colors and depths into the page texture\r\n const fbTemp1 = gc.checkAPI('14', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n gc.checkAPI('15', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('16', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.activeOutputLatentCTexture, 0));\r\n gc.checkAPI('17', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetLatentCFramebufferW));\r\n gc.checkAPI('18', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('19', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('20', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.activeOutputLatentMTexture, 0));\r\n gc.checkAPI('21', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetLatentMFramebufferW));\r\n gc.checkAPI('22', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('23', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('24', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.activeOutputDepthTexture, 0));\r\n gc.checkAPI('25', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetDepthFramebufferW));\r\n gc.checkAPI('26', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n }\r\n\r\n override selectFinishProgram(gcFrom: GPUChecker): TouchProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = TouchPageChange.wetChangesToVisibleChangesProgram;\r\n\r\n gcFrom.checkAPI('touch-sfp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n \r\n }\r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._initializeFinishProgram(gc, pi, buffers);\r\n\r\n }\r\n _initializeFinishProgram(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, '_initializeFinishProgram');\r\n const gl = gc.gl;\r\n\r\n gc.check('1', ()=>this._initializeSharedProgram(gc, pi, buffers));\r\n if (GPURunner.doInitializeProgram(pi, 'touch')) {\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.workingWetAgeTexNum, TouchPageChange.workingWetAgeTexNumVal));\r\n }\r\n }\r\n\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._specializeFinishRoutine(gc, pi, buffers);\r\n }\r\n\r\n _specializeFinishRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n }\r\n\r\n _initializeOutputProgram(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers) {\r\n let gl = GPURunner.gl!;\r\n if (GPURunner.doInitializeProgram(pi, 'touch')) {\r\n gl.uniform1i(pi.uniformLocations.kmLookupTexNum, TouchPageChange.kmLookupTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.workingLatentCTexNum, TouchPageChange.workingLatentCTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.workingLatentMTexNum, TouchPageChange.workingLatentMTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.workingWetDepthTexNum, TouchPageChange.workingWetDepthTexNumVal);\r\n gl.uniform1i(pi.uniformLocations.workingDryDepthTexNum, TouchPageChange.workingDryDepthTexNumVal);\r\n }\r\n\r\n }\r\n\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._runFinishRoutine(gc, pi, buffers);\r\n }\r\n\r\n _runFinishRoutine(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, '_runFinishRoutine');\r\n const gl = gc.gl;\r\n\r\n\r\n // use the finish program to make a set of combinations and extractions\r\n // find a mask (5) of the wet paint that is different from the starting point in color or depth\r\n // the dry source colors are mixed (6) with the wet paint mask to make a new visible color mask\r\n // the old visible is compared with the new visible mask to find places that need antialiasing (7) and to produce\r\n // the final visible color canvas\r\n \r\n // move the last result to the wet paint texture\r\n //debugRepeatDraw();\r\n\r\n //this.debugRenderLatentOutput(pi);\r\n //this.debugRenderLatentOutput(pi, true);\r\n // make sure the last output frame is the source\r\n \r\n //console.log('fun finish outputDepthTexture');\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n\r\n \r\n // let preLats = this.debugMeasureOutput();\r\n // for (let i = 0; i < 1; i++) {\r\n // this.stashOutput();\r\n // gc.check('d1', ()=>this.bindStashAsWorking(gc));\r\n // pi = TouchPageChange.debugTypeEffects;\r\n // gc.checkAPI('d2', ()=>gl.useProgram(pi.program));\r\n // gc.check('d3', ()=>this.initializeFinishProgram(gc, pi));\r\n // gc.check('d4', ()=>this.useAvailableOutputFrame(gc));\r\n // gc.checkAPI('d5', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n // }\r\n // let postLats = this.debugMeasureOutput();\r\n // if (preLats[1] != postLats[1] || preLats[2] != postLats[2] || preLats[3] != postLats[3] || preLats[4] != postLats[4] || \r\n // preLats[5] != postLats[5] || preLats[6] != postLats[6] || preLats[7] != postLats[7] || preLats[8] != postLats[8] || preLats[9] != postLats[9]) {\r\n // console.log(`abs cnt:${postLats[1]} d:${postLats[2]} cB:${postLats[3]} cY:${postLats[4]} cR:${postLats[5]} cW:${postLats[6]} mr:${postLats[7]} mg:${postLats[8]} mb:${postLats[9]}`);\r\n // console.log(`avg cnt:${postLats[1]} d:${postLats[2]} cB:${Math.floor(postLats[3]/postLats[2])} cY:${Math.floor(postLats[4]/postLats[2])} cR:${Math.floor(postLats[5]/postLats[2])} cW:${Math.floor(postLats[6]/postLats[2])} mr:${Math.floor(postLats[7]/postLats[2])} mg:${Math.floor(postLats[8]/postLats[2])} mb:${Math.floor(postLats[9]/postLats[2])}`);\r\n // console.log(`dav cnt:${postLats[1]-preLats[1]} d${Math.floor(postLats[2]-preLats[2])} cB${Math.floor(postLats[3]/postLats[2]-preLats[3]/preLats[2])} cY${Math.floor(postLats[4]/postLats[2]-preLats[4]/preLats[2])} cR${Math.floor(postLats[5]/postLats[2]-preLats[5]/preLats[2])} cW${Math.floor(postLats[6]/postLats[2]-preLats[6]/preLats[2])} mr${Math.floor(postLats[7]/postLats[2]-preLats[7]/preLats[2])} mg${Math.floor(postLats[8]/postLats[2]-preLats[8]/preLats[2])} mb${Math.floor(postLats[9]/postLats[2]-preLats[9]/preLats[2])}`);\r\n // } else {\r\n // console.log('no change');\r\n // }\r\n\r\n //this.debugSpewLatentTexture(buffers.initialWetLatentCTexture!);\r\n\r\n\r\n this.stashOutput();\r\n gc.check('1', ()=>this.bindStashAsWorking(gc));\r\n //this.debugSpewLatentTexture(buffers.initialWetLatentCTexture!);\r\n\r\n //this.debugSpewDepthTexture(this.pageWetDepthTexture!);\r\n\r\n // make the new wet paint mask by looking for differences between the wet paint and the starting point\r\n // the new wet paint is already set as the source, so make the starting wet the accumulator\r\n // use that to make the new visible mask by blending the dry source with the wet paint mask\r\n // external source is the dry source\r\n // put dry source into the latent form\r\n\r\n pi = TouchPageChange.wetChangesToVisibleChangesProgram;\r\n gc.checkAPI('2', ()=>gl.useProgram(pi.program));\r\n gc.check('3', ()=>this.initializeFinishProgram(gc, pi));\r\n // make a special output frame with the accumulator and the page age texture\r\n const fbWAge = gc.checkAPI('4', ()=>GPURunner.initTextureFramebuffer(gc, 'fbWAge', this.accLatentCTexture!, this.accLatentMTexture!, this.accDepthTexture!, this.pageWetAgeTexture!), true) as WebGLTexture;;\r\n gc.check('5', ()=>this.bindOutputFrame(gc, fbWAge, this.accLatentCTexture, this.accLatentMTexture, this.accDepthTexture));\r\n // reference input is the wet paint\r\n gc.check('6', ()=>this.usePageReference(gc, this.pageDryLatentCTexture, this.pageDryLatentMTexture, null));\r\n // initial wet paint is the accumulator\r\n gc.check('7', ()=>this.useTempAccumulator(gc, null, this.initialWetLatentCTexture, this.initialWetLatentMTexture, this.initialWetDepthTexture));\r\n //this.debugSpewLatentTexture(this.initialWetLatentCTexture!);\r\n\r\n // special case for the age texture\r\n gc.check('8', ()=>GPURunner.activateTexture(gc, TouchPageChange.workingWetAgeTexNumVal, this.initialWetAgeTexture));\r\n gc.checkAPI('10', ()=>gl.uniform1i(pi.uniformLocations.dryTransmits, this.dryTransmits === true ? 1 : 0));\r\n gc.checkFB('pre11');\r\n gc.checkAPI('11', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n //this.debugRenderLatentOutput(pi);\r\n\r\n // antialias and make final visible. source is the old visible canvas\r\n // \r\n pi = TouchPageChange.visibleChangesToFinalProgram;\r\n gc.checkAPI('12', ()=>gl.useProgram(pi.program));\r\n gc.check('13', ()=>this.initializeFinishProgram(gc, pi));\r\n //gl.uniform1i(pi.uniformLocations.doAntiAlias, this.centralPull === undefined ? 1 : 0);\r\n //gl.uniform1i(pi.uniformLocations.doAntiAlias, this.centralPull === undefined ? 1 : 0);\r\n\r\n\r\n this.stashOutput();\r\n gc.check('14', ()=>this.useTempAccumulator(gc, this.activeStashedFramebuffer, this.activeStashedLatentCTexture, this.activeStashedLatentMTexture, null));\r\n gc.check('15', ()=>this.bindWorkingFrame(gc, null, this.pageVisibleLatentCTexture, this.pageVisibleLatentMTexture, null));\r\n\r\n gc.check('16', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkAPI('17', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1]));\r\n gc.checkFB('pre18');\r\n gc.checkAPI('18', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n gc.checkAPI('19', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2]));\r\n\r\n //this.debugRenderLatentOutput(pi, true);\r\n\r\n\r\n //this.debugSpewTexture(this.outputLatentCTexture!, true);\r\n //this.debugRenderLatentOutput(pi);\r\n\r\n // put the new visible into the visible color texture\r\n const fbTemp1 = gc.checkAPI('20', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n gc.checkAPI('21', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('22', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.activeOutputLatentCTexture, 0));\r\n gc.checkAPI('23', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageVisibleLatentCFramebufferW));\r\n gc.checkAPI('24', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('25', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('26', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.activeOutputLatentMTexture, 0));\r\n gc.checkAPI('27', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageVisibleLatentMFramebufferW));\r\n gc.checkAPI('28', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gl.deleteFramebuffer(fbTemp1);\r\n gl.deleteFramebuffer(fbWAge);\r\n \r\n }\r\n override finalizeFinish(gcFrom: GPUChecker, pi: TouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'touch-pass');\r\n let buffers = TouchPageChange.touchBuffers!;\r\n this._finalizeFinish(gc, pi, buffers);\r\n\r\n }\r\n _finalizeFinish(gcFrom: GPUChecker, pi: TouchProgramInfo, buffers: TouchProgramBuffers): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, '_finalizeFinish');\r\n const gl = gc.gl;\r\n\r\n //this.debugRepeatDraw();\r\n\r\n pi = TouchPageChange.latentToExternalProgram;\r\n gc.checkAPI('1', ()=>gl.useProgram(pi.program));\r\n gc.check('2', ()=>this._initializeOutputProgram(gc, pi, buffers));\r\n gc.checkAPI('3', ()=>gl.uniform1i(pi.uniformLocations.doDepthLighting, 1));\r\n\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n gc.check('4', ()=>this.bindWorkingFrame(gc, null, this.pageVisibleLatentCTexture, this.pageVisibleLatentMTexture, null));\r\n gc.check('5', ()=>GPURunner.activateTexture(gc, TouchPageChange.workingDryDepthTexNumVal, this.pageDryDepthTexture));\r\n\r\n gc.checkFB('pre7');\r\n gc.checkAPI('7', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n //this.debugRenderLatentOutput(pi);\r\n\r\n this.page.crcVisible.drawImage(gl.canvas, this.pageX, this.pageY);\r\n }\r\n\r\n}\r\n\r\n\r\n","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { GPUChecker, GPURunner, ProgramInfo } from './GPURunner';\r\nimport { TouchPageChange, TouchProgramBuffers, TouchProgramInfo, TouchUniformLocations } from './TouchPageChange';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\n\r\nexport interface PageChangeDrop {\r\n color: tinycolor.ColorFormats.RGB | undefined;\r\n offset: Point2D;\r\n width: number;\r\n height: number;\r\n depth: Uint16Array;\r\n};\r\n\r\nexport interface CircleTouchUniformLocations extends TouchUniformLocations {\r\n externalDropDepthTexNum: WebGLUniformLocation,\r\n externalDropDepthTextureOffset: WebGLUniformLocation,\r\n dropColor: WebGLUniformLocation,\r\n};\r\n\r\nexport interface CircleTouchProgramInfo extends TouchProgramInfo {\r\n uniformLocations: CircleTouchUniformLocations\r\n};\r\n\r\nexport interface CircleTouchProgramBuffers extends TouchProgramBuffers {\r\n dropDepthTexture: WebGLTexture | null,\r\n maxDepthTexture: WebGLTexture | null,\r\n commitTexture: WebGLTexture | null,\r\n moveFromTexture: WebGLTexture | null,\r\n moveFracTexture: WebGLTexture | null,\r\n\r\n};\r\n\r\n\r\nexport class CirclePageChange extends TouchPageChange {\r\n\r\n static dropProgram: CircleTouchProgramInfo = {tag: 'dropProgram', uniformLocations:{}} as CircleTouchProgramInfo;\r\n static circleBuffers: CircleTouchProgramBuffers | undefined;\r\n\r\nstatic fsSourceDrop = \r\nTouchPageChange.fsSourceProcessGlobals \r\n+ ` \r\n#line 20048\r\nuniform highp usampler2D u_kmLookupTexNum;\r\nuniform highp usampler2D u_externalDropDepthTexNum;\r\nuniform highp vec4 u_dropColor;\r\nuniform highp ivec2 u_externalDropDepthTextureOffset;\r\n` + TouchPageChange.fsColorMixRGBToLatentSource + `\r\n#line 20054\r\nvoid main() {\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n highp float outputLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n\r\n highp uvec2 sourceSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 sourcePosition = ivec2(v_texCoordExternal * vec2(sourceSize));\r\n\r\n highp uvec2 dropSize = uvec2(textureSize(u_externalDropDepthTexNum, 0));\r\n\r\n highp ivec2 dropPosition = ivec2(sourcePosition - u_externalDropDepthTextureOffset);\r\n if (!(dropPosition.x < 0 || uint(dropPosition.x) >= dropSize.x || dropPosition.y < 0 || uint(dropPosition.y) >= dropSize.y)) {\r\n highp uint dropDepth = texelFetch(u_externalDropDepthTexNum, dropPosition, 0).r;\r\n if (dropDepth > 0u) {\r\n highp float blendWeight = float(dropDepth) / (float(dropDepth) + float(outputDepth));\r\n highp float dropLatent[8];\r\n rgbaToLatent(u_dropColor, dropLatent);\r\n lerpLatent(outputLatent, dropLatent, blendWeight, outputLatent);\r\n outputDepth += dropDepth;\r\n }\r\n }\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n}`;\r\n\r\n static getPrograms(): Array<[string, ProgramInfo]> {\r\n return [[CirclePageChange.fsSourceDrop, CirclePageChange.dropProgram]];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circle-initProgramLocations');\r\n const gl = gc.gl;\r\n\r\n CirclePageChange.dropProgram.uniformLocations = {\r\n kmLookupTexNum: gc.checkAPI('1', ()=>gl.getUniformLocation(CirclePageChange.dropProgram.program, 'u_kmLookupTexNum')!, true) as WebGLUniformLocation,\r\n externalDropDepthTexNum: gc.checkAPI('2', ()=>gl.getUniformLocation(CirclePageChange.dropProgram.program, 'u_externalDropDepthTexNum')!, true) as WebGLUniformLocation,\r\n externalDropDepthTextureOffset: gc.checkAPI('3', ()=>gl.getUniformLocation(CirclePageChange.dropProgram.program, 'u_externalDropDepthTextureOffset')!, true) as WebGLUniformLocation,\r\n dropColor: gc.checkAPI('4', ()=>gl.getUniformLocation(CirclePageChange.dropProgram.program, 'u_dropColor')!, true) as WebGLUniformLocation,\r\n } as CircleTouchUniformLocations;\r\n gc.check('5', ()=>TouchPageChange.addProcessProgramLocations(gc, CirclePageChange.dropProgram));\r\n }\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n CirclePageChange.circleBuffers = {} as CircleTouchProgramBuffers;\r\n CirclePageChange.addPermanentStorage(gc, CirclePageChange.circleBuffers, textureCallback);\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: CircleTouchProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circle-addProgramLocations');\r\n const gl = gc.gl;\r\n\r\n if (CirclePageChange.circleBuffers!.maxDepthTexture === undefined)\r\n {\r\n gc.check('1', ()=>TouchPageChange.addPermanentStorage(gc, buffers, textureCallback));\r\n CirclePageChange.circleBuffers!.maxDepthTexture = gc.check('2', ()=>GPURunner.initTexture(gc, 'maxDepthTexture', true))! as WebGLTexture;\r\n CirclePageChange.circleBuffers!.moveFromTexture = gc.check('3', ()=>GPURunner.initTexture(gc, 'moveFromTexture', true))! as WebGLTexture;\r\n CirclePageChange.circleBuffers!.moveFracTexture = gc.check('4', ()=>GPURunner.initTexture(gc, 'moveFracTexture', true))! as WebGLTexture;\r\n CirclePageChange.circleBuffers!.commitTexture = gc.check('5', ()=>GPURunner.initTexture(gc, 'commitTexture', true))! as WebGLTexture;\r\n CirclePageChange.circleBuffers!.dropDepthTexture = gc.check('6', ()=>GPURunner.initTexture(gc, 'dropDepthTexture'))! as WebGLTexture;\r\n \r\n // get the static change textures\r\n const circleChangeTextureSet = textureCallback(0, {instrument: TipInstrument.finger, motion: TipMotion.press, action: TipAction.unknown, modifier: 0});\r\n\r\n gc.checkAPI('7', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFromTexNumVal));\r\n gc.checkAPI('8', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, CirclePageChange.circleBuffers!.moveFromTexture));\r\n gc.checkAPI('9', ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.RGBA16UI, \r\n circleChangeTextureSet.width, circleChangeTextureSet.height, circleChangeTextureSet.moveEntries, 0, \r\n gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, circleChangeTextureSet.texFrom!));\r\n\r\n gc.checkAPI('10', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFracTexNumVal));\r\n gc.checkAPI('11', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, CirclePageChange.circleBuffers!.moveFracTexture));\r\n gc.checkAPI('12', ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.RGBA32F, \r\n circleChangeTextureSet.width, circleChangeTextureSet.height, circleChangeTextureSet.moveEntries, 0, \r\n gl.RGBA, gl.FLOAT, circleChangeTextureSet.texFrac!));\r\n\r\n gc.checkAPI('13', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionCommitTexNumVal));\r\n gc.checkAPI('14', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, CirclePageChange.circleBuffers!.commitTexture));\r\n gc.checkAPI('15', ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.R32F, \r\n circleChangeTextureSet.width, circleChangeTextureSet.height, circleChangeTextureSet.moveEntries, 0, \r\n gl.RED, gl.FLOAT, circleChangeTextureSet.texCommit!));\r\n\r\n gc.checkAPI('16', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.maxDepthTexNumVal));\r\n gc.checkAPI('17', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, CirclePageChange.circleBuffers!.maxDepthTexture));\r\n gc.checkAPI('18', ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.R16UI, \r\n circleChangeTextureSet.width, circleChangeTextureSet.height, circleChangeTextureSet.maxEntries, 0, \r\n gl.RED_INTEGER, gl.UNSIGNED_SHORT, circleChangeTextureSet.texMax!));\r\n\r\n }\r\n buffers.maxDepthTexture = CirclePageChange.circleBuffers!.maxDepthTexture;\r\n buffers.moveFromTexture = CirclePageChange.circleBuffers!.moveFromTexture;\r\n buffers.moveFracTexture = CirclePageChange.circleBuffers!.moveFracTexture;\r\n buffers.commitTexture = CirclePageChange.circleBuffers!.commitTexture;\r\n buffers.dropDepthTexture = CirclePageChange.circleBuffers!.dropDepthTexture;\r\n }\r\n\r\n static externalDropDepthTexNumVal = 20;\r\n\r\n initialDrop: PageChangeDrop | undefined;\r\n\r\n constructor(page: Page, pageX: number, pageY: number, width: number, height: number,\r\n tipsAndLocations: Array, tipApplication: TipApplication,\r\n dryTransmits: boolean, centralPull: ((d:number)=>number) | undefined) {\r\n super(page, pageX, pageY, width, height, tipsAndLocations, tipApplication, dryTransmits, centralPull);\r\n }\r\n\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._initializeStartupProgram(gc, pi, buffers);\r\n }\r\n\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._specializeStartupRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._runStartupRoutine(gc, pi, buffers);\r\n }\r\n override finalizeStartup(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._finalizeStartup(gc, pi, buffers);\r\n }\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circle-initilizeProcessProgram');\r\n const gl = gc.gl;\r\n let buffers = CirclePageChange.circleBuffers!;\r\n\r\n gc.check('0', ()=>super._initializeProcessProgram(gc, pi, buffers));\r\n\r\n if (GPURunner.doInitializeProgram(CirclePageChange.dropProgram, 'circle')) {\r\n let piSave = pi;\r\n pi = CirclePageChange.dropProgram;\r\n gc.checkAPI('1', ()=>gl.useProgram(pi.program));\r\n gc.check('2', ()=>super._initializeProcessProgram(gc, pi, buffers));\r\n\r\n gc.checkAPI('3', ()=>gl.uniform1i(pi.uniformLocations.kmLookupTexNum, CirclePageChange.kmLookupTexNumVal));\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.externalDropDepthTexNum, CirclePageChange.externalDropDepthTexNumVal));\r\n gc.checkAPI('5', ()=>gl.uniform4f(pi.uniformLocations.dropColor, 0, 0, 0, 0));\r\n pi = piSave;\r\n gc.checkAPI('6', ()=>gl.useProgram(pi.program));\r\n }\r\n\r\n }\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circle-specializeProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = CirclePageChange.circleBuffers!;\r\n\r\n gc.check('1', ()=>super._specializeProcessRoutine(gc, pi, buffers));\r\n gc.checkAPI('2', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFromTexNumVal));\r\n gc.checkAPI('3', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, CirclePageChange.circleBuffers!.moveFromTexture));\r\n gc.checkAPI('4', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFracTexNumVal));\r\n gc.checkAPI('5', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, CirclePageChange.circleBuffers!.moveFracTexture));\r\n gc.checkAPI('6', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionCommitTexNumVal));\r\n gc.checkAPI('7', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, CirclePageChange.circleBuffers!.commitTexture));\r\n gc.checkAPI('8', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.maxDepthTexNumVal));\r\n gc.checkAPI('9', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, CirclePageChange.circleBuffers!.maxDepthTexture));\r\n\r\n }\r\n\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circle-runProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = CirclePageChange.circleBuffers!;\r\n\r\n //console.log('run process gets outputDepthTexture');\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n\r\n\r\n if (this.initialDrop !== undefined) {\r\n let piSave = pi;\r\n pi = CirclePageChange.dropProgram;\r\n gc.checkAPI('1', ()=>gl.useProgram(pi.program));\r\n \r\n let r = this.initialDrop.color!.r / 255.0;\r\n let g = this.initialDrop.color!.g / 255.0;\r\n let b = this.initialDrop.color!.b / 255.0;\r\n gc.checkAPI('2', ()=>gl.uniform4f(pi.uniformLocations.dropColor, r, g, b, 1.0));\r\n let dropOffX = this.initialDrop.offset.x;\r\n let dropOffY = this.initialDrop.offset.y;\r\n gc.checkAPI('3', ()=>gl.uniform2i(pi.uniformLocations.externalDropDepthTextureOffset, dropOffX, dropOffY));\r\n\r\n // load the initial drop texture \r\n gc.check('4', ()=>GPURunner.activateTexture(gc, CirclePageChange.externalDropDepthTexNumVal, CirclePageChange.circleBuffers!.dropDepthTexture));\r\n gc.checkAPI('6', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, gl.R16UI, this.initialDrop!.width, this.initialDrop!.height, 0, gl.RED_INTEGER, gl.UNSIGNED_SHORT, this.initialDrop!.depth));\r\n\r\n this.stashOutput();\r\n //this.whattheactualfuck(gc, buffers);\r\n gc.check('7', ()=>this.bindStashAsWorking(gc));\r\n gc.check('8', ()=>this.useAvailableOutputFrame(gc));\r\n //gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.outputLatentCTexture!, 0);\r\n gc.checkFB('pre9');\r\n gc.checkAPI('9', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n \r\n pi = piSave;\r\n } \r\n this.accumulateForEntries(gc,\r\n (tipLoc: PageChangeEntry): boolean => {\r\n let tip = tipLoc.shape as FingerTip;\r\n let center = tipLoc.location;\r\n \r\n // the tip has a sequence of changes to make\r\n const specialApplication = {instrument: this.tipApplication.instrument, motion: this.tipApplication.motion, action: this.tipApplication.action, modifier: tipLoc.modifier};\r\n const changeTextures = tip.getChangeTextureIndexes(specialApplication);\r\n this.accumulateTextures(gc, center, changeTextures, 0, changeTextures.idxsAction.length,\r\n (idx:number)=>{\r\n let pi = TouchPageChange.processAccumulateTakesProgram;\r\n gc.checkAPI('10', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n }, (idx:number, stopEarly: boolean)=>{\r\n let pi = TouchPageChange.processCommitAccumulatorProgram;\r\n gc.checkAPI('11', ()=>gl.useProgram(pi.program));\r\n gc.checkAPI('12', ()=>gl.uniform1i(pi.uniformLocations.writeAccum, stopEarly ? 0 : 1));\r\n return pi;\r\n\r\n });\r\n return true;\r\n }\r\n );\r\n\r\n }\r\n override finalizeProcess(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._finalizeProcess(gc, pi, buffers);\r\n\r\n }\r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._initializeFinishProgram(gc, pi, buffers);\r\n\r\n }\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._specializeFinishRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._runFinishRoutine(gc, pi, buffers);\r\n\r\n }\r\n override finalizeFinish(gcFrom: GPUChecker, pi: CircleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'circ-pass');\r\n let buffers = CirclePageChange.circleBuffers!;\r\n super._finalizeFinish(gc, pi, buffers);\r\n\r\n }\r\n\r\n}\r\n\r\n ","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { WorkingItem, GPUChecker, GPURunner, ProgramBuffers, ProgramInfo, UniformLocations } from './GPURunner';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\n\r\nexport interface DryUniformLocations extends UniformLocations {\r\n factor: WebGLUniformLocation,\r\n pageAgeTexNum: WebGLUniformLocation,\r\n pageWetDepthTexNum: WebGLUniformLocation,\r\n pageDryDepthTexNum: WebGLUniformLocation,\r\n pageVisLatentCTexNum: WebGLUniformLocation,\r\n pageVisLatentMTexNum: WebGLUniformLocation,\r\n pageDryLatentCTexNum: WebGLUniformLocation,\r\n pageDryLatentMTexNum: WebGLUniformLocation,\r\n pageWetLatentCTexNum: WebGLUniformLocation,\r\n pageWetLatentMTexNum: WebGLUniformLocation,\r\n};\r\n\r\nexport interface DryProgramInfo extends ProgramInfo {\r\n uniformLocations: DryUniformLocations\r\n};\r\n\r\nexport interface DryProgramBuffers extends ProgramBuffers {\r\n\r\n};\r\n\r\nexport class DryPageChange extends PageChange {\r\n \r\n static startupProgram: DryProgramInfo = {uniformLocations:{}} as DryProgramInfo;\r\n static processWetProgram: DryProgramInfo = {uniformLocations:{}} as DryProgramInfo;\r\n static processDryProgram: DryProgramInfo = {uniformLocations:{}} as DryProgramInfo;\r\n static finishProgram: DryProgramInfo = {uniformLocations:{}} as DryProgramInfo;\r\n\r\n static dryBuffers: DryProgramBuffers | undefined;\r\n\r\nstatic fsSourceStartup = `#version 300 es\r\n#line 40055\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nuniform highp usampler2D u_pageAgeTexNum;\r\nlayout(location = 0) out highp uint outputAge;\r\n\r\nvoid main() {\r\n outputAge = texture(u_pageAgeTexNum, v_texCoordRendered).r;\r\n if (outputAge > 1u) {\r\n outputAge --;\r\n }\r\n}\r\n`;\r\n\r\nstatic fsSourceProcessWet = `#version 300 es\r\n#line 40073\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp vec2 u_resolution;\r\nuniform highp float u_factor;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nuniform highp usampler2D u_pageAgeTexNum;\r\nuniform highp usampler2D u_pageWetDepthTexNum;\r\nuniform highp usampler2D u_pageWetLatentCTexNum;\r\nuniform highp usampler2D u_pageWetLatentMTexNum;\r\nlayout(location = 0) out highp uint outputAge;\r\nlayout(location = 1) out highp uint outputWetDepth;\r\nlayout(location = 2) out highp uvec4 outputWetLatentC;\r\nlayout(location = 3) out highp uvec4 outputWetLatentM;\r\n//highp uint paintDepthScale = 4u;\r\n//highp uint maxCoronaDepth = 256u * paintDepthScale;\r\nhighp uint maxPaintDepth = 10u * 256u * 4u; \r\n\r\nvoid main() {\r\n highp uint inputAge = texture(u_pageAgeTexNum, v_texCoordRendered).r;\r\n outputAge = inputAge;\r\n outputWetDepth = texture(u_pageWetDepthTexNum, v_texCoordRendered).r;\r\n outputWetLatentC = texture(u_pageWetLatentCTexNum, v_texCoordRendered);\r\n outputWetLatentM = texture(u_pageWetLatentMTexNum, v_texCoordRendered);\r\n if (inputAge == 1u) {\r\n highp uint finalDepth = outputWetDepth;\r\n if (finalDepth > maxPaintDepth) {\r\n finalDepth = maxPaintDepth;\r\n }\r\n highp uint reduce = max(1u, uint(floor(float(finalDepth) * u_factor)));\r\n if (reduce > finalDepth) {\r\n reduce = finalDepth;\r\n finalDepth = 0u;\r\n } else {\r\n finalDepth -= reduce;\r\n }\r\n outputWetDepth = finalDepth;\r\n if (finalDepth == 0u) {\r\n outputWetLatentC = uvec4(0u, 0u, 0u, 0u);\r\n outputWetLatentM = uvec4(0u, 0u, 0u, 1u);\r\n\r\n outputAge = 0u;\r\n }\r\n }\r\n}\r\n`;\r\nstatic fsSourceProcessDry = `#version 300 es\r\n#line 40122\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp vec2 u_resolution;\r\nuniform highp float u_factor;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nuniform highp usampler2D u_pageAgeTexNum;\r\nuniform highp usampler2D u_pageWetDepthTexNum;\r\nuniform highp usampler2D u_pageDryDepthTexNum;\r\nuniform highp usampler2D u_pageDryLatentCTexNum;\r\nuniform highp usampler2D u_pageDryLatentMTexNum;\r\nuniform highp usampler2D u_pageVisLatentCTexNum;\r\nuniform highp usampler2D u_pageVisLatentMTexNum;\r\nlayout(location = 0) out highp uvec4 outputDryLatentC;\r\nlayout(location = 1) out highp uvec4 outputDryLatentM;\r\nlayout(location = 2) out highp uint outputDryDepth;\r\n//highp uint paintDepthScale = 4u;\r\n//highp uint maxCoronaDepth = 256u * paintDepthScale;\r\nhighp uint maxPaintDepth = 10u * 256u * 4u; \r\n\r\nvoid main() {\r\n highp uint inputAge = texture(u_pageAgeTexNum, v_texCoordRendered).r;\r\n outputDryDepth = texture(u_pageDryDepthTexNum, v_texCoordRendered).r;\r\n outputDryLatentC = texture(u_pageDryLatentCTexNum, v_texCoordRendered);\r\n outputDryLatentM = texture(u_pageDryLatentMTexNum, v_texCoordRendered);\r\n if (inputAge == 1u) {\r\n outputDryLatentC = texture(u_pageVisLatentCTexNum, v_texCoordRendered);\r\n outputDryLatentM = texture(u_pageVisLatentMTexNum, v_texCoordRendered);\r\n highp uint finalDepth = texture(u_pageWetDepthTexNum, v_texCoordRendered).r;;\r\n if (finalDepth > maxPaintDepth) {\r\n finalDepth = maxPaintDepth;\r\n }\r\n highp uint reduce = max(1u, uint(floor(float(finalDepth) * u_factor)));\r\n if (reduce > finalDepth) {\r\n reduce = finalDepth;\r\n finalDepth = 0u;\r\n } else {\r\n finalDepth -= reduce;\r\n }\r\n outputDryDepth += reduce;\r\n if (outputDryDepth > maxPaintDepth) {\r\n outputDryDepth = maxPaintDepth;\r\n }\r\n }\r\n}\r\n`;\r\n\r\n\r\n static getPrograms(): Array<[string, ProgramInfo]> {\r\n //return [[DryPageChange.fsSourceInit, DryPageChange.initProgram], [DryPageChange.fsSourceProcess, DryPageChange.processProgram], [DryPageChange.fsSourceFinish, DryPageChange.finishProgram]];\r\n return [[DryPageChange.fsSourceStartup, DryPageChange.startupProgram], [DryPageChange.fsSourceProcessWet, DryPageChange.processWetProgram], [DryPageChange.fsSourceProcessDry, DryPageChange.processDryProgram]];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-initProgramLocations');\r\n const gl = gc.gl;\r\n\r\n DryPageChange.startupProgram.uniformLocations = {} as DryUniformLocations;\r\n gc.check('1', ()=>DryPageChange.addStartupProgramLocations(gc, DryPageChange.startupProgram));\r\n\r\n DryPageChange.processWetProgram.uniformLocations = {} as DryUniformLocations;\r\n gc.check('2', ()=>DryPageChange.addProcessWetProgramLocations(gc, DryPageChange.processWetProgram));\r\n\r\n DryPageChange.processDryProgram.uniformLocations = {} as DryUniformLocations;\r\n gc.check('3', ()=>DryPageChange.addProcessDryProgramLocations(gc, DryPageChange.processDryProgram));\r\n\r\n DryPageChange.finishProgram.uniformLocations = {} as DryUniformLocations;\r\n gc.check('4', ()=>DryPageChange.addFinishProgramLocations(gc, DryPageChange.finishProgram));\r\n\r\n }\r\n\r\n static addStartupProgramLocations(gcFrom: GPUChecker, programInfo: DryProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-addStartupProgramLocations');\r\n const gl = gc.gl;\r\n\r\n gc.checkAPI('1', ()=>programInfo.uniformLocations.pageAgeTexNum = gl.getUniformLocation(programInfo.program, 'u_pageAgeTexNum')!, true);\r\n gc.check('2', ()=>PageChange.addProgramLocations(gc, programInfo, true));\r\n }\r\n\r\n static addProcessWetProgramLocations(gcFrom: GPUChecker, programInfo: DryProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-addProcessWetProgramLocations');\r\n const gl = gc.gl;\r\n\r\n gc.checkAPI('1', ()=>programInfo.uniformLocations.pageAgeTexNum = gl.getUniformLocation(programInfo.program, 'u_pageAgeTexNum')!, true);\r\n gc.checkAPI('2', ()=>programInfo.uniformLocations.pageWetDepthTexNum = gl.getUniformLocation(programInfo.program, 'u_pageWetDepthTexNum')!, true);\r\n gc.checkAPI('3', ()=>programInfo.uniformLocations.pageWetLatentCTexNum = gl.getUniformLocation(programInfo.program, 'u_pageWetLatentCTexNum')!, true);\r\n gc.checkAPI('4', ()=>programInfo.uniformLocations.pageWetLatentMTexNum = gl.getUniformLocation(programInfo.program, 'u_pageWetLatentMTexNum')!, true);\r\n\r\n gc.checkAPI('10', ()=>programInfo.uniformLocations.factor = gl.getUniformLocation(programInfo.program, 'u_factor')!, true);\r\n\r\n gc.check('11', ()=>PageChange.addProgramLocations(gc, programInfo, true));\r\n }\r\n static addProcessDryProgramLocations(gcFrom: GPUChecker, programInfo: DryProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-addProcessDryProgramLocations');\r\n const gl = gc.gl;\r\n\r\n gc.checkAPI('1', ()=>programInfo.uniformLocations.pageAgeTexNum = gl.getUniformLocation(programInfo.program, 'u_pageAgeTexNum')!, true);\r\n gc.checkAPI('2', ()=>programInfo.uniformLocations.pageWetDepthTexNum = gl.getUniformLocation(programInfo.program, 'u_pageWetDepthTexNum')!, true);\r\n gc.checkAPI('5', ()=>programInfo.uniformLocations.pageDryDepthTexNum = gl.getUniformLocation(programInfo.program, 'u_pageDryDepthTexNum')!, true);\r\n gc.checkAPI('6', ()=>programInfo.uniformLocations.pageDryLatentCTexNum = gl.getUniformLocation(programInfo.program, 'u_pageDryLatentCTexNum')!, true);\r\n gc.checkAPI('7', ()=>programInfo.uniformLocations.pageDryLatentMTexNum = gl.getUniformLocation(programInfo.program, 'u_pageDryLatentMTexNum')!, true);\r\n gc.checkAPI('8', ()=>programInfo.uniformLocations.pageVisLatentCTexNum = gl.getUniformLocation(programInfo.program, 'u_pageVisLatentCTexNum')!, true);\r\n gc.checkAPI('9', ()=>programInfo.uniformLocations.pageVisLatentMTexNum = gl.getUniformLocation(programInfo.program, 'u_pageVisLatentMTexNum')!, true);\r\n\r\n gc.checkAPI('10', ()=>programInfo.uniformLocations.factor = gl.getUniformLocation(programInfo.program, 'u_factor')!, true);\r\n\r\n gc.check('11', ()=>PageChange.addProgramLocations(gc, programInfo, true));\r\n }\r\n\r\n static addFinishProgramLocations(gcFrom: GPUChecker, programInfo: DryProgramInfo) {\r\n // programInfo.uniformLocations.pageAgeTexNum = gl.getUniformLocation(programInfo.program, 'u_pageAgeTexNum')!;\r\n\r\n // PageChange.addProgramLocations(gl, programInfo);\r\n }\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-initPermanentStorage');\r\n const gl = gc.gl;\r\n\r\n DryPageChange.dryBuffers = {} as DryProgramBuffers;\r\n gc.check('14', ()=>DryPageChange.addPermanentStorage(gc, DryPageChange.dryBuffers!, textureCallback));\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: DryProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-pass');\r\n PageChange.addPermanentStorage(gc, buffers, textureCallback);\r\n if (DryPageChange.dryBuffers! === undefined) {\r\n }\r\n\r\n //buffers.kmLookupTexture = DryPageChange.dryBuffers!.kmLookupTexture;\r\n }\r\n\r\n static wetAgeTexNum = 20;\r\n static wetDepthTexNum = 21;\r\n static dryDepthTexNum = 22;\r\n static dryLatentCTexNum = 23;\r\n static dryLatentMTexNum = 24;\r\n static wetLatentCTexNum = 25;\r\n static wetLatentMTexNum = 26;\r\n static visLatentCTexNum = 27;\r\n static visLatentMTexNum = 28;\r\n\r\n factor: number;\r\n\r\n decrementedAgeTexture: WebGLTexture | null = null;\r\n decrementedAgeFramebuffer: WebGLFramebuffer | null = null;\r\n finalWetAgeTexture: WebGLTexture | null = null;\r\n finalWetDepthTexture: WebGLTexture | null = null;\r\n finalDryDepthTexture: WebGLTexture | null = null;\r\n finalDryLatentCTexture: WebGLTexture | null = null;\r\n finalDryLatentMTexture: WebGLTexture | null = null;\r\n finalWetLatentCTexture: WebGLTexture | null = null;\r\n finalWetLatentMTexture: WebGLTexture | null = null;\r\n finalWetAgeColorDepthFramebuffer: WebGLFramebuffer | null = null;\r\n finalDryColorDepthFramebuffer: WebGLFramebuffer | null = null;\r\n\r\n\r\n constructor(page: Page, factor: number) {\r\n super(page, 0, 0, page.cellsWidth, page.cellsHeight);\r\n this.factor = factor;\r\n }\r\n override setViewport(): void {\r\n // set the resolution\r\n let gl = GPURunner.gl!;\r\n let width = this.page.cellsWidth;\r\n let height = this.page.cellsHeight;\r\n gl.canvas.width = width;\r\n gl.canvas.height = height;\r\n gl.viewport(0, 0, width, height);\r\n }\r\n override preparePageForStartup(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-pass');\r\n GPURunner.initDryPageChange(gc, this.page, this);\r\n }\r\n override applyStartupToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForProcess(gcFrom: GPUChecker): void {\r\n }\r\n override applyProcessToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForFinish(gcFrom: GPUChecker): void {\r\n }\r\n override applyFinishToPage(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-pass');\r\n GPURunner.applyDryPageChange(gc, this.page, this);\r\n }\r\n\r\n override selectStartupProgram(gcFrom: GPUChecker): DryProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = DryPageChange.startupProgram;\r\n\r\n gcFrom.checkAPI('dry-ssp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n }\r\n\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: DryProgramInfo) {\r\n let gl = GPURunner.gl!;\r\n let buffers = DryPageChange.dryBuffers!;\r\n\r\n if (GPURunner.doInitializeProgram(pi, 'dry')) {\r\n gcFrom.checkAPI('dry-isp', ()=>gl.uniform1i(pi.uniformLocations.pageAgeTexNum, DryPageChange.wetAgeTexNum));\r\n }\r\n }\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: DryProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-specializeStartupRoutine');\r\n const gl = gc.gl;\r\n let buffers = DryPageChange.dryBuffers!;\r\n\r\n // set the resolution\r\n let width = this.page.cellsWidth;\r\n let height = this.page.cellsHeight;\r\n\r\n let working = gc.check('1', ()=>GPURunner.workingFrameFactory.getItem(gc, 'dryDecAge', this.width, this.height, [\r\n {tag:'age', internalFormat:gl.R8UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_BYTE}\r\n ])) as WorkingItem;\r\n\r\n this.decrementedAgeFramebuffer = working.fb;\r\n this.decrementedAgeTexture = working.tex0;\r\n }\r\n\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-runStartupRoutine');\r\n const gl = gc.gl;\r\n let buffers = DryPageChange.dryBuffers!;\r\n gc.check('1', ()=>GPURunner.activateTexture(gc, DryPageChange.wetAgeTexNum, this.pageWetAgeTexture));\r\n gc.checkAPI('3', ()=>gl.bindFramebuffer(gl.FRAMEBUFFER, this.decrementedAgeFramebuffer));\r\n gc.checkFB('pre4');\r\n gc.checkAPI('4', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n\r\n }\r\n\r\n override finalizeStartup(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n }\r\n\r\n override selectProcessProgram(gcFrom: GPUChecker): DryProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = DryPageChange.processWetProgram;\r\n\r\n gcFrom.checkAPI('dry-ssp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n }\r\n\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-initializeProcessProgram');\r\n const gl = gc.gl;\r\n let buffers = DryPageChange.dryBuffers!;\r\n\r\n if (GPURunner.doInitializeProgram(pi, 'dry-wet')) {\r\n gc.checkAPI('1', ()=>gl.uniform1i(pi.uniformLocations.pageAgeTexNum, DryPageChange.wetAgeTexNum));\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.pageWetDepthTexNum, DryPageChange.wetDepthTexNum));\r\n gc.checkAPI('3', ()=>gl.uniform1i(pi.uniformLocations.pageWetLatentCTexNum, DryPageChange.wetLatentCTexNum));\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.pageWetLatentMTexNum, DryPageChange.wetLatentMTexNum));\r\n gc.checkAPI('10', ()=>gl.uniform1f(pi.uniformLocations.factor, this.factor));\r\n }\r\n }\r\n initializeProcessDryProgram(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-initializeProcessDryProgram');\r\n const gl = gc.gl;\r\n let buffers = DryPageChange.dryBuffers!;\r\n\r\n if (GPURunner.doInitializeProgram(pi, 'dry-dry')) {\r\n gc.checkAPI('1', ()=>gl.uniform1i(pi.uniformLocations.pageAgeTexNum, DryPageChange.wetAgeTexNum));\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.pageWetDepthTexNum, DryPageChange.wetDepthTexNum));\r\n gc.checkAPI('5', ()=>gl.uniform1i(pi.uniformLocations.pageDryDepthTexNum, DryPageChange.dryDepthTexNum));\r\n gc.checkAPI('6', ()=>gl.uniform1i(pi.uniformLocations.pageDryLatentCTexNum, DryPageChange.dryLatentCTexNum));\r\n gc.checkAPI('7', ()=>gl.uniform1i(pi.uniformLocations.pageDryLatentMTexNum, DryPageChange.dryLatentMTexNum));\r\n gc.checkAPI('8', ()=>gl.uniform1i(pi.uniformLocations.pageVisLatentCTexNum, DryPageChange.visLatentCTexNum));\r\n gc.checkAPI('9', ()=>gl.uniform1i(pi.uniformLocations.pageVisLatentMTexNum, DryPageChange.visLatentMTexNum));\r\n gc.checkAPI('10', ()=>gl.uniform1f(pi.uniformLocations.factor, this.factor));\r\n }\r\n }\r\n\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-specializeProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = DryPageChange.dryBuffers!;\r\n\r\n let width = this.page.cellsWidth;\r\n let height = this.page.cellsHeight;\r\n\r\n let working = gc.check('3', ()=>GPURunner.workingFrameFactory.getItem(gc, 'dryFinalWetALat', this.width, this.height, [\r\n {tag:'wetA', internalFormat:gl.R8UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_BYTE},\r\n {tag:'wetD', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'wetLC', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'wetLM', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n ])) as WorkingItem;\r\n\r\n this.finalWetAgeColorDepthFramebuffer = working.fb;\r\n this.finalWetAgeTexture = working.tex0;\r\n this.finalWetDepthTexture = working.tex1;\r\n this.finalWetLatentCTexture = working.tex2;\r\n this.finalWetLatentMTexture = working.tex3;\r\n\r\n working = gc.check('3', ()=>GPURunner.workingFrameFactory.getItem(gc, 'dryFinalDryLatD', this.width, this.height, [\r\n {tag:'dryLC', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'dryLM', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'dryD', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT},\r\n ])) as WorkingItem;\r\n\r\n this.finalDryColorDepthFramebuffer = working.fb;\r\n this.finalDryLatentCTexture = working.tex0;\r\n this.finalDryLatentMTexture = working.tex1;\r\n this.finalDryDepthTexture = working.tex2;\r\n\r\n }\r\n\r\n debugMeasureDepthTexture(text: WebGLTexture): [number, Uint16Array] {\r\n const gl = GPURunner.gl!;\r\n let sampFb = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, sampFb);\r\n\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, text, 0);\r\n let texDepth = new Uint16Array(this.width * this.height);\r\n gl.readPixels(0, 0, this.width, this.height, gl.RED_INTEGER, gl.UNSIGNED_SHORT, texDepth);\r\n let d = 0;\r\n (texDepth.values() as any).forEach((element: number) => { d+=element; });\r\n return [d, texDepth];\r\n }\r\n\r\n\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'dry-runProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = DryPageChange.dryBuffers!;\r\n\r\n gc.checkAPI('1', ()=>gl.bindFramebuffer(gl.FRAMEBUFFER, this.finalWetAgeColorDepthFramebuffer));\r\n gc.check('2', ()=>GPURunner.activateTexture(gc, DryPageChange.wetAgeTexNum, this.decrementedAgeTexture));\r\n gc.check('3', ()=>GPURunner.activateTexture(gc, DryPageChange.wetDepthTexNum, this.pageWetDepthTexture));\r\n gc.check('4', ()=>GPURunner.activateTexture(gc, DryPageChange.wetLatentCTexNum, this.pageWetLatentCTexture));\r\n gc.check('5', ()=>GPURunner.activateTexture(gc, DryPageChange.wetLatentMTexNum, this.pageWetLatentMTexture));\r\n\r\n gc.checkAPI('10', ()=>gl.uniform1f(pi.uniformLocations.factor, this.factor));\r\n gc.checkFB('pre21');\r\n //GPURunner.workingFrameFactory.activeTextures.forEach((t, k) => {console.log('active', k, (t as any).tag);});\r\n gc.checkAPI('21', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n\r\n //let d= this.debugMeasureDepthTexture(this.finalWetDepthTexture!);\r\n //console.log('finalWetDepthTexture', d[0]);\r\n\r\n pi = DryPageChange.processDryProgram;\r\n gc.checkAPI('22', ()=>gl.useProgram(pi.program));\r\n gc.check('23', ()=>this.initializeProcessDryProgram(gc, pi));\r\n gc.checkAPI('24', ()=>gl.bindFramebuffer(gl.FRAMEBUFFER, this.finalDryColorDepthFramebuffer));\r\n gc.check('25', ()=>GPURunner.activateTexture(gc, DryPageChange.wetAgeTexNum, this.decrementedAgeTexture));\r\n gc.check('26', ()=>GPURunner.activateTexture(gc, DryPageChange.wetDepthTexNum, this.pageWetDepthTexture));\r\n gc.check('27', ()=>GPURunner.activateTexture(gc, DryPageChange.dryDepthTexNum, this.pageDryDepthTexture));\r\n gc.check('28', ()=>GPURunner.activateTexture(gc, DryPageChange.dryLatentCTexNum, this.pageDryLatentCTexture));\r\n gc.check('29', ()=>GPURunner.activateTexture(gc, DryPageChange.dryLatentMTexNum, this.pageDryLatentMTexture));\r\n gc.check('30', ()=>GPURunner.activateTexture(gc, DryPageChange.visLatentCTexNum, this.pageVisibleLatentCTexture));\r\n gc.check('31', ()=>GPURunner.activateTexture(gc, DryPageChange.visLatentMTexNum, this.pageVisibleLatentMTexture));\r\n\r\n gc.checkAPI('32', ()=>gl.uniform1f(pi.uniformLocations.factor, this.factor));\r\n gc.checkFB('pre43');\r\n //GPURunner.workingFrameFactory.activeTextures.forEach((t, k) => {console.log('active', k, (t as any).tag);});\r\n gc.checkAPI('43', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n\r\n let blitReadX0 = 0;\r\n let blitReadY0 = 0;\r\n let blitReadX1 = this.page.cellsWidth;\r\n let blitReadY1 = this.page.cellsHeight;\r\n let blitDrawX0 = 0;\r\n let blitDrawY0 = 0;\r\n let blitDrawX1 = this.page.cellsWidth;\r\n let blitDrawY1 = this.page.cellsHeight;\r\n\r\n // put the combined age into the buffer\r\n gc.checkAPI('44', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, this.finalWetAgeColorDepthFramebuffer));\r\n gc.checkAPI('45', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetAgeFramebufferW));\r\n gc.checkAPI('46', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n let fbTemp = gc.checkAPI('53', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n\r\n gc.checkAPI('47', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp));\r\n gc.checkAPI('55', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.finalWetDepthTexture, 0));\r\n gc.checkAPI('48', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetDepthFramebufferW));\r\n gc.checkAPI('49', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('50', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp));\r\n gc.checkAPI('55', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.finalDryDepthTexture, 0));\r\n gc.checkAPI('51', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageDryDepthFramebufferW));\r\n gc.checkAPI('52', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('54', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp));\r\n gc.checkAPI('55', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.finalWetLatentCTexture, 0));\r\n gc.checkAPI('56', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetLatentCFramebufferW));\r\n gc.checkAPI('57', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('58', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp));\r\n gc.checkAPI('59', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.finalWetLatentMTexture, 0));\r\n gc.checkAPI('60', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetLatentMFramebufferW));\r\n gc.checkAPI('61', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('62', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp));\r\n gc.checkAPI('63', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.finalDryLatentCTexture, 0));\r\n gc.checkAPI('64', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageDryLatentCFramebufferW));\r\n gc.checkAPI('65', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('66', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp));\r\n gc.checkAPI('67', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.finalDryLatentMTexture, 0));\r\n gc.checkAPI('68', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageDryLatentMFramebufferW));\r\n gc.checkAPI('69', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n gl.deleteFramebuffer(fbTemp);\r\n \r\n\r\n }\r\n\r\n override finalizeProcess(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n }\r\n\r\n override selectFinishProgram(gcFrom: GPUChecker): DryProgramInfo {\r\n return undefined as any as DryProgramInfo;\r\n }\r\n\r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n }\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n }\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n }\r\n override finalizeFinish(gcFrom: GPUChecker, pi: DryProgramInfo): void {\r\n }\r\n \r\n\r\n}\r\n\r\n","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { GPUChecker, GPURunner, ProgramInfo, WorkingItem } from './GPURunner';\r\nimport { TouchPageChange, TouchProgramBuffers, TouchProgramInfo, TouchUniformLocations } from './TouchPageChange';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\n\r\n\r\nexport interface BlowTouchUniformLocations extends TouchUniformLocations {\r\n \r\n dryAmount: WebGLUniformLocation,\r\n dryRadius: WebGLUniformLocation,\r\n dryPosition: WebGLUniformLocation,\r\n};\r\n\r\nexport interface BlowTouchProgramInfo extends TouchProgramInfo {\r\n uniformLocations: BlowTouchUniformLocations\r\n};\r\n\r\nexport interface BlowTouchProgramBuffers extends TouchProgramBuffers {\r\n\r\n};\r\n\r\n\r\nexport class BlowPageChange extends TouchPageChange {\r\n\r\n static processProgram: BlowTouchProgramInfo = {tag:'BlowprocessProgram', uniformLocations:{}} as BlowTouchProgramInfo;\r\n static startupProgram: BlowTouchProgramInfo = {tag:'BlowstartupProgram', uniformLocations:{}} as BlowTouchProgramInfo;\r\n static finishProgram: BlowTouchProgramInfo = {tag:'BlowfinishProgram', uniformLocations:{}} as BlowTouchProgramInfo;\r\n static blowBuffers: BlowTouchProgramBuffers | undefined;\r\n\r\n static fsSourceStartup = `#version 300 es\r\n #line 50045\r\n precision highp float;\r\n precision highp int;\r\n //precision highp uint;\r\n uniform highp usampler2D u_workingWetDepthTexNum;\r\n uniform highp usampler2D u_workingWetAgeTexNum;\r\n uniform highp usampler2D u_workingDryDepthTexNum;\r\n in highp vec2 v_texCoordRendered;\r\n in highp vec2 v_texCoordExternal;\r\n layout(location = 0) out highp uint outputWetDepth;\r\n layout(location = 1) out highp uint outputDryDepth;\r\n layout(location = 2) out highp uint outputAge;\r\n \r\n void main() {\r\n outputWetDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n outputDryDepth = texture(u_workingDryDepthTexNum, v_texCoordRendered).r;\r\n outputAge = texture(u_workingWetAgeTexNum, v_texCoordRendered).r;\r\n }\r\n `;\r\n \r\n static fsSourceProcess = `#version 300 es\r\n #line 50064\r\n precision highp float;\r\n precision highp int;\r\n //precision highp uint;\r\n uniform highp usampler2D u_workingWetDepthTexNum;\r\n uniform highp usampler2D u_workingWetAgeTexNum;\r\n uniform highp usampler2D u_workingDryDepthTexNum;\r\n uniform highp ivec2 u_dryPosition;\r\n uniform highp int u_dryRadius;\r\n uniform highp int u_dryAmount;\r\n\r\n in highp vec2 v_texCoordRendered;\r\n in highp vec2 v_texCoordExternal;\r\n layout(location = 0) out highp uint outputWetDepth;\r\n layout(location = 1) out highp uint outputDryDepth;\r\n layout(location = 2) out highp uint outputWetAge;\r\n highp uint maxPaintDepth = 10u * 256u * 4u; \r\n \r\n void main() {\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingWetDepthTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n\r\n outputWetAge = texture(u_workingWetAgeTexNum, v_texCoordRendered).r;\r\n outputWetDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n outputDryDepth = texture(u_workingDryDepthTexNum, v_texCoordRendered).r;\r\n\r\n highp vec2 vectBetween = vec2(workingPos - u_dryPosition);\r\n if (length(vectBetween) <= float(u_dryRadius)) {\r\n if (uint(u_dryAmount) >= outputWetDepth + 1u) {\r\n if (outputWetDepth > 1u) {\r\n outputDryDepth += uint(outputWetDepth - 1u);\r\n }\r\n outputWetDepth = 1u;\r\n outputWetAge = 1u;\r\n } else {\r\n outputWetDepth -= uint(u_dryAmount);\r\n outputDryDepth += uint(u_dryAmount);\r\n\r\n }\r\n outputDryDepth = min(outputDryDepth, maxPaintDepth);\r\n }\r\n }\r\n `;\r\n\r\n static fsSourceFinish = `#version 300 es\r\n #line 50111\r\n precision highp float;\r\n precision highp int;\r\n //precision highp uint;\r\n in highp vec2 v_texCoordRendered;\r\n in highp vec2 v_texCoordExternal;\r\n layout(location = 0) out highp vec4 outputColor;\r\n void main() {\r\n outputColor = vec4(0.0, 0.0, 0.0, 1.0);\r\n }\r\n `;\r\n\r\n static getPrograms(): Array<[string, ProgramInfo]> {\r\n return [[BlowPageChange.fsSourceStartup, BlowPageChange.startupProgram], [BlowPageChange.fsSourceProcess, BlowPageChange.processProgram], [BlowPageChange.fsSourceFinish, BlowPageChange.finishProgram]];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-initProgramLocations');\r\n const gl = gc.gl;\r\n BlowPageChange.startupProgram.uniformLocations = {} as BlowTouchUniformLocations;\r\n gc.check('1', ()=>BlowPageChange.addProgramLocations(gc, BlowPageChange.startupProgram, false));\r\n BlowPageChange.processProgram.uniformLocations = {} as BlowTouchUniformLocations;\r\n gc.check('2', ()=>BlowPageChange.addProgramLocations(gc, BlowPageChange.processProgram, true));\r\n BlowPageChange.finishProgram.uniformLocations = {} as BlowTouchUniformLocations;\r\n gc.check('3', ()=>BlowPageChange.addProgramLocations(gc, BlowPageChange.finishProgram, false));\r\n\r\n }\r\n\r\n static addProgramLocations(gcFrom: GPUChecker, programInfo: BlowTouchProgramInfo, checkLoc: boolean) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-addProgramLocations');\r\n const gl = gc.gl;\r\n programInfo.uniformLocations.workingWetDepthTexNum = gc.checkAPI('2', ()=>gl.getUniformLocation(programInfo.program, 'u_workingWetDepthTexNum')!, checkLoc) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.workingDryDepthTexNum = gc.checkAPI('3', ()=>gl.getUniformLocation(programInfo.program, 'u_workingDryDepthTexNum')!, checkLoc) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.workingWetAgeTexNum = gc.checkAPI('4', ()=>gl.getUniformLocation(programInfo.program, 'u_workingWetAgeTexNum')!, checkLoc) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.dryAmount = gc.checkAPI('5', ()=>gl.getUniformLocation(programInfo.program, 'u_dryAmount')!, checkLoc) as WebGLUniformLocation;\r\n programInfo.uniformLocations.dryPosition = gc.checkAPI('6', ()=>gl.getUniformLocation(programInfo.program, 'u_dryPosition')!, checkLoc) as WebGLUniformLocation;;\r\n programInfo.uniformLocations.dryRadius = gc.checkAPI('7', ()=>gl.getUniformLocation(programInfo.program, 'u_dryRadius')!, checkLoc) as WebGLUniformLocation;\r\n gc.check('8', ()=>PageChange.addProgramLocations(gc, programInfo, true));\r\n }\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-pass');\r\n BlowPageChange.blowBuffers = {} as BlowTouchProgramBuffers;\r\n BlowPageChange.addPermanentStorage(gc, BlowPageChange.blowBuffers, textureCallback);\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: BlowTouchProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-addPermanentStorage');\r\n const gl = gc.gl;\r\n\r\n gc.check('1', ()=>PageChange.addPermanentStorage(gc, buffers, textureCallback));\r\n }\r\n\r\n localWorkingWetDepthTexture: WebGLTexture | null = null;\r\n localWorkingDryDepthTexture: WebGLTexture | null = null;\r\n localWorkingWetAgeTexture: WebGLTexture | null = null;\r\n localWorkingFramebuffer: WebGLFramebuffer | null = null;\r\n localResultWetDepthTexture: WebGLTexture | null = null;\r\n localResultDryDepthTexture: WebGLTexture | null = null;\r\n localResultWetAgeTexture: WebGLTexture | null = null;\r\n localResultFramebuffer: WebGLFramebuffer | null = null;\r\n\r\n constructor(page: Page, pageX: number, pageY: number, width: number, height: number,\r\n tipsAndLocations: Array, tipApplication: TipApplication,\r\n dryTransmits: boolean, centralPull: ((d:number)=>number) | undefined) {\r\n super(page, pageX, pageY, width, height, tipsAndLocations, tipApplication, dryTransmits, centralPull);\r\n }\r\n\r\n override preparePageForStartup(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-preparePageForStartup');\r\n gc.check('1', ()=>GPURunner.initTouchWetPageChange(gc, this.page, this));\r\n gc.check('2', ()=>GPURunner.initTouchVisiblePageChange(gc, this.page, this));\r\n }\r\n override applyStartupToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForProcess(gcFrom: GPUChecker): void {\r\n }\r\n override applyProcessToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForFinish(gcFrom: GPUChecker): void {\r\n }\r\n override applyFinishToPage(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-applyFinishToPage');\r\n gc.check('1', ()=>GPURunner.applyTouchWetPageChange(gc, this.page, this));\r\n gc.check('2', ()=>GPURunner.applyTouchVisiblePageChange(gc, this.page, this));\r\n }\r\n\r\n override selectStartupProgram(gcFrom: GPUChecker): BlowTouchProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = BlowPageChange.startupProgram;\r\n\r\n gcFrom.checkAPI('blow-ssp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n }\r\n\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-initializeStartupProgram');\r\n const gl = gc.gl!;\r\n let buffers = BlowPageChange.blowBuffers!;\r\n\r\n if (GPURunner.doInitializeProgram(pi, 'blow')) {\r\n gc.checkAPI('1', ()=>gl.uniform1i(pi.uniformLocations.workingWetAgeTexNum, TouchPageChange.workingWetAgeTexNumVal));\r\n gc.checkAPI('1', ()=>gl.uniform1i(pi.uniformLocations.workingDryDepthTexNum, TouchPageChange.workingDryDepthTexNumVal));\r\n gc.checkAPI('1', ()=>gl.uniform1i(pi.uniformLocations.workingWetDepthTexNum, TouchPageChange.workingWetDepthTexNumVal));\r\n }\r\n }\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-specializeStartupRoutine');\r\n const gl = gc.gl!;\r\n let buffers = BlowPageChange.blowBuffers!;\r\n\r\n gl.canvas.width = this.width;\r\n gl.canvas.height = this.height;\r\n\r\n // set up the working textures\r\n this.workingFrameTextureNumbers = [TouchPageChange.workingWetDepthTexNumVal, TouchPageChange.workingDryDepthTexNumVal, TouchPageChange.workingWetAgeTexNumVal];\r\n let working = gc.check('1', ()=>GPURunner.workingFrameFactory.getItem(gc, 'blowWrk', this.width, this.height, [\r\n {tag:'wetD', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'dryD', internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'wetA', internalFormat:gl.R8UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_BYTE}\r\n ])) as WorkingItem;\r\n\r\n this.localWorkingFramebuffer = working.fb;\r\n this.localWorkingWetDepthTexture = working.tex0;\r\n this.localWorkingDryDepthTexture = working.tex1;\r\n this.localWorkingWetAgeTexture = working.tex2;\r\n }\r\n\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-runStartupRoutine');\r\n const gl = gc.gl!;\r\n let buffers = BlowPageChange.blowBuffers!;\r\n\r\n // set up the source color texture\r\n gc.check('1', ()=>this.bindWorkingFrame(gc, null, this.pageWetDepthTexture, this.pageDryDepthTexture, this.pageWetAgeTexture));\r\n gc.check('2', ()=>this.bindOutputFrame(gc, this.localWorkingFramebuffer, this.localWorkingWetDepthTexture, this.localWorkingDryDepthTexture, this.localWorkingWetAgeTexture));\r\n gc.checkAPI('3', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2]));\r\n gc.checkFB('pre4');\r\n gc.checkAPI('4', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n //this.debugRepeatDraw();\r\n }\r\n override finalizeStartup(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n\r\n }\r\n\r\n override selectProcessProgram(gcFrom: GPUChecker): BlowTouchProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = BlowPageChange.processProgram;\r\n\r\n gcFrom.checkAPI('blow-spp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n }\r\n\r\n \r\n\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-initializeProcessProgram');\r\n const gl = gc.gl!;\r\n\r\n if (GPURunner.doInitializeProgram(pi, 'blow')) {\r\n gc.checkAPI('1', ()=>gl.uniform2f(pi.uniformLocations.resolution, this.width, this.height));\r\n\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.workingWetAgeTexNum, TouchPageChange.workingWetAgeTexNumVal));\r\n gc.checkAPI('3', ()=>gl.uniform1i(pi.uniformLocations.workingWetDepthTexNum, TouchPageChange.workingWetDepthTexNumVal));\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.workingDryDepthTexNum, TouchPageChange.workingDryDepthTexNumVal));\r\n }\r\n\r\n }\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-specializeProcessRoutine');\r\n const gl = gc.gl!;\r\n let buffers = BlowPageChange.blowBuffers!;\r\n\r\n // set up the working textures\r\n let working = gc.check('1', ()=>GPURunner.workingFrameFactory.getItem(gc, 'dryResult', this.width, this.height, [\r\n {tag:'wetD',internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'dryD',internalFormat:gl.R16UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_SHORT},\r\n {tag:'wetA',internalFormat:gl.R8UI, format: gl.RED_INTEGER, type:gl.UNSIGNED_BYTE}\r\n ])) as WorkingItem;\r\n\r\n this.localResultFramebuffer = working.fb;\r\n this.localResultWetDepthTexture = working.tex0;\r\n this.localResultDryDepthTexture = working.tex1;\r\n this.localResultWetAgeTexture = working.tex2;\r\n\r\n }\r\n\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-runProcessRoutine');\r\n const gl = gc.gl!;\r\n let buffers = BlowPageChange.blowBuffers!;\r\n\r\n gc.check('1', ()=>this.bindOutputFrame(gc, this.localResultFramebuffer, this.localResultWetDepthTexture, this.localResultDryDepthTexture, this.localResultWetAgeTexture));\r\n gc.check('2', ()=>this.bindWorkingFrame(gc, this.localWorkingFramebuffer, this.localWorkingWetDepthTexture, this.localWorkingDryDepthTexture, this.localWorkingWetAgeTexture));\r\n\r\n let count = this.entries.length;\r\n for (const tipLoc of this.entries) {\r\n let tip = tipLoc.shape as FingerTip\r\n let center = tipLoc.location;\r\n \r\n let rep = 0;\r\n\r\n gc.checkAPI('3', ()=>gl.uniform2i(pi.uniformLocations.dryPosition, center.x, this.height - center.y + 1));\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.dryAmount, tipLoc.modifier));\r\n gc.checkAPI('5', ()=>gl.uniform1i(pi.uniformLocations.dryRadius, tip.radius));\r\n\r\n gc.checkFB('pre6');\r\n gc.checkAPI('6', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n\r\n rep ++;\r\n\r\n if (rep < count || rep % 2 === 0) {\r\n if (this.localWorkingFramebuffer === this.localWorkingFramebuffer) {\r\n gc.check('7', ()=>this.bindOutputFrame(gc, this.localWorkingFramebuffer, this.localWorkingWetDepthTexture, this.localWorkingDryDepthTexture, this.localWorkingWetAgeTexture));\r\n gc.check('8', ()=>this.bindWorkingFrame(gc, this.localResultFramebuffer, this.localResultWetDepthTexture, this.localResultDryDepthTexture, this.localResultWetAgeTexture));\r\n } else {\r\n gc.check('9', ()=>this.bindOutputFrame(gc, this.localResultFramebuffer, this.localResultWetDepthTexture, this.localResultDryDepthTexture, this.localResultWetAgeTexture));\r\n gc.check('10', ()=>this.bindWorkingFrame(gc, this.localWorkingFramebuffer, this.localWorkingWetDepthTexture, this.localWorkingDryDepthTexture, this.localWorkingWetAgeTexture));\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n override finalizeProcess(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n let buffers = BlowPageChange.blowBuffers!;\r\n }\r\n override selectFinishProgram(gcFrom: GPUChecker): BlowTouchProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = BlowPageChange.finishProgram;\r\n gcFrom.checkAPI('blow-sfp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n \r\n }\r\n\r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-initializeFinishProgram');\r\n const gl = gc.gl!;\r\n let buffers = BlowPageChange.blowBuffers!;\r\n\r\n if (GPURunner.doInitializeProgram(pi, 'blow')) {\r\n\r\n gc.checkAPI('1', ()=>gl.uniform1i(pi.uniformLocations.workingWetAgeTexNum, TouchPageChange.workingWetAgeTexNumVal));\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.workingWetDepthTexNum, TouchPageChange.workingWetDepthTexNumVal));\r\n gc.checkAPI('3', ()=>gl.uniform1i(pi.uniformLocations.workingDryDepthTexNum, TouchPageChange.workingDryDepthTexNumVal));\r\n }\r\n }\r\n\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n\r\n }\r\n\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'blow-runFinishRoutine');\r\n const gl = gc.gl!;\r\n\r\n let buffers = BlowPageChange.blowBuffers!;\r\n let blitReadX0 = 0;\r\n let blitReadY0 = 0;\r\n let blitReadX1 = this.width;\r\n let blitReadY1 = this.height;\r\n let blitDrawX0 = 0;\r\n let blitDrawY0 = 0;\r\n let blitDrawX1 = this.width;\r\n let blitDrawY1 = this.height;\r\n\r\n const fbTemp1 = gc.checkAPI('1', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n // blit the final wet paint to the wet paint result texture\r\n gc.checkAPI('2', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, this.localResultFramebuffer));\r\n gc.checkAPI('3', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetDepthFramebufferW));\r\n gc.checkAPI('4', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n \r\n gc.checkAPI('5', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('6', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.localResultDryDepthTexture, 0));\r\n gc.checkAPI('7', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageDryDepthFramebufferW));\r\n gc.checkAPI('8', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n // blit the final wet paint depths to the wet paint depth canvas\r\n gc.checkAPI('9', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('10', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.localResultWetAgeTexture, 0));\r\n gc.checkAPI('11', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageWetAgeFramebufferW));\r\n gc.checkAPI('12', ()=>gl.blitFramebuffer(blitReadX0, blitReadY0, blitReadX1, blitReadY1, blitDrawX0, blitDrawY0, blitDrawX1, blitDrawY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gl.deleteFramebuffer(fbTemp1);\r\n }\r\n override finalizeFinish(gcFrom: GPUChecker, pi: BlowTouchProgramInfo): void {\r\n }\r\n\r\n}\r\n\r\n ","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { GPUChecker, GPURunner, ProgramBuffers, ProgramInfo, UniformLocations } from './GPURunner';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\nimport { TouchPageChange } from './TouchPageChange';\r\n\r\nexport interface RefreshUniformLocations extends UniformLocations {\r\n pageVisLatentCTexNum: WebGLUniformLocation,\r\n pageVisLatentMTexNum: WebGLUniformLocation,\r\n pageWetDepthTexNum: WebGLUniformLocation,\r\n pageDryDepthTexNum: WebGLUniformLocation,\r\n pageWetAgeTexNum: WebGLUniformLocation,\r\n kmLookupTexNum: WebGLUniformLocation,\r\n showDry: WebGLUniformLocation,\r\n};\r\n\r\nexport interface RefreshProgramInfo extends ProgramInfo {\r\n uniformLocations: RefreshUniformLocations\r\n};\r\n\r\nexport interface RefreshProgramBuffers extends ProgramBuffers {\r\n\r\n};\r\n\r\nexport class RefreshPageChange extends PageChange {\r\n static finishDryProgram: RefreshProgramInfo = {tag:'finishDryProgram', uniformLocations:{}} as RefreshProgramInfo;\r\n static refreshBuffers: RefreshProgramBuffers | undefined;\r\n \r\nstatic fsSourceFinishDry = `#version 300 es\r\n#line 60035\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nuniform highp usampler2D u_pageVisLatentCTexNum;\r\nuniform highp usampler2D u_pageVisLatentMTexNum;\r\nuniform highp usampler2D u_pageWetDepthTexNum;\r\nuniform highp usampler2D u_pageDryDepthTexNum;\r\nuniform highp usampler2D u_pageWetAgeTexNum;\r\nuniform highp usampler2D u_kmLookupTexNum;\r\nuniform highp int u_showDry;\r\nlayout(location = 0) out highp vec4 outputColor;\r\n` + TouchPageChange.fsColorMixLatentToRGBSource\r\n + TouchPageChange.fsSourceDoDepthLighting\r\n + `\r\n#line 60049\r\n\r\nvoid main() {\r\n uvec4 outputLatentC = texture(u_pageVisLatentCTexNum, v_texCoordRendered);\r\n uvec4 outputLatentM = texture(u_pageVisLatentMTexNum, v_texCoordRendered);\r\n highp uint finalDepth = texture(u_pageWetDepthTexNum, v_texCoordRendered).r;\r\n highp uint finalAge = texture(u_pageWetAgeTexNum, v_texCoordRendered).r;\r\n highp float outputLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n outputColor = latentToRgba(outputLatent);\r\n outputColor = doDepthLighting(outputColor, finalDepth, u_pageWetDepthTexNum, u_pageDryDepthTexNum, v_texCoordRendered);\r\n\r\n if (u_showDry == 1 && (finalDepth == 0u || (finalDepth == 1u && finalAge == 1u))) {\r\n outputColor.r = outputColor.r + (1.0- outputColor.r) * 0.5;\r\n outputColor.g = outputColor.g + (1.0- outputColor.g) * 0.5;\r\n outputColor.b = outputColor.b + (1.0- outputColor.b) * 0.5;\r\n outputColor.a = 1.0;\r\n } else {\r\n outputColor.a = 1.0;\r\n }\r\n}\r\n`;\r\n\r\n\r\n static getPrograms(): Array<[string, ProgramInfo]> {\r\n return [[RefreshPageChange.fsSourceFinishDry, RefreshPageChange.finishDryProgram]];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'refresh-pass');\r\n RefreshPageChange.finishDryProgram.uniformLocations = {} as RefreshUniformLocations;\r\n RefreshPageChange.addFinishProgramLocations(gc, RefreshPageChange.finishDryProgram);\r\n }\r\n\r\n static addFinishProgramLocations(gcFrom: GPUChecker, programInfo: RefreshProgramInfo) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'refresh-addFinishProgramLocations');\r\n const gl = gc.gl;\r\n\r\n programInfo.uniformLocations.pageVisLatentCTexNum = gc.checkAPI('1', ()=>gl.getUniformLocation(programInfo.program, 'u_pageVisLatentCTexNum')!, true) as WebGLUniformLocation;\r\n programInfo.uniformLocations.pageVisLatentMTexNum = gc.checkAPI('2', ()=>gl.getUniformLocation(programInfo.program, 'u_pageVisLatentMTexNum')!, true) as WebGLUniformLocation;\r\n programInfo.uniformLocations.pageWetDepthTexNum = gc.checkAPI('3', ()=>gl.getUniformLocation(programInfo.program, 'u_pageWetDepthTexNum')!, true) as WebGLUniformLocation;\r\n programInfo.uniformLocations.pageDryDepthTexNum = gc.checkAPI('4', ()=>gl.getUniformLocation(programInfo.program, 'u_pageDryDepthTexNum')!, true) as WebGLUniformLocation;\r\n programInfo.uniformLocations.pageWetAgeTexNum = gc.checkAPI('5', ()=>gl.getUniformLocation(programInfo.program, 'u_pageWetAgeTexNum')!, true) as WebGLUniformLocation;\r\n programInfo.uniformLocations.showDry = gc.checkAPI('7', ()=>gl.getUniformLocation(programInfo.program, 'u_showDry')!, true) as WebGLUniformLocation;\r\n gc.check('8', ()=>PageChange.addProgramLocations(gc, programInfo, true));\r\n }\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'refresh-pass');\r\n RefreshPageChange.refreshBuffers = {} as RefreshProgramBuffers;\r\n RefreshPageChange.addPermanentStorage(gc, RefreshPageChange.refreshBuffers, textureCallback);\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: RefreshProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'refresh-pass');\r\n PageChange.addPermanentStorage(gc, buffers, textureCallback);\r\n if (RefreshPageChange.refreshBuffers! === undefined) {\r\n }\r\n }\r\n\r\n static visLatentCTexNum = 20;\r\n static visLatentMTexNum = 21;\r\n static wetDepthTexNum = 22;\r\n static dryDepthTexNum = 23;\r\n static ageTexNum = 24;\r\n static kmLookupTexNum = TouchPageChange.kmLookupTexNumVal;\r\n\r\n previousBlows: Array;\r\n\r\n constructor(page: Page) {\r\n super(page, 0, 0, page.cellsWidth, page.cellsHeight);\r\n this.previousBlows = new Array();\r\n }\r\n\r\n override setViewport(): void {\r\n // set the resolution\r\n let gl = GPURunner.gl!;\r\n let width = this.page.cellsWidth;\r\n let height = this.page.cellsHeight;\r\n gl.canvas.width = width;\r\n gl.canvas.height = height;\r\n gl.viewport(0, 0, width, height);\r\n }\r\n override preparePageForStartup(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'refresh-pass');\r\n GPURunner.initRefreshPageChange(gc, this.page, this);\r\n }\r\n override applyStartupToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForProcess(gcFrom: GPUChecker): void {\r\n }\r\n override applyProcessToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForFinish(gcFrom: GPUChecker): void {\r\n }\r\n override applyFinishToPage(gcFrom: GPUChecker): void {\r\n }\r\n\r\n override selectStartupProgram(gcFrom: GPUChecker): RefreshProgramInfo {\r\n return undefined as any as RefreshProgramInfo;\r\n }\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: RefreshProgramInfo) {\r\n }\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: RefreshProgramInfo) {\r\n }\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n }\r\n override finalizeStartup(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n }\r\n\r\n override selectProcessProgram(gcFrom: GPUChecker): RefreshProgramInfo {\r\n return undefined as any as RefreshProgramInfo;\r\n }\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n }\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n }\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n }\r\n override finalizeProcess(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n }\r\n\r\n override selectFinishProgram(gcFrom: GPUChecker): RefreshProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = RefreshPageChange.finishDryProgram;\r\n gl.useProgram(pi.program);\r\n\r\n return pi;\r\n }\r\n\r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'refresh-initializeFinishProgram');\r\n let gl = GPURunner.gl!;\r\n if (GPURunner.doInitializeProgram(pi, 'refresh')) {\r\n gc.checkAPI('1', ()=>gl.uniform1i(pi.uniformLocations.pageVisLatentCTexNum, RefreshPageChange.visLatentCTexNum));\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.pageVisLatentMTexNum, RefreshPageChange.visLatentMTexNum));\r\n gc.checkAPI('3', ()=>gl.uniform1i(pi.uniformLocations.pageWetDepthTexNum, RefreshPageChange.wetDepthTexNum));\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.pageDryDepthTexNum, RefreshPageChange.dryDepthTexNum));\r\n gc.checkAPI('5', ()=>gl.uniform1i(pi.uniformLocations.pageWetAgeTexNum, RefreshPageChange.ageTexNum));\r\n gc.checkAPI('6', ()=>gl.uniform1i(pi.uniformLocations.kmLookupTexNum, RefreshPageChange.kmLookupTexNum));\r\n }\r\n }\r\n\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n }\r\n\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'refresh-runFinishRoutine');\r\n let gl = GPURunner.gl!;\r\n \r\n gc.checkAPI('1', ()=>gl.bindFramebuffer(gl.FRAMEBUFFER, null));\r\n gc.check('2', ()=>GPURunner.activateTexture(gc, RefreshPageChange.visLatentCTexNum, this.pageVisibleLatentCTexture));\r\n gc.check('3', ()=>GPURunner.activateTexture(gc, RefreshPageChange.visLatentMTexNum, this.pageVisibleLatentMTexture));\r\n gc.check('4', ()=>GPURunner.activateTexture(gc, RefreshPageChange.wetDepthTexNum, this.pageWetDepthTexture));\r\n gc.check('5', ()=>GPURunner.activateTexture(gc, RefreshPageChange.dryDepthTexNum, this.pageDryDepthTexture));\r\n gc.check('6', ()=>GPURunner.activateTexture(gc, RefreshPageChange.ageTexNum, this.pageWetAgeTexture));\r\n //gl.activeTexture(gl.TEXTURE0 + RefreshPageChange.kmLookupTexNum);\r\n //gl.bindTexture(gl.TEXTURE_2D, TouchPageChange.touchBuffers!.kmLookupTexture);\r\n\r\n gc.checkAPI('12', ()=>gl.uniform1i(pi.uniformLocations.showDry, this.previousBlows.length > 0 ? 1 : 0));\r\n\r\n gc.checkFB('pre13');\r\n gc.checkAPI('13', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n this.page.crcVisible.drawImage(gl.canvas, 0,0);\r\n }\r\n\r\n override finalizeFinish(gcFrom: GPUChecker, pi: RefreshProgramInfo): void {\r\n }\r\n\r\n}\r\n\r\n","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { WorkingItem, GPUChecker, GPURunner, ProgramInfo } from './GPURunner';\r\nimport { TouchPageChange, TouchProgramBuffers, TouchProgramInfo, TouchUniformLocations } from './TouchPageChange';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\n\r\nexport interface SmearTouchUniformLocations extends TouchUniformLocations {\r\n pressureTexNum: WebGLUniformLocation,\r\n};\r\n\r\nexport interface SmearTouchProgramInfo extends TouchProgramInfo {\r\n uniformLocations: SmearTouchUniformLocations\r\n};\r\n\r\nexport interface SmearTouchProgramBuffers extends TouchProgramBuffers {\r\n maxDepthTextures: Array | null,\r\n commitTextures: Array | null,\r\n moveFromTextures: Array | null,\r\n moveFracTextures: Array | null,\r\n};\r\n\r\n\r\nexport class SmearPageChange extends TouchPageChange {\r\n\r\n static processMeasurePressure: SmearTouchProgramInfo = {tag: 'processMeasurePressure', uniformLocations:{}} as SmearTouchProgramInfo;\r\n static processDistributePressure: SmearTouchProgramInfo = {tag: 'processDistributePressure', uniformLocations:{}} as SmearTouchProgramInfo;\r\n static processNOP: SmearTouchProgramInfo = {tag: 'processNOP', uniformLocations:{}} as SmearTouchProgramInfo;\r\n static processAccumulateScrape: SmearTouchProgramInfo = {tag: 'processAccumulateScrape', uniformLocations:{}} as SmearTouchProgramInfo;\r\n static processApplyAccumulateScrape: SmearTouchProgramInfo = {tag: 'processApplyAccumulateScrape', uniformLocations:{}} as SmearTouchProgramInfo;\r\n\r\n static smearBuffers: SmearTouchProgramBuffers | undefined;\r\n\r\n static fsSourceProcessMeasurePressure = \r\n `#version 300 es\r\n#line 30043\r\nprecision highp float;\r\nprecision highp int;\r\n//precision highp uint;\r\nuniform highp usampler2D u_workingWetDepthTexNum;\r\nuniform highp usampler2DArray u_maxDepthTexNum;\r\nuniform highp int u_maxDepthTextureIndex;\r\nin highp vec2 v_texCoordRendered;\r\nin highp vec2 v_texCoordExternal;\r\nlayout(location = 0) out highp uvec4 outputGradients;\r\nuniform highp ivec2 u_actionTextureOffset;\r\n// 0 = ignore cell\r\n// 1 = corona front. \r\n// 2 = corona back\r\n// 3 = meniscus front\r\n// 4 = meniscus body.\r\n// 5 = meniscus back.\r\n// 6 = smash body. \r\n// 7 = smash front.\r\n// 8 = smash back.\r\nhighp uint[] kindToMax = uint[](0u,0u,\r\n 18u,800u,\r\n 48u,600u,\r\n 150u,600u,\r\n 32u,300u,\r\n 48u,300u,\r\n 7u,16u,\r\n 20u,40u,\r\n 10u,20u);\r\n` \r\n + TouchPageChange.fsActionPositionsSource \r\n + TouchPageChange.fsColorMixLatentSource + \r\n`\r\n#line 30073\r\nvoid main() {\r\n // calculate a average pressure for each pixel and the surrounding pixels\r\n // the max depth is the neutral volume \r\n highp uint minDepth = 3u;\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingWetDepthTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n highp uvec2 actionSize = uvec2(textureSize(u_maxDepthTexNum, 0));\r\n highp ivec3 actionPos = workingPositionToActionPosition(workingPos, workingSize, u_actionTextureOffset, actionSize, u_maxDepthTextureIndex);\r\n \r\n outputGradients = uvec4(0, 0, 0, 0);\r\n\r\n highp uint maxDepth0 = 0u;\r\n highp uint maxDepth1 = 0u;\r\n highp uint maxDepth2 = 0u;\r\n highp uint maxDepth3 = 0u;\r\n highp uint maxDepth4 = 0u;\r\n highp uint maxDepth5 = 0u;\r\n highp uint maxDepth6 = 0u;\r\n highp uint maxDepth7 = 0u;\r\n highp uint maxDepth8 = 0u;\r\n highp uint curDepth0 = 0u;\r\n highp uint curDepth1 = 0u;\r\n highp uint curDepth2 = 0u;\r\n highp uint curDepth3 = 0u;\r\n highp uint curDepth4 = 0u;\r\n highp uint curDepth5 = 0u;\r\n highp uint curDepth6 = 0u;\r\n highp uint curDepth7 = 0u;\r\n highp uint curDepth8 = 0u;\r\n\r\n if (actionPos.x >= 0) {\r\n highp ivec3 actionPosLook = ivec3(actionPos.x, actionPos.y, actionPos.z);\r\n highp ivec2 workingPosLook = ivec2(workingPos.x, workingPos.y);\r\n maxDepth4 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth4 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n if (maxDepth4 == 0u) {\r\n return;\r\n }\r\n curDepth4 = curDepth4 < minDepth ? 0u:curDepth4 - minDepth;\r\n\r\n actionPosLook = ivec3(actionPos.x-1, actionPos.y-1, actionPos.z);\r\n workingPosLook = ivec2(workingPos.x-1, workingPos.y+1);\r\n if (actionPosLook.x >= 0 && actionPosLook.x < int(actionSize.x) && actionPosLook.y >= 0 && actionPosLook.y < int(actionSize.y)) {\r\n maxDepth0 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth0 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n curDepth0 = curDepth0 < minDepth ? 0u:curDepth0 - minDepth;\r\n }\r\n actionPosLook = ivec3(actionPos.x, actionPos.y-1, actionPos.z);\r\n workingPosLook = ivec2(workingPos.x, workingPos.y+1);\r\n if (actionPosLook.x >= 0 && actionPosLook.x < int(actionSize.x) && actionPosLook.y >= 0 && actionPosLook.y < int(actionSize.y)) {\r\n maxDepth1 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth1 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n curDepth1 = curDepth1 < minDepth ? 0u:curDepth1 - minDepth;\r\n }\r\n actionPosLook = ivec3(actionPos.x+1, actionPos.y-1, actionPos.z);\r\n workingPosLook = ivec2(workingPos.x+1, workingPos.y+1);\r\n if (actionPosLook.x >= 0 && actionPosLook.x < int(actionSize.x) && actionPosLook.y >= 0 && actionPosLook.y < int(actionSize.y)) {\r\n maxDepth2 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth2 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n curDepth2 = curDepth2 < minDepth ? 0u:curDepth2 - minDepth;\r\n }\r\n actionPosLook = ivec3(actionPos.x-1, actionPos.y, actionPos.z);\r\n workingPosLook = ivec2(workingPos.x-1, workingPos.y);\r\n if (actionPosLook.x >= 0 && actionPosLook.x < int(actionSize.x) && actionPosLook.y >= 0 && actionPosLook.y < int(actionSize.y)) {\r\n maxDepth3 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth3 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n curDepth3 = curDepth3 < minDepth ? 0u:curDepth3 - minDepth;\r\n }\r\n actionPosLook = ivec3(actionPos.x+1, actionPos.y, actionPos.z);\r\n workingPosLook = ivec2(workingPos.x+1, workingPos.y);\r\n if (actionPosLook.x >= 0 && actionPosLook.x < int(actionSize.x) && actionPosLook.y >= 0 && actionPosLook.y < int(actionSize.y)) {\r\n maxDepth5 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth5 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n curDepth5 = curDepth5 < minDepth ? 0u:curDepth5 - minDepth;\r\n }\r\n actionPosLook = ivec3(actionPos.x-1, actionPos.y+1, actionPos.z);\r\n workingPosLook = ivec2(workingPos.x-1, workingPos.y-1);\r\n if (actionPosLook.x >= 0 && actionPosLook.x < int(actionSize.x) && actionPosLook.y >= 0 && actionPosLook.y < int(actionSize.y)) {\r\n maxDepth6 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth6 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n curDepth6 = curDepth6 < minDepth ? 0u:curDepth6 - minDepth;\r\n }\r\n actionPosLook = ivec3(actionPos.x, actionPos.y+1, actionPos.z);\r\n workingPosLook = ivec2(workingPos.x, workingPos.y-1);\r\n if (actionPosLook.x >= 0 && actionPosLook.x < int(actionSize.x) && actionPosLook.y >= 0 && actionPosLook.y < int(actionSize.y)) {\r\n maxDepth7 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth7 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n curDepth7 = curDepth7 < minDepth ? 0u:curDepth7 - minDepth;\r\n }\r\n actionPosLook = ivec3(actionPos.x+1, actionPos.y+1, actionPos.z);\r\n workingPosLook = ivec2(workingPos.x+1, workingPos.y-1);\r\n if (actionPosLook.x >= 0 && actionPosLook.x < int(actionSize.x) && actionPosLook.y >= 0 && actionPosLook.y < int(actionSize.y)) {\r\n maxDepth8 = texelFetch(u_maxDepthTexNum, actionPosLook, 0).r;\r\n curDepth8 = texelFetch(u_workingWetDepthTexNum, workingPosLook, 0).r;\r\n curDepth8 = curDepth8 < minDepth ? 0u:curDepth8 - minDepth;\r\n }\r\n\r\n curDepth0 = maxDepth0 == 0u ? 0u:curDepth0;\r\n curDepth1 = maxDepth1 == 0u ? 0u:curDepth1;\r\n curDepth2 = maxDepth2 == 0u ? 0u:curDepth2;\r\n curDepth3 = maxDepth3 == 0u ? 0u:curDepth3;\r\n curDepth5 = maxDepth5 == 0u ? 0u:curDepth5;\r\n curDepth6 = maxDepth6 == 0u ? 0u:curDepth6;\r\n curDepth7 = maxDepth7 == 0u ? 0u:curDepth7;\r\n curDepth8 = maxDepth8 == 0u ? 0u:curDepth8;\r\n\r\n maxDepth0 = min(max(curDepth0, kindToMax[2u*maxDepth0 + 0u]), kindToMax[2u*maxDepth0 + 1u]);\r\n maxDepth1 = min(max(curDepth1, kindToMax[2u*maxDepth1 + 0u]), kindToMax[2u*maxDepth1 + 1u]);\r\n maxDepth2 = min(max(curDepth2, kindToMax[2u*maxDepth2 + 0u]), kindToMax[2u*maxDepth2 + 1u]);\r\n maxDepth3 = min(max(curDepth3, kindToMax[2u*maxDepth3 + 0u]), kindToMax[2u*maxDepth3 + 1u]);\r\n maxDepth4 = min(max(curDepth4, kindToMax[2u*maxDepth4 + 0u]), kindToMax[2u*maxDepth4 + 1u]);\r\n maxDepth5 = min(max(curDepth5, kindToMax[2u*maxDepth5 + 0u]), kindToMax[2u*maxDepth5 + 1u]);\r\n maxDepth6 = min(max(curDepth6, kindToMax[2u*maxDepth6 + 0u]), kindToMax[2u*maxDepth6 + 1u]);\r\n maxDepth7 = min(max(curDepth7, kindToMax[2u*maxDepth7 + 0u]), kindToMax[2u*maxDepth7 + 1u]);\r\n maxDepth8 = min(max(curDepth8, kindToMax[2u*maxDepth8 + 0u]), kindToMax[2u*maxDepth8 + 1u]);\r\n \r\n highp float avgPressure = 0.0;\r\n highp float thisRatio = 0.0;\r\n highp float maxAreaVolume = float(maxDepth0 + maxDepth1 + maxDepth2 + maxDepth3 + maxDepth4 + maxDepth5 + maxDepth6 + maxDepth7 + maxDepth8);\r\n highp uint temp1 = 0u;\r\n highp uint temp2 = 0u;\r\n highp uint temp3 = 0u;\r\n highp uint temp4 = 0u;\r\n\r\n\r\n if (maxAreaVolume > 0.0) {\r\n avgPressure = float(curDepth0 + curDepth1 + curDepth2 + curDepth3 + curDepth4 + curDepth5 + curDepth6 + curDepth7 + curDepth8) / maxAreaVolume;\r\n highp float thisGives = round(max(0.0, float(curDepth4) - (avgPressure * float(maxDepth4))));\r\n \r\n //temp1 =uint(avgPressure * 100.0);\r\n //temp2 = uint(thisGives);\r\n //temp3 = uint(curDepth4);\r\n //temp4 =uint(avgPressure * 100.0);\r\n\r\n if (thisGives > 0.0) {\r\n // needs of all around\r\n highp float need0 = round(max(0.0, avgPressure * float(maxDepth0) - float(curDepth0)));\r\n highp float need1 = round(max(0.0, avgPressure * float(maxDepth1) - float(curDepth1)));\r\n highp float need2 = round(max(0.0, avgPressure * float(maxDepth2) - float(curDepth2)));\r\n highp float need3 = round(max(0.0, avgPressure * float(maxDepth3) - float(curDepth3)));\r\n highp float need5 = round(max(0.0, avgPressure * float(maxDepth5) - float(curDepth5)));\r\n highp float need6 = round(max(0.0, avgPressure * float(maxDepth6) - float(curDepth6)));\r\n highp float need7 = round(max(0.0, avgPressure * float(maxDepth7) - float(curDepth7)));\r\n highp float need8 = round(max(0.0, avgPressure * float(maxDepth8) - float(curDepth8)));\r\n\r\n //temp1 = uint(maxDepth7);\r\n //temp2 = uint(curDepth7);\r\n //temp3 = uint(actionPos.y);\r\n //temp4 = uint(workingPos.y);\r\n\r\n // what ratio does this contribute to the total need?\r\n highp float totalNeed = need0 + need1 + need2 + need3 + need5 + need6 + need7 + need8;\r\n if (totalNeed > 0.0) {\r\n thisRatio = thisGives / totalNeed;\r\n }\r\n }\r\n\r\n }\r\n\r\n // 3 values stored as shorts so mangle. 2 are floats, 1 is the max depth. give the two floats each 24 bits\r\n highp uint thisRatioInt = uint(round(thisRatio * 5000.0)) & 0xFFFFFFu; // *5000 and 24 bits gives range of 3355 to 0.0002\r\n highp uint thisAvgPressureInt = uint(round(avgPressure * 5000.0)) & 0xFFFFFFu;\r\n highp uint i1 = (thisAvgPressureInt >> 8); // first 16\r\n highp uint i2 = ((thisAvgPressureInt & 0xFFu) << 8) | (thisRatioInt >> 16); // last 8 and first 8\r\n highp uint i3 = thisRatioInt & 0xFFFFu; // last 16\r\n highp uint i4 = maxDepth4;\r\n\r\n //i1 = temp1;\r\n //i2 = temp2;\r\n //i3 = temp3;\r\n //i4 = temp4;\r\n\r\n outputGradients = uvec4(i1, i2, i3, i4);\r\n }\r\n \r\n return;\r\n}\r\n`;\r\n\r\nstatic fsSourceProcessDistributePressure = \r\nTouchPageChange.fsSourceProcessGlobals \r\n+ TouchPageChange.fsColorMixLerpLatentSource + \r\n`\r\n#line 30257\r\nuniform highp usampler2D u_pressureTexNum;\r\n\r\nvoid main() {\r\n // output of previous step is the input to this step in the pressure texture\r\n // working is the current state of the page\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingWetDepthTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n highp uint minDepth = 3u;\r\n\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n if (outputDepth == 0u) {\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n } else {\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n }\r\n\r\n highp float ignoredDepth = 0.0;\r\n if (outputDepth > minDepth) {\r\n ignoredDepth = float(minDepth);\r\n } else {\r\n ignoredDepth = float(outputDepth);\r\n }\r\n highp float inputDepth = float(outputDepth) - ignoredDepth;\r\n \r\n \r\n // upack the accumulated gradients for each surrounding cell to see how much we should take from them to make us even in their context\r\n highp uvec4 gradients4 = texelFetch(u_pressureTexNum, workingPos, 0);\r\n highp float maxDepthThis = float(gradients4.a);\r\n if (maxDepthThis == 0.0) {\r\n return;\r\n }\r\n \r\n // is this cell giving up paint?\r\n highp float avgPressureThere = float(gradients4.r << 8 | gradients4.g >> 8) / 5000.0;\r\n\r\n highp float giveHere = round(max(0.0, (inputDepth) - avgPressureThere * maxDepthThis));\r\n if (giveHere > 0.95) {\r\n outputDepth = uint(max(0.0, inputDepth - (giveHere)) + ignoredDepth);\r\n }\r\n\r\n highp float outputLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n\r\n highp uvec4 gradientsThere;\r\n highp float giveRatioThere;\r\n highp float thisTakeFromThere;\r\n highp float thisTakeFrom0 = 0.0;\r\n highp float thisTakeFrom1 = 0.0;\r\n highp float thisTakeFrom2 = 0.0;\r\n highp float thisTakeFrom3 = 0.0;\r\n highp float thisTakeFrom5 = 0.0;\r\n highp float thisTakeFrom6 = 0.0;\r\n highp float thisTakeFrom7 = 0.0;\r\n highp float thisTakeFrom8 = 0.0;\r\n\r\n highp ivec2 posThere = ivec2(workingPos.x-1, workingPos.y+1);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp ivec2 pos0 = posThere;\r\n if (depthThere > minDepth) {\r\n gradientsThere = texelFetch(u_pressureTexNum, posThere, 0);\r\n avgPressureThere = float(gradientsThere.r << 8 | gradientsThere.g >> 8) / 5000.0;\r\n giveRatioThere = float((gradientsThere.g & 0xFFu) << 16 | gradientsThere.b) / 5000.0;\r\n thisTakeFromThere = max(0.0, avgPressureThere * maxDepthThis - inputDepth) * giveRatioThere;\r\n thisTakeFrom0 = thisTakeFromThere;\r\n }\r\n\r\n posThere = ivec2(workingPos.x, workingPos.y+1);\r\n depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp ivec2 pos1 = posThere;\r\n if (depthThere > minDepth) {\r\n gradientsThere = texelFetch(u_pressureTexNum, posThere, 0);\r\n avgPressureThere = float(gradientsThere.r << 8 | gradientsThere.g >> 8) / 5000.0;\r\n giveRatioThere = float((gradientsThere.g & 0xFFu) << 16 | gradientsThere.b) / 5000.0;\r\n thisTakeFromThere = max(0.0, avgPressureThere * maxDepthThis - inputDepth) * giveRatioThere;\r\n thisTakeFrom1 = thisTakeFromThere;\r\n }\r\n\r\n posThere = ivec2(workingPos.x+1, workingPos.y+1);\r\n depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp ivec2 pos2 = posThere;\r\n if (depthThere > minDepth) {\r\n gradientsThere = texelFetch(u_pressureTexNum, posThere, 0);\r\n avgPressureThere = float(gradientsThere.r << 8 | gradientsThere.g >> 8) / 5000.0;\r\n giveRatioThere = float((gradientsThere.g & 0xFFu) << 16 | gradientsThere.b) / 5000.0;\r\n thisTakeFromThere = max(0.0, avgPressureThere * maxDepthThis - inputDepth) * giveRatioThere;\r\n thisTakeFrom2 = thisTakeFromThere;\r\n }\r\n\r\n posThere = ivec2(workingPos.x-1, workingPos.y);\r\n depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp ivec2 pos3 = posThere;\r\n if (depthThere > minDepth) {\r\n gradientsThere = texelFetch(u_pressureTexNum, posThere, 0);\r\n avgPressureThere = float(gradientsThere.r << 8 | gradientsThere.g >> 8) / 5000.0;\r\n giveRatioThere = float((gradientsThere.g & 0xFFu) << 16 | gradientsThere.b) / 5000.0;\r\n thisTakeFromThere = max(0.0, avgPressureThere * maxDepthThis - inputDepth) * giveRatioThere;\r\n thisTakeFrom3 = thisTakeFromThere;\r\n }\r\n\r\n posThere = ivec2(workingPos.x+1, workingPos.y);\r\n depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp ivec2 pos5 = posThere;\r\n if (depthThere > minDepth) {\r\n gradientsThere = texelFetch(u_pressureTexNum, posThere, 0);\r\n avgPressureThere = float(gradientsThere.r << 8 | gradientsThere.g >> 8) / 5000.0;\r\n giveRatioThere = float((gradientsThere.g & 0xFFu) << 16 | gradientsThere.b) / 5000.0;\r\n thisTakeFromThere = max(0.0, avgPressureThere * maxDepthThis - inputDepth) * giveRatioThere;\r\n thisTakeFrom5 = thisTakeFromThere;\r\n }\r\n\r\n posThere = ivec2(workingPos.x-1, workingPos.y-1);\r\n depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp ivec2 pos6 = posThere;\r\n if (depthThere > minDepth) {\r\n gradientsThere = texelFetch(u_pressureTexNum, posThere, 0);\r\n avgPressureThere = float(gradientsThere.r << 8 | gradientsThere.g >> 8) / 5000.0;\r\n giveRatioThere = float((gradientsThere.g & 0xFFu) << 16 | gradientsThere.b) / 5000.0;\r\n thisTakeFromThere = max(0.0, avgPressureThere * maxDepthThis - inputDepth) * giveRatioThere;\r\n thisTakeFrom6 = thisTakeFromThere;\r\n }\r\n\r\n posThere = ivec2(workingPos.x, workingPos.y-1);\r\n depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp ivec2 pos7 = posThere;\r\n if (depthThere > minDepth) {\r\n gradientsThere = texelFetch(u_pressureTexNum, posThere, 0);\r\n avgPressureThere = float(gradientsThere.r << 8 | gradientsThere.g >> 8) / 5000.0;\r\n giveRatioThere = float((gradientsThere.g & 0xFFu) << 16 | gradientsThere.b) / 5000.0;\r\n thisTakeFromThere = max(0.0, avgPressureThere * maxDepthThis - inputDepth) * giveRatioThere;\r\n thisTakeFrom7 = thisTakeFromThere;\r\n }\r\n\r\n posThere = ivec2(workingPos.x+1, workingPos.y-1);\r\n depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n highp ivec2 pos8 = posThere;\r\n if (depthThere > minDepth) {\r\n gradientsThere = texelFetch(u_pressureTexNum, posThere, 0);\r\n avgPressureThere = float(gradientsThere.r << 8 | gradientsThere.g >> 8) / 5000.0;\r\n giveRatioThere = float((gradientsThere.g & 0xFFu) << 16 | gradientsThere.b) / 5000.0;\r\n thisTakeFromThere = max(0.0, avgPressureThere * maxDepthThis - inputDepth) * giveRatioThere;\r\n thisTakeFrom8 = thisTakeFromThere;\r\n }\r\n\r\n highp float totalTakeFrom = thisTakeFrom0 + thisTakeFrom1 + thisTakeFrom2 + thisTakeFrom3 + thisTakeFrom5 + thisTakeFrom6 + thisTakeFrom7 + thisTakeFrom8;\r\n highp uint totalTakeFromInt = uint(round(totalTakeFrom));\r\n\r\n highp float blendDepth = totalTakeFrom + float(outputDepth);\r\n\r\n outputDepth += totalTakeFromInt;\r\n inputDepth += ignoredDepth;\r\n \r\n posThere = pos0;\r\n highp float takeAmount = thisTakeFrom0;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n\r\n if (inputDepth == 0.0) {\r\n outputLatent = latentThere;\r\n inputDepth = takeAmount;\r\n } else {\r\n highp float blendWeight = takeAmount / blendDepth;\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n }\r\n }\r\n\r\n posThere = pos1;\r\n takeAmount = thisTakeFrom1;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n\r\n if (inputDepth == 0.0) {\r\n outputLatent = latentThere;\r\n inputDepth = takeAmount;\r\n } else {\r\n highp float blendWeight = takeAmount / blendDepth;\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n }\r\n }\r\n\r\n posThere = pos2;\r\n takeAmount = thisTakeFrom2;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n\r\n if (inputDepth == 0.0) {\r\n outputLatent = latentThere;\r\n inputDepth = takeAmount;\r\n } else {\r\n highp float blendWeight = takeAmount / blendDepth;\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n }\r\n }\r\n\r\n posThere = pos3;\r\n takeAmount = thisTakeFrom3;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n\r\n if (inputDepth == 0.0) {\r\n outputLatent = latentThere;\r\n inputDepth = takeAmount;\r\n } else {\r\n highp float blendWeight = takeAmount / blendDepth;\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n }\r\n }\r\n\r\n posThere = pos5;\r\n takeAmount = thisTakeFrom5;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n\r\n if (inputDepth == 0.0) {\r\n outputLatent = latentThere;\r\n inputDepth = takeAmount;\r\n } else {\r\n highp float blendWeight = takeAmount / blendDepth;\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n }\r\n }\r\n\r\n posThere = pos6;\r\n takeAmount = thisTakeFrom6;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n\r\n if (inputDepth == 0.0) {\r\n outputLatent = latentThere;\r\n inputDepth = takeAmount;\r\n } else {\r\n highp float blendWeight = takeAmount / blendDepth;\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n }\r\n }\r\n\r\n posThere = pos7;\r\n takeAmount = thisTakeFrom7;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n\r\n if (inputDepth == 0.0) {\r\n outputLatent = latentThere;\r\n inputDepth = takeAmount;\r\n } else {\r\n highp float blendWeight = takeAmount / blendDepth;\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n }\r\n }\r\n\r\n posThere = pos8;\r\n takeAmount = thisTakeFrom8;\r\n if (takeAmount > 0.0) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n\r\n if (inputDepth == 0.0) {\r\n outputLatent = latentThere;\r\n inputDepth = takeAmount;\r\n } else {\r\n highp float blendWeight = takeAmount / blendDepth;\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n }\r\n }\r\n\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent); \r\n\r\n return;\r\n}\r\n`;\r\n\r\nstatic fsSourceProcessNOP = \r\nTouchPageChange.fsSourceProcessGlobals \r\n+ TouchPageChange.fsColorMixLerpLatentSource + \r\n`\r\n#line 30549\r\nvoid main() {\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingWetDepthTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n return;\r\n}\r\n`;\r\n\r\nstatic fsSourceProcessAccumulateScrape = \r\n TouchPageChange.fsSourceProcessGlobals \r\n + TouchPageChange.fsActionPositionsSource \r\n + TouchPageChange.fsColorMixLatentSource + \r\n`\r\n#line 30566\r\nvoid main() {\r\n // calculate the amount of paint to scrape off from a cell given the parameter provided. \r\n highp uvec2 workingSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n highp uvec2 actionSize = uvec2(textureSize(u_actionFromTexNum, 0));\r\n highp ivec3 actionPos = workingPositionToActionPosition(workingPos, workingSize, u_actionTextureOffset, actionSize, u_actionTextureIndex);\r\n \r\n if (actionPos.x < 0) {\r\n outputDepth = 0u;\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n return;\r\n }\r\n\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n if (outputDepth == 0u) {\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n return;\r\n } else {\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n }\r\n \r\n highp uvec4 vCellInfo = texelFetch(u_actionFromTexNum, actionPos, 0);\r\n highp uint cellsMatch = vCellInfo.r;\r\n highp uint curMax = vCellInfo.g; // preferredScrapeDepth\r\n highp uint maxKindPushDepth = vCellInfo.b;\r\n highp uint minScrapeDepth = vCellInfo.a;\r\n\r\n if (maxKindPushDepth == 0u) {\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n outputDepth = uint(0);\r\n return;\r\n }\r\n highp uint moveFwd = 0u;\r\n if (outputDepth > maxKindPushDepth && cellsMatch > 0u) {\r\n // when build-up happens, let it ride but not too far\r\n // some gets left behind because of this little lie\r\n outputDepth = maxKindPushDepth;\r\n }\r\n\r\n if (outputDepth > curMax) {\r\n moveFwd = (outputDepth - curMax);\r\n } else if (outputDepth > minScrapeDepth) {\r\n moveFwd = uint(float(outputDepth - minScrapeDepth) * .25);\r\n } \r\n if (moveFwd >= 1u) {\r\n outputDepth = moveFwd;\r\n } else {\r\n outputDepth = uint(0);\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n }\r\n return;\r\n}`;\r\n\r\n static fsSourceProcessApplyScrapeAccumulator = \r\n TouchPageChange.fsSourceProcessGlobals \r\n + TouchPageChange.fsColorMixLerpLatentSource \r\n + TouchPageChange.fsActionPositionsSource + \r\n`\r\n#line 30627\r\n\r\nvoid main() {\r\n\r\n // apply the commit texture. the accumulator adds to the source and removes down to the max depth\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n highp uvec2 actionSize = uvec2(textureSize(u_actionFromTexNum, 0));\r\n highp ivec3 actionPos = workingPositionToActionPosition(workingPos, workingSize, u_actionTextureOffset, actionSize, u_actionTextureIndex);\r\n \r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n if (outputDepth == 0u) {\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n } else {\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n }\r\n\r\n // take the accumulator away from the depth\r\n highp uint accumDepth = texture(u_accumWetDepthTexNum, v_texCoordRendered).r;\r\n if (accumDepth > uint(0)) {\r\n if (outputDepth > accumDepth) {\r\n outputDepth -= accumDepth;\r\n } else {\r\n outputDepth = uint(0);\r\n }\r\n } \r\n\r\n if (outputDepth == 0u) {\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n }\r\n if (actionPos.x >= 0) {\r\n highp uvec4 vMovements = texelFetch(u_actionFromTexNum, actionPos, 0);\r\n if (vMovements.r != 0u) {\r\n highp ivec2 workingSrcPos = actionIndexToWorkingPosition(vMovements.r, u_actionTextureOffset, actionSize, workingSize);\r\n highp uint addDepth = texelFetch(u_accumWetDepthTexNum, workingSrcPos, 0).r;\r\n if (addDepth > uint(0)) {\r\n highp uvec4 addLatentC = texelFetch(u_accumLatentCTexNum, workingSrcPos, 0);\r\n highp uvec4 addLatentM = texelFetch(u_accumLatentMTexNum, workingSrcPos, 0);\r\n // blend\r\n \r\n highp float blendWeight = float(addDepth) / (float(addDepth) + float(outputDepth));\r\n highp float outputLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n highp float addLatent[8];\r\n latentFromLatentCM(addLatentC, addLatentM, addLatent);\r\n lerpLatent(outputLatent, addLatent, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n outputDepth += addDepth;\r\n }\r\n }\r\n }\r\n\r\n}\r\n`;\r\n\r\n\r\n static getPrograms(): Array<[source: string, pi: ProgramInfo]> {\r\n return [[SmearPageChange.fsSourceProcessMeasurePressure, SmearPageChange.processMeasurePressure],\r\n [SmearPageChange.fsSourceProcessDistributePressure, SmearPageChange.processDistributePressure],\r\n [SmearPageChange.fsSourceProcessNOP, SmearPageChange.processNOP],\r\n [SmearPageChange.fsSourceProcessAccumulateScrape, SmearPageChange.processAccumulateScrape],\r\n [SmearPageChange.fsSourceProcessApplyScrapeAccumulator, SmearPageChange.processApplyAccumulateScrape]\r\n ];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-initProgramLocations');\r\n\r\n SmearPageChange.processMeasurePressure.uniformLocations = {\r\n } as SmearTouchUniformLocations;\r\n gc.check('1', ()=>TouchPageChange.addProcessProgramLocations(gc, SmearPageChange.processMeasurePressure));\r\n SmearPageChange.processDistributePressure.uniformLocations = {\r\n pressureTexNum: gc.checkAPI('2', ()=>gc.gl.getUniformLocation(SmearPageChange.processDistributePressure.program, 'u_pressureTexNum')!, true) as WebGLUniformLocation,\r\n } as SmearTouchUniformLocations;\r\n gc.check('3', ()=>TouchPageChange.addProcessProgramLocations(gc, SmearPageChange.processDistributePressure));\r\n\r\n SmearPageChange.processNOP.uniformLocations = {\r\n } as SmearTouchUniformLocations;\r\n gc.check('4', ()=>TouchPageChange.addProcessProgramLocations(gc, SmearPageChange.processNOP));\r\n SmearPageChange.processAccumulateScrape.uniformLocations = {\r\n } as SmearTouchUniformLocations;\r\n gc.check('5', ()=>TouchPageChange.addProcessProgramLocations(gc, SmearPageChange.processAccumulateScrape));\r\n SmearPageChange.processApplyAccumulateScrape.uniformLocations = {\r\n } as SmearTouchUniformLocations;\r\n gc.check('6', ()=>TouchPageChange.addProcessProgramLocations(gc, SmearPageChange.processApplyAccumulateScrape));\r\n\r\n }\r\n\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n SmearPageChange.smearBuffers = {} as SmearTouchProgramBuffers;\r\n SmearPageChange.addPermanentStorage(gc, SmearPageChange.smearBuffers, textureCallback);\r\n\r\n // get the static change textures\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: SmearTouchProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-addPermanentStorage');\r\n const gl = gc.gl;\r\n\r\n if (SmearPageChange.smearBuffers!.maxDepthTextures === undefined) {\r\n gc.check('1', ()=>TouchPageChange.addPermanentStorage(gc, SmearPageChange.smearBuffers!, textureCallback));\r\n SmearPageChange.smearBuffers!.maxDepthTextures = new Array();\r\n SmearPageChange.smearBuffers!.moveFromTextures = new Array();\r\n SmearPageChange.smearBuffers!.moveFracTextures = new Array();\r\n SmearPageChange.smearBuffers!.commitTextures = new Array();\r\n\r\n\r\n for (let radius = FingerTip.minFingerRadius; radius <= FingerTip.maxFingerRadius; radius ++) {\r\n if (!GPUChecker.healthy) {break;}\r\n const maxDepthTexture = gc.check('2', ()=>GPURunner.initTexture(gc, `maxDepthTexture${radius}`, true))! as WebGLTexture;\r\n const moveFromTexture = gc.check('3', ()=>GPURunner.initTexture(gc, `moveFromTexture${radius}`, true))! as WebGLTexture;\r\n const moveFracTexture = gc.check('4', ()=>GPURunner.initTexture(gc, `moveFracTexture${radius}`, true))! as WebGLTexture;\r\n const commitTexture = gc.check('5', ()=>GPURunner.initTexture(gc, `commitTexture${radius}`, true))! as WebGLTexture;\r\n SmearPageChange.smearBuffers!.maxDepthTextures.push(maxDepthTexture);\r\n SmearPageChange.smearBuffers!.moveFromTextures.push(moveFromTexture);\r\n SmearPageChange.smearBuffers!.moveFracTextures.push(moveFracTexture);\r\n SmearPageChange.smearBuffers!.commitTextures.push(commitTexture);\r\n\r\n const smashChangeTextureSet = textureCallback(radius, {instrument: TipInstrument.finger, motion: TipMotion.drag, action: TipAction.unknown, modifier: 0});\r\n \r\n gc.checkAPI('6', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, moveFromTexture));\r\n gc.checkAPI(`7_${radius}`, ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.RGBA16UI, \r\n smashChangeTextureSet.width, smashChangeTextureSet.height, smashChangeTextureSet.moveEntries, 0, \r\n gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, smashChangeTextureSet.texFrom!));\r\n \r\n gc.checkAPI('8', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, moveFracTexture));\r\n gc.checkAPI(`9_${radius}`, ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.RGBA32F, \r\n smashChangeTextureSet.width, smashChangeTextureSet.height, smashChangeTextureSet.moveEntries, 0, \r\n gl.RGBA, gl.FLOAT, smashChangeTextureSet.texFrac!));\r\n \r\n gc.checkAPI('10', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, commitTexture));\r\n gc.checkAPI(`11_${radius}`, ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.R32F, \r\n smashChangeTextureSet.width, smashChangeTextureSet.height, smashChangeTextureSet.moveEntries, 0, \r\n gl.RED, gl.FLOAT, smashChangeTextureSet.texCommit!));\r\n \r\n gc.checkAPI('12', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, maxDepthTexture));\r\n gc.checkAPI(`13_${radius}`, ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.R16UI, \r\n smashChangeTextureSet.width, smashChangeTextureSet.height, smashChangeTextureSet.maxEntries, 0, \r\n gl.RED_INTEGER, gl.UNSIGNED_SHORT, smashChangeTextureSet.texMax!));\r\n }\r\n }\r\n buffers.maxDepthTextures = SmearPageChange.smearBuffers!.maxDepthTextures;\r\n buffers.moveFromTextures = SmearPageChange.smearBuffers!.moveFromTextures;\r\n buffers.moveFracTextures = SmearPageChange.smearBuffers!.moveFracTextures;\r\n buffers.commitTextures = SmearPageChange.smearBuffers!.commitTextures;\r\n \r\n }\r\n\r\n static pressureTexNumVal = 20;\r\n\r\n pressureTexture: WebGLTexture | null = null;\r\n pressureFB: WebGLFramebuffer | null = null;\r\n\r\n constructor(page: Page, pageX: number, pageY: number, width: number, height: number,\r\n tipsAndLocations: Array, tipApplication: TipApplication,\r\n dryTransmits: boolean, centralPull: ((d:number)=>number) | undefined) {\r\n super(page, pageX, pageY, width, height, tipsAndLocations, tipApplication, dryTransmits, centralPull);\r\n }\r\n\r\n\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._initializeStartupProgram(gc, pi, buffers);\r\n\r\n }\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._specializeStartupRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._runStartupRoutine(gc, pi, buffers);\r\n\r\n }\r\n override finalizeStartup(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._finalizeStartup(gc, pi, buffers);\r\n\r\n }\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._initializeProcessProgram(gc, pi, buffers);\r\n }\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'specializeProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = SmearPageChange.smearBuffers!;\r\n \r\n let working = gc.check('1', ()=>GPURunner.workingFrameFactory.getItem(gc, 'pressure', this.width, this.height, [\r\n {tag:'pres', internalFormat:gl.RGBA16UI, format: gl.RGBA_INTEGER, type:gl.UNSIGNED_SHORT}\r\n ])) as WorkingItem;\r\n\r\n this.pressureFB = working.fb;\r\n this.pressureTexture = working.tex0;\r\n\r\n gc.check('4', ()=>super._specializeProcessRoutine(gc, pi, buffers));\r\n }\r\n specializeProcessRoutineRadius(gcFrom: GPUChecker, radius:number): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'specializeProcessRoutineRadius');\r\n const gl = gc.gl;\r\n let idx = radius - FingerTip.minFingerRadius;\r\n gc.checkAPI(`1_${radius}`, ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFromTexNumVal));\r\n gc.checkAPI(`2_${radius}`, ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, SmearPageChange.smearBuffers!.moveFromTextures![idx]));\r\n gc.checkAPI(`3_${radius}`, ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFracTexNumVal));\r\n gc.checkAPI(`4_${radius}`, ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, SmearPageChange.smearBuffers!.moveFracTextures![idx]));\r\n gc.checkAPI(`5_${radius}`, ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionCommitTexNumVal));\r\n gc.checkAPI(`6_${radius}`, ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, SmearPageChange.smearBuffers!.commitTextures![idx]));\r\n gc.checkAPI(`7_${radius}`, ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.maxDepthTexNumVal));\r\n gc.checkAPI(`8_${radius}`, ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, SmearPageChange.smearBuffers!.maxDepthTextures![idx]));\r\n }\r\n\r\n\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-runProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = SmearPageChange.smearBuffers!;\r\n\r\n let lastRadius = -1;\r\n\r\n this.accumulateForEntries(gc,\r\n (tipLoc: PageChangeEntry): boolean => {\r\n let tip = tipLoc.shape as FingerTip;\r\n let center = tipLoc.location;\r\n\r\n if (tip.radius !== lastRadius) {\r\n lastRadius = tip.radius;\r\n gc.check('1', ()=>this.specializeProcessRoutineRadius(gc, tip.radius));\r\n }\r\n \r\n const specialApplication = {instrument: this.tipApplication.instrument, motion: this.tipApplication.motion, action: this.tipApplication.action, modifier: tipLoc.modifier};\r\n const textures = tip.getChangeTextureIndexes(specialApplication);\r\n\r\n let offsetX = center.x - (textures.width)/2;\r\n let offsetY = center.y - (textures.height)/2;\r\n\r\n\r\n let pi = SmearPageChange.processMeasurePressure;\r\n\r\n //let d1 = this.debugMeasureDepthTexture(this.outputDepthTexture!, false)[0];\r\n\r\n let doSpew = false;\r\n if (doSpew) {\r\n doSpew = false;\r\n }\r\n if (doSpew) {\r\n let d = this.debugMeasureDepthTexture(this.activeOutputDepthTexture!, false)[1];\r\n let width = this.width;\r\n let height = this.height;\r\n for (let i=height-1; i >= 0; i--) {\r\n let spew = '';\r\n for (let j = 0; j < width; j++) {\r\n if (j > 0) {\r\n spew += ',';\r\n }\r\n let idx = i*width + j;\r\n let val = d[idx];\r\n spew += val.toString();\r\n }\r\n console.log(spew);\r\n }\r\n }\r\n\r\n // scrape\r\n let doScrape = true;\r\n if (doScrape) {\r\n pi = SmearPageChange.processAccumulateScrape;\r\n gc.checkAPI('2', ()=>gl.useProgram(pi.program));\r\n gc.check('3', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.checkAPI('4', ()=>gl.uniform2i(pi.uniformLocations.actionTextureOffset, offsetX, offsetY));\r\n gc.checkAPI('5', ()=>gl.uniform1i(pi.uniformLocations.actionTextureIndex, textures.idxsAction[0]));\r\n\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n\r\n this.stashOutput();\r\n gc.check('6', ()=>this.bindStashAsWorking(gc));\r\n gc.check('7', ()=>this.directOutputTowardAccumulator(gc));\r\n gc.checkFB('pre8');\r\n gc.checkAPI('8', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n //this.debugRenderLatentOutput(pi);\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n\r\n pi = SmearPageChange.processApplyAccumulateScrape;\r\n gc.checkAPI('9', ()=>gl.useProgram(pi.program));\r\n gc.check('10', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.checkAPI('11', ()=>gl.uniform2i(pi.uniformLocations.actionTextureOffset, offsetX, offsetY));\r\n gc.checkAPI('12', ()=>gl.uniform1i(pi.uniformLocations.actionTextureIndex, textures.idxsAction[1]));\r\n gc.check('13', ()=>this.useAccumulator(gc));\r\n gc.check('14', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkFB('pre15');\r\n gc.checkAPI('15', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n //this.debugRenderLatentOutput(pi);\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n }\r\n let doPressure = true;\r\n if (doPressure) {\r\n pi = SmearPageChange.processMeasurePressure;\r\n gc.checkAPI('16', ()=>gl.useProgram(pi.program));\r\n gc.check('17', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.checkAPI('18', ()=>gl.uniform2i(pi.uniformLocations.actionTextureOffset, offsetX, offsetY));\r\n gc.checkAPI('19', ()=>gl.uniform1i(pi.uniformLocations.actionTextureIndex, textures.idxsAction[0]));\r\n gc.checkAPI('20', ()=>gl.uniform1i(pi.uniformLocations.maxDepthTextureIndex, textures.idxMax));\r\n\r\n //console.log(this.debugMeasureDepthTexture(buffers.initialWetDepthTexture!, false)[0]);\r\n\r\n\r\n // special frame buffer for the pressure measurement\r\n this.stashOutput();\r\n gc.checkAPI('21', ()=>gl.bindFramebuffer(gl.FRAMEBUFFER, this.pressureFB));\r\n gc.check('22', ()=>this.bindStashAsWorking(gc));\r\n gc.checkFB('pre23');\r\n gc.checkAPI('23', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n //this.debugSpewLatentTexture(buffers.pressureTexture!);\r\n //this.debugRenderLatentOutput(pi);\r\n\r\n pi = SmearPageChange.processDistributePressure;\r\n gc.checkAPI('24', ()=>gl.useProgram(pi.program));\r\n gc.check('25', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.check('26', ()=>GPURunner.activateTexture(gc, SmearPageChange.pressureTexNumVal, this.pressureTexture));\r\n gc.checkAPI('28', ()=>gl.uniform1i(pi.uniformLocations.pressureTexNum, SmearPageChange.pressureTexNumVal));\r\n gc.check('29', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkFB('pre30');\r\n gc.checkAPI('30', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n \r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n //this.debugRenderLatentOutput(pi);\r\n\r\n //console.log(this.debugMeasureDepthTexture(this.outputDepthTexture!, false)[0]);\r\n }\r\n\r\n\r\n // let d2 = this.debugMeasureDepthTexture(this.outputDepthTexture!, false)[0];\r\n // if (d2 !== d1) {\r\n // console.log('different', d2!-d1!);\r\n // }\r\n\r\n if (doSpew) {\r\n let width = this.width;\r\n let height = this.height;\r\n const gl = GPURunner.gl!;\r\n let sampFb = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, sampFb);\r\n \r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.pressureTexture, 0);\r\n let texLat = new Uint16Array(width * height * 4);\r\n gl.readPixels(0, 0, this.width, this.height, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, texLat);\r\n // for (let i=height-1; i >= 0; i--) {\r\n // let spew = '';\r\n // for (let j = 0; j < width; j++) {\r\n // if (j > 0) {\r\n // spew += ',';\r\n // }\r\n // let idx = (i*width + j) * 4;\r\n // let val = texLat[idx];\r\n // spew += val.toString();\r\n // }\r\n // console.log(spew);\r\n // }\r\n // for (let i=height-1; i >= 0; i--) {\r\n // let spew = '';\r\n // for (let j = 0; j < width; j++) {\r\n // if (j > 0) {\r\n // spew += ',';\r\n // }\r\n // let idx = (i*width + j) * 4;\r\n // let val = texLat[idx+1];\r\n // spew += val.toString();\r\n // }\r\n // console.log(spew);\r\n // }\r\n // for (let i=height-1; i >= 0; i--) {\r\n // let spew = '';\r\n // for (let j = 0; j < width; j++) {\r\n // if (j > 0) {\r\n // spew += ',';\r\n // }\r\n // let idx = (i*width + j) * 4;\r\n // let val = texLat[idx+2];\r\n // spew += val.toString();\r\n // }\r\n // console.log(spew);\r\n // }\r\n // for (let i=height-1; i >= 0; i--) {\r\n // let spew = '';\r\n // for (let j = 0; j < width; j++) {\r\n // if (j > 0) {\r\n // spew += ',';\r\n // }\r\n // let idx = (i*width + j) * 4;\r\n // let val = texLat[idx+3];\r\n // spew += val.toString();\r\n // }\r\n // console.log(spew);\r\n // }\r\n\r\n for (let i=height-1; i >= 0; i--) {\r\n let spew = '';\r\n for (let j = 0; j < width; j++) {\r\n if (j > 0) {\r\n spew += ',';\r\n }\r\n let idx = (i*width + j) * 4;\r\n let val = texLat[idx+3];\r\n spew += val.toString();\r\n }\r\n console.log(spew);\r\n }\r\n for (let i=height-1; i >= 0; i--) {\r\n let spew = '';\r\n for (let j = 0; j < width; j++) {\r\n if (j > 0) {\r\n spew += ',';\r\n }\r\n let idx = (i*width + j) * 4;\r\n let val0 = texLat[idx];\r\n let val1 = texLat[idx+1];\r\n let val = (val0 << 8 | val1 >> 8) / 5000.0;\r\n\r\n spew += val.toString();\r\n }\r\n console.log(spew);\r\n }\r\n for (let i=height-1; i >= 0; i--) {\r\n let spew = '';\r\n for (let j = 0; j < width; j++) {\r\n if (j > 0) {\r\n spew += ',';\r\n }\r\n let idx = (i*width + j) * 4;\r\n let val1 = texLat[idx+1];\r\n let val2 = texLat[idx+2];\r\n let val = ((val1 & 0xFF) << 16 | val2) / 5000.0;\r\n\r\n spew += val.toString();\r\n }\r\n console.log(spew);\r\n }\r\n\r\n\r\n\r\n let d = this.debugMeasureDepthTexture(this.activeOutputDepthTexture!, false)[1];\r\n for (let i=height-1; i >= 0; i--) {\r\n let spew = '';\r\n for (let j = 0; j < width; j++) {\r\n if (j > 0) {\r\n spew += ',';\r\n }\r\n let idx = i*width + j;\r\n let val = d[idx];\r\n spew += val.toString();\r\n }\r\n console.log(spew);\r\n }\r\n \r\n }\r\n\r\n return true\r\n\r\n }\r\n );\r\n }\r\n override finalizeProcess(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._finalizeProcess(gc, pi, buffers);\r\n\r\n }\r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._initializeFinishProgram(gc, pi, buffers);\r\n }\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._specializeFinishRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._runFinishRoutine(gc, pi, buffers);\r\n }\r\n override finalizeFinish(gcFrom: GPUChecker, pi: SmearTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'smear-pass');\r\n let buffers = SmearPageChange.smearBuffers!;\r\n super._finalizeFinish(gc, pi, buffers);\r\n }\r\n\r\n}\r\n\r\n ","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { GPUChecker, GPURunner, ProgramInfo } from './GPURunner';\r\nimport { TouchPageChange, TouchProgramBuffers, TouchProgramInfo, TouchUniformLocations } from './TouchPageChange';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\n\r\n\r\nexport interface KnifeTouchUniformLocations extends TouchUniformLocations {\r\n radius: WebGLUniformLocation,\r\n gapPattern: WebGLUniformLocation,\r\n orientCoef: WebGLUniformLocation,\r\n movePerpendicular: WebGLUniformLocation,\r\n \r\n};\r\n\r\nexport interface KnifeTouchProgramInfo extends TouchProgramInfo {\r\n uniformLocations: KnifeTouchUniformLocations\r\n};\r\n\r\nexport interface KnifeTouchProgramBuffers extends TouchProgramBuffers {\r\n maxDepthTexture: WebGLTexture | null,\r\n commitTexture: WebGLTexture | null,\r\n moveFromTexture: WebGLTexture | null,\r\n moveFracTexture: WebGLTexture | null,\r\n};\r\n\r\n\r\nexport class KnifePageChange extends TouchPageChange {\r\n\r\n static processScrapeLift: KnifeTouchProgramInfo = {tag: 'processScrapeLift', uniformLocations:{}} as KnifeTouchProgramInfo;\r\n static processScrapeWet: KnifeTouchProgramInfo = {tag: 'processScrapeWet', uniformLocations:{}} as KnifeTouchProgramInfo;\r\n static processScrapeDry: KnifeTouchProgramInfo = {tag: 'processScrapeDry', uniformLocations:{}} as KnifeTouchProgramInfo;\r\n static knifeBuffers: KnifeTouchProgramBuffers | undefined;\r\n\r\n static fsSourceProcessScrapeLift = \r\n TouchPageChange.fsSourceProcessGlobals \r\n + TouchPageChange.fsActionPositionsSource \r\n + TouchPageChange.fsColorMixLerpLatentSource + \r\n`\r\n#line 80044\r\nuniform highp int u_radius;\r\nuniform highp int[35] u_gapPattern;\r\nuniform highp vec2 u_orientCoef;\r\nuniform highp ivec2 u_movePerpendicular;\r\n\r\nvoid main() {\r\n highp vec2 ptActionCenter = vec2(34.5, 34.5);\r\n // calculate the amount of paint to scrape off from a cell given the parameter provided. \r\n highp uvec2 workingSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n highp uvec2 actionSize = uvec2(textureSize(u_maxDepthTexNum, 0));\r\n highp ivec3 actionPos = workingPositionToActionPosition(workingPos, workingSize, u_actionTextureOffset, actionSize, u_maxDepthTextureIndex);\r\n \r\n highp int dy = int(((float(actionPos.x) - ptActionCenter.x) * u_orientCoef.y + (float(actionPos.y) - ptActionCenter.y) * u_orientCoef.x));\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n \r\n if (outputDepth == 0u) {\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n } else {\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n }\r\n\r\n if (actionPos.x < 0) {\r\n return;\r\n }\r\n\r\n highp float d = distance(ptActionCenter, vec2(actionPos.x, actionPos.y));\r\n if (d > float(u_radius)) {\r\n return;\r\n }\r\n\r\n highp uint cellKind = texelFetch(u_maxDepthTexNum, actionPos, 0).r;\r\n highp int absDy = abs(dy);\r\n if ((cellKind == 1u || cellKind == 2u) && u_gapPattern[absDy] == 1) {\r\n outputLatentC = emptyLatentPart;\r\n if (outputDepth == 0u) {\r\n outputLatentM = dryScrapeLatentM;\r\n } else {\r\n if (outputLatentM != dryScrapeLatentM) {\r\n outputLatentM = wetScrapeLatentM;\r\n }\r\n }\r\n outputDepth = 1u;\r\n } else if (absDy > 0 && cellKind == 2u && outputDepth < 32u) {\r\n highp ivec2 takeFromIn = ivec2(0,0);\r\n highp ivec2 takeFromOut = ivec2(0,0);\r\n if (u_gapPattern[absDy-1] == 1) {\r\n takeFromIn = dy > 0 ? ivec2(-1,-1) : ivec2(1,1);\r\n }\r\n if (u_gapPattern[absDy+1] == 1) {\r\n takeFromOut = dy > 0 ? ivec2(1,1) : ivec2(-1,-1);\r\n }\r\n takeFromIn = takeFromIn * u_movePerpendicular;\r\n takeFromOut = takeFromOut * u_movePerpendicular;\r\n if (takeFromIn.x != 0 || takeFromIn.y != 0) {\r\n highp ivec2 takeFromPos = workingPos + takeFromIn;\r\n highp uint takeDepth = texelFetch(u_workingWetDepthTexNum, takeFromPos, 0).r;\r\n if (takeDepth > 1u) {\r\n takeDepth = max(1u, takeDepth / 3u);\r\n if (takeDepth > outputDepth) {\r\n outputLatentC = texelFetch(u_workingLatentCTexNum, takeFromPos, 0);\r\n outputLatentM = texelFetch(u_workingLatentMTexNum, takeFromPos, 0);\r\n }\r\n outputDepth += takeDepth;\r\n }\r\n }\r\n if (takeFromOut.x != 0 || takeFromOut.y != 0) {\r\n highp ivec2 takeFromPos = workingPos + takeFromOut;\r\n highp uint takeDepth = texelFetch(u_workingWetDepthTexNum, takeFromPos, 0).r;\r\n if (takeDepth > 1u) {\r\n takeDepth = max(1u, takeDepth / 3u);\r\n if (takeDepth > outputDepth) {\r\n outputLatentC = texelFetch(u_workingLatentCTexNum, takeFromPos, 0);\r\n outputLatentM = texelFetch(u_workingLatentMTexNum, takeFromPos, 0);\r\n }\r\n outputDepth += takeDepth;\r\n }\r\n }\r\n \r\n\r\n }\r\n return;\r\n}`;\r\n \r\n\r\nstatic fsSourceProcessScrapeWet = \r\nTouchPageChange.fsSourceProcessGlobals \r\n+ TouchPageChange.fsColorMixLerpLatentSource + \r\n`\r\n#line 80136\r\n\r\nvoid main() {\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n\r\n if (outputDepth == 1u) {\r\n if (outputLatentM == wetScrapeLatentM) {\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n outputDepth = 0u;\r\n } else if (outputLatentM == dryScrapeLatentM) {\r\n outputLatentC = emptyLatentPart;\r\n outputDepth = 0u;\r\n } \r\n }\r\n\r\n return;\r\n}`;\r\n\r\nstatic fsSourceProcessScrapeDry = \r\nTouchPageChange.fsSourceProcessGlobals \r\n+ TouchPageChange.fsColorMixLerpLatentSource + \r\n`\r\n#line 80162\r\n\r\nvoid main() {\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n\r\n highp uint signalDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n highp uvec4 signalLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n\r\n outputDepth = texture(u_referenceDryDepthTexNum, v_texCoordRendered).r;\r\n outputLatentC = texture(u_referenceLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_referenceLatentMTexNum, v_texCoordRendered);\r\n\r\n if (signalDepth == 1u) {\r\n if (signalLatentM == wetScrapeLatentM) {\r\n outputDepth = 0u;\r\n }\r\n if (signalLatentM == dryScrapeLatentM) {\r\n\r\n outputDepth = 0u;\r\n\r\n highp float blendWeight = 5.0 / 100.0;\r\n highp float dryLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, dryLatent);\r\n highp float whiteLatent[8];\r\n latentFromLatentCM(whiteLatentC, neutralLatentM, whiteLatent);\r\n lerpLatent(dryLatent, whiteLatent, blendWeight, dryLatent);\r\n\r\n outputLatentC = latentToLatentC(dryLatent);\r\n outputLatentM = latentToLatentM(dryLatent);\r\n }\r\n }\r\n\r\n return;\r\n}`;\r\n\r\n\r\n static getPrograms(): Array<[string, ProgramInfo]> {\r\n return [[KnifePageChange.fsSourceProcessScrapeLift, KnifePageChange.processScrapeLift],[KnifePageChange.fsSourceProcessScrapeWet, KnifePageChange.processScrapeWet],[KnifePageChange.fsSourceProcessScrapeDry, KnifePageChange.processScrapeDry]];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-initProgramLocations');\r\n const gl = gc.gl;\r\n\r\n KnifePageChange.processScrapeLift.uniformLocations = {\r\n radius: gl.getUniformLocation(KnifePageChange.processScrapeLift.program, 'u_radius')!,\r\n gapPattern: gl.getUniformLocation(KnifePageChange.processScrapeLift.program, 'u_gapPattern')!,\r\n orientCoef: gl.getUniformLocation(KnifePageChange.processScrapeLift.program, 'u_orientCoef')!,\r\n movePerpendicular: gl.getUniformLocation(KnifePageChange.processScrapeLift.program, 'u_movePerpendicular')!,\r\n } as KnifeTouchUniformLocations;\r\n gc.check('1', ()=>TouchPageChange.addProcessProgramLocations(gc, KnifePageChange.processScrapeLift));\r\n KnifePageChange.processScrapeWet.uniformLocations = {\r\n } as KnifeTouchUniformLocations;\r\n gc.check('2', ()=>TouchPageChange.addProcessProgramLocations(gc, KnifePageChange.processScrapeWet));\r\n KnifePageChange.processScrapeDry.uniformLocations = {\r\n } as KnifeTouchUniformLocations;\r\n gc.check('2', ()=>TouchPageChange.addProcessProgramLocations(gc, KnifePageChange.processScrapeDry));\r\n\r\n }\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n KnifePageChange.knifeBuffers = {} as KnifeTouchProgramBuffers;\r\n KnifePageChange.addPermanentStorage(gc, KnifePageChange.knifeBuffers, textureCallback);\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: KnifeTouchProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n //PageChange.addPermanentStorage(gl, buffers, textureCallback);\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-addPermanentStorage');\r\n const gl = gc.gl;\r\n\r\n if (KnifePageChange.knifeBuffers!.maxDepthTexture === undefined)\r\n {\r\n gc.check('1', ()=>TouchPageChange.addPermanentStorage(gc, KnifePageChange.knifeBuffers!, textureCallback));\r\n // get the static change textures\r\n KnifePageChange.knifeBuffers!.maxDepthTexture = gc.check('2', ()=>GPURunner.initTexture(gc, 'knifeActionTexture', true)) as WebGLTexture;\r\n KnifePageChange.knifeBuffers!.moveFromTexture = gc.check('3', ()=>GPURunner.initTexture(gc, 'moveFromTexture', true)) as WebGLTexture;\r\n KnifePageChange.knifeBuffers!.moveFracTexture = gc.check('4', ()=>GPURunner.initTexture(gc, 'moveFracTexture', true)) as WebGLTexture;\r\n KnifePageChange.knifeBuffers!.commitTexture = gc.check('5', ()=>GPURunner.initTexture(gc, 'commitTexture', true)) as WebGLTexture;\r\n\r\n const knifeChangeTextureSet = textureCallback(0, {instrument: TipInstrument.knife, motion: TipMotion.press, action: TipAction.unknown, modifier: 0});\r\n\r\n gc.checkAPI('6', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFromTexNumVal));\r\n gc.checkAPI('7', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, KnifePageChange.knifeBuffers!.moveFromTexture));\r\n gc.checkAPI('8', ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.RGBA16UI, \r\n knifeChangeTextureSet.width, knifeChangeTextureSet.height, knifeChangeTextureSet.moveEntries, 0, \r\n gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, knifeChangeTextureSet.texFrom!));\r\n\r\n gc.checkAPI('9', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFracTexNumVal));\r\n gc.checkAPI('10', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, KnifePageChange.knifeBuffers!.moveFracTexture));\r\n gc.checkAPI('11', ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.RGBA32F, \r\n knifeChangeTextureSet.width, knifeChangeTextureSet.height, knifeChangeTextureSet.moveEntries, 0, \r\n gl.RGBA, gl.FLOAT, knifeChangeTextureSet.texFrac!));\r\n\r\n gc.checkAPI('12', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionCommitTexNumVal));\r\n gc.checkAPI('13', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, KnifePageChange.knifeBuffers!.commitTexture));\r\n gc.checkAPI('14', ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.R32F, \r\n knifeChangeTextureSet.width, knifeChangeTextureSet.height, knifeChangeTextureSet.moveEntries, 0, \r\n gl.RED, gl.FLOAT, knifeChangeTextureSet.texCommit!));\r\n\r\n gc.checkAPI('15', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.maxDepthTexNumVal));\r\n gc.checkAPI('16', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, KnifePageChange.knifeBuffers!.maxDepthTexture));\r\n gc.checkAPI('17', ()=>gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, gl.R16UI, \r\n knifeChangeTextureSet.width, knifeChangeTextureSet.height, knifeChangeTextureSet.maxEntries, 0, \r\n gl.RED_INTEGER, gl.UNSIGNED_SHORT, knifeChangeTextureSet.texMax!));\r\n\r\n\r\n }\r\n buffers.maxDepthTexture = KnifePageChange.knifeBuffers!.maxDepthTexture;\r\n buffers.moveFromTexture = KnifePageChange.knifeBuffers!.moveFromTexture;\r\n buffers.moveFracTexture = KnifePageChange.knifeBuffers!.moveFracTexture;\r\n buffers.commitTexture = KnifePageChange.knifeBuffers!.commitTexture;\r\n\r\n }\r\n\r\n paintRadius: number;\r\n\r\n constructor(page: Page, pageX: number, pageY: number, width: number, height: number,\r\n tipsAndLocations: Array, tipApplication: TipApplication,\r\n dryTransmits: boolean, paintRadius: number, centralPull: ((d:number)=>number) | undefined) {\r\n super(page, pageX, pageY, width, height, tipsAndLocations, tipApplication, dryTransmits, centralPull);\r\n this.paintRadius = paintRadius;\r\n }\r\n\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._initializeStartupProgram(gc, pi, buffers);\r\n }\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._specializeStartupRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._runStartupRoutine(gc, pi, buffers);\r\n\r\n }\r\n override finalizeStartup(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._finalizeStartup(gc, pi, buffers);\r\n\r\n }\r\n override preparePageForProcess(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-preparePageForProcess');\r\n super.preparePageForProcess(gc);\r\n GPURunner.initPageChangeDryLatentTextureFromPage(gc, this.page, this);\r\n }\r\n override applyProcessToPage(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-applyProcessToPage');\r\n super.applyProcessToPage(gc);\r\n GPURunner.applyPageChangeDryLatentTextureToPage(gc, this.page, this);\r\n }\r\n\r\n override selectProcessProgram(gcFrom: GPUChecker): TouchProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = KnifePageChange.processScrapeLift;\r\n\r\n gcFrom.checkAPI('knife-spp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n }\r\n\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-initializeProcessProgram');\r\n const gl = gc.gl;\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n\r\n gc.check('1', ()=>super._initializeProcessProgram(gc, pi, buffers));\r\n\r\n if (GPURunner.doInitializeProgram(pi, `knife-${pi.tag}`)) {\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.kmLookupTexNum, KnifePageChange.kmLookupTexNumVal));\r\n }\r\n\r\n }\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-specializeProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n\r\n gc.check('1', ()=>super._specializeProcessRoutine(gc, pi, buffers));\r\n gc.checkAPI('2', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFromTexNumVal));\r\n gc.checkAPI('3', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, buffers!.moveFromTexture));\r\n gc.checkAPI('4', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionFracTexNumVal));\r\n gc.checkAPI('5', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, buffers!.moveFracTexture));\r\n gc.checkAPI('6', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.actionCommitTexNumVal));\r\n gc.checkAPI('7', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, buffers!.commitTexture));\r\n gc.checkAPI('8', ()=>gl.activeTexture(gl.TEXTURE0 + TouchPageChange.maxDepthTexNumVal));\r\n gc.checkAPI('9', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, buffers!.maxDepthTexture));\r\n }\r\n \r\n\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-runProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n pi = KnifePageChange.processScrapeLift;\r\n\r\n this.accumulateForEntries(gc,\r\n (tipLoc: PageChangeEntry): boolean => {\r\n let tip = tipLoc.shape as FingerTip;\r\n let center = tipLoc.location;\r\n \r\n const specialApplication = {instrument: this.tipApplication.instrument, motion: this.tipApplication.motion, action: this.tipApplication.action, modifier: tipLoc.modifier};\r\n const textures = tip.getChangeTextureIndexes(specialApplication);\r\n\r\n let offsetX = center.x - (textures.width)/2;\r\n let offsetY = center.y - (textures.height)/2;\r\n\r\n let patternDo = tip.getKnifePattern(this.paintRadius);\r\n let orientCoef = Point2D.moveOctantPointDistanceCoeficients[tip.octMove];\r\n let ptMovePerp = Point2D.offsetsFromOctant(FingerTip.moveOctantRight[FingerTip.moveOctantRight[tip.octMove]]);\r\n \r\n\r\n gc.checkAPI('1', ()=>gl.uniform2i(pi.uniformLocations.actionTextureOffset, offsetX, offsetY));\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.actionTextureIndex, textures.idxsAction[0]));\r\n gc.checkAPI('3', ()=>gl.uniform1i(pi.uniformLocations.maxDepthTextureIndex, textures.idxMax));\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.radius, tip.radius));\r\n gc.checkAPI('5', ()=>gl.uniform2f(pi.uniformLocations.orientCoef, orientCoef.dx, orientCoef.dy));\r\n gc.checkAPI('6', ()=>gl.uniform2i(pi.uniformLocations.movePerpendicular, ptMovePerp.x, ptMovePerp.y));\r\n gc.checkAPI('7', ()=>gl.uniform1iv(pi.uniformLocations.gapPattern, patternDo[0]));\r\n\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n\r\n this.stashOutput();\r\n gc.check('8', ()=>this.bindStashAsWorking(gc));\r\n gc.check('9', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkFB('pre10');\r\n gc.checkAPI('10', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n return true\r\n\r\n }\r\n );\r\n\r\n pi = KnifePageChange.processScrapeDry;\r\n gc.checkAPI('11', ()=>gl.useProgram(pi.program));\r\n gc.check('12', ()=>this.initializeProcessProgram(gc, pi));\r\n\r\n gc.check('13', ()=>this.usePageReference(gc, this.pageDryLatentCTexture!, this.pageDryLatentMTexture!, null, this.pageDryDepthTexture!));\r\n\r\n this.stashOutput();\r\n gc.check('14', ()=>this.bindStashAsWorking(gc));\r\n this.stashOutput(); // for the wet\r\n gc.check('15', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkFB('pre18');\r\n gc.checkAPI('18', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n\r\n // copy the dry texture out of the output\r\n const fbTemp1 = gc.checkAPI('19', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n gc.checkAPI('20', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('21', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.activeOutputLatentCTexture!, 0));\r\n gc.checkAPI('22', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageDryLatentCFramebufferW));\r\n gc.checkAPI('23', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('24', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('25', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.activeOutputLatentMTexture, 0));\r\n gc.checkAPI('26', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageDryLatentMFramebufferW));\r\n gc.checkAPI('27', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n \r\n gc.checkAPI('28', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('29', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.activeOutputDepthTexture, 0));\r\n gc.checkAPI('30', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.pageDryDepthFramebufferW));\r\n gc.checkAPI('31', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gl.deleteFramebuffer(fbTemp1);\r\n\r\n // now the wet effect and leave in the output for next steps\r\n pi = KnifePageChange.processScrapeWet;\r\n gc.checkAPI('40', ()=>gl.useProgram(pi.program));\r\n gc.check('41', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.check('42', ()=>this.bindStashAsWorking(gc));\r\n gc.check('43', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkFB('pre44');\r\n gc.checkAPI('44', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n\r\n }\r\n\r\n override finalizeProcess(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._finalizeProcess(gc, pi, buffers);\r\n\r\n }\r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._initializeFinishProgram(gc, pi, buffers);\r\n\r\n }\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._specializeFinishRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._runFinishRoutine(gc, pi, buffers);\r\n\r\n }\r\n override finalizeFinish(gcFrom: GPUChecker, pi: KnifeTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'knife-pass');\r\n let buffers = KnifePageChange.knifeBuffers!;\r\n super._finalizeFinish(gc, pi, buffers);\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n ","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { GPUChecker, GPURunner, ProgramInfo } from './GPURunner';\r\nimport { TouchPageChange, TouchProgramBuffers, TouchProgramInfo, TouchUniformLocations } from './TouchPageChange';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\n\r\nexport interface SampleTouchUniformLocations extends TouchUniformLocations {\r\n center: WebGLUniformLocation,\r\n concentrateLine: WebGLUniformLocation,\r\n};\r\n\r\nexport interface SampleTouchProgramInfo extends TouchProgramInfo {\r\n uniformLocations: SampleTouchUniformLocations\r\n};\r\n\r\nexport interface SampleTouchProgramBuffers extends TouchProgramBuffers {\r\n\r\n};\r\n\r\n\r\nexport class SamplePageChange extends TouchPageChange {\r\n\r\n static processConcentrate: SampleTouchProgramInfo = {tag: 'processConcentrate', uniformLocations:{}} as SampleTouchProgramInfo;\r\n\r\n static sampleBuffers: SampleTouchProgramBuffers | undefined;\r\n\r\n static fsSourceProcessConcentrate = \r\n TouchPageChange.fsSourceProcessGlobals \r\n + TouchPageChange.fsColorMixLerpLatentSource \r\n + \r\n `\r\n#line 70037\r\nuniform highp ivec2 u_center;\r\nuniform highp int u_concentrateLine;\r\nvoid main() {\r\n highp uvec2 workingSize = uvec2(textureSize(u_workingWetDepthTexNum, 0));\r\n highp ivec2 workingPos = ivec2(v_texCoordRendered * vec2(workingSize));\r\n\r\n outputLatentC = emptyLatentPart;\r\n outputLatentM = smudgeLatentM;\r\n outputDepth = 0u;\r\n\r\n highp int take0 = 0;\r\n highp int take1 = 0;\r\n highp int take2 = 0;\r\n highp int take3 = 0;\r\n highp int take5 = 0;\r\n highp int take6 = 0;\r\n highp int take7 = 0;\r\n highp int take8 = 0;\r\n if (workingPos.x == 0 || workingPos.x == int(workingSize.x - 1u) || workingPos.y == 0 || workingPos.y == int(workingSize.y - 1u)) {\r\n return;\r\n }\r\n if (workingPos.x < u_center.x - u_concentrateLine || workingPos.x > u_center.x + u_concentrateLine || workingPos.y < u_center.y - u_concentrateLine || workingPos.y > u_center.y + u_concentrateLine) {\r\n return;\r\n }\r\n\r\n if (workingPos.y == u_center.y + u_concentrateLine) {\r\n take1 = 1;\r\n }\r\n if (workingPos.y == u_center.y - u_concentrateLine) {\r\n take7 = 1;\r\n }\r\n if (workingPos.x == u_center.x - u_concentrateLine) {\r\n take3 = 1;\r\n }\r\n if (workingPos.x == u_center.x + u_concentrateLine) {\r\n take5 = 1;\r\n }\r\n if (take1 == 1 && take3 == 1) {\r\n take0 = 1;\r\n }\r\n if (take1 == 1 && take5 == 1) {\r\n take2 = 1;\r\n }\r\n if (take7 == 1 && take3 == 1) {\r\n take6 = 1;\r\n }\r\n if (take7 == 1 && take5 == 1) {\r\n take8 = 1;\r\n }\r\n\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n\r\n if (take0 + take1 + take2 + take3 + take5 + take6 + take7 + take8 > 0) {\r\n highp float outputLatent[8];\r\n outputDepth = texelFetch(u_workingWetDepthTexNum, workingPos, 0).r;\r\n\r\n if (outputLatentC == emptyLatentPart && outputLatentM == smudgeLatentM) {\r\n outputDepth = 0u;\r\n } else {\r\n if (outputDepth == 0u) {\r\n outputDepth = 1u;\r\n }\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n }\r\n\r\n if (take0 == 1) {\r\n highp ivec2 posThere = ivec2(workingPos.x-1, workingPos.y+1);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n if (depthThere > 0u) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n if (outputDepth == 0u) {\r\n outputLatentC = latentCThere;\r\n outputLatentM = latentMThere;\r\n outputLatent = latentThere;\r\n outputDepth = depthThere;\r\n } else {\r\n outputDepth += depthThere;\r\n highp float blendWeight = float(depthThere) / float(outputDepth);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n }\r\n }\r\n }\r\n if (take1 == 1) {\r\n highp ivec2 posThere = ivec2(workingPos.x, workingPos.y+1);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n if (depthThere > 0u) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n if (outputDepth == 0u) {\r\n outputLatentC = latentCThere;\r\n outputLatentM = latentMThere;\r\n outputLatent = latentThere;\r\n outputDepth = depthThere;\r\n } else {\r\n outputDepth += depthThere;\r\n highp float blendWeight = float(depthThere) / float(outputDepth);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n }\r\n }\r\n }\r\n if (take2 == 1) {\r\n highp ivec2 posThere = ivec2(workingPos.x+1, workingPos.y+1);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n if (depthThere > 0u) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n if (outputDepth == 0u) {\r\n outputLatentC = latentCThere;\r\n outputLatentM = latentMThere;\r\n outputLatent = latentThere;\r\n outputDepth = depthThere;\r\n } else {\r\n outputDepth += depthThere;\r\n highp float blendWeight = float(depthThere) / float(outputDepth);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n }\r\n }\r\n }\r\n if (take3 == 1) {\r\n highp ivec2 posThere = ivec2(workingPos.x-1, workingPos.y);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n if (depthThere > 0u) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n if (outputDepth == 0u) {\r\n outputLatentC = latentCThere;\r\n outputLatentM = latentMThere;\r\n outputLatent = latentThere;\r\n outputDepth = depthThere;\r\n } else {\r\n outputDepth += depthThere;\r\n highp float blendWeight = float(depthThere) / float(outputDepth);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n }\r\n }\r\n }\r\n if (take5 == 1) {\r\n highp ivec2 posThere = ivec2(workingPos.x+1, workingPos.y);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n if (depthThere > 0u) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n if (outputDepth == 0u) {\r\n outputLatentC = latentCThere;\r\n outputLatentM = latentMThere;\r\n outputLatent = latentThere;\r\n outputDepth = depthThere;\r\n } else {\r\n outputDepth += depthThere;\r\n highp float blendWeight = float(depthThere) / float(outputDepth);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n }\r\n }\r\n }\r\n if (take6 == 1) {\r\n highp ivec2 posThere = ivec2(workingPos.x-1, workingPos.y-1);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n if (depthThere > 0u) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n if (outputDepth == 0u) {\r\n outputLatentC = latentCThere;\r\n outputLatentM = latentMThere;\r\n outputLatent = latentThere;\r\n outputDepth = depthThere;\r\n } else {\r\n outputDepth += depthThere;\r\n highp float blendWeight = float(depthThere) / float(outputDepth);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n }\r\n }\r\n }\r\n if (take7 == 1) {\r\n highp ivec2 posThere = ivec2(workingPos.x, workingPos.y-1);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n if (depthThere > 0u) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n if (outputDepth == 0u) {\r\n outputLatentC = latentCThere;\r\n outputLatentM = latentMThere;\r\n outputLatent = latentThere;\r\n outputDepth = depthThere;\r\n } else {\r\n outputDepth += depthThere;\r\n highp float blendWeight = float(depthThere) / float(outputDepth);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n }\r\n }\r\n }\r\n if (take8 == 1) {\r\n highp ivec2 posThere = ivec2(workingPos.x+1, workingPos.y-1);\r\n highp uint depthThere = texelFetch(u_workingWetDepthTexNum, posThere, 0).r;\r\n if (depthThere > 0u) {\r\n highp uvec4 latentCThere = texelFetch(u_workingLatentCTexNum, posThere, 0);\r\n highp uvec4 latentMThere = texelFetch(u_workingLatentMTexNum, posThere, 0);\r\n highp float latentThere[8];\r\n latentFromLatentCM(latentCThere, latentMThere, latentThere);\r\n if (outputDepth == 0u) {\r\n outputLatentC = latentCThere;\r\n outputLatentM = latentMThere;\r\n outputLatent = latentThere;\r\n outputDepth = depthThere;\r\n } else {\r\n outputDepth += depthThere;\r\n highp float blendWeight = float(depthThere) / float(outputDepth);\r\n lerpLatent(outputLatent, latentThere, blendWeight, outputLatent);\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n }\r\n }\r\n }\r\n\r\n }\r\n return;\r\n}\r\n`;\r\n\r\n static getPrograms(): Array<[source: string, pi: ProgramInfo]> {\r\n return [[SamplePageChange.fsSourceProcessConcentrate, SamplePageChange.processConcentrate]\r\n ];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-initProgramLocations');\r\n const gl = gc.gl;\r\n SamplePageChange.processConcentrate.uniformLocations = {\r\n center: gc.checkAPI('1', ()=>gl.getUniformLocation(SamplePageChange.processConcentrate.program, 'u_center')!, true) as WebGLUniformLocation,\r\n concentrateLine: gc.checkAPI('2', ()=>gl.getUniformLocation(SamplePageChange.processConcentrate.program, 'u_concentrateLine')!, true) as WebGLUniformLocation,\r\n } as SampleTouchUniformLocations;\r\n gc.check('3', ()=>TouchPageChange.addProcessProgramLocations(gc, SamplePageChange.processConcentrate));\r\n }\r\n\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-pass');\r\n SamplePageChange.sampleBuffers = {} as SampleTouchProgramBuffers;\r\n SamplePageChange.addPermanentStorage(gc, SamplePageChange.sampleBuffers, textureCallback);\r\n\r\n // get the static change textures\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: SampleTouchProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-pass');\r\n TouchPageChange.addPermanentStorage(gc, SamplePageChange.sampleBuffers!, textureCallback);\r\n \r\n }\r\n\r\n color: tinycolor.ColorFormats.RGB;\r\n\r\n constructor(page: Page, pageX: number, pageY: number, width: number, height: number,\r\n tipsAndLocations: Array, tipApplication: TipApplication) {\r\n super(page, pageX, pageY, width, height, tipsAndLocations, tipApplication, false, undefined);\r\n this.color = {r: 0, g: 0, b: 0};\r\n }\r\n\r\n override preparePageForStartup(gcFrom: GPUChecker): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-pass');\r\n GPURunner.initSamplePageChange(gc, this.page, this);\r\n }\r\n override applyStartupToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForProcess(gcFrom: GPUChecker): void {\r\n }\r\n override applyProcessToPage(gcFrom: GPUChecker): void {\r\n }\r\n override preparePageForFinish(gcFrom: GPUChecker): void {\r\n }\r\n override applyFinishToPage(gcFrom: GPUChecker): void {\r\n }\r\n\r\n\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-pass');\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n super._initializeStartupProgram(gc, pi, buffers);\r\n\r\n }\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-pass');\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n super._specializeStartupRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-runStartupRoutine');\r\n const gl = gc.gl;\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n\r\n // first input is the visible page colors\r\n const fbTemp1 = gc.checkAPI('1', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n gc.checkAPI('2', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('3', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.pageVisibleLatentCTexture, 0));\r\n const fbTemp2 = gc.checkAPI('4', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n gc.checkAPI('5', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, fbTemp2));\r\n gc.checkAPI('6', ()=>gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.working1LatentCTexture, 0));\r\n gc.checkAPI('7', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('8', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('9', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.pageVisibleLatentMTexture, 0));\r\n gc.checkAPI('10', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, fbTemp2));\r\n gc.checkAPI('11', ()=>gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.working1LatentMTexture, 0));\r\n gc.checkAPI('12', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('13', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp1));\r\n gc.checkAPI('14', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.pageWetDepthTexture, 0));\r\n gc.checkAPI('15', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, fbTemp2));\r\n gc.checkAPI('16', ()=>gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.working1DepthTexture, 0));\r\n gc.checkAPI('17', ()=>gl.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n this.activeOutputDepthTexture = this.working1DepthTexture;\r\n this.activeOutputLatentCTexture = this.working1LatentCTexture;\r\n this.activeOutputLatentMTexture = this.working1LatentMTexture;\r\n this.activeOutputFramebuffer = this.working1Framebuffer;\r\n \r\n gl.invalidateFramebuffer(gl.READ_FRAMEBUFFER, []);\r\n gl.deleteFramebuffer(fbTemp1);\r\n\r\n\r\n }\r\n override finalizeStartup(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-pass');\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n super._finalizeStartup(gc, pi, buffers);\r\n\r\n }\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-pass');\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n super._initializeProcessProgram(gc, pi, buffers);\r\n }\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-pass');\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n super._specializeProcessRoutine(gc, pi, buffers);\r\n }\r\n\r\n\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-runProcessRoutine');\r\n const gl = gc.gl;\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n \r\n let lastRadius = -1;\r\n\r\n this.accumulateForEntries(gc,\r\n (tipLoc: PageChangeEntry): boolean => {\r\n let tip = tipLoc.shape as FingerTip;\r\n let center = tipLoc.location;\r\n \r\n let pi = SamplePageChange.processConcentrate;\r\n gc.checkAPI('1', ()=>gl.useProgram(pi.program));\r\n gc.check('2', ()=>this.initializeProcessProgram(gc, pi));\r\n gc.checkAPI('3', ()=>gl.uniform2i(pi.uniformLocations.center, center.x, center.y));\r\n for (let line = tip.radius; line >= 0; line--) {\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.concentrateLine, line));\r\n\r\n this.stashOutput();\r\n gc.check('5', ()=>this.bindStashAsWorking(gc));\r\n gc.check('6', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkFB('pre7');\r\n gc.checkAPI('7', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n //this.debugRenderLatentOutput(pi);\r\n }\r\n return true\r\n }\r\n );\r\n }\r\n override finalizeProcess(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n\r\n }\r\n override selectFinishProgram(gcFrom: GPUChecker): TouchProgramInfo {\r\n let gl = GPURunner.gl!;\r\n let pi = TouchPageChange.latentToExternalProgram;\r\n\r\n gcFrom.checkAPI('sample-sfp', ()=>gl.useProgram(pi.program));\r\n return pi;\r\n \r\n }\r\n \r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-initFinishProgram');\r\n const gl = gc.gl;\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n\r\n gc.check('1', ()=>this._initializeOutputProgram(gc, pi, buffers));\r\n gc.checkAPI('1', ()=>gl.uniform1i(pi.uniformLocations.doDepthLighting, 0));\r\n\r\n }\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n }\r\n\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'sample-runFinishRoutine');\r\n const gl = gc.gl;\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n\r\n this.stashOutput();\r\n gc.check('1', ()=>this.bindStashAsWorking(gc));\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n gc.checkFB('pre2');\r\n gc.checkAPI('2', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n let texColor = new Uint8Array(4);\r\n let ptCenter = this.entries[0].location;\r\n gc.checkAPI('3', ()=>gl.readPixels(ptCenter.x, ptCenter.y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, texColor));\r\n this.color = {r: texColor[0], g: texColor[1], b: texColor[2]};\r\n }\r\n override finalizeFinish(gcFrom: GPUChecker, pi: SampleTouchProgramInfo): void {\r\n let buffers = SamplePageChange.sampleBuffers!;\r\n\r\n }\r\n\r\n}\r\n\r\n ","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { GPUChecker, GPURunner, ProgramInfo } from './GPURunner';\r\nimport { TouchPageChange, TouchProgramBuffers, TouchProgramInfo, TouchUniformLocations } from './TouchPageChange';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\n\r\nexport interface StampUniformLocations extends TouchUniformLocations {\r\n externalStampColorTexNum: WebGLUniformLocation,\r\n externalStampColorTextureOffset: WebGLUniformLocation,\r\n stampDepth: WebGLUniformLocation,\r\n};\r\n\r\nexport interface StampProgramInfo extends TouchProgramInfo {\r\n uniformLocations: StampUniformLocations\r\n};\r\n\r\nexport interface StampProgramBuffers extends TouchProgramBuffers {\r\n stampColorTexture: WebGLTexture | null,\r\n\r\n};\r\n\r\n\r\nexport class StampPageChange extends TouchPageChange {\r\n\r\n static stampProgram: StampProgramInfo = {tag: 'stampProgram', uniformLocations:{}} as StampProgramInfo;\r\n static stampBuffers: StampProgramBuffers | undefined;\r\n\r\nstatic fsSourceStamp = \r\nTouchPageChange.fsSourceProcessGlobals \r\n+ ` \r\n#line 90036\r\nuniform highp usampler2D u_kmLookupTexNum;\r\nuniform highp sampler2D u_externalStampColorTexNum;\r\nuniform highp int u_stampDepth;\r\nuniform highp ivec2 u_externalStampColorTextureOffset;\r\n` + TouchPageChange.fsColorMixRGBToLatentSource + `\r\n#line 90042\r\nvoid main() {\r\n outputDepth = texture(u_workingWetDepthTexNum, v_texCoordRendered).r;\r\n outputLatentC = texture(u_workingLatentCTexNum, v_texCoordRendered);\r\n outputLatentM = texture(u_workingLatentMTexNum, v_texCoordRendered);\r\n highp float outputLatent[8];\r\n latentFromLatentCM(outputLatentC, outputLatentM, outputLatent);\r\n\r\n highp uvec2 sourceSize = uvec2(textureSize(u_workingLatentCTexNum, 0));\r\n highp ivec2 sourcePosition = ivec2(v_texCoordExternal * vec2(sourceSize));\r\n\r\n highp uvec2 stampSize = uvec2(textureSize(u_externalStampColorTexNum, 0));\r\n highp ivec2 stampPosition = ivec2(sourcePosition - u_externalStampColorTextureOffset);\r\n if (!(stampPosition.x < 0 || uint(stampPosition.x) >= stampSize.x || stampPosition.y < 0 || uint(stampPosition.y) >= stampSize.y)) {\r\n highp vec4 stampColor = texelFetch(u_externalStampColorTexNum, stampPosition, 0);\r\n if (stampColor.a > 0.0) {\r\n highp float blendWeight = float(u_stampDepth) / (float(u_stampDepth) + float(outputDepth));\r\n highp float stampLatent[8];\r\n rgbaToLatent(stampColor, stampLatent);\r\n lerpLatent(outputLatent, stampLatent, blendWeight, outputLatent);\r\n outputDepth += uint(u_stampDepth);\r\n }\r\n }\r\n outputLatentC = latentToLatentC(outputLatent);\r\n outputLatentM = latentToLatentM(outputLatent);\r\n}`;\r\n\r\n static getPrograms(): Array<[string, ProgramInfo]> {\r\n return [[StampPageChange.fsSourceStamp, StampPageChange.stampProgram]];\r\n }\r\n\r\n static initProgramLocations(gcFrom: GPUChecker) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-initProgramLocations');\r\n const gl = gc.gl;\r\n\r\n StampPageChange.stampProgram.uniformLocations = {\r\n kmLookupTexNum: gc.checkAPI('1', ()=>gl.getUniformLocation(StampPageChange.stampProgram.program, 'u_kmLookupTexNum')!, true) as WebGLUniformLocation,\r\n externalStampColorTexNum: gc.checkAPI('2', ()=>gl.getUniformLocation(StampPageChange.stampProgram.program, 'u_externalStampColorTexNum')!, true) as WebGLUniformLocation,\r\n externalStampColorTextureOffset: gc.checkAPI('3', ()=>gl.getUniformLocation(StampPageChange.stampProgram.program, 'u_externalStampColorTextureOffset')!, true) as WebGLUniformLocation,\r\n stampDepth: gc.checkAPI('4', ()=>gl.getUniformLocation(StampPageChange.stampProgram.program, 'u_stampDepth')!, true) as WebGLUniformLocation,\r\n } as StampUniformLocations;\r\n gc.check('5', ()=>TouchPageChange.addProcessProgramLocations(gc, StampPageChange.stampProgram));\r\n }\r\n\r\n static initPermanentStorage(gcFrom: GPUChecker, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n StampPageChange.stampBuffers = {} as StampProgramBuffers;\r\n StampPageChange.addPermanentStorage(gc, StampPageChange.stampBuffers, textureCallback);\r\n }\r\n static addPermanentStorage(gcFrom: GPUChecker, buffers: StampProgramBuffers, textureCallback: (radius:number, application: TipApplication) => ChangeTextureSet) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-addPermanentStorage');\r\n const gl = gc.gl;\r\n\r\n if (StampPageChange.stampBuffers!.stampColorTexture === undefined)\r\n {\r\n gc.check('1', ()=>TouchPageChange.addPermanentStorage(gc, buffers, textureCallback));\r\n gc.check('2', ()=>StampPageChange.stampBuffers!.stampColorTexture = GPURunner.initTexture(gc, 'stampColorTexture'));\r\n\r\n }\r\n buffers.stampColorTexture = StampPageChange.stampBuffers!.stampColorTexture;\r\n }\r\n\r\n static externalStampColorTexNumVal = 20;\r\n\r\n stampColors: Uint8Array | undefined;\r\n stampDepth: number | undefined;\r\n\r\n constructor(page: Page, pageX: number, pageY: number, width: number, height: number,\r\n tipsAndLocations: Array, dryTransmits: boolean) {\r\n super(page, pageX, pageY, width, height, tipsAndLocations, undefined as unknown as TipApplication, dryTransmits, undefined);\r\n }\r\n\r\n override initializeStartupProgram(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._initializeStartupProgram(gc, pi, buffers);\r\n }\r\n\r\n override specializeStartupRoutine(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._specializeStartupRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runStartupRoutine(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._runStartupRoutine(gc, pi, buffers);\r\n }\r\n override finalizeStartup(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._finalizeStartup(gc, pi, buffers);\r\n }\r\n override initializeProcessProgram(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-initializeProcessProgram');\r\n const gl = gc.gl;\r\n\r\n let buffers = StampPageChange.stampBuffers!;\r\n gc.check('1', ()=>super._initializeProcessProgram(gc, pi, buffers));\r\n\r\n if (GPURunner.doInitializeProgram(StampPageChange.stampProgram, 'stamp')) {\r\n let piSave = pi;\r\n pi = StampPageChange.stampProgram;\r\n gc.checkAPI('2', ()=>gl.useProgram(pi.program));\r\n gc.check('3', ()=>super._initializeProcessProgram(gc, pi, buffers));\r\n\r\n gc.checkAPI('4', ()=>gl.uniform1i(pi.uniformLocations.kmLookupTexNum, StampPageChange.kmLookupTexNumVal));\r\n gc.checkAPI('5', ()=>gl.uniform1i(pi.uniformLocations.externalStampColorTexNum, StampPageChange.externalStampColorTexNumVal));\r\n gc.checkAPI('6', ()=>gl.uniform1i(pi.uniformLocations.stampDepth, 0));\r\n pi = piSave;\r\n gc.checkAPI('7', ()=>gl.useProgram(pi.program));\r\n }\r\n\r\n }\r\n override specializeProcessRoutine(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._specializeProcessRoutine(gc, pi, buffers);\r\n let gl = GPURunner.gl!;\r\n }\r\n\r\n override runProcessRoutine(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-runProcessRoutine');\r\n const gl = gc.gl!\r\n let buffers = StampPageChange.stampBuffers!;\r\n\r\n //console.log('run process gets outputDepthTexture');\r\n //this.debugSpewDepthTexture(this.outputDepthTexture!);\r\n\r\n pi = StampPageChange.stampProgram;\r\n gc.checkAPI('1', ()=>gl.useProgram(pi.program));\r\n\r\n gc.checkAPI('2', ()=>gl.uniform1i(pi.uniformLocations.stampDepth, this.stampDepth!));\r\n let stampOffX = this.entries[0].location.x;\r\n let stampOffY = this.entries[0].location.y;\r\n let stampDims = this.entries[0].shape as {dx: number, dy: number};\r\n gc.checkAPI('3', ()=>gl.uniform2i(pi.uniformLocations.externalStampColorTextureOffset, stampOffX, stampOffY));\r\n\r\n // load the initial stamp texture \r\n gc.check('5', ()=>GPURunner.activateTexture(gc, StampPageChange.externalStampColorTexNumVal, StampPageChange.stampBuffers!.stampColorTexture));\r\n gc.checkAPI('6', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, stampDims.dx, stampDims.dy, 0, gl.RGBA, gl.UNSIGNED_BYTE, this.stampColors!));\r\n\r\n this.stashOutput();\r\n gc.check('7', ()=>this.bindStashAsWorking(gc));\r\n gc.check('8', ()=>this.useAvailableOutputFrame(gc));\r\n gc.checkFB('pre9');\r\n gc.checkAPI('9', ()=>gl.drawArrays(gl.TRIANGLES, 0, PageChange.verts));\r\n\r\n }\r\n override finalizeProcess(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._finalizeProcess(gc, pi, buffers);\r\n\r\n }\r\n override initializeFinishProgram(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._initializeFinishProgram(gc, pi, buffers);\r\n\r\n }\r\n override specializeFinishRoutine(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._specializeFinishRoutine(gc, pi, buffers);\r\n }\r\n\r\n override runFinishRoutine(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._runFinishRoutine(gc, pi, buffers);\r\n\r\n }\r\n override finalizeFinish(gcFrom: GPUChecker, pi: StampProgramInfo): void {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'stamp-pass');\r\n let buffers = StampPageChange.stampBuffers!;\r\n super._finalizeFinish(gc, pi, buffers);\r\n\r\n }\r\n\r\n}\r\n\r\n ","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, getLookUpTable} from './kubelkaMonk';\r\nimport {LRUStrings, LRUStringNode, Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipApplication} from './fingertip';\r\nimport { CrcOff, Page } from './page';\r\nimport { initialize } from 'workbox-google-analytics';\r\nimport { TouchPageChange, TouchProgramInfo } from './TouchPageChange';\r\nimport { CirclePageChange } from './circlePageChange';\r\nimport { DryPageChange } from './dryPageChange';\r\nimport { BlowPageChange } from './blowPageChange';\r\nimport { RefreshPageChange } from './refreshPageChange';\r\nimport { PageChange } from './PageChange';\r\nimport { SmearPageChange } from './smearPageChange';\r\nimport smearGenerator from './smearGen';\r\nimport { KnifePageChange } from './knifePageChange';\r\nimport { SamplePageChange } from './samplePageChange';\r\nimport { StampPageChange } from './stampPageChange';\r\n\r\nexport interface UniformLocations {\r\n resolution: WebGLUniformLocation,\r\n};\r\n\r\nexport interface ProgramInfo {\r\n tag: string,\r\n program: WebGLProgram,\r\n attribLocations: {\r\n vertexPosition: GLint,\r\n texCoordLocation: GLint,\r\n },\r\n uniformLocations: UniformLocations,\r\n};\r\n\r\nexport interface ProgramBuffers {\r\n vertexPositionBuffer: WebGLBuffer,\r\n texCoordBuffer: WebGLBuffer\r\n};\r\n\r\nexport class GPUChecker {\r\n ctxTag: string;\r\n ctxLoc: string;\r\n public gl: WebGL2RenderingContext;\r\n static healthy: boolean = true;\r\n static lostContext: boolean = false;\r\n static errorCode: number = 0;\r\n static errorLoc: string = '';\r\n static errorText: string = '';\r\n static errorChecks: Set = new Set();\r\n static reset() {\r\n GPUChecker.healthy = true;\r\n GPUChecker.lostContext = false;\r\n GPUChecker.errorCode = 0;\r\n GPUChecker.errorLoc = '';\r\n GPUChecker.errorText = '';\r\n GPUChecker.errorChecks.clear();\r\n }\r\n constructor(gl: WebGLRenderingContext, prev: GPUChecker | undefined, ctx: string) {\r\n if (prev === undefined) {\r\n this.ctxTag = ctx;\r\n } else {\r\n this.ctxTag = `${prev.ctxTag}@${prev.ctxLoc}>${ctx}`;\r\n }\r\n this.ctxLoc = '';\r\n this.gl = gl as WebGL2RenderingContext;\r\n }\r\n\r\n public check(loc: string, intFunc: ()=>unknown ): unknown {\r\n if (GPUChecker.healthy) {\r\n this.ctxLoc = loc;\r\n return intFunc();\r\n }\r\n return null;\r\n }\r\n public checkAPI(loc: string, intFunc: ()=>unknown, nullIsError:boolean = false ): unknown {\r\n if (GPUChecker.healthy) {\r\n let locTag = `${this.ctxTag}@${loc}`\r\n let res = intFunc();\r\n if (this.gl!.isContextLost()) {\r\n GPUChecker.healthy = false;\r\n GPUChecker.errorCode = 0;\r\n GPUChecker.lostContext = true;\r\n GPUChecker.errorLoc = locTag;\r\n } else if (res === null && nullIsError) {\r\n GPUChecker.healthy = false;\r\n GPUChecker.errorCode = this.gl!.getError();\r\n if (GPUChecker.errorCode === 0) {\r\n GPUChecker.errorCode = 0x0508;\r\n }\r\n GPUChecker.errorLoc = locTag;\r\n GPUChecker.errorText = `tbd`;\r\n } else if (!GPUChecker.errorChecks.has(locTag)) {\r\n GPUChecker.errorChecks.add(locTag);\r\n GPUChecker.errorCode = this.gl!.getError();\r\n if (GPUChecker.errorCode !== 0) {\r\n GPUChecker.healthy = false;\r\n GPUChecker.errorLoc = locTag;\r\n GPUChecker.errorText = `tbd`;\r\n }\r\n }\r\n return res;\r\n }\r\n return null;\r\n }\r\n public checkFB(loc: string): void {\r\n if (GPUChecker.healthy) {\r\n let locTag = `${this.ctxTag}@${loc}`\r\n if (this.gl!.isContextLost()) {\r\n GPUChecker.healthy = false;\r\n GPUChecker.errorCode = 0;\r\n GPUChecker.lostContext = true;\r\n GPUChecker.errorLoc = locTag;\r\n } else if (!GPUChecker.errorChecks.has(locTag)) {\r\n GPUChecker.errorChecks.add(locTag);\r\n let fbCode = this.gl!.checkFramebufferStatus(this.gl!.FRAMEBUFFER);\r\n if (fbCode !== this.gl.FRAMEBUFFER_COMPLETE) {\r\n GPUChecker.healthy = false;\r\n GPUChecker.errorLoc = locTag;\r\n GPUChecker.errorCode = fbCode;\r\n switch (fbCode) {\r\n case this.gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\r\n GPUChecker.errorText = `FB Check: incomplete attachment`;\r\n break;\r\n case this.gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\r\n GPUChecker.errorText = 'FB Check: incomplete dimensions';\r\n break; \r\n case this.gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\r\n let aDet = '';\r\n for(let a=0; a<4; a++) {\r\n let aType = this.gl!.getFramebufferAttachmentParameter(this.gl!.FRAMEBUFFER, this.gl!.COLOR_ATTACHMENT0 + a, this.gl!.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE);\r\n aDet += `${a}=(${aType},`;\r\n let aRed = this.gl!.getFramebufferAttachmentParameter(this.gl!.FRAMEBUFFER, this.gl!.COLOR_ATTACHMENT0 + a, this.gl!.FRAMEBUFFER_ATTACHMENT_RED_SIZE);\r\n aDet += `${aRed},`;\r\n let aGreen = this.gl!.getFramebufferAttachmentParameter(this.gl!.FRAMEBUFFER, this.gl!.COLOR_ATTACHMENT0 + a, this.gl!.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE);\r\n aDet += `${aGreen},`;\r\n let aBlue = this.gl!.getFramebufferAttachmentParameter(this.gl!.FRAMEBUFFER, this.gl!.COLOR_ATTACHMENT0 + a, this.gl!.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE);\r\n aDet += `${aBlue},`;\r\n let aAlpha = this.gl!.getFramebufferAttachmentParameter(this.gl!.FRAMEBUFFER, this.gl!.COLOR_ATTACHMENT0 + a, this.gl!.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE);\r\n aDet += `${aAlpha}); `;\r\n\r\n }\r\n GPUChecker.errorText = `FB Check: incomplete missing attachment [${aDet}]`;\r\n break;\r\n case this.gl.FRAMEBUFFER_UNSUPPORTED:\r\n GPUChecker.errorText = 'FB Check: unsupported';\r\n break;\r\n case this.gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:\r\n GPUChecker.errorText = 'FB Check: incomplete multisample';\r\n break;\r\n \r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public setError(loc: string, code: number, text: string) {\r\n GPUChecker.healthy = false;\r\n if (this.gl && this.gl!.isContextLost()) {\r\n GPUChecker.lostContext = true;\r\n } else {\r\n GPUChecker.errorCode = code;\r\n GPUChecker.errorLoc = `${this.ctxTag}@${loc}`;\r\n GPUChecker.errorText = text;\r\n }\r\n }\r\n}\r\n\r\nexport interface WorkingItem {\r\n fb: WebGLFramebuffer | null;\r\n tex0: WebGLTexture | null;\r\n tex1: WebGLTexture | null;\r\n tex2: WebGLTexture | null;\r\n tex3: WebGLTexture | null;\r\n}\r\n\r\nexport class WorkingFrameFactory {\r\n maxItems: number = 1000;\r\n currentItems: number = 0;\r\n usedItems: Map> = new Map>();\r\n cachedItems: Map> = new Map>();\r\n cachedLRU: LRUStrings = new LRUStrings();\r\n activeTextures: Map = new Map();\r\n makeKey(frameBuffer: boolean, width: number, height: number, texShapes: Array<{internalFormat: GLenum, format: GLenum, type: GLenum}>): string {\r\n let key = `${frameBuffer ? 'fb' : 'tex'}-${width}-${height}-`;\r\n return key + texShapes.map((ts) => `${ts.internalFormat}-${ts.format}-${ts.type}`).join(';');\r\n }\r\n clearUsage(gc: GPUChecker) {\r\n // put used items on top of cache and end of list for cached items\r\n for (const usedPair of this.usedItems) {\r\n let key = usedPair[0];\r\n for (const usedItem of usedPair[1]) {\r\n let node = this.cachedLRU.addFirst(key)\r\n this.cachedItems.get(key)!.push([node, usedItem]);\r\n if (usedItem.fb) {\r\n gc.gl.bindFramebuffer(gc.gl.FRAMEBUFFER, usedItem.fb);\r\n gc.gl.invalidateFramebuffer(gc.gl.FRAMEBUFFER, [gc.gl.COLOR_ATTACHMENT0, gc.gl.COLOR_ATTACHMENT1, gc.gl.COLOR_ATTACHMENT2, gc.gl.COLOR_ATTACHMENT3]);\r\n }\r\n }\r\n }\r\n\r\n // for(const activeTexPair of this.activeTextures) {\r\n // if (activeTexPair[1] !== null) {\r\n // gc.gl.activeTexture(activeTexPair[0]);\r\n // gc.gl.bindTexture(gc.gl.TEXTURE_2D, null);\r\n // }\r\n // }\r\n\r\n this.usedItems.clear();\r\n this.activeTextures.clear();\r\n }\r\n\r\n setActivateTexture(idx: number, tex: WebGLTexture | null) {\r\n this.activeTextures.set(idx, tex);\r\n }\r\n\r\n removeOldest(gc: GPUChecker) {\r\n let key = this.cachedLRU.removeLast();\r\n let cachedL = this.cachedItems.get(key);\r\n if (cachedL && cachedL.length > 0) {\r\n let wi = cachedL.splice(0, 1)[0][1];\r\n if (wi.fb) {\r\n gc.gl.deleteFramebuffer(wi.fb);\r\n this.currentItems--;\r\n }\r\n if (wi.tex0) {\r\n gc.gl.deleteTexture(wi.tex0);\r\n this.currentItems--;\r\n }\r\n if (wi.tex1) {\r\n gc.gl.deleteTexture(wi.tex1);\r\n this.currentItems--;\r\n }\r\n if (wi.tex2) {\r\n gc.gl.deleteTexture(wi.tex2);\r\n this.currentItems--;\r\n }\r\n if (wi.tex3) {\r\n gc.gl.deleteTexture(wi.tex3);\r\n this.currentItems--;\r\n }\r\n\r\n }\r\n }\r\n\r\n getItem(gcFrom: GPUChecker, fbTag: string | undefined, width: number, height: number, texShapes: Array<{tag:string, internalFormat: GLenum, format: GLenum, type: GLenum}>) : WorkingItem {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'getWorkingItem');\r\n const gl = gc.gl;\r\n\r\n const texTag = (idx: number) => {\r\n return `${fbTag!==undefined ? fbTag+'-': ''}${texShapes[idx].tag}`\r\n }\r\n let key = this.makeKey(fbTag !== undefined, width, height, texShapes);\r\n let cachedL = this.cachedItems.get(key);\r\n if (cachedL && cachedL.length > 0) {\r\n // taken from the cache. doesn't change overall size of set. add to used and remove from cached\r\n let [node, item] = cachedL.pop()!;\r\n let usedL = this.usedItems.get(key);\r\n if (!usedL) {\r\n usedL = new Array();\r\n this.usedItems.set(key, usedL);\r\n }\r\n usedL.push(item);\r\n this.cachedLRU.removeAny(node);\r\n if (item.fb) {\r\n let old = (item.fb as any).tag;\r\n (item.fb as any).tag = fbTag;\r\n //console.log(`reusing fb ${old} as ${fbTag}`);\r\n }\r\n if (item.tex0) {\r\n let old = (item.tex0 as any).tag;\r\n (item.tex0 as any).tag = texTag(0);\r\n //console.log(`reusing tex ${old} as ${(item.tex0 as any).tag}`);\r\n }\r\n if (item.tex1) {\r\n let old = (item.tex1 as any).tag;\r\n (item.tex1 as any).tag = texTag(1);\r\n //console.log(`reusing tex ${old} as ${(item.tex1 as any).tag}`);\r\n }\r\n if (item.tex2) {\r\n let old = (item.tex2 as any).tag;\r\n (item.tex2 as any).tag = texTag(2);\r\n //console.log(`reusing tex ${old} as ${(item.tex2 as any).tag}`);\r\n }\r\n if (item.tex3) {\r\n let old = (item.tex3 as any).tag;\r\n (item.tex3 as any).tag = texTag(3);\r\n //console.log(`reusing tex ${old} as ${(item.tex3 as any).tag}`);\r\n }\r\n return item;\r\n } else {\r\n if (this.currentItems >= this.maxItems) {\r\n this.removeOldest(gc);\r\n }\r\n let newItem: WorkingItem = {fb: null, tex0: null, tex1: null, tex2: null, tex3: null};\r\n if (texShapes.length > 0) {\r\n newItem.tex0 = gc.check('1', ()=>GPURunner.initTexture(gc, texTag(0))) as WebGLTexture;\r\n this.currentItems++;\r\n gc.checkAPI('2', ()=>gl.bindTexture(gl.TEXTURE_2D, newItem.tex0));\r\n gc.checkAPI('3', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, texShapes[0].internalFormat, width, height, 0, texShapes[0].format, texShapes[0].type, null));\r\n }\r\n if (texShapes.length > 1) {\r\n newItem.tex1 = gc.check('4', ()=>GPURunner.initTexture(gc, texTag(1))) as WebGLTexture;\r\n this.currentItems++;\r\n gc.checkAPI('5', ()=>gl.bindTexture(gl.TEXTURE_2D, newItem.tex1));\r\n gc.checkAPI('6', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, texShapes[1].internalFormat, width, height, 0, texShapes[1].format, texShapes[1].type, null));\r\n }\r\n if (texShapes.length > 2) {\r\n newItem.tex2 = gc.check('7', ()=>GPURunner.initTexture(gc, texTag(2))) as WebGLTexture;\r\n this.currentItems++;\r\n gc.checkAPI('8', ()=>gl.bindTexture(gl.TEXTURE_2D, newItem.tex2));\r\n gc.checkAPI('9', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, texShapes[2].internalFormat, width, height, 0, texShapes[2].format, texShapes[2].type, null));\r\n }\r\n if (texShapes.length > 3) {\r\n newItem.tex3 = gc.check('10', ()=>GPURunner.initTexture(gc, texTag(3))) as WebGLTexture;\r\n this.currentItems++;\r\n gc.checkAPI('11', ()=>gl.bindTexture(gl.TEXTURE_2D, newItem.tex3));\r\n gc.checkAPI('12', ()=>gl.texImage2D(gl.TEXTURE_2D, 0, texShapes[3].internalFormat, width, height, 0, texShapes[3].format, texShapes[3].type, null));\r\n }\r\n if (fbTag !== undefined) {\r\n newItem.fb = gc.check('13', ()=>GPURunner.initTextureFramebuffer(gc, fbTag, newItem.tex0!, newItem.tex1!, newItem.tex2!, newItem.tex3!)) as WebGLFramebuffer;\r\n this.currentItems++;\r\n }\r\n\r\n if (!cachedL) {\r\n cachedL = new Array<[LRUStringNode, WorkingItem]>();\r\n this.cachedItems.set(key, cachedL);\r\n }\r\n \r\n let usedL = this.usedItems.get(key);\r\n if (!usedL) {\r\n usedL = new Array();\r\n this.usedItems.set(key, usedL);\r\n }\r\n usedL.push(newItem);\r\n return newItem;\r\n }\r\n }\r\n\r\n}\r\n\r\nexport class GPURunner {\r\n constructor() {\r\n }\r\n\r\n static gl: WebGL2RenderingContext | undefined;\r\n static initializedPrograms: Map> ;\r\n static workingFrameFactory: WorkingFrameFactory;\r\n\r\n static newChecker(ctx: string) {\r\n return new GPUChecker(GPURunner.gl!, undefined, ctx);\r\n }\r\n \r\n static initializeGPU(textureCallback: (radius: number, application: TipApplication) => ChangeTextureSet) {\r\n if (!GPURunner.gl) {\r\n console.time('initializing GPU: done');\r\n console.log('initializing GPU');\r\n let cvs = document.createElement('canvas');\r\n \r\n const gl = cvs.getContext(\"webgl2\", {antialias: false, powerPreference:'high-performance', failIfMajorPerformanceCaveat:true})!;\r\n if (!gl) {\r\n let gc = GPURunner.newChecker('init');\r\n gc.setError('GPU Check', -1, `WebGL2 is not supported on this device`);\r\n return;\r\n }\r\n GPURunner.gl = gl;\r\n let gc = GPURunner.newChecker('init');\r\n\r\n gl.canvas.addEventListener('webglcontextlost', (event) => {\r\n event.preventDefault(); \r\n GPUChecker.healthy = false; \r\n GPUChecker.lostContext = true;\r\n console.log('context lost');\r\n });\r\n gl.canvas.addEventListener('webglcontextrestored', (event) => {\r\n console.log('context restored');\r\n GPUChecker.reset();\r\n GPURunner.initializeGPU(textureCallback);\r\n });\r\n\r\n // check min capabilities\r\n let maxTexSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\r\n if (maxTexSize < 1024) {\r\n gc.setError('GPU Check', gl.INVALID_OPERATION, `Max texture size too small: ${maxTexSize}, Smesshy needs at least 1024`);\r\n return;\r\n }\r\n let maxActiveTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\r\n if (maxActiveTextures < 16) {\r\n gc.setError('GPU Check', gl.INVALID_OPERATION, `Max active textures too small: ${maxActiveTextures}, Smesshy needs at least 16`);\r\n return;\r\n }\r\n let maxDrawBuffers = gl.getParameter(gl.MAX_DRAW_BUFFERS);\r\n if (maxDrawBuffers < 4) {\r\n gc.setError('GPU Check', gl.INVALID_OPERATION, `Max draw buffers too small: ${maxDrawBuffers}, Smesshy needs at least 4`);\r\n return;\r\n }\r\n let maxColorAttachments = gl.getParameter(gl.MAX_COLOR_ATTACHMENTS);\r\n if (maxColorAttachments < 4) {\r\n gc.setError('GPU Check', gl.INVALID_OPERATION, `Max color attachments too small: ${maxColorAttachments}, Smesshy needs at least 4`);\r\n return;\r\n }\r\n let maxTextureArrayLayers = gl.getParameter(gl.MAX_ARRAY_TEXTURE_LAYERS);\r\n if (maxTextureArrayLayers < 90) {\r\n gc.setError('GPU Check', gl.INVALID_OPERATION, `Max texture array layers too small: ${maxTextureArrayLayers}, Smesshy needs at least 90`);\r\n return;\r\n }\r\n let prec = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\r\n if (prec!.precision < 23) {\r\n gc.setError('GPU Check', gl.INVALID_OPERATION, `High float precision too small: ${prec!.precision}, Smesshy needs at least 23`);\r\n return;\r\n }\r\n prec = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT);\r\n if (prec!.rangeMax < 30) {\r\n gc.setError('GPU Check', gl.INVALID_OPERATION, `High int precision too small: ${prec!.rangeMax}, Smesshy needs at least 30`);\r\n return;\r\n }\r\n // let crt = gl.getParameter(gl.IMPLEMENTATION_COLOR_READ_FORMAT);\r\n // //gc.setError('GPU Check', gl.INVALID_OPERATION, `Implementation color read format: ${crt}`);\r\n // //return;\r\n // let cdt = gl.getParameter(gl.IMPLEMENTATION_COLOR_READ_TYPE);\r\n // gc.setError('GPU Check', gl.INVALID_OPERATION, `Implementation color read format: ${cdt}`);\r\n // return;\r\n\r\n\r\n GPURunner.initializedPrograms = new Map>();\r\n //let dbg = gl.getExtension('WEBGL_debug_shaders');\r\n\r\n // load vertex and fragment shaders. compile and link\r\n const vertexShader = gc.checkAPI('loadShader', ()=>GPURunner.loadShader(gc, gl.VERTEX_SHADER, PageChange.vsSource), true) as WebGLShader;\r\n if (!GPUChecker.healthy) {\r\n GPUChecker.errorText = `Failed to load vertex shader`;\r\n return;\r\n }\r\n\r\n const fragmentShaderPrograms = TouchPageChange.getPrograms().concat(CirclePageChange.getPrograms()).concat(SmearPageChange.getPrograms())\r\n .concat(BlowPageChange.getPrograms()).concat(DryPageChange.getPrograms()).concat(RefreshPageChange.getPrograms()).concat(KnifePageChange.getPrograms()\r\n .concat(SamplePageChange.getPrograms()).concat(StampPageChange.getPrograms()));\r\n\r\n for (const codeInfo of fragmentShaderPrograms) {\r\n const shaderProgram = gc.checkAPI('createProgram', ()=>gl.createProgram(), true) as WebGLProgram;\r\n if (!GPUChecker.healthy) {\r\n GPUChecker.errorText = `Failed to create program for ${codeInfo[1].tag} shader`;\r\n return;\r\n }\r\n const fragmentShader = gc.check('1', ()=>GPURunner.loadShader(gc, gl.FRAGMENT_SHADER, codeInfo[0])) as WebGLShader;\r\n if (!GPUChecker.healthy) {\r\n GPUChecker.errorText = `Failed to load fragment shader for ${codeInfo[1].tag}`;\r\n return;\r\n }\r\n\r\n gl.attachShader(shaderProgram, vertexShader);\r\n gl.attachShader(shaderProgram, fragmentShader);\r\n gl.linkProgram(shaderProgram);\r\n \r\n //let src = dbg?.getTranslatedShaderSource(fragmentShader);\r\n (shaderProgram as any).tag = codeInfo[1].tag;\r\n if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {\r\n gc.setError('link', gl.INVALID_OPERATION, `Link failed: ${codeInfo[1].tag} ${gl.getProgramInfoLog(shaderProgram)}\\n vs info-log: ${gl.getShaderInfoLog(vertexShader)}\\n fs info-log: ${gl.getShaderInfoLog(fragmentShader)}`);\r\n return;\r\n }\r\n codeInfo[1].program = shaderProgram; \r\n }\r\n\r\n\r\n //let spew = dbg?.getTranslatedShaderSource(fragmentShaderFinish);\r\n //console.log(spew);\r\n\r\n // get the attribute locations per program\r\n gc.check('1', ()=>TouchPageChange.initProgramLocations(gc));\r\n gc.check('2', ()=>CirclePageChange.initProgramLocations(gc));\r\n gc.check('3', ()=>SmearPageChange.initProgramLocations(gc));\r\n gc.check('4', ()=>BlowPageChange.initProgramLocations(gc));\r\n gc.check('5', ()=>DryPageChange.initProgramLocations(gc));\r\n gc.check('6', ()=>RefreshPageChange.initProgramLocations(gc));\r\n gc.check('7', ()=>KnifePageChange.initProgramLocations(gc));\r\n gc.check('8', ()=>SamplePageChange.initProgramLocations(gc));\r\n gc.check('9', ()=>StampPageChange.initProgramLocations(gc));\r\n\r\n // set up the permanent textures and buffers \r\n GPURunner.workingFrameFactory = new WorkingFrameFactory();\r\n gc.check('20', ()=>PageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('21', ()=>TouchPageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('22', ()=>CirclePageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('23', ()=>SmearPageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('24', ()=>BlowPageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('25', ()=>DryPageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('26', ()=>RefreshPageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('27', ()=>KnifePageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('28', ()=>SamplePageChange.initPermanentStorage(gc, textureCallback));\r\n gc.check('29', ()=>StampPageChange.initPermanentStorage(gc, textureCallback));\r\n\r\n // attribute pointers\r\n gc.checkAPI('bindBuffer1', ()=>gl.bindBuffer(gl.ARRAY_BUFFER, PageChange.vertexBuffers!.texCoordBuffer));\r\n // all programs share these, so use the first one\r\n gc.checkAPI('vertexAttribPointer1', ()=>gl.vertexAttribPointer(TouchPageChange.externalToLatentProgram.attribLocations.texCoordLocation, 2, gl.FLOAT, false, 0, 0));\r\n gc.checkAPI('enableVertexAttribArray1', ()=>gl.enableVertexAttribArray(TouchPageChange.externalToLatentProgram.attribLocations.texCoordLocation));\r\n\r\n gc.checkAPI('bindBuffer2', ()=>gl.bindBuffer(gl.ARRAY_BUFFER, PageChange.vertexBuffers!.vertexPositionBuffer));\r\n gc.checkAPI('vertexAttribPointer2', ()=>gl.vertexAttribPointer(TouchPageChange.externalToLatentProgram.attribLocations.vertexPosition, 2, gl.FLOAT, false, 0, 0));\r\n gc.checkAPI('enableVertexAttribArray2', ()=>gl.enableVertexAttribArray(TouchPageChange.externalToLatentProgram.attribLocations.vertexPosition));\r\n \r\n gl.flush();\r\n GPURunner.gl = gl;\r\n console.timeEnd('initializing GPU: done');\r\n }\r\n }\r\n\r\n static activateTexture(gcFrom: GPUChecker, idx: number, tex: WebGLTexture | null) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'activateTexture');\r\n gc.checkAPI('activate', ()=>gc.gl.activeTexture(gc.gl.TEXTURE0 + idx));\r\n gc.checkAPI('bind', ()=>gc.gl.bindTexture(gc.gl.TEXTURE_2D, tex));\r\n GPURunner.workingFrameFactory.setActivateTexture(gc.gl.TEXTURE0 + idx, tex);\r\n }\r\n\r\n static doInitializeProgram(program: ProgramInfo, fromCtx: string) : Boolean {\r\n let initCtxSet = GPURunner.initializedPrograms.get(program);\r\n if (initCtxSet === undefined) {\r\n initCtxSet = new Set();\r\n GPURunner.initializedPrograms.set(program, initCtxSet);\r\n }\r\n if (initCtxSet.has(fromCtx)) {\r\n return false;\r\n }\r\n initCtxSet.add(fromCtx);\r\n return true;\r\n }\r\n\r\n static initTexture(gcFrom: GPUChecker, tag:string, array: boolean = false) : WebGLTexture {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initTexture');\r\n const gl = gc.gl;\r\n // create to render to\r\n const targetTexture = gc.checkAPI('1', ()=>gl.createTexture(), true) as WebGLTexture;\r\n (targetTexture! as any).tag = tag;\r\n if (array) {\r\n gc.checkAPI('2', ()=>gl.bindTexture(gl.TEXTURE_2D_ARRAY, targetTexture));\r\n // Set the parameters so we can render any size image.\r\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\r\n }\r\n else {\r\n gc.checkAPI('2', ()=>gl.bindTexture(gl.TEXTURE_2D, targetTexture));\r\n // Set the parameters so we can render any size image.\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\r\n }\r\n return targetTexture!;\r\n }\r\n\r\n static initTextureFramebuffer(gcFrom: GPUChecker, tag:string, tex0: WebGLTexture, tex1: WebGLTexture | undefined = undefined,\r\n text2: WebGLTexture | undefined = undefined, text3: WebGLTexture | undefined = undefined,\r\n text4: WebGLTexture | undefined = undefined, text5: WebGLTexture | undefined = undefined,\r\n text6: WebGLTexture | undefined = undefined) : WebGLFramebuffer {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initTextureFramebuffer');\r\n const gl = gc.gl;\r\n\r\n const fb = gc.checkAPI('1', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n (fb! as any).tag = tag;\r\n\r\n gc.checkAPI('2', ()=>gl.bindFramebuffer(gl.FRAMEBUFFER, fb));\r\n // attach the texture as the first color attachment\r\n gc.checkAPI('3', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex0, 0));\r\n if (tex1) {\r\n gc.checkAPI('4', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.TEXTURE_2D, tex1, 0));\r\n if (text2) {\r\n gc.checkAPI('5', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT2, gl.TEXTURE_2D, text2, 0));\r\n if (text3) {\r\n gc.checkAPI('6', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT3, gl.TEXTURE_2D, text3, 0));\r\n if (text4) {\r\n gc.checkAPI('7', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT4, gl.TEXTURE_2D, text4, 0));\r\n if (text5) {\r\n gc.checkAPI('8', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT5, gl.TEXTURE_2D, text5, 0));\r\n if (text6) {\r\n gc.checkAPI('9', ()=>gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT6, gl.TEXTURE_2D, text6, 0));\r\n gc.checkAPI('10', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2, gl.COLOR_ATTACHMENT3, gl.COLOR_ATTACHMENT4, gl.COLOR_ATTACHMENT5, gl.COLOR_ATTACHMENT6]));\r\n } else {\r\n gc.checkAPI('11', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2, gl.COLOR_ATTACHMENT3, gl.COLOR_ATTACHMENT4, gl.COLOR_ATTACHMENT5]));\r\n }\r\n } else {\r\n gc.checkAPI('12', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2, gl.COLOR_ATTACHMENT3, gl.COLOR_ATTACHMENT4]));\r\n }\r\n } else {\r\n gc.checkAPI('13', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2, gl.COLOR_ATTACHMENT3]));\r\n }\r\n } else {\r\n gc.checkAPI('14', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2]));\r\n }\r\n } else {\r\n gc.checkAPI('15', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1]));\r\n }\r\n } else {\r\n gc.checkAPI('16', ()=>gl.drawBuffers([gl.COLOR_ATTACHMENT0]));\r\n }\r\n\r\n return fb!;\r\n }\r\n\r\n static loadShader(gcFrom: GPUChecker, type: GLenum, source: string): WebGLShader {\r\n let gc = new GPUChecker(gcFrom.gl, gcFrom, 'loadShader');\r\n\r\n const shader = gc.checkAPI('createShader', ()=>gc.gl.createShader(type), true) as WebGLShader;\r\n \r\n // not checking errors here, done at higher level\r\n // Send the source to the shader object\r\n gc.gl.shaderSource(shader, source);\r\n // Compile the shader program\r\n gc.gl.compileShader(shader);\r\n\r\n return shader;\r\n }\r\n\r\n static allocateRenderBuffer(gcFrom: GPUChecker, tag: string, internalFormat: GLenum, width: number, height: number) : [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer] {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'allocateRenderBuffer');\r\n const gl = gc.gl;\r\n\r\n const rb = gc.checkAPI('1', ()=>gl.createRenderbuffer(), true) as WebGLRenderbuffer;\r\n (rb! as any).tag = `${tag}RB`;\r\n gc.checkAPI('2', ()=>gl.bindRenderbuffer(gl.RENDERBUFFER, rb));\r\n gc.checkAPI('3', ()=>gl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, width, height));\r\n\r\n let fbR = gc.checkAPI('15', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n (fbR! as any).tag = `${tag}FBR`;\r\n gc.checkAPI('4', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbR));\r\n gc.checkAPI('5', ()=>gl.framebufferRenderbuffer(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, rb!));\r\n\r\n let fbW = gc.checkAPI('15', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n (fbW! as any).tag = `${tag}FBW`;\r\n gc.checkAPI('6', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbW));\r\n gc.checkAPI('7', ()=>gl.framebufferRenderbuffer(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, rb!));\r\n\r\n return [rb!, fbR!, fbW!];\r\n }\r\n static allocatePage(gcFrom: GPUChecker, page: Page) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'allocatePage');\r\n const gl = gc.gl;\r\n\r\n let rbfbrfbw = gc.check('1', ()=>GPURunner.allocateRenderBuffer(gc, 'pageVisibleLatentC', gl.RGBA16UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];\r\n if (rbfbrfbw !== null) {\r\n page.buffVisibleLatentC = rbfbrfbw[0];\r\n page.visibleLatentCFramebufferR = rbfbrfbw[1];\r\n page.visibleLatentCFramebufferW = rbfbrfbw[2];\r\n }\r\n \r\n rbfbrfbw = gc.check('2', ()=>GPURunner.allocateRenderBuffer(gc, 'pageVisibleLatentM', gl.RGBA16UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];;\r\n if (rbfbrfbw !== null) {\r\n page.buffVisibleLatentM = rbfbrfbw[0];\r\n page.visibleLatentMFramebufferR = rbfbrfbw[1];\r\n page.visibleLatentMFramebufferW = rbfbrfbw[2];\r\n }\r\n\r\n rbfbrfbw = gc.check('3', ()=>GPURunner.allocateRenderBuffer(gc, 'pageDryLatentC', gl.RGBA16UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];;\r\n if (rbfbrfbw !== null) {\r\n page.buffDryLatentC = rbfbrfbw[0];\r\n page.dryLatentCFramebufferR = rbfbrfbw[1];\r\n page.dryLatentCFramebufferW = rbfbrfbw[2];\r\n }\r\n\r\n rbfbrfbw = gc.check('4', ()=>GPURunner.allocateRenderBuffer(gc, 'pageDryLatentM', gl.RGBA16UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];;\r\n if (rbfbrfbw !== null) {\r\n page.buffDryLatentM = rbfbrfbw[0];\r\n page.dryLatentMFramebufferR = rbfbrfbw[1];\r\n page.dryLatentMFramebufferW = rbfbrfbw[2];\r\n }\r\n\r\n rbfbrfbw = gc.check('5', ()=>GPURunner.allocateRenderBuffer(gc, 'pageWetLatentC', gl.RGBA16UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];;\r\n if (rbfbrfbw !== null) {\r\n page.buffWetLatentC = rbfbrfbw[0];\r\n page.wetLatentCFramebufferR = rbfbrfbw[1];\r\n page.wetLatentCFramebufferW = rbfbrfbw[2];\r\n }\r\n\r\n rbfbrfbw = gc.check('6', ()=>GPURunner.allocateRenderBuffer(gc, 'pageWetLatentM', gl.RGBA16UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];;\r\n if (rbfbrfbw !== null) {\r\n page.buffWetLatentM = rbfbrfbw[0];\r\n page.wetLatentMFramebufferR = rbfbrfbw[1];\r\n page.wetLatentMFramebufferW = rbfbrfbw[2];\r\n }\r\n\r\n rbfbrfbw = gc.check('7', ()=>GPURunner.allocateRenderBuffer(gc, 'pageWetDepth', gl.R16UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];;\r\n if (rbfbrfbw !== null) {\r\n page.buffWetDepth = rbfbrfbw[0];\r\n page.wetDepthFramebufferR = rbfbrfbw[1];\r\n page.wetDepthFramebufferW = rbfbrfbw[2];\r\n }\r\n\r\n rbfbrfbw = gc.check('8', ()=>GPURunner.allocateRenderBuffer(gc, 'pageDryDepth', gl.R16UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];;\r\n if (rbfbrfbw !== null) {\r\n page.buffDryDepth = rbfbrfbw[0];\r\n page.dryDepthFramebufferR = rbfbrfbw[1];\r\n page.dryDepthFramebufferW = rbfbrfbw[2];\r\n }\r\n\r\n rbfbrfbw = gc.check('9', ()=>GPURunner.allocateRenderBuffer(gc, 'pageWetAge', gl.R8UI, page.cellsWidth, page.cellsHeight)) as [WebGLRenderbuffer, WebGLFramebuffer, WebGLFramebuffer];;\r\n if (rbfbrfbw !== null) {\r\n page.buffWetAge = rbfbrfbw[0];\r\n page.wetAgeFramebufferR = rbfbrfbw[1];\r\n page.wetAgeFramebufferW = rbfbrfbw[2];\r\n }\r\n\r\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\r\n\r\n }\r\n\r\n static getCurrentViewport() : [number, number] {\r\n if (!GPURunner.gl || !GPURunner.gl.canvas) {\r\n throw new Error('GPU not initialized');\r\n }\r\n return [GPURunner.gl.canvas.width, GPURunner.gl.canvas.height];\r\n }\r\n\r\n static initChangeTexture(gcFrom: GPUChecker, tag: string, pageFrame: WebGLFramebuffer | null, internalFormat: GLint, format: GLenum, type: GLenum,\r\n readX0: number, readY0: number, readX1: number, readY1: number, writeX0: number, writeY0: number, writeX1: number, writeY1: number) : WorkingItem {\r\n let width = readX1 - readX0;\r\n let height = readY1 - readY0;\r\n\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initChangeTexture');\r\n const gl = gc.gl;\r\n \r\n let changeWI = gc.check('2', ()=>GPURunner.workingFrameFactory.getItem(gc, `${tag}FB`, width, height, [{tag:tag, internalFormat:internalFormat, format:format, type:type}])) as WorkingItem;\r\n\r\n if (pageFrame !== null) {\r\n gc.checkAPI('1', ()=> gl.bindFramebuffer(gl.READ_FRAMEBUFFER, pageFrame));\r\n }\r\n\r\n if (pageFrame !== null) {\r\n gc.checkAPI('4', ()=> gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, changeWI.fb));\r\n gc.checkAPI('6', ()=> gl.blitFramebuffer(readX0, readY0, readX1, readY1, writeX0, writeY0, writeX1, writeY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n }\r\n\r\n return changeWI;\r\n }\r\n\r\n static initPageChangeWetDepthTextureFromPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initPageChangeWetDepthTextureFromPage');\r\n const gl = gc.gl;\r\n\r\n let pageReadX0 = change.pageX;\r\n let changeWriteX0 = 0;\r\n let pageReadX1 = change.pageX + change.width;\r\n let changeWriteX1 = change.width;\r\n\r\n let pageReadY0 = change.pageY;\r\n let changeWriteY0 = change.height;\r\n let pageReadY1 = change.pageY + change.height;\r\n let changeWriteY1 = 0;\r\n\r\n if (change.pageY === 0 && change.pageX === 0 && change.width < page.cellsWidth && change.height < page.cellsHeight) {\r\n // because on pixel phones this causes someflip?\r\n pageReadY0 ++;\r\n pageReadY1 ++;\r\n changeWriteY0 --;\r\n changeWriteY1 --;\r\n }\r\n\r\n // set up the wet depth texture and copy from the page\r\n let changeBufs = gc.check('1', ()=>GPURunner.initChangeTexture(gc, 'pageWetDepthTexture', page.wetDepthFramebufferR!, gl.R16UI, gl.RED_INTEGER, gl.UNSIGNED_SHORT, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageWetDepthTexture = changeBufs.tex0;\r\n change.pageWetDepthFramebufferW = changeBufs.fb;\r\n\r\n changeBufs = gc.check('2', ()=>GPURunner.initChangeTexture(gc, 'pageDryDepthTexture', page.dryDepthFramebufferR!, gl.R16UI, gl.RED_INTEGER, gl.UNSIGNED_SHORT, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageDryDepthTexture = changeBufs.tex0;\r\n change.pageDryDepthFramebufferW = changeBufs.fb;\r\n\r\n \r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\r\n }\r\n static applyPageChangeWetDepthTextureToPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, ' applyPageChangeWetDepthTextureToPage');\r\n const gl = gc.gl;\r\n\r\n let changeReadX0 = 0;\r\n let pageWriteX0 = change.pageX;\r\n let changeReadX1 = change.width;\r\n let pageWriteX1 = change.pageX + change.width;\r\n\r\n let changeReadY0 = change.height;\r\n let pageWriteY0 = change.pageY;\r\n let changeReadY1 = 0;\r\n let pageWriteY1 = change.pageY + change.height;\r\n\r\n let fbRead = gl.createFramebuffer();\r\n gc.checkAPI('1', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.wetDepthFramebufferW));\r\n gc.checkAPI('2', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('3', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageWetDepthTexture, 0));\r\n gc.checkAPI('4', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('5', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.dryDepthFramebufferW));\r\n gc.checkAPI('6', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('7', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageDryDepthTexture, 0));\r\n gc.checkAPI('8', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gl.deleteFramebuffer(fbRead);\r\n\r\n }\r\n\r\n static initPageChangeWetLatentTextureFromPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initPageChangeWetLatentTextureFromPage');\r\n const gl = gc.gl;\r\n\r\n let pageReadX0 = change.pageX;\r\n let changeWriteX0 = 0;\r\n let pageReadX1 = change.pageX + change.width;\r\n let changeWriteX1 = change.width;\r\n\r\n let pageReadY0 = change.pageY;\r\n let changeWriteY0 = change.height;\r\n let pageReadY1 = change.pageY + change.height;\r\n let changeWriteY1 = 0;\r\n\r\n if (change.pageY === 0 && change.pageX === 0 && change.width < page.cellsWidth && change.height < page.cellsHeight) {\r\n // because on pixel phones this causes someflip?\r\n pageReadY0 ++;\r\n pageReadY1 ++;\r\n changeWriteY0 --;\r\n changeWriteY1 --;\r\n }\r\n \r\n // set up the wet color and depth textures and copy from the page\r\n let changeBufs = gc.check('1', ()=>GPURunner.initChangeTexture(gc, 'pageWetLatentCTexture', page.wetLatentCFramebufferR!, gl.RGBA16UI, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageWetLatentCTexture = changeBufs.tex0;\r\n change.pageWetLatentCFramebufferW = changeBufs.fb;\r\n\r\n changeBufs = gc.check('2', ()=>GPURunner.initChangeTexture(gc, 'pageWetLatentMTexture', page.wetLatentMFramebufferR!, gl.RGBA16UI, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageWetLatentMTexture = changeBufs.tex0;\r\n change.pageWetLatentMFramebufferW = changeBufs.fb;\r\n\r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\r\n }\r\n\r\n static applyPageChangeWetLatentTextureToPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'applyPageChangeWetLatentTextureToPage');\r\n const gl = gc.gl;\r\n\r\n let changeReadX0 = 0;\r\n let pageWriteX0 = change.pageX;\r\n let changeReadX1 = change.width;\r\n let pageWriteX1 = change.pageX + change.width;\r\n\r\n let changeReadY0 = change.height;\r\n let pageWriteY0 = change.pageY;\r\n let changeReadY1 = 0;\r\n let pageWriteY1 = change.pageY + change.height;\r\n\r\n gc.checkAPI('1', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.wetLatentCFramebufferW));\r\n if (GPUChecker.errorCode !== 0) {\r\n GPUChecker.errorText = 'why here'\r\n }\r\n let fbRead = gc.checkAPI('2', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n gc.checkAPI('3', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('4', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageWetLatentCTexture, 0));\r\n gc.checkAPI('5', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('6', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.wetLatentMFramebufferW));\r\n gc.checkAPI('7', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('8', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageWetLatentMTexture, 0));\r\n gc.checkAPI('9', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gl.deleteFramebuffer(fbRead);\r\n }\r\n\r\n static initPageChangeWetAgeTextureFromPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initPageChangeWetAgeTextureFromPage');\r\n const gl = gc.gl;\r\n\r\n let pageReadX0 = change.pageX;\r\n let changeWriteX0 = 0;\r\n let pageReadX1 = change.pageX + change.width;\r\n let changeWriteX1 = change.width;\r\n\r\n let pageReadY0 = change.pageY;\r\n let changeWriteY0 = change.height;\r\n let pageReadY1 = change.pageY + change.height;\r\n let changeWriteY1 = 0;\r\n\r\n if (change.pageY === 0 && change.pageX === 0 && change.width < page.cellsWidth && change.height < page.cellsHeight) {\r\n // because on pixel phones this causes someflip?\r\n pageReadY0 ++;\r\n pageReadY1 ++;\r\n changeWriteY0 --;\r\n changeWriteY1 --;\r\n }\r\n\r\n // setup the wet drying time mask\r\n let changeBufs = gc.check('1', ()=>GPURunner.initChangeTexture(gc, 'pageWetAgeTexture', page.wetAgeFramebufferR!, gl.R8UI, gl.RED_INTEGER, gl.UNSIGNED_BYTE, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageWetAgeTexture = changeBufs.tex0;\r\n change.pageWetAgeFramebufferW = changeBufs.fb;\r\n \r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\r\n }\r\n static applyPageChangeWetAgeTextureToPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'applyPageChangeWetAgeTextureToPage');\r\n const gl = gc.gl;\r\n\r\n let changeReadX0 = 0;\r\n let pageWriteX0 = change.pageX;\r\n let changeReadX1 = change.width;\r\n let pageWriteX1 = change.pageX + change.width;\r\n\r\n let changeReadY0 = change.height;\r\n let pageWriteY0 = change.pageY;\r\n let changeReadY1 = 0;\r\n let pageWriteY1 = change.pageY + change.height;\r\n\r\n let fbRead = gc.checkAPI('1', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n\r\n gc.checkAPI('2', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.wetAgeFramebufferW));\r\n gc.checkAPI('3', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('4', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageWetAgeTexture, 0));\r\n gc.checkAPI('5', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('6', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null));\r\n gc.checkAPI('7', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null));\r\n gc.checkAPI('8', ()=>gl.deleteFramebuffer(fbRead));\r\n\r\n }\r\n\r\n\r\n static initPageChangeVisibleLatentTextureFromPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initPageChangeVisibleLatentTextureFromPage');\r\n const gl = gc.gl;\r\n\r\n let pageReadX0 = change.pageX;\r\n let changeWriteX0 = 0;\r\n let pageReadX1 = change.pageX + change.width;\r\n let changeWriteX1 = change.width;\r\n\r\n let pageReadY0 = change.pageY;\r\n let changeWriteY0 = change.height;\r\n let pageReadY1 = change.pageY + change.height;\r\n let changeWriteY1 = 0;\r\n\r\n if (change.pageY === 0 && change.pageX === 0 && change.width < page.cellsWidth && change.height < page.cellsHeight) {\r\n // because on pixel phones this causes someflip?\r\n pageReadY0 ++;\r\n pageReadY1 ++;\r\n changeWriteY0 --;\r\n changeWriteY1 --;\r\n }\r\n // the visible color texture\r\n let changeBufs = gc.check('1', ()=>GPURunner.initChangeTexture(gc, 'pageVisibleLatentCTexture', page.visibleLatentCFramebufferR!, gl.RGBA16UI, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageVisibleLatentCTexture = changeBufs.tex0;\r\n change.pageVisibleLatentCFramebufferW = changeBufs.fb;\r\n\r\n changeBufs = gc.check('2', ()=>GPURunner.initChangeTexture(gc, 'pageVisibleLatentMTexture', page.visibleLatentMFramebufferR!, gl.RGBA16UI, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageVisibleLatentMTexture = changeBufs.tex0;\r\n change.pageVisibleLatentMFramebufferW = changeBufs.fb;\r\n\r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\r\n }\r\n static applyPageChangeVisibleLatentTextureToPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'applyPageChangeVisibleLatentTextureToPage');\r\n const gl = gc.gl;\r\n\r\n let changeReadX0 = 0;\r\n let pageWriteX0 = change.pageX;\r\n let changeReadX1 = change.width;\r\n let pageWriteX1 = change.pageX + change.width;\r\n\r\n let changeReadY0 = change.height;\r\n let pageWriteY0 = change.pageY;\r\n let changeReadY1 = 0;\r\n let pageWriteY1 = change.pageY + change.height;\r\n\r\n let fbRead = gc.checkAPI('0', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n\r\n gc.checkAPI('1', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.visibleLatentCFramebufferW));\r\n gc.checkAPI('2', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('3', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageVisibleLatentCTexture, 0));\r\n gc.checkAPI('4', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('5', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.visibleLatentMFramebufferW));\r\n gc.checkAPI('6', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('7', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageVisibleLatentMTexture, 0));\r\n gc.checkAPI('8', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\r\n gl.deleteFramebuffer(fbRead);\r\n\r\n }\r\n\r\n static initPageChangeDryLatentTextureFromPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initPageChangeDryLatentTextureFromPage');\r\n const gl = gc.gl;\r\n\r\n let pageReadX0 = change.pageX;\r\n let changeWriteX0 = 0;\r\n let pageReadX1 = change.pageX + change.width;\r\n let changeWriteX1 = change.width;\r\n\r\n let pageReadY0 = change.pageY;\r\n let changeWriteY0 = change.height;\r\n let pageReadY1 = change.pageY + change.height;\r\n let changeWriteY1 = 0;\r\n\r\n if (change.pageY === 0 && change.pageX === 0 && change.width < page.cellsWidth && change.height < page.cellsHeight) {\r\n // because on pixel phones this causes someflip?\r\n pageReadY0 ++;\r\n pageReadY1 ++;\r\n changeWriteY0 --;\r\n changeWriteY1 --;\r\n }\r\n\r\n // and the dry color texture\r\n let changeBufs = gc.check('1', ()=>GPURunner.initChangeTexture(gc, 'pageDryLatentCTexture', page.dryLatentCFramebufferR!, gl.RGBA16UI, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageDryLatentCTexture = changeBufs.tex0;\r\n change.pageDryLatentCFramebufferW = changeBufs.fb;\r\n\r\n changeBufs = gc.check('2', ()=>GPURunner.initChangeTexture(gc, 'pageDryLatentMTexture', page.dryLatentMFramebufferR!, gl.RGBA16UI, gl.RGBA_INTEGER, gl.UNSIGNED_SHORT, pageReadX0, pageReadY0, pageReadX1, pageReadY1, changeWriteX0, changeWriteY0, changeWriteX1, changeWriteY1)) as WorkingItem;\r\n change.pageDryLatentMTexture = changeBufs.tex0;\r\n change.pageDryLatentMFramebufferW = changeBufs.fb;\r\n\r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\r\n }\r\n\r\n static applyPageChangeDryLatentTextureToPage(gcFrom: GPUChecker, page: Page, change: PageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'applyPageChangeDryLatentTextureToPage');\r\n const gl = gc.gl;\r\n\r\n let changeReadX0 = 0;\r\n let pageWriteX0 = change.pageX;\r\n let changeReadX1 = change.width;\r\n let pageWriteX1 = change.pageX + change.width;\r\n\r\n let changeReadY0 = change.height;\r\n let pageWriteY0 = change.pageY;\r\n let changeReadY1 = 0;\r\n let pageWriteY1 = change.pageY + change.height;\r\n\r\n let fbRead = gc.checkAPI('0', ()=>gl.createFramebuffer(), true) as WebGLFramebuffer;\r\n\r\n gc.checkAPI('1', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.dryLatentCFramebufferW));\r\n gc.checkAPI('2', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('3', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageDryLatentCTexture, 0));\r\n gc.checkAPI('4', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gc.checkAPI('5', ()=>gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, page.dryLatentMFramebufferW));\r\n gc.checkAPI('6', ()=>gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbRead));\r\n gc.checkAPI('7', ()=>gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, change.pageDryLatentMTexture, 0));\r\n gc.checkAPI('8', ()=>gl.blitFramebuffer(changeReadX0, changeReadY0, changeReadX1, changeReadY1, pageWriteX0, pageWriteY0, pageWriteX1, pageWriteY1, gl.COLOR_BUFFER_BIT, gl.NEAREST));\r\n\r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\r\n gl.deleteFramebuffer(fbRead);\r\n\r\n }\r\n\r\n\r\n\r\n static initTouchWetPageChange(gcFrom: GPUChecker, page: Page, change: TouchPageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initTouchWetPageChange');\r\n const gl = gc.gl;\r\n gc.check('1', ()=>GPURunner.initPageChangeWetAgeTextureFromPage(gc, page, change));\r\n gc.check('2', ()=>GPURunner.initPageChangeWetLatentTextureFromPage(gc, page, change));\r\n gc.check('3', ()=>GPURunner.initPageChangeWetDepthTextureFromPage(gc, page, change));\r\n }\r\n\r\n static initTouchVisiblePageChange(gcFrom: GPUChecker, page: Page, change: TouchPageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initTouchVisiblePageChange');\r\n const gl = gc.gl;\r\n gc.check('1', ()=>GPURunner.initPageChangeDryLatentTextureFromPage(gc, page, change));\r\n gc.check('2', ()=>GPURunner.initPageChangeVisibleLatentTextureFromPage(gc, page, change));\r\n }\r\n\r\n\r\n static applyTouchWetPageChange(gcFrom: GPUChecker, page: Page, change: TouchPageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'applyTouchWetPageChange');\r\n const gl = gc.gl;\r\n gc.check('1', ()=>GPURunner.applyPageChangeWetLatentTextureToPage(gc, page, change));\r\n gc.check('2', ()=>GPURunner.applyPageChangeWetDepthTextureToPage(gc, page, change));\r\n }\r\n\r\n static applyTouchVisiblePageChange(gcFrom: GPUChecker, page: Page, change: TouchPageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'applyTouchVisiblePageChange');\r\n const gl = gc.gl;\r\n gc.check('1', ()=>GPURunner.applyPageChangeWetAgeTextureToPage(gc, page, change));\r\n gc.check('2', ()=>GPURunner.applyPageChangeVisibleLatentTextureToPage(gc, page, change));\r\n }\r\n\r\n static initDryPageChange(gcFrom: GPUChecker, page: Page, change: DryPageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initDryPageChange');\r\n const gl = gc.gl;\r\n gc.check('1', ()=>GPURunner.initPageChangeWetDepthTextureFromPage(gc, page, change));\r\n gc.check('2', ()=>GPURunner.initPageChangeVisibleLatentTextureFromPage(gc, page, change));\r\n gc.check('3', ()=>GPURunner.initPageChangeWetLatentTextureFromPage(gc, page, change));\r\n gc.check('4', ()=>GPURunner.initPageChangeDryLatentTextureFromPage(gc, page, change));\r\n gc.check('5', ()=>GPURunner.initPageChangeWetAgeTextureFromPage(gc, page, change));\r\n }\r\n\r\n static applyDryPageChange(gcFrom: GPUChecker, page: Page, change: DryPageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'applyDryPageChange');\r\n const gl = gc.gl;\r\n gc.check('1', ()=>GPURunner.applyPageChangeWetDepthTextureToPage(gc, page, change));\r\n gc.check('2', ()=>GPURunner.applyPageChangeWetAgeTextureToPage(gc, page, change));\r\n gc.check('3', ()=>GPURunner.applyPageChangeWetLatentTextureToPage(gc, page, change));\r\n gc.check('4', ()=>GPURunner.applyPageChangeDryLatentTextureToPage(gc, page, change));\r\n }\r\n\r\n static initRefreshPageChange(gcFrom: GPUChecker, page: Page, change: RefreshPageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initRefreshPageChange');\r\n const gl = gc.gl;\r\n gc.check('1', ()=>GPURunner.initPageChangeVisibleLatentTextureFromPage(gc, page, change));\r\n gc.check('2', ()=>GPURunner.initPageChangeWetDepthTextureFromPage(gc, page, change));\r\n gc.check('3', ()=>GPURunner.initPageChangeWetAgeTextureFromPage(gc, page, change));\r\n }\r\n\r\n static initSamplePageChange(gcFrom: GPUChecker, page: Page, change: TouchPageChange) {\r\n const gc = new GPUChecker(gcFrom.gl, gcFrom, 'initSamplePageChange');\r\n const gl = gc.gl;\r\n gc.check('1', ()=>GPURunner.initPageChangeWetDepthTextureFromPage(gc, page, change));\r\n gc.check('2', ()=>GPURunner.initPageChangeVisibleLatentTextureFromPage(gc, page, change));\r\n }\r\n\r\n static debugGPUGetBuffer(pageFB: WebGLFramebuffer, intoBuff: Uint16Array, internalFormat: GLint, format: GLenum, readX0: number, readY0: number, readX1: number, readY1: number) {\r\n let gl = GPURunner.gl!;\r\n const gc = new GPUChecker(gl, undefined, 'debug');\r\n\r\n let width = readX1 - readX0;\r\n let height = readY1 - readY0;\r\n let writeX0 = 0;\r\n let writeY0 = 0;\r\n let writeX1 = width;\r\n let writeY1 = height;\r\n // blit the wet depth buffer to a texture and then readpixels\r\n let changeBufs = GPURunner.initChangeTexture(gc, 'debug', pageFB!, internalFormat, format, gl.UNSIGNED_SHORT, readX0, readY0, readX1, readY1, writeX0, writeY0, writeX1, writeY1);\r\n let changeTexture = changeBufs.tex0;\r\n let fbTemp = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbTemp);\r\n gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, changeTexture, 0);\r\n gl.readPixels(0, 0, width, height, format, gl.UNSIGNED_SHORT, intoBuff);\r\n }\r\n\r\n static debugGPUGetDepth(page: Page, readX0: number, readY0: number, readX1: number, readY1: number): Uint16Array {\r\n let gl = GPURunner.gl!;\r\n let width = readX1 - readX0;\r\n let height = readY1 - readY0;\r\n let buf = new Uint16Array(width * height);\r\n GPURunner.debugGPUGetBuffer(page.wetDepthFramebufferR!, buf, gl.R16UI, gl.RED_INTEGER, readX0, readY0, readX1, readY1);\r\n return buf;\r\n }\r\n static debugGPUGetLatent(pageFB: WebGLFramebuffer, readX0: number, readY0: number, readX1: number, readY1: number): Uint16Array {\r\n let gl = GPURunner.gl!;\r\n let width = readX1 - readX0;\r\n let height = readY1 - readY0;\r\n let buf = new Uint16Array(width * height * 4);\r\n GPURunner.debugGPUGetBuffer(pageFB, buf, gl.RGBA16UI, gl.RGBA_INTEGER, readX0, readY0, readX1, readY1);\r\n return buf;\r\n }\r\n\r\n static clearPage(page: Page) {\r\n\r\n if (!GPURunner.gl) {\r\n throw new Error('GPU not initialized');\r\n }\r\n let gl = GPURunner.gl;\r\n\r\n const fb = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, fb);\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffVisibleLatentC!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint16Array([0, 0, 0, 65535])); // white is max C3 + a bit of missing rgb\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffVisibleLatentM!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint16Array([43000, 33000, 27000, 0]));\r\n \r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffDryLatentC!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint16Array([0, 0, 0, 65535]));\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffDryLatentM!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint16Array([43000, 33000, 27000, 0]));\r\n\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffWetLatentC!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint16Array([0,0,0,0]));\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffWetLatentM!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint16Array([0,0,0,1]));\r\n\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffWetDepth!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint16Array([0,0,0,0]));\r\n\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffDryDepth!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint16Array([0,0,0,0]));\r\n\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, page.buffWetAge!);\r\n gl.clearBufferuiv(gl.COLOR, 0, new Uint8Array([0,0,0,0]));\r\n\r\n gl.deleteFramebuffer(fb);\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n","import tinycolor from 'tinycolor2';\r\nimport {colorMixKM, Latent, latentFromLatentCM, latentToLatentC, latentToLatentM, latentToRgb, lerpLatent, rgbToLatent} from './kubelkaMonk';\r\nimport {BitVector, Point2D, SeededRandom} from './utils';\r\nimport {ChangeTextureSet, FingerTip, FlowCell, FlowCellMove, TipMotion, TipApplication, TipInstrument, TipAction} from './fingertip';\r\nimport { TouchPageChange } from './TouchPageChange';\r\nimport { GPUChecker, GPURunner } from './GPURunner';\r\nimport { CirclePageChange } from './circlePageChange';\r\nimport { SmearPageChange } from './smearPageChange';\r\nimport { DryPageChange } from './dryPageChange';\r\nimport { BlowPageChange } from './blowPageChange';\r\nimport { RefreshPageChange } from './refreshPageChange';\r\nimport { PageChangeEntry } from './PageChange';\r\nimport {App} from '../../App';\r\nimport { KnifePageChange } from './knifePageChange';\r\nimport { SamplePageChange } from './samplePageChange';\r\nimport { StampPageChange } from './stampPageChange';\r\nimport { memo } from 'react';\r\n\r\n\r\nexport enum CellKind {\r\n background = 0,\r\n corona = 1,\r\n meniscus = 2,\r\n smash = 3,\r\n dry = 5,\r\n knife = 6,\r\n scrape = 16,\r\n hidden = 32\r\n}\r\n\r\nexport interface DragStep {\r\n radius: number;\r\n smashRadius: number;\r\n location: Point2D;\r\n octantMove: number;\r\n}\r\n\r\n// the overall effect on page cells resulting from placing or dragging a finger tip on it\r\nexport class TipEffect {\r\n rectTL: Point2D = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\r\n rectBR: Point2D = new Point2D(-Number.MAX_SAFE_INTEGER, -Number.MAX_SAFE_INTEGER);\r\n cells: Array;\r\n steps: Array;\r\n changeEntries: Array;\r\n constructor() {\r\n this.steps = new Array();\r\n this.cells = new Array();\r\n this.changeEntries = new Array();\r\n }\r\n\r\n public isEmpty() : boolean {\r\n return this.cells.length === 0;\r\n }\r\n}\r\n\r\nclass PageTipPlacement {\r\n page: Page;\r\n tip: FingerTip;\r\n pageCenter: Point2D;\r\n pageTipCenter: Point2D;\r\n //tipApplication: TipApplication;\r\n pageBuffer: Uint8Array;\r\n setWetDry: boolean;\r\n constructor(page: Page, tip: FingerTip, tipPageCenter: Point2D, pageBuffer: Uint8Array, setWetDry: boolean) {\r\n this.page = page;\r\n this.tip = tip;\r\n this.pageCenter = new Point2D(page.cellsWidth / 2, page.cellsHeight / 2);\r\n this.pageTipCenter = tipPageCenter;\r\n this.pageBuffer = pageBuffer;\r\n this.setWetDry = setWetDry;\r\n }\r\n}\r\n\r\nexport type CrcOff = (CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D);\r\n\r\n// ###### \r\n// # # ## #### ###### \r\n// # # # # # # # \r\n// ###### # # # ##### \r\n// # ###### # ### # \r\n// # # # # # # \r\n// # # # #### ###### \r\nexport class Page {\r\n\r\n static renderScale = 1;\r\n\r\n static paintDepthScale = 4;\r\n static maxCoronaDepth = Math.round(256 * Page.paintDepthScale);\r\n static backgroundImplicitDepth = 1.5;\r\n static pixToScaleUnits(cPix: number):number {\r\n return Math.round(cPix );\r\n }\r\n static scaleUnitsToPix(u: number):number {\r\n return u * this.renderScale;\r\n }\r\n\r\n public static offDryRed = 0;\r\n public static offDryGreen = 1;\r\n public static offDryBlue = 2;\r\n public static offWetRed = 3;\r\n public static offWetGreen = 4;\r\n public static offWetBlue = 5;\r\n public static offDepthHigh = 6;\r\n public static offDepthLow = 7;\r\n public static offVisRed = 8;\r\n public static offVisGreen = 9;\r\n public static offVisBlue = 10;\r\n\r\n cellsWidth: number;\r\n cellsHeight: number;\r\n cellsTotal: number;\r\n\r\n cellData: Uint8Array // dried, wet, depth, visible\r\n cellDataBlade: Uint8Array\r\n cellDryApplied: Uint16Array | undefined;\r\n\r\n wetCanvasOffsets: Map;\r\n wetCanvasStage: number;\r\n wetCanvasStageMax: number;\r\n wetCanvasStageOffsets: Array>;\r\n\r\n rnd: SeededRandom\r\n dryTransmits: boolean = true;\r\n\r\n centralPull: ((d:number)=>number) | undefined;\r\n lastTipPlacement: PageTipPlacement | undefined;\r\n lastTipApplication: TipApplication | undefined;\r\n\r\n crcVisible: CanvasRenderingContext2D;\r\n\r\n buffVisibleLatentC: WebGLRenderbuffer | undefined;\r\n buffVisibleLatentM: WebGLRenderbuffer | undefined;\r\n visibleLatentCFramebufferR: WebGLFramebuffer | null = null;\r\n visibleLatentMFramebufferR: WebGLFramebuffer | null = null;\r\n visibleLatentCFramebufferW: WebGLFramebuffer | null = null;\r\n visibleLatentMFramebufferW: WebGLFramebuffer | null = null;\r\n buffWetDepth: WebGLRenderbuffer | undefined;\r\n wetDepthFramebufferR: WebGLFramebuffer | null = null;\r\n wetDepthFramebufferW: WebGLFramebuffer | null = null;\r\n buffDryDepth: WebGLRenderbuffer | undefined;\r\n dryDepthFramebufferR: WebGLFramebuffer | null = null;\r\n dryDepthFramebufferW: WebGLFramebuffer | null = null;\r\n buffWetAge: WebGLRenderbuffer | undefined;\r\n wetAgeFramebufferR: WebGLFramebuffer | null = null;\r\n wetAgeFramebufferW: WebGLFramebuffer | null = null;\r\n buffWetLatentC: WebGLRenderbuffer | undefined;\r\n buffWetLatentM: WebGLRenderbuffer | undefined;\r\n wetLatentCFramebufferR: WebGLFramebuffer | null = null;\r\n wetLatentMFramebufferR: WebGLFramebuffer | null = null;\r\n wetLatentCFramebufferW: WebGLFramebuffer | null = null;\r\n wetLatentMFramebufferW: WebGLFramebuffer | null = null;\r\n buffDryLatentC: WebGLRenderbuffer | undefined;\r\n buffDryLatentM: WebGLRenderbuffer | undefined;\r\n dryLatentCFramebufferR: WebGLFramebuffer | null = null;\r\n dryLatentMFramebufferR: WebGLFramebuffer | null = null;\r\n dryLatentCFramebufferW: WebGLFramebuffer | null = null;\r\n dryLatentMFramebufferW: WebGLFramebuffer | null = null;\r\n\r\n paintDries: boolean;\r\n exceptionHandler: (source: string, kind: string, code: string, exception: unknown)=>void;\r\n\r\n public static getOffscreenCrc(width: number, height: number, options: any) : CrcOff {\r\n if ((typeof OffscreenCanvas) !== 'undefined' && OffscreenCanvas !== undefined && OffscreenCanvas !== null) {\r\n let cvs = new OffscreenCanvas(width, height);\r\n return cvs.getContext(\"2d\", options)!;\r\n } else {\r\n let cvs = document.createElement('canvas');\r\n cvs.width = width;\r\n cvs.height = height;\r\n return cvs.getContext(\"2d\", options)! as CanvasRenderingContext2D;\r\n }\r\n }\r\n\r\n public static initializeGPU() {\r\n\r\n\r\n// let u_latentScale = 65535.0;\r\n// let u_maxC0 = 0.993;\r\n// let u_minC0 = 0.0;\r\n// let u_maxC1 = 0.991;\r\n// let u_minC1 = 0.0;\r\n// let u_maxC2 = 0.998;\r\n// let u_minC2 = 0.0;\r\n// let u_maxC3 = 1.0;\r\n// let u_minC3 = -0.0087;\r\n// let u_maxMRed = 0.19;\r\n// let u_minMRed = -0.31;\r\n// let u_maxMGreen = 0.38;\r\n// let u_minMGreen = -0.38;\r\n// let u_maxMBlue = 0.39;\r\n// let u_minMBlue = -0.24;\r\n// let minsL : Latent = {concentration0: u_minC0, concentration1: u_minC1, concentration2: u_minC2, concentration3: u_minC3, missingRed: u_minMRed, missingGreen: u_minMGreen, missingBlue: u_minMBlue};\r\n// let maxsL : Latent = {concentration0: u_maxC0, concentration1: u_maxC1, concentration2: u_maxC2, concentration3: u_maxC3, missingRed: u_maxMRed, missingGreen: u_maxMGreen, missingBlue: u_maxMBlue};\r\n// let minsC = latentToLatentC(minsL);\r\n// let maxsC = latentToLatentC(maxsL);\r\n// let minsM = latentToLatentM(minsL);\r\n// let maxsM = latentToLatentM(maxsL);\r\n// let tryL: Latent = {concentration0: 0.0, concentration1: 0.0, concentration2: 0.0, concentration3: 0.0, missingRed: 0.0, missingGreen: 0.0, missingBlue: 0.0};\r\n// let tryC = latentToLatentC(tryL);\r\n// let tryM = latentToLatentM(tryL);\r\n\r\n// let fPrec = 131072;\r\n\r\n// for (let t=minsC[0]; t {\r\n // let c = (l as any)[member];\r\n // latentToRgb(l, stableRgb, 0);\r\n\r\n // testRgb[0] = stableRgb[0];\r\n // testRgb[1] = stableRgb[1];\r\n // testRgb[2] = stableRgb[2];\r\n // let ic = c;\r\n // while (testRgb[0] === stableRgb[0] && testRgb[1] === stableRgb[1] && testRgb[2] === stableRgb[2]) {\r\n // c += .000001;\r\n // (l as any)[member] = c;\r\n // latentToRgb(l, testRgb, 0);\r\n // }\r\n // return c - ic;\r\n // }\r\n\r\n // for (let r = 5; r < 250; r++) {\r\n // currentRgb[0] = r;\r\n // for (let g = 5; g < 250; g++) {\r\n // currentRgb[1] = g;\r\n // for (let b = 5; b < 250; b++) {\r\n // currentRgb[2] = b;\r\n // let currentLatent = rgbToLatent(currentRgb, 0);\r\n // let c0Gap = gapToChange(currentLatent, 'concentration0');\r\n // let c1Gap = gapToChange(currentLatent, 'concentration1');\r\n // let c2Gap = gapToChange(currentLatent, 'concentration2');\r\n // let c3Gap = gapToChange(currentLatent, 'concentration3');\r\n // // let mRedGap = gapToChange(currentLatent, 'missingRed');\r\n // // let mGreenGap = gapToChange(currentLatent, 'missingGreen');\r\n // // let mBlueGap = gapToChange(currentLatent, 'missingBlue');\r\n // if (c0Gap !== 0 && c0Gap < minC0Gap) {\r\n // minC0Gap = c0Gap;\r\n // }\r\n // if (c1Gap !== 0 && c1Gap < minC1Gap) {\r\n // minC1Gap = c1Gap;\r\n // }\r\n // if (c2Gap !== 0 && c2Gap < minC2Gap) {\r\n // minC2Gap = c2Gap;\r\n // }\r\n // if (c3Gap !== 0 && c3Gap < minC3Gap) {\r\n // minC3Gap = c3Gap;\r\n // }\r\n // // if (mRedGap !== 0 && mRedGap < minMRedGap) {\r\n // // minMRedGap = mRedGap;\r\n // // }\r\n // // if (mGreenGap !== 0 && mGreenGap < minMGreenGap) {\r\n // // minMGreenGap = mGreenGap;\r\n // // }\r\n // // if (mBlueGap !== 0 && mBlueGap < minMBlueGap) {\r\n // // minMBlueGap = mBlueGap;\r\n // //}\r\n\r\n \r\n \r\n // }\r\n // }\r\n // }\r\n // console.log(`maxC0Gap: ${minC0Gap}, maxC1Gap: ${minC1Gap}, maxC2Gap: ${minC2Gap}, maxC3Gap: ${minC3Gap}, maxMRedGap: ${minMRedGap}, maxMGreenGap: ${minMGreenGap}, maxMBlueGap: ${minMBlueGap}`);\r\n \r\n // let yelRgb = new Uint8Array([253, 199, 12]);\r\n\r\n // let whiteLatent = rgbToLatent(whiteRgb,0);\r\n // let yelLatent = rgbToLatent(yelRgb,0);\r\n // let blendLatent = rgbToLatent(yelRgb,0);\r\n\r\n // let whiteC = latentToLatentC(whiteLatent);\r\n // let whiteM = latentToLatentM(whiteLatent);\r\n // let whiteLatentInt = latentFromLatentCM(whiteC, whiteM);\r\n // let yelC = latentToLatentC(yelLatent);\r\n // let yelM = latentToLatentM(yelLatent);\r\n // let blendC = latentToLatentC(blendLatent);\r\n // let blendM = latentToLatentM(blendLatent);\r\n\r\n // let blendRgb = new Uint8Array([0, 0, 0]);\r\n // let blendRgbInt = new Uint8Array([0, 0, 0]);\r\n // let lastDriftR = 0;\r\n // let lastDriftG = 0;\r\n // let lastDriftB = 0;\r\n\r\n \r\n\r\n //console.log('GPU init');\r\n\r\n // let whiteRgb = new Uint8Array([255, 255, 255]);\r\n // let yelRgb = new Uint8Array([253, 199, 12]);\r\n\r\n // let whiteLatent = rgbToLatent(whiteRgb,0);\r\n // let yelLatent = rgbToLatent(yelRgb,0);\r\n // let blendLatent = rgbToLatent(yelRgb,0);\r\n\r\n // let whiteC = latentToLatentC(whiteLatent);\r\n // let whiteM = latentToLatentM(whiteLatent);\r\n // let whiteLatentInt = latentFromLatentCM(whiteC, whiteM);\r\n // let yelC = latentToLatentC(yelLatent);\r\n // let yelM = latentToLatentM(yelLatent);\r\n // let blendC = latentToLatentC(blendLatent);\r\n // let blendM = latentToLatentM(blendLatent);\r\n\r\n // let blendRgb = new Uint8Array([0, 0, 0]);\r\n // let blendRgbInt = new Uint8Array([0, 0, 0]);\r\n // let lastDriftR = 0;\r\n // let lastDriftG = 0;\r\n // let lastDriftB = 0;\r\n\r\n // let yelVol = 10;\r\n // let whiteVol = 20;\r\n // let totalVol = yelVol;\r\n\r\n // for (let rep = 0; rep<4000;rep++) {\r\n // totalVol += whiteVol;\r\n // if (totalVol > 30000) {\r\n // totalVol = 30000;\r\n // }\r\n // if (rep === 443) {\r\n // console.log('rep', rep);\r\n\r\n // }\r\n\r\n // let blendWeight = whiteVol / totalVol;\r\n\r\n // blendLatent = lerpLatent(blendLatent, whiteLatent, blendWeight);\r\n\r\n // let blendLatentInt = latentFromLatentCM(blendC, blendM);\r\n // blendLatentInt = lerpLatent(blendLatentInt, whiteLatentInt, blendWeight);\r\n\r\n // latentToRgb(blendLatent, blendRgb, 0);\r\n // latentToRgb(blendLatentInt, blendRgbInt, 0);\r\n\r\n // let driftR = blendRgb[0] - blendRgbInt[0];\r\n // let driftG = blendRgb[1] - blendRgbInt[1];\r\n // let driftB = blendRgb[2] - blendRgbInt[2];\r\n\r\n // if (driftR !== lastDriftR || driftG !== lastDriftG || driftB !== lastDriftB) {\r\n // console.log('rep', rep);\r\n // if (driftR === 0 && driftG === 0 && driftB === 0) {\r\n // console.log('fixed');\r\n // } else {\r\n // console.log('blendRgb', blendRgb);\r\n // console.log('blendRgbInt', blendRgbInt);\r\n // }\r\n // lastDriftR = driftR;\r\n // lastDriftG = driftG;\r\n // lastDriftB = driftB;\r\n // }\r\n\r\n\r\n // blendC = latentToLatentC(blendLatentInt);\r\n // blendM = latentToLatentM(blendLatentInt);\r\n\r\n\r\n // //blendLatent = rgbToLatent(blendRgb, 0 );\r\n\r\n\r\n\r\n // }\r\n // latentToRgb(blendLatent, blendRgb, 0);\r\n\r\n\r\n // let whiteRgb = new Uint8Array([255, 255, 255]);\r\n // let whiteLatent = rgbToLatent(whiteRgb,0);\r\n\r\n // let rgb = new Uint8Array([0, 0, 0]);\r\n // let blendLatent = {concentration0 : 0, concentration1 : 0, concentration2 : 0, concentration3 : 0, missingRed: 0, missingGreen: 0, missingBlue: 0} as Latent;\r\n // let alpha5 = ()=> {\r\n // let lat = rgbToLatent(rgb, 0);\r\n // console.log(`${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${lat.concentration0}, ${lat.concentration1}, ${lat.concentration2}, ${lat.concentration3}, ${lat.missingRed}, ${lat.missingGreen}, ${lat.missingBlue}, ${blendLatent.concentration0}, ${blendLatent.concentration1}, ${blendLatent.concentration2}, ${blendLatent.concentration3}, ${blendLatent.missingRed}, ${blendLatent.missingGreen}, ${blendLatent.missingBlue}`);\r\n \r\n // let blendWeight = 3 / 100;\r\n // blendLatent = lerpLatent(lat, whiteLatent, blendWeight);\r\n\r\n // let rd = rgb[0];\r\n // let gd = rgb[1];\r\n // let bd = rgb[2];\r\n // let ad = .95;\r\n // rd = Math.floor(rd * ad + (1-ad) * 255);\r\n // gd = Math.floor(gd * ad + (1-ad) * 255);\r\n // bd = Math.floor(bd * ad + (1-ad) * 255);\r\n // if (rd*gd*bd === 1) {\r\n // rd=gd=bd=0;\r\n // }\r\n // rgb[0] = rd;\r\n // rgb[1] = gd;\r\n // rgb[2] = bd;\r\n // }\r\n\r\n // for (let i = 0; i < 10; i++ ) {\r\n // alpha5();\r\n // }\r\n\r\n // rgb = new Uint8Array([255, 0, 0]);\r\n // blendLatent = {concentration0 : 0, concentration1 : 0, concentration2 : 0, concentration3 : 0, missingRed: 0, missingGreen: 0, missingBlue: 0} as Latent;\r\n // for (let i = 0; i < 10; i++ ) {\r\n // alpha5();\r\n // }\r\n\r\n // rgb = new Uint8Array([0, 255, 0]);\r\n // blendLatent = {concentration0 : 0, concentration1 : 0, concentration2 : 0, concentration3 : 0, missingRed: 0, missingGreen: 0, missingBlue: 0} as Latent;\r\n // for (let i = 0; i < 10; i++ ) {\r\n // alpha5();\r\n // }\r\n // rgb = new Uint8Array([0, 0, 255]);\r\n // blendLatent = {concentration0 : 0, concentration1 : 0, concentration2 : 0, concentration3 : 0, missingRed: 0, missingGreen: 0, missingBlue: 0} as Latent;\r\n // for (let i = 0; i < 10; i++ ) {\r\n // alpha5();\r\n // }\r\n // rgb = new Uint8Array([128, 128, 128]);\r\n // blendLatent = {concentration0 : 0, concentration1 : 0, concentration2 : 0, concentration3 : 0, missingRed: 0, missingGreen: 0, missingBlue: 0} as Latent;\r\n // for (let i = 0; i < 10; i++ ) {\r\n // alpha5();\r\n // }\r\n // rgb = new Uint8Array([200, 100, 0]);\r\n // blendLatent = {concentration0 : 0, concentration1 : 0, concentration2 : 0, concentration3 : 0, missingRed: 0, missingGreen: 0, missingBlue: 0} as Latent;\r\n // for (let i = 0; i < 10; i++ ) {\r\n // alpha5();\r\n // }\r\n // rgb = new Uint8Array([20, 200, 100]);\r\n // blendLatent = {concentration0 : 0, concentration1 : 0, concentration2 : 0, concentration3 : 0, missingRed: 0, missingGreen: 0, missingBlue: 0} as Latent;\r\n // for (let i = 0; i < 10; i++ ) {\r\n // alpha5();\r\n // }\r\n // rgb = new Uint8Array([100, 20, 200]);\r\n // blendLatent = {concentration0 : 0, concentration1 : 0, concentration2 : 0, concentration3 : 0, missingRed: 0, missingGreen: 0, missingBlue: 0} as Latent;\r\n // for (let i = 0; i < 10; i++ ) {\r\n // alpha5();\r\n // }\r\n\r\n\r\n\r\n\r\n GPURunner.initializeGPU((radius: number,application: TipApplication) : ChangeTextureSet=>{\r\n if (application.instrument === TipInstrument.finger && (application.motion === TipMotion.press || application.motion === TipMotion.lift)) {\r\n return FingerTip.makeCircleChangeTextureSet(radius);\r\n } else if (application.instrument === TipInstrument.finger && application.motion === TipMotion.drag) {\r\n return FingerTip.makeSmearChangeTextureSet(radius);\r\n } else if (application.instrument === TipInstrument.blow) {\r\n \r\n } else if (application.instrument === TipInstrument.knife) {\r\n return FingerTip.makeKnifeChangeTextureSet();\r\n }\r\n\r\n return {} as ChangeTextureSet;\r\n\r\n });\r\n \r\n }\r\n\r\n constructor(cx: number, cy: number, crcVisible: CanvasRenderingContext2D, exceptionHandler: (source: string, kind: string, code: string, exception: unknown)=>void, centralPull: ((d:number)=>number) | undefined, rnd: SeededRandom, dryTransmits: boolean, paintDries: boolean) {\r\n this.exceptionHandler = exceptionHandler;\r\n this.cellsWidth = cx;\r\n this.cellsHeight = cy;\r\n this.cellsTotal = this.cellsWidth * this.cellsHeight;\r\n this.cellData = new Uint8Array(this.cellsTotal * (3 + 3 + 2 + 3));\r\n this.cellDataBlade = new Uint8Array(3 * FingerTip.cellsWidth * (3 + 3 + 2 + 3));\r\n this.rnd = rnd;\r\n this.centralPull = centralPull;\r\n this.wetCanvasOffsets = new Map();\r\n this.wetCanvasStage = 0;\r\n this.wetCanvasStageMax = 7;\r\n this.wetCanvasStageOffsets = new Array>(this.wetCanvasStageMax);\r\n for (let i = 0; i < this.wetCanvasStageMax; i++) {\r\n this.wetCanvasStageOffsets[i] = new Set();\r\n }\r\n this.dryTransmits = dryTransmits;\r\n\r\n this.crcVisible = crcVisible;\r\n this.paintDries = paintDries;\r\n if (App.useGPU) {\r\n const gc = GPURunner.newChecker('newpage');\r\n GPURunner.allocatePage(gc, this);\r\n if (GPUChecker.errorCode !== 0) {\r\n this.exceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n }\r\n }\r\n\r\n }\r\n\r\n public clear(onClear: undefined | ((crc: CanvasRenderingContext2D)=>void), centralPull: ((d:number)=>number) | undefined, rnd: SeededRandom, blendDried: boolean) {\r\n let width = this.crcVisible.canvas.width;\r\n let height = this.crcVisible.canvas.height;\r\n\r\n this.crcVisible.fillStyle = 'white';\r\n this.crcVisible.fillRect(0, 0, width, height);\r\n if (App.useGPU) {\r\n GPURunner.clearPage(this);\r\n }\r\n \r\n // dried, wet, depth, visible\r\n let clearData = [255,255,255,1,1,1,0,0,255,255,255];\r\n for (let c = 0; c < this.cellsTotal; c++) {\r\n let off = c * 11;\r\n this.cellData.set(clearData, off);\r\n }\r\n \r\n if (onClear !== undefined) {\r\n onClear(this.crcVisible);\r\n }\r\n }\r\n \r\n public offsetOfCoordinates(pt: Point2D): number {\r\n if (pt.x < 0 || pt.y < 0 || pt.x > this.cellsWidth-1 || pt.y > this.cellsHeight-1) {\r\n return -1;\r\n }\r\n return this.cellsWidth * pt.y + pt.x;\r\n }\r\n public coordinatesOfOffset(offset: number): Point2D {\r\n let x = offset % this.cellsWidth;\r\n let y = Math.floor(offset / this.cellsWidth);\r\n return new Point2D(x, y);\r\n }\r\n\r\n public wetColorAtOffset(offset: number) : tinycolor.ColorFormats.RGB {\r\n let rOff = offset * 11 + 3;\r\n // dried, wet, depth, visible\r\n let r = this.cellData[rOff];\r\n let g = this.cellData[rOff + 1];\r\n let b = this.cellData[rOff + 2];\r\n\r\n return {r: r, g: g, b: b};\r\n }\r\n public visibleColorAtOffset(offset: number) : tinycolor.ColorFormats.RGB {\r\n let rOff = offset * 11 + 8;\r\n // dried, wet, depth, visible\r\n let r = this.cellData[rOff];\r\n let g = this.cellData[rOff + 1];\r\n let b = this.cellData[rOff + 2];\r\n return {r: r, g: g, b: b};\r\n }\r\n\r\n public getWetDepthAtOffset(c: number) : number {\r\n let off = c * 11;\r\n let d = (this.cellData[off + 6] << 8) | this.cellData[off + 7];\r\n return d;\r\n }\r\n\r\n public setWetDepthAtOffset(c: number, d: number) {\r\n let off = c * 11;\r\n this.cellData[off + 6] = d >> 8;\r\n this.cellData[off + 7] = d & 0xff;\r\n }\r\n\r\n\r\n public tipCoordinatesToPageCoordinates(ptTip: Point2D, ptCenter: Point2D) : Point2D{\r\n return new Point2D(ptTip.x + ptCenter.x - FingerTip.cellsWidth/2, ptTip.y + ptCenter.y - FingerTip.cellsWidth/2);\r\n }\r\n\r\n private getChangeDimensions(minX: number, maxX: number, minY: number, maxY: number): {minX: number, minY:number, width:number, height: number} | undefined {\r\n let pageWidth = this.cellsWidth;\r\n let pageHeight = this.cellsHeight;\r\n let lastChangeDims = GPURunner.getCurrentViewport();\r\n let lastWidth = lastChangeDims[0];\r\n let lastHeight = lastChangeDims[1];\r\n //minX -= 6;\r\n //minY -= 16;\r\n let width = maxX - minX + 1;\r\n let height = maxY - minY + 1;\r\n let addWidth = 0;\r\n let addHeight = 0;\r\n if (width > pageWidth) {\r\n width = pageWidth;\r\n minX = 0;\r\n maxX = pageWidth - 1;\r\n }\r\n if (height > pageHeight) {\r\n height = pageHeight;\r\n minY = 0;\r\n maxY = pageHeight - 1;\r\n }\r\n\r\n // use the last change area if it isn't too small or too large\r\n if (lastWidth <= pageWidth && lastHeight <= pageHeight) {\r\n if (width <= lastWidth && height <= lastHeight) {\r\n if (width >= lastWidth/2 && height >= lastHeight/2) {\r\n addWidth = lastWidth - width;\r\n addHeight = lastHeight - height;\r\n }\r\n }\r\n }\r\n if (addWidth === 0 && addHeight === 0) {\r\n let align = 16;\r\n addWidth = width % align;\r\n addHeight = height % align;\r\n addHeight = addHeight > 0 ? align-addHeight : addHeight;\r\n addWidth = addWidth > 0 ? align-addWidth : addWidth;\r\n }\r\n //addWidth += 8;\r\n if (width + addWidth <= pageWidth) {\r\n width += addWidth;\r\n minX -= Math.floor(addWidth / 2);\r\n maxX += Math.ceil(addWidth / 2);\r\n }\r\n if (height + addHeight <= pageHeight) {\r\n height += addHeight;\r\n minY -= Math.floor(addHeight / 2);\r\n maxY += Math.ceil(addHeight / 2);\r\n }\r\n if (minX < 0) {\r\n maxX += -minX;\r\n minX = 0;\r\n }\r\n if (minY < 0) {\r\n maxY += -minY;\r\n minY = 0;\r\n }\r\n if (maxX > pageWidth - 1) {\r\n minX -= maxX - (pageWidth - 1);\r\n maxX = pageWidth - 1;\r\n }\r\n if (maxY > pageHeight - 1) {\r\n minY -= maxY - (pageHeight - 1);\r\n maxY = pageHeight - 1;\r\n }\r\n if (minX < 0 || minY < 0) {\r\n throw new Error('PageChange area out of bounds');\r\n }\r\n\r\n if (width <= 0 || height <= 0) {\r\n return undefined;\r\n }\r\n return {minX, minY, width, height};\r\n\r\n }\r\n\r\n\r\n public createTouchPageChange(tipsAndLocations: Array, tipApplication: TipApplication, setWetDry: boolean, paintRadius: number) : TouchPageChange | undefined {\r\n //console.time('createPageChange');\r\n // get bounds of all tips\r\n let minX = Number.MAX_SAFE_INTEGER;\r\n let minY = Number.MAX_SAFE_INTEGER;\r\n let maxX = -Number.MAX_SAFE_INTEGER;\r\n let maxY = -Number.MAX_SAFE_INTEGER;\r\n \r\n for (const entry of tipsAndLocations) {\r\n let entryMinX: number;\r\n let entryMaxX: number;\r\n let entryMinY: number;\r\n let entryMaxY: number;\r\n if ((entry.shape as any)['effectRadius'] !== undefined) {\r\n let shape = entry.shape as FingerTip;\r\n entryMinX = entry.location.x - shape.effectRadius;\r\n entryMaxX = entry.location.x + shape.effectRadius;\r\n entryMinY = entry.location.y - shape.effectRadius;\r\n entryMaxY = entry.location.y + shape.effectRadius;\r\n } else {\r\n let shape = entry.shape as {dx: number, dy: number};\r\n entryMinX = entry.location.x;\r\n entryMaxX = entry.location.x + shape.dx;;\r\n entryMinY = entry.location.y;\r\n entryMaxY = entry.location.y + shape.dy;\r\n }\r\n minX = Math.max(0, Math.min(minX, entryMinX));\r\n minY = Math.max(0, Math.min(minY, entryMinY));\r\n maxX = Math.min(this.cellsWidth - 1, Math.max(maxX, entryMaxX));\r\n maxY = Math.min(this.cellsHeight - 1, Math.max(maxY, entryMaxY));\r\n }\r\n let changeDims = this.getChangeDimensions(minX, maxX, minY, maxY);\r\n if (changeDims === undefined) {\r\n return undefined;\r\n }\r\n minX = changeDims.minX;\r\n minY = changeDims.minY;\r\n let width = changeDims.width;\r\n let height = changeDims.height;\r\n\r\n // make the tip changes relative to the change area\r\n let tipChanges = new Array();\r\n for (const entry of tipsAndLocations) {\r\n let relCenter = new Point2D(entry.location.x - minX, entry.location.y - minY);\r\n tipChanges.push({shape:entry.shape, location: relCenter, modifier: entry.modifier});\r\n }\r\n\r\n let change : TouchPageChange;\r\n\r\n if (tipApplication.instrument === TipInstrument.knife) {\r\n change = new KnifePageChange(this, minX, minY, width, height, tipChanges, tipApplication, this.dryTransmits, paintRadius, this.centralPull);\r\n } else if (tipApplication.instrument === TipInstrument.blow) {\r\n change = new BlowPageChange(this, minX, minY, width, height, tipChanges, tipApplication, this.dryTransmits, this.centralPull);\r\n } else if (tipApplication.instrument === TipInstrument.finger) {\r\n if (tipApplication.motion === TipMotion.drag) {\r\n change = new SmearPageChange(this, minX, minY, width, height, tipChanges, tipApplication, this.dryTransmits, this.centralPull);\r\n } else if (tipApplication.motion === TipMotion.press || tipApplication.motion === TipMotion.lift) {\r\n change = new CirclePageChange(this, minX, minY, width, height, tipChanges, tipApplication, this.dryTransmits, this.centralPull);\r\n }\r\n } else if (tipApplication.instrument === TipInstrument.eyeDropper) {\r\n change = new SamplePageChange(this, minX, minY, width, height, tipChanges, tipApplication);\r\n } else if (tipApplication.instrument === TipInstrument.stamp) {\r\n change = new StampPageChange(this, minX, minY, width, height, tipChanges, this.dryTransmits);\r\n }\r\n\r\n //console.timeEnd('createPageChange');\r\n return change!;\r\n }\r\n\r\n public applyTouchPageChange(pageChange: TouchPageChange) {\r\n let width = pageChange.width;\r\n let height = pageChange.height;\r\n let pageX = pageChange.pageX;\r\n let pageY = pageChange.pageY;\r\n\r\n pageChange.finalize();\r\n\r\n }\r\n\r\n public debugGPUGetDepth(readX0: number, readY0: number, readX1: number, readY1: number) : Uint16Array {\r\n\r\n return GPURunner.debugGPUGetDepth(this, readX0, readY0, readX1, readY1);\r\n }\r\n \r\n collectTipCellData(tipCoordinatesToBufferOffset: (ptTip: Point2D, adj: number)=>number) {\r\n let pageLoc = this.lastTipPlacement!.pageTipCenter;\r\n let tip = this.lastTipPlacement!.tip;\r\n let pageMinX = pageLoc.x + (tip.minX - FingerTip.cellsWidth/2);\r\n let pageMaxX = pageLoc.x + (tip.maxX - FingerTip.cellsWidth/2);\r\n let pageMinY = pageLoc.y + (tip.minY - FingerTip.cellsWidth/2);\r\n let pageMaxY = pageLoc.y + (tip.maxY - FingerTip.cellsWidth/2);\r\n\r\n pageMinX = Math.max(0, pageMinX);\r\n pageMinY = Math.max(0, pageMinY);\r\n pageMaxX = Math.min(this.cellsWidth-1, pageMaxX);\r\n pageMaxY = Math.min(this.cellsHeight-1, pageMaxY);\r\n\r\n let tipMinX = FingerTip.cellsWidth/2 - (pageLoc.x - pageMinX);\r\n let tipMinY = FingerTip.cellsWidth/2 - (pageLoc.y - pageMinY);\r\n let tipMaxX = FingerTip.cellsWidth/2 + (pageMaxX - pageLoc.x);\r\n let tipMaxY = FingerTip.cellsWidth/2 + (pageMaxY - pageLoc.y);\r\n for (let y = 0; y < tip.cellDataRows!.length; y++) {\r\n let row = tip.cellDataRows![y];\r\n\r\n row.lengthModified = 0;\r\n row.printRelativeModifiedStart = -1;\r\n if (row.row >= tipMinY && row.row <= tipMaxY) {\r\n let ptTip = new Point2D(row.firstCell, row.row);\r\n let adj = 0;\r\n if (ptTip.x < tipMinX) {\r\n adj = (tipMinX - ptTip.x);\r\n ptTip.x = tipMinX;\r\n }\r\n row.pageRelativeStart = tipCoordinatesToBufferOffset(ptTip, adj);\r\n\r\n let rowMinX = Math.max(tipMinX, row.firstCell);\r\n let rowMaxX = Math.min(tipMaxX, row.firstCell + (row.length / 11) - 1);\r\n let copyLength = (rowMaxX - rowMinX + 1) * 11;\r\n let copyTo = row.printRelativeStart + (rowMinX - row.firstCell) * 11;\r\n let copyFrom = row.pageRelativeStart + (rowMinX - row.firstCell) * 11;\r\n\r\n if (copyLength > 0) {\r\n let v = new Uint8Array(this.lastTipPlacement!.pageBuffer.buffer, copyFrom, copyLength);\r\n tip.allCellData!.set(v, copyTo);\r\n }\r\n }\r\n }\r\n\r\n // get the state of the page before the drag put into every source or dest cell in the print\r\n for (const fCell of tip.allFlowCells) {\r\n fCell.inBounds = fCell.ptOnPrint.x >= tipMinX && fCell.ptOnPrint.x <= tipMaxX && fCell.ptOnPrint.y >= tipMinY && fCell.ptOnPrint.y <= tipMaxY;\r\n // and the offset into storage arrays\r\n if (fCell.inBounds) {\r\n fCell.stagedDepth = fCell.finalDepth = (fCell.dvTipCells[Page.offDepthHigh]<<8) | fCell.dvTipCells[Page.offDepthLow];\r\n if (fCell.finalDepth <= 0) {\r\n fCell.dvTipCells[Page.offWetRed] = fCell.dvTipCells[Page.offWetGreen] = fCell.dvTipCells[Page.offWetBlue] = 1;\r\n } \r\n } else {\r\n fCell.dvTipCells[Page.offDryRed] = fCell.dvTipCells[Page.offDryGreen] = fCell.dvTipCells[Page.offDryBlue] = 1;\r\n fCell.dvTipCells[Page.offWetRed] = fCell.dvTipCells[Page.offWetGreen] = fCell.dvTipCells[Page.offWetBlue] = 1;\r\n fCell.dvTipCells[Page.offDepthHigh] = fCell.dvTipCells[Page.offDepthLow] = 0;\r\n }\r\n \r\n if (fCell.move1 !== undefined) {\r\n fCell.move1.removedDepth = 0;\r\n }\r\n if (fCell.move2 !== undefined) {\r\n fCell.move2.removedDepth = 0;\r\n }\r\n if (fCell.move3 !== undefined) {\r\n fCell.move3.removedDepth = 0;\r\n }\r\n if (fCell.move4 !== undefined) {\r\n fCell.move4.removedDepth = 0;\r\n }\r\n if (fCell.move5 !== undefined) {\r\n fCell.move5.removedDepth = 0;\r\n }\r\n \r\n fCell.modified = false;\r\n\r\n }\r\n }\r\n\r\n writeTipCellData(kindCells: Set) {\r\n let maxDepth = 0xffff;\r\n let tip = this.lastTipPlacement!.tip;\r\n // send the final depth and color to the page and cell kind map\r\n let setWetDry = this.lastTipPlacement!.setWetDry\r\n for (const fCell of tip.allFlowCells) {\r\n if (fCell.modified && fCell.inBounds && fCell.finalKind !== CellKind.background) {\r\n if (fCell.finalDepth > maxDepth) {\r\n fCell.finalDepth = maxDepth;\r\n }\r\n fCell.dvTipCells[Page.offDepthHigh] = fCell.finalDepth >> 8\r\n fCell.dvTipCells[Page.offDepthLow] = fCell.finalDepth & 0xff;\r\n let row = tip.cellDataRows![fCell.ptOnPrint.y - tip.minY];\r\n let copyTo = row.printRelativeStart + (fCell.ptOnPrint.x - row.firstCell) * 11;\r\n if (row.printRelativeModifiedStart === -1) {\r\n row.printRelativeModifiedStart = copyTo;\r\n row.lengthModified = 11;\r\n } else {\r\n if (copyTo < row.printRelativeModifiedStart) {\r\n row.lengthModified += row.printRelativeModifiedStart - copyTo;\r\n row.printRelativeModifiedStart = copyTo;\r\n } else {\r\n row.lengthModified = Math.max(row.lengthModified, copyTo + 11 - row.printRelativeModifiedStart);\r\n }\r\n }\r\n let pageOffset = (row.pageRelativeStart + (copyTo - row.printRelativeStart))/11;\r\n if (setWetDry) {\r\n if (fCell.finalDepth === 0) {\r\n this.makeCanvasOffsetDry(pageOffset);\r\n } else {\r\n this.makeCanvasOffsetWet(pageOffset);\r\n }\r\n }\r\n this.setCellVisibleColor(tip, fCell);\r\n\r\n // this is the set of cells modified (by kind) in this 'session'\r\n kindCells.add(pageOffset);\r\n }\r\n }\r\n for(const row of tip.cellDataRows!) {\r\n if (row.lengthModified > 0) {\r\n let v = new Uint8Array(tip.allCellData!.buffer, row.printRelativeModifiedStart, row.lengthModified);\r\n this.lastTipPlacement!.pageBuffer.set(v, row.pageRelativeStart + (row.printRelativeModifiedStart - row.printRelativeStart));\r\n }\r\n }\r\n }\r\n\r\n static colorIsSmudge(buf: Uint8Array, off: number) {\r\n return buf[off] === 1 && buf[off + 1] === 1 && buf[off + 2] === 1;\r\n }\r\n static colorIsBlow(color: tinycolor.ColorFormats.RGB) {\r\n return color.r === 254 && color.g === 254 && color.b === 254;\r\n }\r\n static colorIsKnife(color: tinycolor.ColorFormats.RGB) {\r\n return color.r === 1 && color.g === 2 && color.b === 3;\r\n }\r\n\r\n private setCellVisibleColor(tip: FingerTip, fCell: FlowCell) {\r\n if (fCell.finalDepth > 0 && !Page.colorIsSmudge(fCell.dvTipCells, Page.offWetRed)) {\r\n if (this.dryTransmits && fCell.finalDepth <= FingerTip.preferredMeniscusScrapeDepth) {\r\n // scale between depth and 4* depth so thicker paint blocks out effect of blending much more\r\n let scaledDepth = fCell.finalDepth;\r\n if (scaledDepth > FingerTip.preferredSmashScrapeDepth) {\r\n scaledDepth = 4 * FingerTip.preferredMeniscusScrapeDepth * ((scaledDepth-FingerTip.preferredSmashScrapeDepth)/(FingerTip.preferredMeniscusScrapeDepth - FingerTip.preferredSmashScrapeDepth));\r\n }\r\n let depthRat = Page.backgroundImplicitDepth / (scaledDepth + Page.backgroundImplicitDepth);\r\n // visible = mix of wet and dried\r\n colorMixKM(fCell.dvTipCells, Page.offWetRed, fCell.dvTipCells, Page.offDryRed, depthRat, fCell.dvTipCells, Page.offVisRed);\r\n } else {\r\n // visible = wet\r\n fCell.dvTipCells[Page.offVisRed] = fCell.dvTipCells[Page.offWetRed];\r\n fCell.dvTipCells[Page.offVisGreen] = fCell.dvTipCells[Page.offWetGreen];\r\n fCell.dvTipCells[Page.offVisBlue] = fCell.dvTipCells[Page.offWetBlue];\r\n }\r\n } else {\r\n // visible = dried\r\n fCell.dvTipCells[Page.offVisRed] = fCell.dvTipCells[Page.offDryRed];\r\n fCell.dvTipCells[Page.offVisGreen] = fCell.dvTipCells[Page.offDryGreen];\r\n fCell.dvTipCells[Page.offVisBlue] = fCell.dvTipCells[Page.offDryBlue];\r\n }\r\n\r\n }\r\n\r\n\r\n private stageFlow(from: FlowCell, to: FlowCellMove, totalMove: number, prevError: number) : number {\r\n let newError = prevError;\r\n if (from.inBounds && to.fCellDest.inBounds) {\r\n let fracMove = (totalMove * to.fraction) + prevError;\r\n let intMove = prevError === 0 ? Math.floor(fracMove) : Math.round(fracMove);\r\n newError = (fracMove - intMove);\r\n if (intMove > 0) {\r\n if (this.centralPull !== undefined) {\r\n // moving away from the center?\r\n // turn tip space into page space\r\n \r\n let ptOnPageSrc = this.tipCoordinatesToPageCoordinates(from.ptOnPrint, this.lastTipPlacement!.pageTipCenter);\r\n let ptOnPageDst = this.tipCoordinatesToPageCoordinates(to.fCellDest.ptOnPrint, this.lastTipPlacement!.pageTipCenter);\r\n\r\n const dSrc = ptOnPageSrc.distanceTo(this.lastTipPlacement!.pageCenter);\r\n const dDst = ptOnPageDst.distanceTo(this.lastTipPlacement!.pageCenter);\r\n if (dDst > dSrc) {\r\n const contrib = Math.min(1.0, (dDst - dSrc)); // approx the vector in a line to the center\r\n const scale = Math.min(1, Math.max(0, this.centralPull(dDst)));\r\n intMove -= (Math.floor(intMove * contrib * scale));\r\n }\r\n }\r\n\r\n from.stagedDepth -= intMove;\r\n to.fCellDest.stagedDepth += intMove;\r\n to.removedDepth = intMove;\r\n }\r\n }\r\n return newError;\r\n }\r\n\r\n private commitFlow(from: FlowCell, moveTo: FlowCellMove) {\r\n\r\n let move = moveTo.removedDepth;\r\n let to = moveTo.fCellDest;\r\n if (move > 0) {\r\n let toIsSmudge = Page.colorIsSmudge(to.dvTipCells, Page.offWetRed);\r\n let fromIsSmudge = Page.colorIsSmudge(from.dvTipCells, Page.offWetRed);\r\n let fromIsBlow = this.lastTipApplication!.instrument === TipInstrument.blow;\r\n\r\n if (fromIsBlow) {\r\n // dry = wet unless wet is background\r\n if (!toIsSmudge) {\r\n // dry moves from page to air, so alter the from dry\r\n from.dvTipCells[Page.offDryRed] = from.dvTipCells[Page.offWetRed];\r\n from.dvTipCells[Page.offDryGreen] = from.dvTipCells[Page.offWetGreen];\r\n from.dvTipCells[Page.offDryBlue] = from.dvTipCells[Page.offWetBlue];\r\n }\r\n } else if (fromIsSmudge) {\r\n // smearing, so leave wet in dest alone \r\n // solvent would wake up dry but ...\r\n\r\n } else if (toIsSmudge || to.finalDepth === 0) {\r\n // transfer the wet\r\n to.dvTipCells[Page.offWetRed] = from.dvTipCells[Page.offWetRed];\r\n to.dvTipCells[Page.offWetGreen] = from.dvTipCells[Page.offWetGreen];\r\n to.dvTipCells[Page.offWetBlue] = from.dvTipCells[Page.offWetBlue];\r\n } else if (to.dvTipCells[Page.offWetRed] === from.dvTipCells[Page.offWetRed] &&\r\n to.dvTipCells[Page.offWetGreen] === from.dvTipCells[Page.offWetGreen] &&\r\n to.dvTipCells[Page.offWetBlue] === from.dvTipCells[Page.offWetBlue]) {\r\n // no mix, same color\r\n }\r\n else {\r\n // the weight is about the paint volume. tip mixing onto page\r\n let wTip = moveTo.removedDepth / (moveTo.removedDepth + to.finalDepth);\r\n // to wet = mix of from wet and to wet\r\n colorMixKM(to.dvTipCells, Page.offWetRed, from.dvTipCells, Page.offWetRed, wTip, to.dvTipCells, Page.offWetRed);\r\n }\r\n\r\n to.modified = true;\r\n from.modified = true;\r\n\r\n to.finalDepth += move;\r\n from.finalDepth -= move;\r\n\r\n if (to.finalDepth === 0) {\r\n console.log('zero depth');\r\n }\r\n }\r\n\r\n moveTo.removedDepth = 0;\r\n }\r\n\r\n static ColorToTipApplication(color: tinycolor.ColorFormats.RGB) : TipApplication {\r\n if (Page.colorIsBlow(color)) {\r\n return {instrument: TipInstrument.blow, motion: TipMotion.unknown, action: TipAction.dry, modifier: 0};\r\n }\r\n if (Page.colorIsKnife(color)) {\r\n return {instrument: TipInstrument.knife, motion: TipMotion.unknown, action: TipAction.remove, modifier: 0};\r\n }\r\n if (color.r * color.g * color.b === 1) {\r\n return {instrument: TipInstrument.finger, motion: TipMotion.unknown, action: TipAction.smudge, modifier: 0};\r\n }\r\n return {instrument: TipInstrument.finger, motion: TipMotion.unknown, action: TipAction.paint, modifier: 0};\r\n }\r\n\r\n public dropPaint(tip: FingerTip, center: Point2D, paintColor: string, paintRadius: number, pChange: CirclePageChange | undefined) : TipEffect | undefined {\r\n\r\n const colorRGB = new tinycolor(paintColor).toRgb();\r\n let tipApplication = Page.ColorToTipApplication(colorRGB);\r\n\r\n // get the new start volume and apply it to all cells in the minimum circle\r\n const fillRad = Math.floor((FingerTip.minFingerRadius / 5.0) * 3.0);\r\n let paintVol = FingerTip.newPaintVolume(paintRadius, colorRGB.r * colorRGB.g * colorRGB.b === 1);\r\n //let paintVol = FingerTip.newPaintVolume(paintRadius, false);\r\n let minCells = Math.PI * fillRad * fillRad;\r\n\r\n this.lastTipPlacement = new PageTipPlacement(this, tip, center, this.cellData, true);\r\n this.lastTipApplication = tipApplication;\r\n\r\n if (pChange !== undefined) {\r\n let dropDim = fillRad * 2;\r\n pChange.initialDrop = {color: colorRGB, \r\n offset: new Point2D((center.x - fillRad) - pChange.pageX, (center.y - fillRad) - pChange.pageY),\r\n width: dropDim, height: dropDim, \r\n depth: new Uint16Array(dropDim * dropDim)};\r\n let ptBuff = new Point2D(FingerTip.maxPrintRadius - fillRad, FingerTip.maxPrintRadius - fillRad);\r\n FingerTip.doFilledCircle(fillRad, 0, (i: number, pt: Point2D)=>{\r\n \r\n const glop = Math.min(Math.floor((this.rnd.nextFloat() + .5) * paintVol / minCells), 0xffff);\r\n // info on that spot on the finger\r\n let ptOnBuff = new Point2D(pt.x - ptBuff.x, pt.y - ptBuff.y);\r\n let depthOffset = ptOnBuff.y * dropDim + ptOnBuff.x;\r\n pChange.initialDrop!.depth[depthOffset] = glop;\r\n\r\n });\r\n return undefined;\r\n\r\n } else {\r\n \r\n // effects from this one movement step\r\n const result :TipEffect = new TipEffect();\r\n result.steps.push({radius: tip.radius, smashRadius: tip.smashRadius, location: this.lastTipPlacement.pageTipCenter, octantMove: 4});\r\n\r\n const kindCells = new Set();\r\n this.collectTipCellData((ptTip: Point2D, adj: number)=> {\r\n let ptPage = this.tipCoordinatesToPageCoordinates(ptTip, this.lastTipPlacement!.pageTipCenter);\r\n return (this.offsetOfCoordinates(ptPage) - adj) * 11;\r\n });\r\n FingerTip.doFilledCircle(fillRad, 0, (i: number, pt: Point2D)=>{\r\n // to make things jagged a bit\r\n const glop = (this.rnd.nextFloat() + .5) * paintVol / minCells;\r\n //const glop = paintVol / minCells;\r\n\r\n // info on that spot on the finger\r\n let fCellTip = tip.getSingleChangeFlowCell(pt, glop, colorRGB);\r\n // now they are one\r\n this.stageFlow(fCellTip, fCellTip.move1, glop, 0);\r\n this.commitFlow(fCellTip, fCellTip.move1);\r\n })\r\n this.writeTipCellData(kindCells);\r\n\r\n // convert the modified page cells into drawing effects\r\n this.cellsToEffects(kindCells, result);\r\n\r\n return result;\r\n }\r\n }\r\n\r\n public applyTip(tip: FingerTip, center: Point2D, paintColor: string, paintRadius: number) : TipEffect {\r\n\r\n const colorRGB = new tinycolor(paintColor).toRgb();\r\n let tipKind = Page.ColorToTipApplication(colorRGB);\r\n tipKind.motion = TipMotion.press;\r\n this.lastTipPlacement = new PageTipPlacement(this, tip, center, this.cellData, true);\r\n this.lastTipApplication = tipKind;\r\n \r\n // effects from this one movement step\r\n const result :TipEffect = new TipEffect();\r\n result.steps.push({radius: tip.radius, smashRadius: tip.smashRadius, location: this.lastTipPlacement.pageTipCenter, octantMove: 4});\r\n\r\n const kindCells = new Set();\r\n this.collectTipCellData((ptTip: Point2D, adj: number)=> {\r\n let ptPage = this.tipCoordinatesToPageCoordinates(ptTip, this.lastTipPlacement!.pageTipCenter);\r\n return (this.offsetOfCoordinates(ptPage) - adj) * 11;\r\n });\r\n\r\n // run the flow\r\n this.runCentralFlowPattern(tip, this.lastTipPlacement.pageTipCenter, kindCells, tipKind);\r\n\r\n // convert the modified page cells into drawing effects\r\n this.cellsToEffects(kindCells, result);\r\n\r\n return result;\r\n }\r\n\r\n public blowTip(tip: FingerTip, center: Point2D, dragDryAmount: number) {\r\n let tipKind : TipApplication = {instrument: TipInstrument.blow, motion: TipMotion.press, action: TipAction.dry, modifier: 0};\r\n this.lastTipPlacement = new PageTipPlacement(this, tip, center, this.cellData, true);\r\n this.lastTipApplication = tipKind;\r\n\r\n const pageLoc = this.lastTipPlacement.pageTipCenter;\r\n\r\n this.cellDryApplied = new Uint16Array(this.cellsTotal);\r\n \r\n // effects from this dry step is a list of the x,y, amount of paint to dry\r\n //const effectPoints = new Array();\r\n\r\n // drying is moving paint from the page to the 'air' aka nowhere\r\n let colorRGB = {r: 254, g: 254, b: 254};\r\n this.collectTipCellData((ptTip: Point2D, adj: number)=> {\r\n let ptPage = this.tipCoordinatesToPageCoordinates(ptTip, pageLoc);\r\n return (this.offsetOfCoordinates(ptPage) - adj) * 11;\r\n });\r\n let dryCells = new Set();\r\n FingerTip.doFilledCircle(tip.radius, 0, (i: number, pt: Point2D)=>{\r\n\r\n let fCellAir = tip.getSingleChangeFlowCell(pt, 0, colorRGB);\r\n let fCellPage = fCellAir.move1.fCellDest;\r\n if (fCellPage.inBounds) {\r\n let ptPage = this.tipCoordinatesToPageCoordinates(pt, pageLoc);\r\n let pageOffset = this.offsetOfCoordinates(ptPage);\r\n dryCells.add(pageOffset);\r\n\r\n let pageDepth = fCellPage.finalDepth;\r\n // now they are one\r\n let localDryAmount = (dragDryAmount > pageDepth) ? pageDepth : dragDryAmount;\r\n if (localDryAmount > 0) {\r\n\r\n let saveMove = fCellPage.move1;\r\n fCellPage.move1 = {fCellDest: fCellAir, fraction: 1} as FlowCellMove;\r\n this.stageFlow(fCellPage, fCellPage.move1, localDryAmount, 0);\r\n this.commitFlow(fCellPage, fCellPage.move1);\r\n fCellPage.move1 = saveMove;\r\n }\r\n\r\n }\r\n })\r\n this.writeTipCellData(dryCells);\r\n dryCells.forEach(c=> \r\n this.cellDryApplied![c] += dragDryAmount\r\n );\r\n }\r\n public clearAppliedDry() {\r\n if (this.cellDryApplied !== undefined) {\r\n\r\n }\r\n this.cellDryApplied = undefined;\r\n }\r\n\r\n public clearKnifeBladeCells() {\r\n // no background color mixing\r\n let clearData = [1,1,1,1,1,1,0,0,1,1,1];\r\n for (let c = 0; c < FingerTip.cellsWidth * 3; c++) {\r\n let off = c * 11;\r\n this.cellDataBlade.set(clearData, off);\r\n }\r\n }\r\n\r\n public dragTip(ptStart: Point2D, ptEnd: Point2D, radiusStart: number, radiusEnd: number, octantLast: number, paintRadius:number, tipApplication: TipApplication, useGPU: boolean) : TipEffect {\r\n const result :TipEffect = new TipEffect();\r\n\r\n const kindCells = new Set();\r\n\r\n let stepLine = ptStart.lineTo(ptEnd);\r\n // for this batch, pretend like every step is oriented the same way to prevent those mid-batch jagged circles\r\n let primaryMoveOctant = ptEnd.moveOctantFrom(ptStart);\r\n\r\n result.steps.push({radius: radiusStart, smashRadius: FingerTip.smashRadiusOf(radiusStart), location: ptStart, octantMove: octantLast});\r\n\r\n // move the radius from start to finish size in integer jumps in the same steps as the line\r\n let radiusStep = (radiusEnd - radiusStart) / (stepLine.length-1);\r\n let radiusTrack = radiusStart;\r\n let radiusLast = radiusTrack;\r\n let ptLast = ptStart;\r\n for (const s of stepLine.slice(1)) {\r\n let octantMove = s.octantFrom(ptLast);\r\n\r\n // add a bit to the radius, if it changes by an integer amount, use the new value\r\n radiusTrack += radiusStep;\r\n if (Math.floor(radiusTrack) !== radiusLast) {\r\n radiusLast = Math.floor(radiusTrack);\r\n }\r\n\r\n let ftScrape : FingerTip\r\n if (tipApplication.instrument === TipInstrument.knife) {\r\n octantMove = primaryMoveOctant;\r\n // radius communicates degree of edge too\r\n ftScrape = FingerTip.getKnifeShape(radiusLast, octantMove, octantLast);\r\n ftScrape.customizeKnifePattern(paintRadius, octantMove);\r\n } else {\r\n ftScrape = FingerTip.getScrapeShape(radiusLast, octantMove, octantLast);\r\n }\r\n\r\n result.steps.push({radius: ftScrape.radius, smashRadius: ftScrape.smashRadius, location: s, octantMove: primaryMoveOctant});\r\n\r\n result.changeEntries.push({shape: ftScrape, location: s, modifier: octantMove});\r\n\r\n // run the flow\r\n this.lastTipApplication = tipApplication;\r\n if (!useGPU) {\r\n if (tipApplication.instrument === TipInstrument.knife) {\r\n this.runKnifeFlowPattern(ftScrape, ptLast, kindCells);\r\n } else {\r\n this.runDragFlowPattern(ftScrape, ptLast, kindCells);\r\n }\r\n }\r\n \r\n\r\n octantLast = octantMove;\r\n ptLast = s;\r\n }\r\n\r\n // convert the modified page cells into drawing effects\r\n this.cellsToEffects(kindCells, result);\r\n\r\n return result;\r\n }\r\n\r\n public dragBlowTip(ptStart: Point2D, ptEnd: Point2D, radiusStart: number, radiusEnd: number, dragDryAmount: number, octantLast: number, previousBlows: Array, useGPU: boolean) : [steps: number, lastOctant: number] {\r\n\r\n let stepLine = ptStart.lineTo(ptEnd);\r\n // for this batch, pretend like every step is oriented the same way to prevent those mid-batch jagged circles\r\n let primaryMoveOctant = ptEnd.moveOctantFrom(ptStart);\r\n\r\n let steps = 1;\r\n\r\n // move the radius from start to finish size in integer jumps in the same steps as the line\r\n let radiusStep = (radiusEnd - radiusStart) / (stepLine.length-1);\r\n let radiusTrack = radiusStart;\r\n let radiusLast = radiusTrack;\r\n let ptLast = ptStart;\r\n let changes = new Array();\r\n for (const s of stepLine.slice(1)) {\r\n // add a bit to the radius, if it changes by an integer amount, use the new value\r\n radiusTrack += radiusStep;\r\n if (Math.floor(radiusTrack) !== radiusLast) {\r\n radiusLast = Math.floor(radiusTrack);\r\n }\r\n\r\n steps ++;\r\n let ft = FingerTip.getCircleShape(radiusLast);\r\n if (useGPU) {\r\n changes.push({shape:ft, location: s, modifier:dragDryAmount});\r\n } else {\r\n this.blowTip(ft, ptLast, dragDryAmount);\r\n }\r\n\r\n ptLast = s;\r\n }\r\n if (useGPU) {\r\n let tipApplication = {instrument: TipInstrument.blow, motion: TipMotion.drag, action: TipAction.dry, modifier: 0};\r\n this.lastTipApplication = tipApplication;\r\n let pChange = this.createTouchPageChange(changes, tipApplication, true, 0) as BlowPageChange;\r\n if (pChange !== undefined) {\r\n const gc = GPURunner.newChecker('blow-move');\r\n pChange.processChanges(gc, this.crcVisible);\r\n // previous changes need to be made relative to the whole page instead of relative to this change\r\n // because they are used to paint the already dry regions in a long dry drag.\r\n for (const change of changes) {\r\n change.location = new Point2D(change.location.x + pChange.pageX, change.location.y + pChange.pageY);\r\n }\r\n pChange.finalize();\r\n\r\n if (GPUChecker.errorCode !== 0) {\r\n this.exceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n }\r\n\r\n previousBlows.push(...changes);\r\n this.refreshVisible(previousBlows);\r\n\r\n }\r\n }\r\n\r\n return [steps, primaryMoveOctant]\r\n }\r\n\r\n public removeTip(tip: FingerTip, center: Point2D, tipApplication: TipApplication) : TipEffect {\r\n \r\n const pageLoc = new Point2D(center.x, center.y);\r\n \r\n // effects from this one movement step\r\n const result :TipEffect = new TipEffect();\r\n result.steps.push({radius: tip.radius, smashRadius: tip.smashRadius, location: pageLoc, octantMove: 4});\r\n\r\n const kindCells = new Set();\r\n\r\n // run the flow\r\n this.runCentralFlowPattern(tip, pageLoc, kindCells, tipApplication, true);\r\n\r\n // convert the modified page cells into drawing effects\r\n this.cellsToEffects(kindCells, result);\r\n\r\n return result;\r\n }\r\n\r\n\r\n private runCentralFlowPattern(tip: FingerTip, pageLoc: Point2D, kindCells: Set, tipApplication: TipApplication, smashOnly: boolean = false) {\r\n this.lastTipPlacement = new PageTipPlacement(this, tip, pageLoc, this.cellData, true);\r\n this.lastTipApplication = tipApplication;\r\n\r\n // get the state of the page before the drag put into every source or dest cell in the print\r\n this.collectTipCellData((ptTip: Point2D, adj: number)=> {\r\n let ptPage = this.tipCoordinatesToPageCoordinates(ptTip, pageLoc);\r\n return (this.offsetOfCoordinates(ptPage) - adj) * 11;\r\n });\r\n\r\n let debugShowVol = false;\r\n\r\n const stageRadiate = (fCell: FlowCell, max: number, priority: number) => {\r\n let move = fCell.finalDepth - max;\r\n if (move > 0) {\r\n if (smashOnly && fCell.finalKind !== CellKind.smash) {\r\n return;\r\n }\r\n let error = 0;\r\n if (fCell.move1 !== undefined && fCell.move1.priority === priority) {\r\n error = this.stageFlow(fCell, fCell.move1, move, error);\r\n }\r\n if (fCell.move2 !== undefined && fCell.move2.priority === priority) {\r\n error = this.stageFlow(fCell, fCell.move2, move, error);\r\n }\r\n if (fCell.move3 !== undefined && fCell.move3.priority === priority) {\r\n error = this.stageFlow(fCell, fCell.move3, move, error);\r\n }\r\n if (fCell.move4 !== undefined && fCell.move4.priority === priority) {\r\n error = this.stageFlow(fCell, fCell.move4, move, error);\r\n }\r\n if (fCell.move5 !== undefined && fCell.move5.priority === priority) {\r\n this.stageFlow(fCell, fCell.move5, move, error);\r\n }\r\n }\r\n }\r\n const commitRadiate = (fCell: FlowCell, priority: number) => {\r\n if (smashOnly && fCell.finalKind !== CellKind.smash) {\r\n fCell.finalDepth = 0;\r\n fCell.modified = false;\r\n return;\r\n }\r\n\r\n if (fCell.move1 !== undefined && fCell.move1.priority === priority) {\r\n this.commitFlow(fCell, fCell.move1);\r\n }\r\n if (fCell.move2 !== undefined && fCell.move2.priority === priority) {\r\n this.commitFlow(fCell, fCell.move2);\r\n }\r\n if (fCell.move3 !== undefined && fCell.move3.priority === priority) {\r\n this.commitFlow(fCell, fCell.move3);\r\n }\r\n if (fCell.move4 !== undefined && fCell.move4.priority === priority) {\r\n this.commitFlow(fCell, fCell.move4);\r\n }\r\n if (fCell.move5 !== undefined && fCell.move5.priority === priority) {\r\n this.commitFlow(fCell, fCell.move5);\r\n }\r\n }\r\n\r\n const spewRingVol = (ring: number, pri: number, tag:string, fCellsRing: Array) => {\r\n if (debugShowVol) {\r\n let total = 0;\r\n for (const fCell of fCellsRing) {\r\n total += fCell.finalDepth;\r\n }\r\n console.log(`Ring ${ring} pri ${pri} ${tag} vol ${total}`);\r\n }\r\n }\r\n\r\n //let start = console.time('runCentralFlowPattern');\r\n //for (let i = 0; i < 100; i++) {\r\n\r\n let ring = 0;\r\n for (const fCellsRing of tip.fCellsCentralRings) {\r\n\r\n //spewRingVol(ring, 1, 'pre', fCellsRing);\r\n\r\n for (const fCell of fCellsRing) {\r\n let maxDepth = fCell.maxTouchDepth;\r\n if (fCell.finalKind === CellKind.smash) {\r\n maxDepth = fCell.preferredScrapeDepth;\r\n }\r\n stageRadiate(fCell, maxDepth, 1);\r\n }\r\n for (const fCell of fCellsRing) {\r\n commitRadiate(fCell, 1);\r\n }\r\n //spewRingVol(ring, 1, 'post', fCellsRing);\r\n\r\n for (const fCell of fCellsRing) {\r\n let maxDepth = fCell.maxTouchDepth;\r\n if (fCell.finalKind === CellKind.smash) {\r\n maxDepth = fCell.preferredScrapeDepth;\r\n }\r\n stageRadiate(fCell, maxDepth, 2);\r\n }\r\n for (const fCell of fCellsRing) {\r\n commitRadiate(fCell, 2);\r\n }\r\n //spewRingVol(ring, 2, 'post', fCellsRing);\r\n ring++;\r\n }\r\n //}\r\n //console.timeEnd('runCentralFlowPattern');\r\n\r\n\r\n // send the final depth and color to the page and cell kind map\r\n this.writeTipCellData(kindCells);\r\n }\r\n\r\n\r\n stageArcScrape(fCells: Array) {\r\n for (const fCell of fCells) {\r\n let curDepth = fCell.finalDepth; \r\n if (curDepth <= 0) {\r\n continue;\r\n }\r\n let curMax = fCell.preferredScrapeDepth;\r\n let moveFwd = 0;\r\n if (curDepth > fCell.maxKindPushDepth && fCell.finalKind === fCell.move1.fCellDest.finalKind) {\r\n // when build-up happens, let it ride but not too far\r\n // some gets left behind because of this little lie\r\n curDepth = fCell.maxKindPushDepth;\r\n }\r\n if (curDepth > curMax) {\r\n moveFwd = (curDepth - curMax);\r\n } else if (curDepth > fCell.minScrapeDepth) {\r\n moveFwd = Math.floor((curDepth - fCell.minScrapeDepth) * .25);\r\n } \r\n if (moveFwd >= 1) {\r\n this.stageFlow(fCell, fCell.move1, moveFwd, 0);\r\n }\r\n }\r\n }\r\n commitArcScrape(fCells: Array) : Array {\r\n const overflow = new Array();\r\n for (const fCell of fCells) {\r\n if (fCell.move1.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move1);\r\n if (fCell.move1.fCellDest.finalKind === CellKind.corona && fCell.move1.fCellDest.finalDepth > Page.maxCoronaDepth) {\r\n overflow.push(fCell.move1.fCellDest);\r\n }\r\n }\r\n }\r\n return overflow;\r\n }\r\n\r\n \r\n stageOverflows(fCells: Array) {\r\n for (const fCell of fCells) {\r\n let curDepth = fCell.finalDepth; \r\n if (curDepth <= Page.maxCoronaDepth || fCell.move1 === undefined) {\r\n continue;\r\n }\r\n let extra = curDepth - Page.maxCoronaDepth;\r\n let error = 0;\r\n error = this.stageFlow(fCell, fCell.move4, extra, error);\r\n error = this.stageFlow(fCell, fCell.move5, extra, error);\r\n error = this.stageFlow(fCell, fCell.move1, extra, error);\r\n }\r\n }\r\n commitOverflows (fCells: Array) : Array {\r\n const overflow = new Array();\r\n for (const fCell of fCells) {\r\n if (fCell.move1 === undefined) {\r\n continue;\r\n }\r\n if (fCell.move1.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move1);\r\n if (fCell.move1.fCellDest.finalDepth > Page.maxCoronaDepth) {\r\n overflow.push(fCell.move1.fCellDest);\r\n }\r\n }\r\n if (fCell.move4.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move4);\r\n if (fCell.move4.fCellDest.finalDepth > Page.maxCoronaDepth) {\r\n overflow.push(fCell.move4.fCellDest);\r\n }\r\n }\r\n if (fCell.move5.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move5);\r\n if (fCell.move5.fCellDest.finalDepth > Page.maxCoronaDepth) {\r\n overflow.push(fCell.move5.fCellDest);\r\n }\r\n }\r\n\r\n }\r\n return overflow;\r\n }\r\n\r\n stageFill (fCells: Array): Array {\r\n const moves = new Array();\r\n const considered = new Set();\r\n for (const fCell of fCells) {\r\n if (fCell.move3 === undefined) {\r\n continue;\r\n }\r\n let curDepth = fCell.finalDepth; \r\n if (curDepth === 0) {\r\n let fCellTrace = fCell.move3.fCellDest;\r\n while (fCellTrace !== undefined) {\r\n if (considered.has(fCellTrace)) {\r\n break;\r\n }\r\n if (fCellTrace.finalDepth > fCellTrace.minScrapeDepth) {\r\n let move = Math.min(Math.floor(Math.max(1, Math.round(fCellTrace.finalDepth * .75))), FingerTip.maxMeniscusTouchDepth);\r\n //move = Math.min(FingerTip.maxSmashScrapeDepth, move);\r\n if (fCellTrace.finalDepth - move < 2*FingerTip.minSmashScrapeDepth) {\r\n move = Math.max(0, fCellTrace.finalDepth - 2*FingerTip.minSmashScrapeDepth);\r\n }\r\n if (fCellTrace.move2 !== undefined && fCellTrace.move2.removedDepth === 0) {\r\n if (move >= 1) {\r\n this.stageFlow(fCellTrace, fCellTrace.move2, move, 0);\r\n moves.push(fCellTrace);\r\n }\r\n } else {\r\n break;\r\n }\r\n }\r\n considered.add(fCellTrace);\r\n fCellTrace = fCellTrace.move3?.fCellDest;\r\n }\r\n }\r\n }\r\n return moves;\r\n }\r\n commitFill(fCells: Array) {\r\n for (const fCell of fCells) {\r\n if (fCell.move2 !== undefined && fCell.move2.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move2);\r\n }\r\n }\r\n }\r\n\r\n stageArcBlend(fCells: Array) {\r\n for (const fCell of fCells) {\r\n let curDepth = fCell.finalDepth; \r\n if (curDepth <= 1) {\r\n continue;\r\n }\r\n if (fCell.move4.fCellDest.finalDepth > 1 && fCell.move4.fCellDest.move5 !== undefined) {\r\n let swap = Math.max(1, Math.floor(Math.min(curDepth*.05, fCell.move4.fCellDest.finalDepth * .05)));\r\n this.stageFlow(fCell, fCell.move4, swap, 0)\r\n }\r\n if (fCell.move5.fCellDest.finalDepth > 1 && fCell.move5.fCellDest.move4 !== undefined) {\r\n let swap = Math.max(1, Math.floor(Math.min(curDepth*.05, fCell.move5.fCellDest.finalDepth * .05)));\r\n this.stageFlow(fCell, fCell.move5, swap, 0)\r\n }\r\n }\r\n }\r\n commitArcBlend(fCells: Array) {\r\n for (const fCell of fCells) {\r\n if (fCell.move4.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move4);\r\n }\r\n if (fCell.move5.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move5);\r\n }\r\n }\r\n }\r\n performDrag() {\r\n let tip = this.lastTipPlacement!.tip;\r\n let fillMoves = this.stageFill(tip.fCellsMeniscusScrape);\r\n this.commitFill(fillMoves);\r\n\r\n fillMoves = this.stageFill(tip.fCellsSmashScrape);\r\n this.commitFill(fillMoves);\r\n \r\n this.stageArcScrape(tip.fCellsMeniscusScrape);\r\n let overflow = this.commitArcScrape(tip.fCellsMeniscusScrape);\r\n while (overflow.length > 0) {\r\n this.stageOverflows(overflow);\r\n overflow = this.commitOverflows(overflow);\r\n }\r\n\r\n this.stageArcScrape(tip.fCellsSmashScrape);\r\n overflow = this.commitArcScrape(tip.fCellsSmashScrape);\r\n while (overflow.length > 0) {\r\n this.stageOverflows(overflow);\r\n overflow = this.commitOverflows(overflow);\r\n }\r\n\r\n this.stageArcBlend(tip.fCellsMeniscusBlend);\r\n this.commitArcBlend(tip.fCellsMeniscusBlend);\r\n }\r\n\r\n private runDragFlowPattern(tip: FingerTip, pageLoc: Point2D, kindCells: Set) {\r\n this.lastTipPlacement = new PageTipPlacement(this, tip, pageLoc, this.cellData, true);\r\n\r\n // get the state of the page before the drag put into every source or dest cell in the print\r\n const tipToPageOff = (ptTip: Point2D, adj: number)=> {\r\n let pageX = ptTip.x + pageLoc.x - FingerTip.cellsWidth/2;\r\n let pageY = ptTip.y + pageLoc.y - FingerTip.cellsWidth/2;\r\n let offPage = this.cellsWidth * pageY + pageX;\r\n return (offPage - adj) * 11;\r\n }\r\n this.collectTipCellData(tipToPageOff);\r\n this.performDrag();\r\n // put back the changes\r\n this.writeTipCellData(kindCells);\r\n }\r\n\r\n private runKnifeFlowPattern(tip: FingerTip, pageLoc: Point2D, kindCells: Set) {\r\n let mainPlacement = this.lastTipPlacement = new PageTipPlacement(this, tip, pageLoc, this.cellData, true);\r\n let bladePlacement = new PageTipPlacement(this, tip.tipKnifeBlade!, pageLoc, this.cellDataBlade, false );\r\n \r\n // get the state of the page before the drag put into every source or dest cell in the print\r\n this.collectTipCellData((ptTip: Point2D, adj: number)=> {\r\n let ptPage = this.tipCoordinatesToPageCoordinates(ptTip, pageLoc);\r\n return (this.offsetOfCoordinates(ptPage) - adj) * 11;\r\n });\r\n\r\n this.lastTipPlacement = bladePlacement;\r\n // get the state of the blade from the cache\r\n this.collectTipCellData((ptTip: Point2D, adj: number)=> {\r\n let fCell = tip.tipKnifeBlade!.getFlowCell(ptTip.x - adj, ptTip.y, CellKind.background, CellKind.background);\r\n let tipStart = Math.floor((this.cellDataBlade.length - tip.tipKnifeBlade!.allCellData!.length)/2);\r\n return fCell.dvTipCells.byteOffset + tipStart;\r\n });\r\n this.lastTipPlacement = mainPlacement;\r\n\r\n // any cells from the 'left behind in a turn' section just vanish\r\n for (const fCell of tip.fCellsKnifeBack!) {\r\n this.stageFlow(fCell, fCell.move1, fCell.finalDepth, 0);\r\n this.commitFlow(fCell, fCell.move1);\r\n }\r\n\r\n // the knife edge pulls up to the blade\r\n for (const fCell of tip.fCellsKnifeEdge!) {\r\n if (fCell.move1.fCellDest !== undefined && fCell.finalDepth > 0) {\r\n this.stageFlow(fCell, fCell.move1, fCell.finalDepth, 0);\r\n this.commitFlow(fCell, fCell.move1);\r\n }\r\n }\r\n\r\n // the blade smooths\r\n for (const fCell of tip.tipKnifeBlade!.fCellsKnifeEdge!) {\r\n\r\n let curDepth = fCell.finalDepth; \r\n if (curDepth === 0 || fCell.move2 === undefined || fCell.move3 === undefined) {\r\n continue;\r\n }\r\n let prevDepth = fCell.move2.fCellDest.finalDepth;\r\n let nextDepth = fCell.move3.fCellDest.finalDepth;\r\n if (prevDepth > nextDepth) {\r\n if (nextDepth < curDepth) {\r\n let swap = Math.max(1, Math.floor(curDepth*.05));\r\n this.stageFlow(fCell, fCell.move3, swap, 0)\r\n }\r\n\r\n } else {\r\n if (prevDepth < curDepth) {\r\n let swap = Math.max(1, Math.floor(curDepth*.05));\r\n this.stageFlow(fCell, fCell.move2, swap, 0)\r\n }\r\n\r\n }\r\n }\r\n for (const fCell of tip.tipKnifeBlade!.fCellsKnifeEdge!) {\r\n if (fCell.move2 !== undefined && fCell.move2.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move2);\r\n }\r\n if (fCell.move3 !== undefined && fCell.move3.removedDepth > 0) {\r\n this.commitFlow(fCell, fCell.move3);\r\n }\r\n }\r\n\r\n // now the blade drop paint into the gaps\r\n for (const fCell of tip.tipKnifeBlade!.fCellsKnifeEdge!) {\r\n let curDepth = fCell.finalDepth; \r\n if (curDepth <= 0 || fCell.move1 === undefined || fCell.move1.fCellDest === undefined) {\r\n continue;\r\n }\r\n this.stageFlow(fCell, fCell.move1, curDepth, 0)\r\n this.commitFlow(fCell, fCell.move1);\r\n }\r\n\r\n // send the final depth and color to the page and cell kind map\r\n for (const fCell of tip.allFlowCells) {\r\n if (fCell.finalKind !== CellKind.background && fCell.inBounds) {\r\n if (fCell.finalDepth === 0) {\r\n // scrape over only dried background will fade it\r\n if (fCell.modified === false && !(fCell.dvTipCells[Page.offDryRed] === 255 && fCell.dvTipCells[Page.offDryGreen] === 255 && fCell.dvTipCells[Page.offDryBlue] === 255)) {\r\n let rd = fCell.dvTipCells[Page.offDryRed];\r\n let gd = fCell.dvTipCells[Page.offDryGreen];\r\n let bd = fCell.dvTipCells[Page.offDryBlue];\r\n let ad = .95;\r\n rd = Math.floor(rd * ad + (1-ad) * 255);\r\n gd = Math.floor(gd * ad + (1-ad) * 255);\r\n bd = Math.floor(bd * ad + (1-ad) * 255);\r\n if (rd*gd*bd === 1) {\r\n rd=gd=bd=0;\r\n }\r\n \r\n fCell.dvTipCells[Page.offDryRed] = rd;\r\n fCell.dvTipCells[Page.offDryGreen] = gd;\r\n fCell.dvTipCells[Page.offDryBlue] = bd;\r\n fCell.modified = true;\r\n }\r\n }\r\n }\r\n }\r\n \r\n\r\n this.writeTipCellData(kindCells);\r\n\r\n this.lastTipPlacement = bladePlacement;\r\n let unKindCells = new Set();\r\n this.writeTipCellData(unKindCells);\r\n this.lastTipPlacement = mainPlacement;\r\n\r\n }\r\n\r\n private cellsToEffects(kindCells: Set, effect: TipEffect) : void {\r\n // for every cell\r\n kindCells.forEach(c => {\r\n let pos = this.coordinatesOfOffset(c);\r\n effect.rectTL.pushTL(pos);\r\n effect.rectBR.pushBR(pos);\r\n\r\n effect.cells.push(c);\r\n });\r\n }\r\n\r\n public makeCanvasOffsetWet(offset: number) {\r\n let existingWetStage = this.wetCanvasOffsets.get(offset);\r\n if (existingWetStage !== undefined && existingWetStage !== this.wetCanvasStage) {\r\n // remove from earlier stage\r\n this.wetCanvasStageOffsets[existingWetStage].delete(offset);\r\n }\r\n // set into current stage\r\n this.wetCanvasOffsets.set(offset, this.wetCanvasStage);\r\n this.wetCanvasStageOffsets[this.wetCanvasStage].add(offset);\r\n\r\n }\r\n public makeCanvasOffsetDry(offset: number) {\r\n let existingWetStage = this.wetCanvasOffsets.get(offset);\r\n if (existingWetStage !== undefined && existingWetStage !== this.wetCanvasStage) {\r\n // remove from earlier stage\r\n this.wetCanvasStageOffsets[existingWetStage].delete(offset);\r\n this.wetCanvasOffsets.delete(offset);\r\n }\r\n }\r\n\r\n public refreshVisible(previousBlows: Array | undefined = undefined) {\r\n let change = new RefreshPageChange(this);\r\n if (previousBlows !== undefined) { \r\n change.previousBlows.push(...previousBlows)\r\n }\r\n const gc = GPURunner.newChecker('refresh');\r\n change.processChanges(gc, this!.crcVisible);\r\n change.finalize();\r\n\r\n if (GPUChecker.errorCode !== 0) {\r\n this.exceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n }\r\n }\r\n\r\n public dry(factor: number, repeat: number, useGpu: boolean) {\r\n if (factor !== 0) {\r\n\r\n let finalFactor = factor;\r\n let reps = 1;\r\n if (repeat > 1) {\r\n if (repeat > this.wetCanvasStageMax) {\r\n // only do the first reps and then one push at the end\r\n reps = this.wetCanvasStageMax + 1;\r\n finalFactor = factor * (repeat - this.wetCanvasStageMax);\r\n } else {\r\n // just do these reps with no final\r\n reps = repeat;\r\n }\r\n }\r\n\r\n //console.time('dry');\r\n //let max=0;\r\n for (let r = 0; r < reps; r++) {\r\n if (r === reps-1) {\r\n factor = finalFactor;\r\n }\r\n\r\n if (useGpu) {\r\n let dryChange = new DryPageChange(this, factor);\r\n const gc = GPURunner.newChecker('dry');\r\n dryChange.processChanges(gc, this!.crcVisible);\r\n dryChange.finalize();\r\n if (GPUChecker.errorCode !== 0) {\r\n this.exceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n }\r\n \r\n } else {\r\n let iWetCanvasStage = this.wetCanvasStage + 1;\r\n if (iWetCanvasStage >= this.wetCanvasStageMax) {\r\n iWetCanvasStage = 0;\r\n }\r\n \r\n let cellsTotal = this.cellsTotal;\r\n let wetCellsStage = this.wetCanvasStageOffsets[iWetCanvasStage];\r\n let wetCellsAll = this.wetCanvasOffsets;\r\n \r\n for(let c = 0; c < cellsTotal; c++) {\r\n let off = c * 11;\r\n let d = (this.cellData[off + Page.offDepthHigh] << 8) | this.cellData[off + Page.offDepthLow];\r\n //max = Math.max(max, d);\r\n if (d > 0) { \r\n if (wetCellsAll.has(c)) {\r\n if(wetCellsStage.has(c)) {\r\n this.wetCanvasOffsets.delete(c);\r\n this.cellData[off + Page.offDryRed] = this.cellData[off + Page.offVisRed];\r\n this.cellData[off + Page.offDryGreen] = this.cellData[off + Page.offVisGreen];\r\n this.cellData[off + Page.offDryBlue] = this.cellData[off + Page.offVisBlue];\r\n } else {\r\n continue;\r\n }\r\n }\r\n if (d > 10*Page.maxCoronaDepth) {\r\n d = 10*Page.maxCoronaDepth;\r\n }\r\n let reduce = Math.max(1, Math.floor(d * factor));\r\n d-=reduce;\r\n if (d<=0) {\r\n d=0;\r\n }\r\n this.cellData[off + Page.offDepthHigh] = d >> 8;\r\n this.cellData[off + Page.offDepthLow ] = d & 0xff;\r\n }\r\n }\r\n this.wetCanvasStage = iWetCanvasStage;\r\n this.wetCanvasStageOffsets[iWetCanvasStage] = new Set(); \r\n }\r\n\r\n }\r\n //console.timeEnd('dry');\r\n }\r\n }\r\n\r\n}\r\n\r\n","import {DoublyLinkedPointList, DoublyLinkedPointListNode, Point2D} from './utils';\r\nimport {CellKind, Page} from './page';\r\nimport tinycolor from 'tinycolor2';\r\nimport { NumericLiteral } from 'typescript';\r\n\r\nexport enum TipInstrument {\r\n unknown,\r\n knife,\r\n finger,\r\n blow,\r\n eyeDropper,\r\n stamp\r\n}\r\nexport enum TipMotion {\r\n unknown,\r\n press,\r\n drag,\r\n lift\r\n}\r\nexport enum TipAction {\r\n unknown,\r\n paint,\r\n smudge,\r\n dry,\r\n remove,\r\n sample\r\n}\r\n\r\nexport interface TipApplication {\r\n instrument: TipInstrument;\r\n motion: TipMotion;\r\n action: TipAction;\r\n modifier: number;\r\n}\r\n\r\nexport interface ChangeTextureSet {\r\n tipApplication: TipApplication;\r\n texFrom: Uint16Array | undefined;\r\n texFrac: Float32Array | undefined;\r\n texMax: Uint16Array | undefined;\r\n texCommit: Float32Array | undefined;\r\n width: number;\r\n height: number;\r\n moveEntries: number;\r\n maxEntries: number;\r\n}\r\n\r\nexport interface ChangeTextureIndexes {\r\n application: TipApplication;\r\n idxsAction: Array;\r\n idxMax: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface FlowCellMove {\r\n fCellDest: FlowCell;\r\n fraction: number;\r\n removedDepth: number;\r\n diagonal: boolean;\r\n priority: number;\r\n}\r\nexport interface FlowCell {\r\n finalKind: CellKind;\r\n ptOnPrint: Point2D;\r\n finalDepth: number;\r\n maxTouchDepth: number;\r\n maxKindPushDepth: number;\r\n minScrapeDepth: number;\r\n preferredScrapeDepth: number;\r\n stagedDepth: number;\r\n move1: FlowCellMove;\r\n move2: FlowCellMove;\r\n move3: FlowCellMove;\r\n move4: FlowCellMove;\r\n move5: FlowCellMove;\r\n modified: boolean;\r\n dvTipCells: Uint8Array;\r\n inBounds: boolean;\r\n}\r\n\r\nexport interface CellDataRow {\r\n row: number;\r\n firstCell: number;\r\n printRelativeStart: number;\r\n length: number;\r\n pageRelativeStart: number;\r\n printRelativeModifiedStart: number;\r\n lengthModified: number;\r\n}\r\n\r\nexport class FingerTip {\r\n\r\n // distance measurements are in scale units, number of pixels.\r\n static standardFingerRadius = 16;\r\n static maxFingerRadius = 30;\r\n static minFingerRadius = 5;\r\n static maxCoronaWidth = 5;\r\n static maxPrintRadius = FingerTip.maxFingerRadius + FingerTip.maxCoronaWidth;\r\n\r\n // depth measurement are relative to the deepest paint allowed=255 at maxPaintDepth. \r\n //static maxMeniscusDepth = 96;\r\n static maxMeniscusTouchDepth = Math.round(75 * Page.paintDepthScale);\r\n static maxSmashTouchDepth = Math.round(10 * Page.paintDepthScale);\r\n \r\n // how well the paint spreads out when moving\r\n //static meniscusScrapeDepth = 16; \r\n //static smashScrapeDepth = 2; \r\n static minMeniscusScrapeDepth = Math.round(5 * Page.paintDepthScale); \r\n static preferredMeniscusScrapeDepth = Math.round(8 * Page.paintDepthScale); \r\n static maxMeniscusScrapeDepth = Math.round(24 * Page.paintDepthScale); \r\n static maxSmashScrapeDepth = Math.round(3.25 * Page.paintDepthScale); \r\n static preferredSmashScrapeDepth = Math.round(3 * Page.paintDepthScale); \r\n static minSmashScrapeDepth = Math.round(.25 * Page.paintDepthScale); \r\n //static minSmashScrapeDepth = 3; \r\n\r\n static cellsWidth = FingerTip.maxPrintRadius * 2;\r\n static cellsTotal = FingerTip.cellsWidth * FingerTip.cellsWidth;\r\n\r\n static tipCenter = new Point2D((FingerTip.cellsWidth - 1)/2, (FingerTip.cellsWidth - 1)/2);\r\n\r\n static normalizeTouchRadius(inputRadius: number, useFixedSize: boolean, fixedSize: number, avgLightRadius: number, avgHeavyRadius: number) : number {\r\n // we model a radius of 22 as 'average' regular drag\r\n // at 22, the 'force' is average so with paint that means ...\r\n // 12 == lightest force, no smashing just smear.\r\n // 22 == medium, 11 gets used for smash print and the rest pushed out\r\n // 32 == max force, 32 is smash, rest spreads\r\n\r\n if (useFixedSize === true && fixedSize !== 0) {\r\n return fixedSize;\r\n }\r\n if (inputRadius === 0) {\r\n return FingerTip.standardFingerRadius;\r\n }\r\n\r\n if (inputRadius <= avgLightRadius) {\r\n return FingerTip.minFingerRadius;\r\n }\r\n if (inputRadius >= avgHeavyRadius) {\r\n return FingerTip.maxFingerRadius;\r\n }\r\n if (avgLightRadius === avgHeavyRadius) {\r\n return FingerTip.standardFingerRadius;\r\n }\r\n\r\n inputRadius -= avgLightRadius;\r\n let ratioToAvg = inputRadius / (avgHeavyRadius - avgLightRadius);\r\n\r\n return Math.floor(FingerTip.minFingerRadius + (FingerTip.maxFingerRadius - FingerTip.minFingerRadius) * ratioToAvg);\r\n }\r\n\r\n\r\n\r\n static coordinatesOfOffset(offset: number) : Point2D {\r\n let tipX = offset % FingerTip.cellsWidth;\r\n let tipY = Math.floor(offset / FingerTip.cellsWidth);\r\n tipX -= FingerTip.cellsWidth / 2;\r\n tipY -= FingerTip.cellsWidth / 2;\r\n return new Point2D(tipX, tipY);\r\n }\r\n static offsetOfCoordinates(pt: Point2D): number {\r\n if (pt.x < 0 || pt.y < 0 || pt.x >= FingerTip.cellsWidth || pt.y >= FingerTip.cellsWidth) {\r\n return -1;\r\n }\r\n return pt.y * FingerTip.cellsWidth + pt.x;\r\n }\r\n // this just is. 64x64 grid of alpha values (255-a actuall) to draw a realistic finger print in any color\r\n static printInvertedAlphas = [\r\n 0,0,0,0,42,72,188,181,95,172,189,31,97,196,64,108,166,55,147,190,93,88,159,128,40,15,73,151,222,247,199,142,84,29,31,86,141,192,231,212,170,143,132,133,144,167,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,0,0,0,236,195,78,104,216,149,22,161,162,46,166,94,78,175,66,86,179,103,18,44,141,223,189,125,67,19,47,102,158,214,223,167,114,64,21,12,27,56,71,71,54,17,13,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,0,0,0,111,17,153,236,91,33,192,106,82,174,41,141,129,50,191,147,20,69,180,206,107,26,45,111,173,232,230,169,103,41,19,54,95,138,183,211,209,190,178,175,182,190,170,155,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,0,0,54,54,205,197,53,65,206,70,138,145,44,188,85,124,237,90,60,181,161,63,45,133,213,229,166,107,63,78,126,171,214,214,163,112,67,41,59,78,88,87,80,63,26,12,28,93,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,0,44,129,244,135,16,112,215,60,180,105,87,205,71,188,215,69,160,159,36,70,184,216,131,85,96,136,204,251,251,187,109,40,16,73,147,211,252,254,254,249,241,242,249,251,213,161,111,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,0,218,231,76,22,166,206,68,202,79,148,199,71,222,162,100,223,89,43,181,188,74,23,113,213,249,219,161,98,29,37,89,161,234,208,153,107,71,44,45,52,53,41,25,23,36,56,83,122,183,0,0,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,0,205,61,46,211,185,79,205,77,199,173,68,224,105,156,229,54,100,215,83,14,119,230,202,109,41,48,112,181,235,253,207,112,35,23,85,148,194,202,192,185,186,194,199,195,175,143,110,75,50,171,0,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,0,25,87,236,148,94,199,81,227,147,66,202,72,163,226,61,141,189,31,24,179,216,128,76,148,223,252,207,161,115,56,27,102,174,176,111,51,17,16,51,82,104,111,108,115,77,48,29,49,81,129,211,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,102,131,240,99,121,180,66,236,123,67,183,55,172,136,70,145,144,67,40,209,126,118,205,253,203,117,32,14,59,122,188,189,110,27,33,85,140,197,245,250,224,194,169,151,136,134,160,193,187,134,87,63,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,254,202,52,155,139,37,220,104,72,201,42,174,118,95,112,132,155,102,209,67,108,231,143,52,53,113,173,220,171,101,64,106,164,218,244,197,147,101,56,21,22,62,101,131,151,156,145,119,100,125,175,202,0,0,0,0,0,0,0,0,0,0,0,\r\n 0,129,36,186,96,23,200,88,81,221,56,172,87,190,57,155,193,123,196,60,138,224,139,179,219,195,147,88,91,154,222,247,190,126,67,43,84,121,149,179,214,232,180,134,104,97,113,118,147,190,221,177,119,128,0,0,0,0,0,0,0,0,0,0,\r\n 147,90,215,67,22,184,76,92,225,56,173,72,221,79,152,160,160,150,67,83,167,139,109,81,88,129,171,194,163,117,69,56,106,163,221,254,239,196,149,98,48,38,97,160,217,252,254,249,204,146,95,68,70,103,172,0,0,0,0,0,0,0,0,0,\r\n 0,241,60,31,180,62,96,226,53,175,72,122,126,111,123,193,88,182,108,122,123,127,121,110,104,84,79,93,102,113,137,133,110,97,96,93,96,122,138,145,156,149,119,81,50,34,39,54,82,140,209,248,249,225,205,0,0,0,0,0,0,0,0,0,\r\n 0,82,41,178,44,84,232,54,175,97,124,134,74,105,223,34,82,100,125,141,112,88,85,103,109,110,82,63,61,66,79,100,131,168,200,242,171,112,119,144,159,172,184,195,201,202,197,183,161,128,86,47,51,97,158,0,0,0,0,0,0,0,0,0,\r\n 148,54,174,31,61,235,66,168,127,121,102,105,56,179,50,132,245,208,114,104,151,173,167,127,80,67,94,126,132,141,151,159,159,134,116,95,96,120,197,198,121,104,86,68,44,28,31,50,84,133,192,245,227,173,117,112,0,0,0,0,0,0,0,0,\r\n 122,187,26,49,225,85,171,126,98,79,218,14,145,92,142,233,97,111,148,91,79,123,176,193,162,123,104,93,107,112,112,117,117,96,119,52,100,147,142,102,131,218,172,167,165,158,152,158,156,119,74,37,79,142,214,236,0,0,0,0,0,0,0,0,\r\n 226,34,53,221,94,185,109,82,90,217,138,103,95,100,185,42,145,60,102,136,124,129,149,120,112,95,81,77,74,72,71,73,76,81,108,131,153,152,105,105,144,122,97,128,113,69,34,12,35,102,175,236,210,161,137,80,63,180,0,0,0,0,0,0,\r\n 69,78,215,80,197,100,78,110,210,161,55,176,34,220,32,134,74,156,48,109,132,136,130,155,156,154,137,119,108,105,104,109,120,131,135,136,129,112,106,146,155,108,140,130,106,196,231,149,145,150,120,94,123,127,126,120,126,162,0,0,0,0,0,0,\r\n 126,172,41,196,113,81,117,214,127,144,126,77,150,101,79,86,196,113,145,103,209,172,82,85,138,180,202,209,204,191,182,171,164,160,152,121,74,37,73,96,105,121,162,110,139,147,93,133,128,70,103,136,201,213,179,134,89,52,0,0,0,0,0,0,\r\n 88,21,182,123,91,117,146,206,94,107,169,23,214,18,130,145,119,181,144,235,85,136,194,117,61,50,63,85,104,118,129,129,112,80,42,51,103,162,183,127,47,88,127,122,157,75,172,154,66,166,209,168,69,17,66,125,184,240,254,0,0,0,0,0,\r\n 84,195,76,109,108,142,76,106,211,52,122,109,119,111,48,207,154,132,232,60,205,134,34,164,191,147,128,121,117,105,81,74,88,121,169,197,154,77,19,88,191,190,83,133,142,117,124,82,187,171,88,91,177,194,153,113,69,26,62,125,0,0,0,0,\r\n 0,80,140,86,133,33,143,71,191,124,41,176,38,149,92,140,164,189,62,166,137,27,204,81,110,175,178,188,187,158,139,136,143,151,117,43,59,138,197,129,31,67,201,163,64,175,129,138,187,177,182,165,94,36,95,155,198,225,203,162,221,0,0,0,\r\n 207,182,57,126,59,49,151,149,101,152,26,186,107,75,137,168,83,149,67,189,19,190,81,191,109,78,98,100,117,145,149,133,101,62,56,99,101,114,82,91,171,139,28,110,214,100,92,188,131,98,166,185,158,114,52,42,38,11,29,77,173,0,0,0,\r\n 0,42,125,74,218,155,93,209,35,134,108,108,150,19,125,174,142,32,182,39,170,78,166,57,178,248,179,118,85,78,77,76,98,134,174,174,115,37,81,176,158,81,155,105,48,212,180,115,100,155,116,34,73,140,156,139,100,81,50,64,132,0,0,0,\r\n 196,161,86,125,137,196,64,134,114,87,165,30,135,79,140,85,146,90,112,82,117,123,72,122,210,48,49,172,196,161,148,153,163,164,117,58,80,156,164,66,61,180,141,106,174,51,168,98,101,102,57,104,133,150,119,80,80,124,146,114,80,92,0,0,\r\n 0,73,115,121,83,150,140,39,179,23,189,36,98,89,199,110,59,200,16,159,67,151,56,224,63,102,196,88,112,144,148,143,104,54,98,180,212,128,41,92,129,34,77,190,104,195,74,147,188,69,71,106,108,49,71,131,180,183,142,96,63,102,0,0,\r\n 0,139,51,158,119,61,167,24,213,41,141,72,96,48,150,128,96,130,81,93,189,37,210,64,83,145,134,210,158,159,154,154,175,204,182,106,46,128,233,167,50,141,122,26,137,114,169,83,130,191,176,104,26,119,157,69,13,19,73,141,214,254,0,0,\r\n 174,123,191,64,148,45,120,72,147,111,114,82,116,69,115,115,149,45,164,78,129,175,119,59,102,189,144,124,120,130,122,113,98,91,48,59,120,132,86,155,245,122,94,209,125,95,118,113,70,102,69,117,199,106,33,133,169,138,85,37,14,52,167,0,\r\n 0,112,212,33,123,126,52,142,105,151,92,63,120,120,93,75,151,33,147,166,73,176,59,98,171,106,203,120,202,111,88,129,138,81,65,93,105,44,102,200,142,97,173,35,168,211,94,131,66,65,96,147,48,157,217,107,22,22,56,94,110,119,160,0,\r\n 0,132,120,116,60,174,13,216,43,201,53,58,118,135,124,39,106,128,104,175,153,49,142,95,108,190,119,141,103,106,171,98,99,114,115,134,52,103,139,54,151,123,63,188,40,149,225,91,159,60,114,83,229,123,75,203,243,181,136,129,136,149,174,0,\r\n 168,208,36,179,55,145,53,234,25,247,24,107,109,128,152,25,110,198,106,119,148,141,52,147,161,98,124,150,94,122,127,153,119,121,109,19,144,138,23,127,121,84,180,55,189,61,142,224,84,184,62,175,81,215,191,35,63,134,174,176,176,180,192,224,\r\n 0,192,47,168,152,88,144,172,83,235,56,88,110,108,189,43,82,196,140,100,70,149,124,99,90,148,148,96,124,154,111,133,215,111,185,228,134,88,184,56,57,138,94,173,76,195,83,135,212,70,199,69,183,75,151,232,129,63,33,26,27,33,47,73,\r\n 0,94,158,99,232,24,232,110,151,190,133,39,118,87,208,111,137,131,130,119,106,63,122,151,102,109,120,135,121,98,145,101,86,119,45,44,64,144,65,167,71,69,126,83,194,83,174,89,123,200,58,204,76,171,110,51,149,212,241,239,213,168,111,98,\r\n 0,66,218,87,176,89,250,34,223,121,180,23,123,113,178,173,142,110,89,91,96,141,85,73,149,148,109,90,86,136,103,46,137,97,141,115,170,58,174,47,182,89,107,129,111,182,78,168,81,149,197,49,194,113,108,163,67,18,13,13,23,57,99,162,\r\n 0,225,81,168,69,189,189,55,251,58,208,60,137,157,145,133,147,67,96,111,120,155,134,30,117,166,150,118,120,118,98,130,56,54,186,154,92,149,107,218,56,199,207,88,84,155,119,70,196,72,147,211,53,135,180,118,142,203,203,213,237,198,113,42,\r\n 0,164,58,167,53,254,93,141,184,105,139,134,180,136,113,119,151,24,63,75,113,134,161,106,40,127,153,131,120,75,96,135,34,116,171,111,111,92,217,203,178,77,132,156,44,104,181,129,78,224,72,103,235,139,51,117,166,156,110,76,60,59,58,76,\r\n 0,48,200,34,163,226,15,207,80,180,79,169,163,118,92,112,167,48,98,116,83,129,150,128,40,98,122,151,104,133,111,114,77,212,62,115,162,145,123,126,160,50,215,65,141,83,77,137,155,63,222,105,46,196,241,141,40,20,44,53,48,31,18,21,\r\n 207,211,103,40,250,112,63,212,31,225,27,162,169,126,63,115,178,95,106,142,45,133,180,123,63,194,72,139,109,145,85,28,215,75,184,189,96,93,99,191,88,115,157,51,249,37,133,177,95,124,38,159,190,50,112,240,252,203,162,152,143,133,122,107,\r\n 0,184,12,157,225,17,183,98,127,115,104,107,164,135,38,115,149,92,91,154,66,250,216,132,100,105,179,114,131,123,35,100,135,138,119,97,114,105,84,88,188,67,135,60,200,128,184,93,168,149,105,75,78,176,113,34,121,127,73,27,65,119,120,225,\r\n 0,37,47,250,97,65,216,18,185,16,165,107,120,140,35,119,128,132,118,156,122,246,116,139,108,86,222,132,88,109,123,104,71,139,86,155,52,48,101,107,58,35,165,110,37,134,141,32,248,112,112,250,159,137,120,177,162,141,144,148,88,96,117,88,\r\n 126,12,182,196,17,208,88,93,58,30,137,181,70,145,90,134,103,135,123,120,128,162,105,137,127,129,136,99,88,152,125,61,142,70,106,76,86,101,121,127,100,111,120,121,137,45,196,26,249,66,120,98,12,22,63,56,25,31,67,141,120,99,160,126,\r\n 37,95,248,55,132,190,20,100,126,112,41,238,14,159,105,132,98,152,105,115,145,141,104,138,224,132,134,62,155,150,62,188,101,97,115,53,68,58,84,126,98,91,65,137,55,111,237,91,205,61,173,31,212,248,182,213,176,172,214,67,162,163,44,117,\r\n 137,240,115,76,232,49,112,52,173,111,62,171,25,132,83,79,139,168,43,83,173,143,103,123,160,139,82,123,190,37,208,47,150,146,95,110,178,174,154,151,171,173,110,65,168,235,140,177,94,132,57,170,192,105,198,147,133,156,49,172,74,102,186,81,\r\n 0,165,51,200,105,68,87,160,91,101,129,99,74,113,57,88,159,149,14,85,207,141,116,109,136,113,99,191,73,140,98,154,80,117,88,160,142,98,82,73,88,141,202,184,174,125,193,150,75,149,75,151,116,241,112,168,105,79,127,54,172,104,53,168,\r\n 0,47,180,158,19,153,37,213,123,40,159,19,137,79,20,68,206,144,20,113,218,133,127,104,152,153,142,90,147,138,95,134,109,57,148,121,55,85,120,124,101,58,50,110,195,216,109,129,152,39,104,149,214,82,178,70,129,85,121,170,30,100,178,42,\r\n 0,164,241,29,136,58,172,120,161,18,148,12,143,83,29,45,231,173,31,113,134,119,127,158,240,120,115,179,152,105,169,101,70,126,44,76,157,175,165,158,168,181,151,110,62,115,188,79,63,106,195,163,78,133,68,157,87,203,125,22,154,143,75,77,\r\n 0,0,144,72,150,79,234,54,124,76,66,38,109,80,40,38,216,189,66,106,127,124,171,155,149,112,123,156,119,174,127,145,141,17,91,136,102,43,22,40,35,28,89,169,219,117,62,150,140,216,101,96,80,105,147,130,224,72,64,127,63,110,39,88,\r\n 0,0,62,193,26,203,95,142,25,135,12,142,24,131,65,39,192,182,145,109,158,126,223,60,132,180,80,74,84,115,137,188,107,166,102,26,69,144,184,190,187,189,152,109,109,137,128,164,188,55,110,51,109,104,162,130,72,110,43,83,149,70,185,157,\r\n 0,0,184,65,102,143,91,91,116,73,53,154,35,141,97,52,154,164,140,97,227,139,150,108,155,114,118,113,108,72,121,66,175,166,120,135,150,153,148,139,136,128,131,132,110,155,200,92,47,58,44,139,89,132,50,167,122,37,151,136,101,239,142,18,\r\n 0,0,169,47,142,121,131,93,167,19,201,47,121,121,119,82,129,152,156,86,135,135,130,202,73,72,210,92,70,177,76,130,133,76,111,160,162,160,149,152,158,181,219,215,149,86,94,61,35,147,143,131,132,51,198,72,92,174,84,141,240,121,28,186,\r\n 0,0,170,137,150,123,103,198,24,168,143,18,216,66,113,172,83,142,141,118,61,118,152,234,67,161,51,207,93,59,174,123,48,169,201,118,45,17,40,58,61,51,40,95,157,130,26,99,142,94,180,85,99,183,58,152,124,97,191,194,51,50,194,94,\r\n 0,0,224,162,100,133,190,28,153,179,17,157,200,52,147,163,51,220,209,129,32,131,230,129,191,85,164,54,199,100,80,166,199,66,37,107,159,166,142,125,115,118,116,63,17,72,118,71,162,146,52,163,119,106,160,68,137,215,111,20,122,155,77,124,\r\n 0,0,245,89,172,157,33,170,117,19,160,235,100,177,69,142,65,129,212,143,35,198,151,114,227,105,152,157,35,179,129,149,167,120,134,132,114,93,82,85,99,121,150,176,150,101,157,165,68,128,128,78,172,96,65,204,168,44,74,184,81,110,99,60,\r\n 0,0,216,204,114,105,178,48,47,201,202,90,171,143,164,36,160,47,147,177,77,161,71,221,76,247,72,158,197,41,101,176,102,141,186,153,123,100,107,121,121,101,79,99,162,147,120,165,133,54,151,151,66,148,187,96,35,163,160,90,176,64,128,189,\r\n 0,0,0,200,211,130,19,120,189,101,134,201,123,153,58,89,146,127,85,163,127,100,130,163,148,90,240,105,103,212,128,30,111,165,120,92,119,166,175,165,155,150,131,87,119,185,122,38,127,145,39,93,212,136,78,126,206,85,140,126,51,195,125,29,\r\n 0,0,0,0,105,71,201,122,126,208,149,73,142,40,72,228,37,202,31,139,211,19,207,40,240,152,60,213,202,83,73,152,128,32,52,117,140,120,99,80,63,53,66,91,51,61,116,115,35,62,177,198,99,125,213,135,60,182,67,115,213,65,74,224,\r\n 0,0,0,0,225,212,92,221,197,96,117,120,15,86,227,62,124,132,121,125,172,144,83,179,79,242,214,81,84,163,196,96,37,123,135,114,73,53,50,60,80,105,139,157,139,78,17,82,185,246,146,120,213,182,48,125,190,63,191,160,33,147,238,94,\r\n 0,0,0,0,0,102,241,196,92,177,113,14,131,199,42,84,224,38,209,51,75,210,111,101,196,84,143,205,218,161,107,171,218,110,26,25,56,96,142,170,163,120,57,20,72,145,153,111,195,126,185,222,88,63,206,141,104,193,73,60,214,200,44,94,\r\n 0,0,0,0,0,0,169,135,238,105,43,187,127,15,99,223,58,145,86,164,145,98,136,130,38,133,163,94,32,30,63,104,145,175,189,153,126,110,105,110,104,94,108,243,191,81,127,98,89,234,142,35,149,206,100,170,113,17,128,249,162,24,150,229,\r\n 0,0,0,0,0,0,0,252,103,110,199,55,19,152,175,50,187,163,129,71,84,130,211,209,169,62,31,127,177,176,158,147,126,102,91,88,88,91,101,118,138,149,152,77,117,172,35,123,195,53,90,191,114,146,180,40,53,205,252,125,46,207,212,61,\r\n 0,0,0,0,0,0,0,158,174,156,20,63,187,92,84,150,66,50,148,186,128,64,62,77,105,250,204,142,103,72,47,27,38,62,81,88,80,70,62,64,74,106,159,216,124,44,167,105,57,158,104,112,222,110,19,132,248,219,72,83,239,170,47,207,\r\n 0,0,0,0,0,0,0,253,148,48,147,123,85,136,63,49,174,194,80,58,156,188,149,134,88,72,67,61,60,77,110,133,136,136,133,125,114,112,120,127,114,102,79,43,135,150,82,161,123,63,202,188,43,73,216,236,120,20,133,243,109,52,214,93,\r\n 0,0,0,0,0,0,0,0,245,183,50,147,95,32,156,209,80,81,167,121,32,68,138,168,170,172,178,169,176,182,179,170,165,166,162,131,105,91,87,94,113,145,182,160,101,178,149,43,145,225,95,38,169,250,146,27,42,194,206,51,88,217,73,183,\r\n 0,0,0,0,0,0,0,0,0,207,187,33,105,225,119,41,179,135,23,105,217,194,94,56,93,120,106,68,43,46,65,82,85,79,84,112,120,152,238,237,212,158,111,153,156,43,99,215,131,33,132,244,201,56,16,120,233,124,37,159,183,88,219,255];\r\n \r\n static setCellDepths(fCellSrc: FlowCell) {\r\n if (fCellSrc.finalKind == CellKind.corona) {\r\n fCellSrc.maxTouchDepth = Page.maxCoronaDepth;\r\n fCellSrc.minScrapeDepth = Page.maxCoronaDepth;\r\n fCellSrc.preferredScrapeDepth = Page.maxCoronaDepth;\r\n fCellSrc.maxKindPushDepth = Page.maxCoronaDepth;\r\n } else if (fCellSrc.finalKind == CellKind.meniscus) {\r\n fCellSrc.maxTouchDepth = FingerTip.maxMeniscusTouchDepth;\r\n fCellSrc.minScrapeDepth = FingerTip.minMeniscusScrapeDepth;\r\n fCellSrc.preferredScrapeDepth = FingerTip.preferredMeniscusScrapeDepth;\r\n fCellSrc.maxKindPushDepth = Page.maxCoronaDepth;\r\n } else if (fCellSrc.finalKind == CellKind.smash) {\r\n let a = FingerTip.printInvertedAlphas[fCellSrc.ptOnPrint.x + fCellSrc.ptOnPrint.y * 64];\r\n // flip it, make it a float and darken a bit\r\n a = ((255-a)/255.0);\r\n fCellSrc.maxTouchDepth = FingerTip.maxSmashTouchDepth;\r\n fCellSrc.minScrapeDepth = FingerTip.minSmashScrapeDepth;\r\n fCellSrc.preferredScrapeDepth = FingerTip.minSmashScrapeDepth + Math.round(a * FingerTip.preferredSmashScrapeDepth);\r\n fCellSrc.maxKindPushDepth = FingerTip.maxMeniscusScrapeDepth;\r\n } else if (fCellSrc.finalKind == CellKind.knife) {\r\n fCellSrc.maxTouchDepth = 0;\r\n fCellSrc.minScrapeDepth = 0;\r\n fCellSrc.preferredScrapeDepth = 0; \r\n } else if (fCellSrc.finalKind == CellKind.background) {\r\n fCellSrc.maxTouchDepth = 0;\r\n fCellSrc.minScrapeDepth = 0;\r\n fCellSrc.preferredScrapeDepth = 0;\r\n } else {\r\n console.log(\"setCellDepths: unknown kind\");\r\n }\r\n \r\n } \r\n\r\n // there are a somewhat limited number of circles that matter, so pre compute them\r\n // these are the coordinates of the top left quadrant for filled pixels in a FingerTip.maxFingerRadius X FingerTip.maxFingerRadius grid.\r\n\r\n static circleQuad35= [29,34, 25,28, 22,25, 20,21, 18,19, 17,17, 15,16, 14,14, 13,13, 11,12, 10,11, 9,10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 6, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n static circleQuad34= [-1,-1, 29,34, 26,28, 22,25, 20,21, 18,20, 17,18, 15,16, 14,15, 13,13, 12,12, 11,11, 10,10, 9, 9, 8, 8, 7, 8, 7, 7, 6, 6, 5, 6, 5, 5, 4, 5, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\r\n static circleQuad33= [-1,-1, -1,-1, 29,34, 26,28, 22,25, 21,22, 19,20, 17,18, 16,16, 14,15, 13,14, 12,13, 11,12, 10,11, 9,10, 9, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 4, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2];\r\n static circleQuad32= [-1,-1, -1,-1, -1,-1, 29,34, 26,28, 23,25, 21,22, 19,20, 17,18, 16,17, 15,15, 14,14, 13,13, 12,12, 11,11, 10,10, 9, 9, 8, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3];\r\n static circleQuad31= [-1,-1, -1,-1, -1,-1, -1,-1, 29,34, 26,28, 23,25, 21,22, 19,20, 18,19, 16,17, 15,16, 14,15, 13,13, 12,12, 11,12, 10,11, 10,10, 9, 9, 8, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4];\r\n static circleQuad30= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 29,34, 26,28, 23,25, 21,22, 20,21, 18,19, 17,17, 16,16, 14,15, 13,14, 13,13, 12,12, 11,11, 10,10, 10,10, 9, 9, 8, 9, 8, 8, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\r\n static circleQuad29= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 29,34, 26,28, 23,25, 22,23, 20,21, 18,19, 17,18, 16,16, 15,15, 14,14, 13,13, 12,12, 11,12, 11,11, 10,10, 10,10, 9, 9, 8, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6];\r\n static circleQuad28= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 29,34, 26,29, 24,25, 22,23, 20,21, 19,19, 17,18, 16,17, 15,15, 14,14, 13,14, 13,13, 12,12, 11,11, 11,11, 10,10, 10,10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7];\r\n static circleQuad27= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 30,34, 26,29, 24,26, 22,23, 20,21, 19,20, 18,18, 16,17, 15,16, 15,15, 14,14, 13,13, 12,13, 12,12, 11,11, 11,11, 10,10, 10,10, 9,10, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8];\r\n static circleQuad26= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 30,34, 27,29, 24,26, 22,23, 21,22, 19,20, 18,19, 17,17, 16,16, 15,15, 14,15, 14,14, 13,13, 12,13, 12,12, 11,11, 11,11, 11,11, 10,10, 10,10, 10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9];\r\n static circleQuad25= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 30,34, 27,29, 24,26, 23,24, 21,22, 20,20, 18,19, 17,18, 16,17, 16,16, 15,15, 14,14, 14,14, 13,13, 12,13, 12,12, 12,12, 11,11, 11,11, 11,11, 10,10, 10,10, 10,10, 10,10, 10,10];\r\n static circleQuad24= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 30,34, 27,29, 25,26, 23,24, 21,22, 20,21, 19,19, 18,18, 17,17, 16,16, 15,16, 15,15, 14,14, 14,14, 13,13, 13,13, 12,12, 12,12, 12,12, 11,11, 11,11, 11,11, 11,11, 11,11];\r\n static circleQuad23= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 30,34, 27,29, 25,26, 23,24, 22,22, 20,21, 19,20, 18,19, 17,18, 17,17, 16,16, 15,15, 15,15, 14,14, 14,14, 13,13, 13,13, 13,13, 12,12, 12,12, 12,12, 12,12, 12,12];\r\n static circleQuad22= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 30,34, 27,30, 25,26, 23,24, 22,23, 21,21, 20,20, 19,19, 18,18, 17,17, 16,17, 16,16, 15,15, 15,15, 14,14, 14,14, 14,14, 13,14, 13,13, 13,13, 13,13, 13,13];\r\n static circleQuad21= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 31,34, 27,30, 25,26, 24,25, 22,23, 21,22, 20,20, 19,19, 18,19, 18,18, 17,17, 16,17, 16,16, 15,15, 15,15, 15,15, 15,15, 14,14, 14,14, 14,14, 14,14];\r\n static circleQuad20= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 31,34, 27,30, 26,27, 24,25, 23,23, 21,22, 20,21, 20,20, 19,19, 18,18, 18,18, 17,17, 16,17, 16,16, 16,16, 16,16, 15,15, 15,15, 15,15, 15,15];\r\n static circleQuad19= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 31,34, 28,30, 26,27, 24,25, 23,24, 22,22, 21,21, 20,20, 19,20, 19,19, 18,18, 18,18, 17,17, 17,17, 17,17, 16,16, 16,16, 16,16, 16,16];\r\n static circleQuad18= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 31,34, 28,30, 26,27, 25,25, 23,24, 22,23, 21,22, 21,21, 20,20, 19,19, 19,19, 18,18, 18,18, 18,18, 17,17, 17,17, 17,17, 17,17];\r\n static circleQuad17= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 31,34, 28,30, 26,27, 25,26, 24,24, 23,23, 22,22, 21,21, 20,21, 20,20, 19,19, 19,19, 19,19, 18,18, 18,18, 18,18, 18,18];\r\n static circleQuad16= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 31,34, 28,30, 27,28, 25,26, 24,25, 23,24, 22,23, 22,22, 21,21, 20,21, 20,20, 20,20, 19,19, 19,19, 19,19, 19,19];\r\n static circleQuad15= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 31,34, 29,31, 27,28, 26,26, 25,25, 24,24, 23,23, 22,22, 22,22, 21,21, 21,21, 20,21, 20,20, 20,20, 20,20];\r\n static circleQuad14= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 32,34, 29,31, 27,28, 26,27, 25,25, 24,24, 23,24, 23,23, 22,22, 22,22, 22,22, 21,21, 21,21, 21,21];\r\n static circleQuad13= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 32,34, 29,31, 28,28, 26,27, 25,26, 25,25, 24,24, 23,23, 23,23, 23,23, 22,22, 22,22, 22,22];\r\n static circleQuad12= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 32,34, 29,31, 28,29, 27,27, 26,26, 25,25, 24,25, 24,24, 24,24, 23,23, 23,23, 23,23];\r\n static circleQuad11= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 32,34, 30,31, 28,29, 27,28, 26,27, 26,26, 25,25, 25,25, 24,24, 24,24, 24,24];\r\n static circleQuad10= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 32,34, 30,31, 29,29, 28,28, 27,27, 26,26, 26,26, 25,25, 25,25, 25,25];\r\n static circleQuad09= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 32,34, 30,31, 29,30, 28,28, 27,28, 27,27, 26,26, 26,26, 26,26];\r\n static circleQuad08= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 32,34, 31,31, 29,30, 29,29, 28,28, 27,27, 27,27, 27,27];\r\n static circleQuad07= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 32,34, 31,32, 30,30, 29,29, 28,29, 28,28, 28,28];\r\n static circleQuad06= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 33,34, 31,32, 30,31, 30,30, 29,29, 29,29];\r\n static circleQuad05= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 33,34, 32,32, 31,31, 30,30, 30,30];\r\n static circleQuad04= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 33,34, 32,33, 31,32, 31,31];\r\n static circleQuad03= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 34,34, 33,33, 32,32];\r\n static circleQuad02= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 34,34, 33,33];\r\n static circleQuad01= [-1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1, 34,34];\r\n \r\n static circleQuads = [[], FingerTip.circleQuad01, FingerTip.circleQuad02, FingerTip.circleQuad03, FingerTip.circleQuad04, FingerTip.circleQuad05, FingerTip.circleQuad06, FingerTip.circleQuad07, FingerTip.circleQuad08, FingerTip.circleQuad09, FingerTip.circleQuad10, FingerTip.circleQuad11, FingerTip.circleQuad12, FingerTip.circleQuad13, FingerTip.circleQuad14, FingerTip.circleQuad15, FingerTip.circleQuad16, FingerTip.circleQuad17, FingerTip.circleQuad18, FingerTip.circleQuad19, FingerTip.circleQuad20, FingerTip.circleQuad21, FingerTip.circleQuad22, FingerTip.circleQuad23, FingerTip.circleQuad24, FingerTip.circleQuad25, FingerTip.circleQuad26, FingerTip.circleQuad27, FingerTip.circleQuad28, FingerTip.circleQuad29, FingerTip.circleQuad30, FingerTip.circleQuad31, FingerTip.circleQuad32, FingerTip.circleQuad33, FingerTip.circleQuad34, FingerTip.circleQuad35];\r\n static smearChannelDepths = [\r\n 7,7,3,10,6,10,14,10,\r\n 3,7,3,10,4,10,10,6,\r\n 10,5,14,5,14,4,8,4,\r\n 3,7,3,10,4,10,10,6,\r\n 10,14,5,7,7,3,10,3,\r\n 7,3,7,10,3,7,3,10,\r\n 4,10,10,6,10,5,7,4,\r\n 8,4,8,4,4,6,10,4,\r\n 7,7,3,10,6,10,14,10,\r\n 3,7,3,10,4,10,10,6,\r\n 10,5,14,5,14,4,8,4,\r\n 3,7,3,10,4,10,10,6,\r\n 10,14,5,7,7,3,10,3,\r\n 7,3,7,10,3,7,3,10,\r\n 4,10,10,6,10,5,7,4];\r\n static smearChannelOctantCenter = [0 * 8 + 32, 1*8 + 32, 2*8 + 32, 7*8 + 32, 0, 3*8 + 32, 6*8 + 32, 5*8 + 32, 4*8 + 32];\r\n //static smearChannelDepths = [7,7,3,10,3,7,3,10,4,10,10,6,10,14,5,14,5,14,4,8,4,5,14,5,5,8,9,3,3,9,7,5,7,4,8,4,8,4,4,6,4,13,8,13,7,7,3,5,3,7,10,7,11,6,11,6,11,5,5,9,6,9,9];\r\n \r\n static newPaintVolume(paintRadius: number, smashOnly: boolean) : number {\r\n\r\n // heuristics based on taste, smallest radius gives no corona\r\n // largest radius gives max\r\n let coronaGoal = (.5 * FingerTip.maxCoronaWidth) * (paintRadius - FingerTip.minFingerRadius) / (FingerTip.maxFingerRadius - FingerTip.minFingerRadius);\r\n\r\n let smashRadius = FingerTip.smashRadiusOf(paintRadius)\r\n let smashArea = smashRadius * smashRadius * Math.PI;\r\n let meniscusArea = (paintRadius * paintRadius * Math.PI) - smashArea;\r\n let coronaArea = ((paintRadius + coronaGoal) * (paintRadius + coronaGoal) * Math.PI) - (meniscusArea + smashArea);\r\n\r\n let avgSmash = FingerTip.minSmashScrapeDepth + FingerTip.preferredSmashScrapeDepth / 2;\r\n let totalPaint = smashArea * avgSmash + meniscusArea * FingerTip.maxMeniscusTouchDepth + coronaArea * Page.maxCoronaDepth;\r\n if (smashOnly) {\r\n totalPaint = smashArea * avgSmash;\r\n }\r\n return totalPaint;\r\n }\r\n\r\n static doFilledCircle(outerRadius: number, innerRadius: number, withAction: (i:number, pt: Point2D)=>void) {\r\n if (outerRadius === 0) {\r\n return;\r\n }\r\n // pattern for outside and inside edges of donut thing. inclusive. so when O==I we get just an outline\r\n let circleQuadO = FingerTip.circleQuads[outerRadius];\r\n let circleQuadI = FingerTip.circleQuads[innerRadius];\r\n\r\n // coordinates are reported for finger width grid, but size can go beyond that\r\n // so there are a bunch of +3 and -3 things here. sorry\r\n const fillQuad = (translate: (iX:number, iY:number)=>[x:number, y:number])=> {\r\n for(let iRowPair = 0; iRowPair < FingerTip.maxPrintRadius; iRowPair ++) {\r\n let startO = circleQuadO[iRowPair * 2];\r\n let endO = circleQuadO[iRowPair * 2 + 1];\r\n let startI = startO;\r\n if (startO !== -1) { // -1 means empty row\r\n if (innerRadius !== 0) {\r\n if (outerRadius === innerRadius) {\r\n // same circle, so don't clip out overlap with self\r\n startI = endO;\r\n } else {\r\n // go from start of outer to start of inner\r\n startI = circleQuadI[iRowPair * 2];\r\n if (startI === -1) { \r\n // no inside bound on that line, so go to middle\r\n startI = FingerTip.maxPrintRadius - 1;\r\n }\r\n }\r\n } else {\r\n // inner radius is 0, so go to middle\r\n startI = FingerTip.maxPrintRadius - 1;\r\n }\r\n // between the start outer and start inner inclusive\r\n for(let iCol = startO; iCol <= startI; iCol ++) {\r\n // let the caller translate from quad to actual\r\n let tPair = translate(iCol, iRowPair);\r\n let o = (tPair[1]) * FingerTip.cellsWidth + (tPair[0]);\r\n // call the callback with these numbers\r\n withAction(o, new Point2D(tPair[0], tPair[1]));\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n // fill each quadrant with the same shape\r\n fillQuad((iX:number, iY:number)=>{\r\n return [iX, iY];\r\n });\r\n fillQuad((iX:number, iY:number)=>{\r\n return [(FingerTip.maxPrintRadius * 2 -1) - iX , iY];\r\n });\r\n fillQuad((iX:number, iY:number)=>{\r\n return [iX, (FingerTip.maxPrintRadius * 2 -1) - iY];\r\n });\r\n fillQuad((iX:number, iY:number)=>{\r\n return [(FingerTip.maxPrintRadius * 2 -1) - iX, (FingerTip.maxPrintRadius * 2 - 1) - iY];\r\n });\r\n\r\n }\r\n\r\n static getConnectedCircle(outerRadius: number): Array {\r\n\r\n let octantEntries = new Array(8);\r\n // 0 1 2\r\n // 3 4 5\r\n // 6 7 8\r\n\r\n if (outerRadius === 1) {\r\n // special case for smallest circle\r\n let ll = new DoublyLinkedPointList();\r\n let x= FingerTip.maxPrintRadius - 1;\r\n let y= FingerTip.maxPrintRadius - 1;\r\n ll.addLast(new Point2D(x, y));\r\n const node0 = ll.tail!;\r\n ll.addLast(new Point2D(x+1, y));\r\n const node2 = ll.tail!;\r\n ll.addLast(new Point2D(x+1, y+1));\r\n const node8 = ll.tail!;\r\n ll.addLast(new Point2D(x, y+1));\r\n const node6 = ll.tail!;\r\n node6.next = node0;\r\n node0.prev = node6;\r\n return [node0, node0, node2, node6, node0, node2, node6, node8, node8];\r\n\r\n }\r\n\r\n // pattern for outside and inside edges\r\n let circleQuadO = FingerTip.circleQuads[outerRadius];\r\n let llBuildTop = new DoublyLinkedPointList();\r\n let llBuildBottom = new DoublyLinkedPointList();\r\n\r\n let iCenter = 0;\r\n let iFirst = -1;\r\n let iLast = -1;\r\n for(let iRowPair = 0; iRowPair < FingerTip.maxPrintRadius; iRowPair ++) {\r\n let startO = circleQuadO[iRowPair * 2];\r\n let endO = circleQuadO[iRowPair * 2 + 1];\r\n if (startO !== -1) { // -1 means empty row\r\n if (iFirst === -1) {\r\n iFirst = iCenter;\r\n }\r\n iCenter += endO-startO+1;\r\n iLast = iCenter;\r\n }\r\n }\r\n iCenter = Math.floor(iCenter/2);\r\n\r\n // coordinates are reported for finger width grid, but size can go beyond that\r\n const traceQuad = (translate: (iX:number, iY:number)=>[x:number, y:number], \r\n addPoint: (pt: Point2D)=>DoublyLinkedPointListNode, \r\n results: (first: DoublyLinkedPointListNode, mid: DoublyLinkedPointListNode, last: DoublyLinkedPointListNode)=>void)=> {\r\n let firstNode: (DoublyLinkedPointListNode | undefined) = undefined;\r\n let lastNode: (DoublyLinkedPointListNode | undefined) = undefined;\r\n let centerNode: (DoublyLinkedPointListNode | undefined) = undefined;\r\n\r\n let cAdded = 0;\r\n for(let iRowPair = 0; iRowPair < FingerTip.maxPrintRadius; iRowPair ++) {\r\n let startO = circleQuadO[iRowPair * 2];\r\n let endO = circleQuadO[iRowPair * 2 + 1];\r\n if (startO !== -1) { // -1 means empty row\r\n // these are flipped so trace from end to start\r\n for(let iCol = endO; iCol >= startO; iCol --) {\r\n // let the caller translate from quad to actual\r\n let tPair = translate(iCol, iRowPair);\r\n\r\n let pt = new Point2D(tPair[0], tPair[1]);\r\n let node = addPoint(pt);\r\n if (cAdded === iFirst) {\r\n firstNode = node;\r\n } else if (cAdded === iCenter) {\r\n centerNode = node;\r\n } \r\n cAdded++;\r\n if (cAdded === iLast) {\r\n lastNode = node;\r\n }\r\n }\r\n\r\n }\r\n }\r\n \r\n results(firstNode!, centerNode!, lastNode!);\r\n }\r\n\r\n // 0 1 2\r\n // 3 4 5\r\n // 6 7 8\r\n\r\n // fill each quadrant with the same shape\r\n let nodeLeftTop: DoublyLinkedPointListNode;\r\n let nodeLeftBottom: DoublyLinkedPointListNode;\r\n let nodeRightTop: DoublyLinkedPointListNode;\r\n let nodeRightBottom: DoublyLinkedPointListNode;\r\n\r\n traceQuad((iX:number, iY:number)=>{\r\n return [iX, iY];\r\n }, (pt: Point2D)=>{\r\n llBuildTop.addFirst(pt);\r\n return llBuildTop.head!;\r\n\r\n }, (first: DoublyLinkedPointListNode, mid: DoublyLinkedPointListNode, last: DoublyLinkedPointListNode)=>{\r\n octantEntries[3] = last;\r\n octantEntries[0] = mid;\r\n nodeLeftTop = last;\r\n } );\r\n\r\n traceQuad((iX:number, iY:number)=>{\r\n return [(FingerTip.maxPrintRadius * 2 -1) - iX , iY];\r\n }, (pt: Point2D)=>{\r\n llBuildTop.addLast(pt);\r\n return llBuildTop.tail!;\r\n\r\n }, (first: DoublyLinkedPointListNode, mid: DoublyLinkedPointListNode, last: DoublyLinkedPointListNode)=>{\r\n octantEntries[2] = mid;\r\n octantEntries[1] = first;\r\n nodeRightTop = last;\r\n } );\r\n\r\n traceQuad((iX:number, iY:number)=>{\r\n return [iX, (FingerTip.maxPrintRadius * 2 -1) - iY];\r\n }, (pt: Point2D)=>{\r\n llBuildBottom.addLast(pt);\r\n return llBuildBottom.tail!;\r\n\r\n }, (first: DoublyLinkedPointListNode, mid: DoublyLinkedPointListNode, last: DoublyLinkedPointListNode)=>{\r\n octantEntries[7] = first;\r\n octantEntries[6] = mid;\r\n nodeLeftBottom = last;\r\n } );\r\n\r\n traceQuad((iX:number, iY:number)=>{\r\n return [(FingerTip.maxPrintRadius * 2 -1) - iX, (FingerTip.maxPrintRadius * 2 - 1) - iY];\r\n }, (pt: Point2D)=>{\r\n llBuildBottom.addFirst(pt);\r\n return llBuildBottom.head!;\r\n\r\n }, (first: DoublyLinkedPointListNode, mid: DoublyLinkedPointListNode, last: DoublyLinkedPointListNode)=>{\r\n octantEntries[8] = mid;\r\n octantEntries[5] = last;\r\n nodeRightBottom = last;\r\n } );\r\n \r\n // stitch the results together in a loop.\r\n nodeLeftTop!.prev = nodeLeftBottom!;\r\n nodeLeftBottom!.next = nodeLeftTop!;\r\n nodeRightTop!.next = nodeRightBottom!;\r\n nodeRightBottom!.prev = nodeRightTop!;\r\n\r\n return octantEntries;\r\n\r\n }\r\n\r\n // the known shapes\r\n // map from radius to (map from octantMove to (map from octantFrom to print))\r\n // central shapes are dx,dy=0\r\n static shapes = new Map();\r\n\r\n static getOrMakeShape(radius: number, octantMove: number, octantFrom: number, application: TipApplication, maker: (ft: FingerTip, octantMove: number, octantFrom: number)=>void) : FingerTip {\r\n\r\n let key = `r${radius}-m${octantMove}-f${octantFrom}-${application.instrument}-${application.motion}`;\r\n\r\n if (FingerTip.shapes.has(key)) {\r\n return FingerTip.shapes.get(key)!;\r\n } else {\r\n const ft = new FingerTip(radius, application);\r\n ft.key = key;\r\n maker(ft, octantMove, octantFrom);\r\n FingerTip.shapes.set(key, ft);\r\n return ft;\r\n }\r\n }\r\n\r\n static getCircleShape(radius: number) : FingerTip {\r\n return FingerTip.getOrMakeShape(radius, 4, 4, \r\n {instrument: TipInstrument.finger, motion: TipMotion.press, action: TipAction.unknown, modifier: 0},\r\n (ft: FingerTip, octantMove: number, octantFrom: number)=>{\r\n ft.makeCircleShape();\r\n });\r\n }\r\n\r\n static getScrapeShape(radius: number, octantMove: number, octantFrom: number) : FingerTip {\r\n return FingerTip.getOrMakeShape(radius, octantMove, octantMove, \r\n {instrument: TipInstrument.finger, motion: TipMotion.drag, action: TipAction.unknown, modifier: 0},\r\n (ft: FingerTip, octantMove: number, octantFrom: number)=>{\r\n ft.makeScrapeShape(octantMove);\r\n });\r\n }\r\n static getKnifeShape(radius: number, octantMove: number, octantFrom: number) : FingerTip {\r\n return FingerTip.getOrMakeShape(radius, octantMove, octantFrom, \r\n {instrument: TipInstrument.knife, motion: TipMotion.unknown, action: TipAction.unknown, modifier: 0},\r\n (ft: FingerTip, octantMove: number, octantFrom: number)=>{\r\n ft.makeKnifeShape(octantMove, octantFrom);\r\n });\r\n }\r\n \r\n \r\n static smashRadiusOf(radius: number): number {\r\n if (radius < FingerTip.minFingerRadius) {\r\n return 0;\r\n }\r\n return Math.min(radius - 1, Math.round(radius * (radius-FingerTip.minFingerRadius) / (FingerTip.maxFingerRadius - FingerTip.minFingerRadius)));\r\n }\r\n\r\n application: TipApplication;\r\n radius: number;\r\n smashRadius: number;\r\n effectRadius: number;\r\n octMove: number;\r\n octFrom: number;\r\n key: string = '';\r\n fCellsMeniscusScrape: Array; \r\n fCellsSmashScrape: Array; \r\n fCellsMeniscusBlend: Array;\r\n fCellsCentralRings: Array>;\r\n fCellsKnifeEdge: Array | undefined = undefined;\r\n fCellsKnifeBack: Array | undefined = undefined;\r\n fCellMap: Map>;\r\n allFlowCells:Array;\r\n allCellData: Uint8Array | undefined = undefined;\r\n cellDataRows: Array | undefined = undefined;\r\n tipKnifeBlade: FingerTip | undefined;\r\n minX: number = 0;\r\n minY: number = 0;\r\n maxX: number = 0;\r\n maxY: number = 0;\r\n\r\n constructor(radius: number, application: TipApplication) {\r\n this.radius = Math.max(Math.min(Math.floor(radius), FingerTip.maxFingerRadius), FingerTip.minFingerRadius);\r\n this.smashRadius = FingerTip.smashRadiusOf(this.radius)\r\n this.application = {instrument: application.instrument, action: application.action, motion: TipMotion.press, modifier: application.modifier};\r\n this.octMove = 4;\r\n this.octFrom = 4;\r\n this.effectRadius = this.radius + FingerTip.maxCoronaWidth;\r\n this.fCellsMeniscusScrape = new Array(); \r\n this.fCellsSmashScrape = new Array(); \r\n this.fCellsMeniscusBlend = new Array(); \r\n this.fCellsCentralRings = new Array>(); \r\n this.allFlowCells = new Array();\r\n this.fCellMap = new Map>();\r\n \r\n }\r\n\r\n public getFlowCell(x: number, y: number, newKind: CellKind, alterKind: CellKind) : FlowCell {\r\n // ensures that we only have one description for each point in the cell\r\n if (x >= FingerTip.cellsWidth || y >= FingerTip.cellsWidth || x < 0 || y < 0) {\r\n console.log('out of bounds');\r\n return undefined as any as FlowCell;\r\n }\r\n let col = this.fCellMap.get(x);\r\n if (col === undefined) {\r\n col = new Map();\r\n this.fCellMap.set(x, col);\r\n }\r\n let cell = col.get(y);\r\n \r\n\r\n if (cell === undefined) {\r\n cell = {ptOnPrint:new Point2D(x, y)} as FlowCell;\r\n cell.finalKind = newKind;\r\n col.set(y, cell);\r\n this.allFlowCells.push(cell);\r\n FingerTip.setCellDepths(cell);\r\n } else if (cell.finalKind !== alterKind && alterKind !== CellKind.background) {\r\n cell.finalKind = alterKind\r\n FingerTip.setCellDepths(cell);\r\n }\r\n return cell;\r\n }\r\n\r\n public getSingleChangeFlowCell(pt: Point2D, depth: number, colorRGB: tinycolor.ColorFormats.RGB) : FlowCell {\r\n let fCellPage = this.getFlowCell(pt.x, pt.y, CellKind.background, CellKind.background);\r\n let fCellTip = {\r\n ptOnPrint: fCellPage.ptOnPrint,\r\n finalKind: fCellPage.finalKind,\r\n finalDepth: depth,\r\n stagedDepth: depth,\r\n modified: false,\r\n inBounds: fCellPage.inBounds === undefined ? true : fCellPage.inBounds,\r\n maxKindPushDepth: fCellPage.maxKindPushDepth,\r\n maxTouchDepth: fCellPage.maxTouchDepth,\r\n preferredScrapeDepth: fCellPage.preferredScrapeDepth,\r\n minScrapeDepth: fCellPage.minScrapeDepth,\r\n dvTipCells: new Uint8Array(11),\r\n } as FlowCell;\r\n\r\n\r\n fCellTip.dvTipCells[Page.offWetRed] = colorRGB.r;\r\n fCellTip.dvTipCells[Page.offWetGreen] = colorRGB.g;\r\n fCellTip.dvTipCells[Page.offWetBlue] = colorRGB.b;\r\n fCellTip.move1 = {fCellDest: fCellPage, fraction: 1} as FlowCellMove;\r\n \r\n return fCellTip;\r\n\r\n }\r\n\r\n private finalizeFlowCells() {\r\n // get the first row used and the height used also get range of columns used per row\r\n this.minY = FingerTip.cellsWidth;\r\n this.maxY = 0;\r\n this.minX = FingerTip.cellsWidth;\r\n this.maxX = 0;\r\n let colRangePerRow = new Map();\r\n this.fCellMap.forEach((col, x)=>{\r\n this.minX = Math.min(this.minX, x);\r\n this.maxX = Math.max(this.maxX, x);\r\n col.forEach((cell, y)=>{\r\n this.minY = Math.min(this.minY, y);\r\n this.maxY = Math.max(this.maxY, y);\r\n let range = colRangePerRow.get(y);\r\n if (range === undefined) {\r\n colRangePerRow.set(y, [x, x]);\r\n } else {\r\n range[0] = Math.min(range[0], x);\r\n range[1] = Math.max(range[1], x);\r\n }\r\n });\r\n });\r\n this.cellDataRows = new Array();\r\n let rowOffset = 0;\r\n for (let iRow = this.minY; iRow <= this.maxY; iRow ++) {\r\n let range = colRangePerRow.get(iRow)!;\r\n let row: CellDataRow = {\r\n row: iRow,\r\n firstCell: range[0],\r\n printRelativeStart: rowOffset,\r\n length: (range[1] - range[0] + 1) * 11,\r\n } as CellDataRow;\r\n this.cellDataRows.push(row);\r\n rowOffset += row.length;\r\n }\r\n this.allCellData = new Uint8Array(rowOffset);\r\n\r\n for (const fCell of this.allFlowCells) {\r\n let row = this.cellDataRows[fCell.ptOnPrint.y - this.minY];\r\n let col = fCell.ptOnPrint.x - row.firstCell;\r\n fCell.dvTipCells = new Uint8Array(this.allCellData.buffer, row.printRelativeStart + col * 11, 11);\r\n }\r\n }\r\n\r\n private makeCircleShape() {\r\n // flow goes from circle 1 to circle 2 etc, like a wave.\r\n // to keep it simple, each cell will feed into any adjacent next level\r\n // first run through all circle shapes and fill these helper grids with source descriptions\r\n // then run through the helper grids and wire adjacent ones together\r\n // the circle function gives coordinates relative to the tip with no corona, so need to adjust\r\n\r\n const sourceGrids = new Array>();\r\n for (let iStep = 1; iStep < this.radius+FingerTip.maxCoronaWidth; iStep ++) {\r\n // the helper to stash the results\r\n const sourceGrid = new Array(FingerTip.cellsWidth * FingerTip.cellsWidth);\r\n sourceGrids.push(sourceGrid);\r\n const flowCells = new Array();\r\n this.fCellsCentralRings.push(flowCells);\r\n\r\n // process all cells of the circle \r\n FingerTip.doFilledCircle(iStep, iStep, (i: number, pt: Point2D)=>{\r\n // make a source at that point and put into the grid too (adjusting for other coord system)\r\n let finalKind = CellKind.background;\r\n if (iStep <= this.smashRadius) {\r\n finalKind = CellKind.smash;\r\n } else if (iStep <= this.radius) {\r\n finalKind = CellKind.meniscus;\r\n } else {\r\n finalKind = CellKind.corona;\r\n }\r\n const src = this.getFlowCell(pt.x, pt.y, finalKind, finalKind);\r\n \r\n flowCells.push(src);\r\n sourceGrid[(pt.y) * FingerTip.cellsWidth + (pt.x)] = src;\r\n })\r\n }\r\n\r\n let octLooks = [[new Point2D(-1,1), new Point2D(-1,0), new Point2D(-1,-1), new Point2D(0, -1), new Point2D(1, -1)],\r\n [new Point2D(-1,0), new Point2D(-1,-1), new Point2D(0,-1), new Point2D(1, -1), new Point2D(1, 0)],\r\n [new Point2D(-1,-1), new Point2D(0,-1), new Point2D(1, -1), new Point2D(1, 0), new Point2D(1, 1)],\r\n [new Point2D(0,1), new Point2D(-1,1), new Point2D(-1, 0), new Point2D(-1, -1), new Point2D(0, -1)],\r\n [],\r\n [new Point2D(0,-1), new Point2D(1,-1), new Point2D(1,0), new Point2D(1, 1), new Point2D(0, 1)],\r\n [new Point2D(1,1), new Point2D(0,1), new Point2D(-1,1), new Point2D(-1, 0), new Point2D(-1, -1)],\r\n [new Point2D(1,0), new Point2D(1,1), new Point2D(0,1), new Point2D(-1, 1), new Point2D(-1, 0)],\r\n [new Point2D(1,-1), new Point2D(1,0), new Point2D(1,1), new Point2D(0, 1), new Point2D(-1, 1)]];\r\n\r\n const diag90Frac = .19;\r\n const diag45Frac = .205; \r\n const diag0Frac = .21; \r\n const direct90Frac = .21;\r\n const direct45Frac = .22;\r\n const direct0Frac = .12;\r\n let octFracs = [[diag90Frac, diag45Frac, diag0Frac, diag45Frac, diag90Frac],\r\n [direct90Frac, direct45Frac, direct0Frac, direct45Frac, direct90Frac],\r\n [diag90Frac, diag45Frac, diag0Frac, diag45Frac, diag90Frac],\r\n [direct90Frac, direct45Frac, direct0Frac, direct45Frac, direct90Frac],\r\n [],\r\n [direct90Frac, direct45Frac, direct0Frac, direct45Frac, direct90Frac],\r\n [diag90Frac, diag45Frac, diag0Frac, diag45Frac, diag90Frac],\r\n [direct90Frac, direct45Frac, direct0Frac, direct45Frac, direct90Frac],\r\n [diag90Frac, diag45Frac, diag0Frac, diag45Frac, diag90Frac]];\r\n\r\n\r\n for (let iStep = 0; iStep < this.radius+FingerTip.maxCoronaWidth - 2; iStep ++) {\r\n // the next one too\r\n const thisGrid = sourceGrids[iStep];\r\n const nextGrid = sourceGrids[iStep + 1];\r\n const nextNextGrid = sourceGrids[iStep + 2];\r\n // the equivalent list of just the sources added\r\n const ringCells = this.fCellsCentralRings[iStep];\r\n // for each of the sources, send things to the adjacent cells on the next level\r\n for (const fCell of ringCells) {\r\n let oct = fCell.ptOnPrint.moveOctantFrom(new Point2D(34.5,34.5));\r\n let sX = fCell.ptOnPrint.x;\r\n let sY = fCell.ptOnPrint.y;\r\n // look around, look around\r\n let look = octLooks[oct];\r\n let fracs = octFracs[oct];\r\n for (let iLook = 0; iLook < 5; iLook ++) {\r\n let iLookX = look[iLook].x;\r\n let iLookY = look[iLook].y;\r\n // is there a source (target) at that spot\r\n let lookIdx = (sY + iLookY) * FingerTip.cellsWidth + (sX + iLookX);\r\n let targ = nextGrid[lookIdx];\r\n let priority = 2;\r\n\r\n if (targ === undefined && nextNextGrid !== undefined) {\r\n // no target, so look at the next level\r\n targ = nextNextGrid[lookIdx];\r\n }\r\n if (targ === undefined) {\r\n // target what about this same level\r\n targ = thisGrid[lookIdx];\r\n priority = 1;\r\n }\r\n if (targ !== undefined) {\r\n let move : FlowCellMove = {fCellDest:targ, priority:priority, fraction: fracs[iLook]} as FlowCellMove;\r\n if (fCell.move1 === undefined) {\r\n fCell.move1 = move;\r\n } else if (fCell.move2 === undefined) {\r\n fCell.move2 = move;\r\n } else if (fCell.move3 === undefined) {\r\n fCell.move3 = move;\r\n } else if (fCell.move4 === undefined) {\r\n fCell.move4 = move;\r\n } else if (fCell.move5 === undefined) {\r\n fCell.move5 = move;\r\n }\r\n } \r\n }\r\n // pri 1 moves happen first with set fraction, then pri 2 moves \r\n // pri 2 move fractions must add up to 1\r\n\r\n let p2Frac = 0;\r\n if (fCell.move1 !== undefined && fCell.move1.priority === 2) {\r\n p2Frac += fCell.move1.fraction;\r\n }\r\n if (fCell.move2 !== undefined && fCell.move2.priority === 2) {\r\n p2Frac += fCell.move2.fraction;\r\n }\r\n if (fCell.move3 !== undefined && fCell.move3.priority === 2) {\r\n p2Frac += fCell.move3.fraction;\r\n }\r\n if (fCell.move4 !== undefined && fCell.move4.priority === 2) {\r\n p2Frac += fCell.move4.fraction;\r\n }\r\n if (fCell.move5 !== undefined && fCell.move5.priority === 2) {\r\n p2Frac += fCell.move5.fraction;\r\n }\r\n\r\n // scale the p2 moves to add up to 1\r\n if (p2Frac < 1){\r\n let scale = 1 / p2Frac;\r\n if (fCell.move1 !== undefined && fCell.move1.priority === 2) {\r\n fCell.move1.fraction *= scale;\r\n }\r\n if (fCell.move2 !== undefined && fCell.move2.priority === 2) {\r\n fCell.move2.fraction *= scale;\r\n }\r\n if (fCell.move3 !== undefined && fCell.move3.priority === 2) {\r\n fCell.move3.fraction *= scale;\r\n }\r\n if (fCell.move4 !== undefined && fCell.move4.priority === 2) {\r\n fCell.move4.fraction *= scale;\r\n }\r\n if (fCell.move5 !== undefined && fCell.move5.priority === 2) {\r\n fCell.move5.fraction *= scale;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n }\r\n this.finalizeFlowCells();\r\n }\r\n \r\n static tipLoc2TextureLoc(pt: Point2D, textWidth: number, textHeight:number) : number {\r\n const textureCorner = new Point2D(Math.floor((FingerTip.cellsWidth - textWidth) / 2), Math.floor((FingerTip.cellsWidth - textHeight) / 2));\r\n const ptOnTexture = new Point2D(pt.x - textureCorner.x, pt.y - textureCorner.y);\r\n return ptOnTexture.y * textWidth + ptOnTexture.x;\r\n }\r\n\r\n mapTextureLocation(loc: number, w: number, h: number) : number {\r\n let srcCx = this.effectRadius;\r\n let srcCy = this.effectRadius;\r\n let srcDx = srcCx - (loc % (this.effectRadius * 2));\r\n let srcDy = srcCy - Math.floor(loc / (this.effectRadius * 2));\r\n let destX = w/2 - srcDx;\r\n let destY = h/2 - srcDy;\r\n return destY * w + destX;\r\n }\r\n\r\n\r\n static addCommitTexture(sourceCellTakes: Map, srcFinger: FingerTip, w:number, h:number, cts: ChangeTextureSet, offset: number) {\r\n\r\n sourceCellTakes.forEach((frac, srcLoc)=>{\r\n srcLoc = srcFinger.mapTextureLocation(srcLoc, w, h);\r\n\r\n cts.texCommit![offset + srcLoc] = frac;\r\n });\r\n\r\n }\r\n\r\n private makeCircleChangeTextureIndexes(application: TipApplication) : ChangeTextureIndexes {\r\n let indexes = {\r\n application: application,\r\n width: FingerTip.cellsWidth,\r\n height: FingerTip.cellsWidth,\r\n idxsAction: new Array(),\r\n idxMax: this.radius - FingerTip.minFingerRadius,\r\n } as ChangeTextureIndexes;\r\n let smashOnly = application.modifier === 1;\r\n\r\n for (let iRing = 0; iRing < this.fCellsCentralRings.length - 1; iRing ++) {\r\n if (smashOnly && iRing + 1 === this.smashRadius) {\r\n // the p2 pulls from that last ring into accumulator\r\n indexes.idxsAction.push(iRing * 2);\r\n indexes.idxsAction.push(-1); // signal to discard the accumulator and stop\r\n break;\r\n }\r\n // the p2 pulls from inner ring\r\n indexes.idxsAction.push(iRing * 2);\r\n\r\n // the p1 pulls from same ring\r\n indexes.idxsAction.push(iRing * 2 + 1);\r\n\r\n }\r\n return indexes;\r\n \r\n }\r\n\r\n static cachedCircleChangeTextureSet: ChangeTextureSet | undefined = undefined;\r\n\r\n static makeCircleChangeTextureSet(radius: number) {\r\n if (FingerTip.cachedCircleChangeTextureSet !== undefined) {\r\n return FingerTip.cachedCircleChangeTextureSet;\r\n }\r\n\r\n const entries = FingerTip.maxFingerRadius + FingerTip.maxCoronaWidth;\r\n let tipChangeTextures = {width: FingerTip.cellsWidth, height: FingerTip.cellsWidth, \r\n maxEntries:FingerTip.maxFingerRadius - FingerTip.minFingerRadius + 1, moveEntries:entries*2} as ChangeTextureSet;\r\n\r\n tipChangeTextures.texMax = new Uint16Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.maxEntries);\r\n tipChangeTextures.texFrom = new Uint16Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries * 4);\r\n tipChangeTextures.texFrac = new Float32Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries * 4);\r\n tipChangeTextures.texCommit = new Float32Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries);\r\n\r\n // the largest circle shape for the movement instructions\r\n const fatFinger = FingerTip.getCircleShape(FingerTip.maxFingerRadius);\r\n const wFat = FingerTip.cellsWidth;\r\n const hFat = wFat;\r\n\r\n tipChangeTextures.texMax.fill(Page.maxCoronaDepth);\r\n let fillFromMax = 0;\r\n let fillFromMov4 = 0;\r\n let fillFromMov1 = 0;\r\n\r\n // the first textures are the max depth textures for different circles. make one for each circle from min to max\r\n for (let radius = FingerTip.minFingerRadius; radius <= FingerTip.maxFingerRadius; radius ++) {\r\n // assume anything beyond the radius is corona\r\n let smashRadius = FingerTip.smashRadiusOf(radius);\r\n\r\n for (let iStep = 1; iStep < radius+FingerTip.maxCoronaWidth; iStep ++) {\r\n // process all cells of the circle \r\n FingerTip.doFilledCircle(iStep, iStep, (i: number, pt: Point2D)=>{\r\n let finalKind = CellKind.corona;\r\n if (iStep <= smashRadius) {\r\n finalKind = CellKind.smash;\r\n } else if (iStep <= radius) {\r\n finalKind = CellKind.meniscus;\r\n } \r\n let tempCell = {ptOnPrint:pt, finalKind: finalKind} as FlowCell;\r\n FingerTip.setCellDepths(tempCell);\r\n let maxDepth = tempCell.maxTouchDepth;\r\n if (finalKind === CellKind.smash) {\r\n maxDepth = tempCell.preferredScrapeDepth;\r\n }\r\n tipChangeTextures.texMax![fillFromMax + FingerTip.tipLoc2TextureLoc(pt, wFat, hFat)] = maxDepth;\r\n })\r\n }\r\n fillFromMax += wFat * hFat;\r\n }\r\n\r\n // invert the direction of the move, we need to pull to destination cells from sources\r\n // per dest ring per dest cell location the list of [source cell location, priority, fraction]\r\n let inverted = new Array>>(fatFinger.fCellsCentralRings.length + 1);\r\n let srcRing = 0;\r\n let destRing = 1;\r\n const addInverted = (srcLoc: number, move: FlowCellMove) => {\r\n let pri = move.priority;\r\n let destRingCell = destRing;\r\n if (pri === 1) {\r\n destRingCell = srcRing;\r\n }\r\n let textLocDest = FingerTip.tipLoc2TextureLoc(move.fCellDest.ptOnPrint, wFat, hFat);\r\n let destMap = inverted[destRingCell];\r\n if (destMap === undefined) {\r\n destMap = new Map>();\r\n inverted[destRingCell] = destMap;\r\n }\r\n let destList = destMap.get(textLocDest);\r\n if (destList === undefined) {\r\n destList = new Array<[number, number, number]>();\r\n destMap.set(textLocDest, destList);\r\n }\r\n destList.push([srcLoc, pri, move.fraction]);\r\n }\r\n\r\n for (const fCellsRing of fatFinger.fCellsCentralRings) {\r\n for (const fCell of fCellsRing) {\r\n let textLocSrc = FingerTip.tipLoc2TextureLoc(fCell.ptOnPrint, wFat, hFat);\r\n if (fCell.move1 !== undefined) {\r\n addInverted(textLocSrc, fCell.move1);\r\n }\r\n if (fCell.move2 !== undefined) {\r\n addInverted(textLocSrc, fCell.move2);\r\n }\r\n if (fCell.move3 !== undefined) {\r\n addInverted(textLocSrc, fCell.move3);\r\n }\r\n if (fCell.move4 !== undefined) {\r\n addInverted(textLocSrc, fCell.move4);\r\n }\r\n if (fCell.move5 !== undefined) {\r\n addInverted(textLocSrc, fCell.move5);\r\n }\r\n }\r\n\r\n srcRing++;\r\n destRing++;\r\n }\r\n\r\n const sourceCellTakesP1 = new Map();\r\n const sourceCellTakesP2 = new Map();\r\n let ring = 0;\r\n fillFromMax = 0;\r\n fillFromMov1 = 0;\r\n fillFromMov4 = 0;\r\n for (const invertedMap of inverted) {\r\n //console.log('ring', ring);\r\n //const w = 2 * (ring + 1);\r\n const w = FingerTip.cellsWidth;\r\n const h = w;\r\n let texFromP1: Uint16Array | undefined = undefined;\r\n let texFracP1: Float32Array | undefined = undefined;\r\n let texFromP2: Uint16Array | undefined = undefined;\r\n let texFracP2: Float32Array | undefined = undefined;\r\n\r\n if (invertedMap !== undefined && invertedMap.size !== 0) {\r\n invertedMap.forEach((sources, destLoc)=>{\r\n let p1 = 0;\r\n let p2 = 0;\r\n let texFromDest: Uint16Array | undefined = undefined;\r\n let texFracDest: Float32Array | undefined = undefined;\r\n for (const src of sources) {\r\n let srcLoc = src[0];\r\n let srcFrac = src[2];\r\n let pos = 0;\r\n\r\n if (src[1] === 1) {\r\n let totalFrac = srcFrac;\r\n if (sourceCellTakesP1.has(srcLoc)) {\r\n totalFrac += sourceCellTakesP1.get(srcLoc)!;\r\n }\r\n sourceCellTakesP1.set(srcLoc, totalFrac);\r\n\r\n if (p1 === 0 && texFromP1 === undefined) {\r\n texFromP1 = new Uint16Array(w*h*4);\r\n texFracP1 = new Float32Array(w*h*4);\r\n }\r\n texFromDest = texFromP1;\r\n texFracDest = texFracP1;\r\n pos = p1;\r\n p1 ++;\r\n } else {\r\n let totalFrac = srcFrac;\r\n if (sourceCellTakesP2.has(srcLoc)) {\r\n totalFrac += sourceCellTakesP2.get(srcLoc)!;\r\n }\r\n sourceCellTakesP2.set(srcLoc, totalFrac);\r\n\r\n if (p2 === 0 && texFromP2 === undefined) {\r\n texFromP2 = new Uint16Array(w*h*4);\r\n texFracP2 = new Float32Array(w*h*4);\r\n }\r\n texFromDest = texFromP2;\r\n texFracDest = texFracP2;\r\n pos = p2;\r\n p2 ++;\r\n }\r\n\r\n // set the texture part\r\n // convert from fat finger positions to texture positions\r\n const srcTextureLoc = fatFinger.mapTextureLocation(srcLoc, w, h);\r\n const destTextureLoc = fatFinger.mapTextureLocation(destLoc, w, h);\r\n let offText = destTextureLoc * 4 + pos;\r\n texFromDest![offText] = srcTextureLoc;\r\n texFracDest![offText] = srcFrac;\r\n\r\n //console.log(`at: ${wFat}x${hFat} ${}`);\r\n //console.log(`dest ${destLoc%w},${Math.floor(destLoc/w)} src ${srcLoc%w},${Math.floor(srcLoc/w)} frac ${srcFrac} p ${src[1]}`);\r\n }\r\n });\r\n }\r\n if (texFromP2 !== undefined) {\r\n tipChangeTextures.texFrom.set(texFromP2, fillFromMov4);\r\n tipChangeTextures.texFrac.set(texFracP2!, fillFromMov4);\r\n FingerTip.addCommitTexture(sourceCellTakesP2, fatFinger, w, h, tipChangeTextures, fillFromMov1);\r\n sourceCellTakesP2.clear();\r\n fillFromMov1 += w * h;\r\n fillFromMov4 += w * h * 4;\r\n\r\n } else {\r\n if (ring > 0) {\r\n // need an empty texture and commit texture so indexes match\r\n fillFromMov4 += w * h * 4;\r\n fillFromMov1 += w * h;\r\n }\r\n }\r\n if (texFromP1 !== undefined) {\r\n tipChangeTextures.texFrom.set(texFromP1, fillFromMov4);\r\n tipChangeTextures.texFrac.set(texFracP1!, fillFromMov4);\r\n FingerTip.addCommitTexture(sourceCellTakesP1, fatFinger, w, h, tipChangeTextures, fillFromMov1);\r\n sourceCellTakesP1.clear();\r\n fillFromMov4 += w * h * 4;\r\n fillFromMov1 += w * h;\r\n\r\n }\r\n ring ++;\r\n\r\n }\r\n FingerTip.cachedCircleChangeTextureSet = tipChangeTextures;\r\n return tipChangeTextures;\r\n\r\n }\r\n\r\n static makeSmearChangeTextureSet(radius: number) {\r\n\r\n const entries = 8;\r\n const moveActions = 2;\r\n let tipChangeTextures = {width: FingerTip.cellsWidth, height: FingerTip.cellsWidth, \r\n maxEntries:entries, moveEntries:entries * moveActions} as ChangeTextureSet;\r\n\r\n tipChangeTextures.texMax = new Uint16Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.maxEntries * 1);\r\n tipChangeTextures.texFrom = new Uint16Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries * 4);\r\n tipChangeTextures.texFrac = new Float32Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries * 4);\r\n tipChangeTextures.texCommit = new Float32Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries * 1);\r\n\r\n // the largest circle shape for the movement instructions\r\n const wFat = FingerTip.cellsWidth;\r\n const hFat = wFat;\r\n\r\n tipChangeTextures.texMax.fill(0);\r\n let fillFromMax = 0;\r\n let fillFromMov4 = 0;\r\n let fillFromMov1 = 0;\r\n let ptCenter = new Point2D(34.5, 34.5);\r\n\r\n for (let iOctMove = 0; iOctMove < 9; iOctMove++) {\r\n if (iOctMove === 4) {\r\n continue\r\n }\r\n let tip = FingerTip.getScrapeShape(radius, iOctMove, iOctMove);\r\n // the first texture is a pressure behavior map\r\n // 1 = corona front. buffer\r\n // 2 = corona back. mostly left behind but don't suck paint out\r\n // 3 = meniscus front. pressure wave builds up\r\n // 4 = meniscus body. smooths out around the meniscus\r\n // 5 = meniscus back. draws in from the corona, leaves a trail\r\n // 6 = smash body. high pressure under the finger\r\n // 7 = smash front. subduction zone, pulls meniscus into the smash\r\n // 8 = smash back. leaves streaks\r\n\r\n for (const cell of tip.allFlowCells) {\r\n let ptOnPrintFlipY = new Point2D(cell.ptOnPrint.x, (hFat - 1) - cell.ptOnPrint.y);\r\n let comps = ptCenter.componentDistanceWithMoveOctantTo(ptOnPrintFlipY, iOctMove);\r\n let maxDepth = 0;\r\n if (cell.finalKind === CellKind.corona) {\r\n if (comps.dx < 0) {\r\n maxDepth = 2;\r\n } else {\r\n maxDepth = 1;\r\n }\r\n } else if (cell.finalKind === CellKind.meniscus) {\r\n if (comps.dx < radius / -3.0) {\r\n maxDepth = 5;\r\n } else {\r\n maxDepth = 4;\r\n }\r\n if (comps.dx > 1) {\r\n let d = ptCenter.distanceTo(ptOnPrintFlipY);\r\n if (d > radius-2) {\r\n maxDepth = 3;\r\n }\r\n }\r\n } else if (cell.finalKind === CellKind.smash) {\r\n maxDepth = 6;\r\n if (tip.smashRadius > 2) {\r\n if (comps.dx < -2.0 * tip.smashRadius / 3.0) {\r\n maxDepth = 8;\r\n } \r\n if (comps.dx > 1) {\r\n let d = ptCenter.distanceTo(ptOnPrintFlipY);\r\n if (d > tip.smashRadius-2) {\r\n maxDepth = 7;\r\n }\r\n }\r\n }\r\n }\r\n\r\n tipChangeTextures.texMax![fillFromMax + FingerTip.tipLoc2TextureLoc(cell.ptOnPrint, wFat, hFat)] = maxDepth;\r\n\r\n }\r\n\r\n // the smash and meniscus cells have move1 set to the destination. we must pull, so map the destination to the source\r\n let inverted = new Map();\r\n for (const cell of tip.allFlowCells) {\r\n if (cell.finalKind === CellKind.smash || cell.finalKind === CellKind.meniscus) {\r\n let dest = cell.move1!.fCellDest;\r\n inverted.set(dest, cell);\r\n }\r\n }\r\n\r\n // first the meniscus move sources as a texture that fills accumulator with amount to take\r\n // so, not a list of moves\r\n for (const src of tip.fCellsMeniscusScrape.concat(tip.fCellsSmashScrape)) {\r\n let dest = src.move1!.fCellDest;\r\n let srcLoc = FingerTip.tipLoc2TextureLoc(src.ptOnPrint, wFat, hFat);\r\n tipChangeTextures.texFrac![fillFromMov4 + srcLoc * 4] = src.move1!.fraction;\r\n tipChangeTextures.texCommit![fillFromMov1 + srcLoc] = 1.0;\r\n // special info about the source is held in the other parts of the move texture\r\n tipChangeTextures.texFrom![fillFromMov4 + srcLoc * 4] = src.finalKind === dest.finalKind ? 1 : 0;\r\n tipChangeTextures.texFrom![fillFromMov4 + srcLoc * 4 + 1] = src.preferredScrapeDepth;\r\n tipChangeTextures.texFrom![fillFromMov4 + srcLoc * 4 + 2] = src.maxKindPushDepth;\r\n tipChangeTextures.texFrom![fillFromMov4 + srcLoc * 4 + 3] = src.minScrapeDepth;\r\n }\r\n \r\n // if (iOctMove === 5 && tip.radius === 30) {\r\n // for (let y = 0; y < hFat; y++) {\r\n // let spew = '';\r\n // for (let x = 0; x < wFat; x++) {\r\n // let loc = y * wFat + x;\r\n // let val = tipChangeTextures.texMax![fillFromMax + loc];\r\n // spew += val + ' ';\r\n // }\r\n // console.log(spew);\r\n\r\n // }\r\n // }\r\n fillFromMov4 += wFat * hFat * 4;\r\n fillFromMov1 += wFat * hFat;\r\n\r\n // then the destinations that pull from these sources\r\n inverted.forEach((src, dest)=>{\r\n if (src.finalKind === CellKind.meniscus || src.finalKind === CellKind.smash) {\r\n let srcLoc = FingerTip.tipLoc2TextureLoc(src.ptOnPrint, wFat, hFat);\r\n let destLoc = FingerTip.tipLoc2TextureLoc(dest.ptOnPrint, wFat, hFat);\r\n tipChangeTextures.texFrom![fillFromMov4 + destLoc * 4] = srcLoc;\r\n tipChangeTextures.texFrac![fillFromMov4 + destLoc * 4] = src.move1!.fraction;\r\n tipChangeTextures.texCommit![fillFromMov1 + destLoc] = 1.0;\r\n }\r\n });\r\n fillFromMov4 += wFat * hFat * 4;\r\n fillFromMov1 += wFat * hFat;\r\n\r\n fillFromMax += wFat * hFat;\r\n }\r\n\r\n return tipChangeTextures;\r\n\r\n }\r\n\r\n private makeSmearChangeTextureIndexes(application: TipApplication) : ChangeTextureIndexes {\r\n let octIdx = FingerTip.allOctantIndex[this.octMove];\r\n let tipIdx = octIdx;\r\n\r\n let indexes = {\r\n application: application,\r\n width: FingerTip.cellsWidth,\r\n height: FingerTip.cellsWidth,\r\n idxsAction: new Array(),\r\n idxMax: tipIdx,\r\n } as ChangeTextureIndexes;\r\n\r\n const moveActions = 2; \r\n for (let i = 0; i < moveActions; i++) {\r\n indexes.idxsAction.push(tipIdx * moveActions + i);\r\n }\r\n\r\n return indexes;\r\n \r\n }\r\n\r\n\r\n static makeKnifeChangeTextureSet() {\r\n\r\n const entries = 8 + 8*4; // default one for each move + 4 impactful direction changes per move\r\n const moveActions = 1;\r\n let tipChangeTextures = {width: FingerTip.cellsWidth, height: FingerTip.cellsWidth, \r\n maxEntries:entries, moveEntries:entries * moveActions} as ChangeTextureSet;\r\n\r\n tipChangeTextures.texMax = new Uint16Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.maxEntries);\r\n tipChangeTextures.texFrom = new Uint16Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries * 4);\r\n tipChangeTextures.texFrac = new Float32Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries * 4);\r\n tipChangeTextures.texCommit = new Float32Array(tipChangeTextures.width * tipChangeTextures.height * tipChangeTextures.moveEntries);\r\n\r\n\r\n // the largest circle shape for the movement instructions\r\n const wFat = FingerTip.cellsWidth;\r\n const hFat = wFat;\r\n\r\n tipChangeTextures.texMax.fill(0);\r\n let fillFromMax = 0;\r\n let ptCenter = new Point2D(34.5, 34.5);\r\n\r\n for (let iOctMove = 0; iOctMove < 9; iOctMove++) {\r\n if (iOctMove === 4) {\r\n continue\r\n }\r\n for (let iOctFrom = 0; iOctFrom < 9; iOctFrom++) {\r\n let removeOcts = FingerTip.fromMoveScrapeOctants[iOctFrom][iOctMove];\r\n if (removeOcts.size === 0 && iOctFrom !== iOctMove) { // default to self since no effect to remove\r\n continue;\r\n }\r\n // get the biggest knife shape headed that way\r\n let tip = FingerTip.getKnifeShape(FingerTip.maxFingerRadius, iOctMove, iOctFrom);\r\n\r\n for (const fCell of tip.fCellsKnifeBack!) {\r\n tipChangeTextures.texMax![fillFromMax + FingerTip.tipLoc2TextureLoc(fCell.ptOnPrint, wFat, hFat)] = 1;\r\n }\r\n \r\n // the knife edge pulls up to the blade\r\n for (const fCell of tip.fCellsKnifeEdge!) {\r\n tipChangeTextures.texMax![fillFromMax + FingerTip.tipLoc2TextureLoc(fCell.ptOnPrint, wFat, hFat)] = 2;\r\n }\r\n \r\n fillFromMax += wFat * hFat;\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n\r\n return tipChangeTextures;\r\n\r\n }\r\n\r\n private makeKnifeChangeTextureIndexes(application: TipApplication) : ChangeTextureIndexes {\r\n\r\n let idx = 0;\r\n\r\n let indexes = {\r\n application: application,\r\n width: FingerTip.cellsWidth,\r\n height: FingerTip.cellsWidth,\r\n idxsAction: new Array(),\r\n idxMax: 0,\r\n } as ChangeTextureIndexes;\r\n\r\n for (let iOctMove = 0; iOctMove < 9; iOctMove++) {\r\n if (iOctMove === 4) {\r\n continue\r\n }\r\n let selfIdx = -1;\r\n let waitForSelf = false;\r\n for (let iOctFrom = 0; iOctFrom < 9; iOctFrom++) {\r\n let removeOcts = FingerTip.fromMoveScrapeOctants[iOctFrom][iOctMove];\r\n if (iOctFrom === iOctMove) {\r\n if (waitForSelf) {\r\n indexes.idxMax = idx;\r\n indexes.idxsAction.push(idx);\r\n return indexes;\r\n }\r\n selfIdx = idx;\r\n } \r\n if (this.octMove === iOctMove && this.octFrom === iOctFrom) {\r\n if (removeOcts.size === 0) {\r\n if (selfIdx !== -1) {\r\n indexes.idxMax = selfIdx;\r\n indexes.idxsAction.push(selfIdx);\r\n return indexes;\r\n } else {\r\n waitForSelf = true;\r\n }\r\n \r\n } else {\r\n indexes.idxMax = idx;\r\n indexes.idxsAction.push(idx);\r\n return indexes;\r\n }\r\n\r\n }\r\n if (removeOcts.size !== 0 || iOctFrom === iOctMove) {\r\n idx++;\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n return indexes;\r\n\r\n \r\n }\r\n\r\n\r\n // move octants\r\n // 0 1 2\r\n // 3 4 5\r\n // 6 7 8\r\n // paint octants\r\n // 1 2\r\n // 0 4 5\r\n // 3 4 8\r\n // 6 7 \r\n static allOctants = new Set([0,1,2,3,4,5,6,7,8]);\r\n static allOctantIndex = new Array(0,1,2,3,-1,4,5,6,7);\r\n static moveOctantLeft = new Array(3, 0, 1, 6, 4, 2, 7, 8, 5);\r\n static moveOctantRight = new Array(1, 2, 5, 0, 4, 8, 3, 6, 7);\r\n static semi05Octants = new Set([0,1,2,5]);\r\n static semi08Octants = new Set([0,1,2,5,8]);\r\n static semi18Octants = new Set([1,2,5,8]);\r\n static semi17Octants = new Set([1,2,5,8,7]);\r\n static semi27Octants = new Set([2,5,8,7]);\r\n static semi26Octants = new Set([2,5,8,7,6]);\r\n static semi56Octants = new Set([5,8,7,6]);\r\n static semi53Octants = new Set([5,8,7,6,3]);\r\n static semi83Octants = new Set([8,7,6,3]);\r\n static semi80Octants = new Set([8,7,6,3,0]);\r\n static semi70Octants = new Set([7,6,3,0]);\r\n static semi71Octants = new Set([7,6,3,0,1]);\r\n static semi61Octants = new Set([6,3,0,1]);\r\n static semi62Octants = new Set([6,3,0,1,2]);\r\n static semi32Octants = new Set([3,0,1,2]);\r\n static semi35Octants = new Set([3,0,1,2,5]);\r\n static moveFromSmashOctants = [\r\n [FingerTip.semi32Octants,FingerTip.semi32Octants,FingerTip.semi05Octants,FingerTip.semi32Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi61Octants,FingerTip.allOctants,FingerTip.allOctants],\r\n [FingerTip.semi05Octants,FingerTip.semi05Octants,FingerTip.semi05Octants,FingerTip.semi32Octants,FingerTip.allOctants,FingerTip.semi18Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.allOctants],\r\n [FingerTip.semi05Octants,FingerTip.semi05Octants,FingerTip.semi18Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi18Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi27Octants],\r\n [FingerTip.semi61Octants,FingerTip.semi32Octants,FingerTip.allOctants,FingerTip.semi61Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi61Octants,FingerTip.semi70Octants,FingerTip.allOctants],\r\n [],\r\n [FingerTip.allOctants,FingerTip.semi18Octants,FingerTip.semi27Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi27Octants,FingerTip.allOctants,FingerTip.semi56Octants,FingerTip.semi27Octants],\r\n [FingerTip.semi61Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi70Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi70Octants,FingerTip.semi70Octants,FingerTip.semi83Octants],\r\n [FingerTip.allOctants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi70Octants,FingerTip.allOctants,FingerTip.semi56Octants,FingerTip.semi83Octants,FingerTip.semi83Octants,FingerTip.semi83Octants],\r\n [FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi27Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi56Octants,FingerTip.semi83Octants,FingerTip.semi56Octants,FingerTip.semi56Octants],\r\n ];\r\n \r\n static moveFromMeniscusOctants = [\r\n [FingerTip.semi32Octants,new Set([0,1,2]),new Set([1,2]),new Set([3,0,1]),FingerTip.semi32Octants,new Set([2]),new Set([3,0]),new Set([3]),FingerTip.semi32Octants],\r\n [new Set([0,1,2]),FingerTip.semi05Octants,new Set([1,2,5]),new Set([0,1]),FingerTip.semi05Octants,new Set([2,5]),new Set([0]),FingerTip.semi05Octants,new Set([5])],\r\n [new Set([1,2]),new Set([1,2,5]),FingerTip.semi18Octants,new Set([1]),FingerTip.semi18Octants,new Set([2,5,8]),FingerTip.semi18Octants,new Set([8]),new Set([5,8])],\r\n [new Set([3,0,2]),new Set([0,1]),new Set([1]),FingerTip.semi61Octants,FingerTip.semi61Octants,FingerTip.semi61Octants,new Set([6,3,0]),new Set([6,3]),new Set([6])],\r\n [],\r\n [new Set([7]),new Set([7,8,5]),new Set([7,8,5]),FingerTip.semi27Octants,FingerTip.semi27Octants,FingerTip.semi27Octants,new Set([2]),new Set([2,5]),new Set([2,5,8])],\r\n [new Set([0,1]),new Set([0]),FingerTip.semi70Octants,new Set([6,3,0]),FingerTip.semi70Octants,new Set([8]),FingerTip.semi70Octants,new Set([3,6,7]),new Set([6,7])],\r\n [new Set([3]),FingerTip.semi83Octants,new Set([8]),new Set([6,3]),FingerTip.semi83Octants,new Set([7,8]),new Set([7,6,3]),FingerTip.semi83Octants,new Set([8,7,6])],\r\n [FingerTip.semi56Octants,new Set([2]),new Set([8,5]),new Set([6]),FingerTip.semi56Octants,new Set([5,8,7]),new Set([6,7]),new Set([6,7,8]),FingerTip.semi56Octants],\r\n ];\r\n static moveFlowOctants = [\r\n [FingerTip.semi32Octants,FingerTip.semi62Octants,FingerTip.semi62Octants,FingerTip.semi62Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi35Octants,FingerTip.allOctants,FingerTip.allOctants],\r\n [FingerTip.semi35Octants,FingerTip.semi05Octants,FingerTip.semi35Octants,FingerTip.semi08Octants,FingerTip.allOctants,FingerTip.semi35Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.allOctants],\r\n [FingerTip.semi17Octants,FingerTip.semi08Octants,FingerTip.semi18Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi08Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi08Octants],\r\n [FingerTip.semi62Octants,FingerTip.semi61Octants,FingerTip.allOctants,FingerTip.semi61Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi71Octants,FingerTip.semi62Octants,FingerTip.allOctants],\r\n [],\r\n [FingerTip.allOctants,FingerTip.semi26Octants,FingerTip.semi17Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi27Octants,FingerTip.allOctants,FingerTip.semi17Octants,FingerTip.semi17Octants],\r\n [FingerTip.semi80Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi71Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi70Octants,FingerTip.semi80Octants,FingerTip.semi71Octants],\r\n [FingerTip.allOctants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi80Octants,FingerTip.allOctants,FingerTip.semi80Octants,FingerTip.semi80Octants,FingerTip.semi83Octants,FingerTip.semi53Octants],\r\n [FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi53Octants,FingerTip.allOctants,FingerTip.allOctants,FingerTip.semi53Octants,FingerTip.semi53Octants,FingerTip.semi53Octants,FingerTip.semi56Octants],\r\n ];\r\n static fromMoveScrapeOctants = [\r\n [new Set([]),new Set([3]),new Set([3,0]),new Set([2]),new Set([]),new Set([]),new Set([1,2]),new Set([]),new Set([])],\r\n [new Set([5]),new Set([]),new Set([0]),new Set([2,5]),new Set([]),new Set([0,1]),new Set([]),new Set([]),new Set([])],\r\n [new Set([5,8]),new Set([8]),new Set([]),new Set([]),new Set([]),new Set([1]),new Set([]),new Set([]),new Set([1,2])],\r\n [new Set([6]),new Set([6,3]),new Set([]),new Set([]),new Set([]),new Set([]),new Set([1]),new Set([0,1]),new Set([])],\r\n\r\n [new Set([]),new Set([]),new Set([]),new Set([]),new Set([]),new Set([]),new Set([]),new Set([]),new Set([])],\r\n\r\n [new Set([]),new Set([8,7]),new Set([7]),new Set([]),new Set([]),new Set([]),new Set([]),new Set([2,5]),new Set([2])],\r\n [new Set([7,6]),new Set([]),new Set([]),new Set([7]),new Set([]),new Set([]),new Set([]),new Set([0]),new Set([3,0])],\r\n [new Set([]),new Set([]),new Set([]),new Set([8,7]),new Set([]),new Set([6,3]),new Set([8]),new Set([]),new Set([3])],\r\n [new Set([]),new Set([]),new Set([7,6]),new Set([]),new Set([]),new Set([6]),new Set([5,8]),new Set([5]),new Set([])]\r\n ];\r\n static moveFrontOctants = [FingerTip.semi32Octants,FingerTip.semi05Octants,FingerTip.semi18Octants,FingerTip.semi61Octants,FingerTip.allOctants,FingerTip.semi27Octants,FingerTip.semi70Octants,FingerTip.semi83Octants,FingerTip.semi56Octants];\r\n \r\n static moveOctantMidlineLookups = new Array>>(9);\r\n static moveOctantMidlineParams = [[11,56,56,11,1,-1,Math.SQRT2],[3,33,66,33,1,0,1],[13,11,58,56,1,1,Math.SQRT2],[33,66,33,2,0,-1,1],[0,0],[36,3,36,66,0,1,1],[56,58,11,13,-1,-1,Math.SQRT2],[66,36,2,36,-1,0,1],[58,13,13,58,-1,1,Math.SQRT2]]; // where to start trace from just off center\r\n static getMoveOctantMidlineLookup(octant: number) : Map> {\r\n if (FingerTip.moveOctantMidlineLookups[octant] === undefined) {\r\n // make a set of all target points just after the midline, for diagonals there are two lines\r\n let targetPoints = new Map>();\r\n // pointed up move to the right\r\n const p= FingerTip.moveOctantMidlineParams[octant];\r\n const xStart1 = p[0];\r\n const yStart1 = p[1];\r\n const xEnd1 = p[2];\r\n const yEnd1 = p[3];\r\n const dx = p[4];\r\n const dy = p[5];\r\n const dI = p[6]\r\n let diag = dx !== 0 && dy !== 0;\r\n let offsetsDiag = Point2D.offsetsFromOctant(FingerTip.moveOctantRight[octant]);\r\n\r\n // one or two start and end x and y positions that span the whole print and trace the midline\r\n let xStart2 = xStart1 + offsetsDiag.x;\r\n let yStart2 = yStart1 + offsetsDiag.y;\r\n\r\n let x1 = xStart1;\r\n let y1 = yStart1;\r\n let x2 = xStart2;\r\n let y2 = yStart2;\r\n\r\n // do the trace, add the points to the set\r\n let idx1=0;\r\n let idx2=dI/2;\r\n while (!(x1 === xEnd1 && y1 === yEnd1)) {\r\n let ySet: Map;\r\n if (targetPoints.has(x1)) {\r\n ySet = targetPoints.get(x1)!;\r\n } else {\r\n ySet = new Map();\r\n targetPoints.set(x1, ySet);\r\n }\r\n ySet.set(y1, Math.round(idx1));\r\n if (diag) {\r\n if (targetPoints.has(x2)) {\r\n ySet = targetPoints.get(x2)!;\r\n } else {\r\n ySet = new Map();\r\n targetPoints.set(x2, ySet);\r\n }\r\n ySet.set(y2, Math.round(idx2));\r\n }\r\n x1 += dx;\r\n y1 += dy;\r\n x2 += dx;\r\n y2 += dy;\r\n idx1+=dI;\r\n idx2+=dI;\r\n }\r\n FingerTip.moveOctantMidlineLookups[octant] = targetPoints;\r\n }\r\n return FingerTip.moveOctantMidlineLookups[octant];\r\n }\r\n\r\n\r\n private makeScrapeShape(octFront: number){\r\n\r\n this.octMove = octFront;\r\n let offsetsFront = Point2D.offsetsFromOctant(octFront);\r\n let octRight = FingerTip.moveOctantRight[FingerTip.moveOctantRight[octFront]];\r\n let octBack = FingerTip.moveOctantRight[FingerTip.moveOctantRight[octRight]];\r\n let octLeft = FingerTip.moveOctantRight[FingerTip.moveOctantRight[octBack]];\r\n\r\n let octL0 = octFront;\r\n let octR0 = FingerTip.moveOctantRight[octFront];\r\n let octL1 = FingerTip.moveOctantLeft[octL0];\r\n let octR1 = FingerTip.moveOctantRight[octR0];\r\n let octL2 = FingerTip.moveOctantLeft[octL1];\r\n let octR2 = FingerTip.moveOctantRight[octR1];\r\n let octL3 = FingerTip.moveOctantLeft[octL2];\r\n let octR3 = FingerTip.moveOctantRight[octR2];\r\n let ptCenter = new Point2D(FingerTip.cellsWidth/2, FingerTip.cellsWidth/2);\r\n \r\n\r\n // mark the meniscus area\r\n FingerTip.doFilledCircle(this.radius, this.smashRadius, (i: number, pt: Point2D)=>{\r\n let fCellSrc = this.getFlowCell(pt.x, pt.y, CellKind.meniscus, CellKind.meniscus);\r\n });\r\n \r\n // mark the the smash area\r\n if (this.smashRadius > 0) {\r\n FingerTip.doFilledCircle(this.smashRadius, 0, (i: number, pt: Point2D)=>{\r\n let fCellSrc = this.getFlowCell(pt.x, pt.y, CellKind.smash, CellKind.smash);\r\n });\r\n }\r\n\r\n // set the scrapes\r\n FingerTip.doFilledCircle(this.radius, this.smashRadius, (i: number, pt: Point2D)=>{\r\n let fCellSrc = this.getFlowCell(pt.x, pt.y, CellKind.meniscus, CellKind.meniscus);\r\n fCellSrc.move1 = {\r\n fCellDest:this.getFlowCell(fCellSrc.ptOnPrint.x + offsetsFront.x, fCellSrc.ptOnPrint.y + offsetsFront.y,\r\n CellKind.corona, CellKind.background), fraction:1} as FlowCellMove;\r\n \r\n });\r\n if (this.smashRadius > 0) {\r\n FingerTip.doFilledCircle(this.smashRadius, 0, (i: number, pt: Point2D)=>{\r\n let fCellSrc = this.getFlowCell(pt.x, pt.y, CellKind.smash, CellKind.smash);\r\n fCellSrc.move1 = {\r\n fCellDest:this.getFlowCell(fCellSrc.ptOnPrint.x + offsetsFront.x, fCellSrc.ptOnPrint.y + offsetsFront.y,\r\n CellKind.corona, CellKind.background), fraction:1} as FlowCellMove;\r\n });\r\n }\r\n\r\n this.fCellMap.forEach((v,k) => v.forEach(fCell => {\r\n if (fCell.finalKind === CellKind.meniscus) {\r\n this.fCellsMeniscusScrape.push(fCell);\r\n } else if (fCell.finalKind === CellKind.smash) {\r\n this.fCellsSmashScrape.push(fCell);\r\n } else {\r\n return;\r\n }\r\n let pt = fCell.ptOnPrint;\r\n let o = pt.octantFrom(ptCenter);\r\n let offsetsFill : Point2D;\r\n let offsetsTrace : Point2D;\r\n if (o === octL0 || o === octL1 || o === octL2 || o === octL3) {\r\n offsetsFill = Point2D.offsetsFromOctant(octRight);\r\n offsetsTrace = Point2D.offsetsFromOctant(octLeft);\r\n } else {\r\n offsetsFill = Point2D.offsetsFromOctant(octLeft);\r\n offsetsTrace = Point2D.offsetsFromOctant(octRight);\r\n }\r\n fCell.move2 = {fCellDest:this.getFlowCell(pt.x + offsetsFill.x, pt.y + offsetsFill.y,\r\n CellKind.corona, CellKind.background), fraction:1} as FlowCellMove;\r\n fCell.move3 = {fCellDest:this.getFlowCell(pt.x + offsetsTrace.x, pt.y + offsetsTrace.y,\r\n CellKind.corona, CellKind.background), fraction:1} as FlowCellMove;\r\n\r\n\r\n } ));\r\n \r\n if (this.smashRadius >= 2) {\r\n // smooth the front\r\n let rCirc = FingerTip.getConnectedCircle(this.smashRadius+1);\r\n let clockBackFirst = rCirc[octRight]!;\r\n let counterBackFirst = rCirc[octLeft]!.prev!;\r\n let clockFrontFirst = counterBackFirst.prev!;\r\n let clockFrontLast = clockBackFirst.next!;\r\n\r\n let traceArc = clockFrontFirst;\r\n let processedLastArc = false;\r\n while (processedLastArc === false) {\r\n let fCell = this.getFlowCell(traceArc.value.x, traceArc.value.y, CellKind.background, CellKind.background);\r\n let tracePrev = traceArc.prev!;\r\n let fCellPrev = this.getFlowCell(tracePrev.value.x, tracePrev.value.y, CellKind.background, CellKind.background);\r\n let traceNext = traceArc.next!;\r\n let fCellNext = this.getFlowCell(traceNext.value.x, traceNext.value.y, CellKind.background, CellKind.background);\r\n fCell.move4 = {fCellDest:fCellPrev, fraction:1} as FlowCellMove;\r\n fCell.move5 = {fCellDest:fCellNext, fraction:1} as FlowCellMove;\r\n this.fCellsMeniscusBlend.push(fCell);\r\n\r\n if (traceNext === undefined || traceNext === clockFrontLast) {\r\n processedLastArc = true;\r\n }\r\n\r\n traceArc = traceNext!\r\n }\r\n \r\n // // make the scrape channels\r\n // const wFat = FingerTip.cellsWidth;\r\n // const hFat = wFat;\r\n // let channelCenter = FingerTip.smearChannelOctantCenter[octFront];\r\n // for (const fCell of this.fCellsSmashScrape) {\r\n // let ptOnPrintFlipY = new Point2D(fCell.ptOnPrint.x, (hFat - 1) - fCell.ptOnPrint.y);\r\n // let comps = ptCenter.componentDistanceWithMoveOctantTo(ptOnPrintFlipY, octFront);\r\n // let i = Math.floor(comps.dy + FingerTip.maxFingerRadius - 1);\r\n\r\n // i = i + channelCenter;\r\n\r\n // fCell.preferredScrapeDepth = FingerTip.smearChannelDepths[i];\r\n // fCell.maxScrapeDepth = fCell.preferredScrapeDepth + 1;\r\n // }\r\n\r\n\r\n rCirc = FingerTip.getConnectedCircle(this.smashRadius);\r\n clockBackFirst = rCirc[octRight]!;\r\n counterBackFirst = rCirc[octLeft]!.prev!;\r\n\r\n let traceArcFirst = clockBackFirst;\r\n let traceArcLast = counterBackFirst;\r\n\r\n traceArc = traceArcFirst;\r\n processedLastArc = false;\r\n while (processedLastArc === false) {\r\n let fCellTraceArc = this.getFlowCell(traceArc.value.x, traceArc.value.y, CellKind.background, CellKind.background);\r\n let traceNext = traceArc.next!;\r\n if (traceNext === undefined || traceNext === traceArcLast) {\r\n processedLastArc = true;\r\n }\r\n let d = Math.abs(FingerTip.cellsWidth/2 - traceArc.value.x) - .5;\r\n\r\n let fCellTraceChannel = fCellTraceArc;\r\n let processedLastChannel = false;\r\n let channelMax = d < 1 ? FingerTip.preferredSmashScrapeDepth: fCellTraceChannel.preferredScrapeDepth;\r\n if (channelMax < 2) {\r\n channelMax = 2;\r\n }\r\n //channelMax = w;\r\n while (processedLastChannel === false) {\r\n let fCellNextChannel = fCellTraceChannel.move1 === undefined ? undefined : fCellTraceChannel.move1!.fCellDest;\r\n if (fCellNextChannel === undefined || fCellNextChannel.finalKind !== CellKind.smash) {\r\n processedLastChannel = true;\r\n }\r\n fCellTraceChannel.preferredScrapeDepth = channelMax;\r\n fCellTraceChannel = fCellNextChannel!\r\n }\r\n traceArc = traceNext!\r\n }\r\n }\r\n\r\n // now places for overflow corona to go\r\n for (let r = this.radius + 1; r < this.radius + FingerTip.maxCoronaWidth; r++) {\r\n let rCirc = FingerTip.getConnectedCircle(r);\r\n let clockFrontFirst = rCirc[octFront]!;\r\n\r\n let trace = clockFrontFirst;\r\n do {\r\n let fCell = this.getFlowCell(trace.value.x, trace.value.y, CellKind.corona, CellKind.background);\r\n let o = fCell.ptOnPrint.octantFrom(ptCenter);\r\n let offsetsFront = Point2D.offsetsFromOctant(o);\r\n let fCellFront = this.getFlowCell(fCell.ptOnPrint.x + offsetsFront.x, fCell.ptOnPrint.y + offsetsFront.y, CellKind.corona, CellKind.background);\r\n let offsetsRight = Point2D.offsetsFromOctant(FingerTip.moveOctantRight[o]);\r\n let fCellRight = this.getFlowCell(fCell.ptOnPrint.x + offsetsRight.x, fCell.ptOnPrint.y + offsetsRight.y, CellKind.corona, CellKind.background);\r\n let offsetsLeft = Point2D.offsetsFromOctant(FingerTip.moveOctantRight[o]);\r\n let fCellLeft = this.getFlowCell(fCell.ptOnPrint.x + offsetsLeft.x, fCell.ptOnPrint.y + offsetsLeft.y, CellKind.corona, CellKind.background);\r\n fCell.move1 = {fCellDest:fCellFront, fraction:.5} as FlowCellMove;\r\n fCell.move4 = {fCellDest:fCellRight, fraction:.25} as FlowCellMove;\r\n fCell.move5 = {fCellDest:fCellLeft, fraction:.25} as FlowCellMove;\r\n\r\n\r\n trace = trace.next!;\r\n } while (trace !== clockFrontFirst);\r\n }\r\n this.finalizeFlowCells();\r\n\r\n }\r\n\r\n private makeKnifeShape(octantMove: number, octantFrom: number){\r\n const filledScrapeOctant = FingerTip.fromMoveScrapeOctants[octantFrom][octantMove];\r\n\r\n // knife has two straight line fingertips that share the same locations\r\n // on regular fingertip is bound to the page and it has the job of lifting paint up and placing it\r\n // onto the other fingertip, this one is bound to the 'blade' buffer that is like a 1D page to hold paint\r\n // the blade tip moves paint back onto the page when there is a gap or edge in the pattern\r\n // patterns are set at drag time based on the paint volume selected, so customization must happen later\r\n // it goes like this: regular tip moves paint off the page onto the blade. the blade tip smooths out accumulated paint on the \r\n // knife. then it deposits back onto the page in the gaps.\r\n // scrape tip uses move1 to lift paint to blade cells. blade cells use move2 and 3 for smoothing and 1 for depositing\r\n // scrape cells with move1 NOT set are the gaps or edges. they get paint from the blade cells\r\n // blade cells with move1 NOT set are the smooth areas.\r\n\r\n this.fCellsKnifeBack = new Array();\r\n this.fCellsKnifeEdge = new Array();\r\n this.tipKnifeBlade = new FingerTip(this.radius, this.application);\r\n this.tipKnifeBlade.fCellsKnifeEdge = new Array();\r\n this.octFrom = octantFrom;\r\n this.octMove = octantMove;\r\n\r\n\r\n let offsetsMove = Point2D.offsetsFromOctant(octantMove);\r\n let ptCenter = new Point2D(FingerTip.tipCenter.x + offsetsMove.x, FingerTip.tipCenter.y + offsetsMove.y);\r\n\r\n let backX = offsetsMove.x * -1;\r\n let backY = offsetsMove.y * -1;\r\n // points just behind the knife since knife clears behind\r\n //let midlinePoints = FingerTip.getMoveOctantMidlineLookup(FingerTip.moveOctantRight[FingerTip.moveOctantRight[FingerTip.moveOctantRight[FingerTip.moveOctantRight[octantMove]]]]);\r\n let midlinePoints = FingerTip.getMoveOctantMidlineLookup(octantMove);\r\n\r\n const makeScrapeCell = (pt: Point2D, edge: boolean)=>{\r\n let fCellSrc = this.getFlowCell(pt.x, pt.y, CellKind.knife, CellKind.knife);\r\n if (edge) {\r\n this.fCellsKnifeEdge!.push(fCellSrc);\r\n let fCellDst = this.tipKnifeBlade!.getFlowCell(pt.x, pt.y, CellKind.knife, CellKind.knife);\r\n fCellSrc.move1 = {fCellDest:fCellDst, fraction:1} as FlowCellMove;\r\n } else {\r\n this.fCellsKnifeBack!.push(fCellSrc);\r\n let fCellDst = this.getSingleChangeFlowCell(pt, 0, {r:1, g:1, b:1});\r\n fCellSrc.move1 = {fCellDest:fCellDst, fraction:1} as FlowCellMove;\r\n }\r\n }\r\n\r\n // make the blade cells first so we can chain them together for smoothing\r\n let fCellBlade = new Array();\r\n let fCellBladeFront = new Array();\r\n\r\n midlinePoints.forEach((ySet, x) => {\r\n ySet.forEach((i, y) => {\r\n let pt = new Point2D(x, y);\r\n let ptFront = new Point2D(pt.x + offsetsMove.x, pt.y + offsetsMove.y);\r\n let dPt = ptFront.distanceTo(ptCenter);\r\n\r\n if (dPt <= this.radius) {\r\n let fCell = this.tipKnifeBlade!.getFlowCell(pt.x, pt.y, CellKind.knife, CellKind.knife);\r\n fCellBlade.push(fCell);\r\n this.tipKnifeBlade!.fCellsKnifeEdge!.push(fCell);\r\n fCell = this.tipKnifeBlade!.getFlowCell(ptFront.x, ptFront.y, CellKind.knife, CellKind.knife);\r\n fCellBladeFront.push(fCell);\r\n this.tipKnifeBlade!.fCellsKnifeEdge!.push(fCell);\r\n } \r\n })\r\n });\r\n\r\n const chainBladeCells = (fCells: Array)=>{\r\n for (let i = 2; i < fCells.length-1; i++) {\r\n let fCell = fCells[i];\r\n let fCellNext = fCells[i+1];\r\n let fCellPrev = fCells[i-1];\r\n fCell.move2 = {fCellDest:fCellPrev, fraction:1} as FlowCellMove;\r\n fCell.move3 = {fCellDest:fCellNext, fraction:1} as FlowCellMove;\r\n }\r\n }\r\n chainBladeCells(fCellBlade);\r\n chainBladeCells(fCellBladeFront);\r\n\r\n\r\n midlinePoints.forEach((ySet, x) => {\r\n ySet.forEach((i, y) => {\r\n let pt = new Point2D(x, y);\r\n let ptFront = new Point2D(pt.x + offsetsMove.x, pt.y + offsetsMove.y);\r\n let dPt = ptFront.distanceTo(ptCenter);\r\n\r\n if (dPt <= this.radius) {\r\n makeScrapeCell(pt, true);\r\n makeScrapeCell(ptFront, true);\r\n } \r\n \r\n pt = new Point2D(pt.x + backX, pt.y + backY);\r\n let octPt = pt.octantFrom(ptCenter);\r\n while((filledScrapeOctant.has(octPt)) && pt.distanceTo(ptCenter) <= this.radius) {\r\n makeScrapeCell(pt, false);\r\n pt = new Point2D(pt.x + backX, pt.y + backY);\r\n octPt = pt.octantFrom(ptCenter);\r\n }\r\n\r\n })\r\n });\r\n\r\n this.finalizeFlowCells();\r\n this.tipKnifeBlade!.finalizeFlowCells();\r\n //console.log(s);\r\n\r\n }\r\n customizeKnifePattern(paintRadius : number, octMove: number) {\r\n let patternDo = this.getKnifePattern(paintRadius);\r\n let pattern = patternDo[0];\r\n let offsetsMove = Point2D.offsetsFromOctant(octMove);\r\n // expand the space we use to measure distance so that the two lines centered on the middle actually seem to be\r\n // the midline without any jaggy funny business. all so we can index into the pattern array\r\n let offsetsExpand = Point2D.offsetsFromOctant(FingerTip.moveOctantLeft[FingerTip.moveOctantLeft[octMove]]);\r\n let expandX = offsetsExpand.x * 100;\r\n let expandY = offsetsExpand.y * 100;\r\n\r\n let ptCenter = new Point2D((FingerTip.tipCenter.x + offsetsMove.x), (FingerTip.tipCenter.y + offsetsMove.y));\r\n let ptCenterExpand = new Point2D(ptCenter.x + ptCenter.x * expandX, ptCenter.y + ptCenter.y * expandY);\r\n for (const fCell of this.fCellsKnifeEdge!) {\r\n let fCellBlade = this.tipKnifeBlade!.getFlowCell(fCell.ptOnPrint.x, fCell.ptOnPrint.y, CellKind.knife, CellKind.knife)!;\r\n let ptCellExpand = new Point2D(fCell.ptOnPrint.x + fCell.ptOnPrint.x * expandX, fCell.ptOnPrint.y + fCell.ptOnPrint.y * expandY);\r\n let dPt = Math.floor(ptCellExpand.distanceTo(ptCenterExpand)/100);\r\n let isScrape = pattern[dPt];\r\n if (isScrape) {\r\n fCell.move1 = {fCellDest:fCellBlade, fraction:1} as FlowCellMove;\r\n fCellBlade.move1 = {fraction: 0} as FlowCellMove;\r\n } else {\r\n fCell.move1 = {fraction: 0} as FlowCellMove;\r\n fCellBlade.move1 = {fCellDest:fCell, fraction:1} as FlowCellMove;\r\n }\r\n }\r\n for (const fCell of this.fCellsKnifeBack!) {\r\n fCell.move1.fraction = patternDo[1] ? 1 : 0;\r\n }\r\n }\r\n\r\n getKnifePattern(paintRadius : number): [Array, boolean] {\r\n // tooth gap is based on the specific depth\r\n // paint radius goes from 5 to 30.\r\n // we want a flat blade with the outer edges flowing over,\r\n // a fine comb that is regular in shape, at the end of this is a H shaped knife that is 1/3 open in the middle\r\n let toothStart = 0;\r\n let toothWidth = 0;\r\n let gapWidth = 0;\r\n let doBack = false;\r\n if (paintRadius === FingerTip.maxFingerRadius) {\r\n toothStart = 10;\r\n toothWidth = 19;\r\n gapWidth = 10;\r\n } else {\r\n let divs = (FingerTip.maxFingerRadius - FingerTip.minFingerRadius) / 5;\r\n paintRadius = paintRadius - FingerTip.minFingerRadius;\r\n if (paintRadius < divs) {\r\n toothStart = 0;\r\n toothWidth = this.radius - 1;\r\n gapWidth = 10;\r\n doBack = true;\r\n } else if (paintRadius < 2 * divs) {\r\n toothStart = 0;\r\n toothWidth = 1;\r\n gapWidth = 1;\r\n } else if (paintRadius < 3 * divs) {\r\n toothStart = 1;\r\n toothWidth = 2;\r\n gapWidth = 2;\r\n } else if (paintRadius < 4 * divs) {\r\n toothStart = 3;\r\n toothWidth = 6;\r\n gapWidth = 6;\r\n }\r\n else {\r\n toothStart = 6;\r\n toothWidth = 12;\r\n gapWidth = 12;\r\n }\r\n }\r\n let pattern = new Array();\r\n let teethLeft = toothWidth;\r\n let gapsLeft = gapWidth;\r\n for (let i = 0; i < this.radius; i++) {\r\n if (i < toothStart) {\r\n pattern.push(0);\r\n } else {\r\n if (teethLeft > 0) {\r\n pattern.push(1);\r\n teethLeft--;\r\n } else {\r\n if (gapsLeft > 0) {\r\n pattern.push(0);\r\n gapsLeft--;\r\n } else {\r\n pattern.push(1);\r\n teethLeft = toothWidth - 1;\r\n gapsLeft = gapWidth;\r\n }\r\n }\r\n }\r\n }\r\n return [pattern, doBack];\r\n\r\n }\r\n\r\n public getChangeTextureIndexes(application: TipApplication) : ChangeTextureIndexes {\r\n if (application.instrument === TipInstrument.finger && application.motion === TipMotion.drag) {\r\n return this.makeSmearChangeTextureIndexes(application);\r\n } else if (application.instrument === TipInstrument.knife) {\r\n return this.makeKnifeChangeTextureIndexes(application);\r\n } else if (application.instrument === TipInstrument.finger && (application.motion === TipMotion.press || application.motion === TipMotion.lift)) {\r\n return this.makeCircleChangeTextureIndexes(application);\r\n } else if (application.instrument === TipInstrument.blow) {\r\n }\r\n return {} as ChangeTextureIndexes;\r\n }\r\n}\r\n\r\nexport default FingerTip;","import tinycolor from 'tinycolor2';\r\nimport {FingerTip} from './fingertip';\r\nimport { Buffer } from 'buffer';\r\nimport { Point2D } from './utils';\r\n\r\n\r\nexport enum AnimationActionKind {\r\n start = 1,\r\n drag = 2,\r\n dry = 3,\r\n color = 4,\r\n paintRadius = 5,\r\n stamp = 6,\r\n finish = 7\r\n}\r\n\r\nexport interface AnimationActionStart {\r\n kind: AnimationActionKind;\r\n pt: Point2D;\r\n rad: number;\r\n}\r\nexport interface AnimationActionDrag {\r\n kind: AnimationActionKind;\r\n pt: Point2D;\r\n rad: number;\r\n}\r\nexport interface AnimationActionDry {\r\n kind: AnimationActionKind;\r\n count?: number;\r\n}\r\nexport interface AnimationActionColor {\r\n kind: AnimationActionKind;\r\n color: string;\r\n}\r\nexport interface AnimationActionPaintRadius {\r\n kind: AnimationActionKind;\r\n rad: number;\r\n}\r\n\r\nexport interface AnimationActionStampLine{\r\n pt: Point2D;\r\n colors: Array;\r\n}\r\n\r\nexport interface AnimationActionStamp {\r\n kind: AnimationActionKind;\r\n rad: number;\r\n x1: number;\r\n x2: number;\r\n y1: number;\r\n y2: number;\r\n lines: Array;\r\n}\r\n\r\nexport type AnimationAction = (AnimationActionStart | AnimationActionDrag | AnimationActionDry | AnimationActionColor | AnimationActionPaintRadius | AnimationActionStamp);\r\n\r\nclass AnimationActionRecording {\r\n recordedAction = new Array();\r\n\r\n constructor() {\r\n }\r\n \r\n lastSerializedAction: number = -1;\r\n \r\n hasContent() : boolean {\r\n return this.recordedAction.length > 0;\r\n }\r\n\r\n recordAction(newAction: AnimationAction) {\r\n // either record a new dry action OR update the last action (a dry) to have a count\r\n if (this.hasContent()) {\r\n if (newAction.kind === AnimationActionKind.dry) {\r\n const lastAction = this.recordedAction[this.recordedAction.length - 1] as AnimationActionDry;\r\n if (lastAction.kind === AnimationActionKind.dry) {\r\n if (lastAction.count !== undefined) {\r\n lastAction.count ++;\r\n } else {\r\n lastAction.count = 2;\r\n }\r\n return;\r\n }\r\n }\r\n } else {\r\n // dry with no paint means nothing\r\n if (newAction.kind === AnimationActionKind.dry) {\r\n return;\r\n }\r\n }\r\n\r\n this.recordedAction.push(newAction);\r\n }\r\n\r\n public chopAfter(i: number) {\r\n if (this.hasContent() === false) {\r\n return;\r\n }\r\n let recLength = this.recordedAction.length;\r\n i++\r\n if (i <= 0 || i >= recLength) {\r\n return;\r\n }\r\n this.recordedAction = this.recordedAction.slice(0, i);\r\n this.lastSerializedAction = -1;\r\n }\r\n\r\n public removeLastStroke() {\r\n\r\n if (this.hasContent() === false) {\r\n return;\r\n }\r\n let iPeek = this.recordedAction.length - 1;\r\n let cPop = 1;\r\n\r\n while (iPeek >= 0) {\r\n let last = this.recordedAction[iPeek];\r\n if (last.kind === AnimationActionKind.start || last.kind === AnimationActionKind.stamp) {\r\n while (cPop > 0) {\r\n this.lastSerializedAction=-1;\r\n this.recordedAction.pop();\r\n cPop --;\r\n }\r\n return;\r\n }\r\n iPeek--;\r\n cPop ++;\r\n }\r\n }\r\n\r\n public getSerializeNeeded() : string {\r\n let recLength = this.recordedAction.length;\r\n if (recLength === 0) {\r\n return \"skip\";\r\n }\r\n // never saved before, that is new too\r\n if (this.lastSerializedAction === -1) {\r\n return 'new';\r\n }\r\n if (recLength === this.lastSerializedAction + 1) {\r\n return \"skip\";\r\n }\r\n return \"new\";\r\n }\r\n\r\n public stampSeen = false;\r\n\r\n public serialize(): string {\r\n\r\n this.stampSeen = false;\r\n\r\n if (!this.hasContent()) {\r\n return \"\";\r\n }\r\n let actions = this.recordedAction;\r\n let startFrom = 0;\r\n \r\n this.lastSerializedAction = startFrom;\r\n\r\n let off = 0;\r\n for (const act of actions) {\r\n off++;\r\n switch (act.kind) {\r\n case AnimationActionKind.color:\r\n off += (1 + 1 + 1);\r\n break;\r\n case AnimationActionKind.paintRadius:\r\n off += 1;\r\n break;\r\n case AnimationActionKind.drag:\r\n case AnimationActionKind.start:\r\n case AnimationActionKind.finish:\r\n off += (2 + 2 + 1);\r\n break;\r\n case AnimationActionKind.dry:\r\n off += 2;\r\n break;\r\n case AnimationActionKind.stamp:\r\n this.stampSeen = true;\r\n const stampAct = (act as AnimationActionStamp);\r\n off += (1 + 2 + 2 + 2 + 2 + 2);\r\n for (const line of stampAct.lines) {\r\n off += (2 + 2 + 2);\r\n off += (line.colors.length * (1 + 1 + 1));\r\n }\r\n break;\r\n }\r\n }\r\n\r\n const buff = new ArrayBuffer(off);\r\n const view = new DataView(buff, 0);\r\n off = 0;\r\n for (const act of actions) {\r\n view.setUint8(off, act.kind);off++;\r\n switch (act.kind) {\r\n case AnimationActionKind.color:\r\n let colorCur = new tinycolor((act as AnimationActionColor).color).toRgb();\r\n view.setUint8(off, colorCur.r);off++;\r\n view.setUint8(off, colorCur.g);off++;\r\n view.setUint8(off, colorCur.b);off++;\r\n break;\r\n case AnimationActionKind.paintRadius:\r\n let paintRadCur = (act as AnimationActionPaintRadius).rad;\r\n view.setUint8(off, Math.floor(paintRadCur));off++;\r\n break;\r\n case AnimationActionKind.drag:\r\n case AnimationActionKind.start:\r\n case AnimationActionKind.finish:\r\n const startAct = (act as AnimationActionStart);\r\n const x = Math.floor(startAct.pt.x);\r\n const y = Math.floor(startAct.pt.y);\r\n const r = Math.floor(startAct.rad);\r\n view.setInt16(off, x);off+=2;\r\n view.setInt16(off, y);off+=2;\r\n view.setUint8(off, r);off++;\r\n break;\r\n case AnimationActionKind.dry:\r\n const dryAct = (act as AnimationActionDry);\r\n let count = 1;\r\n if (dryAct.count !== undefined) {\r\n count = dryAct.count;\r\n }\r\n if (count > 64000) {\r\n count = 64000;\r\n }\r\n view.setUint16(off, count);off+=2;\r\n break;\r\n case AnimationActionKind.stamp:\r\n const stampAct = (act as AnimationActionStamp);\r\n view.setUint8(off, stampAct.rad);off+=1;\r\n view.setUint16(off, stampAct.x1);off+=2;\r\n view.setUint16(off, stampAct.y1);off+=2;\r\n view.setUint16(off, stampAct.x2);off+=2;\r\n view.setUint16(off, stampAct.y2);off+=2;\r\n view.setUint16(off, stampAct.lines.length);off+=2;\r\n for (const line of stampAct.lines) {\r\n view.setInt16(off, line.pt.x);off+=2;\r\n view.setInt16(off, line.pt.y);off+=2;\r\n view.setUint16(off, line.colors.length);off+=2;\r\n for (const col of line.colors) {\r\n view.setUint8(off, col.r);off+=1;\r\n view.setUint8(off, col.g);off+=1;\r\n view.setUint8(off, col.b);off+=1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n this.lastSerializedAction = this.recordedAction.length - 1;\r\n\r\n const encoded = Buffer.from(buff, 0, off).toString('base64');\r\n return encoded;\r\n }\r\n public restore(encoded: string): void {\r\n this.recordedAction = new Array();\r\n this.lastSerializedAction = -1;\r\n const decoded = Buffer.from(encoded, 'base64');\r\n \r\n let prevDryAction : AnimationActionDry | undefined = undefined;\r\n let off = 0;\r\n while (off < decoded.length) {\r\n const kind = decoded.readUInt8(off);off++;\r\n switch(kind) {\r\n case AnimationActionKind.color:\r\n let r = decoded.readUInt8(off);off++;\r\n let g = decoded.readUInt8(off);off++;\r\n let b = decoded.readUInt8(off);off++;\r\n let colorCur: tinycolor.ColorFormats.RGB = {r:r, g:g, b:b};\r\n this.recordedAction.push({kind: kind, color: new tinycolor(colorCur).toHexString()});\r\n prevDryAction = undefined;\r\n break;\r\n case AnimationActionKind.paintRadius:\r\n let paintRadCur = decoded.readUInt8(off);off++;\r\n this.recordedAction.push({kind: kind, rad: paintRadCur});\r\n prevDryAction = undefined;\r\n break;\r\n case AnimationActionKind.drag:\r\n case AnimationActionKind.start:\r\n case AnimationActionKind.finish:\r\n const x = decoded.readInt16BE(off);off+=2;\r\n const y = decoded.readInt16BE(off);off+=2;\r\n const rad = decoded.readUInt8(off);off++;\r\n this.recordedAction.push({kind: kind, pt: new Point2D(x,y), rad:rad});\r\n prevDryAction = undefined;\r\n break;\r\n case AnimationActionKind.dry:\r\n let count = decoded.readUInt16BE(off);off+=2;\r\n if (prevDryAction !== undefined) {\r\n // two dry in a row means save then add while drying. \r\n // the second dry action is the first action repeated with more steps\r\n prevDryAction.count = count; // so just fix the last one and skip this one\r\n } else {\r\n prevDryAction = {kind: kind, count: count};\r\n this.recordedAction.push(prevDryAction);\r\n }\r\n break;\r\n case AnimationActionKind.stamp:\r\n const lines = new Array();\r\n const stampAct : AnimationActionStamp={kind:kind, lines:lines, rad:0, x1:0, x2:0, y1:0, y2:0};\r\n this.recordedAction.push(stampAct);\r\n stampAct.rad = decoded.readUInt8(off);off++;\r\n stampAct.x1 = decoded.readUInt16BE(off);off+=2;\r\n stampAct.y1 = decoded.readUInt16BE(off);off+=2;\r\n stampAct.x2 = decoded.readUInt16BE(off);off+=2;\r\n stampAct.y2 = decoded.readUInt16BE(off);off+=2;\r\n const cLine = decoded.readUInt16BE(off);off+=2;\r\n for (let iLine=0; iLine < cLine; iLine++){\r\n const colors = new Array();\r\n const line : AnimationActionStampLine = {pt:new Point2D(0,0), colors: colors};\r\n line.pt.x = decoded.readInt16BE(off); off+=2;\r\n line.pt.y = decoded.readInt16BE(off); off+=2;\r\n const cColor = decoded.readUint16BE(off); off+=2;\r\n for (let iCol = 0; iCol < cColor; iCol++) {\r\n const rgb: tinycolor.ColorFormats.RGB = {r:0, g:0, b:0};\r\n rgb.r = decoded.readUint8(off); off++;\r\n rgb.g = decoded.readUint8(off); off++;\r\n rgb.b = decoded.readUint8(off); off++;\r\n colors.push(rgb);\r\n }\r\n lines.push(line);\r\n }\r\n prevDryAction = undefined;\r\n break;\r\n default:\r\n console.log('bad data');\r\n return;\r\n }\r\n\r\n }\r\n }\r\n\r\n public finalDrawPropsUsed() : [string, number] {\r\n let finalColor = 'black';\r\n let finalRadius = FingerTip.standardFingerRadius;\r\n let colorFound: boolean = false;\r\n let radiusFound: boolean = false;\r\n if (this.recordedAction !== undefined && this.recordedAction.length > 0) {\r\n for (let i=this.recordedAction.length - 1; i >= 0; i--) {\r\n const act = this.recordedAction[i];\r\n if (colorFound === false && act.kind === AnimationActionKind.color) {\r\n finalColor = (act as AnimationActionColor).color;\r\n colorFound = true;\r\n }\r\n if (radiusFound === false && act.kind === AnimationActionKind.paintRadius) {\r\n finalRadius = (act as AnimationActionPaintRadius).rad;\r\n radiusFound = true;\r\n }\r\n if (colorFound === true && radiusFound === true) {\r\n break;\r\n }\r\n }\r\n }\r\n return [finalColor, finalRadius];\r\n }\r\n \r\n countDrawingActions() {\r\n return this.recordedAction.filter((aa) => aa.kind === AnimationActionKind.drag || aa.kind === AnimationActionKind.start || aa.kind === AnimationActionKind.finish).length;\r\n }\r\n}\r\n\r\n\r\nexport default AnimationActionRecording;","export const ApplicationName = 'smesshy';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `account/authConfig/${ApplicationName}.code`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: 'SmesshyUsers/Account/Register',\r\n IdentityManagePath: 'SmesshyUsers/Account/Manage'\r\n\r\n};\r\n","import React, { Component, useEffect } from 'react';\r\nimport { SmesshyPushy, SmesshyPushyProps, SmesshyPushyState } from '../smesshyCommon';\r\nimport { JsxElement } from 'typescript';\r\nexport interface SmesshyMainButtonState extends SmesshyPushyState{\r\n loading: boolean;\r\n\r\n}\r\nexport interface SmesshyMainButtonProps extends SmesshyPushyProps{\r\n Display: JSX.Element\r\n}\r\n\r\nexport class SmesshyMainButton extends SmesshyPushy(Component) {\r\n\r\n constructor(props: SmesshyMainButtonProps) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n currentPushedState: props.StartPushedState\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n let controlThis = this;\r\n this.setState({ loading:false});\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (prevProps.StartPushedState !== this.props.StartPushedState) {\r\n this.setState({currentPushedState: this.props.StartPushedState})\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.abandonPress();\r\n }\r\n\r\n\r\n render() {\r\n let controlThis = this;\r\n let targetClass = `${this.props.Disabled ? '' : ''}`;\r\n targetClass += ' text-medium text-white smesshy-main-button smesshy-main-panel h-items group-center each-cross-center large-gap';\r\n if (this.state.currentPushedState ) {\r\n targetClass += ' smesshy-main-button-pushed';\r\n } else {\r\n targetClass += ' smesshy-main-button-popped';\r\n }\r\n if (this.props.ExtraStyleClass !== undefined) {\r\n targetClass += ` ${this.props.ExtraStyleClass}`;\r\n }\r\n if (this.props.AllowVScroll) {\r\n targetClass += ' smesshy-touch-pan-y';\r\n }\r\n\r\n return (\r\n
controlThis.onClick(e, this.props)}\r\n onContextMenu={(e:React.MouseEvent)=> controlThis.onContext(e, this.props)}\r\n onPointerDown={(e:React.PointerEvent) => {controlThis.startPress(e, this.props)}}\r\n onPointerUp={(e:React.PointerEvent) => {controlThis.finishPress(e, this.props)} }\r\n onPointerMove={(e:React.PointerEvent) => controlThis.pointerMove(e, this.props)}\r\n onPointerCancel={(e:React.PointerEvent) => controlThis.cancelPress(e, this.props)}\r\n >\r\n {this.props.Display}\r\n
);\r\n }\r\n}\r\n\r\nexport interface SmesshySubButtonState extends SmesshyPushyState{\r\n loading: boolean;\r\n\r\n}\r\nexport interface SmesshySubButtonProps extends SmesshyPushyProps{\r\n Display: JSX.Element\r\n}\r\n\r\nexport class SmesshySubButton extends SmesshyPushy(Component) {\r\n\r\n constructor(props: SmesshySubButtonProps) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n currentPushedState: props.StartPushedState\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n let controlThis = this;\r\n this.setState({ loading:false});\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (prevProps.StartPushedState !== this.props.StartPushedState) {\r\n this.setState({currentPushedState: this.props.StartPushedState})\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.abandonPress();\r\n }\r\n\r\n \r\n render() {\r\n let controlThis = this;\r\n let targetClass = `${this.props.Disabled ? 'smesshy-sub-button-disabled' : ''}`;\r\n targetClass += ' text-white text-medium smesshy-sub-button';\r\n if (this.state.currentPushedState ) {\r\n targetClass += ' smesshy-sub-button-pushed';\r\n } else {\r\n targetClass += ' smesshy-sub-button-popped';\r\n }\r\n if (this.props.ExtraStyleClass !== undefined) {\r\n targetClass += ` ${this.props.ExtraStyleClass}`;\r\n }\r\n if (this.props.AllowVScroll) {\r\n targetClass += ' smesshy-touch-pan-y';\r\n }\r\n\r\n return (\r\n
controlThis.onClick(e, this.props)}\r\n onContextMenu={(e:React.MouseEvent)=> controlThis.onContext(e, this.props)}\r\n onPointerDown={(e:React.PointerEvent) => {controlThis.startPress(e, this.props)}}\r\n onPointerUp={(e:React.PointerEvent) => {controlThis.finishPress(e, this.props)} }\r\n onPointerMove={(e:React.PointerEvent) => controlThis.pointerMove(e, this.props)}\r\n onPointerCancel={(e:React.PointerEvent) => controlThis.cancelPress(e, this.props)}\r\n >\r\n {this.props.Display}\r\n
);\r\n }\r\n}\r\n","import React, { Component, useEffect } from 'react';\r\nimport { App } from '../App'\r\nimport { Navigate } from 'react-router-dom';\r\nimport Smear from './smash/smear';\r\nimport FingerTip from './smash/fingertip';\r\nimport AnimationActionRecording from './smash/animationActions';\r\nimport { SmesshySubButton } from './smesshyButton';\r\nimport { SmesshyCommon, SmesshyCommonProps } from '../smesshyCommon';\r\nimport tinycolor from 'tinycolor2';\r\nimport { Point2D } from './smash/utils';\r\n\r\nexport interface SmesshyAskOption {\r\n Key: string;\r\n PassiveOnly?: boolean;\r\n Option: JSX.Element;\r\n OnOption: (()=>Promise);\r\n Disabled?: boolean;\r\n}\r\nexport interface SmesshyAskParams {\r\n Title: JSX.Element | undefined;\r\n Prompts?: Array | undefined;\r\n Options?: Array | undefined;\r\n OnShow?: (()=>void) | undefined;\r\n OnCancel?: (()=>void) | undefined;\r\n Top?: number;\r\n}\r\n\r\nexport interface SmesshyAskState {\r\n loading: boolean;\r\n\r\n}\r\nexport interface SmesshyAskProps extends SmesshyCommonProps {\r\n Params: SmesshyAskParams\r\n}\r\n\r\nclass SmesshyAsk extends SmesshyCommon(Component) {\r\n\r\n constructor(props: SmesshyAskProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n loading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n let controlThis = this;\r\n this.setState({ loading:false});\r\n if (this.props.Params.OnShow !== undefined) {\r\n this.props.Params.OnShow();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (this.props.Params) {\r\n\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n }\r\n\r\n \r\n render() {\r\n let controlThis = this;\r\n \r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
{this.props.Params.Title}
\r\n X}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n if (controlThis.props.Params.OnCancel) {\r\n controlThis.props.Params.OnCancel();\r\n }\r\n return true;\r\n }}\r\n />\r\n
\r\n {this.props.Params.Prompts === undefined ? <> : \r\n
\r\n {this.props.Params.Prompts}\r\n \r\n
\r\n }\r\n {this.props.Params.Options === undefined ? <> : \r\n
\r\n {this.props.Params.Options.map(o=>\r\n => {return await o.OnOption();}}\r\n Disabled = {o.Disabled}\r\n />\r\n )}\r\n
\r\n }\r\n
\r\n\r\n
\r\n
\r\n \r\n\r\n );\r\n }\r\n}\r\nexport interface SmesshyDoneState {\r\n startReplay: boolean;\r\n\r\n}\r\nexport interface SmesshyDoneProps {\r\n AppObject: App;\r\n Top: number;\r\n OnFinish: ()=>void;\r\n}\r\n\r\nexport class SmesshyDone extends Component {\r\n\r\n check = 'BAEBAQUJAwABBPzTAAUJAwABAQAVADQOAQApAE4OAwABBA0bRAUJBA0bRAUJAwABAQArAEwOAwABAQAWADAOAgAbADYOAgAeADsOAgAhAEAOAgAkAEUOAgAmAEoOAgArAEYOAgAzAEEOAgA4AD8OAgA9ADsOAgBAADUOAgBDADAOAgBIAC0OAgBKACgOAgBNACMOAgBSAB8OAgBXABwOAgBcABsOAgBeABYOAgBjABMOAgBmAA4OAwABBAEBAQUJAQAcACsOAgAhAC0OAgAmADEOAgAoADYOAgAsADsOAgAuAEAOAgAzADsOAgA3ADYOAgA6ADEOAgA/AC8OAgBEAC0OAgBJACkOAgBOACUOAgBTACEOAgBZAB8OAgBeABwOAgBiABcOAgBmABIOAgBpAA0OAgBnABMOAgBhABgOAgBcABsOAgBXAB8OAgBUACQOAgBYAB8OAgBcABoOAgBgABUOAgBlABAOAgBqAAsOAgBvAAkOAwAn';\r\n smearRef: React.RefObject;\r\n checkRecording: AnimationActionRecording; \r\n\r\n constructor(props: SmesshyDoneProps) {\r\n super(props);\r\n\r\n this.checkRecording = new AnimationActionRecording();\r\n this.smearRef = React.createRef();\r\n this.state = {\r\n startReplay: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n this.setState({ startReplay: true});\r\n \r\n }\r\n \r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n const ReplayObserver = () => {\r\n useEffect(()=>{\r\n const smear = controlThis.smearRef.current;\r\n if (controlThis.state.startReplay === true && smear) {\r\n // if there is no render context, that means thing are still setting up in that child component. set our state to something dumb to trigger a re render\r\n if (smear.getPage() === undefined) {\r\n this.setState({startReplay: false});\r\n } else {\r\n // replay could happen. restore the sequence\r\n this.checkRecording.restore(this.check); \r\n smear!.replayRecorded(1, 1.5, this.checkRecording.recordedAction, ()=>{this.props.OnFinish()}); \r\n controlThis.setState({startReplay: false});\r\n }\r\n }\r\n \r\n });\r\n return <>;\r\n }\r\n\r\n \r\n return (\r\n <>\r\n \r\n
\r\n
\r\n {}}\r\n UseMouse={false}\r\n FixedSize={FingerTip.standardFingerRadius}\r\n AvgLightRadius={0}\r\n AvgHeavyRadius={0}\r\n PaintRadius={0}\r\n ExceptionHandler={(source: string, kind: string, code: string, exception: unknown)=>{this.props.AppObject.reportException(source, kind, code, exception)}}\r\n />\r\n
\r\n \r\n
\r\n );\r\n }\r\n \r\n}\r\n\r\nexport interface SmesshyWaitState {\r\n startReplay: boolean;\r\n\r\n}\r\nexport interface SmesshyWaitProps {\r\n AppObject: App;\r\n Top: number;\r\n}\r\n\r\nexport class SmesshyWait extends Component {\r\n\r\n swirl = 'BAEBAQUFAwABAQAUADIJAgAPAC0JAgAPACgJAgAPACMJAgAPAB0JAgAPABgJAgAQABMJAgAVABAJAgAaABIJAgAiABcJAgAoABoJAgAtAB8JAgAwACUJAgAxACwJAgAyADEJAgAtADQJAgAnADQJAgAiADQJAgAdADIJAgAZACwJAgAVACcJAgAUACMJAwCp'\r\n smearRef: React.RefObject;\r\n checkRecording: AnimationActionRecording; \r\n\r\n constructor(props: SmesshyDoneProps) {\r\n super(props);\r\n\r\n this.checkRecording = new AnimationActionRecording();\r\n this.smearRef = React.createRef();\r\n this.state = {\r\n startReplay: true,\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n\r\n this.setState({ startReplay: true});\r\n \r\n }\r\n \r\n\r\n render() {\r\n let controlThis = this;\r\n const randoColor = ()=> {\r\n const r = Math.floor(Math.random() * 255);\r\n const g = Math.floor(Math.random() * 255);\r\n const b = Math.floor(Math.random() * 255);\r\n return new tinycolor({r,g,b}).toHexString();\r\n }\r\n\r\n const ReplayObserver = () => {\r\n useEffect(()=>{\r\n const smear = controlThis.smearRef.current;\r\n if (controlThis.state.startReplay === true && smear) {\r\n // if there is no render context, that means thing are still setting up in that child component. set our state to something dumb to trigger a re render\r\n if (smear.getPage() === undefined) {\r\n this.setState({startReplay: false});\r\n } else {\r\n\r\n smear!.pokeColor(new Point2D(25,25), randoColor(), 4, 2 + Math.floor(Math.random() * 4));\r\n smear!.pokeColor(new Point2D(25,40), randoColor(), 4, 2 + Math.floor(Math.random() * 4));\r\n smear!.pokeColor(new Point2D(40,51), randoColor(), 4, 2 + Math.floor(Math.random() * 4));\r\n controlThis.checkRecording.restore(controlThis.swirl); \r\n smear!.replayRecorded(.8, 1.2, controlThis.checkRecording.recordedAction, ()=>{\r\n controlThis.setState({startReplay: true});\r\n\r\n }, true); \r\n controlThis.setState({startReplay: false});\r\n }\r\n }\r\n \r\n });\r\n return <>;\r\n }\r\n\r\n \r\n return (\r\n <>\r\n \r\n
\r\n
\r\n {}}\r\n UseMouse={false}\r\n FixedSize={FingerTip.standardFingerRadius}\r\n AvgLightRadius={0}\r\n AvgHeavyRadius={0}\r\n PaintRadius={0}\r\n ExceptionHandler={(source: string, kind: string, code: string, exception: unknown)=>{this.props.AppObject.reportException(source, kind, code, exception)}}\r\n />\r\n
\r\n \r\n
\r\n );\r\n }\r\n \r\n}\r\n\r\n\r\nexport default SmesshyAsk;","import React, { Component, useEffect } from 'react';\r\nimport { SmesshyCommon, SmesshyCommonProps } from '../smesshyCommon';\r\nimport Toggle from 'react-toggle';\r\n\r\nexport interface TutorialStepParams {\r\n Key: string;\r\n Content: JSX.Element;\r\n Top: number;\r\n Left: number;\r\n Width: number;\r\n Height?: number;\r\n}\r\n\r\nexport interface TutorialStepState {\r\n loading: boolean;\r\n\r\n}\r\nexport interface TutorialStepProps extends SmesshyCommonProps {\r\n Params: TutorialStepParams;\r\n Scale: number;\r\n OnDismiss: ()=>void;\r\n}\r\n\r\nclass TutorialStep extends SmesshyCommon(Component) {\r\n\r\n constructor(props: TutorialStepProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n loading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n let controlThis = this;\r\n this.setState({ loading:false});\r\n controlThis._app!.FinishTutorial(controlThis.props.Params.Key);\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (this.props.Params) {\r\n\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n }\r\n\r\n \r\n render() {\r\n let controlThis = this;\r\n let centerStyle = 'each-cross-center';\r\n let boxLeft = this.props.Params.Left * this.props.Scale;\r\n let boxWidth = this.props.Params.Width * this.props.Scale;\r\n let boxTop = this.props.Params.Top * this.props.Scale;\r\n if (boxLeft !== undefined) {\r\n centerStyle = '';\r\n }\r\n \r\n return (\r\n
{\r\n controlThis.props.OnDismiss();\r\n }}\r\n >\r\n
\r\n
\r\n {this.props.Params.Content === undefined ? <> : this.props.Params.Content}\r\n \r\n
\r\n (Touch anywhere to dismiss this.)\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nexport const tutorialPaintingInitial: TutorialStepParams = {\r\n Key: 'paintingInitial',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Painting

\r\n

This is where it all happens, the painting canvas!

\r\n

Touch the canvas to learn about finger strokes.

\r\n

Touch any of the buttons along the top or left side to find out what they do.

\r\n
\r\n}\r\n\r\nexport const tutorialPaintingCanvasTouch: TutorialStepParams = {\r\n Key: 'paintingCanvas',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Finger / Canvas

\r\n

Each time you touch the canvas, you apply a new dab of paint which spreads and mixes with paint already on the canvas. When it 'runs dry' just dab again.

\r\n

Using the very tip of your finger should make a small, short, solid streak while pressing your finger flat makes a veritable 'paint plow' leaving a wide swath of shallow streaks.

\r\n

The paint you apply will dry slowly. Partially dry paint sticks to the canvas and totally dry paint doesn't even mix or move when you smear over it.

\r\n
\r\n}\r\nexport const tutorialPaintingCanvasManual: TutorialStepParams = {\r\n Key: 'paintingCanvas',\r\n Top: 40,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Finger / Canvas

\r\n

Each time you touch the canvas, you apply a new dab of paint which spreads and mixes with paint already on the canvas. When it 'runs dry' just dab again.

\r\n

Using the very tip of your finger should make a small, short, solid streak while pressing your finger flat makes a veritable 'paint plow' leaving a wide swath of shallow streaks.

\r\n

(However, since you are using the 'manual' finger size adjustment, move that slider on the bottom of the canvas to apply different tip weights.)

\r\n

The paint you apply will dry slowly. Partially dry paint sticks to the canvas and totally dry paint doesn't even mix or move when you smear over it.

\r\n
\r\n}\r\n\r\nexport const tutorialPaintingColor: TutorialStepParams = {\r\n Key: 'paintingColor',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Color and Amount

\r\n

Obviously, pressing one of the color splotch buttons changes the color of paint on the tip of your finger.

\r\n

BUT ALSO, you are adjusting 'how much' paint is on your fingertip when you paint. At the very bottom of the canvas, you will see a volume meter. The color of the meter is the selected color and the 'fullness of the meter (width) shows your paint volume.

\r\n

Tapping a color button gives just a dab of paint, holding a button down until the meter is full gives a big glop.

\r\n
\r\n}\r\n\r\nexport const tutorialPaintingSmudge: TutorialStepParams = {\r\n Key: 'paintingSmudge',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Smudge and Blend

\r\n

The smudge finger lets you push, drag, smooth, and blend paint already on the canvas without adding a new color.

\r\n

Dry paint doesn't smudge.

\r\n

It works by 'painting' with clear paint. So, just like with other color selections, you set the amount of clear paint to apply by holding down this button before doing your smudge.

\r\n
\r\n}\r\nexport const tutorialPaintingKnife: TutorialStepParams = {\r\n Key: 'paintingKnife',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Behold the Knife!

\r\n

The scraper knife button turns your finger into a powerful and terrifying blade that can create fantastic effects or destroy your work. You decide.

\r\n

Wet paint should scrape off cleanly, revealing whatever was underneath. Dry paint? Dry paint will take some scrubbing. However, even scrubbed off paint looks interesting.

\r\n

A short tap on the knife button makes a flat clean blade while a slightly longer press makes a feather like rake. As you hold the button longer, your knife becomes a notched trowel and eventually a wide 'H' shape.

\r\n
\r\n}\r\nexport const tutorialPaintingBlow: TutorialStepParams = {\r\n Key: 'paintingBlow',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Blow to Dry

\r\n

Paint dries slowly but sometimes you're in a hurry or you want to create an interesting effect.

\r\n

The 'Blow on it' button lets you 'paint with dryness.' The more you 'fill up' this button by holding it down, the faster your canvas drying strokes will work.

\r\n

When the paint in a region is completely dry, it will appear lightly colored until you let up your finger.

\r\n

Partially dry paint will still smear while also leaving behind a solid color when painted over.

\r\n
\r\n}\r\nexport const tutorialPaintingSample: TutorialStepParams = {\r\n Key: 'paintingSample',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Sample and Save a Color

\r\n

In theory those first five starting colors are all you need: Black, White, Arylide Yellow, Perylene Red, and Phthalo Blue pigments can be combined to make almost any color. In practice, that's nutty. Once you've made that perfect shade of turquoise you don't want to keep making it.

\r\n

Pressing the 'Sample' button turns your finger into an eyedropper. With it you then touch your canvas on the color you love, and you will get a new splotch button to work with.

\r\n
\r\n}\r\n\r\nexport const tutorialPaintingPaletteSwap: TutorialStepParams = {\r\n Key: 'paintingPaletteSwap',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Palette / Canvas Swap

\r\n

This button will let you work on your color palette.

\r\n

The palette is a different canvas where you can mix together custom colors.

\r\n

Pressing this button again from the palette view brings you back to this canvas.

\r\n
\r\n}\r\n\r\nexport const tutorialPaintingPalette: TutorialStepParams = {\r\n Key: 'paintingPalette',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Your Palette

\r\n

This is your color mixing and experimentation palette.

\r\n

Use it to make new colors, use the Sample '+' button to save those great colors.

\r\n

Paint right over that printed text or use the little dishes at the bottom to keep things apart.

\r\n

Since the palette paint never dries natually, you can always use the knife to clear off new space when needed.

\r\n
\r\n}\r\n\r\nexport const tutorialPaintingTrash: TutorialStepParams = {\r\n Key: 'paintingTrash',\r\n Top: 200,\r\n Left: 0,\r\n Width: 340,\r\n Content:
\r\n

Trash

\r\n

You can clear the canvas and start fresh and/or...

\r\n

Remove all of the custom colors you have sampled and saved.

\r\n
\r\n}\r\n\r\nexport const tutorialPaintingReplay: TutorialStepParams = {\r\n Key: 'paintingReplay',\r\n Top: 160,\r\n Left: 0,\r\n Width: 340,\r\n Content:
\r\n

Replay / Stop

\r\n

Redraw the current painting using a magical invisible finger. This lets you spy on someone else’s painting steps too!

\r\n

Your last unsaved painting will replay if you reload Smesshy. If that is not what you want, you can press the 'stop' button.

\r\n

(Stopping a replay will throw away any steps after the stopping point.)

\r\n\r\n \r\n
\r\n}\r\n\r\nexport const tutorialPaintingStamp: TutorialStepParams = {\r\n Key: 'paintingStamp',\r\n Top: 240,\r\n Left: 0,\r\n Width: 340,\r\n Content:
\r\n

Stamp a Photo

\r\n

Take a photo or get an image from your device and stamp it on the canvas using paint. The stamped image will be wet, smearable paint and it will blend colors with any paint already on the canvas. BEFORE you select a picture, decide just how much paint should be used to stamp.

\r\n

Once selected, you can pinch and move the photo to rotate or resize it. When you are happy with the position, touch somewhere off the photo to stamp it down.

\r\n \r\n
\r\n}\r\n\r\nexport const tutorialPaintingSave: TutorialStepParams = {\r\n Key: 'paintingSave',\r\n Top: 240,\r\n Left: 0,\r\n Width: 340,\r\n Content:
\r\n

Save Your Painting

\r\n \r\n You can save / send your painting to one of these places:\r\n \r\n
    \r\n
  • Only you see it. Find it in your Gallery page.
  • \r\n
  • DM a friend (mutual follower). They find it in their Lunchbox for a short time, you get a permanent copy too.
  • \r\n
  • Visible to all who follow you. They see it in their Following Gallery page
  • \r\n
  • Public entry to the currently running challenge (if one is open now). Others will vote on it, it can show up in Trending or Fantastic Gallery.
  • \r\n
\r\n \r\n
\r\n}\r\n\r\nexport const tutorialPaintingSaveAnon: TutorialStepParams = {\r\n Key: 'paintingSaveAnon',\r\n Top: 60,\r\n Left: 40,\r\n Width: 300,\r\n Content:
\r\n

Save Your Painting

\r\n

You need a Smesshy account to save paintings.

\r\n

If you press Save again, you will be asked to sign in.

\r\n \r\n
\r\n}\r\n\r\nexport const tutorialKeys = [\r\n 'any',\r\n 'paintingInitial',\r\n 'paintingCanvas',\r\n 'paintingCanvas',\r\n 'paintingColor',\r\n 'paintingSmudge',\r\n 'paintingKnife',\r\n 'paintingBlow',\r\n 'paintingSample',\r\n 'paintingPaletteSwap',\r\n 'paintingPalette',\r\n 'paintingTrash',\r\n 'paintingReplay',\r\n 'paintingStamp',\r\n 'paintingSave',\r\n 'paintingSaveAnon'\r\n];\r\n\r\nexport default TutorialStep;","import './App.css';\r\n\r\nexport class EnvironmentAndInstallManager\r\n{\r\n installed: string;\r\n deferredInstallPrompt: Event | undefined;\r\n deviceName: string;\r\n browserName: string;\r\n inPWA: boolean;\r\n canVibrate: boolean;\r\n afterInstall: ()=>void;\r\n afterSwitch: ()=>void;\r\n canMatchMedia: boolean;\r\n\r\n constructor() {\r\n this.installed = 'unknown';\r\n this.deferredInstallPrompt = undefined;\r\n this.deviceName = 'unknown';\r\n this.browserName = 'unknown';\r\n this.inPWA = false;\r\n this.canVibrate = false;\r\n this.afterInstall = ()=>{};\r\n this.afterSwitch = ()=>{};\r\n\r\n\r\n window.addEventListener('beforeinstallprompt', (e:Event) => {\r\n // Prevent Chrome 67 and earlier from automatically showing the prompt\r\n e.preventDefault();\r\n this.deferredInstallPrompt = e;\r\n });\r\n\r\n window.addEventListener('appinstalled', async (e) => {\r\n this.installed = 'true';\r\n this.afterInstall();\r\n });\r\n\r\n // listen for a change in the display mode that indicates a switch to the app\r\n this.canMatchMedia = 'matchMedia' in window && window.matchMedia !== undefined;\r\n if (this.canMatchMedia) {\r\n window.addEventListener('DOMContentLoaded', () => {\r\n const mql = window.matchMedia('(display-mode: standalone)');\r\n if (mql) {\r\n mql.addEventListener('change', (evt) => {\r\n if (evt.matches) {\r\n this.installed = 'true';\r\n this.inPWA = true;\r\n this.afterSwitch();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n public isInPWA() :boolean {\r\n this.inPWA = false;\r\n // For iOS\r\n if ((window.navigator as any).standalone || (window.navigator as any).fullscreen) {\r\n this.inPWA = true;\r\n return true;\r\n }\r\n \r\n // For Android\r\n if (this.canMatchMedia && (window.matchMedia('(display-mode: standalone)').matches || window.matchMedia('(display-mode: fullscreen)').matches)) {\r\n this.inPWA = true;\r\n return true;\r\n }\r\n \r\n // If neither is true, it's not installed\r\n return false\r\n }\r\n \r\n lastInstalledStatus = 'unknown';\r\n public async checkAppInstalledState() : Promise {\r\n try {\r\n if ('getInstalledRelatedApps' in window.navigator) {\r\n const relatedApps = await (navigator as any)['getInstalledRelatedApps']();\r\n if (relatedApps.find((app:any)=>true) !== undefined){\r\n this.lastInstalledStatus = 'true';\r\n } else {\r\n this.lastInstalledStatus = 'false';\r\n }\r\n } else {\r\n this.lastInstalledStatus = 'unknown';\r\n }\r\n return this.lastInstalledStatus;\r\n } catch (e) {\r\n return 'unknown';\r\n }\r\n }\r\n\r\n public setupComplete() : boolean {\r\n return localStorage.getItem('smesshy-app-setup-complete') === 'true';\r\n }\r\n\r\n public setupNotifications() : boolean {\r\n return localStorage.getItem('smesshy-app-setup-notifications') === 'true';\r\n }\r\n\r\n public finishNotificationsSetup() : void {\r\n localStorage.setItem('smesshy-app-setup-notifications', 'true');\r\n }\r\n\r\n public setupCookies() : boolean {\r\n return localStorage.getItem('smesshy-app-setup-cookies') === 'true';\r\n }\r\n\r\n public finishCookiesSetup() : void {\r\n localStorage.setItem('smesshy-app-setup-cookies', 'true');\r\n }\r\n\r\n public finishSetup() : void {\r\n localStorage.setItem('smesshy-app-setup-complete', 'true');\r\n }\r\n\r\n public getDeferredInstallPrompt() : Event | undefined {\r\n return this.deferredInstallPrompt;\r\n }\r\n\r\n public getDeviceName() :string {\r\n const ua = navigator.userAgent;\r\n \r\n if (/android/i.test(ua)) {\r\n return \"Android\";\r\n }\r\n \r\n if (/iPad|iPhone|iPod/.test(ua) && !(window as any).MSStream) {\r\n return \"iOS\";\r\n }\r\n\r\n if (navigator.maxTouchPoints && navigator.maxTouchPoints > 2 && (/MacIntel/.test(ua) || /Macintosh/.test(ua))) {\r\n return \"iOS\";\r\n }\r\n \r\n return \"Other\";\r\n }\r\n \r\n public getBrowserName() :string {\r\n const ua = navigator.userAgent;\r\n if (ua.indexOf(\"Chrome\") > -1) {\r\n if (ua.indexOf(\"OP\") > -1) {\r\n return \"Opera\";\r\n } \r\n if (ua.indexOf(\"Edge\") > -1) {\r\n return \"Edge\";\r\n } \r\n if (ua.indexOf(\"Edg/\") > -1) {\r\n return \"Edge\";\r\n } \r\n \r\n return \"Chrome\";\r\n } \r\n if (ua.indexOf(\"Firefox\") > -1) {\r\n return \"Firefox\";\r\n } \r\n if (ua.indexOf(\"Safari\") > -1) {\r\n if (ua.indexOf(\"CriOS\") > -1) {\r\n return \"Chrome\";\r\n } \r\n return \"Safari\";\r\n } \r\n return \"Unknown\";\r\n }\r\n\r\n public async collectEnvironmentState() : Promise {\r\n this.installed = await this.checkAppInstalledState();\r\n this.deviceName = this.getDeviceName();\r\n this.browserName = this.getBrowserName();\r\n this.inPWA = this.isInPWA();\r\n this.canVibrate = this.getVibrateSupport();\r\n return true;\r\n }\r\n\r\n getCreateImageBitmapSupport() : boolean {\r\n return 'createImageBitmap' in window && typeof(window['createImageBitmap']) === 'function' && window['createImageBitmap'] !== undefined && window['createImageBitmap'] !== null;\r\n }\r\n\r\n\r\n getVibrateSupport(): boolean {\r\n return ('vibrate' in navigator && typeof(navigator['vibrate']) === 'function' && navigator['vibrate'] !== undefined && navigator['vibrate'] !== null);\r\n }\r\n}\r\n\r\nconst Env = new EnvironmentAndInstallManager();\r\nexport default Env;\r\n","import React, { Component, useEffect } from 'react';\r\nimport { User } from \"oidc-client\";\r\nimport AuthorizeService, { AuthorizeServiceResult } from \"./components/api-authorization/AuthorizeService\";\r\nimport { ApplicationPaths, QueryParameterNames } from \"./components/api-authorization/ApiAuthorizationConstants\";\r\nimport { Navigate, Path } from \"react-router-dom\";\r\nimport SmesshyStorageManager from \"./storageManager\";\r\nimport { App, SmesshyAppShape } from \"./App\";\r\nimport SmesshyAsk, { SmesshyAskParams, SmesshyDone, SmesshyWait } from './components/smesshyAsk';\r\nimport TutorialStep, { TutorialStepParams } from './components/tutorialStep';\r\nimport Env from './envInst';\r\nimport { Buffer } from 'buffer';\r\nimport { JsxElement } from 'typescript';\r\n\r\nexport interface SmesshyCommonProps {\r\n AppObject: App;\r\n AppShape: SmesshyAppShape | undefined;\r\n}\r\n\r\nexport interface SmesshyNavigateOptions {\r\n To: string | number | Partial;\r\n Replace?: boolean;\r\n State?: any;\r\n}\r\nexport interface SmesshyToolOptions {\r\n Element: JSX.Element;\r\n OnCancel?: (()=>void);\r\n}\r\n\r\nexport interface SmesshyCommonState {\r\n showWaitSpin: boolean,\r\n doRefresh?: boolean,\r\n authenticated: boolean,\r\n askQuestion?: SmesshyAskParams | undefined;\r\n navigateTo?: SmesshyNavigateOptions | undefined;\r\n overlayTool?: SmesshyToolOptions | undefined;\r\n tutorialStep?: TutorialStepParams;\r\n}\r\n\r\ntype Constructor = new (...args: any[]) => T;\r\nexport function SmesshyCommon>(SuperClass: T) {\r\n return class extends SuperClass {\r\n _subscription: number = -1;\r\n _app : App | undefined = undefined;\r\n _appShape : SmesshyAppShape | undefined = undefined;\r\n _inPWA : boolean = false;\r\n storageManager: SmesshyStorageManager | undefined = undefined;\r\n constructor(...args: any[]) {\r\n super();\r\n }\r\n initCommon(app: App) {\r\n this._app = app;\r\n this._appShape = app.GetAppShape();\r\n this._inPWA = app.GetInPWA();\r\n this.storageManager = this._app.storageManager;\r\n }\r\n\r\n\r\n public executeAsync(code: ()=>void) {\r\n this._app!.asyncHelp.executeAsyncLater(code);\r\n }\r\n public executeWhenSafe(code: ()=>void) {\r\n this._app!.asyncHelp.executeWhenSafe(code);\r\n }\r\n\r\n public GetAppState(tag: string, defaultValue: unknown): unknown {\r\n return this._app!.GetAppState(tag, defaultValue);\r\n }\r\n public SetAppState(tag: string, newValue: unknown, cookie?: boolean) {\r\n return this._app!.SetAppState(tag, newValue, cookie);\r\n }\r\n public pushWaitingFrame(frame: Component) {\r\n this._app!.pushWaitingFrame(frame);\r\n }\r\n public popWaitingFrame() {\r\n this._app!.popWaitingFrame();\r\n }\r\n\r\n public doButtonHaptic(): boolean {\r\n let env = Env;\r\n if (env.getVibrateSupport()) {\r\n return this.GetAppState('hapticButton', true) as boolean;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n subscribe(onChange: ()=>void) {\r\n this._subscription = (this as any).props.AppObject.authService.subscribe(onChange);\r\n }\r\n unsubscribe() {\r\n (this as any).props.AppObject.authService.unsubscribe(this._subscription);\r\n }\r\n\r\n async isAuthenticated() {\r\n return await (this as any).props.AppObject.authService.isAuthenticated();\r\n } \r\n\r\n async getAccessToken(forceNew?: boolean) : Promise {\r\n return await (this as any).props.AppObject.authService.getAccessToken(forceNew);\r\n }\r\n async getUser() : Promise {\r\n return await (this as any).props.AppObject.authService.getUser();\r\n }\r\n async getUserId() : Promise {\r\n return await (this as any).props.AppObject.authService.getUserId();\r\n }\r\n async signIn(state:any) : Promise {\r\n return await (this as any).props.AppObject.authService.signIn(state);\r\n }\r\n async completeSignIn(state:any) : Promise {\r\n return await (this as any).props.AppObject.authService.completeSignIn(state);\r\n }\r\n async signOut(state:any) : Promise {\r\n return await (this as any).props.AppObject.authService.signOut(state);\r\n }\r\n async completeSignOut(state:any) : Promise {\r\n return await (this as any).props.AppObject.authService.completeSignOut(state);\r\n }\r\n\r\n requireSetup(thenAction : ()=>void, replace: boolean=false) : SmesshyNavigateOptions | undefined {\r\n let env = Env;\r\n if (this._inPWA) {\r\n if (env.setupComplete()) {\r\n thenAction();\r\n return undefined;\r\n }\r\n } \r\n return {To:'/setup', Replace:replace};\r\n }\r\n async requireSetupAsync(thenAction : ()=>Promise) : Promise {\r\n let env = Env;\r\n if (this._inPWA) {\r\n if (env.setupComplete()) {\r\n await thenAction();\r\n return undefined;\r\n }\r\n } \r\n return {To:'/setup'};\r\n }\r\n\r\n async initAuthentication(comp: Component, requireAuth: boolean) {\r\n let controlThis = this;\r\n try {\r\n STrace.addStep('common', 'ensureUserManager', '');\r\n let umi = await this._app!.authService.ensureUserManagerInitialized(requireAuth);\r\n if (umi === undefined) {\r\n return;\r\n }\r\n this.subscribe(() => this.authenticationChanged(comp));\r\n \r\n let token = await controlThis.getAccessToken();\r\n await controlThis.populateAuthenticationState(comp);\r\n } catch (reason) {\r\n this._app!.reportException('init Authentication', 'ex', '', reason);\r\n }\r\n }\r\n\r\n termAuthentication() {\r\n this.unsubscribe();\r\n }\r\n\r\n async authenticationChanged(comp: Component) {\r\n await this.populateAuthenticationState(comp);\r\n }\r\n\r\n async populateAuthenticationState(comp: Component) {\r\n try {\r\n const authenticated = await this.isAuthenticated();\r\n comp.setState({ authenticated: authenticated });\r\n if ((comp as any).onPopulateAuthenticationState !== undefined) {\r\n await (comp as any).onPopulateAuthenticationState(authenticated);\r\n }\r\n \r\n } catch (e: any) {\r\n this._app!.reportException(`check authentication`, 'ex', '', e)\r\n }\r\n }\r\n \r\n triggerRefresh() {\r\n this._app?.triggerRefresh();\r\n }\r\n\r\n checkVersion() {\r\n this._app!.checkVersion();\r\n }\r\n\r\n smesshyDone(top:number): SmesshyToolOptions {\r\n return {\r\n Element: {\r\n (this as unknown as Component).setState({overlayTool: undefined}); }}/>,\r\n OnCancel: ()=>(this as unknown as Component).setState({overlayTool: undefined})\r\n }\r\n }\r\n\r\n\r\n renderFramework(inner: JSX.Element, state: SmesshyCommonState) : JSX.Element {\r\n let controlThis = this;\r\n\r\n let renderInstallPrompt = <>;\r\n\r\n\r\n let nav =<>;\r\n let ask =<>;\r\n let tool =<>;\r\n let tutorial =<>;\r\n\r\n if (state.doRefresh === true) {\r\n window.location.reload();\r\n return <>;\r\n }\r\n\r\n if (state.navigateTo !== undefined) {\r\n nav = \r\n }\r\n\r\n if (this._app?.GetAppShape() !== undefined) {\r\n\r\n if (state.askQuestion !== undefined) {\r\n ask = ;\r\n }\r\n\r\n if (state.overlayTool !== undefined) {\r\n tool =
{\r\n if (state.overlayTool?.OnCancel !== undefined) {\r\n state.overlayTool.OnCancel();\r\n }\r\n }}>\r\n {state.overlayTool.Element}\r\n
\r\n }\r\n\r\n if (state.tutorialStep !== undefined) {\r\n tutorial = (controlThis as any).setState({tutorialStep: undefined})}\r\n />;\r\n }\r\n\r\n if (state.showWaitSpin === true) {\r\n tool =
\r\n \r\n
\r\n }\r\n }\r\n\r\n\r\n return (\r\n
\r\n <>\r\n {inner}\r\n {ask}\r\n {tool}\r\n {tutorial}\r\n {nav}\r\n \r\n
);\r\n \r\n }\r\n\r\n\r\n getAuthenticationNavigate(path: string, action:string) : SmesshyNavigateOptions {\r\n var link = document.createElement(\"a\");\r\n link.href = path;\r\n const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${action === 'logout' ? ApplicationPaths.LogOut : (action === 'login' ? ApplicationPaths.Login : '/')}?${QueryParameterNames.ReturnUrl}=${encodeURIComponent(returnUrl)}`;\r\n return {Replace:true, To:redirectUrl};\r\n }\r\n\r\n bestTop(fromElement: HTMLElement, forScaledHeight: number, placement:string) : number {\r\n // try to center over the original tile\r\n let top = 80;\r\n let space = 4;\r\n \r\n if (fromElement !== undefined && fromElement !== null) {\r\n let maxTop = this._app!.GetUnScaledPxHeight(this._appShape!.appRectangle.height) - forScaledHeight;\r\n let minTop = Math.max(0, Math.min(top, maxTop));\r\n let fromRect = fromElement.getBoundingClientRect();\r\n let fromTop = this._app!.GetUnScaledPxHeight(fromRect.top) - space;\r\n let fromBottom = this._app!.GetUnScaledPxHeight(fromRect.bottom) + space;\r\n let fromHeight = fromBottom - fromTop;\r\n if (placement === 'centered') {\r\n top = Math.min(maxTop, Math.max(minTop, fromTop - (forScaledHeight - fromHeight)/2));\r\n } else if (placement === 'below') {\r\n if (fromBottom < maxTop) {\r\n top = fromBottom;\r\n } else {\r\n if (fromTop - forScaledHeight > minTop) {\r\n top = fromTop - forScaledHeight;\r\n } else {\r\n top = maxTop;\r\n }\r\n }\r\n } else if (placement === 'above') {\r\n if (fromTop - forScaledHeight > minTop) {\r\n top = fromTop - forScaledHeight;\r\n } else {\r\n if (fromBottom + forScaledHeight < maxTop) {\r\n top = fromBottom;\r\n } else {\r\n top = minTop;\r\n }\r\n }\r\n }\r\n }\r\n return this._app!.GetScaledPxHeight(top);\r\n }\r\n \r\n };\r\n}\r\n\r\nexport interface SmesshyPushyProps {\r\n AppObject: App;\r\n OnPressStart?: ()=>void;\r\n OnPressTick?: ()=>void | undefined;\r\n OnPressFinish?: ()=>Promise;\r\n OnClick?: ()=>void;\r\n StartPushedState: boolean;\r\n PressTickInterval?: number;\r\n Haptic: boolean;\r\n Disabled?: boolean;\r\n Size?: string;\r\n AllowVScroll?: boolean;\r\n ExtraStyleClass?: string;\r\n PassiveOnly?: boolean;\r\n}\r\n\r\nexport interface SmesshyPushyState {\r\n currentPushedState: boolean;\r\n}\r\n\r\n\r\nexport function SmesshyPushy>(SuperClass: T) {\r\n return class extends SuperClass {\r\n\r\n capturedPointer = -1;\r\n targetRef : React.RefObject;\r\n targetRect : DOMRect | undefined;\r\n lastOnTarget: boolean = true;\r\n finishing: boolean = false;\r\n pressTickInterval: NodeJS.Timer | undefined = undefined;\r\n \r\n constructor(...args: any[]) {\r\n super();\r\n this.targetRef = React.createRef();\r\n\r\n }\r\n\r\n onClick(e:React.MouseEvent, props: SmesshyPushyProps){\r\n if (props.PassiveOnly) return;\r\n //console.log('click');\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n onclick(e:MouseEvent, props: SmesshyPushyProps){\r\n if (props.PassiveOnly) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (props.OnClick !== undefined && this.lastOnTarget) {\r\n props.OnClick();\r\n }\r\n }\r\n onContext(e:React.MouseEvent, props: SmesshyPushyProps){\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n\r\n startPress(e:React.PointerEvent, props: SmesshyPushyProps) {\r\n // very special case where a control must get the real onclick event when it happend from the browser and not the react synthetic one\r\n // register an onClick is how to indicate this. the real onclick starts out set to the noop function\r\n if (this.targetRef.current !== null && props.OnClick !== undefined) {\r\n this.targetRef.current.onclick = (e:MouseEvent) => this.onclick(e, props);\r\n }\r\n if (props.PassiveOnly) return;\r\n\r\n if (!this.finishing && !props.Disabled && this.capturedPointer === -1)\r\n {\r\n //console.log('start');\r\n this.abandonPress();\r\n this.capturedPointer = e.pointerId;\r\n\r\n e.preventDefault(); \r\n e.stopPropagation();\r\n e.currentTarget.setPointerCapture(e.pointerId);\r\n\r\n this.targetRect = this.targetRef.current!.getBoundingClientRect();\r\n this.pointerMove(e, props);\r\n\r\n if (props.Haptic) {\r\n try {\r\n navigator.vibrate(2);\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n if (props.OnPressStart !== undefined) {\r\n props.OnPressStart();\r\n }\r\n let controlThis = this;\r\n if (props.PressTickInterval !== undefined && props.PressTickInterval > 0) {\r\n this.pressTickInterval = setInterval(() => {\r\n if (this.lastOnTarget) {\r\n controlThis.continuePress(props); \r\n }\r\n }, props.PressTickInterval);\r\n }\r\n }\r\n }\r\n\r\n continuePress(props: SmesshyPushyProps) {\r\n if (!this.finishing && props.OnPressTick !== undefined) {\r\n props.OnPressTick();\r\n }\r\n }\r\n\r\n abandonPress() {\r\n if (this.capturedPointer !== -1) {\r\n this.capturedPointer = -1;\r\n }\r\n if (this.pressTickInterval !== undefined) {\r\n clearInterval(this.pressTickInterval);\r\n this.pressTickInterval = undefined;\r\n }\r\n }\r\n\r\n finishPress(e:React.PointerEvent, props: SmesshyPushyProps) {\r\n if (props.PassiveOnly) return;\r\n\r\n if (!this.finishing && !props.Disabled && e.pointerId === this.capturedPointer) {\r\n //console.log('finish');\r\n e.preventDefault(); \r\n e.stopPropagation();\r\n\r\n e.currentTarget.releasePointerCapture(this.capturedPointer);\r\n this.abandonPress();\r\n if (this.lastOnTarget) {\r\n if (props.Haptic) {\r\n try {\r\n navigator.vibrate(2);\r\n } catch {\r\n\r\n }\r\n }\r\n if (props.OnPressFinish !== undefined) {\r\n this.finishing = true;\r\n props.AppObject.asyncHelp.executeAsyncLater(async ()=>{\r\n await props.OnPressFinish!();\r\n this.finishing = false;\r\n });\r\n\r\n }\r\n \r\n }\r\n (this as unknown as Component).setState({currentPushedState: props.StartPushedState});\r\n }\r\n }\r\n\r\n cancelPress(e:React.PointerEvent, props: SmesshyPushyProps) {\r\n if (props.PassiveOnly) return;\r\n\r\n if (!props.Disabled && e.pointerId === this.capturedPointer) {\r\n //console.log('cancel');\r\n\r\n e.currentTarget.releasePointerCapture(this.capturedPointer);\r\n this.abandonPress();\r\n (this as unknown as Component).setState({currentPushedState: props.StartPushedState});\r\n }\r\n }\r\n \r\n \r\n pointerOnTarget(e:React.PointerEvent, props: SmesshyPushyProps){\r\n if (e.pointerId === this.capturedPointer && !props.Disabled ) {\r\n const x = e.clientX;\r\n const y = e.clientY;\r\n const rect = this.targetRect!\r\n const onButton = !(x < rect.left || x >= rect.right || y < rect.top || y >= rect.bottom)\r\n return onButton;\r\n }\r\n return false;\r\n\r\n }\r\n\r\n pointerMove(e:React.PointerEvent, props: SmesshyPushyProps) {\r\n if (props.PassiveOnly) return;\r\n\r\n if (e.pointerId === this.capturedPointer && !props.Disabled ) {\r\n //console.log('move');\r\n\r\n this.lastOnTarget = this.pointerOnTarget(e, props); \r\n (this as unknown as Component).setState({currentPushedState: this.lastOnTarget ? !props.StartPushedState : props.StartPushedState});\r\n }\r\n }\r\n\r\n };\r\n \r\n}\r\n\r\nexport class SmesshyTrace {\r\n recentSteps: string[] = [];\r\n constructor() {\r\n\r\n }\r\n public addStep(page: string, action: string, data: string) {\r\n this.recentSteps.push(`${Date.now()}^${page}^${action}^${data}`);\r\n }\r\n public getRecent() : string {\r\n if (this.recentSteps.length === 0) {\r\n return '';\r\n }\r\n const recent = this.recentSteps.join(';');\r\n this.clearRecent();\r\n return Buffer.from(recent).toString('base64');\r\n }\r\n public clearRecent() {\r\n this.recentSteps = [];\r\n\r\n }\r\n\r\n}\r\nexport const STrace = new SmesshyTrace();\r\n\r\n","import React, { Component, Profiler } from 'react';\r\nimport { App } from '../../App'\r\nimport tinycolor from 'tinycolor2';\r\nimport {FingerTip, TipAction, TipApplication, TipInstrument, TipMotion} from './fingertip';\r\nimport {CellKind, CrcOff, Page, TipEffect} from './page';\r\nimport smearGenerator from './smearGen';\r\nimport { colorMixKM } from './kubelkaMonk';\r\nimport { AnimationAction, AnimationActionColor, AnimationActionDrag, AnimationActionDry, AnimationActionKind, AnimationActionPaintRadius, AnimationActionStamp, AnimationActionStampLine, AnimationActionStart } from './animationActions';\r\nimport { STrace, SmesshyCommon } from '../../smesshyCommon';\r\nimport { Point2D, SeededRandom } from './utils';\r\nimport { Container } from 'reactstrap';\r\nimport { PageChange, PageChangeEntry } from './PageChange';\r\nimport { CirclePageChange } from './circlePageChange';\r\nimport { BlowPageChange } from './blowPageChange';\r\nimport { KnifePageChange } from './knifePageChange';\r\nimport { SamplePageChange } from './samplePageChange';\r\nimport { StampPageChange } from './stampPageChange';\r\nimport { GPUChecker, GPURunner } from './GPURunner';\r\n\r\n\r\nexport interface SmearState {\r\n loading: boolean,\r\n\r\n}\r\nexport interface SmearProps {\r\n contextKey: string;\r\n AppObject: App;\r\n Color: string;\r\n SampleMode: boolean;\r\n CanCacheCtx: boolean;\r\n OnClear?: (crc: CanvasRenderingContext2D)=>void;\r\n TextureSmash: boolean;\r\n CentralPull?: ((d:number)=>number);\r\n DryInterval: number;\r\n DryRate: number;\r\n UseMouse: boolean;\r\n FixedSize: number;\r\n AvgLightRadius: number;\r\n AvgHeavyRadius: number;\r\n PaintRadius: number;\r\n Disabled: boolean;\r\n OnDragStart?: (()=>boolean);\r\n OnDragEnd?: (()=>void);\r\n OnRecordAnimation?: ((action:AnimationAction)=>void);\r\n OnColorSample: (rgb:tinycolor.ColorFormats.RGB)=>void;\r\n ExceptionHandler: (source: string, kind: string, code: string, exception: unknown)=>void\r\n}\r\n\r\n\r\ninterface FingerAction {\r\n isStart: boolean;\r\n isFinish: boolean;\r\n ptStart: Point2D;\r\n radius: number;\r\n paintRadius: number;\r\n color: string;\r\n postCall?: ()=>void;\r\n}\r\n\r\ninterface AntiAliasPoint {\r\n filled0: number;\r\n filled1: number;\r\n filled2: number;\r\n filled3: number;\r\n filled5: number;\r\n filled6: number;\r\n filled7: number;\r\n filled8: number;\r\n}\r\n\r\n// an 'infinite' looking fifo queue that allows insertion of modification of unprocessed actions\r\n// while still processing the queue via animation frames. This is used to queue up touch actions while processing and smooth out big jumps\r\nexport class TouchActionAnimationQueue {\r\n takeAction: (a: actionKind)=>boolean;\r\n evaluateNewAction: (lastCommit: number, lastQueued:number, evalAction: actionKind)=>boolean;\r\n static wrapAt = 1024;\r\n static longestSprint = 6;\r\n \r\n pendingAction = new Array(TouchActionAnimationQueue.wrapAt);\r\n lastQueued = -1;\r\n lastCommit = -1;\r\n active = true;\r\n evaluating = false;\r\n waiting = false;\r\n\r\n constructor(evaluateNewAction: (lastCommit: number, lastQueued:number, evalAction: actionKind)=>boolean, takeAction: (a: actionKind)=>boolean) {\r\n this.takeAction = takeAction;\r\n this.evaluateNewAction = evaluateNewAction;\r\n }\r\n peekAction(at:number) : actionKind {\r\n return this.pendingAction[at % TouchActionAnimationQueue.wrapAt];\r\n }\r\n popAction() : actionKind {\r\n if (this.evaluating === false || this.lastQueued === this.lastCommit) {\r\n throw new Error('popAction called when not evaluating or no new actions');\r\n }\r\n let act = this.pendingAction[this.lastQueued % TouchActionAnimationQueue.wrapAt];\r\n this.lastQueued --;\r\n return act;\r\n }\r\n pushAction(fa: actionKind) {\r\n this.lastQueued ++;\r\n this.pendingAction[this.lastQueued % TouchActionAnimationQueue.wrapAt] = fa;\r\n }\r\n\r\n queueAction(fa: actionKind) {\r\n if (!this.active) {\r\n return;\r\n }\r\n if (this.evaluating === true) {\r\n throw new Error('queueAction called while evaluating');\r\n }\r\n if (this.lastQueued === -1) {\r\n this.lastQueued = 0;\r\n this.pendingAction[0] = fa;\r\n } else {\r\n this.evaluating = true;\r\n if (this.evaluateNewAction(this.lastCommit, this.lastQueued, fa) === true) {\r\n this.lastQueued ++;\r\n this.pendingAction[this.lastQueued % TouchActionAnimationQueue.wrapAt] = fa;\r\n }\r\n this.evaluating = false;\r\n }\r\n this.takeActions();\r\n }\r\n takeActions() {\r\n if (this.active === false || this.lastCommit === this.lastQueued || this.evaluating === true || this.waiting === true) {\r\n return;\r\n }\r\n let firstAction = this.lastCommit + 1;\r\n let lastAction = Math.min(firstAction + TouchActionAnimationQueue.longestSprint, this.lastQueued);\r\n // if (lastAction - firstAction > 1) {\r\n // console.log(`taking ${lastAction - firstAction} actions`);\r\n \r\n // }\r\n this.waiting = true;\r\n let localThis = this;\r\n requestAnimationFrame(()=> {\r\n while (localThis.active === true && firstAction <= lastAction) {\r\n localThis.active = localThis.takeAction(localThis.pendingAction[firstAction % TouchActionAnimationQueue.wrapAt]);\r\n localThis.lastCommit = firstAction;\r\n firstAction ++;\r\n }\r\n localThis.waiting = false;\r\n localThis.takeActions();\r\n });\r\n\r\n }\r\n}\r\n\r\nclass Smear extends SmesshyCommon(Component) {\r\n\r\n canvasRef : React.RefObject;\r\n\r\n noMouse = false;\r\n\r\n // Drawing state\r\n dragging = false;\r\n replaying = false;\r\n\r\n public page: Page | undefined = undefined;\r\n public usingCachedContext: boolean = false;\r\n\r\n lastPos: Point2D;\r\n lastRadius: number;\r\n lastDrawOctant: number;\r\n lastMoveOctant: number;\r\n lastLastMoveOctant: number;\r\n\r\n replayOriginX: number = 0;\r\n replayOriginY: number = 0;\r\n\r\n\r\n rnd = new SeededRandom();\r\n\r\n constructor(props: SmearProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.canvasRef = React.createRef();\r\n\r\n this.lastPos = new Point2D(0,0);\r\n this.lastRadius = 0;\r\n this.lastDrawOctant = 4;\r\n this.lastMoveOctant = 4;\r\n this.lastLastMoveOctant = 4;\r\n\r\n this.state = {\r\n loading: true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('smear', 'didMound', this.props.contextKey);\r\n this.setState({ loading:false});\r\n }\r\n\r\n \r\n dryInterval: NodeJS.Timer | undefined = undefined;\r\n replayAnimationFrame: number = -1;\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n const page = this.getPage()!;\r\n\r\n if (this.dryInterval === undefined && this.props.DryInterval !== 0) {\r\n let controlThis = this;\r\n this.dryInterval = setInterval(() => {\r\n // don't dry while dragging to prevent odd hardened bits in current drag path\r\n // don't dry while replaying\r\n if (!controlThis.dragging && !controlThis.replaying){\r\n if (this.props.OnRecordAnimation !== undefined) { \r\n this.props.OnRecordAnimation({kind:AnimationActionKind.dry});\r\n }\r\n // dry one step\r\n page.dry(controlThis.props.DryRate, 1, App.useGPU);\r\n\r\n }\r\n }, this.props.DryInterval);\r\n }\r\n \r\n }\r\n\r\n componentWillUnmount() {\r\n // stop drying\r\n if (this.dryInterval !== undefined) {\r\n clearInterval(this.dryInterval);\r\n this.dryInterval = undefined;\r\n }\r\n // shut down any running animation\r\n if (this.replayAnimationFrame !== -1 && this.replaying === true) {\r\n cancelAnimationFrame(this.replayAnimationFrame);\r\n this.replayAnimationFrame = -1;\r\n this.replaying = false;\r\n }\r\n }\r\n\r\n setReplayOrigin(x: number, y: number) {\r\n this.replayOriginX = x;\r\n this.replayOriginY = y;\r\n }\r\n\r\n getPage() : Page | undefined\r\n {\r\n if (this.canvasRef.current !== undefined && this.canvasRef.current !== null) {\r\n if (this.page === undefined) {\r\n if (this.props.CanCacheCtx === true) {\r\n this.page = this.GetAppState(this.props.contextKey, undefined) as Page | undefined;\r\n }\r\n let width = this.canvasRef.current.clientWidth;\r\n let height = this.canvasRef.current.clientHeight;\r\n this.canvasRef.current.width=width;\r\n this.canvasRef.current.height=height;\r\n //let drawCtx = this.canvasRef.current.getContext('2d', {willReadFrequently:true})!;\r\n let drawCtx = this.canvasRef.current.getContext('2d')!;\r\n if (drawCtx.imageSmoothingEnabled === true) {\r\n drawCtx.imageSmoothingQuality = 'high';\r\n }\r\n\r\n if (this.page === undefined) {\r\n this.usingCachedContext = false;\r\n this.page = new Page(width, height, drawCtx, this.props.ExceptionHandler, this.props.CentralPull, this.rnd, this.props.TextureSmash, this.props.DryInterval > 0);\r\n this.clearCanvas();\r\n if (this.props.CanCacheCtx === true) {\r\n this.SetAppState(this.props.contextKey, this.page);\r\n }\r\n } else {\r\n // the page was saved but the canvas is new so we need to change\r\n // the context in the page to the new canvas and swap over the image\r\n this.usingCachedContext = true;\r\n drawCtx.drawImage(this.page.crcVisible.canvas, 0, 0);\r\n this.page.crcVisible = drawCtx;\r\n }\r\n }\r\n return this.page;\r\n }\r\n return undefined;\r\n }\r\n public boundingClientRect(): DOMRect | undefined {\r\n if (this.canvasRef !== null && this.canvasRef.current !== null) {\r\n return this.canvasRef.current.getBoundingClientRect();\r\n }\r\n return undefined;\r\n }\r\n static longestDragGap = 30;\r\n\r\n debugFirstY = 0;\r\n queue = new TouchActionAnimationQueue(\r\n (lastCommit: number, lastQueued: number, evalAction: FingerAction):boolean => {\r\n let lastConsider = lastQueued;\r\n if (lastConsider === -1) {\r\n return true;\r\n }\r\n let considerAction = this.queue.peekAction(lastConsider);\r\n if (evalAction.isFinish || evalAction.isStart || considerAction.isFinish) {\r\n return true;\r\n }\r\n let d = evalAction.ptStart.distanceTo(considerAction.ptStart);\r\n let longestGap = Smear.longestDragGap;\r\n if (d > longestGap * 2) {\r\n let lineTo = considerAction.ptStart.lineTo(evalAction.ptStart);\r\n let lineLen = lineTo.length;\r\n let stepAt = longestGap;\r\n while (stepAt < lineLen - longestGap) {\r\n let ptNew = lineTo[stepAt];\r\n let faNew = {isStart:false, isFinish:false, ptStart:ptNew, radius:evalAction.radius, paintRadius:evalAction.paintRadius, color:evalAction.color};\r\n this.queue.pushAction(faNew);\r\n stepAt += longestGap;\r\n }\r\n return true;\r\n }\r\n return true;\r\n },\r\n (fa: FingerAction):boolean=> {\r\n if (this.replaying === true) {\r\n // ignore touches while replaying, else messes up all ... everthing \r\n return true;\r\n }\r\n //fa.ptStart = new Point2D(200, fa.ptStart.y);\r\n fa.ptStart = new Point2D(fa.ptStart.x, fa.ptStart.y);\r\n if (fa.isStart) {\r\n this.debugFirstY = fa.ptStart.y;\r\n let tipKind = Page.ColorToTipApplication(new tinycolor(fa.color).toRgb());\r\n tipKind.motion = TipMotion.press;\r\n //console.time('stroke');\r\n this.startStroke(fa.ptStart, fa.color, fa.radius, fa.paintRadius, tipKind); \r\n if (this.props.OnRecordAnimation !== undefined) {\r\n this.props.OnRecordAnimation({kind:AnimationActionKind.start, pt:fa.ptStart, rad: fa.radius});\r\n }\r\n } if (fa.isFinish) {\r\n //console.timeEnd('stroke');\r\n if (this.finishStroke(this.page!.lastTipApplication!) === true) {\r\n if (this.props.OnRecordAnimation !== undefined) {\r\n this.props.OnRecordAnimation({kind:AnimationActionKind.finish, pt:fa.ptStart, rad: fa.radius});\r\n }\r\n }\r\n } else {\r\n let tipKind = Page.ColorToTipApplication(new tinycolor(fa.color).toRgb());\r\n tipKind.motion = TipMotion.drag;\r\n const saveSeed = this.rnd.seed; // save so playback is consistent\r\n //let ptAt = new Point2D(fa.ptStart.x, this.debugFirstY);\r\n let ptAt = fa.ptStart;\r\n if (this.continueStroke(ptAt, fa.radius, fa.paintRadius, tipKind)===true && this.props.OnRecordAnimation !== undefined) {\r\n //let d = this.page!.debugGPUGetDepth(100, 100, 132, 132);\r\n\r\n this.props.OnRecordAnimation({kind:AnimationActionKind.drag, pt:fa.ptStart, rad: fa.radius});\r\n } else {\r\n this.rnd.seed = saveSeed;\r\n }\r\n }\r\n if (fa.postCall !== undefined) {\r\n fa.postCall();\r\n }\r\n return true;\r\n }\r\n );\r\n\r\n \r\n public clearCanvas() {\r\n\r\n this.stopReplay();\r\n\r\n // start out by cleaning the main page in the context\r\n const page = this.getPage()!;\r\n\r\n // replace the page with a white, empty one\r\n this.rnd = new SeededRandom(); // same sequence as original\r\n page.clear(this.props.OnClear, this.props.CentralPull, this.rnd, this.props.TextureSmash);\r\n if (this.props.OnClear !== undefined) {\r\n this.stampSelf();\r\n }\r\n\r\n }\r\n\r\n public stopReplay() : number {\r\n\r\n if (this.replayAnimationFrame !== -1 && this.replaying === true) {\r\n cancelAnimationFrame(this.replayAnimationFrame);\r\n this.replayAnimationFrame = -1;\r\n this.replaying = false;\r\n return this.iLastReplayAction;\r\n\r\n }\r\n return -1;\r\n\r\n }\r\n\r\n public takeSnapshot(snapWidth: number, snapHeight: number) {\r\n let page = this.getPage();\r\n if (page === undefined) {\r\n return undefined;\r\n }\r\n\r\n let sampX = 0;\r\n let sampY = 0;\r\n let sampWidth = page.cellsWidth;\r\n let sampHeight = page.cellsHeight;\r\n\r\n let snapRatio = snapWidth / snapHeight;\r\n let sampRatio = sampWidth / sampHeight;\r\n let hRatio = snapWidth / sampWidth;\r\n let vRatio = snapHeight / sampHeight;\r\n\r\n if (snapRatio > sampRatio) { // source is more thin, scale width using height ratio and center\r\n let hGap = snapWidth - (sampWidth * vRatio);\r\n hGap = hGap / vRatio;\r\n sampX = (-hGap)/2;\r\n sampWidth += Math.abs(hGap);\r\n \r\n } else {// source is more fat, scale height using width ratio and center\r\n let vGap = snapHeight - (sampHeight * hRatio);\r\n vGap = vGap / hRatio;\r\n sampY = (-vGap)/2;\r\n sampHeight += Math.abs(vGap);\r\n }\r\n\r\n let snapCvs = document.createElement('canvas');\r\n snapCvs.width = snapWidth;\r\n snapCvs.height = snapHeight;\r\n let snapCrc = snapCvs.getContext(\"2d\")!;\r\n snapCrc.drawImage(page.crcVisible.canvas, sampX, sampY, sampWidth, sampHeight, 0, 0, snapWidth, snapHeight);\r\n let img = snapCvs.toDataURL('image/jpeg');\r\n return img;\r\n }\r\n\r\n iLastReplayAction = 0;\r\n profileReplay = false;\r\n\r\n public replayRecorded(atLeastSeconds: number, idealMaxSeconds: number, recorded: Array, onFinish?: ()=>void, noClear?:boolean) {\r\n\r\n if (this.replaying === true) {\r\n return;\r\n }\r\n\r\n// let debugSkipDry = 0;\r\n// for (let i = recorded.length - 1; i >= 0; i--) {\r\n// let act = recorded[i];\r\n// if (act.kind === AnimationActionKind.dry || act.kind === AnimationActionKind.paintRadius || act.kind === AnimationActionKind.color) {\r\n// debugSkipDry ++;\r\n// } else {\r\n// break;\r\n// }\r\n// }\r\n// if (debugSkipDry > 0) {\r\n// recorded = recorded.slice(0, recorded.length - debugSkipDry);\r\n// }\r\n this.replaying = true;\r\n const controlThis = this;\r\n\r\n let totalReplayActionsStored = sessionStorage.getItem('totalReplayActions');\r\n let totalReplayTimeStored = sessionStorage.getItem('totalReplayTime');\r\n let totalReplayActions = 0;\r\n let totalReplayTime = 0;\r\n if (totalReplayActionsStored !== null) {\r\n totalReplayActions = parseInt(totalReplayActionsStored);\r\n }\r\n if (totalReplayTimeStored !== null) {\r\n totalReplayTime = parseFloat(totalReplayTimeStored);\r\n }\r\n\r\n \r\n if (controlThis.profileReplay) {\r\n console.profile();\r\n }\r\n\r\n\r\n let cAct = recorded.length;\r\n\r\n // start out by cleaning the main page in the context\r\n const page = this.getPage()!;\r\n this.rnd = new SeededRandom(); // same sequence as original\r\n\r\n // replace the page with a white, empty one\r\n if (noClear === undefined || noClear === false) {\r\n page.clear(this.props.OnClear, this.props.CentralPull, this.rnd, this.props.TextureSmash);\r\n if (this.props.OnClear !== undefined) {\r\n this.stampSelf();\r\n }\r\n }\r\n\r\n let actualFrames = 0;\r\n let actualSkips = 0;\r\n\r\n if (cAct > 0) {\r\n //console.time('replay');\r\n\r\n //console.time('replay');\r\n\r\n \r\n this.iLastReplayAction = 0;\r\n let drawActs = recorded.filter((aa) => aa.kind === AnimationActionKind.drag || aa.kind === AnimationActionKind.start ||\r\n aa.kind === AnimationActionKind.finish || aa.kind === AnimationActionKind.stamp || \r\n (aa.kind === AnimationActionKind.dry && controlThis.profileReplay === false)).length;\r\n \r\n let normalTime = drawActs * 1.0/12.0; // twelve actions per second for a fast painter\r\n let desiredTime = Math.max(atLeastSeconds, Math.min(idealMaxSeconds, normalTime));\r\n let actPerSecBase = 300; // acts per second from experiment. adjust dynamically\r\n if (totalReplayTime > 0 && totalReplayActions > 0) {\r\n actPerSecBase = totalReplayActions / totalReplayTime;\r\n }\r\n let actTime = 1.0 / actPerSecBase;\r\n let expectedComputeTime = drawActs * actTime;\r\n\r\n // balls out, fastest draw without overloading gpu too much. 40fps means some dropped frames but gpu is almost always working\r\n let actPerFrame = (1.0 / 40) / actTime;\r\n//desiredTime = 1;\r\n let desiredFrames = desiredTime * 50; // assumes some frames dropped;\r\n\r\n//actPerFrame = 5;\r\n if (expectedComputeTime < desiredTime) {\r\n actPerFrame = drawActs / desiredFrames;\r\n }\r\n\r\n console.log(`replay: ${cAct} actions, ${drawActs} draw actions, ${expectedComputeTime} expected compute seconds, ${normalTime} human time, ${desiredTime} desired time, ${actPerFrame} acts per frame`);\r\n let startTime = Date.now();\r\n //console.timeEnd('frameGap');\r\n //console.timeEnd('replay');\r\n //console.time('replay');\r\n\r\n let colorCur = '';\r\n let paintRadCur = 0;\r\n let frameActAccumulate = 0;\r\n let tipKindCur : TipApplication = {instrument: TipInstrument.finger, motion: TipMotion.unknown, action: TipAction.paint, modifier: 0};\r\n\r\n const animateSet = ():Boolean => {\r\n if (controlThis.replayAnimationFrame === -1) {\r\n return false;\r\n }\r\n //console.timeEnd('frameGap');\r\n //console.time('frameGap');\r\n\r\n\r\n frameActAccumulate += actPerFrame;\r\n actualFrames ++;\r\n\r\n let frameActions = Math.floor(frameActAccumulate);\r\n frameActAccumulate -= frameActions;\r\n\r\n if (frameActions == 0) {\r\n actualSkips ++;\r\n } \r\n\r\n let iFrame = 0;\r\n while(controlThis.iLastReplayAction < cAct && iFrame <= frameActions) {\r\n\r\n let act = recorded![controlThis.iLastReplayAction];\r\n switch(act.kind) {\r\n case AnimationActionKind.color:\r\n colorCur = (act as AnimationActionColor).color;\r\n tipKindCur = Page.ColorToTipApplication(new tinycolor(colorCur).toRgb());\r\n break;\r\n case AnimationActionKind.paintRadius:\r\n paintRadCur = (act as AnimationActionPaintRadius).rad;\r\n break;\r\n case AnimationActionKind.finish:\r\n //console.time('finishStroke');\r\n controlThis.finishStroke(controlThis.page!.lastTipApplication!);\r\n //console.timeEnd('finishStroke');\r\n iFrame ++;\r\n break;\r\n case AnimationActionKind.start:\r\n //console.time('startStroke');\r\n //console.time('startStroke');\r\n const startAct = (act as AnimationActionStart);\r\n let ptStart = new Point2D(startAct.pt.x + controlThis.replayOriginX, startAct.pt.y + controlThis.replayOriginY);\r\n controlThis.startStroke(ptStart, colorCur, startAct.rad, paintRadCur, tipKindCur);\r\n //console.timeEnd('startStroke');\r\n //console.timeEnd('startStroke');\r\n iFrame ++;\r\n break;\r\n case AnimationActionKind.drag:\r\n const dragAct = (act as AnimationActionDrag);\r\n let ptDrag = new Point2D(dragAct.pt.x + controlThis.replayOriginX, dragAct.pt.y + controlThis.replayOriginY);\r\n controlThis.continueStroke(ptDrag, dragAct.rad, paintRadCur, tipKindCur);\r\n iFrame ++;\r\n break;\r\n case AnimationActionKind.dry:\r\n const dryAct = (act as AnimationActionDry);\r\n let count = 1;\r\n if (dryAct.count !== undefined) {\r\n count = dryAct.count;\r\n }\r\n page.dry(controlThis.props.DryRate, count, App.useGPU);\r\n iFrame ++;\r\n break;\r\n case AnimationActionKind.stamp:\r\n controlThis.applyStamp(act as AnimationActionStamp, new Point2D(controlThis.replayOriginX, controlThis.replayOriginY), !controlThis.props.TextureSmash);\r\n iFrame++;\r\n break;\r\n }\r\n\r\n controlThis.iLastReplayAction++;\r\n }\r\n if (controlThis.iLastReplayAction < cAct) {\r\n controlThis.replayAnimationFrame = requestAnimationFrame(()=>{\r\n animateSet();\r\n })\r\n return true;\r\n } else {\r\n\r\n let elap = (Date.now() - startTime) / 1000;\r\n let fps = actualFrames/elap;\r\n if (fps > 10 && actualSkips === 0) {\r\n // assume something interuped replay, so ignore slow fps\r\n // also, skips mean we wasted time on purpose, so ignore that too\r\n totalReplayTime += elap;\r\n totalReplayActions += drawActs;\r\n sessionStorage.setItem('totalReplayActions', totalReplayActions.toString());\r\n sessionStorage.setItem('totalReplayTime', totalReplayTime.toString());\r\n }\r\n\r\n console.log(`post replay: ${actualFrames} frames, ${actualSkips} skips, ${elap} seconds, ${fps} fps`);\r\n if (controlThis.profileReplay) {\r\n //console.timeEnd('frameGap');\r\n\r\n //console.timeEnd('replay');\r\n //console.timeEnd('frameGap');\r\n\r\n //console.timeEnd('replay');\r\n console.profileEnd();\r\n controlThis.profileReplay = false;\r\n }\r\n controlThis.replaying = false;\r\n if (onFinish !== undefined) {\r\n onFinish();\r\n }\r\n return false;\r\n }\r\n\r\n };\r\n\r\n //console.time('frameGap');\r\n\r\n //console.time('frameGap');\r\n\r\n // this.replayAnimationFrame = 0;\r\n // while (animateSet() === true) {\r\n // }\r\n this.replayAnimationFrame = requestAnimationFrame(()=>{\r\n animateSet();\r\n });\r\n\r\n } else {\r\n this.replaying = true;\r\n\r\n }\r\n\r\n }\r\n\r\n public stampCtxToAction(crc: CrcOff, depth: number) : AnimationActionStamp {\r\n\r\n let imdat = crc.getImageData(0, 0, crc.canvas.width, crc.canvas.height);\r\n\r\n const stampLines = new Array();\r\n const aaStamp : AnimationActionStamp = {kind:AnimationActionKind.stamp, rad: depth, lines: stampLines, x1:1000000, x2:0, y1:1000000, y2:0};\r\n\r\n for(let ySamp = 0; ySamp < imdat.height; ySamp++) {\r\n let stampLine: AnimationActionStampLine | undefined = undefined;\r\n for(let xSamp = 0; xSamp < imdat.width; xSamp++) {\r\n let iSampBase = xSamp*4 + ySamp * imdat.width * 4;\r\n let r = imdat.data[iSampBase];\r\n let g = imdat.data[iSampBase+1];\r\n let b = imdat.data[iSampBase+2];\r\n let a = imdat.data[iSampBase+3];\r\n if (a===0) {\r\n continue;\r\n }\r\n if (stampLine === undefined) {\r\n stampLine = {pt: new Point2D(xSamp, ySamp), colors: new Array()};\r\n stampLines.push(stampLine);\r\n }\r\n aaStamp.x1 = Math.min(aaStamp.x1, xSamp);\r\n aaStamp.x2 = Math.max(aaStamp.x2, xSamp);\r\n aaStamp.y1 = Math.min(aaStamp.y1, ySamp);\r\n aaStamp.y2 = Math.max(aaStamp.y2, ySamp);\r\n stampLine.colors.push({r:r, g:g, b:b});\r\n }\r\n }\r\n return aaStamp;\r\n }\r\n \r\n public stampImage(img: HTMLImageElement, offX: number, offY: number, width: number, height: number, scaleWidth: number, scaleHeight: number, rotation: number, depth: number) {\r\n if (this.props.Disabled) {\r\n return;\r\n }\r\n\r\n let pageWidth = this.page!.cellsWidth;\r\n let pageHeight = this.page!.cellsHeight;\r\n let crcSamp = Page.getOffscreenCrc(pageWidth, pageHeight, undefined);\r\n let stampWidth = width*scaleWidth;\r\n let stampHeight = height*scaleHeight\r\n crcSamp.translate(offX, offY);\r\n crcSamp.translate(stampWidth/2, stampHeight/2);\r\n crcSamp.rotate(rotation);\r\n crcSamp.translate(-stampWidth/2, -stampHeight/2);\r\n crcSamp.drawImage(img, 0, 0, width, height, 0, 0, stampWidth, stampHeight);\r\n crcSamp.translate(-offX, -offY);\r\n\r\n let aaStamp = this.stampCtxToAction(crcSamp, depth);\r\n\r\n if (this.props.OnRecordAnimation !== undefined) {\r\n this.props.OnRecordAnimation(aaStamp);\r\n }\r\n this.applyStamp(aaStamp, undefined, this.props.TextureSmash);\r\n\r\n }\r\n\r\n public stampSelf() {\r\n let page = this.getPage();\r\n if (page === undefined) {\r\n return;\r\n }\r\n let crc = page.crcVisible;\r\n let aaStamp = this.stampCtxToAction(crc, 1);\r\n this.applyStamp(aaStamp, new Point2D(0, 0), this.props.TextureSmash);\r\n page.dry(1, page.wetCanvasStageMax + 1, App.useGPU);\r\n }\r\n \r\n\r\n // ###### \r\n // # # ###### # # ##### ###### ##### \r\n // # # # ## # # # # # # \r\n // ###### ##### # # # # # ##### # # \r\n // # # # # # # # # # ##### \r\n // # # # # ## # # # # # \r\n // # # ###### # # ##### ###### # # \r\n\r\n private putEffectColors(effect: TipEffect, ptImageOnPage: Point2D, id: ImageData) {\r\n for (const c of effect.cells) {\r\n let color = this.page!.visibleColorAtOffset(c);\r\n\r\n\r\n let ptPage = this.page!.coordinatesOfOffset(c);\r\n let ptImage = new Point2D(ptPage.x - ptImageOnPage.x, ptPage.y - ptImageOnPage.y)\r\n let offImg = 4 * ((ptImage.y * id.width) + ptImage.x);\r\n id.data[offImg] = color.r;\r\n id.data[offImg+1] = color.g;\r\n id.data[offImg+2] = color.b;\r\n id.data[offImg+3] = 255;\r\n }\r\n\r\n }\r\n private createAntiAliasOutline(skipMoveOct: number, effect: TipEffect, ptImageOnPage: Point2D, id: ImageData) {\r\n\r\n const filledPoints = new Set(effect.cells);\r\n const page = this.page!;\r\n const aaPoints = new Map();\r\n\r\n const markPoint = (ptPage: Point2D, dx: number, dy: number, doThis: (aap: AntiAliasPoint)=>void) => {\r\n let pt = new Point2D(ptPage.x + dx, ptPage.y + dy);\r\n let o = page.offsetOfCoordinates(pt);\r\n if (!filledPoints.has(o)) {\r\n let aap = aaPoints.get(o);\r\n if (aap === undefined) {\r\n aap = {filled0:-1, filled1:-1, filled2:-1, filled3:-1, filled5:-1, filled6:-1, filled7:-1, filled8:-1};\r\n aaPoints.set(o, aap);\r\n }\r\n doThis(aap);\r\n }\r\n }\r\n\r\n for (const c of effect.cells) {\r\n let ptPage = page.coordinatesOfOffset(c);\r\n markPoint(ptPage, -1, -1, (aap) => {aap.filled8 = c});\r\n markPoint(ptPage, 0, -1, (aap) => {aap.filled7 = c});\r\n markPoint(ptPage, 1, -1, (aap) => {aap.filled6 = c});\r\n markPoint(ptPage, -1, 0, (aap) => {aap.filled5 = c});\r\n markPoint(ptPage, 1, 0, (aap) => {aap.filled3 = c});\r\n markPoint(ptPage, -1, 1, (aap) => {aap.filled2 = c});\r\n markPoint(ptPage, 0, 1, (aap) => {aap.filled1 = c});\r\n markPoint(ptPage, 1, 1, (aap) => {aap.filled0 = c});\r\n }\r\n if (skipMoveOct !== 4) {\r\n\r\n }\r\n\r\n const shouldAA = (n1: number, n2: number, n3: number) : boolean => {\r\n if (n1 !== -1 && n2 !== -1 && n3 !== -1) {\r\n return (page.getWetDepthAtOffset(n1) > FingerTip.maxSmashScrapeDepth ||\r\n page.getWetDepthAtOffset(n2) > FingerTip.maxSmashScrapeDepth ||\r\n page.getWetDepthAtOffset(n3) > FingerTip.maxSmashScrapeDepth);\r\n }\r\n return false;\r\n\r\n }\r\n\r\n aaPoints.forEach((aa, o) => {\r\n let useColor: number| undefined;\r\n if (shouldAA(aa.filled3, aa.filled0, aa.filled1)) {\r\n useColor = aa.filled3;\r\n } else if (shouldAA(aa.filled1, aa.filled2, aa.filled5)) {\r\n useColor = aa.filled1;\r\n } else if (shouldAA(aa.filled5, aa.filled8, aa.filled7)) {\r\n useColor = aa.filled5;\r\n } else if (shouldAA(aa.filled7, aa.filled6, aa.filled3)) {\r\n useColor = aa.filled7;\r\n }\r\n\r\n if (useColor !== undefined) {\r\n let ptPageSrc = page.coordinatesOfOffset(useColor);\r\n let ptImageSrc = new Point2D(ptPageSrc.x - ptImageOnPage.x, ptPageSrc.y - ptImageOnPage.y)\r\n let offImgSrc = 4 * ((ptImageSrc.y * id.width) + ptImageSrc.x);\r\n let ptPageAA = page.coordinatesOfOffset(o);\r\n let ptImageAA = new Point2D(ptPageAA.x - ptImageOnPage.x, ptPageAA.y - ptImageOnPage.y)\r\n let offImgAA = 4 * ((ptImageAA.y * id.width) + ptImageAA.x);\r\n\r\n id.data[offImgAA] = id.data[offImgSrc];\r\n id.data[offImgAA+1] = id.data[offImgSrc+1];\r\n id.data[offImgAA+2] = id.data[offImgSrc+2];\r\n id.data[offImgAA+3] = 128;\r\n }\r\n });\r\n\r\n }\r\n\r\n private putAllAppliedDry(id: ImageData) {\r\n let tot = 0;\r\n for (let y = 0; y < id.height; y++) {\r\n for (let x = 0; x < id.width; x++) {\r\n let offImg = 4 * ((y * id.width) + x);\r\n let dry = this.page!.cellDryApplied![y * id.width + x];\r\n if (dry > 0) {\r\n let vol = this.page!.getWetDepthAtOffset(y * id.width + x);\r\n let a = 255;\r\n if (vol === 0) {\r\n a=128;\r\n } else {\r\n a = 255;\r\n }\r\n id.data[offImg+3] = a;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private putAllDepth(id: ImageData) {\r\n let tot = 0;\r\n for (let y = 0; y < id.height; y++) {\r\n for (let x = 0; x < id.width; x++) {\r\n let offImg = 4 * ((y * id.width) + x);\r\n let depth = this.page!.getWetDepthAtOffset(y * id.width + x);\r\n\r\n let r = 0;\r\n let g = 0;\r\n let b = 0;\r\n if (depth === 0) {\r\n r = 255;\r\n g = 255;\r\n b = 255;\r\n } else if (depth < FingerTip.minSmashScrapeDepth) {\r\n r = 200;\r\n g = 0;\r\n b = 0;\r\n } else if (depth <= FingerTip.maxSmashScrapeDepth) {\r\n r = 0;\r\n g = 0;\r\n b = 235;\r\n } else if (depth < FingerTip.preferredMeniscusScrapeDepth) {\r\n r = 60;\r\n g = 210;\r\n b = 60;\r\n } else {\r\n if (depth > 0) {\r\n depth += 70\r\n }\r\n depth = Math.min(Page.maxCoronaDepth, depth);\r\n let depthRat = depth / Page.maxCoronaDepth;\r\n let depthRatInv = 1 - depthRat;\r\n r = Math.floor(depthRatInv * 255);\r\n g = Math.floor(depthRatInv * 255);\r\n b = Math.floor(depthRatInv * 255);\r\n }\r\n\r\n tot += depth;\r\n id.data[offImg] = r;\r\n id.data[offImg+1] =g;\r\n id.data[offImg+2] = b;\r\n id.data[offImg+3] = 255;\r\n }\r\n }\r\n }\r\n \r\n public pokeColor(center: Point2D, color:string, radius: number, paintRadius: number) {\r\n let pokeApplication = {instrument: TipInstrument.finger, motion: TipMotion.press, action: TipAction.paint, modifier: 0};\r\n\r\n this.startStroke(center, color, radius, paintRadius, pokeApplication);\r\n }\r\n\r\n lastPaintRadius = 0;\r\n\r\n paintRadiusToDryDepth(paintRadius: number) : number {\r\n paintRadius = Math.max(FingerTip.minFingerRadius, Math.min(FingerTip.maxFingerRadius, paintRadius));\r\n if (paintRadius === FingerTip.maxFingerRadius) {\r\n return Page.maxCoronaDepth * 5; // nuke it\r\n }\r\n let depthRatio = (paintRadius - FingerTip.minFingerRadius) / (FingerTip.maxFingerRadius - FingerTip.minFingerRadius);\r\n return Math.floor((FingerTip.maxSmashTouchDepth + depthRatio * Page.maxCoronaDepth)/10);\r\n }\r\n\r\n depthRender = false;\r\n strokes = 0;\r\n previousBlows = new Array();\r\n\r\n private startStroke(center: Point2D, color:string, radius: number, paintRadius: number, tipApplication: TipApplication) {\r\n tipApplication = {instrument: tipApplication.instrument, motion: TipMotion.press, action: tipApplication.action, modifier: tipApplication.modifier};\r\n this.page!.clearAppliedDry();\r\n this.page!.clearKnifeBladeCells();\r\n this.lastPaintRadius = paintRadius;\r\n\r\n center = new Point2D(Math.floor(center.x / Page.renderScale), Math.floor(center.y / Page.renderScale));\r\n radius = Math.floor(radius);\r\n\r\n this.lastPos = center;\r\n this.lastRadius = radius;\r\n this.lastDrawOctant = 4;\r\n this.lastMoveOctant = 4;\r\n this.lastLastMoveOctant = 4;\r\n\r\n // if in 'pick up color mode' then\r\n if (this.props.SampleMode === true) {\r\n if (App.useGPU === true) {\r\n tipApplication = {instrument: TipInstrument.eyeDropper, motion: TipMotion.press, action: TipAction.sample, modifier: 0};\r\n this.page!.lastTipApplication = tipApplication;\r\n let f = FingerTip.getCircleShape(6);\r\n\r\n let sampleEntry = [{shape:f, location:center, modifier:0}];\r\n let sampleChange = this.page!.createTouchPageChange(sampleEntry, tipApplication, false, 6) as SamplePageChange;\r\n if (sampleChange !== undefined) {\r\n const gc = GPURunner.newChecker('take-sample');\r\n sampleChange.processChanges(gc, this.page!.crcVisible);\r\n if (GPUChecker.errorCode !== 0) {\r\n this.props.ExceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n return;\r\n }\r\n\r\n sampleEntry[0].location = new Point2D(sampleEntry[0].location.x + sampleChange.pageX, sampleEntry[0].location.y + sampleChange.pageY);\r\n sampleChange.finalize();\r\n this.props.OnColorSample(sampleChange.color);\r\n }\r\n\r\n } else {\r\n // sample using the finger radius and take the average\r\n let cFilled = 0;\r\n let totalRed=0;\r\n let totalGreen=0;\r\n let totalBlue=0;\r\n FingerTip.doFilledCircle(radius, 0, (i: number, pt: Point2D)=>{\r\n const ptPage = this.page!.tipCoordinatesToPageCoordinates(pt, center);\r\n // and the offset into storage arrays\r\n const pageOffset = this.page!.offsetOfCoordinates(ptPage);\r\n // get volume and color info from the page, take kind and max from the tip\r\n const color = pageOffset === -1 ? {r: 1, g: 1, b: 1} : this.page!.visibleColorAtOffset(pageOffset);\r\n if (color.r * color.g * color.b !== 1) {\r\n cFilled ++;\r\n totalRed += color.r;\r\n totalGreen += color.g;\r\n totalBlue += color.b;\r\n }\r\n })\r\n if (cFilled > 0) {\r\n this.props.OnColorSample({r: Math.floor(totalRed / cFilled), g: Math.floor(totalGreen / cFilled), b: Math.floor(totalBlue / cFilled)});\r\n }\r\n }\r\n \r\n return;\r\n }\r\n\r\n\r\n if (tipApplication.instrument === TipInstrument.knife) {\r\n this.page!.lastTipApplication = tipApplication;\r\n // knife is a special case, it just cuts through everything. this joke brought to you by copilot\r\n return;\r\n }\r\n\r\n let f = FingerTip.getCircleShape(Math.round(radius));\r\n if (tipApplication.instrument === TipInstrument.blow) {\r\n if (App.useGPU === true) {\r\n this.page!.lastTipApplication = tipApplication;\r\n let blowEntry = [{shape:f, location:center, modifier:this.paintRadiusToDryDepth(this.lastPaintRadius)}];\r\n let blowChange = this.page!.createTouchPageChange(blowEntry, tipApplication, false, paintRadius) as BlowPageChange;\r\n if (blowChange !== undefined) {\r\n const gc = GPURunner.newChecker('do-blow');\r\n blowChange.processChanges(gc, this.page!.crcVisible);\r\n if (GPUChecker.errorCode !== 0) {\r\n this.props.ExceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n return;\r\n }\r\n blowEntry[0].location = new Point2D(blowEntry[0].location.x + blowChange.pageX, blowEntry[0].location.y + blowChange.pageY);\r\n blowChange.finalize();\r\n this.previousBlows = new Array();\r\n this.previousBlows.push(blowEntry[0]);\r\n this.page!.refreshVisible(this.previousBlows);\r\n }\r\n\r\n } else {\r\n this.page!.blowTip(f, center, this.paintRadiusToDryDepth(this.lastPaintRadius));\r\n\r\n var id = this.page!.crcVisible.getImageData(Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(this.page!.crcVisible.canvas.width), Page.scaleUnitsToPix(this.page!.crcVisible.canvas.height));\r\n if (this.depthRender) {\r\n this.putAllDepth(id);\r\n } else {\r\n this.putAllAppliedDry(id);\r\n }\r\n this.page!.crcVisible.putImageData(id, Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0));\r\n }\r\n } else {\r\n if (App.useGPU === true) {\r\n this.page!.lastTipApplication = tipApplication;\r\n let pChange = this.page!.createTouchPageChange([{shape:f, location:center, modifier:0}], tipApplication, true, paintRadius) as CirclePageChange;\r\n if (pChange !== undefined) {\r\n this.page!.dropPaint(f, center, color, paintRadius, pChange);\r\n const gc = GPURunner.newChecker('circle-touch');\r\n pChange.processChanges(gc, this.page!.crcVisible);\r\n pChange.finalize();\r\n if (GPUChecker.errorCode !== 0) {\r\n this.props.ExceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n return;\r\n }\r\n }\r\n } else {\r\n this.page!.dropPaint(f, center, color, paintRadius, undefined);\r\n\r\n let effect:TipEffect;\r\n effect = this.page!.applyTip(f, center, color, paintRadius);\r\n if (effect.isEmpty()) {\r\n return false;\r\n }\r\n \r\n let idDx = effect.rectBR.x - effect.rectTL.x + 4;\r\n let idDy = effect.rectBR.y - effect.rectTL.y + 4;\r\n let ptImageOnPage = new Point2D(effect.rectTL.x - 2, effect.rectTL.y - 2);\r\n \r\n let id: ImageData\r\n if (this.depthRender) {\r\n id = this.page!.crcVisible.getImageData(Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(this.page!.crcVisible.canvas.width), Page.scaleUnitsToPix(this.page!.crcVisible.canvas.height))\r\n } else {\r\n id = this.page!.crcVisible.createImageData(Page.scaleUnitsToPix(idDx), Page.scaleUnitsToPix(idDy));\r\n }\r\n\r\n if (this.depthRender) {\r\n this.putAllDepth(id);\r\n this.page!.crcVisible.putImageData(id, Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0));\r\n } else {\r\n this.putEffectColors(effect, ptImageOnPage, id);\r\n this.createAntiAliasOutline(4, effect, ptImageOnPage, id);\r\n createImageBitmap(id).then((ibm)=>{\r\n this.page!.crcVisible.drawImage(ibm, Page.scaleUnitsToPix(ptImageOnPage.x), Page.scaleUnitsToPix(ptImageOnPage.y));\r\n });\r\n }\r\n }\r\n }\r\n };\r\n private continueStroke(center: Point2D, radius: number, paintRadius: number, tipApplication: TipApplication) : boolean {\r\n if (this.props.SampleMode === true) {\r\n // just a single touch in 'pick up the color' mode is needed\r\n return false;\r\n }\r\n\r\n tipApplication = {instrument: tipApplication.instrument, motion: TipMotion.drag, action: tipApplication.action, modifier: tipApplication.modifier};\r\n \r\n const page = this.getPage()!;\r\n\r\n let ptStart = this.lastPos;\r\n // don't draw if really close to last point\r\n if (center.taxiDistance(ptStart) > 4)\r\n {\r\n // one step of smoothing, if the direction changes wait a move to commit to it\r\n this.lastMoveOctant = center.moveOctantFrom(ptStart);\r\n if (this.lastLastMoveOctant !== 4 && this.lastLastMoveOctant !== this.lastMoveOctant) {\r\n this.lastLastMoveOctant = this.lastMoveOctant\r\n return false;\r\n }\r\n this.lastLastMoveOctant = this.lastMoveOctant;\r\n\r\n ptStart = new Point2D(Math.floor(ptStart.x / Page.renderScale), Math.floor(ptStart.y / Page.renderScale));\r\n let ptEnd = new Point2D(Math.floor(center.x / Page.renderScale), Math.floor(center.y / Page.renderScale));\r\n\r\n if (tipApplication.instrument === TipInstrument.blow) {\r\n let effect = this.page!.dragBlowTip(ptStart, ptEnd, this.lastRadius, radius, this.paintRadiusToDryDepth(this.lastPaintRadius), this.lastDrawOctant, this.previousBlows, App.useGPU);\r\n\r\n this.lastPos = center;\r\n this.lastRadius = radius;\r\n this.lastDrawOctant = effect[1];\r\n\r\n if (App.useGPU === false) {\r\n var id = page!.crcVisible.getImageData(Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(page!.crcVisible.canvas.width), Page.scaleUnitsToPix(page!.crcVisible.canvas.height));\r\n if (this.depthRender) {\r\n this.putAllDepth(id);\r\n } else {\r\n this.putAllAppliedDry(id);\r\n }\r\n page!.crcVisible.putImageData(id, Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0));\r\n }\r\n\r\n } else {\r\n\r\n let effect = this.page!.dragTip(ptStart, ptEnd, this.lastRadius, radius, this.lastDrawOctant, paintRadius, tipApplication, App.useGPU);\r\n if (App.useGPU === true) {\r\n\r\n let pChange = this.page!.createTouchPageChange(effect.changeEntries, tipApplication, true, paintRadius);\r\n if (pChange !== undefined) {\r\n const gc = GPURunner.newChecker('drag');\r\n pChange.processChanges(gc, this.page!.crcVisible);\r\n pChange.finalize();\r\n if (GPUChecker.errorCode !== 0) {\r\n this.props.ExceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n return false;\r\n }\r\n }\r\n } else {\r\n\r\n if (effect.isEmpty()) {\r\n return false;\r\n }\r\n\r\n // make an imagedata large enough to work in. two extra on edge for anti aliasing\r\n let idDx = effect.rectBR.x - effect.rectTL.x + 4;\r\n let idDy = effect.rectBR.y - effect.rectTL.y + 4;\r\n let ptImageOnPage = new Point2D(effect.rectTL.x - 2, effect.rectTL.y - 2);\r\n \r\n let id: ImageData\r\n if (this.depthRender) {\r\n id = page.crcVisible.getImageData(Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(page.crcVisible.canvas.width), Page.scaleUnitsToPix(page.crcVisible.canvas.height))\r\n } else {\r\n //id = page.crcVisible.getImageData(ptImageOnPage.x, ptImageOnPage.y, idDx, idDy)\r\n id = page.crcVisible.createImageData(Page.scaleUnitsToPix(idDx), Page.scaleUnitsToPix(idDy));\r\n }\r\n \r\n if (this.depthRender) {\r\n this.putAllDepth(id);\r\n page.crcVisible.putImageData(id, Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0));\r\n \r\n }\r\n else {\r\n let firstDrawOct = effect.steps[0].octantMove;\r\n this.putEffectColors(effect, ptImageOnPage, id);\r\n this.createAntiAliasOutline(firstDrawOct, effect, ptImageOnPage, id);\r\n createImageBitmap(id).then((ibm)=>{\r\n page.crcVisible.drawImage(ibm, Page.scaleUnitsToPix(ptImageOnPage.x), Page.scaleUnitsToPix(ptImageOnPage.y));\r\n });\r\n }\r\n }\r\n \r\n this.lastPos = center;\r\n this.lastRadius = radius;\r\n this.lastDrawOctant = effect.steps[effect.steps.length-1].octantMove;\r\n }\r\n return true;\r\n }\r\n return false;\r\n\r\n };\r\n\r\n private finishStroke(prevApplication: TipApplication) : boolean {\r\n let finishApplication = {instrument: prevApplication.instrument, motion: TipMotion.lift, action: prevApplication.action, modifier: prevApplication.modifier};\r\n let result = false;\r\n if (this.page !== undefined) {\r\n let page = this.page!;\r\n if (finishApplication.instrument === TipInstrument.blow) {\r\n result = true;\r\n if (App.useGPU === true) {\r\n this.page!.dry(0.001, 1, App.useGPU);\r\n this.page!.refreshVisible();\r\n } else {\r\n page.clearAppliedDry();\r\n var id = page.crcVisible.getImageData(Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(page.crcVisible.canvas.width), Page.scaleUnitsToPix(page.crcVisible.canvas.height));\r\n for (let y = 0; y < id.height; y++) {\r\n for (let x = 0; x < id.width; x++) {\r\n let offImg = 4 * ((y * id.width) + x);\r\n id.data[offImg+3] = 255;\r\n }\r\n }\r\n page.crcVisible.putImageData(id, Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0));\r\n }\r\n } else if (finishApplication.instrument === TipInstrument.knife) {\r\n result = true;\r\n } else if (finishApplication.instrument === TipInstrument.eyeDropper) {\r\n result = false;\r\n } else if (finishApplication.instrument === TipInstrument.stamp) {\r\n result = false;\r\n } else {\r\n result = true;\r\n let center = new Point2D(Math.floor(this.lastPos.x / Page.renderScale), Math.floor(this.lastPos.y / Page.renderScale));\r\n let radius = this.lastRadius;\r\n let f = FingerTip.getCircleShape(Math.round(radius));\r\n\r\n if (App.useGPU === true) {\r\n let pChange = this.page!.createTouchPageChange([{shape:f, location:center, modifier:0}], finishApplication, true, 0);\r\n if (pChange !== undefined) {\r\n const gc = GPURunner.newChecker('circle-lift');\r\n pChange.processChanges(gc, this.page!.crcVisible);\r\n pChange.finalize();\r\n if (GPUChecker.errorCode !== 0) {\r\n this.props.ExceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n return false;\r\n }\r\n }\r\n } else {\r\n \r\n let effect = page.removeTip(f, center, finishApplication);\r\n \r\n if (effect.isEmpty()) {\r\n return false;\r\n }\r\n \r\n let idDx = effect.rectBR.x - effect.rectTL.x + 4;\r\n let idDy = effect.rectBR.y - effect.rectTL.y + 4;\r\n let ptImageOnPage = new Point2D(effect.rectTL.x - 2, effect.rectTL.y - 2);\r\n \r\n let id: ImageData\r\n if (this.depthRender) {\r\n id = page.crcVisible.getImageData(Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(page.crcVisible.canvas.width), Page.scaleUnitsToPix(page.crcVisible.canvas.height))\r\n } else {\r\n id = page.crcVisible.createImageData(Page.scaleUnitsToPix(idDx), Page.scaleUnitsToPix(idDy));\r\n }\r\n \r\n if (this.depthRender) {\r\n this.putAllDepth(id);\r\n page.crcVisible.putImageData(id, Page.scaleUnitsToPix(0), Page.scaleUnitsToPix(0));\r\n } else {\r\n this.putEffectColors(effect, ptImageOnPage, id);\r\n this.createAntiAliasOutline(4, effect, ptImageOnPage, id);\r\n createImageBitmap(id).then((ibm)=>{\r\n page.crcVisible.drawImage(ibm, Page.scaleUnitsToPix(ptImageOnPage.x), Page.scaleUnitsToPix(ptImageOnPage.y));\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n\r\n }\r\n\r\n public applyStamp(aaStamp: AnimationActionStamp, ptOffset: Point2D | undefined, blendDried: boolean) {\r\n const page = this.getPage()!;\r\n if (page === undefined) {\r\n return;\r\n }\r\n\r\n let pageWidth = page.cellsWidth;\r\n let pageHeight = page.cellsHeight;\r\n\r\n let depth = aaStamp.rad;\r\n\r\n let idDx = aaStamp.x2 - aaStamp.x1 + 4;\r\n let idDy = aaStamp.y2 - aaStamp.y1 + 4;\r\n let ptImageOnPage = new Point2D(aaStamp.x1 - 2, aaStamp.y1 - 2);\r\n if (ptOffset !== undefined) {\r\n ptImageOnPage = new Point2D(ptImageOnPage.x + ptOffset.x, ptImageOnPage.y + ptOffset.y)\r\n }\r\n\r\n if (App.useGPU === true) {\r\n let tipApplication = {instrument: TipInstrument.stamp, motion: TipMotion.press, action: TipAction.paint, modifier: 0};\r\n this.page!.lastTipApplication = tipApplication;\r\n\r\n let stampEntry = [{shape:{dx:idDx, dy:idDy}, location:ptImageOnPage, modifier:0}];\r\n let stampChange = this.page!.createTouchPageChange(stampEntry, tipApplication, blendDried, 0) as StampPageChange;\r\n if (stampChange !== undefined) {\r\n let stampColors = new Uint8Array(4 * idDx * idDy);\r\n\r\n for (const line of aaStamp.lines) {\r\n let pageX = line.pt.x;\r\n let pageY = line.pt.y;\r\n if (pageY >= pageHeight) {\r\n continue;\r\n }\r\n if (pageX >= pageWidth) {\r\n continue;\r\n }\r\n \r\n let lineWidth = line.colors.length;\r\n if (lineWidth + pageX > pageWidth) {\r\n lineWidth = pageWidth - pageX;\r\n }\r\n if (lineWidth === 0) {\r\n continue;\r\n }\r\n let colorsOff = 4 * ((pageY - ptImageOnPage.y) * idDx + (pageX - ptImageOnPage.x));\r\n for (let iclr = 0; iclr < lineWidth; iclr++) {\r\n stampColors[colorsOff + 0] = line.colors[iclr].r;\r\n stampColors[colorsOff + 1] = line.colors[iclr].g;\r\n stampColors[colorsOff + 2] = line.colors[iclr].b;\r\n stampColors[colorsOff + 3] = 255;\r\n colorsOff += 4;\r\n }\r\n }\r\n stampChange.stampColors = stampColors;\r\n stampChange.stampDepth = depth;\r\n const gc = GPURunner.newChecker('stamp');\r\n stampChange.processChanges(gc, this.page!.crcVisible);\r\n stampChange.finalize();\r\n if (GPUChecker.errorCode !== 0) {\r\n this.props.ExceptionHandler(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n return;\r\n }\r\n\r\n }\r\n return;\r\n }\r\n\r\n\r\n let id = page.crcVisible.getImageData(Page.scaleUnitsToPix(ptImageOnPage.x), Page.scaleUnitsToPix(ptImageOnPage.y), Page.scaleUnitsToPix(idDx), Page.scaleUnitsToPix(idDy))\r\n\r\n const pageColors = page.cellData;\r\n const bufStamp = new Uint8Array(3);\r\n\r\n for (const line of aaStamp.lines) {\r\n let pageX = line.pt.x;\r\n let pageY = line.pt.y;\r\n if (pageY >= pageHeight) {\r\n continue;\r\n }\r\n if (pageX >= pageWidth) {\r\n continue;\r\n }\r\n\r\n let lineWidth = line.colors.length;\r\n if (lineWidth + pageX > pageWidth) {\r\n lineWidth = pageWidth - pageX;\r\n }\r\n if (lineWidth === 0) {\r\n continue;\r\n }\r\n\r\n for (let iclr = 0; iclr < lineWidth; iclr++) {\r\n bufStamp[0] = line.colors[iclr].r;\r\n bufStamp[1] = line.colors[iclr].g;\r\n bufStamp[2] = line.colors[iclr].b;\r\n const ptPage = new Point2D(pageX + iclr, pageY);\r\n let c = page.offsetOfCoordinates(ptPage);\r\n let offPage = 11 * c;\r\n\r\n // if there is wet paint already on the page, mix the colors\r\n let wetDepth = c === -1 ? 0 : page.getWetDepthAtOffset(c);\r\n if (wetDepth > 0) {\r\n // the weight is about the paint volume. stamp mixing onto page\r\n let wStamp = depth / (depth + wetDepth);\r\n colorMixKM(pageColors, offPage + Page.offWetRed, bufStamp, 0, wStamp, pageColors, offPage + Page.offWetRed);\r\n wetDepth += depth;\r\n } else {\r\n // no wet paint, just transfer\r\n pageColors[offPage+Page.offWetRed] = bufStamp[0];\r\n pageColors[offPage+Page.offWetGreen] = bufStamp[1];\r\n pageColors[offPage+Page.offWetBlue] = bufStamp[2];\r\n wetDepth = depth;\r\n }\r\n \r\n if (c !== -1) {\r\n\r\n // blend with the dry paint\r\n if (blendDried && wetDepth <= FingerTip.preferredMeniscusScrapeDepth) {\r\n // scale between depth and 4* depth so thicker paint blocks out effect of blending much more\r\n let scaledDepth = wetDepth;\r\n if (scaledDepth > FingerTip.preferredSmashScrapeDepth) {\r\n scaledDepth = 4 * FingerTip.preferredMeniscusScrapeDepth * ((scaledDepth-FingerTip.preferredSmashScrapeDepth)/(FingerTip.preferredMeniscusScrapeDepth - FingerTip.preferredSmashScrapeDepth));\r\n }\r\n let depthRat = Page.backgroundImplicitDepth / (scaledDepth + Page.backgroundImplicitDepth);\r\n // visible = mix of wet and dried\r\n colorMixKM(pageColors, offPage + Page.offWetRed, pageColors, offPage + Page.offDryRed, depthRat, pageColors, offPage + Page.offVisRed);\r\n } else {\r\n // visible = wet\r\n pageColors[offPage + Page.offVisRed] = pageColors[offPage + Page.offWetRed];\r\n pageColors[offPage + Page.offVisGreen] = pageColors[offPage + Page.offWetGreen];\r\n pageColors[offPage + Page.offVisBlue] = pageColors[offPage + Page.offWetBlue];\r\n }\r\n\r\n page.setWetDepthAtOffset(c, wetDepth);\r\n page.makeCanvasOffsetWet(c);\r\n\r\n let ptImage = new Point2D(ptPage.x - ptImageOnPage.x, ptPage.y - ptImageOnPage.y)\r\n let offImg = 4 * ((ptImage.y * id.width) + ptImage.x);\r\n\r\n id.data[offImg] = pageColors[offPage + Page.offVisRed];\r\n id.data[offImg+1] = pageColors[offPage + Page.offVisGreen];\r\n id.data[offImg+2] = pageColors[offPage + Page.offVisBlue];\r\n id.data[offImg+3] = 255;\r\n\r\n }\r\n }\r\n }\r\n\r\n page.crcVisible.putImageData(id, Page.scaleUnitsToPix(ptImageOnPage.x), Page.scaleUnitsToPix(ptImageOnPage.y));\r\n page.dry(0, 1, App.useGPU);\r\n }\r\n\r\n getPointerLocation(evt:React.PointerEvent): Point2D {\r\n if (!evt.currentTarget) {\r\n return new Point2D(0,0);\r\n }\r\n let rect = this.boundingClientRect();\r\n if (rect === undefined) {\r\n return new Point2D(0,0);\r\n }\r\n return new Point2D(evt.clientX - rect.left, evt.clientY - rect.top);\r\n }\r\n\r\n stopDragging(evt:React.PointerEvent) {\r\n if (this.dragging) {\r\n this.dragging = false;\r\n this.queue.queueAction({isStart: false, isFinish: true, ptStart: this.getPointerLocation(evt), radius: 0, paintRadius: this.props.PaintRadius, color:this.props.Color});\r\n this.canvasRef.current!.releasePointerCapture(evt.pointerId);\r\n if (this.props.OnDragEnd !== undefined) {\r\n this.props.OnDragEnd();\r\n }\r\n }\r\n\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`smear, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n debugPt : Point2D = new Point2D(0,0);\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n if (this.state.loading === true) {\r\n return <>;\r\n }\r\n \r\n const pointerMove = (evt:React.PointerEvent) => {\r\n if (controlThis.props.Disabled) {\r\n controlThis.stopDragging(evt);\r\n return;\r\n }\r\n if (!controlThis.dragging) {\r\n return;\r\n }\r\n let rad = (evt.width/2 + evt.height/2) / 2;\r\n if (rad === 0 && controlThis.props.FixedSize === 0) {\r\n return\r\n }\r\n\r\n let ptEnd = controlThis.getPointerLocation(evt);\r\n // ptEnd.x = this.debugPt.x + 1;\r\n // if (ptEnd.y > 400) {\r\n // ptEnd.y = this.debugPt.y + 1;\r\n // } else {\r\n // ptEnd.y = this.debugPt.y;\r\n // }\r\n // this.debugPt = ptEnd;\r\n let radiusEnd = FingerTip.normalizeTouchRadius(rad, this.props.FixedSize!==0, this.props.FixedSize, this.props.AvgLightRadius, this.props.AvgHeavyRadius);\r\n this.queue.queueAction({isStart: false, isFinish:false, ptStart: ptEnd, radius: radiusEnd, paintRadius: this.props.PaintRadius, color:this.props.Color});\r\n };\r\n \r\n const pointerDown = (evt:React.PointerEvent) => {\r\n if (controlThis.props.Disabled) {\r\n controlThis.stopDragging(evt);\r\n return;\r\n }\r\n if (controlThis.dragging || evt.button !== 0) {\r\n return;\r\n }\r\n if (controlThis.props.OnDragStart !== undefined) {\r\n if (controlThis.props.OnDragStart() === false) {\r\n return;\r\n }\r\n }\r\n\r\n let rad = (evt.width/2 + evt.height/2) / 2;\r\n if (rad === 0 && controlThis.props.FixedSize === 0) {\r\n return\r\n }\r\n\r\n let ptAt = controlThis.getPointerLocation(evt);\r\n // this.debugPt = ptAt;\r\n // if (ptAt.x > 200 && ptAt.y < 100) {\r\n // // debug tests\r\n // let ptStart = new Point2D(50, 50);\r\n // let ptStart2 = new Point2D(50, 55);\r\n // let radiusStart = 22;\r\n // let ptEnd = new Point2D(80, 500);\r\n // let ptEnd2 = new Point2D(80, 495);\r\n // let radiusEnd = 22;\r\n // Smear.longestDragGap = 30;\r\n // TouchActionAnimationQueue.longestSprint = 7;\r\n\r\n // console.time(`5 X ${TouchActionAnimationQueue.longestSprint}@${Smear.longestDragGap}`)\r\n\r\n // controlThis.dragging = false;\r\n // this.queue.queueAction({isStart: true, isFinish:false, ptStart: ptStart, radius: radiusStart, paintRadius: this.props.PaintRadius, color:this.props.Color});\r\n // for (let i = 0; i < 5; i++) {\r\n // this.queue.queueAction({isStart: false, isFinish:false, ptStart: ptStart, radius: radiusStart, paintRadius: this.props.PaintRadius, color:this.props.Color});\r\n // this.queue.queueAction({isStart: false, isFinish:false, ptStart: ptStart2, radius: radiusStart, paintRadius: this.props.PaintRadius, color:this.props.Color});\r\n // this.queue.queueAction({isStart: false, isFinish:false, ptStart: ptEnd, radius: radiusEnd, paintRadius: this.props.PaintRadius, color:this.props.Color});\r\n // this.queue.queueAction({isStart: false, isFinish:false, ptStart: ptEnd2, radius: radiusEnd, paintRadius: this.props.PaintRadius, color:this.props.Color});\r\n // }\r\n // this.queue.queueAction({isStart: false, isFinish:true, ptStart: ptEnd, radius: radiusEnd, paintRadius: this.props.PaintRadius, color:this.props.Color, \r\n // postCall: ()=>{\r\n // console.timeEnd(`5 X ${TouchActionAnimationQueue.longestSprint}@${Smear.longestDragGap}`);\r\n // }});\r\n\r\n // controlThis.dragging = false;\r\n // return;\r\n\r\n // } \r\n\r\n\r\n controlThis.dragging = true;\r\n controlThis.canvasRef.current!.setPointerCapture(evt.pointerId);\r\n\r\n this.queue.queueAction({isStart: true, isFinish:false, ptStart: controlThis.getPointerLocation(evt), radius: FingerTip.normalizeTouchRadius(rad, this.props.FixedSize!==0, this.props.FixedSize, this.props.AvgLightRadius, this.props.AvgHeavyRadius), paintRadius: this.props.PaintRadius, color:this.props.Color});\r\n\r\n evt.preventDefault();\r\n };\r\n const pointerUp = (evt:React.PointerEvent) => {\r\n if (controlThis.props.Disabled) {\r\n return;\r\n }\r\n\r\n if (!controlThis.dragging) {\r\n return;\r\n }\r\n if (evt.button !== 0) {\r\n return;\r\n }\r\n\r\n controlThis.stopDragging(evt);\r\n evt.preventDefault();\r\n\r\n };\r\n \r\n return (\r\n
\r\n \r\n
\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default Smear;","import { Point2D } from \"./components/smash/utils\";\r\nconst smesshySplash =\r\n [{\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(42,107),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(45,105),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(46,109),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(51,109),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(56,109),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(58,105),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(44,101),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,105),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(51,106),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(51,88),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(48,93),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(46,100),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(44,107),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(42,117),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(42,124),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,123),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(57,113),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(64,104),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,94),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,88),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(75,82),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(68,80),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(57,81),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,84),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,86),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,93),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,94),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(47,102),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(47,109),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,116),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,119),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(60,120),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,120),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,115),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(75,108),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(70,102),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(63,102),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(57,104),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,109),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(81,122),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#438ed0\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(81,124),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#438ed0\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#438ed0\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(41,137),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#5290cb\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#5290cb\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#5290cb\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(87,97),\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 14\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 15\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 16\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 17\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 18\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 19\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 20\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(13,22),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(18,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(23,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(26,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(21,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(12,2),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(11,7),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(27,19),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,25),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(54,25),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(56,19),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(50,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(48,8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(54,8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(60,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(67,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(78,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(85,14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(93,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(97,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(98,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(102,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(107,10),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(114,10),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(121,11),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(127,11),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,11),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(157,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(161,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(190,14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(198,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(210,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(211,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(265,30),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(274,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(280,26),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(308,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(315,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(324,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(331,34),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,38),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,44),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,51),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(334,93),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,99),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,104),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,111),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,131),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,136),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,144),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(333,205),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,209),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,216),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(326,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(185,228),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(179,230),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(49,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(17,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,228),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(9,186),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(12,181),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,175),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,168),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(9,123),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(11,118),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(12,112),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(12,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(10,61),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,54),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(45,42),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,43),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,43),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(63,43),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(71,44),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(106,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(117,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(131,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(136,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(203,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(207,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(265,66),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,71),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(276,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(283,118),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(283,126),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(284,136),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(284,146),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(284,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(281,209),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,213),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(279,219),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(236,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(224,243),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(213,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(206,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(198,246),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(193,247),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(94,229),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(93,224),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(88,218),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(33,168),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,161),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,157),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(115,107),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(119,107),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,101),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(130,95),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(199,118),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(201,122),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,127),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(174,181),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(168,183),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(159,183),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(153,183),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(127,178),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(94,168),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(92,172),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(82,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(72,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(145,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(149,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(201,172),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(201,177),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(200,181),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(195,185),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(141,217),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(331,249),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,246),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(316,244),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,243),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(294,242),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(289,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(282,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(273,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(256,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(246,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(231,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(225,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(219,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(215,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(232,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(263,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(269,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(276,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(282,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(301,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,235),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(327,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,235),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(311,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(297,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(285,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(278,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(284,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(301,228),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,216),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(324,210),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(324,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(326,207),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,218),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(323,225),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(322,231),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,224),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,213),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(330,205),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,196),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,188),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,193),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,202),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,209),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,202),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,195),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,190),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,198),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(339,209),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,216),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,227),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(331,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(331,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,220),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,209),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,192),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,180),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,160),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,138),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,157),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,172),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,177),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,129),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(339,112),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,98),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,92),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,101),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,95),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,79),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,55),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,30),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,23),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(339,28),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(339,40),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,67),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,85),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,78),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,65),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,11),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,31),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,52),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(331,65),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,74),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,80),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,87),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,94),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(328,99),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(327,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(327,111),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(327,117),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,111),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,116),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,127),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(339,134),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(342,127),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(344,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(345,110),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(345,104),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(345,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(343,84),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,74),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(339,65),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,61),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,54),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,42),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,22),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,10),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,2),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,-4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,-9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(326,-9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,-8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,0),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(279,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(263,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(257,4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(246,1),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(234,-3),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(244,1),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(264,7),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(299,14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,3),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,-4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(208,-15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(195,-18),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,-18),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,-13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(197,-9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(209,-8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(224,-5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(229,-4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(217,12),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,12),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(226,12),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,12),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(260,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(275,18),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(283,20),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(277,20),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(263,19),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(236,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(218,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(209,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(215,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(229,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(257,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(268,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(280,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(295,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,23),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,23),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(274,23),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(251,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,16),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(180,12),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(160,12),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(146,12),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(138,10),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(127,8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(121,8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(117,8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(122,6),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(130,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(137,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(144,4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(128,-1),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(108,-5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(93,-8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(72,-12),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(56,-14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(50,-14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,-14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,-9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,-4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(21,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(25,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(30,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,6),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(54,6),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(61,6),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(51,10),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(59,14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(90,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(108,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(121,18),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(127,18),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(132,18),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(141,19),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(151,19),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(157,19),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(162,18),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(175,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(180,16),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(185,11),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(188,4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,-2),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(181,-5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(177,-5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(172,-3),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(167,0),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(162,4),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(157,5),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(153,6),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(147,8),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(138,9),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(132,13),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(127,16),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(123,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(117,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(110,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(97,22),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(85,24),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(74,27),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,31),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(60,35),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(55,38),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,35),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,30),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,25),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(33,19),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(24,18),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(18,24),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,35),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(8,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(7,58),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(10,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(10,59),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,68),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(8,74),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(11,64),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,52),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(15,39),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(15,33),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(12,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(10,28),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,43),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(8,61),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(8,69),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(8,75),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,83),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(11,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(11,112),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,130),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,138),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(16,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(16,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,123),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,111),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,104),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,99),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,137),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,148),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,157),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,168),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,178),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(18,183),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,188),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,176),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(4,167),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(3,160),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(1,154),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(-1,163),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(-2,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(4,171),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,160),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(12,147),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,140),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,127),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,137),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(10,162),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,178),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,194),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,208),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,226),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(16,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,222),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,216),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,211),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(11,221),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(8,228),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(7,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(3,247),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(2,252),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(2,257),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(7,257),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(12,257),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(18,257),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(24,257),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,260),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,260),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(48,259),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(54,258),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(63,258),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,259),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(90,261),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(97,263),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(102,264),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(108,262),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(113,259),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(38,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(52,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(61,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(82,242),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(54,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(36,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(25,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(21,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(16,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(28,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(46,241),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(72,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(99,249),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,253),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(145,256),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(153,257),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(161,258),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(167,258),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,258),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(180,258),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(165,256),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,243),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(178,243),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(184,243),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,246),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(198,249),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,253),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(212,254),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(179,246),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(168,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(157,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(149,245),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(137,243),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,243),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(126,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(144,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(150,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(141,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(128,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(117,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(110,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(105,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(112,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(121,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(134,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(154,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(180,243),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,248),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(222,253),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(240,258),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,261),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(258,263),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,263),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,263),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(275,261),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(283,256),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(288,255),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(49,43),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(46,54),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(43,60),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,66),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,71),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(44,62),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(42,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,58),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(33,62),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(34,56),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(38,28),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(24,44),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(22,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(20,70),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(20,80),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(21,85),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(31,83),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,73),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,83),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,100),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,118),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(55,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(64,122),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(72,117),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(75,108),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,84),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(60,85),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(36,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(46,115),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(55,103),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,78),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(70,93),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(75,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(81,85),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(91,76),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(97,69),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(103,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(105,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(103,39),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(98,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(92,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(81,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(70,68),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(61,82),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(56,92),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(70,90),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(92,83),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(86,79),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(67,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(62,96),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(61,101),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(71,93),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(76,83),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,76),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,71),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,69),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,91),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,115),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,118),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(55,113),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(60,106),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(55,101),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(47,99),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,104),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(30,114),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(26,128),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(31,127),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(36,117),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,101),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,85),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,93),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,106),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(36,119),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,125),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(44,137),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(52,125),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(59,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(60,92),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(57,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(57,114),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(57,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(58,127),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(63,130),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,131),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,131),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(54,152),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,157),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(57,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,120),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,80),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(75,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,115),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(78,117),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(85,114),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(90,106),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(93,101),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(89,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(79,123),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,128),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(84,126),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(94,118),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(104,107),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(118,101),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(124,96),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(122,90),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(108,84),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(105,76),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(124,60),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(129,73),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(136,73),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(147,71),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(158,68),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(174,67),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(184,67),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,67),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(148,56),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,56),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,56),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(121,56),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(147,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(163,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(175,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(164,45),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(172,45),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,46),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(207,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(224,52),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(231,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(222,45),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(203,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(150,28),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(135,28),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(129,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(145,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(152,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(145,34),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(136,35),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(129,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(137,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(145,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(165,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(195,39),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(157,58),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(168,56),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(179,56),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(186,55),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(175,54),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(159,54),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(142,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,59),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(128,61),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(122,67),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(103,67),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(85,69),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(75,72),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(85,65),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(96,58),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(119,50),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(129,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(142,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(158,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(167,48),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(179,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(185,46),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(196,45),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(201,42),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(209,42),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(233,45),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(276,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(272,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(253,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(246,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(250,42),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(258,39),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(240,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(229,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,35),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(208,31),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(203,29),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(218,34),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(275,45),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(287,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(302,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(295,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(270,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(263,55),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(276,66),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,73),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,78),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(295,78),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(290,78),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(285,78),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,84),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,90),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(278,98),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(271,100),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(189,117),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(193,112),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(200,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,100),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,91),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(209,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(191,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(184,100),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(208,103),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,103),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(201,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(176,100),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(134,94),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,92),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(121,87),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(140,87),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(161,87),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(174,88),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(181,90),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(190,95),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(202,90),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,84),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(229,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(239,80),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(253,80),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,80),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(282,83),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,85),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(296,86),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(287,82),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,73),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(194,73),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(181,75),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(191,73),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(179,75),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(188,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(193,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(198,77),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(220,100),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(228,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(273,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(277,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(271,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(256,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,103),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(266,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(251,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(270,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(277,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(286,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(297,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,98),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,98),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(279,113),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(290,116),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(302,119),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(315,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(327,122),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,123),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(345,124),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(286,131),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(290,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(295,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(300,137),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(307,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,150),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(330,143),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(323,131),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(317,126),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,125),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,125),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(300,129),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(297,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,140),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(289,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(288,159),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(288,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,143),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,135),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(300,148),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(303,140),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(303,148),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(302,161),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(302,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(49,212),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(58,212),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(68,212),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,212),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(87,212),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(92,211),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(80,206),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,204),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(56,201),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(47,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,199),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,199),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(33,191),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(33,186),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(39,177),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,183),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,189),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,194),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,199),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(51,186),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(67,176),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(81,167),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(89,163),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(95,159),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(100,154),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(73,168),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,164),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,159),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,168),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(59,173),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,160),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,152),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(62,163),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(56,173),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(50,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,186),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(62,182),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(81,172),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(101,157),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(116,141),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(126,125),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,135),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(122,143),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(119,150),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(117,155),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(122,144),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,137),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,133),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(89,144),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(89,137),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(94,129),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(100,122),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(107,119),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(112,118),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(117,118),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(128,115),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,113),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(137,111),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(147,111),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(164,114),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(175,114),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(160,117),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(141,117),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,115),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(142,107),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(163,101),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(178,97),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(185,93),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(179,97),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,104),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(165,113),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(159,117),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,145),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(122,158),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(113,170),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(119,172),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(126,168),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(121,171),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(108,184),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(105,190),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(105,185),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(102,180),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(97,180),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(89,184),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(82,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,197),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(67,202),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(61,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(71,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,203),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(93,203),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(102,207),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(107,210),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(111,207),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(129,199),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(145,195),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(175,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(184,192),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,187),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(138,182),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(122,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(101,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(96,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(92,188),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(94,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(107,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,203),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(136,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(143,207),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(148,209),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(148,213),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(137,214),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(124,212),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,212),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(101,213),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(103,221),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(113,222),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(129,225),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(145,225),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(161,227),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(176,227),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(182,226),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,227),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(199,227),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,227),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(215,229),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(233,229),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(247,229),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(253,229),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(259,225),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,221),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,217),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(275,215),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(280,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(282,201),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(280,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(277,213),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(275,218),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(280,203),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(283,195),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(286,183),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(287,172),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,185),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(280,198),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(279,209),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(286,202),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(300,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,169),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(307,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,199),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,210),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,201),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(315,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(318,172),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(318,179),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,196),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,194),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(317,179),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,162),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(323,153),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(319,166),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(318,172),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(322,157),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,142),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,133),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(324,139),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(323,164),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(322,169),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(312,180),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(314,173),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(316,166),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(323,133),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,113),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,97),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,85),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(324,80),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(317,90),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,101),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,108),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,113),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,98),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,77),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,51),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,21),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(306,37),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(304,49),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(299,73),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(299,78),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(303,63),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(308,41),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(306,53),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,69),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(303,81),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,68),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(320,56),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,44),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(327,37),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(323,44),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,50),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(318,56),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(315,61),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(306,45),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(299,32),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(293,23),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(280,29),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(268,43),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(254,56),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(236,72),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(230,77),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(238,70),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(250,61),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,65),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(238,73),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(227,82),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,81),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(207,78),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(195,78),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(190,80),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(190,85),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(193,90),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(198,97),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,107),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(210,112),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(213,117),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(214,125),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(214,134),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(214,141),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,122),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,116),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(189,121),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(185,126),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(179,136),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,144),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,151),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(165,162),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(166,155),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(168,143),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,129),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,124),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(162,131),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(154,143),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(147,156),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(144,161),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(149,149),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(154,138),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(149,148),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(146,154),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(147,159),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(153,161),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(161,161),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(196,159),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(224,149),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(240,133),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(250,119),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(253,107),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,115),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(244,125),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(239,135),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(236,143),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(236,127),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(236,108),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(230,110),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,121),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(213,130),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(209,137),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,140),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(198,141),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(192,143),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(187,149),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(191,153),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(198,153),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(208,149),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(224,133),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(232,119),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,107),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,97),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(243,92),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,103),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(233,113),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(228,126),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(226,134),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(235,122),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,109),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,101),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,111),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(253,125),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(254,137),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(259,131),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(263,117),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(268,97),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(270,80),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(270,71),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,83),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(264,88),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(262,93),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,84),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,94),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(263,107),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,122),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,137),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(263,152),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(268,169),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(273,182),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(274,189),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(271,194),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(266,197),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,199),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(255,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(256,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(259,191),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,182),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(199,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(192,198),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(180,196),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(167,194),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(162,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(168,192),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(178,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(190,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(220,197),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(231,198),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(192,196),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(204,197),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(234,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(239,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(225,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(212,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(192,199),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(186,197),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(181,197),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(174,198),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(199,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(210,209),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,211),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(233,213),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(239,213),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(244,209),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(252,208),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(258,208),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(264,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(267,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(268,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(268,172),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,166),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,168),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(255,176),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,184),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,189),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(242,181),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(236,189),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(233,194),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(229,207),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,192),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(244,175),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(252,154),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(254,148),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(253,155),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(252,161),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(248,162),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,171),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(238,178),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(234,165),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(231,155),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(227,150),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,160),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(210,177),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(206,196),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,201),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,190),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(225,180),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(231,170),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(235,165),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(243,160),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(246,173),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(246,186),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(247,196),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(248,201),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(255,191),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(259,180),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(261,170),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(262,164),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(259,180),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(257,194),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(257,202),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(262,195),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(267,178),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,163),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,151),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,142),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(262,146),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(257,151),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,156),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(244,158),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(239,158),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,149),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,132),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,117),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,109),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,117),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,126),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,131),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,140),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(247,145),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(255,148),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,153),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,165),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(292,176),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(300,186),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(304,194),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,204),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(314,204),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(317,192),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(319,186),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(316,196),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,202),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(312,212),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(304,208),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(297,206),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,206),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(285,209),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(285,215),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(292,218),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(297,220),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(302,217),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,213),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(311,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(316,203),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(322,205),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,213),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(345,217),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(349,221),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(351,226),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(351,233),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(350,238),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(343,242),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(337,245),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,238),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,233),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(340,227),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,222),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,217),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(330,220),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,221),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(249,221),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(202,221),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,221),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(143,223),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(124,227),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,230),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(104,231),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(93,231),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(87,231),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(79,229),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,229),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,229),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(56,229),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(51,230),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(46,233),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,233),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(34,234),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,234),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(25,234),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(25,226),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(27,220),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(30,207),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(32,200),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(32,189),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(30,193),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,198),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,203),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,185),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(47,165),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(56,144),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(62,127),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(65,118),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(67,113),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,108),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(79,105),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(88,105),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(98,105),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(118,100),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(126,93),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,88),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(137,82),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(140,77),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(141,72),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(141,66),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(132,57),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,55),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(90,57),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,61),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(55,67),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(48,73),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,81),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,85),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(51,76),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(58,64),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(67,47),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(70,29),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(71,20),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(63,21),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,33),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(44,45),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(38,53),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,57),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(44,65),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(61,73),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(84,78),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(105,81),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(125,81),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(147,79),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(169,77),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(197,76),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(204,75),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(213,73),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(220,72),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(226,70),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(228,65),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(226,61),\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 14\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 15\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 16\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 17\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 18\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 19\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 20\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 21\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 22\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 23\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 24\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 25\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 26\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 27\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 28\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 29\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 30\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 30\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 30\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 30\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 30\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 30\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 30\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(49,75),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(50,74),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,69),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,64),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(53,58),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(52,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(50,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,47),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(42,55),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(44,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(43,44),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,39),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(34,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(24,33),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,33),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,35),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(7,45),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,50),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(4,55),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(1,62),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(27,46),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(5,51),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(6,58),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,67),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(5,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,85),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(6,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(7,94),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(8,100),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(11,107),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,111),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(18,116),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(23,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(25,119),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,123),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,128),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(42,129),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(3,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,193),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(6,197),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(8,202),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(14,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(18,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(23,202),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(27,201),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(37,195),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,191),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(43,186),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,181),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(41,162),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(43,157),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(37,133),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(37,146),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(40,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,150),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,155),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,160),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,166),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,171),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(36,176),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,181),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,188),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,193),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(33,197),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(28,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(23,197),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,197),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(10,192),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,197),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(18,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(23,197),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,193),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(33,188),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,179),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,164),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,159),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(42,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(42,146),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(42,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(42,135),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,129),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,124),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,119),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(31,113),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(27,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(23,106),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(18,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,92),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,85),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(17,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,76),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(12,71),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,65),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,60),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,54),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(5,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(9,44),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(14,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(23,46),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(28,49),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(35,51),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,52),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(45,53),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(63,197),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(67,196),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(70,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,183),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(75,177),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(76,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,168),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(73,161),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,167),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(71,174),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,179),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,184),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(82,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(86,150),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(90,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(93,158),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(93,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(90,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(114,198),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(114,193),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(111,184),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,178),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(110,160),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(111,154),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(110,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(102,143),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(89,158),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(89,163),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(89,168),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(90,170),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(100,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(104,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(109,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(113,150),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(113,157),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(115,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(115,170),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(117,176),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(66,185),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(66,180),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(66,175),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(66,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(66,164),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(67,159),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,154),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(69,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(73,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 14\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 15\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 16\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(140,167),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(144,167),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(149,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(154,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(159,164),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(163,159),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(163,154),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(160,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(157,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(152,142),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(145,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(139,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(134,146),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(136,147),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(141,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(146,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(153,144),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(160,144),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(165,146),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(170,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(131,161),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(132,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(135,174),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(136,179),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(137,185),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(137,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(149,192),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(153,192),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(157,191),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(163,187),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 14\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 15\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(128, 2, 46)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 16\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(205,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(200,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(195,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,146),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,151),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(187,157),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(186,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(191,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(197,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(201,171),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(207,176),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(212,178),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(179,196),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(181,200),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(186,201),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(192,201),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(197,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(207,180),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,184),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(203,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 14\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 15\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 16\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"black\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 17\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(244,144),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(233,152),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(234,156),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(234,161),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,171),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(253,178),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(229,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(233,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(243,201),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(248,196),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(250,191),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(239,194),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(246,205),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(250,205),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(256,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(260,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"white\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(278,136),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(278,140),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(278,151),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(280,156),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,161),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,174),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,179),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,184),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,190),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,195),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(283,201),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(284,205),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(285,210),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(287,185),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(290,179),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(296,175),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(301,175),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,177),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(310,180),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(312,185),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,190),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(314,197),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(312,202),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(306,178),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,184),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(312,194),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(312,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(311,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(281,195),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,209),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(13, 27, 68)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 14\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(307,113),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,117),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(311,122),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,127),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(315,132),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(317,137),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(319,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,148),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(322,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(325,141),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,137),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,131),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,126),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(339,115),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(341,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(343,104),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(328,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(330,161),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,166),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,171),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,176),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,182),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,187),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,193),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(331,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(331,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(184,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(188,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(193,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(200,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(206,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(216,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(226,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(231,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(221,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(225,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(233,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(239,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(251,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(256,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(265,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(276,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(286,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(297,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(317,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(322,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(327,227),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,222),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(309,229),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(313,225),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(319,221),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(324,217),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(326,209),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,201),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(335,196),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(339,191),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(336,174),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,183),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,190),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,195),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,201),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(330,205),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(328,210),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,217),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(318,227),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(314,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(309,235),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(303,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(296,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(286,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(279,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(274,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(267,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(257,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(253,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(247,234),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(237,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(230,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(225,230),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(220,229),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(214,229),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(209,228),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(203,228),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(195,231),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(190,231),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(185,231),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(180,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(188,235),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(201,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(214,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(220,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(231,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(236,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(241,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(247,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(255,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(260,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(265,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,238),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(274,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(281,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(286,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(291,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(298,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(305,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(311,228),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(315,221),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(318,217),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(325,211),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(328,205),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(336,193),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(338,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(329,163),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(329,167),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(330,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,180),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,185),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(334,192),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(333,201),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(332,206),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(330,211),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(328,216),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(321,221),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(317,225),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(307,230),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(301,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(295,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(288,239),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(277,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(269,240),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(259,237),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(252,236),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(245,235),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(238,233),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(231,232),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(225,231),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(220,229),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(215,229),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(209,229),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(203,230),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 14\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 15\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 16\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(83,184),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(296,195),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(294,200),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(150,154),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(198,158),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(205,158),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(237,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(241,188),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(225,183),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(248,156),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(246,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(23,175),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(25,175),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(25,69),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(26,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(1, 1, 1)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(1, 1, 1)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(77,179),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(77,174),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(74,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(94,181),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(98,177),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(101,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(101,168),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(102,163),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(134,209),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(135,204),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(133,199),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(130,194),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(130,189),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(187,41),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(192,37),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(199,30),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(204,26),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(207,21),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(205,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(201,16),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(196,16),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(189,15),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(183,14),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(177,17),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,19),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(173,24),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(191,35),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(182,44),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(179,50),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(177,57),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"#1a5597\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(217,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(220,177),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,181),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(221,175),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(219,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(211,160),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(215,163),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,169),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(217,173),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(21,149),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(19,144),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(16,138),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(20,145),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(22,151),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(25,157),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(26,147),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(8,126),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(10,130),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(13,136),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(16,142),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(20,147),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(25,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(28,158),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,153),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,160),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(29,165),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(29,89),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(31,93),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(33,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(36,102),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,105),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(47,111),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(48,116),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(49,121),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(44,118),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(41,113),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(40,109),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(37,104),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(33,97),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(31,93),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 2,\r\n \"pt\": new Point2D(26,88),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(21,81),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(187,184),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(186,185),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 1,\r\n \"pt\": new Point2D(184,185),\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 9\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 10\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 11\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 12\r\n },\r\n {\r\n \"kind\": 3\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 13\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 14\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n },\r\n {\r\n \"kind\": 5,\r\n \"rad\": 15\r\n },\r\n {\r\n \"kind\": 4,\r\n \"color\": \"rgb(252, 211, 0)\"\r\n }]\r\nexport { smesshySplash };","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport { Navigate } from 'react-router-dom';\r\nimport { SmesshyPushy, SmesshyPushyState, SmesshyPushyProps } from '../smesshyCommon';\r\n\r\nexport interface IconRef {\r\n designSize: number;\r\n svgGroupElement: JSX.Element;\r\n}\r\n\r\n//\r\n//\r\n//\r\n\r\nexport type IconRefFactory = (arg:string|undefined)=>IconRef;\r\n\r\nconst IconClose: IconRefFactory = (arg:string|undefined)=>{return { designSize: 32, svgGroupElement: }};\r\nconst IconPlus: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: }};\r\nconst IconSample: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement:}};\r\nconst IconEmpty: IconRefFactory = (arg:string|undefined)=>{return { designSize: 32, svgGroupElement: }};\r\nconst IconSplotch: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n }};\r\nconst IconPalette: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n \r\n \r\n \r\n }};\r\nconst IconPainting: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }};\r\n \r\nconst IconUpload: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n \r\n }};\r\n\r\nconst IconFinger: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: }};\r\n\r\nconst IconBlow: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }};\r\n\r\n const IconSetting: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: }};\r\n\r\nconst IconTrash: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }};\r\n\r\nconst IconUndo: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n }};\r\n\r\nconst IconStop: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n \r\n \r\n \r\n }};\r\n\r\n\r\nconst IconPlay: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n \r\n }};\r\n\r\nconst IconPhoto: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }};\r\n\r\nconst IconBookmark: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n \r\n \r\n }};\r\nconst IconBookmarked: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n \r\n \r\n }};\r\n \r\nconst IconLike: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n \r\n \r\n }};\r\nconst IconLikeRed: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n\r\n \r\n}};\r\n\r\nconst IconSelect: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n\r\n \r\n \r\n}};\r\n\r\nconst IconSelected: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n\r\n \r\n \r\n}};\r\n \r\nconst IconRefresh: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n\r\n \r\n}};\r\n \r\nconst IconOffended: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}};\r\nconst IconOffendedFilled: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}};\r\n \r\nconst IconSuspect: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n\r\n ?!?\r\n}};\r\n\r\nconst IconSuspectYes: IconRefFactory = (arg:string|undefined)=>{return { designSize: 64, svgGroupElement: \r\n\r\n !?!\r\n}};\r\n\r\nconst IconKnife: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n \r\n }};\r\n\r\nconst IconStartWith: IconRefFactory = (arg:string|undefined)=>{return { designSize: 256, svgGroupElement: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }};\r\n\r\nfunction SvgUp(height: string) { \r\n return (\r\n \r\n \r\n );\r\n}\r\nfunction SvgDown(height: string) { \r\n return (\r\n \r\n \r\n );\r\n}\r\n \r\nexport {IconEmpty};\r\nexport {IconPhoto};\r\nexport {IconPlay};\r\nexport {IconUndo};\r\nexport {IconClose};\r\nexport {IconPlus};\r\nexport {IconSample};\r\nexport {IconSplotch};\r\nexport {IconPalette};\r\nexport {IconPainting};\r\nexport {IconUpload};\r\nexport {IconFinger};\r\nexport {IconBlow};\r\nexport {IconKnife};\r\nexport {IconSetting};\r\nexport {IconTrash};\r\nexport {IconStop};\r\nexport {IconBookmark};\r\nexport {IconBookmarked};\r\nexport {IconLike};\r\nexport {IconLikeRed};\r\nexport {IconSelect};\r\nexport {IconSelected};\r\nexport {IconRefresh};\r\nexport {IconOffended};\r\nexport {IconOffendedFilled};\r\nexport {IconSuspect};\r\nexport {IconSuspectYes};\r\nexport {IconStartWith};\r\nexport {SvgUp};\r\nexport {SvgDown};\r\n\r\nconst ScaledIcon = (icon: IconRef, width: number): JSX.Element => {\r\n\r\n return (\r\n \r\n {icon.svgGroupElement}\r\n \r\n );\r\n}\r\nexport { ScaledIcon };\r\n\r\nexport interface IconButtonState extends SmesshyPushyState {\r\n loading: boolean;\r\n touchWeight: number;\r\n\r\n}\r\nexport interface IconButtonProps extends SmesshyPushyProps {\r\n Tag: string,\r\n IconRef: IconRef;\r\n Height: number;\r\n}\r\n\r\nclass IconButton extends SmesshyPushy(Component) {\r\n\r\n constructor(props: IconButtonProps) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n touchWeight: 0,\r\n currentPushedState: props.StartPushedState\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n let controlThis = this;\r\n this.setState({ loading:false});\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (prevProps.StartPushedState !== this.props.StartPushedState) {\r\n this.setState({currentPushedState: this.props.StartPushedState})\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.abandonPress();\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n \r\n return (\r\n
controlThis.onClick(e, this.props)}\r\n onContextMenu={(e:React.MouseEvent)=> controlThis.onContext(e, this.props)}\r\n onPointerDown={(e:React.PointerEvent) => {controlThis.startPress(e, this.props)}}\r\n onPointerUp={(e:React.PointerEvent) => {controlThis.finishPress(e, this.props)} }\r\n onPointerMove={(e:React.PointerEvent) => controlThis.pointerMove(e, this.props)}\r\n onPointerCancel={(e:React.PointerEvent) => controlThis.cancelPress(e, this.props)}\r\n >\r\n\r\n\r\n {ScaledIcon(this.props.IconRef, this.props.Height)}\r\n \r\n\r\n\r\n
\r\n\r\n );\r\n }\r\n}\r\n\r\nexport interface CloseButtonState {\r\n doClose: boolean;\r\n}\r\nexport interface CloseButtonProps {\r\n AppObject: App;\r\n navTo: any;\r\n Haptic: boolean;\r\n Height: number;\r\n}\r\n\r\nexport class CloseButton extends Component {\r\n\r\n constructor(props: CloseButtonProps) {\r\n super(props);\r\n\r\n this.state = {\r\n doClose: false\r\n };\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n if (this.state.doClose === true) {\r\n let navTo = this.props.navTo;\r\n if (navTo === -1 && window.history.length === 1) {\r\n navTo = '/';\r\n }\r\n return \r\n }\r\n\r\n return (\r\n {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n this.setState({doClose:true})\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Haptic = {this.props.Haptic}\r\n Height={this.props.Height}\r\n />\r\n );\r\n }\r\n\r\n}\r\n\r\nexport interface VoteButtonState extends SmesshyPushyState {\r\n loading: boolean;\r\n\r\n}\r\nexport interface VoteButtonProps extends SmesshyPushyProps {\r\n Tag: string,\r\n Value: string\r\n}\r\n\r\nexport class VoteButton extends SmesshyPushy(Component) {\r\n\r\n constructor(props: VoteButtonProps) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n currentPushedState: props.StartPushedState\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n let controlThis = this;\r\n this.setState({ loading:false});\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (prevProps.StartPushedState !== this.props.StartPushedState) {\r\n this.setState({currentPushedState: this.props.StartPushedState})\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.abandonPress();\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n \r\n return (\r\n
controlThis.onClick(e, this.props)}\r\n onContextMenu={(e:React.MouseEvent)=> controlThis.onContext(e, this.props)}\r\n onPointerDown={(e:React.PointerEvent) => {controlThis.startPress(e, this.props)}}\r\n onPointerUp={(e:React.PointerEvent) => {controlThis.finishPress(e, this.props)} }\r\n onPointerMove={(e:React.PointerEvent) => controlThis.pointerMove(e, this.props)}\r\n onPointerCancel={(e:React.PointerEvent) => controlThis.cancelPress(e, this.props)}\r\n >\r\n\r\n\r\n {this.props.Value}\r\n\r\n
\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default IconButton;","import React, { Component, useEffect } from 'react';\r\nimport { App } from '../App'\r\nimport IconButton, {CloseButton, IconRefresh} from './iconButton';\r\nimport FingerTip from './smash/fingertip';\r\nimport Toggle from 'react-toggle'\r\nimport { Link, createSearchParams } from 'react-router-dom';\r\nimport { Footer } from '../smesshy';\r\nimport Smessage from './smessage';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState, SmesshyNavigateOptions } from '../smesshyCommon';\r\nimport { PaintingInfo, SmesshyUserPreferences } from '../storageManager';\r\nimport { UserPreferences } from 'typescript';\r\nimport { SmesshySubButton } from './smesshyButton';\r\n\r\nexport interface GamePageState extends SmesshyCommonState {\r\n trigger: number,\r\n login: boolean,\r\n authFinished: boolean,\r\n}\r\nexport interface GamePageProps extends SmesshyCommonProps {\r\n ShowHeader : boolean;\r\n ShowRefresh: boolean;\r\n RequireAuth: boolean;\r\n OnPopulateAuthenticationState?: (authenticated: boolean)=>void;\r\n Title?: JSX.Element;\r\n CloseNav?: string | number | undefined;\r\n ShowFooter: boolean;\r\n Body: JSX.Element;\r\n}\r\n\r\nclass GamePage extends SmesshyCommon(Component) {\r\n\r\n mainRef : React.RefObject;\r\n\r\n constructor(props: GamePageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.mainRef = React.createRef();\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n doRefresh: false,\r\n trigger:0,\r\n login:false,\r\n authFinished: false,\r\n };\r\n }\r\n\r\n resizeListener :(((ev: UIEvent)=>void) | undefined) = undefined;\r\n componentDidMount() {\r\n STrace.addStep('gamePage', 'didMound', '');\r\n\r\n let controlThis = this;\r\n if (this.props.RequireAuth === true || this.props.OnPopulateAuthenticationState !== undefined) {\r\n this.pushWaitingFrame(this);\r\n this.executeAsync(async ()=> {\r\n STrace.addStep('gamePage', 'initAuth', '');\r\n await controlThis.initAuthentication(controlThis, controlThis.props.RequireAuth === true);\r\n controlThis.popWaitingFrame();\r\n });\r\n } \r\n\r\n this.executeWhenSafe(()=>{\r\n this.checkVersion();\r\n });\r\n }\r\n componentWillUnmount(): void {\r\n if (this.props.RequireAuth === true || this.props.OnPopulateAuthenticationState !== undefined) {\r\n this.termAuthentication();\r\n }\r\n }\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any): void {\r\n let controlThis = this;\r\n if (this.props.RequireAuth === true || this.props.OnPopulateAuthenticationState !== undefined) {\r\n if (!(prevProps.RequireAuth === true || prevProps.OnPopulateAuthenticationState !== undefined)) {\r\n this.executeAsync(async ()=> {\r\n STrace.addStep('gamePage', 'initAuth', '');\r\n await this.initAuthentication(controlThis, prevProps.RequireAuth === true);\r\n });\r\n }\r\n } else {\r\n if ((prevProps.RequireAuth === true || prevProps.OnPopulateAuthenticationState !== undefined)) {\r\n this.termAuthentication();\r\n }\r\n }\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n\r\n this.setState({authFinished:true});\r\n\r\n if (authenticated) {\r\n if (this.props.OnPopulateAuthenticationState !== undefined) {\r\n await this.props.OnPopulateAuthenticationState(authenticated);\r\n }\r\n } else {\r\n if (this.props.RequireAuth === true) {\r\n this.setState({login:true});\r\n } else {\r\n if (this.props.OnPopulateAuthenticationState !== undefined) {\r\n await this.props.OnPopulateAuthenticationState(authenticated);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n let login =
\r\n
\r\n You will need to sign in or create a Smesshy account to use this page.\r\n
\r\n Take me to 'Settings' to 'Sign In'}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({ navigateTo: {To:{pathname:'/settings'}}});\r\n return true;\r\n }}\r\n />\r\n
\r\n\r\n let checkingAuth =
\r\n
\r\n Looking up your account details...\r\n
\r\n
\r\n\r\n let authStateResult = <> ;\r\n if (this.props.RequireAuth === true || this.props.OnPopulateAuthenticationState !== undefined) {\r\n if (this.state.authFinished === false) {\r\n authStateResult = checkingAuth;\r\n } else {\r\n if (this.state.login === true) {\r\n authStateResult = login;\r\n } else {\r\n authStateResult = this.props.Body;\r\n }\r\n }\r\n } else {\r\n authStateResult = this.props.Body;\r\n }\r\n\r\n return this.renderFramework(\r\n
\r\n {this.props.ShowHeader ? \r\n
\r\n
\r\n {this.props.Title}\r\n
\r\n
\r\n {this.props.ShowRefresh === true ? {}} OnPressTick={()=>{}}\r\n Height={this._app!.GetScaledPxHeight(31)}\r\n OnPressFinish={async (): Promise=>{\r\n this.setState({doRefresh:true})\r\n return true;\r\n }}/> : <>}\r\n {this.props.CloseNav === undefined ? ' ' : }\r\n
\r\n
:\r\n <>\r\n }\r\n {authStateResult}\r\n {this.props.ShowFooter ? Footer : <>}\r\n
, this.state);\r\n }\r\n}\r\n\r\nexport default GamePage;","const randoFacts = [\r\n `Banging your head against a wall for one hour burns 150 calories.`,\r\n `In Switzerland, it is illegal to own just one guinea pig.`,\r\n `The color orange was actually named after oranges.`,\r\n `Snakes can predict earthquakes.`,\r\n `Crows often hold grudges against specific people.`,\r\n `The oldest \"your mom\" joke was discovered on a 3,500-year-old Babylonian tablet.`,\r\n `You get Goosebumps when you're scared to make yourself look bigger.`,\r\n `May 29 is officially \"Put a Pillow on Your Fridge Day.\"`,\r\n `Cherophobia is the irrational fear of fun or happiness.`,\r\n `7% of American adults believe that chocolate milk comes from brown cows.`,\r\n `If you lift a kangaroo's tail off the ground, it can't hop.`,\r\n `Bananas are curved because they grow towards the sun.`,\r\n `Most Korean people don't have armpit odor.`,\r\n `The original London Bridge is now in Arizona.`,\r\n `During your lifetime, you will produce enough saliva to fill 50 bathtubs.`,\r\n `Polar bears could eat as many as 10 penguins in a single sitting…`,\r\n `Car manufacturer Volkswagen makes sausages.`,\r\n `Movie trailers were originally shown after the movie, which is why they're called \"trailers.\"`,\r\n `Hawaiian pizza is a Canadian invention.`,\r\n `The smallest bone in your body is in your ear.`,\r\n `Tennis players can be fined up to $20,000 for swearing while playing at Wimbledon.`,\r\n `Only 5% of the ocean has been explored.`,\r\n `Most people fart around 14 to 23 times a day!`,\r\n `There is a species of spider called the Hobo Spider.`,\r\n `A lion's roar can be heard from 5 miles away.`,\r\n `Saint Lucia is the only country in the world named after a woman.`,\r\n `The national animal of Scotland is a unicorn.`,\r\n `The United States Navy used Xbox controllers for their periscopes.`,\r\n `The word \"burrito\" means \"little donkey\" in Spanish.`,\r\n `A baby octopus is about the size of a flea when it is born.`,\r\n `A sheep, a duck, and a rooster were the first passengers to take a trip in a hot air balloon.`,\r\n `In Uganda, around 48% of the population is under 15 years of age.`,\r\n `On average, men get bored of a shopping trip after 26 minutes.`,\r\n `In the 16th Century, Turkish women could initiate divorce if their husbands didn't provide enough coffee.`,\r\n `After the premiere of 16 and Pregnant, teen pregnancy rates dropped.`,\r\n `Squirrels cause approximately 10-20% of US power outages.`,\r\n `Facebook, Instagram, and Twitter are all banned in China.`,\r\n `95% of people text things they could never say in person.`,\r\n `Honeybees can recognize human faces.`,\r\n `The Battle of Hastings didn't actually take place in Hastings.`,\r\n `Human blood cells have different lifespans.`,\r\n `A swarm of 20,000 bees followed a car for two days because their queen was stuck inside.`,\r\n `Eating carrots can turn your skin orange.`,\r\n `A crocodile can't poke its tongue out.`,\r\n `Sea otters hold hands when they sleep so they don't drift away from each other.`,\r\n `A small child could swim through the veins of a blue whale.`,\r\n `The word \"y'all\" dates back to at least 1631.`,\r\n `J.K. Rowling chose the unusual name \"Hermione\" so young girls wouldn't be teased for being nerdy.`,\r\n `Hewlett-Packard's (also known as HP) name was decided in a coin toss in 1939.`,\r\n `There are a total of 1,710 steps in the Eiffel Tower.`,\r\n `The names of the Pokémon Hitmonlee and Hitmonchan are based on Bruce Lee and Jackie Chan.`,\r\n `Pigs are considered to be the world's fifth-smartest animal.`,\r\n `Pirates wore earrings because they believed they improved their eyesight.`,\r\n `Los Angeles original name is \"El Pueblo de Nuestra Senora la Reina de Los Angeles de Porciuncula.\"`,\r\n `The Twitter bird actually has a name - Larry.`,\r\n `Octopuses actually have six arms and two legs!`,\r\n `Pound cake got its name because the original recipe contained a pound of butter, sugar, flour, and eggs.`,\r\n `The German chocolate cake has nothing to do with Germany. A Texan invented the cake and used baking chocolate named after the creator, Sam German.`,\r\n `Mike Tyson once offered a zoo attendant $10,000 to let him fight a gorilla.`,\r\n `ABBA turned down 1 billion dollars to do a reunion tour.`,\r\n `Abraham Lincoln fed his cat with a gold fork.`,\r\n `There is a nut on a helicopter nicknamed the \"Jesus Nut.\"`,\r\n `Some insects and small birds see the world in slow motion.`,\r\n `A goat called William Windsor served as a Lance Corporal in the British Army.`,\r\n `The most venomous jellyfish in the world is the Irukandji.`,\r\n `March 20th is known as Snowman Burning Day.`,\r\n `Queen Elizabeth II wasn't allowed to sit on the Iron Throne from Game of Thrones.`,\r\n `There is an official Wizard of New Zealand.`,\r\n `An apple, potato, and onion taste the same if you eat them with your nose plugged.`,\r\n `The longest word you're likely to encounter on an everyday basis is \"uncharacteristically.\"`,\r\n `A company in Poland makes dinnerware out of wheat so you can eat your plate!`,\r\n `The average person walks the equivalent of five times around the world in their lifetime.`,\r\n `Michael Jackson offered to make a Harry Potter musical, but the offer was rejected.`,\r\n `The world record for stuffing drinking straws into your mouth at once is 650.`,\r\n `Nutella was invented shortly after WWII ended because chocolate was so expensive.`,\r\n `North Korea has its own space program.`,\r\n `According to Genesis 1:20-22, the chicken came before the egg.`,\r\n `Ants leave maps for other ants when they walk.`,\r\n `Tears contain a natural painkiller, which reduces pain and improves your mood.`,\r\n `Saturn is the only planet in our solar system that could float in water.`,\r\n `Male cats have longer tails than female cats.`,\r\n `Dolly Parton lost in a Dolly Parton look-alike contest.`,\r\n `George W. Bush was once a cheerleader.`,\r\n `In total, there are 205 bones in the skeleton of a horse.`,\r\n `Coca-Cola once bought all the website URLs that can be read as ahh, all the way up to 62 h's.`,\r\n `Each year there are more than 40,000 toilet-related injuries in the US.`,\r\n `Strawberries can be red, yellow, green, or white.`,\r\n `Walt Disney World is the second-largest buyer of fireworks in the US.`,\r\n `Four people lived in a home for six months infested with over 2,000 venomous spiders.`,\r\n `If you fell into a volcano, you'd float on the lava instead of melting.`,\r\n `The giant stone heads on Easter Island have hidden bodies!`,\r\n `Kleenex tissues were originally used as filters in gas masks.`,\r\n `In 1998, Sony accidentally sold 700,000 camcorders that could see through people's clothes.`,\r\n `During your lifetime, you will spend around seventy-nine days brushing your teeth.`,\r\n `Ronald McDonald is \"Donald McDonald\" in Japan because it makes pronunciation easier for the Japanese.`,\r\n `Three presidents, all Founding Fathers—John Adams, Thomas Jefferson, and James Monroe—died on July 4. Presidents Adams and Jefferson also died the same year, 1826; President Monroe died in 1831.`,\r\n `The Barbie doll's full name is Barbara Millicent Roberts, from Willows, Wisconsin. Her birthday is March 9, 1959, when she was first displayed at the New York Toy Fair.`,\r\n `There actually aren't \"57 varieties\" of Heinz ketchup, and never were. Company founder H.J. Heinz thought his product should have a number, and he liked 57.`,\r\n `The 10th US President, John Tyler born in 1790, has a grandson who is still alive today. President Tyler was 63 when his son Lyon Tyler was born in 1853; Lyon's son was born when he was 75. President Tyler's living grandson, Harrison Tyler is 94. Lyon's other son Lyon Jr. passed away in 2020 at the age of 95. The Tyler family still maintains the President's home, Sherwood Forest Plantation in Virginia.`,\r\n `The tallest man ever recorded was American giant Robert Wadlow (1918-1940), who stood 8 feet 11 inches. Wadlow's size was the result of an abnormally enlarged pituitary gland.`,\r\n `The oldest person ever to have lived (whose age could be authenticated), a French woman named Jeanne Louise Calment, was 122 years old when she died in 1997.`,\r\n `Sliced bread was first manufactured by machine and sold in the 1920s by the Chillicothe Baking Company in Missouri.`,\r\n `The Earl of Sandwich, John Montagu, who lived in the 1700s, reportedly invented the sandwich so he wouldn't have to leave his gambling table to eat`,\r\n `The first college football game was played on November 6, 1869, between Rutgers and Princeton (then known as the College of New Jersey) in New Brunswick, New Jersey. Rutgers won.`,\r\n `Experiments in universities have actually been carried out to figure out how many licks it takes to get to the center of a Tootsie Pop, both with machine and human lickers. The results ranged from 252 to 411.`,\r\n `Canada is south of Detroit.`,\r\n `The original name for the search engine Google was Backrub. It was renamed Google after the googol, which is the number one followed by 100 zeros.`,\r\n `The oldest-known living land animal is a tortoise named Jonathan, who is about to turn 190 years old. He was born in 1832 and has lived on the island of St. Helena in the Atlantic Ocean since 1882.`,\r\n `Bats are the only mammal that can actually fly.`,\r\n `Wombats are the only animal whose poop is cube-shaped. This is due to how its intestines form the feces. The animals then stack the cubes to mark their territory.`,\r\n `The most common wild bird in the world isn't the sparrow or blue jay—it's the red-billed quelea, which live in Africa and have an estimated population of 1.5 billion.`,\r\n `The heart of the blue whale, the largest animal on earth, is five feet long and weighs 400 pounds. The whale in total weighs 40,000 pounds.`,\r\n `Elephants can't jump.`,\r\n `Octopuses have three hearts.`,\r\n `Cows don't actually have four stomachs; they have one stomach with four compartments.`,\r\n `The platypus doesn't have a stomach at all: Their esophagus goes straight to their intestines.`,\r\n `Polar bears have black skin. And actually, their fur isn't white—it's see-through, so it appears white as it reflects light.`,\r\n `Tigers' skin is actually striped, just like their fur. Also, no two fur patterns are alike.`,\r\n `Flamingoes are only pink because of chemicals called carotenoids in the algae and fish (which also eat the algae) they eat; their feathers are grayish-white when they're born.`,\r\n `Mosquitoes are the deadliest animal in the world: They kill more people than any other creature, due to the diseases they carry.`,\r\n `Psycho was the first movie to show a toilet flushing.`,\r\n `One of the most famous movie lines in history was never said. We often quote, \"Play it again, Sam,\" from Casablanca; but the real line is, \"Play it, Sam. Play 'As Time Goes By.'\"`,\r\n `The green code in The Matrix was actually created from symbols in the code designer's wife's sushi cookbook.`,\r\n `The wedding of Princess Diana and Prince Charles was watched by 750 million people worldwide in 1981; sadly, 2.5 billion watched her funeral in 1997.`,\r\n `There are no muscles in your fingers: Their function is controlled by muscles in your palms and arms.`,\r\n `It's impossible to hum while holding your nose.`,\r\n `All of an adult human's blood vessels, if laid out end to end, would be about 100,000 miles, so they could encircle the earth four times.`,\r\n `According to recent research, the human nose can distinguish at least a trillion different odors.`,\r\n `The longest fingernails ever were over 42 feet in total and belonged to American Diana Armstrong, recognized as the new record holder in March 2022. The previous record was held by American Lee Redmond, with fingernails over 28 feet in total.`,\r\n `The origin of the word \"sinister\" reflects a historical bias against left-handed people. It comes from the Latin word for \"left,\" which was also seen to be unlucky or evil.`,\r\n `The word \"strengths\" is the longest word in the English language with only one vowel.`,\r\n `The original title of Jane Austen's Pride and Prejudice was First Impressions.`,\r\n `Mary Shelley wrote Frankenstein when she 18, during a ghost story competition while staying in Switzerland with writers Percy Shelley (her lover) and Lord Byron.`,\r\n `Almost all commercially grown artichokes (99.9 percent) come from California. One town in particular, Castroville, is nicknamed \"the Artichoke Capital of the World.\"`,\r\n `The different colors of Froot Loops cereal all taste the same—they're not individual flavors.`,\r\n `What's inside a Kit Kat? Broken Kit Kats that are damaged during production—they get ground up and go between the wafers inside, along with cocoa and sugar.`,\r\n `Nobody will ever see this one, right?`\r\n ];\r\n\r\nfunction PickRandomFact() : string {\r\n let i = Math.min(Math.floor(Math.random() * randoFacts.length), randoFacts.length-1);\r\n return randoFacts[i];\r\n}\r\nexport default PickRandomFact","import { timeout } from \"workbox-core/_private\";\r\nimport {App} from \"./App\";\r\nimport { UserPreferences } from \"typescript\";\r\nimport ImageLocate from \"./components/imageLocate\";\r\nimport { STrace, SmesshyTrace } from \"./smesshyCommon\";\r\n\r\n\r\nexport interface SmesshyUserPreferences {\r\n autoApprove?: boolean | undefined;\r\n defaultPublic?: boolean | undefined;\r\n notifications?: string | undefined;\r\n}\r\nexport interface ChallengeRules {\r\n stamps: boolean;\r\n timeLimit: number;\r\n styleGuide: string;\r\n colorRestrictions: Array;\r\n startingWith: string;\r\n}\r\nexport interface ChallengeState {\r\n challengeId: number;\r\n state: string;\r\n title: string;\r\n prizePool: number;\r\n timeLeft: number;\r\n roundTimeLeft: number;\r\n voteRoundsTotal: number;\r\n voteRoundCurrent: number;\r\n entries: number;\r\n stampAllowed: boolean;\r\n rules: ChallengeRules;\r\n}\r\nexport const UnknownChallengeState: ChallengeState = {challengeId:-1, state:'unknown', prizePool:0, timeLeft: 0, roundTimeLeft:0, title:'(refresh)', stampAllowed:false, entries:0, voteRoundCurrent:0, voteRoundsTotal:0, rules:{stamps:false, timeLimit:0, styleGuide:'', colorRestrictions:[], startingWith:''}};\r\n\r\nexport interface ChallengeResult {\r\n challengeId?: number;\r\n title: string;\r\n place1?: PaintingLocate;\r\n place2?: PaintingLocate;\r\n place3?: PaintingLocate;\r\n voterSelected?: string;\r\n}\r\n\r\nexport interface VoteRoundStatus {\r\n voteRoundsTotal: number;\r\n voteRoundCurrent: number;\r\n userStatus: string;\r\n roundSecondsLeft: number;\r\n}\r\n\r\nexport interface ArtistStats {\r\n asOf: string;\r\n level: string;\r\n totalPaintings: number;\r\n totalFavoredByFollowers: number;\r\n totalFavoredByOthers: number;\r\n totalOffend: number;\r\n totalOffendedBy: number;\r\n totalSuspect: number;\r\n totalSuspectOf: number;\r\n totalFavorites: number;\r\n offendedAlignment: number;\r\n suspectedAlignment: number;\r\n lunchboxDeliveriesSent: number;\r\n lunchboxDeliveriesSeen: number;\r\n lunchboxDeliveriesReceived: number;\r\n lunchboxDeliveriesViewed: number;\r\n longestLunchboxStreak: number;\r\n competitionEntries: number;\r\n competitionVotes: number;\r\n competitionVoteAlignment: number;\r\n competitionHighestRank: number;\r\n competitionVotesReceived: number;\r\n competitionPointsReceived: number;\r\n totalFollowers: number;\r\n totalFollowing: number;\r\n averageFollowerMavenScore: number;\r\n averageFollowingMavenScore: number;\r\n mavenScore: number;\r\n totalPaintingsRank: number;\r\n totalFavoredByFollowersRank: number;\r\n totalFavoredByOthersRank: number;\r\n totalOffendRank: number;\r\n totalOffendedByRank: number;\r\n totalSuspectRank: number;\r\n totalSuspectOfRank: number;\r\n totalFavoritesRank: number;\r\n offendedAlignmentRank: number;\r\n suspectedAlignmentRank: number;\r\n lunchboxDeliveriesSentRank: number;\r\n lunchboxDeliveriesSeenRank: number;\r\n lunchboxDeliveriesReceivedRank: number;\r\n lunchboxDeliveriesViewedRank: number;\r\n longestLunchboxStreakRank: number;\r\n competitionEntriesRank: number;\r\n competitionVotesRank: number;\r\n competitionVoteAlignmentRank: number;\r\n competitionHighestRankRank: number;\r\n competitionVotesReceivedRank: number;\r\n competitionPointsReceivedRank: number;\r\n totalFollowersRank: number;\r\n totalFollowingRank: number;\r\n averageFollowerMavenScoreRank: number;\r\n averageFollowingMavenScoreRank: number;\r\n mavenScoreRank: number;\r\n\r\n}\r\n\r\nexport interface ArtistProfile extends SmesshyUserPreferences {\r\n artistId: string;\r\n artistName: string | undefined;\r\n artistImageId?: string | undefined;\r\n artistImageUrl: string | undefined;\r\n artistStats: ArtistStats | undefined;\r\n}\r\n\r\nexport interface PaintingLocate {\r\n artistId: string;\r\n paintingId: string;\r\n}\r\n\r\nexport interface PaintingActions {\r\n saveAction : string;\r\n drawingAction : string;\r\n}\r\n\r\nexport interface PaintingImage {\r\n paintingId?: string;\r\n thumbnail: string;\r\n preview: string;\r\n actions: string;\r\n}\r\n\r\nexport interface PaintingInfo {\r\n paintingId?: string;\r\n visibilityKind: string;\r\n visibilityId?: number;\r\n challengeName?: string;\r\n createDateTime?: string;\r\n imageDetail?: PaintingImage;\r\n userBookmark?: boolean;\r\n userFavorite?: boolean;\r\n totalFavorites?: number;\r\n userOffended?: boolean;\r\n totalOffended?: number;\r\n userSuspect?: boolean;\r\n totalSuspect?: number;\r\n totalVotes?: number;\r\n totalPoints?: number;\r\n finalRank?: number;\r\n lunchboxViewScore?: number;\r\n artistProfile: ArtistProfile;\r\n caption?: string;\r\n}\r\n\r\nexport interface LunchboxDelivery {\r\n deliveryId: number;\r\n paintingId: string;\r\n userDays: number;\r\n toUsers: Array;\r\n}\r\n\r\nexport interface LunchBoxStreakReported {\r\n userId: string;\r\n otherId: string;\r\n currentStreak: number;\r\n secondsUntilStreakEnd: number;\r\n}\r\n\r\nexport interface UserRewardSummary {\r\n userId: string;\r\n totalRewardGranted: number;\r\n currentRewardBalance: number;\r\n pendingPayoutRequestDateTime: string;\r\n pendingPayoutRequestAmount: number;\r\n pendingPayoutRequestStatus: string;\r\n}\r\n\r\nexport function MakePaintingLocate(info: PaintingInfo): PaintingLocate {\r\n return {artistId: info.artistProfile.artistId, paintingId: info.paintingId!};\r\n}\r\n\r\nexport class SmesshyDiagnosticLog {\r\n lines : Array = new Array();\r\n public log(line: string) {\r\n this.lines.push(line);\r\n }\r\n}\r\n\r\nclass TimeoutList {\r\n startTime: number;\r\n maxTime: number;\r\n items: Array;\r\n containsValues: boolean; \r\n knownFull: boolean;\r\n public constructor(duration: number) {\r\n this.startTime = Date.now();\r\n this.maxTime = this.startTime + duration;\r\n this.items = new Array();\r\n this.containsValues = false;\r\n this.knownFull = false;\r\n }\r\n public isValid() : boolean {\r\n return (this.containsValues || this.knownFull) && Date.now() < this.maxTime;\r\n }\r\n public missingRange(firstOffset: number, lastOffset: number): [number, number] | undefined {\r\n if (this.isValid()) {\r\n if (firstOffset < this.items.length && lastOffset < this.items.length){\r\n return undefined;\r\n }\r\n if (this.knownFull) {\r\n if (firstOffset >= this.items.length) {\r\n return undefined;\r\n }\r\n if (lastOffset >= this.items.length) {\r\n return undefined;\r\n }\r\n }\r\n return [Math.max(firstOffset, this.items.length), lastOffset];\r\n }\r\n return [firstOffset, lastOffset];\r\n }\r\n public expire() : void {\r\n this.maxTime = Date.now();\r\n }\r\n}\r\n\r\nclass SmesshyStorageManager {\r\n\r\n appObject: App;\r\n allTimeoutLists: Map;\r\n cachedPaintingInfos: Map;\r\n cachedThumbnails: Map;\r\n cachedPreviews: Map;\r\n cachedActions: Map;\r\n cachedArtistProfiles:Map;\r\n\r\n fiveMinutes = 5 * (60 * 1000);\r\n\r\n constructor(appObject: App) {\r\n this.appObject = appObject;\r\n this.allTimeoutLists = appObject.GetAppState('storage-manager-all-timeout-lists', new Map()) as Map;\r\n this.cachedPaintingInfos = appObject.GetAppState('storage-manager-cached-painting-infos', new Map()) as Map;\r\n this.cachedThumbnails = appObject.GetAppState('storage-manager-cached-thumbnails', new Map()) as Map;\r\n this.cachedPreviews = appObject.GetAppState('storage-manager-cached-previews', new Map()) as Map;\r\n this.cachedActions = appObject.GetAppState('storage-manager-cached-actions', new Map()) as Map;\r\n this.cachedArtistProfiles = appObject.GetAppState('storage-manager-cached-artists', new Map()) as Map;\r\n }\r\n\r\n async makeRequestInit(tokenNeed: string, method: string, body: unknown | undefined) : Promise {\r\n let token: string | undefined = undefined;\r\n if (tokenNeed !== 'none') {\r\n STrace.addStep('store', 'getAccessToken', '');\r\n token = await this.appObject.authService.getAccessToken(tokenNeed === 'required');\r\n }\r\n switch(tokenNeed) {\r\n case 'none':\r\n break;\r\n case 'required':\r\n if (token === undefined) {\r\n return undefined;\r\n }\r\n break;\r\n case 'optional':\r\n break;\r\n }\r\n let trace = STrace.getRecent();\r\n let headers : HeadersInit = {'Content-Type':'application/json', 'smesshy-api-trace':trace};\r\n if (token !== undefined) {\r\n headers = {'Content-Type':'application/json', 'smesshy-api-trace':trace, 'Authorization': `Bearer ${token}`};\r\n }\r\n let result : RequestInit = {method:method, headers:headers};\r\n\r\n if (body !== undefined && body !== null) {\r\n result.body = JSON.stringify(body);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private makeQueryWithArrayParams(baseQuery: string, paramName: string, paramList: Array): string {\r\n\r\n const params = paramList.map(i=>`${paramName}=${encodeURIComponent(i!)}`).join('&');\r\n // request the thumbnail images for that set\r\n const query = `${baseQuery}?${params}`;\r\n return query;\r\n }\r\n\r\n\r\n public async getChallengeStateAsync(challengeId: string | undefined, requireResponse: boolean) : Promise {\r\n if (challengeId === undefined || challengeId === null) {\r\n challengeId = 'current';\r\n }\r\n const reqInit = await this.makeRequestInit('optional', 'GET', undefined);\r\n let localThis = this;\r\n try {\r\n const responseChallengeState = await fetch(`api/challenge/getChallengeState?challengeId=${encodeURIComponent(challengeId)}`, reqInit);\r\n if (!responseChallengeState.ok) {\r\n if (requireResponse) {\r\n throw new Error('not ok');\r\n }\r\n return UnknownChallengeState;\r\n }\r\n const challengeState: ChallengeState = await responseChallengeState.json();\r\n return challengeState;\r\n } catch (e: any){\r\n if (requireResponse) {\r\n localThis.appObject.reportException(`getChallengeState`, 'ex', '', e)\r\n }\r\n return UnknownChallengeState;\r\n }\r\n }\r\n\r\n public async getChallengeResultAsync(challengeId: string | undefined) : Promise {\r\n if (challengeId === undefined || challengeId === null) {\r\n challengeId = 'current';\r\n }\r\n const reqInit = await this.makeRequestInit('optional', 'GET', undefined);\r\n let localThis = this;\r\n try {\r\n const responseChallengeResult = await fetch(`api/challenge/getChallengeResult?challengeId=${encodeURIComponent(challengeId)}`, reqInit);\r\n if (!responseChallengeResult.ok) {\r\n throw new Error('not ok');\r\n }\r\n const challengeResult: ChallengeResult = await responseChallengeResult.json();\r\n return challengeResult;\r\n } catch (e: any){\r\n localThis.appObject.reportException(`getChallengeResult`, 'ex', '', e)\r\n return undefined;\r\n }\r\n }\r\n\r\n public async getChallengeUserVoteStatusAsync(challengeId: string | undefined) : Promise {\r\n if (challengeId === undefined || challengeId === null) {\r\n challengeId = 'current';\r\n }\r\n\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n let localThis = this;\r\n try {\r\n const responseVoteStatus = await fetch(`api/challenge/getChallengeUserVoteStatus?challengeId=${encodeURIComponent(challengeId)}`, reqInit);\r\n if (!responseVoteStatus.ok) {\r\n throw new Error('not ok');\r\n }\r\n const voteStatus: VoteRoundStatus = await responseVoteStatus.json();\r\n return voteStatus;\r\n } catch (e: any){\r\n localThis.appObject.reportException(`getChallengeUserVoteStatus`, 'ex', '', e)\r\n return undefined;\r\n }\r\n }\r\n\r\n public async putChallengeUserVoteStatusAsync(challengeId: string | undefined) {\r\n if (challengeId === undefined || challengeId === null) {\r\n challengeId = 'current';\r\n }\r\n\r\n const reqInit = await this.makeRequestInit('required', 'PUT', undefined);\r\n let localThis = this;\r\n try {\r\n const responseVoteStatus = await fetch(`api/challenge/putChallengeUserVoteStatus?challengeId=${encodeURIComponent(challengeId)}`, reqInit);\r\n if (!responseVoteStatus.ok) {\r\n throw new Error('not ok');\r\n }\r\n } catch (e: any){\r\n localThis.appObject.reportException(`putChallengeUserVoteStatus`, 'ex', '', e)\r\n }\r\n }\r\n // public async putAdvanceAsync() {\r\n // const reqInit = await this.makeRequestInit('required', 'PUT', undefined);\r\n // let localThis = this;\r\n // try {\r\n // const responseVoteStatus = await fetch(`api/challenge/putAdvance`, reqInit);\r\n // if (!responseVoteStatus.ok) {\r\n // throw new Error('not ok');\r\n // }\r\n // } catch (e: any){\r\n // localThis.appObject.reportException(`putAdvance`, e)\r\n // }\r\n // }\r\n\r\n public async getChallengeVoteImagesAsync(challengeId: string | undefined) : Promise | undefined> {\r\n if (challengeId === undefined || challengeId === null) {\r\n challengeId = 'current';\r\n }\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n let localThis = this;\r\n try {\r\n const responseVoteImages = await fetch(`api/challenge/getChallengeVoteImages?challengeId=${encodeURIComponent(challengeId)}`, reqInit);\r\n if (!responseVoteImages.ok) {\r\n throw new Error('not ok');\r\n }\r\n const voteImages: Array = await responseVoteImages.json();\r\n return voteImages;\r\n } catch (e: any){\r\n localThis.appObject.reportException(`getChallengeVoteImages`, 'ex', '', e)\r\n return undefined;\r\n }\r\n }\r\n public async postVoteScoresAsync(challengeId: string | undefined, scores: Array) : Promise {\r\n if (challengeId === undefined || challengeId === null) {\r\n challengeId = 'current';\r\n }\r\n let localThis = this;\r\n const reqInit = await this.makeRequestInit('required', 'POST', scores);\r\n if (reqInit) {\r\n try {\r\n const responseCurrentPut = await fetch(`api/challenge/postChallengeVoteScores?challengeId=${encodeURIComponent(challengeId)}`, reqInit);\r\n if (!responseCurrentPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n const result = await responseCurrentPut.text();\r\n return result;\r\n } catch (e: any){\r\n localThis.appObject.reportException(`putChallengeVoteScores`, 'ex', '', e)\r\n }\r\n }\r\n return 'noauth'\r\n }\r\n\r\n\r\n public async putUserPaintingAsync(visibilityKind: string, thumb: string, preview: string, actions: string, caption: string) : Promise {\r\n let localThis = this;\r\n\r\n const paintingImg : PaintingImage = {\r\n thumbnail: thumb,\r\n preview: preview,\r\n actions: actions\r\n };\r\n const paintingInfo : PaintingInfo = {\r\n visibilityKind: visibilityKind,\r\n imageDetail: paintingImg,\r\n artistProfile: undefined as any as ArtistProfile,\r\n caption: caption\r\n }\r\n \r\n const reqInit = await this.makeRequestInit('required', 'POST', paintingInfo);\r\n\r\n if (reqInit) {\r\n try {\r\n const responseCurrentPut = await fetch(`api/userPaintings`, reqInit);\r\n if (!responseCurrentPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n const newPInfo = await responseCurrentPut.json() as PaintingInfo;\r\n paintingInfo.paintingId=newPInfo.paintingId;\r\n paintingInfo.createDateTime=newPInfo.createDateTime;\r\n paintingInfo.artistProfile=newPInfo.artistProfile;\r\n paintingInfo.challengeName=newPInfo.challengeName;\r\n paintingInfo.visibilityKind=newPInfo.visibilityKind;\r\n paintingInfo.visibilityId=newPInfo.visibilityId;\r\n const tl = localThis.getTimeoutList('paintingId', 'user created', 'recent');\r\n\r\n if (tl.isValid()) {\r\n tl.containsValues = false;\r\n let newList = localThis.getTimeoutList('paintingId', 'user created', 'recent');\r\n newList.containsValues = true;\r\n newList.knownFull = tl.knownFull;\r\n newList.items.push(paintingInfo.paintingId!);\r\n newList.items.push(...tl.items)\r\n localThis.cachedPaintingInfos.set(paintingInfo.paintingId!, paintingInfo);\r\n localThis.cachedThumbnails.set(paintingInfo.paintingId!, thumb);\r\n localThis.cachedPreviews.set(paintingInfo.paintingId!, preview);\r\n localThis.cachedActions.set(paintingInfo.paintingId!, actions);\r\n }\r\n return paintingInfo;\r\n } catch (e: any){\r\n localThis.appObject.reportException(`PaintingPage upload challenge`, 'ex', '', e)\r\n }\r\n }\r\n return undefined as any as PaintingInfo;\r\n }\r\n\r\n public async deleteUserPaintingAsync(paintingId: string) : Promise {\r\n let localThis = this;\r\n \r\n const reqInit = await this.makeRequestInit('required', 'DELETE', paintingId);\r\n\r\n if (reqInit) {\r\n try {\r\n const responseCurrentPut = await fetch(`api/userPaintings`, reqInit);\r\n if (!responseCurrentPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n const tl = localThis.getTimeoutList('paintingId', 'user created', 'recent');\r\n tl.expire();\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`deleteUserPaintingAsync`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n\r\n public async getUserInChallengeAsync() : Promise {\r\n let localThis = this;\r\n \r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n\r\n if (reqInit) {\r\n try {\r\n const responseInChallenge = await fetch(`api/userPaintings/getInChallenge`, reqInit);\r\n if (!responseInChallenge.ok) {\r\n throw new Error('not ok');\r\n }\r\n const inIt = await responseInChallenge.text();\r\n return inIt === \"true\";\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`getInChallenge`, 'ex', '', e)\r\n }\r\n }\r\n return false;\r\n }\r\n public async putUserBookmarkPaintingAsync(locate: PaintingLocate) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'POST', locate);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/assesment/postBookmark`, reqInit);\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n if (this.cachedPaintingInfos.has(locate.paintingId)) {\r\n const pin = this.cachedPaintingInfos.get(locate.paintingId)!;\r\n pin.userBookmark = true;\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`putUserBookmarkPainting`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n public async deleteUserBookmarkPaintingAsync(locate: PaintingLocate) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'DELETE', locate);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/assesment/deleteBookmark`, reqInit);\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n if (this.cachedPaintingInfos.has(locate.paintingId)) {\r\n const pin = this.cachedPaintingInfos.get(locate.paintingId)!;\r\n pin.userBookmark = false;\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`deleteUserBookmarkPainting`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n\r\n public async putUserFavoritePaintingAsync(locate: PaintingLocate) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'POST', locate);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/assesment/postFavorite`, reqInit);\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n if (this.cachedPaintingInfos.has(locate.paintingId)) {\r\n const pin = this.cachedPaintingInfos.get(locate.paintingId)!;\r\n pin.userFavorite = true;\r\n if (pin.totalFavorites !== undefined && pin.totalFavorites !== null) {\r\n pin.totalFavorites ++;\r\n } else {\r\n pin.totalFavorites = 1;\r\n }\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`putUserFavoritePainting`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n public async deleteUserFavoritePaintingAsync(locate: PaintingLocate) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'DELETE', locate);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/assesment/deleteFavorite`, reqInit);\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n if (this.cachedPaintingInfos.has(locate.paintingId)) {\r\n const pin = this.cachedPaintingInfos.get(locate.paintingId)!;\r\n pin.userFavorite = false;\r\n if (pin.totalFavorites !== undefined && pin.totalFavorites !== null) {\r\n pin.totalFavorites --;\r\n } else {\r\n pin.totalFavorites = 0;\r\n }\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`deleteUserFavoritePainting`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n public async putUserOffensivePaintingAsync(locate: PaintingLocate) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'POST', locate);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/assesment/postOffensive`, reqInit);\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n if (this.cachedPaintingInfos.has(locate.paintingId)) {\r\n const pin = this.cachedPaintingInfos.get(locate.paintingId)!;\r\n pin.userOffended = true;\r\n if (pin.totalOffended !== undefined && pin.totalOffended !== null) {\r\n pin.totalOffended ++;\r\n } else {\r\n pin.totalOffended = 1;\r\n }\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`putUserOffensivePainting`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n public async deleteUserOffensivePaintingAsync(locate: PaintingLocate) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'DELETE', locate);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/assesment/deleteOffensive`, reqInit);\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n if (this.cachedPaintingInfos.has(locate.paintingId)) {\r\n const pin = this.cachedPaintingInfos.get(locate.paintingId)!;\r\n pin.userOffended = false;\r\n if (pin.totalOffended !== undefined && pin.totalOffended !== null) {\r\n pin.totalOffended --;\r\n } else {\r\n pin.totalOffended = 0;\r\n }\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`deleteUserOffensivePainting`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n public async putUserSuspectPaintingAsync(locate: PaintingLocate) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'POST', locate);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/assesment/postSuspect`, reqInit);\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n if (this.cachedPaintingInfos.has(locate.paintingId)) {\r\n const pin = this.cachedPaintingInfos.get(locate.paintingId)!;\r\n pin.userSuspect = true;\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`putUserSuspectPainting`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n public async deleteUserSuspectPaintingAsync(locate: PaintingLocate) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'DELETE', locate);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/assesment/deleteSuspect`, reqInit);\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n if (this.cachedPaintingInfos.has(locate.paintingId)) {\r\n const pin = this.cachedPaintingInfos.get(locate.paintingId)!;\r\n pin.userSuspect = false;\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`deleteUserSuspectPainting`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n\r\n public getPaintingThumbs(token: string, pins: Array, onGet: (pins: Array)=>void) {\r\n let localThis = this;\r\n\r\n const missingThumbs = new Array();\r\n for (const pin of pins) {\r\n if (pin.imageDetail === undefined) {\r\n pin.imageDetail = {paintingId: pin.paintingId, thumbnail: '', preview: '', actions:''};\r\n }\r\n if (pin.imageDetail.thumbnail === undefined || pin.imageDetail.thumbnail === null || pin.imageDetail.thumbnail === '') {\r\n if (this.cachedThumbnails.has(pin.paintingId!)) {\r\n pin.imageDetail.thumbnail = this.cachedThumbnails.get(pin.paintingId!)!;\r\n } else {\r\n missingThumbs.push(pin);\r\n }\r\n }\r\n }\r\n\r\n if (missingThumbs.length === 0) {\r\n onGet(pins);\r\n return;\r\n }\r\n\r\n this.fetchThumbs(token, missingThumbs)\r\n .then(respThum => {\r\n if (!respThum.ok) {\r\n localThis.appObject.reportException('fetchThumbs', 'resp', respThum.status.toString(), respThum.statusText);\r\n } else {\r\n respThum.json()\r\n .then((thumbs: Array)=>{\r\n localThis.addThumbs(missingThumbs, thumbs);\r\n onGet(pins);\r\n })\r\n .catch((reason) => {localThis.appObject.reportException('fetchThumbs.json', 'ex', '', reason); } );\r\n }\r\n })\r\n .catch((reason) => {localThis.appObject.reportException('fetchThumbs', 'ex', '', reason); } );\r\n }\r\n\r\n public getPaintingPreviews(token: string, pins: Array, onGet: (pins: Array)=>void) {\r\n let localThis = this;\r\n\r\n const missingPreviews = new Array();\r\n for (const pin of pins) {\r\n if (pin.imageDetail === undefined) {\r\n pin.imageDetail = {paintingId: pin.paintingId, thumbnail: '', preview: '', actions:''};\r\n }\r\n if (pin.imageDetail.preview === undefined || pin.imageDetail.preview === null || pin.imageDetail.preview === '') {\r\n if (this.cachedPreviews.has(pin.paintingId!)) {\r\n pin.imageDetail.preview = this.cachedPreviews.get(pin.paintingId!)!;\r\n } else {\r\n missingPreviews.push(pin);\r\n }\r\n }\r\n }\r\n\r\n if (missingPreviews.length === 0) {\r\n onGet(pins);\r\n return;\r\n }\r\n\r\n this.fetchPreviews(token, missingPreviews)\r\n .then(respPrev => {\r\n if (!respPrev.ok) {\r\n localThis.appObject.reportException('fetchPreviews', 'resp', respPrev.status.toString(), respPrev.statusText);\r\n } else {\r\n respPrev.json()\r\n .then((prevs: Array)=>{\r\n localThis.addPreviews(missingPreviews, prevs);\r\n onGet(pins);\r\n })\r\n .catch((reason) => {localThis.appObject.reportException('fetchPreviews.json', 'ex', '', reason); } );\r\n }\r\n })\r\n .catch((reason) => {localThis.appObject.reportException('fetchPreviews', 'ex', '', reason); } );\r\n }\r\n\r\n public getPaintingActions(token: string, pin: PaintingInfo, onGet: (pins: PaintingInfo)=>void) {\r\n let localThis = this;\r\n\r\n if (pin.imageDetail === undefined) {\r\n pin.imageDetail = {paintingId: pin.paintingId, thumbnail: '', preview: '', actions:''};\r\n }\r\n if (pin.imageDetail.actions === undefined || pin.imageDetail.actions === null || pin.imageDetail.actions === '') {\r\n if (this.cachedActions.has(pin.paintingId!)) {\r\n pin.imageDetail.actions = this.cachedActions.get(pin.paintingId!)!;\r\n } \r\n }\r\n\r\n if (!(pin.imageDetail.actions === undefined || pin.imageDetail.actions === null || pin.imageDetail.actions === '')) {\r\n onGet(pin);\r\n return;\r\n }\r\n\r\n this.fetchActions(token, pin)\r\n .then(respActions => {\r\n if (!respActions.ok) {\r\n localThis.appObject.reportException('fetchActions', 'resp', respActions.status.toString(), respActions.statusText);\r\n } else {\r\n respActions.json()\r\n .then((actions: Array)=>{\r\n pin.imageDetail!.actions = actions[0];\r\n localThis.cachedActions.set(pin.paintingId!, actions[0]) \r\n onGet(pin);\r\n })\r\n .catch((reason) => {localThis.appObject.reportException('fetchActions.json', 'ex', '', reason); } );\r\n }\r\n })\r\n .catch((reason) => {localThis.appObject.reportException('fetchActions', 'ex', '', reason); } );\r\n }\r\n\r\n public getUserPaintingsWithThumbs(token:string, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n const tl = this.getTimeoutList('paintingId', 'user created', kind);\r\n this.getPaintingsWithThumbs(token, tl, SmesshyStorageManager.fetchUserPaintings, firstOffset, lastOffset, kind, onGet);\r\n }\r\n\r\n public getFollowingPaintingsWithThumbs(token:string, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n const tl = this.getTimeoutList('paintingId', 'following', kind);\r\n this.getPaintingsWithThumbs(token, tl, SmesshyStorageManager.fetchFollowingPaintings, firstOffset, lastOffset, kind, onGet);\r\n }\r\n\r\n public getGlobalPaintingsWithThumbs(token:string, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n const tl = this.getTimeoutList('paintingId', 'global', kind);\r\n this.getPaintingsWithThumbs(token, tl, SmesshyStorageManager.fetchGlobalPaintings, firstOffset, lastOffset, kind, onGet);\r\n }\r\n\r\n public getUserPaintingsWithPreviews(token:string, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n const tl = this.getTimeoutList('paintingId', 'user created', kind);\r\n this.getPaintingsWithPreviews(token, tl, SmesshyStorageManager.fetchUserPaintings, firstOffset, lastOffset, kind, onGet);\r\n }\r\n\r\n public getFollowingPaintingsWithPreviews(token:string, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n const tl = this.getTimeoutList('paintingId', 'following', kind);\r\n this.getPaintingsWithPreviews(token, tl, SmesshyStorageManager.fetchFollowingPaintings, firstOffset, lastOffset, kind, onGet);\r\n }\r\n\r\n public getGlobalPaintingsWithPreviews(token:string, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n const tl = this.getTimeoutList('paintingId', 'global', kind);\r\n this.getPaintingsWithPreviews(token, tl, SmesshyStorageManager.fetchGlobalPaintings, firstOffset, lastOffset, kind, onGet);\r\n }\r\n\r\n public getOthersPaintingsWithPreviews(token:string, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n const tl = this.getTimeoutList('paintingId', 'other', kind);\r\n this.getPaintingsWithPreviews(token, tl, SmesshyStorageManager.fetchOthersPaintings, firstOffset, lastOffset, kind, onGet);\r\n }\r\n\r\n public getCurrentLunchboxPaintingsWithPreviews(token:string, firstOffset:number, lastOffset:number, onGet: (pins: Array)=>void) {\r\n const tl = this.getTimeoutList('paintingId', 'following', 'lunchbox');\r\n this.getPaintingsWithPreviews(token, tl, SmesshyStorageManager.fetchLunchboxPaintings, firstOffset, lastOffset, 'lunchbox', onGet);\r\n }\r\n\r\n public async getGlobalPaintingsInfosAsync(locates: Array): Promise | undefined> {\r\n \r\n const artistIdParams = locates.map(i=>`artistIds=${encodeURIComponent(i.artistId!)}`).join('&');\r\n const paintingIdParams = locates.map(i=>`paintingIds=${encodeURIComponent(i.paintingId!)}`).join('&');\r\n const query = `api/globalPaintings/getInfos?${artistIdParams}&${paintingIdParams}`;\r\n\r\n const reqInit = await this.makeRequestInit('optional', 'GET', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('getGlobalPaintingsInfosAsync', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n const list = await resp.json() as Array;\r\n if (list !== undefined && list !== null && list.length > 0) {\r\n return list;\r\n }\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`getGlobalPaintingsInfosAsync`, 'ex', '', e)\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n public async getUserFollowingAsync(status: string, mutual: boolean): Promise> {\r\n const tl = this.getTimeoutList('userId', `following${mutual?'-m':''}`, status);\r\n if (!tl.knownFull) {\r\n const query = mutual !== true ? `api/userFollowings/getFollowing?status=${status}` : `api/userFollowings/getMutualFollowing`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('getUserFollowing', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n const list = await resp.json() as Array;\r\n if (list !== undefined && list !== null && list.length > 0) {\r\n tl.containsValues=true;\r\n tl.items.push(...list);\r\n }\r\n tl.knownFull = true;\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`getUserFollowing`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n return new Set(tl.items)\r\n\r\n }\r\n public async postUserFollowingAsync(followId: string): Promise {\r\n\r\n //await this.getUserFollowingAsync('pending', false);\r\n const tl = this.getTimeoutList('userId', 'following', 'pending');\r\n\r\n const query = `api/userFollowings/postFollowing`;\r\n //console.log(query);\r\n \r\n const reqInit = await this.makeRequestInit('required', 'POST', followId);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('postUserFollowing', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n tl.items.push(followId);\r\n tl.containsValues=true;\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`postUserFollowing`, 'ex', '', e)\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n public async deleteUserFollowingAsync(followId: string, status: string): Promise {\r\n\r\n //await this.getUserFollowingAsync(status, false);\r\n const tl = this.getTimeoutList('userId', 'following', status);\r\n\r\n const query = `api/userFollowings/deleteFollowing`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'DELETE', followId);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('deleteUserFollowingAsync', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n let idx = tl.items.indexOf(followId);\r\n if (idx >= 0) {\r\n tl.items.splice(idx, 1);\r\n }\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`deleteUserFollowingAsync`, 'ex', '', e)\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n public async deleteUserFollowerAsync(followId: string, status: string): Promise {\r\n\r\n //await this.getUserFollowingAsync(status, false);\r\n const tl = this.getTimeoutList('userId', 'followers', status);\r\n\r\n const query = `api/userFollowings/deleteFollower`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'DELETE', followId);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('deleteUserFollower', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n let idx = tl.items.indexOf(followId);\r\n if (idx >= 0) {\r\n tl.items.splice(idx, 1);\r\n }\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`deleteUserFollower`, 'ex', '', e)\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async approveUserFollowerAsync(followId: string): Promise {\r\n\r\n STrace.addStep('store', 'getUserFollowersAsync', 'pending');\r\n await this.getUserFollowersAsync(0, 1000, 'pending');\r\n const tl = this.getTimeoutList('userId', 'followers', 'pending');\r\n\r\n const query = `api/userFollowings/putApproveFollower`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'PUT', followId);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('approveUserFollowerAsync', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n let idx = tl.items.indexOf(followId);\r\n if (idx >= 0) {\r\n tl.items.splice(idx, 1);\r\n }\r\n const tlApp = this.getTimeoutList('userId', 'followers', 'approved');\r\n if (tlApp.isValid()) {\r\n tlApp.items.push(followId);\r\n tlApp.containsValues = true;\r\n }\r\n\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`approveUserFollowerAsync`, 'ex', '', e)\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async getUserFollowersAsync(firstOffset:number, lastOffset:number, status: string): Promise> {\r\n const tl = this.getTimeoutList('userId', 'followers', status);\r\n\r\n let missing = tl.missingRange(firstOffset, lastOffset);\r\n if (missing === undefined) {\r\n return tl.items.slice(firstOffset, lastOffset+1);\r\n }\r\n\r\n const query = `api/userFollowings/getFollowers?&first=${missing[0]}&last=${missing[1]}&status=${status}`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('getUserFollowersAsync', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n const list = await resp.json() as Array;\r\n if (list !== undefined && list !== null && list.length > 0) {\r\n tl.containsValues=true;\r\n tl.items.push(...list);\r\n tl.knownFull = list.length < (missing[1]-missing[0] + 1);\r\n } else {\r\n tl.knownFull = true;\r\n }\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`getUserFollowersAsync`, 'ex', '', e)\r\n }\r\n }\r\n \r\n return tl.items.slice(firstOffset, lastOffset+1);\r\n\r\n }\r\n\r\n public async searchArtistProfilesAsync(searchQuery: string, firstOffset:number, lastOffset:number, cancelSignal: AbortSignal, resolve: (profs: Array)=>void) {\r\n let localThis = this;\r\n const profsResult = new Array();\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n\r\n if (reqInit === undefined) {\r\n resolve(profsResult);\r\n return;\r\n }\r\n\r\n // request the thumbnail images for that set\r\n const query = `api/userProfile/searchArtistProfiles?query=${encodeURIComponent(searchQuery)}&first=${firstOffset}&last=${lastOffset}`;\r\n //console.log(query);\r\n reqInit.signal = cancelSignal;\r\n try {\r\n let resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n localThis.appObject.reportException(`searchArtistProfiles`, 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n resp.json()\r\n .then((profs: Array) => {\r\n for (const prof of profs) {\r\n profsResult.push(prof);\r\n localThis.cachedArtistProfiles.set(prof.artistId, prof);\r\n }\r\n resolve(profsResult);\r\n })\r\n .catch((reason) => {localThis.appObject.reportException(`searchArtistProfiles`, 'ex', '', reason); } );\r\n }\r\n }\r\n catch(reason) {\r\n if ((reason as any).code === 20) {\r\n // cancel\r\n return;\r\n }\r\n localThis.appObject.reportException(`searchArtistProfiles`, 'ex', '', reason)\r\n }\r\n }\r\n \r\n public async getArtistProfilesAsync(ids: Array, statsLevel: string, resolve: (profs: Array)=>void) {\r\n let localThis = this;\r\n\r\n const missingArtists = new Array();\r\n const profsResult = new Array();\r\n for (const id of ids) {\r\n if (!this.cachedArtistProfiles.has(id)) {\r\n missingArtists.push(id);\r\n } else {\r\n profsResult.push(this.cachedArtistProfiles.get(id)!);\r\n }\r\n }\r\n if (missingArtists.length === 0) {\r\n resolve(profsResult);\r\n return;\r\n }\r\n\r\n const idParams = missingArtists.map(i=>`userIds=${encodeURIComponent(i!)}`).join('&');\r\n // request the thumbnail images for that set\r\n const query = `api/userProfile/getArtistProfiles?${idParams}&statsLevel=${statsLevel}`;\r\n //console.log(query);\r\n\r\n const reqInit = await this.makeRequestInit('optional', 'GET', undefined);\r\n try {\r\n let resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n localThis.appObject.reportException(`getArtistProfiles`, 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n resp.json()\r\n .then((profs: Array) => {\r\n for (const prof of profs) {\r\n profsResult.push(prof);\r\n localThis.cachedArtistProfiles.set(prof.artistId, prof);\r\n }\r\n resolve(profsResult);\r\n })\r\n .catch((reason) => {localThis.appObject.reportException(`getArtistProfiles`, 'ex', '', reason); } );\r\n }\r\n } catch (reason) {\r\n localThis.appObject.reportException(`getArtistProfiles`, 'ex', '', reason);\r\n }\r\n }\r\n\r\n public async getUserArtistProfileAsync() : Promise {\r\n let localThis = this;\r\n\r\n // request the thumbnail images for that set\r\n const query = `api/userProfile/getUserArtistProfile`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('getUserArtistProfile', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n const prof = await resp.json() as ArtistProfile;\r\n if (prof !== null && prof !== undefined) {\r\n localThis.cachedArtistProfiles.set(prof.artistId, prof);\r\n return prof;\r\n }\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`getUserArtistProfile`, 'ex', '', e)\r\n }\r\n }\r\n return undefined;\r\n }\r\n \r\n public async deleteUserAccountAsync(confirm: string) : Promise {\r\n let localThis = this;\r\n\r\n const query = `account/deleteAccount`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'DELETE', confirm);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responsePost = await fetch(query, reqInit);\r\n if (!responsePost.ok) {\r\n this.appObject.reportException('deleteAccount', 'resp', responsePost.status.toString(), responsePost.statusText);\r\n }\r\n return (await responsePost.json()) as boolean;\r\n } catch (e: any){\r\n localThis.appObject.reportException(`deleteAccount`, 'ex', '', e)\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public async getUserStatsAsync(level: string, entries: number) : Promise | undefined> {\r\n let localThis = this;\r\n\r\n // request the thumbnail images for that set\r\n const query = `api/statistics/getUserStats?level=${encodeURIComponent(level)}&entries=${encodeURIComponent(entries)}`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('getUserStatsAsync', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n const stats = await resp.json() as Array;\r\n if (stats !== null && stats !== undefined) {\r\n return stats;\r\n }\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`getUserPaintingsAsync`, 'ex', '', e)\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n public async getUserRewardSummaryAsync() : Promise {\r\n let localThis = this;\r\n\r\n // request the thumbnail images for that set\r\n const query = `api/reward/getUserRewardSummary`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('getUserRewardSummary', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n const rewardSummary = await resp.json() as UserRewardSummary;\r\n return rewardSummary;\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`getUserRewardSummary`, 'ex', '', e)\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n public async requestRewardPayoutAsync() : Promise {\r\n let localThis = this;\r\n\r\n const query = `api/reward/postUserRewardPayoutRequest`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'POST', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('postUserRewardPayoutRequest', 'resp', resp.status.toString(), resp.statusText);\r\n } \r\n } catch (e: any){\r\n this.appObject.reportException(`postUserRewardPayoutRequest`, 'ex', '', e)\r\n }\r\n }\r\n return undefined;\r\n }\r\n public async requestRewardCancelAsync() : Promise {\r\n let localThis = this;\r\n\r\n const query = `api/reward/postUserRewardCancelRequest`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'POST', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('postUserRewardCancelRequest', 'resp', resp.status.toString(), resp.statusText);\r\n } \r\n } catch (e: any){\r\n this.appObject.reportException(`postUserRewardCancelRequest`, 'ex', '', e)\r\n }\r\n }\r\n return undefined;\r\n }\r\n public async requestRewardRepeatAsync() : Promise {\r\n let localThis = this;\r\n\r\n const query = `api/reward/postUserRewardRepeatRequest`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'POST', undefined);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('postUserRewardRepeatRequest', 'resp', resp.status.toString(), resp.statusText);\r\n } \r\n } catch (e: any){\r\n this.appObject.reportException(`postUserRewardRepeatRequest`, 'ex', '', e)\r\n }\r\n }\r\n return undefined;\r\n }\r\n public async testRewardValidateAmountAsync(userReportedAmount: number) : Promise {\r\n let localThis = this;\r\n\r\n const query = `api/reward/postUserTestRewardValidateAmount`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'POST', userReportedAmount);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('postUserTestRewardValidateAmount', 'resp', resp.status.toString(), resp.statusText);\r\n } \r\n } catch (e: any){\r\n this.appObject.reportException(`postUserTestRewardValidateAmount`, 'ex', '', e)\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n public async putUserPortraitAsync(portraitId: string) : Promise {\r\n\r\n let localThis = this;\r\n\r\n const query = `api/userProfile/putUserPortrait`;\r\n //console.log(query);\r\n const reqInit = await this.makeRequestInit('required', 'PUT', portraitId);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('putUserPortrait', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n return;\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`putUserPortrait`, 'ex', '', e)\r\n }\r\n }\r\n\r\n }\r\n\r\n public async putUserPreferencesAsync(prefs: SmesshyUserPreferences) : Promise {\r\n\r\n let localThis = this;\r\n\r\n const query = `api/userProfile/putUserPreferences`;\r\n //console.log(query);\r\n \r\n const reqInit = await this.makeRequestInit('required', 'PUT', prefs);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('putUserPreferences', 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n return;\r\n }\r\n } catch (e: any){\r\n this.appObject.reportException(`putUserPreferences`, 'ex', '', e)\r\n }\r\n }\r\n\r\n }\r\n\r\n public async postLunchboxDeliveryAsync(delivery: LunchboxDelivery) : Promise {\r\n const query = `api/lunchBox/postDelivery`;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'POST', delivery);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('postLunchboxDeliveryAsync', 'resp', resp.status.toString(), resp.statusText);\r\n } \r\n } catch (e: any){\r\n this.appObject.reportException(`postLunchboxDeliveryAsync`, 'ex', '', e)\r\n }\r\n }\r\n\r\n }\r\n\r\n public async getLunchboxStreakInfoAsync(otherIds: Array): Promise | undefined> {\r\n let localThis = this;\r\n\r\n const idParams = otherIds.map(i=>`otherIds=${encodeURIComponent(i!)}`).join('&');\r\n const query = `api/lunchBox/getStreakInfo?${idParams}`;\r\n //console.log(query);\r\n\r\n const reqInit = await this.makeRequestInit('required', 'GET', undefined);\r\n try {\r\n let resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n localThis.appObject.reportException(`getLunchboxStreakInfoAsync`, 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n return await resp.json() as Array;\r\n }\r\n } catch (reason) {\r\n localThis.appObject.reportException(`getLunchboxStreakInfoAsync`, 'ex', '', reason);\r\n }\r\n return undefined\r\n }\r\n\r\n public async postPokeLunchboxAsync(otherId: string) : Promise {\r\n const query = `api/lunchBox/postPoke`;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'POST', otherId);\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('postPokeLunchboxAsync', 'resp', resp.status.toString(), resp.statusText);\r\n } \r\n } catch (e: any){\r\n this.appObject.reportException(`postPokeLunchboxAsync`, 'ex', '', e)\r\n }\r\n }\r\n\r\n }\r\n\r\n private getPaintingsWithThumbs(token: string, tl: TimeoutList, fetchFunc: (token: string, firstOffset:number, lastOffset:number, kind: string)=>Promise, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n let localThis = this;\r\n\r\n let missing = tl.missingRange(firstOffset, lastOffset);\r\n if (missing === undefined) {\r\n const pins = this.getCachedPaintingInfos(tl.items, firstOffset, lastOffset);\r\n this.getPaintingThumbs(token, pins, onGet);\r\n return;\r\n }\r\n\r\n fetchFunc(token, missing[0], missing[1], kind)\r\n .then(resp=>{\r\n if (!resp.ok) {\r\n localThis.appObject.reportException(`${fetchFunc.name}`, 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n resp.json()\r\n .then((pinsAdd: Array) => {\r\n lastOffset = localThis.addPaintingInfos(tl, lastOffset, pinsAdd);\r\n const pins = this.getCachedPaintingInfos(tl.items, firstOffset, lastOffset);\r\n localThis.getPaintingThumbs(token, pins, onGet);\r\n })\r\n .catch((reason) => {localThis.appObject.reportException(`${fetchFunc.name}.json`, 'ex', '', reason); } );\r\n }\r\n })\r\n .catch((reason) => {localThis.appObject.reportException(`${fetchFunc.name}`, 'ex', '', reason) } );\r\n }\r\n private getPaintingsWithPreviews(token: string, tl: TimeoutList, fetchFunc: (token: string, firstOffset:number, lastOffset:number, kind: string)=>Promise, firstOffset:number, lastOffset:number, kind: string, onGet: (pins: Array)=>void) {\r\n let localThis = this;\r\n\r\n let missing = tl.missingRange(firstOffset, lastOffset);\r\n if (missing === undefined) {\r\n const pins = this.getCachedPaintingInfos(tl.items, firstOffset, lastOffset);\r\n this.getPaintingPreviews(token, pins, onGet);\r\n return;\r\n }\r\n\r\n fetchFunc(token, missing[0], missing[1], kind)\r\n .then(resp=>{\r\n if (!resp.ok) {\r\n localThis.appObject.reportException(`${fetchFunc.name}`, 'resp', resp.status.toString(), resp.statusText);\r\n } else {\r\n resp.json()\r\n .then((pinsAdd: Array) => {\r\n lastOffset = localThis.addPaintingInfos(tl, lastOffset, pinsAdd);\r\n const pins = this.getCachedPaintingInfos(tl.items, firstOffset, lastOffset);\r\n localThis.getPaintingPreviews(token, pins, onGet);\r\n })\r\n .catch((reason) => {localThis.appObject.reportException(`${fetchFunc.name}.json`, 'ex', '', reason); } );\r\n }\r\n })\r\n .catch((reason) => {localThis.appObject.reportException(`${fetchFunc.name}`, 'ex', '', reason) } );\r\n }\r\n\r\n private getTimeoutList(thing:string, scope: string, kind: string) : TimeoutList{\r\n const key = `${thing}-${scope}-${kind}`;\r\n if (this.allTimeoutLists.has(key)) {\r\n const tl = this.allTimeoutLists.get(key);\r\n if (tl!.isValid()) {\r\n return tl!;\r\n }\r\n }\r\n const tl = new TimeoutList(this.fiveMinutes);\r\n this.allTimeoutLists.set(key, tl);\r\n return tl;\r\n }\r\n\r\n private getCachedPaintingInfos(pids: Array, firstOffset: number, lastOffset: number) : Array {\r\n const result = new Array();\r\n for (let i = firstOffset; i <= lastOffset; i++) {\r\n if (i < pids.length) {\r\n result.push(this.cachedPaintingInfos.get(pids[i])!);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private addPaintingInfos(tl: TimeoutList, lastOffset: number, pins: Array) : number {\r\n tl.containsValues = true;\r\n for (const pin of pins) {\r\n tl.items.push(pin.paintingId!)\r\n this.cachedPaintingInfos.set(pin.paintingId!, pin);\r\n }\r\n if (tl.items.length <= lastOffset) {\r\n tl.knownFull = true;\r\n return tl.items.length - 1;\r\n }\r\n return lastOffset;\r\n }\r\n\r\n\r\n private static fetchUserPaintings(token: string, firstOffset:number, lastOffset:number, kind: string) : Promise {\r\n\r\n if (token === undefined || token === null) {\r\n throw new Error('dont');\r\n }\r\n\r\n let filter : string;\r\n let order : string;\r\n switch (kind) {\r\n case 'recent':\r\n filter = 'none'\r\n order = 'recent'\r\n break;\r\n case 'favorite':\r\n filter = 'self favorite'\r\n order = 'recent'\r\n break;\r\n case 'popular':\r\n filter = 'other favorite'\r\n order = 'other favorite'\r\n break;\r\n default:\r\n // must be an id?\r\n order = 'recent'\r\n filter = kind;\r\n break;\r\n\r\n }\r\n const query = `api/userPaintings/getOrderedFiltered?order=${order!}&filter=${filter!}&first=${firstOffset}&last=${lastOffset}`;\r\n //console.log(query);\r\n const reInit : RequestInit = {headers:{'smesshy-api-trace':STrace.getRecent(), 'Authorization': `Bearer ${token}`}};\r\n \r\n //console.log('token', token);\r\n return fetch(query, reInit);\r\n }\r\n\r\n private static fetchFollowingPaintings(token: string, firstOffset:number, lastOffset:number, kind: string) : Promise {\r\n\r\n if (token === undefined || token === null) {\r\n throw new Error('dont');\r\n }\r\n\r\n let filter : string;\r\n let order : string;\r\n switch (kind) {\r\n case 'recent':\r\n filter = 'none'\r\n order = 'recent'\r\n break;\r\n case 'favorite':\r\n filter = 'self favorite'\r\n order = 'recent'\r\n break;\r\n case 'popular':\r\n filter = 'other favorite'\r\n order = 'other favorite'\r\n break;\r\n\r\n }\r\n const query = `api/userFollowings/getOrderedFilteredPaintings?order=${order!}&filter=${filter!}&first=${firstOffset}&last=${lastOffset}`;\r\n //console.log(query);\r\n const reInit : RequestInit = {headers:{'smesshy-api-trace':STrace.getRecent(), 'Authorization': `Bearer ${token}`}};\r\n\r\n //console.log('token', token);\r\n return fetch(query, reInit);\r\n }\r\n\r\n private static fetchGlobalPaintings(token: string, firstOffset:number, lastOffset:number, kind: string) : Promise {\r\n\r\n let filter : string;\r\n let order : string;\r\n switch (kind) {\r\n case 'recent':\r\n filter = 'trending'\r\n order = 'other favorite'\r\n break;\r\n case 'favorite':\r\n filter = 'self favorite'\r\n order = 'recent'\r\n break;\r\n case 'popular':\r\n filter = 'challenge votes'\r\n order = 'challenge score'\r\n break;\r\n\r\n }\r\n const query = `api/globalPaintings/getOrderedFiltered?order=${order!}&filter=${filter!}&first=${firstOffset}&last=${lastOffset}`;\r\n //console.log(query);\r\n\r\n //console.log('token', token);\r\n const sTrace = STrace.getRecent()\r\n if (token === 'none') {\r\n return fetch(query, {headers:{'smesshy-api-trace':sTrace}});\r\n } else {\r\n const reInit : RequestInit = {headers:{'smesshy-api-trace':sTrace, 'Authorization': `Bearer ${token}`}};\r\n return fetch(query, reInit);\r\n }\r\n }\r\n\r\n private static fetchOthersPaintings(token: string, firstOffset:number, lastOffset:number, kind: string) : Promise {\r\n\r\n if (token === undefined || token === null) {\r\n throw new Error('dont');\r\n }\r\n\r\n const query = `api/othersVisible/getRecentPaintings?otherId=${kind!}&first=${firstOffset}&last=${lastOffset}`;\r\n //console.log(query);\r\n const reInit : RequestInit = {headers:{'smesshy-api-trace':STrace.getRecent(), 'Authorization': `Bearer ${token}`}};\r\n\r\n //console.log('token', token);\r\n return fetch(query, reInit);\r\n }\r\n private static fetchLunchboxPaintings(token: string, firstOffset:number, lastOffset:number, kind: string) : Promise {\r\n\r\n if (token === undefined || token === null) {\r\n throw new Error('dont');\r\n }\r\n\r\n const query = `api/lunchBox/getCurrentPaintings?&first=${firstOffset}&last=${lastOffset}`;\r\n //console.log(query);\r\n const reInit : RequestInit = {headers:{'smesshy-api-trace':STrace.getRecent(), 'Authorization': `Bearer ${token}`}};\r\n\r\n //console.log('token', token);\r\n return fetch(query, reInit);\r\n }\r\n\r\n private async fetchThumbs(token: string, pis: Array) : Promise {\r\n // yank out just the id numbers and concat into a long set of urls params\r\n const imageIds = pis.map(i=>i.paintingId!);\r\n // request the thumbnail images for that set\r\n const query = this.makeQueryWithArrayParams('api/paintingImages/getThumbnails', 'paintingIds', imageIds);\r\n //console.log(query);\r\n const sTrace = STrace.getRecent()\r\n if (token === 'none') {\r\n return fetch(query, {headers:{'smesshy-api-trace':sTrace}});\r\n } else {\r\n const reInit : RequestInit = {headers:{'smesshy-api-trace':sTrace, 'Authorization': `Bearer ${token}`}};\r\n return fetch(query, reInit);\r\n }\r\n }\r\n\r\n private addThumbs(pis: Array, thumbs: Array) : void {\r\n for(let iThumb=0; iThumb < thumbs.length; iThumb++) {\r\n let info = pis[iThumb];\r\n if (info.imageDetail === undefined) {\r\n info.imageDetail = {paintingId:info.paintingId, thumbnail:'', preview: '', actions: ''};\r\n }\r\n info.imageDetail.thumbnail = thumbs[iThumb];\r\n this.cachedThumbnails.set(info.paintingId!, info.imageDetail.thumbnail)\r\n }\r\n }\r\n\r\n private async fetchPreviews(token: string, pis: Array) : Promise {\r\n // yank out just the id numbers and concat into a long set of urls params\r\n const imageIds = pis.map(i=>i.paintingId!);\r\n const query = this.makeQueryWithArrayParams('api/paintingImages/getPreviews', 'paintingIds', imageIds);\r\n\r\n //console.log(query);\r\n const sTrace = STrace.getRecent()\r\n if (token === 'none') {\r\n return fetch(query, {headers:{'smesshy-api-trace':sTrace}});\r\n } else {\r\n const reInit : RequestInit = {headers:{'smesshy-api-trace':sTrace, 'Authorization': `Bearer ${token}`}};\r\n return fetch(query, reInit);\r\n }\r\n }\r\n\r\n private addPreviews(pis: Array, previews: Array) : void {\r\n for(let iPrev=0; iPrev < previews.length; iPrev++) {\r\n let info = pis[iPrev];\r\n if (info.imageDetail === undefined) {\r\n info.imageDetail = {paintingId:info.paintingId, thumbnail:'', preview: '', actions: ''};\r\n }\r\n info.imageDetail.preview = previews[iPrev];\r\n this.cachedPreviews.set(info.paintingId!, info.imageDetail.preview)\r\n }\r\n }\r\n\r\n private async fetchActions(token: string, pin: PaintingInfo) : Promise {\r\n // request the thumbnail images for that set\r\n const query = this.makeQueryWithArrayParams('api/paintingImages/getActions', 'paintingIds', [pin.paintingId!]);\r\n //console.log(query);\r\n const sTrace = STrace.getRecent()\r\n if (token === 'none') {\r\n return fetch(query, {headers:{'smesshy-api-trace':sTrace}});\r\n } else {\r\n const reInit : RequestInit = {headers:{'smesshy-api-trace':sTrace, 'Authorization': `Bearer ${token}`}};\r\n return fetch(query, reInit);\r\n }\r\n }\r\n\r\n public async registerNotificationSubscription(newSub: PushSubscription) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'POST', newSub.toJSON());\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responsePost = await fetch(`api/notification/postSubscription`, reqInit);\r\n if (!responsePost.ok) {\r\n throw new Error('not ok');\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`postSubscription`, 'ex', '', e)\r\n }\r\n }\r\n\r\n\r\n }\r\n public async deleteNotificationSubscription(subId: string) {\r\n let localThis = this;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'DELETE', subId);\r\n if (reqInit) {\r\n //console.log('token', token);\r\n try {\r\n const responsePost = await fetch(`api/notification/deleteSubscription`, reqInit);\r\n if (!responsePost.ok) {\r\n throw new Error('not ok');\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`deleteSubscription`, 'ex', '', e)\r\n }\r\n }\r\n\r\n\r\n }\r\n \r\n public async testAuthFail() {\r\n let localThis = this;\r\n const query = `api/lunchBox/postPoke`;\r\n\r\n const reqInit = await this.makeRequestInit('required', 'POST', \"baadfood\");\r\n //(reqInit as any).headers.Authorization = (reqInit as any).headers.Authorization + 'x';\r\n\r\n if (reqInit !== undefined) {\r\n try {\r\n const resp = await fetch(query, reqInit);\r\n if (!resp.ok) {\r\n this.appObject.reportException('testAuthFail', 'resp', resp.status.toString(), resp.statusText);\r\n } \r\n } catch (e: any){\r\n this.appObject.reportException(`testAuthFail`, 'ex', '', e)\r\n }\r\n }\r\n }\r\n\r\n\r\n public postDiagnostic(diag: SmesshyDiagnosticLog) {\r\n let localThis = this;\r\n\r\n this.appObject.asyncHelp.executeAsyncLater(async ()=>{\r\n const token = await localThis.appObject.authService.getAccessToken(true);\r\n if (token) {\r\n //console.log('token', token);\r\n try {\r\n const responseFavPut = await fetch(`api/diagnostic/postLog`, \r\n {method:'POST', headers:{'Content-Type':'application/json', 'Authorization': `Bearer ${token}`},\r\n body:JSON.stringify(diag)});\r\n if (!responseFavPut.ok) {\r\n throw new Error('not ok');\r\n }\r\n\r\n } catch (e: any){\r\n localThis.appObject.reportException(`postDiagnostic`, 'ex', '', e)\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport default SmesshyStorageManager;","import React, { Component, useEffect } from 'react';\r\n\r\nexport interface CountDownTextState {\r\n SecondsRemaining: number;\r\n}\r\nexport interface CountDownTextProps {\r\n SecondsInitial: number;\r\n OnFinish: ()=>void;\r\n}\r\n\r\nexport class CountdownTimer {\r\n timerId: NodeJS.Timeout | undefined = undefined;\r\n timeWhenStarted: number = 0;\r\n remainingWhenStarted: number = 0;\r\n pausedTime: number = 0;\r\n isPaused: boolean = false;\r\n\r\n public countDownFrom(secondsRemaining: number, interval: number, onTick: (rem: number) => void) {\r\n this.clear();\r\n this.remainingWhenStarted = secondsRemaining;\r\n this.timeWhenStarted = Date.now();\r\n const localThis = this;\r\n this.timerId = setInterval(() => {\r\n if (localThis.isPaused) {\r\n localThis.pausedTime += interval * 1000;\r\n return;\r\n }\r\n let newRemaining = localThis.remaining();\r\n onTick(newRemaining);\r\n }, interval * 1000);\r\n }\r\n\r\n public remaining(): number {\r\n const timeNow = Date.now();\r\n return Math.round(this.remainingWhenStarted - (((timeNow - this.pausedTime)- this.timeWhenStarted) / 1000));\r\n }\r\n\r\n public clear(): void {\r\n this.pausedTime = 0;\r\n if (this.timerId !== undefined) {\r\n clearInterval(this.timerId);\r\n this.timerId = undefined;\r\n }\r\n\r\n\r\n }\r\n \r\n public togglePause(pause: boolean): void {\r\n this.isPaused = pause;\r\n }\r\n\r\n public toString(secondsLeft: number | undefined): string {\r\n if (secondsLeft === undefined) {\r\n secondsLeft = this.remaining();\r\n }\r\n return CountdownTimer.secondsToTime(secondsLeft);\r\n }\r\n\r\n public static secondsToTime(secondsLeft: number): string {\r\n let timeLeft = ` (`;\r\n let secLeft = secondsLeft + .5;\r\n let h = Math.floor(secLeft / 3600);\r\n secLeft -= (3600 * h);\r\n let m = Math.floor(secLeft / 60);\r\n secLeft -= (60 * m);\r\n let s = Math.floor(secLeft);\r\n let mPre = '';\r\n if (h !== 0) {\r\n timeLeft += `${h}:`;\r\n mPre = '0';\r\n }\r\n timeLeft += `${(mPre + m.toString()).slice(-2)}:${('0' + s.toString()).slice(-2)})`;\r\n return timeLeft;\r\n }\r\n}\r\n\r\nclass CountDownText extends Component {\r\n\r\n constructor(props: CountDownTextProps) {\r\n super(props);\r\n\r\n this.state = {\r\n SecondsRemaining: this.props.SecondsInitial\r\n };\r\n }\r\n timer = new CountdownTimer();\r\n\r\n setupTimer() {\r\n const controlThis = this;\r\n if (this.props.SecondsInitial > 0) {\r\n this.timer.countDownFrom(this.props.SecondsInitial, 2, (remaining) => {\r\n if (remaining !== controlThis.state.SecondsRemaining) {\r\n controlThis.setState({ SecondsRemaining: remaining })\r\n if (remaining <= 0) {\r\n controlThis.props.OnFinish();\r\n }\r\n }\r\n });\r\n } else {\r\n this.timer.clear();\r\n }\r\n this.setState({ SecondsRemaining: this.props.SecondsInitial })\r\n\r\n }\r\n componentDidMount() {\r\n this.setupTimer();\r\n }\r\n\r\n componentDidUpdate(prevProps: CountDownTextProps) {\r\n if (this.props.SecondsInitial !== prevProps.SecondsInitial) {\r\n this.setupTimer();\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.timer.clear();\r\n }\r\n\r\n render() {\r\n let timeLeft = this.timer.toString(this.state.SecondsRemaining)\r\n\r\n return (timeLeft);\r\n }\r\n}\r\n\r\nexport default CountDownText;","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport IconButton, {IconBookmark, IconBookmarked, IconLike, IconLikeRed, IconFinger, IconRefFactory, IconSelected, IconSelect, IconTrash, IconOffendedFilled, IconOffended, IconSuspectYes, IconSuspect, VoteButton, ScaledIcon, IconPhoto, IconSplotch, IconStartWith } from './iconButton';\r\nimport { User } from 'oidc-client';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport { ChallengeState, MakePaintingLocate, PaintingInfo } from '../storageManager';\r\nimport { Navigate } from 'react-router';\r\nimport { createSearchParams } from 'react-router-dom';\r\nimport { FollowingTile } from './followingPage';\r\nimport { CountdownTimer } from './countDownText';\r\n\r\n\r\nexport interface ChallengeTileState extends SmesshyCommonState {\r\n expandedView: boolean;\r\n challengeState: ChallengeState | undefined;\r\n}\r\n\r\nexport interface ChallengeTileOptions {\r\n ShowResults: boolean;\r\n ShowTitle: boolean;\r\n ShowRules: boolean;\r\n ShowPrize: boolean;\r\n ShowEntrants: boolean;\r\n Prefix: string;\r\n Expanded?: boolean;\r\n}\r\n\r\nexport interface ChallengeTileProps extends SmesshyCommonProps {\r\n Options: ChallengeTileOptions;\r\n TotalVotes?: number;\r\n TotalPoints?: number;\r\n FinalRank?: number;\r\n Title: string;\r\n Id: number;\r\n OnChallengeStateNeeded: (id: number)=>Promise;\r\n OnExpandContract?: (expanded: boolean)=>void;\r\n}\r\n\r\nclass ChallengeTile extends SmesshyCommon(Component) {\r\n\r\n rectRef = React.createRef() as React.RefObject;\r\n constructor(props: ChallengeTileProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n expandedView: props.Options.Expanded === true,\r\n challengeState: undefined\r\n };\r\n }\r\n requestingStateForId: number = -1;\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (this.props.Id !== -1 && (this.state.challengeState === undefined || this.state.challengeState!.challengeId !== this.props.Id) && this.isChallengeStateUsed()) {\r\n if (this.requestingStateForId === this.props.Id) {\r\n return;\r\n }\r\n this.requestingStateForId = this.props.Id;\r\n let controlThis = this;\r\n\r\n this.props.OnChallengeStateNeeded(this.props.Id).then((cs) => {\r\n if (cs.challengeId > 1) {\r\n controlThis.setState({challengeState: cs});\r\n }\r\n controlThis.requestingStateForId = -1;\r\n });\r\n }\r\n if (this.props.OnExpandContract !== undefined && this.state.expandedView !== prevState.expandedView) {\r\n this.props.OnExpandContract(this.state.expandedView);\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n if (this.isChallengeStateNeeded()) {\r\n this.requestingStateForId = this.props.Id;\r\n let controlThis = this;\r\n\r\n this.props.OnChallengeStateNeeded(this.props.Id).then((cs) => {\r\n if (cs.challengeId > 1) {\r\n controlThis.setState({challengeState: cs});\r\n }\r\n controlThis.requestingStateForId = -1;\r\n });\r\n }\r\n if (this.props.OnExpandContract !== undefined) {\r\n this.props.OnExpandContract(this.state.expandedView);\r\n }\r\n\r\n \r\n }\r\n componentWillUnmount() {\r\n }\r\n\r\n isChallengeStateUsed(): boolean {\r\n if (this.state.expandedView === true) {\r\n return true;\r\n }\r\n if (this.props.Options.ShowPrize === true || this.props.Options.ShowRules === true || this.props.Options.ShowEntrants === true) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isChallengeStateNeeded(force: boolean = false): boolean {\r\n if (force === true) {\r\n return true;\r\n }\r\n if (this.isChallengeStateUsed() === false) {\r\n return false;\r\n }\r\n if (this.state.challengeState !== undefined) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`ChallengeTile, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n\r\n let prefix = this.props.Options.Prefix === undefined ? <> :
{this.props.Options.Prefix}
;\r\n let title = this.props.Options.ShowTitle === false ? <> :
{this.props.Title}
;\r\n\r\n if (this.isChallengeStateNeeded()) {\r\n return this.renderFramework(\r\n
\r\n
\r\n
\r\n {prefix}\r\n {title}\r\n
\r\n
\r\n
\r\n Getting the challenge details...\r\n
\r\n
, this.state);\r\n }\r\n\r\n let iconSvgSizeSmall = this._app!.GetScaledPxHeight(14);\r\n let iconSvgSizeBig = this._app!.GetScaledPxHeight(24);\r\n\r\n const onChallengeClick = ()=> {\r\n STrace.addStep('challenge', 'expand', (!this.state.expandedView).toString());\r\n this.setState({expandedView: !this.state.expandedView});\r\n // if (this.state.expandedView === false && this.state.challengeState === undefined) {\r\n // this.props.OnChallengeStateNeeded(this.props.Id).then((cs) => {\r\n // this.setState({challengeState: cs});\r\n // });\r\n // }\r\n };\r\n\r\n let challengeState = this.state.challengeState;\r\n let showRules = <>;\r\n let prize = <>;\r\n let canStamp: boolean = false;\r\n let hasStyleGuide: boolean = false;\r\n let hasStartWith: boolean = false;\r\n let hasColorRestrictions: boolean = false;\r\n let hasTimeLimit: boolean = false;\r\n\r\n if (challengeState !== undefined) {\r\n prize = this.props.Options.ShowPrize === false ? <> :
{`$${challengeState.prizePool}`}
;\r\n canStamp = challengeState.rules === undefined || challengeState.rules === null ||\r\n challengeState.rules.stamps === undefined || challengeState.rules.stamps === null ? challengeState.stampAllowed : challengeState.rules.stamps;\r\n let stamp = canStamp ?
{ScaledIcon(IconPhoto(undefined), iconSvgSizeSmall)}
: <> ;\r\n hasStartWith = challengeState.rules !== undefined && challengeState.rules !== null && \r\n challengeState.rules.startingWith !== undefined && challengeState.rules.startingWith !== null && \r\n challengeState.rules.startingWith.length > 0;\r\n let startWith = hasStartWith ?
{ScaledIcon(IconStartWith(undefined), iconSvgSizeSmall)}
: <> ;\r\n hasColorRestrictions = challengeState.rules !== undefined && challengeState.rules !== null && \r\n challengeState.rules.colorRestrictions !== undefined && challengeState.rules.colorRestrictions !== null && \r\n challengeState.rules.colorRestrictions.length > 0;\r\n let colorRestrictions = <>;\r\n if (hasColorRestrictions) {\r\n colorRestrictions =
\r\n {challengeState.rules.colorRestrictions.map((c, i) => {\r\n return
{ScaledIcon(IconSplotch(c), iconSvgSizeSmall)}
\r\n })}\r\n
\r\n\r\n }\r\n hasTimeLimit = challengeState.rules !== undefined && challengeState.rules !== null && \r\n challengeState.rules.timeLimit !== undefined && challengeState.rules.timeLimit !== null &&\r\n challengeState.rules.timeLimit > 0;\r\n let time = !hasTimeLimit ? <> :
{CountdownTimer.secondsToTime(challengeState.rules.timeLimit)}
;\r\n hasStyleGuide = challengeState.rules !== undefined && challengeState.rules !== null && \r\n challengeState.rules.styleGuide !== undefined && challengeState.rules.styleGuide !== null &&\r\n challengeState.rules.styleGuide.length > 0;\r\n let styleGuide = !hasStyleGuide ? <> :
Style: {challengeState.rules.styleGuide}
;\r\n let entriesCaption = 'Entries: ';\r\n let entries = this.props.Options.ShowEntrants ?
{`${entriesCaption}${challengeState.entries}`}
: <>;\r\n\r\n showRules = this.props.Options.ShowRules === false ? <> : \r\n
\r\n
\r\n {stamp}\r\n {startWith}\r\n {colorRestrictions}\r\n {time}\r\n {styleGuide}\r\n
\r\n {entries}\r\n
;\r\n }\r\n\r\n let showResults = this.props.Options.ShowResults === false ? <> :\r\n
\r\n
\r\n Rank:\r\n
\r\n
\r\n {this.props.FinalRank === undefined || this.props.FinalRank === 0 ? 'unknown' : this.props.FinalRank}\r\n
\r\n
\r\n {`Points/Votes`}\r\n
\r\n
\r\n {this.props.TotalVotes === undefined || this.props.TotalVotes === 0 || this.props.TotalPoints === undefined ? 'unknown' : \r\n `${this.props.TotalPoints}/${this.props.TotalVotes} = ${Math.round(this.props.TotalPoints/this.props.TotalVotes*10)/10}`}\r\n
\r\n
\r\n\r\n return (\r\n <>\r\n
onChallengeClick()}> \r\n
\r\n
\r\n {prefix}\r\n {title}\r\n
\r\n {prize}\r\n
\r\n {showRules}\r\n {showResults}\r\n
\r\n {this.state.expandedView && (\r\n
onChallengeClick()} \r\n style={{maxWidth:512, maxHeight: 1024, position:'absolute', left:0, top: 0, height:'100%', width:'100%', backgroundColor:'rgba(0,0,0,.67)', zIndex: 10}}>\r\n
\r\n
Challenge Details
\r\n
\r\n\r\n
\r\n
\r\n Title\r\n
\r\n
\r\n {title}\r\n
\r\n
\r\n Prize pool\r\n
\r\n
\r\n {`$${challengeState!.prizePool}`}\r\n
\r\n
\r\n Entrants\r\n
\r\n
\r\n {challengeState!.entries}\r\n
\r\n
\r\n Use stamps?\r\n
\r\n
\r\n {canStamp === true ? \r\n
\r\n
\r\n {ScaledIcon(IconPhoto(undefined), iconSvgSizeBig)}\r\n
\r\n
\r\n Yes \r\n
\r\n
:\r\n 'No'}\r\n
\r\n\r\n
\r\n Style Guide\r\n
\r\n
\r\n {!hasStyleGuide ? 'Anything goes' : challengeState!.rules.styleGuide}\r\n
\r\n
\r\n Start with\r\n
\r\n
\r\n {!hasStartWith ? \r\n 'A blank page' :\r\n
\r\n
\r\n {ScaledIcon(IconStartWith(undefined), iconSvgSizeBig)}\r\n
\r\n
\r\n A Surprise \r\n
\r\n
}\r\n
\r\n
\r\n Time limit\r\n
\r\n
\r\n {!hasTimeLimit ? 'None (except the deadline)' : `Yes, only ${CountdownTimer.secondsToTime(challengeState!.rules.timeLimit)} minutes!`}\r\n
\r\n
\r\n Colors\r\n
\r\n
\r\n {!hasColorRestrictions ? \r\n 'Any you can make (a lot)' :\r\n
\r\n
\r\n Only these:\r\n
\r\n {challengeState!.rules.colorRestrictions.map((c, i) => {\r\n return
{ScaledIcon(IconSplotch(c), iconSvgSizeBig)}
\r\n })}\r\n\r\n
}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n );\r\n }\r\n}\r\n\r\nexport default ChallengeTile;","import React, { Component } from 'react';\r\nimport Smear from './components/smash/smear';\r\nimport FingerTip from './components/smash/fingertip';\r\nimport { smesshySplash } from './smeshySplash';\r\nimport { Link, Navigate, createSearchParams } from 'react-router-dom';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState, SmesshyNavigateOptions } from './smesshyCommon';\r\nimport { SmesshyMainButton, SmesshySubButton } from './components/smesshyButton';\r\nimport GamePage from './components/gamePage';\r\nimport randoFacts from './randoFacts';\r\nimport PickRandomFact from './randoFacts';\r\nimport { ArtistProfile, ChallengeState, PaintingInfo, UnknownChallengeState } from './storageManager';\r\nimport CountDownText from './components/countDownText';\r\nimport { getTextSegments } from './components/smash/utils';\r\nimport ChallengeTile from './components/challengeTile';\r\nimport { RuleTester } from 'eslint';\r\n\r\nexport interface SmesshyState extends SmesshyCommonState {\r\n showSplash: boolean;\r\n splashText: string;\r\n inSetupApp: boolean;\r\n challengeState: ChallengeState;\r\n userName: string;\r\n selfPortraitUrl: string | undefined;\r\n\r\n}\r\nexport interface SmesshyProps extends SmesshyCommonProps {\r\n ShowSplash: boolean;\r\n}\r\n\r\nexport const Footer = (
);\r\n\r\nclass Smesshy extends SmesshyCommon(Component) {\r\n\r\n splashSmearRef: React.RefObject | null = null;\r\n\r\n constructor(props: SmesshyProps) {\r\n super(props);\r\n try {\r\n this.initCommon(props.AppObject);\r\n \r\n this.splashSmearRef = React.createRef();\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n splashText: PickRandomFact(),\r\n authenticated: false, \r\n showSplash: false,\r\n inSetupApp: false,\r\n doRefresh: false,\r\n userName: '',\r\n selfPortraitUrl: undefined,\r\n challengeState: {\r\n challengeId: -1,\r\n state: 'undefined',\r\n prizePool: 0,\r\n title: '',\r\n voteRoundCurrent: 0,\r\n voteRoundsTotal: 0,\r\n timeLeft: 2*60,\r\n roundTimeLeft: 2*60,\r\n stampAllowed: false,\r\n entries:0, \r\n rules:{stamps:false, timeLimit:0, styleGuide:'', colorRestrictions:[], startingWith:''}\r\n }\r\n };\r\n } catch (e: any) {\r\n props.AppObject.reportException(`smesshy, constructor`, 'ex', '', e)\r\n }\r\n }\r\n\r\n splashTimeout: NodeJS.Timeout | undefined = undefined;\r\n\r\n static async getSpecificChallengeStateAsync(controlFrom: any, cId: number | undefined, required: boolean) : Promise {\r\n controlFrom.pushWaitingFrame(controlFrom);\r\n STrace.addStep('smesshy', 'getChallengeStateAsync', '');\r\n let challengeState = await controlFrom.storageManager!.getChallengeStateAsync(cId, required);\r\n // challengeState = {\r\n // challengeId: 138,\r\n // state: 'paint',\r\n // prizePool: 600,\r\n // title: 'In Development',\r\n // voteRoundCurrent: 0,\r\n // voteRoundsTotal: 1,\r\n // timeLeft: 1400,\r\n // roundTimeLeft: 140000,\r\n // stampAllowed: false,\r\n // entries:123456, \r\n // rules:{stamps:false, \r\n // timeLimit:25, \r\n // styleGuide:'', \r\n // colorRestrictions:[], \r\n // //colorRestrictions:[\"#000000\", \"#FFFFFF\", \"#fdc70c\", \"#df0033\"], be0c00 140841\r\n // startingWith:'BAAAAAUFAwABBAAAAAUFBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBREFEgUTBAAAAAUTAwADAQCIANMMBwCIANMAAwABAQDQAM0MBwDQAM0AAwACBP///wUFBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBREE////BREDAAIBAIcA0gwHAIcA0gADAAIBANEAzgwHANIAzgADAAEEAAAABQUFBQQAAAAFBQMAAwEAhwDTBQcAhwDTAAMAAQEAzwDNBQcA0ADNAAMACgQUCEEFBQUFBQYFBwUIBQkFCgULBQwFDQQUCEEFDQMADAEAHQAbGgIAIQAbGgIAJwAbGgIALAAaGgIAMwAbGgIANwAcGgIAQwAhGgIASAAjGgIATgAjGgIAUwAgGgIAVwAdGgIAXwAfGgIAZgAhGgIAbQAhGgIAcgAhGgcAdgAeAAMABA=='\r\n // }\r\n // };\r\n\r\n\r\n\r\n controlFrom.popWaitingFrame();\r\n return challengeState;\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('smesshy', 'didMound', '');\r\n\r\n // localStorage.setItem('_lastExceptionSource', '');\r\n // localStorage.setItem('_lastExceptionText', '');\r\n // localStorage.setItem('_lastExceptionKind', '');\r\n // localStorage.setItem('_lastExceptionCode', '');\r\n // console.log('last exception cleared');\r\n\r\n\r\n let controlThis = this;\r\n this.pushWaitingFrame(this);\r\n\r\n this.executeAsync(async ()=> {\r\n let challengeState = await Smesshy.getSpecificChallengeStateAsync(controlThis, undefined, false);\r\n if (challengeState !== undefined) {\r\n controlThis.setState({ challengeState:challengeState});\r\n }\r\n });\r\n if (!this._inPWA) {\r\n // no auth done, so trigger splash here\r\n if (this.props.ShowSplash === true) {\r\n this.setState({showSplash:true});\r\n }\r\n }\r\n this.popWaitingFrame();\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('smesshy', 'populateAuth', authenticated.toString());\r\n\r\n const controlThis = this;\r\n // we do this to ensure that a newly created account (in the auth backend) gets created on the app front end too\r\n if (authenticated && this._inPWA) {\r\n STrace.addStep('smesshy', 'getUserArtistProfileAsync', '');\r\n let prof = await controlThis.storageManager!.getUserArtistProfileAsync();\r\n if (prof !== undefined) {\r\n controlThis.setState({authenticated:true, userName: prof.artistName!, selfPortraitUrl: undefined});\r\n if (prof.artistImageId !== null && prof.artistImageId !== undefined) {\r\n const fakeInfs: Array = [{visibilityKind:'publ', paintingId: prof.artistImageId, artistProfile:{} as ArtistProfile}];\r\n STrace.addStep('smesshy', 'getPaintingPreviews', 'selfPortrait');\r\n const token = (await controlThis.getAccessToken())!;\r\n this.storageManager!.getPaintingPreviews(token, fakeInfs, (pins=>{\r\n if (pins.length === 1) {\r\n let selfPortraitUrl = pins[0].imageDetail!.preview;\r\n this.setState({ selfPortraitUrl: selfPortraitUrl});\r\n }\r\n }))\r\n }\r\n } else {\r\n controlThis.setState({userName: '', selfPortraitUrl: undefined, authenticated: false});\r\n }\r\n\r\n } else {\r\n controlThis.setState({userName: '', selfPortraitUrl: undefined, authenticated: false});\r\n }\r\n // start the splash playback after any auth flow because it might cause a timeout on token refresh\r\n if (this.props.ShowSplash === true) {\r\n this.setState({showSplash:true});\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n\r\n }\r\n \r\n componentWillUnmount() {\r\n if (this.splashTimeout !== undefined) {\r\n clearTimeout(this.splashTimeout);\r\n this.splashTimeout = undefined;\r\n }\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender(); // what kind of nerd would name an important inner function with a pun taken from a netflix show?\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`smesshy, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n let voteInfo =
;\r\n const timerExpire = ()=>{\r\n controlThis.setState({challengeState: UnknownChallengeState});\r\n\r\n };\r\n\r\n if (this.state.showSplash) {\r\n\r\n const showSplash = (splashSmash:Smear, actualRect: DOMRect | undefined)=> {\r\n if (actualRect != undefined) {\r\n // drawn at 350x256 so center if needed\r\n if (actualRect.width > 350 && actualRect.height > 256) {\r\n splashSmash.setReplayOrigin((actualRect.width -350) / 2, (actualRect.height - 256) / 2); \r\n }\r\n }\r\n\r\n splashSmash.replayRecorded(3, 6, smesshySplash);\r\n\r\n controlThis.setState({showSplash:false})\r\n controlThis.splashTimeout = undefined;\r\n controlThis.props.AppObject.setState({showSplash: false});\r\n }\r\n\r\n this.splashTimeout = setTimeout(() => {\r\n let splashSmash = this.splashSmearRef!.current!\r\n if (splashSmash !== null) {\r\n showSplash(splashSmash, splashSmash.boundingClientRect());\r\n } else {\r\n // try again with a longer wait\r\n this.splashTimeout = setTimeout(() => {\r\n let splashSmash = this.splashSmearRef!.current!\r\n if (splashSmash !== null) {\r\n showSplash(splashSmash, splashSmash.boundingClientRect());\r\n }\r\n }, 2000);\r\n }}, 750);\r\n }\r\n\r\n let smesshyOptions = <>;\r\n\r\n let challengeButtonInstallRequired = false;\r\n let challengeButtonTimeLeft=
;\r\n let challengeButtonText = '';\r\n let challengeButtonIcon = '';\r\n let challengeRulesText = '';\r\n let challengeTitleText = '';\r\n let challengeButtonNavigateTo : SmesshyNavigateOptions | string = '';\r\n\r\n if (this.state.challengeState.title !== undefined && this.state.challengeState.title.length > 0) {\r\n challengeTitleText = `\"${this.state.challengeState.title}\"`\r\n }\r\n challengeRulesText = `Special Rules: No 'stamps' allowed`;\r\n if (this.state.challengeState.stampAllowed) {\r\n challengeRulesText = 'Special Rules: Collage challenge, stamp it up!';\r\n }\r\n\r\n let showChallengePane = false;\r\n switch (this.state.challengeState.state) {\r\n case 'undefined':\r\n challengeButtonTimeLeft=
;\r\n challengeButtonText = 'Wait';\r\n challengeButtonIcon = 'wait.png';\r\n challengeTitleText = '(Still looking it up...)';\r\n challengeRulesText = `'Ya gotta hang on`;\r\n challengeButtonNavigateTo = 'refresh';\r\n break;\r\n case 'unknown':\r\n challengeButtonTimeLeft=
;\r\n challengeButtonText = 'Fix it';\r\n challengeButtonIcon = 'confused.png';\r\n challengeTitleText = 'Smesshy is Confused';\r\n challengeRulesText = `Push 'Fix it' to fix it`;\r\n challengeButtonNavigateTo = 'refresh';\r\n break;\r\n case 'none':\r\n challengeButtonTimeLeft= {timerExpire()}}/>;\r\n challengeButtonText = 'Wait';\r\n challengeButtonIcon = 'wait.png';\r\n challengeTitleText = 'Finished, new one soon';\r\n challengeRulesText = `You should look at the Winners`;\r\n challengeButtonNavigateTo = 'refresh';\r\n break;\r\n case 'paint':\r\n showChallengePane = true;\r\n challengeButtonTimeLeft= {timerExpire()}}/>;\r\n challengeButtonText = 'Enter Now';\r\n challengeButtonIcon = 'enter.png';\r\n challengeButtonNavigateTo = {To: {pathname:'/painting', search:`?${createSearchParams({saveMode: 'chal', stampAllowed: this.state.challengeState.stampAllowed.toString()})}`}};\r\n challengeButtonInstallRequired = true;\r\n break;\r\n case 'vote':\r\n showChallengePane = true;\r\n challengeButtonTimeLeft= {timerExpire()}}/>;\r\n challengeButtonText = 'Vote Now';\r\n challengeButtonIcon = 'vote.png';\r\n challengeButtonNavigateTo = {To: '/vote'};\r\n challengeButtonInstallRequired = true;\r\n break;\r\n case 'working':\r\n showChallengePane = true;\r\n challengeButtonTimeLeft= {timerExpire()}}/>;\r\n challengeButtonText = 'Counting';\r\n challengeButtonIcon = 'wait.png';\r\n challengeButtonNavigateTo = 'refresh';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n let challengeButton = \r\n
\r\n
{challengeButtonText}
\r\n
{challengeButtonTimeLeft}
\r\n
\r\n \r\n }\r\n \r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n if (challengeButtonNavigateTo === 'refresh') {\r\n controlThis.setState({doRefresh:true});\r\n } else {\r\n if (challengeButtonInstallRequired) {\r\n let reqNav = controlThis.requireSetup(() => {\r\n controlThis.setState({navigateTo: challengeButtonNavigateTo as SmesshyNavigateOptions});\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n }\r\n } \r\n return true;\r\n }}\r\n />;\r\n\r\n let challengeResultButton = \r\n
\r\n Winners\r\n
\r\n \r\n \r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n if (controlThis.state.challengeState.state === 'unknown') {\r\n controlThis.setState({doRefresh:true});\r\n } else if (controlThis.state.challengeState.state === 'paint') {\r\n controlThis.setState({navigateTo: {To: '/result'}});\r\n } else {\r\n controlThis.setState({navigateTo: {To: '/result'}});\r\n }\r\n return true;\r\n }}\r\n />;\r\n let challengeBestEverButton = \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n B\r\n B\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n S\r\n S\r\n \r\n \r\n T\r\n T\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n V\r\n V\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n R\r\n R\r\n \r\n \r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('gallery doors', 'pick door', 'global popular');\r\n controlThis.setState({navigateTo:{To:{pathname:'/gallery-doors/gallery', search:`?${createSearchParams({title: 'All time best from challenges:', scope: 'global', filter:'popular', auth:'false'})}`} }})\r\n return true;\r\n }}\r\n />;\r\n \r\n\r\n let challengeInfo =
\r\n
\r\n
\r\n
Challenges
\r\n
\r\n
Prize Pool:
\r\n
{`$${this.state.challengeState.prizePool}`}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {showChallengePane ?\r\n
\r\n {\r\n if (this.state.challengeState.challengeId === cId) {\r\n return this.state.challengeState;\r\n } else {\r\n return await Smesshy.getSpecificChallengeStateAsync(controlThis, cId, true);\r\n }\r\n }}\r\n Options={{ShowResults: false, ShowTitle: true, ShowRules: true, ShowPrize: false, ShowEntrants:true, Prefix:'On Now:'}}\r\n />\r\n
:\r\n <>\r\n
\r\n
On Now:
\r\n
{challengeTitleText}
\r\n
\r\n
\r\n
{challengeRulesText}
\r\n
\r\n }\r\n\r\n
\r\n {challengeButton}\r\n {challengeResultButton}\r\n
\r\n
\r\n
\r\n {challengeBestEverButton}\r\n
\r\n
\r\n
\r\n\r\n\r\n // lunchbox stuff\r\n let namePart1 = '';\r\n let namePart2 ='';\r\n let namePart3 ='';\r\n let namePart4 ='';\r\n if (this.state.userName.length > 0) {\r\n let segments = getTextSegments(this.state.userName, '32px Rubik Distressed', 190);\r\n if (segments.length > 0) {\r\n namePart1 = segments[0];\r\n }\r\n if (segments.length > 1) {\r\n namePart2 = segments[1];\r\n }\r\n if (segments.length > 2) {\r\n namePart3 = segments[2];\r\n }\r\n if (segments.length > 3) {\r\n namePart4 = segments[3];\r\n }\r\n }\r\n\r\n let artistImage = <>;\r\n if (this.state.selfPortraitUrl !== undefined) {\r\n artistImage = \r\n }\r\n\r\n let lunchboxButton = \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {artistImage}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {namePart1}\r\n {namePart2}\r\n {namePart3}\r\n {namePart4}\r\n \r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({navigateTo:{To:{pathname:'/lunchbox'} }});\r\n return true;\r\n }}\r\n />;\r\n\r\n let galleryButton = \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n F\r\n F\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n D\r\n D\r\n \r\n \r\n M\r\n M\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n !\r\n !\r\n \r\n\r\n \r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({navigateTo: {To: '/feed'}});\r\n return true;\r\n }}\r\n />;\r\n\r\n\r\n let paintButton = \r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n ExtraStyleClass='width-100p'\r\n OnPressFinish={async (): Promise=>{\r\n if (controlThis._inPWA) {\r\n controlThis.setState({navigateTo: {To:{pathname:'/painting', search:`?${createSearchParams({saveMode: 'any'})}`}}});\r\n } else {\r\n controlThis.setState({navigateTo: {To:{pathname:'/painting', search:`?${createSearchParams({mode: 'anon'})}`}}});\r\n }\r\n return true;\r\n }}\r\n />;\r\n\r\n smesshyOptions= <>\r\n {challengeInfo}\r\n
\r\n
\r\n
\r\n
Social Dumpster Fire
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {galleryButton}\r\n {lunchboxButton}\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n Followers\r\n
\r\n
\r\n Following\r\n
\r\n
\r\n \r\n\r\n
\r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('main', 'following', '');\r\n controlThis.setState({navigateTo:{To:'/following'}});\r\n return true;\r\n }}\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
Just Me
\r\n
\r\n
\r\n
\r\n Stats\r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({navigateTo: {To: '/stats'}});\r\n return true;\r\n }}\r\n />\r\n
\r\n {paintButton}\r\n
\r\n\r\n \r\n
\r\n Settings\r\n
\r\n \r\n \r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({navigateTo: {To:'/settings'}});\r\n return true;\r\n }}\r\n />\r\n\r\n
\r\n
\r\n ;\r\n \r\n return this.renderFramework(\r\n \r\n
\r\n Smesshy!\r\n
\r\n }\r\n OnPopulateAuthenticationState={this._inPWA ? async (authenticated: boolean) => { await controlThis.onPopulateAuthenticationState(authenticated) } : undefined}\r\n Body={\r\n <>\r\n
\r\n
\r\n {\r\n\r\n let f= crc.font;\r\n crc.fillStyle='black';\r\n var words = this.state.splashText.split(\" \");\r\n var currentLine = words[0];\r\n let y = 190;\r\n for (var i = 1; i < words.length; i++) {\r\n var word = words[i];\r\n var met = crc.measureText(currentLine + \" \" + word);\r\n var width = met.width;\r\n if (width < 280) {\r\n currentLine += \" \" + word;\r\n } else {\r\n crc.fillText(currentLine, 60, y);\r\n y+= met.actualBoundingBoxAscent + met.actualBoundingBoxDescent;\r\n currentLine = word;\r\n }\r\n }\r\n crc.fillText(currentLine, 60, y);\r\n\r\n }}\r\n TextureSmash={false}\r\n SampleMode={false}\r\n OnColorSample={(rgb)=>{}}\r\n ExceptionHandler={(source: string, kind: string, code: string, exception: unknown)=>{this.props.AppObject.reportException(source, kind, code, exception)}}\r\n />\r\n ?} Haptic={this.doButtonHaptic()} StartPushedState={false} ExtraStyleClass='smesshy-wtf' OnPressFinish={async (): Promise=>{\r\n controlThis.setState({askQuestion:{\r\n Top: 100,\r\n Title: What Did That Say?,\r\n Prompts: [{this.state.splashText}],\r\n Options: [{Key:'okGreat', Option:Uhh... thanks ?!?, OnOption:async ():Promise=>{\r\n controlThis.setState({askQuestion:undefined})\r\n return true;\r\n }}], OnCancel:()=>{\r\n controlThis.setState({askQuestion:undefined});\r\n }\r\n }});\r\n return true;\r\n }}/>\r\n
\r\n
\r\n \r\n
\r\n
\r\n {smesshyOptions}\r\n
\r\n
\r\n }\r\n />, this.state);\r\n }\r\n}\r\n\r\nexport default Smesshy;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import React, { Component } from 'react';\r\nimport { Footer } from '../smesshy';\r\nimport { CloseButton } from './iconButton';\r\nimport { start } from 'repl';\r\nimport { SmesshyDiagnosticLog } from '../storageManager';\r\nimport {App} from '../App';\r\nimport { SmesshyCommon, SmesshyCommonProps } from '../smesshyCommon';\r\n\r\nexport interface ImageLocateState {\r\n mode: string;\r\n img: HTMLImageElement | undefined;\r\n imgWidth: number;\r\n imgHeight: number;\r\n offsetX: number;\r\n offsetY: number;\r\n scaleWidth: number;\r\n scaleHeight: number;\r\n rotation: number;\r\n sx: number;\r\n sy: number;\r\n sw: number;\r\n sh: number;\r\n dx: number;\r\n dy: number;\r\n dw: number;\r\n dh: number;\r\n}\r\nexport interface ImageLocateProps extends SmesshyCommonProps {\r\n Url: string;\r\n Bounds: DOMRect;\r\n OnPlacement: (img: HTMLImageElement, offX: number, offY: number, width: number, height: number, scaleWidth: number, scaleHeight: number, rotation: number)=>void;\r\n \r\n}\r\n\r\n\r\nclass ImageLocate extends SmesshyCommon(Component) {\r\n\r\n diag = new SmesshyDiagnosticLog();\r\n pointerEventAction: string | undefined = undefined;\r\n\r\n startOffsetX: number = 0; \r\n startOffsetY: number = 0;\r\n startScaleWidth: number = 0;\r\n startScaleHeight: number = 0;\r\n startRotation: number = 0;\r\n primPointerId: number | undefined = undefined;\r\n startPrimX: number = 0;\r\n startPrimY: number = 0;\r\n secPointerId: number | undefined = undefined;\r\n startSecX: number = 0;\r\n startSecY: number = 0;\r\n\r\n lastOffsetX : number = 0;\r\n lastOffsetY : number = 0;\r\n lastScaleWidth : number = 0;\r\n lastScaleHeight : number = 0;\r\n lastRotation : number = 0;\r\n lastPrimX : number = 0;\r\n lastPrimY : number = 0;\r\n lastSecX : number = 0;\r\n lastSecY : number = 0;\r\n\r\n\r\n\r\n constructor(props: ImageLocateProps) {\r\n super(props);\r\n\r\n this.state = {\r\n mode: 'load',\r\n img: undefined,\r\n sx: 0,\r\n sy: 0,\r\n sw: 0,\r\n sh: 0,\r\n dx: 0,\r\n dy: 0,\r\n dw: 0,\r\n dh: 0,\r\n imgWidth: 0,\r\n imgHeight: 0,\r\n offsetX: 0,\r\n offsetY: 0,\r\n scaleWidth: 0,\r\n scaleHeight: 0,\r\n rotation: 0\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const controlThis = this;\r\n let width = this.props.Bounds.width;\r\n let height = this.props.Bounds.height;\r\n let img = new Image();\r\n img.src = this.props.Url;\r\n img.onload = (ev)=>{\r\n let sampDx = img.width;\r\n let sampDy = img.height;\r\n let visDx = width;\r\n let visDy = height;\r\n var hRatio = visDx / sampDx;\r\n var vRatio = visDy / sampDy;\r\n var ratio = Math.min ( hRatio, vRatio );\r\n if (ratio < 1){\r\n if (hRatio < vRatio) {\r\n visDy = sampDy * ratio;\r\n } else {\r\n visDx = sampDx * ratio;\r\n }\r\n } else {\r\n ratio = 1;\r\n visDy = sampDy\r\n visDx = sampDx;\r\n }\r\n ratio /= 1;\r\n this.lastScaleWidth = ratio;\r\n this.lastScaleHeight = ratio;\r\n this.startScaleHeight = ratio;\r\n this.startScaleWidth = ratio;\r\n \r\n controlThis.setState({mode: 'wait', img: img, sx:0, sy:0, sw: sampDx, sh: sampDy, dx: 0, dy: 0, dw: visDx, dh: visDy,\r\n imgWidth: sampDx,\r\n imgHeight: sampDy,\r\n offsetX: 0,\r\n offsetY: 0,\r\n scaleWidth: ratio,\r\n scaleHeight: ratio,\r\n rotation: 0})\r\n\r\n }\r\n \r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`image locate, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n const controlThis = this;\r\n\r\n const boundLeft = this.props.Bounds.left;\r\n const boundTop = this.props.Bounds.top;\r\n const boundWidth = this.props.Bounds.width;\r\n const boundHeight = this.props.Bounds.height;\r\n\r\n const imgLeft = this.state.offsetX + boundLeft;\r\n const imgTop = this.state.offsetY + boundTop;\r\n const imgWidth = this.state.imgWidth * this.state.scaleWidth;\r\n const imgHeight = this.state.imgHeight * this.state.scaleHeight;\r\n\r\n const handleRadius = 5;\r\n const rotateCharm = 20;\r\n const rotateCharmOff = 10;\r\n\r\n const handleLeft = imgLeft - handleRadius; \r\n const handleWidth = imgWidth + 2 * handleRadius; \r\n const handleTop = imgTop - rotateCharm - rotateCharmOff; \r\n const handleHeight = imgHeight + rotateCharm + rotateCharmOff + handleRadius;\r\n\r\n let pointerDown = (evt: React.PointerEvent, action: string)=> {\r\n\r\n let pointer = evt.pointerId;\r\n\r\n if (this.primPointerId === undefined) {\r\n // single pointer down\r\n // probably not needed, but commit any pending changes\r\n controlThis.startOffsetX = controlThis.lastOffsetX;\r\n controlThis.startOffsetY = controlThis.lastOffsetY;\r\n controlThis.startScaleWidth = controlThis.lastScaleWidth;\r\n controlThis.startScaleHeight = controlThis.lastScaleHeight;\r\n controlThis.startRotation = controlThis.lastRotation;\r\n\r\n this.primPointerId = pointer;\r\n controlThis.startPrimX = controlThis.lastPrimX = evt.clientX;\r\n controlThis.startPrimY = controlThis.lastPrimY = evt.clientY;\r\n evt.currentTarget.setPointerCapture(pointer);\r\n //controlThis.diag.log(`down p1:${pointer} action:${action} x:${evt.clientX} y:${evt.clientY}`);\r\n \r\n } else {\r\n if (this.secPointerId === undefined && action === 'move') {\r\n\r\n // starting two pointer scale and rotate\r\n // commit any pending changes\r\n controlThis.startOffsetX = controlThis.lastOffsetX;\r\n controlThis.startOffsetY = controlThis.lastOffsetY;\r\n controlThis.startScaleWidth = controlThis.lastScaleWidth;\r\n controlThis.startScaleHeight = controlThis.lastScaleHeight;\r\n controlThis.startRotation = controlThis.lastRotation;\r\n // pretend like pointer1 came down also\r\n controlThis.startPrimX = controlThis.lastPrimX;\r\n controlThis.startPrimY = controlThis.lastPrimY;\r\n // start pointer 2\r\n this.secPointerId = pointer;\r\n controlThis.startSecX = controlThis.lastSecX = evt.clientX;\r\n controlThis.startSecY = controlThis.lastSecY = evt.clientY;\r\n evt.currentTarget.setPointerCapture(pointer);\r\n //controlThis.diag.log(`down p2:${pointer} action:${action} x:${evt.clientX} y:${evt.clientY}`);\r\n }\r\n else \r\n {\r\n //controlThis.diag.log(`down other action:${action} x:${evt.clientX} y:${evt.clientY}`);\r\n }\r\n }\r\n\r\n controlThis.pointerEventAction = action;\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n \r\n }\r\n\r\n\r\n let pointerMove = (evt: React.PointerEvent, action: string)=> {\r\n\r\n if (!(evt.pointerId === controlThis.primPointerId || evt.pointerId === controlThis.secPointerId)){\r\n return;\r\n }\r\n \r\n let dxPrim = 0;\r\n let dyPrim = 0;\r\n let dxSec = 0;\r\n let dySec = 0;\r\n\r\n if (controlThis.primPointerId === evt.pointerId) {\r\n controlThis.lastPrimX = evt.clientX;\r\n controlThis.lastPrimY = evt.clientY;\r\n dxPrim = controlThis.lastPrimX - controlThis.startPrimX;\r\n dyPrim = controlThis.lastPrimY - controlThis.startPrimY;\r\n //controlThis.diag.log(`move p1:${evt.pointerId} action:${action} x:${evt.clientX} y:${evt.clientY}`);\r\n } else if (controlThis.secPointerId === evt.pointerId) {\r\n controlThis.lastSecX = evt.clientX;\r\n controlThis.lastSecY = evt.clientY;\r\n dxSec = controlThis.lastSecX - controlThis.startSecX;\r\n dySec = controlThis.lastSecY - controlThis.startSecY;\r\n //controlThis.diag.log(`move p2:${evt.pointerId} action:${action} x:${evt.clientX} y:${evt.clientY}`);\r\n } else {\r\n return;\r\n }\r\n\r\n let dw = dxPrim;\r\n let dh = dyPrim;\r\n\r\n let setOffsetX= false;\r\n let setOffsetY= false;\r\n let setScaleX= false;\r\n let setScaleY= false;\r\n let followScaleY= false;\r\n let setRotation= false;\r\n let twoPointAdjust = false;\r\n \r\n switch (action) {\r\n case 'move':\r\n if (controlThis.primPointerId !== undefined && controlThis.secPointerId !== undefined) {\r\n twoPointAdjust = true;\r\n } else {\r\n setOffsetX = true;\r\n setOffsetY = true;\r\n }\r\n break;\r\n case 'rotate':\r\n setRotation=true;\r\n break;\r\n case 'size-nw':\r\n dh = -dh;\r\n dw = -dw;\r\n setScaleX=true;\r\n followScaleY = true;\r\n setOffsetX = true;\r\n setOffsetY = true;\r\n break;\r\n case 'size-n':\r\n dh = -dh;\r\n setScaleY=true;\r\n setOffsetY = true;\r\n break;\r\n case 'size-ne':\r\n dh = -dh;\r\n setScaleX=true;\r\n followScaleY = true;\r\n setOffsetY = true;\r\n break;\r\n case 'size-w':\r\n dw = -dw;\r\n setScaleX=true;\r\n setOffsetX = true;\r\n break;\r\n case 'size-e':\r\n setScaleX=true;\r\n break;\r\n case 'size-sw':\r\n dw = -dw;\r\n setScaleX=true;\r\n followScaleY = true;\r\n setOffsetX = true;\r\n break;\r\n case 'size-s':\r\n setScaleY=true;\r\n break;\r\n case 'size-se':\r\n setScaleX=true;\r\n followScaleY = true;\r\n break;\r\n\r\n }\r\n\r\n let newRotation = controlThis.lastRotation;\r\n let newOffsetX = controlThis.lastOffsetX;\r\n let newOffsetY = controlThis.lastOffsetY;\r\n let newScaleWidth = controlThis.lastScaleWidth;\r\n let newScaleHeight = controlThis.lastScaleHeight;\r\n let alterScaleWidth = 1;\r\n let alterScaleHeight = 1;\r\n \r\n if (setOffsetX) {\r\n newOffsetX = controlThis.startOffsetX + dxPrim;\r\n }\r\n if (setOffsetY) {\r\n newOffsetY = controlThis.startOffsetY + dyPrim;\r\n }\r\n if (setScaleX) {\r\n let widthStart = controlThis.state.imgWidth * controlThis.startScaleWidth;\r\n let widthNow = widthStart + dw;\r\n if (widthStart !== widthNow && widthNow > 0) {\r\n alterScaleWidth = widthNow / widthStart;\r\n newScaleWidth = controlThis.startScaleWidth * alterScaleWidth;\r\n }\r\n }\r\n if (setScaleY) {\r\n let heightStart = controlThis.state.imgHeight * controlThis.startScaleHeight;\r\n let heightNow = heightStart + dh;\r\n if (heightStart !== heightNow && heightNow > 0) {\r\n alterScaleHeight = heightNow / heightStart;\r\n newScaleHeight = controlThis.startScaleHeight * alterScaleHeight;\r\n }\r\n }\r\n\r\n if (followScaleY) {\r\n newScaleHeight = controlThis.startScaleHeight * alterScaleWidth;\r\n }\r\n\r\n if (setRotation) {\r\n if (dxPrim !==0 || dyPrim !== 0) {\r\n let cX = this.startOffsetX + (this.state.imgWidth * this.startScaleWidth)/2;\r\n let cY = this.startOffsetY + (this.state.imgHeight * this.startScaleHeight)/2;\r\n let aStart = Math.atan2(((controlThis.startPrimY!)-cY), ((controlThis.startPrimX!)-cX));\r\n let aNow = Math.atan2(((controlThis.startPrimY! + dyPrim)-cY), ((controlThis.startPrimX!+dxPrim)-cX));\r\n let rotationThis = aNow-aStart;\r\n newRotation = controlThis.startRotation + rotationThis;\r\n }\r\n\r\n }\r\n if (twoPointAdjust) {\r\n\r\n let dxStart = controlThis.startSecX! - controlThis.startPrimX!;\r\n let dyStart = controlThis.startSecY! - controlThis.startPrimY!;\r\n\r\n let dxLast = controlThis.lastSecX! - controlThis.lastPrimX!;\r\n let dyLast = controlThis.lastSecY! - controlThis.lastPrimY!;\r\n\r\n let startD = Math.sqrt((dxStart*dxStart)+(dyStart*dyStart));\r\n let lastD = Math.sqrt((dxLast*dxLast)+(dyLast*dyLast));\r\n let alterScale = lastD / startD;\r\n newScaleHeight = controlThis.startScaleHeight * alterScale;\r\n newScaleWidth = controlThis.startScaleWidth * alterScale;\r\n let widthStart = controlThis.startScaleWidth * controlThis.state.imgWidth;\r\n let heightStart = controlThis.startScaleHeight * controlThis.state.imgHeight;\r\n let widthLast = newScaleWidth * controlThis.state.imgWidth;\r\n let heightLast = newScaleHeight * controlThis.state.imgHeight;\r\n let dx = (widthLast - widthStart)/2;\r\n let dy = (heightLast - heightStart)/2;\r\n newOffsetX = controlThis.startOffsetX - dx;\r\n newOffsetY = controlThis.startOffsetY - dy;\r\n\r\n let aStart = Math.atan2(dyStart, dxStart);\r\n let aNow = Math.atan2(dyLast, dxLast);\r\n let rotationThis = aNow-aStart;\r\n newRotation = controlThis.startRotation + rotationThis;\r\n \r\n }\r\n\r\n let widthNew = newScaleWidth * controlThis.state.imgWidth;\r\n let heighNew = newScaleHeight * controlThis.state.imgHeight;\r\n if (newOffsetX + handleRadius >= this.props.Bounds.width || newOffsetX + widthNew - handleRadius <= 0 || newOffsetY + handleRadius >= this.props.Bounds.height || newOffsetY + heighNew - handleRadius <= 0) {\r\n return;\r\n }\r\n\r\n controlThis.lastRotation = newRotation;\r\n controlThis.lastOffsetX = newOffsetX;\r\n controlThis.lastOffsetY = newOffsetY;\r\n controlThis.lastScaleWidth = newScaleWidth;\r\n controlThis.lastScaleHeight = newScaleHeight;\r\n\r\n\r\n //controlThis.diag.log(`two pt:${twoPointAdjust} lastOffsetX:${newOffsetX}, lastOffsetY:${newOffsetY}, lastScaleWidth:${newScaleWidth}, lastScaleHeight:${newScaleHeight}, lastRotation:${newRotation}`);\r\n\r\n controlThis.setState({offsetX:newOffsetX, offsetY: newOffsetY, scaleWidth: newScaleWidth, scaleHeight: newScaleHeight, rotation: newRotation});\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n \r\n }\r\n let pointerUp = (evt: React.PointerEvent, action: string)=> {\r\n\r\n if (!(evt.pointerId === controlThis.primPointerId || evt.pointerId === controlThis.secPointerId)){\r\n return;\r\n }\r\n\r\n if (controlThis.primPointerId === evt.pointerId) {\r\n evt.currentTarget.releasePointerCapture(evt.pointerId);\r\n if (controlThis.secPointerId !== undefined ){\r\n // was two finger and first finger lifted while second still down.\r\n // commit two finger \r\n controlThis.startOffsetX = controlThis.lastOffsetX;\r\n controlThis.startOffsetY = controlThis.lastOffsetY;\r\n controlThis.startScaleWidth = controlThis.lastScaleWidth;\r\n controlThis.startScaleHeight = controlThis.lastScaleHeight;\r\n controlThis.startRotation = controlThis.lastRotation;\r\n // to simplify other logic, make the second finger the primary and pretend like it just landed\r\n controlThis.primPointerId = controlThis.secPointerId;\r\n controlThis.secPointerId = undefined;\r\n controlThis.startPrimX = controlThis.lastSecX;\r\n controlThis.startPrimY = controlThis.lastSecY;\r\n \r\n //controlThis.diag.log(`up p1 swap:${evt.pointerId} to ${controlThis.primPointerId} startPrimX:${this.state.startSecX}, startPrimY:${this.state.startSecY} action:${action} x:${evt.clientX} y:${evt.clientY}`);\r\n\r\n } else {\r\n // first finger was used alone and just lifted\r\n // commit one finger changes\r\n controlThis.startOffsetX = controlThis.lastOffsetX;\r\n controlThis.startOffsetY = controlThis.lastOffsetY;\r\n controlThis.startScaleWidth = controlThis.lastScaleWidth;\r\n controlThis.startScaleHeight = controlThis.lastScaleHeight;\r\n controlThis.startRotation = controlThis.lastRotation;\r\n controlThis.primPointerId = undefined;\r\n //controlThis.diag.log(`up p1 alone:${evt.pointerId} action:${action} x:${evt.clientX} y:${evt.clientY}`);\r\n }\r\n } else if (controlThis.secPointerId === evt.pointerId) {\r\n // was two finger but second finger lifted up while first still down\r\n evt.currentTarget.releasePointerCapture(evt.pointerId);\r\n controlThis.secPointerId = undefined;\r\n // commit two finger changes\r\n controlThis.startOffsetX = controlThis.lastOffsetX;\r\n controlThis.startOffsetY = controlThis.lastOffsetY;\r\n controlThis.startScaleWidth = controlThis.lastScaleWidth;\r\n controlThis.startScaleHeight = controlThis.lastScaleHeight;\r\n controlThis.startRotation = controlThis.lastRotation;\r\n // pointer 1 in charge. \r\n // pretend like it just also came down on current location\r\n controlThis.startPrimX = controlThis.lastPrimX;\r\n controlThis.startPrimY = controlThis.lastPrimY;\r\n //controlThis.diag.log(`up p2 :${evt.pointerId} action:${action} x:${evt.clientX} y:${evt.clientY}`);\r\n }\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n }\r\n let noClick = (evt:React.MouseEvent)=> {\r\n evt.stopPropagation();\r\n }\r\n\r\n\r\n if (this.state.mode==='load') {\r\n return <>;\r\n } else if (this.state.mode==='wait') {\r\n\r\n \r\n return (
{\r\n controlThis.props.OnPlacement(controlThis.state.img!, controlThis.state.offsetX, controlThis.state.offsetY, controlThis.state.imgWidth, controlThis.state.imgHeight, controlThis.state.scaleWidth, controlThis.state.scaleHeight, controlThis.state.rotation);\r\n //controlThis.storageManager.postDiagnostic(controlThis.diag);\r\n }}>\r\n
\r\n
\r\n pointerDown(e, 'move')} onPointerMove={(e)=>pointerMove(e, 'move')} onPointerUp={(e)=>pointerUp(e, 'move')} onClick={(e)=>noClick(e)}/>\r\n
\r\n
\r\n
\r\n
pointerDown(e, 'rotate')} onPointerMove={(e)=>pointerMove(e, 'rotate')} onPointerUp={(e)=>pointerUp(e, 'rotate')} onClick={(e)=>noClick(e)}>\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
pointerDown(e, 'size-nw')} onPointerMove={(e)=>pointerMove(e, 'size-nw')} onPointerUp={(e)=>pointerUp(e, 'size-nw')} onClick={(e)=>noClick(e)}/>\r\n
pointerDown(e, 'size-n')} onPointerMove={(e)=>pointerMove(e, 'size-n')} onPointerUp={(e)=>pointerUp(e, 'size-n')} onClick={(e)=>noClick(e)}/>\r\n
pointerDown(e, 'size-ne')} onPointerMove={(e)=>pointerMove(e, 'size-ne')} onPointerUp={(e)=>pointerUp(e, 'size-ne')} onClick={(e)=>noClick(e)}/>\r\n
\r\n
\r\n
pointerDown(e, 'size-w')} onPointerMove={(e)=>pointerMove(e, 'size-w')} onPointerUp={(e)=>pointerUp(e, 'size-w')} onClick={(e)=>noClick(e)}/>\r\n
pointerDown(e, 'size-e')} onPointerMove={(e)=>pointerMove(e, 'size-e')} onPointerUp={(e)=>pointerUp(e, 'size-e')} onClick={(e)=>noClick(e)}/>\r\n
\r\n
\r\n
pointerDown(e, 'size-sw')} onPointerMove={(e)=>pointerMove(e, 'size-sw')} onPointerUp={(e)=>pointerUp(e, 'size-sw')} onClick={(e)=>noClick(e)}/>\r\n
pointerDown(e, 'size-s')} onPointerMove={(e)=>pointerMove(e, 'size-s')} onPointerUp={(e)=>pointerUp(e, 'size-s')} onClick={(e)=>noClick(e)}/>\r\n
pointerDown(e, 'size-se')} onPointerMove={(e)=>pointerMove(e, 'size-se')} onPointerUp={(e)=>pointerUp(e, 'size-se')} onClick={(e)=>noClick(e)}/>\r\n
\r\n
\r\n
\r\n
);\r\n } else if (this.state.mode==='change') {\r\n\r\n }\r\n \r\n }\r\n}\r\n\r\nexport default ImageLocate;\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [noTrailing] Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset)\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {Boolean} [debounceMode] If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @return {Function} A new, throttled, function.\n */\nfunction throttle (delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n var self = this;\n var elapsed = Date.now() - lastExec;\n var args = arguments;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, args);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [atBegin] Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @return {Function} A new, debounced function.\n */\n\nfunction debounce (delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n}\n\nexport { throttle, debounce };\n","import React, { Component } from 'react';\r\nimport IconButton, {IconClose } from './iconButton';\r\nimport { App } from '../App';\r\n\r\nexport interface SearchInputState {\r\n currentValue: string | undefined;\r\n}\r\nexport interface SearchInputProps {\r\n AppObject: App;\r\n DefaultPrompt: string;\r\n DefaultValue: string | undefined;\r\n Delay: number;\r\n Haptic: boolean;\r\n Scale: number;\r\n OnValueChange: (newValue: string | undefined)=>void;\r\n}\r\n\r\nexport class SearchInput extends Component {\r\n\r\n constructor(props: SearchInputProps) {\r\n super(props);\r\n\r\n this.state = {\r\n currentValue: props.DefaultValue\r\n };\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n let inputRef = React.createRef() as React.RefObject;\r\n let inputTimer: NodeJS.Timeout | undefined = undefined;\r\n\r\n return (\r\n
\r\n
\r\n {\r\n if (controlThis.state.currentValue === undefined) {\r\n inputRef.current!.value = '';\r\n }\r\n }}\r\n onChange={()=>{\r\n if (inputTimer !== undefined) {\r\n clearTimeout(inputTimer);\r\n inputTimer = undefined;\r\n } \r\n inputTimer = setTimeout(() => {\r\n clearTimeout(inputTimer);\r\n inputTimer = undefined;\r\n if (inputRef.current) {\r\n if (inputRef.current.value === undefined || inputRef.current.value === null || inputRef.current.value === '') {\r\n controlThis.setState({currentValue: undefined});\r\n controlThis.props.OnValueChange(undefined);\r\n } else {\r\n controlThis.setState({currentValue: inputRef.current.value});\r\n controlThis.props.OnValueChange(inputRef.current.value);\r\n }\r\n }\r\n }, this.props.Delay);\r\n }}\r\n />\r\n
\r\n\r\n {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n if (controlThis.state.currentValue !== undefined) {\r\n if (inputRef.current) {\r\n inputRef.current.value = this.props.DefaultPrompt;\r\n inputRef.current.blur();\r\n }\r\n controlThis.setState({currentValue: undefined});\r\n controlThis.props.OnValueChange(undefined);\r\n }\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Disabled={this.state.currentValue === undefined}\r\n Haptic={this.props.Haptic}\r\n Height={this.props.Scale * 31}\r\n />\r\n \r\n
);\r\n\r\n\r\n }\r\n}\r\n\r\n\r\n\r\n","import React, { Component, useEffect } from 'react';\r\nimport { App } from '../App'\r\nimport {CloseButton, IconClose, IconSelect, IconSelected } from './iconButton';\r\nimport { Footer } from '../smesshy';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport { ArtistProfile, ArtistStats, LunchBoxStreakReported } from '../storageManager';\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport Smessage from './smessage';\r\nimport IconButton, {IconRefFactory, IconTrash, IconPlus } from './iconButton';\r\nimport { Navigate, createSearchParams } from 'react-router-dom';\r\nimport { SearchInput } from './searchInput';\r\nimport { SmesshyMainButton } from './smesshyButton';\r\nimport GamePage from './gamePage';\r\n\r\n\r\nexport interface FollowingTileState extends SmesshyCommonState {\r\n\r\n}\r\nexport interface FollowingTileProps extends SmesshyCommonProps{\r\n ArtistProfile: ArtistProfile;\r\n ShowTrash: boolean;\r\n ShowPending: boolean;\r\n ShowPlus: boolean;\r\n ShowCheck?: boolean;\r\n Checked?: boolean;\r\n AllowVScroll: boolean;\r\n StreakInfo?: LunchBoxStreakReported;\r\n OnTileClick: (top: number, artistsId:string, artistsName:string)=>Promise;\r\n OnTrashClick: (top: number, artistsId:string, artistsName:string)=>Promise;\r\n OnPlusClick: (top: number, artistsId:string, artistsName:string)=>Promise;\r\n OnCheckClick?: (top: number, artistsId:string, artistsName:string)=>Promise;\r\n}\r\n\r\nexport class FollowingTile extends SmesshyCommon(Component) {\r\n\r\n rectRef = React.createRef() as React.RefObject;\r\n\r\n constructor(props: FollowingTileProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n };\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n\r\n let artistImage = <>;\r\n let artistPortrait = this.props.ArtistProfile !== undefined && this.props.ArtistProfile.artistImageUrl !== undefined && \r\n this.props.ArtistProfile.artistImageUrl !== null && this.props.ArtistProfile.artistImageUrl !== '' ? this.props.ArtistProfile.artistImageUrl : undefined;\r\n if (artistPortrait !== undefined) {\r\n artistImage = \r\n } else {\r\n artistImage = \r\n }\r\n\r\n const plusButton = !this.props.ShowPlus ? <> : \r\n {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n return controlThis.props.OnPlusClick(controlThis.bestTop(controlThis.rectRef.current!, 150, 'below'), this.props.ArtistProfile.artistId, this.props.ArtistProfile.artistName!);\r\n }}\r\n StartPushedState={false}\r\n Haptic={controlThis.doButtonHaptic()}\r\n Height={this._app!.GetScaledPxHeight(31)}\r\n\r\n />;\r\n\r\n\r\n const pendingButton = !this.props.ShowPending ? <> : \r\n
(...)
;\r\n\r\n const trashButton = !this.props.ShowTrash ? <> : \r\n {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n return controlThis.props.OnTrashClick(controlThis.bestTop(controlThis.rectRef.current!, 150, 'below'), this.props.ArtistProfile.artistId, this.props.ArtistProfile.artistName!);\r\n }}\r\n StartPushedState={false}\r\n Haptic={controlThis.doButtonHaptic()\r\n }\r\n Height={this._app!.GetScaledPxHeight(31)}\r\n />;\r\n const checkButton = !(this.props.ShowCheck === true) ? <> : \r\n {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n return controlThis.props.OnCheckClick!(controlThis.bestTop(controlThis.rectRef.current!, 150, 'below'), this.props.ArtistProfile.artistId, this.props.ArtistProfile.artistName!);\r\n }}\r\n StartPushedState={false}\r\n Haptic={controlThis.doButtonHaptic()}\r\n Height={this._app!.GetScaledPxHeight(31)}\r\n />;\r\n\r\n let streakDisplay = <>;\r\n let statsColumn = 2;\r\n if (this.props.StreakInfo !== undefined) {\r\n statsColumn = 3;\r\n const secondsLeft = this.props.StreakInfo.secondsUntilStreakEnd;\r\n const currentStreak = this.props.StreakInfo.currentStreak;\r\n let streakColor = 'rgb(188, 188, 188)';\r\n if (secondsLeft > 0) {\r\n if (secondsLeft < 60 * 60 * 2) {\r\n streakColor = 'var(--smesshy-red)';\r\n } else if (secondsLeft < 60 * 60 * 8) {\r\n streakColor = 'var(--smesshy-orange)';\r\n } else if (secondsLeft < 60 * 60 * 18) {\r\n streakColor = 'var(--smesshy-yellow)';\r\n } else {\r\n streakColor = 'var(--smesshy-green)';\r\n }\r\n }\r\n streakDisplay = \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {currentStreak}\r\n \r\n\r\n\r\n }\r\n\r\n let mavenDisp = '';\r\n let followDisp = '';\r\n if (this.props.ArtistProfile.artistStats !== undefined) {\r\n mavenDisp = `${Math.round(this.props.ArtistProfile.artistStats.mavenScore * 1000)/1000}`;\r\n followDisp = `${this.props.ArtistProfile.artistStats.totalFollowers}/${this.props.ArtistProfile.artistStats.totalFollowing}`\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n {artistImage}\r\n
\r\n
\r\n
\r\n {this.props.ArtistProfile.artistName}\r\n
\r\n
\r\n
\r\n {streakDisplay}\r\n
\r\n
\r\n Maven\r\n
\r\n
\r\n {mavenDisp}\r\n
\r\n
\r\n Follow\r\n
\r\n
\r\n {followDisp}\r\n
\r\n
\r\n {pendingButton}\r\n
\r\n
\r\n
\r\n {plusButton}\r\n {trashButton}\r\n {checkButton}\r\n
\r\n
\r\n \r\n
\r\n
}\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n ExtraStyleClass='each-space-around'\r\n AllowVScroll={this.props.AllowVScroll}\r\n OnPressFinish={async (): Promise=>{\r\n return controlThis.props.OnTileClick(controlThis.bestTop(controlThis.rectRef.current!, 150, 'below'), controlThis.props.ArtistProfile.artistId, this.props.ArtistProfile.artistName!)}\r\n }\r\n />\r\n\r\n );\r\n }\r\n}\r\n\r\n\r\nexport interface FollowingPageState extends SmesshyCommonState {\r\n userId: string | null;\r\n newSearchOn: string | undefined;\r\n prevSearchOn: string | undefined;\r\n searchNextStart: number;\r\n searchAtEnd: boolean;\r\n searchArtists: Array<[ArtistProfile, string]> | undefined;\r\n followingAtEnd: boolean;\r\n followingArtists: Array<[ArtistProfile, string]>;\r\n followerAtEnd: boolean;\r\n followerArtists: Array<[ArtistProfile, string]>;\r\n asyncUpdate: number;\r\n}\r\nexport interface FollowingPageProps extends SmesshyCommonProps {\r\n FetchCount: number;\r\n}\r\n\r\nclass FollowingPage extends SmesshyCommon(Component) {\r\n\r\n followingRequestNextStart: number;\r\n followingRequestAtEnd: boolean;\r\n followingArtistsNextStart: number;\r\n followingArtistsAtEnd: boolean;\r\n followerRequestNextStart: number;\r\n followerRequestAtEnd: boolean;\r\n followerArtistsNextStart: number;\r\n followerArtistsAtEnd: boolean;\r\n searchAbortController: AbortController | undefined;\r\n\r\n constructor(props: FollowingPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.followingRequestNextStart = 0;\r\n this.followingRequestAtEnd = false;\r\n this.followingArtistsNextStart = 0;\r\n this.followingArtistsAtEnd = false;\r\n this.followerRequestNextStart = 0;\r\n this.followerRequestAtEnd = false;\r\n this.followerArtistsNextStart = 0;\r\n this.followerArtistsAtEnd = false;\r\n\r\n let reqNav = this.requireSetup(()=>{}, true);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n userId: null,\r\n newSearchOn: undefined,\r\n prevSearchOn: undefined,\r\n searchNextStart: 0,\r\n searchAtEnd: true,\r\n searchArtists: undefined,\r\n followingAtEnd: false,\r\n followingArtists: new Array<[ArtistProfile, string]>(),\r\n followerAtEnd: false,\r\n followerArtists: new Array<[ArtistProfile, string]>(),\r\n navigateTo: reqNav,\r\n askQuestion: undefined,\r\n asyncUpdate: 0\r\n \r\n };\r\n\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('following', 'didMound', '');\r\n }\r\n \r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('following', 'populateAuth', authenticated.toString());\r\n\r\n if (authenticated) {\r\n this.setState({authenticated:true, userId: await this.getUserId()});\r\n \r\n let token = await this.getAccessToken();\r\n if (token !== undefined) {\r\n await this.fetchMoreFollowingAsync();\r\n await this.fetchMoreFollowersAsync();\r\n // clear any notifications about follow requests\r\n this._app!.clearNotifications('following');\r\n }\r\n \r\n } else {\r\n this.setState({authenticated:false});\r\n }\r\n }\r\n\r\n async completeFollowingProfile(ids: Array) : Promise> {\r\n let newFollows = new Array();\r\n let newFollowLU = new Map();\r\n for (const id of ids) {\r\n const profile: ArtistProfile = {artistId: id, artistName: 'wait...', artistImageUrl: undefined, artistStats: undefined};\r\n newFollows.push(profile);\r\n newFollowLU.set(id, profile);\r\n }\r\n let controlThis = this;\r\n STrace.addStep('following', 'getArtistProfilesAsync', '');\r\n await this.storageManager!.getArtistProfilesAsync(ids, 'basic', (profs: Array)=>{\r\n for (const prof of profs) {\r\n if (newFollowLU.has(prof.artistId)) {\r\n const oldProf = newFollowLU.get(prof.artistId)!;\r\n oldProf.artistImageUrl = prof.artistImageUrl;\r\n oldProf.artistName = prof.artistName;\r\n oldProf.artistStats = prof.artistStats;\r\n }\r\n \r\n }\r\n controlThis.setState({asyncUpdate: controlThis.state.asyncUpdate + 1});\r\n });\r\n\r\n return newFollows;\r\n }\r\n\r\n async fetchMoreFollowingRequestsAsync() : Promise | undefined> {\r\n if (this.followingRequestAtEnd) {\r\n return undefined;\r\n }\r\n let token = await this.getAccessToken();\r\n if (token === undefined) {\r\n return undefined;\r\n } \r\n\r\n STrace.addStep('following', 'getUserFollowingAsync', 'pending');\r\n const more = await this.storageManager!.getUserFollowingAsync('pending', false);\r\n const morelist = new Array(); more.forEach(i=>morelist.push(i));\r\n STrace.addStep('following', 'completeFollowingProfile', 'more following pending');\r\n const newFollowing = await this.completeFollowingProfile(morelist);\r\n this.followingRequestAtEnd = true;\r\n this.followingRequestNextStart = newFollowing.length;\r\n return newFollowing;\r\n }\r\n \r\n async fetchMoreFollowingArtistsAsync() : Promise | undefined> {\r\n if (this.followingArtistsAtEnd) {\r\n return undefined;\r\n }\r\n let token = await this.getAccessToken();\r\n if (token === undefined) {\r\n return undefined;\r\n } \r\n\r\n STrace.addStep('following', 'getUserFollowingAsync', 'approved');\r\n const more = await this.storageManager!.getUserFollowingAsync('approved', false);\r\n const morelist = new Array(); more.forEach(i=>morelist.push(i));\r\n STrace.addStep('following', 'completeFollowingProfile', 'more following');\r\n const newFollowing = await this.completeFollowingProfile(morelist);\r\n this.followingArtistsAtEnd = true;\r\n this.followingArtistsNextStart = newFollowing.length;\r\n return newFollowing\r\n }\r\n\r\n async fetchMoreFollowerRequestsAsync() : Promise | undefined> {\r\n if (this.followerRequestAtEnd) {\r\n return undefined;\r\n }\r\n let token = await this.getAccessToken();\r\n if (token === undefined) {\r\n return undefined;\r\n } \r\n\r\n STrace.addStep('following', 'getUserFollowersAsync', 'pending');\r\n const more = await this.storageManager!.getUserFollowersAsync(this.followerRequestNextStart, this.followerRequestNextStart + 29, 'pending');\r\n STrace.addStep('following', 'completeFollowingProfile', 'more follower pending');\r\n const newFollowing = await this.completeFollowingProfile(more);\r\n this.followerRequestAtEnd = newFollowing.length < 30;\r\n this.followerRequestNextStart = this.followerRequestNextStart + newFollowing.length;\r\n return newFollowing\r\n }\r\n\r\n async fetchMoreFollowerArtistsAsync() : Promise | undefined> {\r\n if (this.followerArtistsAtEnd) {\r\n return undefined;\r\n }\r\n let token = await this.getAccessToken();\r\n if (token === undefined) {\r\n return undefined;\r\n } \r\n\r\n STrace.addStep('following', 'getUserFollowersAsync', '');\r\n const more = await this.storageManager!.getUserFollowersAsync(this.followerArtistsNextStart, this.followerArtistsNextStart + 29, 'approved');\r\n STrace.addStep('following', 'completeFollowingProfile', 'more follower');\r\n const newFollowing = await this.completeFollowingProfile(more);\r\n this.followerArtistsAtEnd = newFollowing.length < 30;;\r\n this.followerArtistsNextStart = this.followerArtistsNextStart + newFollowing.length;\r\n return newFollowing\r\n }\r\n\r\n async fetchMoreFollowingAsync() {\r\n \r\n if (this.state.followingAtEnd) {\r\n return;\r\n }\r\n const following = new Array<[ArtistProfile, string]>();\r\n if (this.followingArtistsAtEnd === false) {\r\n const followingArtists = await this.fetchMoreFollowingArtistsAsync();\r\n if (followingArtists !== undefined) {\r\n for (const f of followingArtists) {\r\n following.push([f, 'approved']);\r\n }\r\n }\r\n }\r\n if (following.length < 30 && this.followingRequestAtEnd === false) {\r\n const followingRequests = await this.fetchMoreFollowingRequestsAsync();\r\n if (followingRequests !== undefined) {\r\n for (const f of followingRequests) {\r\n following.push([f, 'pending']);\r\n }\r\n }\r\n }\r\n\r\n this.setState({followingAtEnd: this.followingArtistsAtEnd, followingArtists: this.state.followingArtists.concat(following)});\r\n }\r\n\r\n async fetchMoreFollowersAsync() {\r\n if (this.state.followerAtEnd) {\r\n return;\r\n }\r\n const followers = new Array<[ArtistProfile, string]>();\r\n if (this.followerRequestAtEnd === false) {\r\n const followerRequests = await this.fetchMoreFollowerRequestsAsync();\r\n if (followerRequests !== undefined) {\r\n for (const f of followerRequests) {\r\n followers.push([f, 'pending']);\r\n }\r\n }\r\n }\r\n if (followers.length < 30 && this.followerArtistsAtEnd === false) {\r\n const followerArtists = await this.fetchMoreFollowerArtistsAsync();\r\n if (followerArtists !== undefined) {\r\n for (const f of followerArtists) {\r\n followers.push([f, 'approved']);\r\n }\r\n }\r\n }\r\n\r\n this.setState({followerAtEnd: this.followerArtistsAtEnd, followerArtists: this.state.followerArtists.concat(followers)});\r\n }\r\n\r\n\r\n fetchMoreFollowing(authenticated: boolean) {\r\n let controlThis = this;\r\n if (authenticated === false) {\r\n return;\r\n }\r\n this.pushWaitingFrame(this);\r\n this.executeAsync(async ()=> {\r\n await controlThis.fetchMoreFollowingAsync();\r\n controlThis.popWaitingFrame();\r\n });\r\n }\r\n\r\n fetchMoreFollowers(authenticated: boolean) {\r\n let controlThis = this;\r\n if (authenticated === false) {\r\n return;\r\n }\r\n this.pushWaitingFrame(this);\r\n this.executeAsync(async ()=> {\r\n await controlThis.fetchMoreFollowersAsync();\r\n controlThis.popWaitingFrame();\r\n });\r\n }\r\n\r\n fetchMoreSearchResults() {\r\n let controlThis = this;\r\n if (this.state.searchAtEnd) {\r\n return;\r\n }\r\n this.executeAsync(async ()=> {\r\n const token = await controlThis.getAccessToken();\r\n controlThis.searchAbortController = new AbortController();\r\n STrace.addStep('following', 'searchArtistProfilesAsync', controlThis.state.newSearchOn!);\r\n await controlThis.storageManager!.searchArtistProfilesAsync(controlThis.state.newSearchOn!, \r\n controlThis.state.searchNextStart, controlThis.state.searchNextStart + 30, \r\n controlThis.searchAbortController.signal, (profs: Array)=>{\r\n controlThis.searchAbortController = undefined;\r\n let oldList = controlThis.state.searchArtists !== undefined ? controlThis.state.searchArtists.slice() : new Array<[ArtistProfile, string]>();\r\n for (const p of profs) {\r\n oldList.push([p, '']);\r\n }\r\n \r\n controlThis.setState({searchArtists: oldList,\r\n searchNextStart:controlThis.state.searchNextStart + profs.length, \r\n searchAtEnd: profs.length < 30});\r\n });\r\n });\r\n\r\n }\r\n\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`following, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const onOtherNavigate = async (otherId: string, otherName: string) : Promise => {\r\n STrace.addStep('following', 'other nav', otherId);\r\n const params = createSearchParams({title: otherName, scope: 'others', filter:otherId});\r\n controlThis.setState({navigateTo: {To:`/other-gallery?${params.toString()}`}});\r\n return true;\r\n }\r\n const onPlusClick = async (top: number, otherId: string, otherName: string) => {\r\n STrace.addStep('following', 'approveUserFollowerAsync', otherId);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.approveUserFollowerAsync(otherId);\r\n const otherPair = controlThis.state.followerArtists.find(prof=>prof[0].artistId === otherId);\r\n if (otherPair !== undefined) {\r\n otherPair[1] = 'approved';\r\n controlThis.setState({asyncUpdate:controlThis.state.asyncUpdate + 1});\r\n }\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }\r\n const onAddClick = async (top: number, otherId: string, otherName: string) => {\r\n STrace.addStep('following', 'postUserFollowingAsync', otherId);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.postUserFollowingAsync(otherId);\r\n const otherPair = controlThis.state.searchArtists!.find(prof=>prof[0].artistId === otherId);\r\n if (otherPair !== undefined) {\r\n otherPair[1] = 'pending';\r\n controlThis.state.followingArtists.push(otherPair);\r\n controlThis.setState({asyncUpdate:controlThis.state.asyncUpdate + 1});\r\n }\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }\r\n\r\n const onTrashClick = async (top: number, otherId: string, otherName: string, following: boolean, pending: boolean) => {\r\n\r\n let promptText1: string;\r\n let promptText2: string;\r\n let yesText: string;\r\n if (following) {\r\n if (pending) {\r\n promptText1 = `Stop waiting for 'follow' approval`;\r\n promptText2 = `from ${otherName}?`;\r\n yesText = 'Yes, stop';\r\n } else {\r\n promptText1 = `Stop following`;\r\n promptText2 = `${otherName}?`;\r\n yesText = 'Yes, stop';\r\n }\r\n } else {\r\n if (pending) {\r\n promptText1 = `Quietly remove this request`;\r\n promptText2 = `from ${otherName}?`;\r\n yesText = `Ghost 'em`;\r\n } else {\r\n promptText1 = `Quietly remove ${otherName}`;\r\n promptText2 = `from your followers?`;\r\n yesText = `Yes, farewell`;\r\n }\r\n }\r\n\r\n controlThis.setState({askQuestion:{\r\n Top: top,\r\n Title: Trash?,\r\n Prompts: [{promptText1},\r\n {promptText2}],\r\n Options: [{Key:'trashFollow', Option:{yesText}, OnOption:async ():Promise=>{\r\n let newFollowingArtists = controlThis.state.followingArtists;\r\n let newFollowerArtists = controlThis.state.followerArtists;\r\n\r\n controlThis.pushWaitingFrame(controlThis);\r\n if (following) {\r\n if (pending) {\r\n STrace.addStep('following', 'deleteUserFollowingAsync-pending', otherId);\r\n await controlThis.storageManager!.deleteUserFollowingAsync(otherId, 'pending');\r\n } else {\r\n STrace.addStep('following', 'deleteUserFollowingAsync-approved', otherId);\r\n await controlThis.storageManager!.deleteUserFollowingAsync(otherId, 'approved');\r\n }\r\n newFollowingArtists = controlThis.state.followingArtists.filter(prof=>prof[0].artistId !== otherId);\r\n } else {\r\n if (pending) {\r\n STrace.addStep('following', 'deleteUserFollowerAsync-pending', otherId);\r\n await controlThis.storageManager!.deleteUserFollowerAsync(otherId, 'pending');\r\n } else {\r\n STrace.addStep('following', 'deleteUserFollowerAsync-approved', otherId);\r\n await controlThis.storageManager!.deleteUserFollowerAsync(otherId, 'approved');\r\n }\r\n newFollowerArtists = controlThis.state.followerArtists.filter(prof=>prof[0].artistId !== otherId);\r\n\r\n }\r\n controlThis.setState({asyncUpdate:controlThis.state.asyncUpdate + 1, followerArtists: newFollowerArtists, followingArtists: newFollowingArtists});\r\n \r\n controlThis.setState({askQuestion: undefined});\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}],\r\n OnCancel:()=>{\r\n controlThis.setState({askQuestion:undefined});}\r\n }});\r\n return true;\r\n }\r\n\r\n let searchArtistEntry = {\r\n // will initiate a search in the search observer\r\n controlThis.setState({newSearchOn: newValue, prevSearchOn: controlThis.state.prevSearchOn, searchAtEnd: false, searchNextStart:0, searchArtists: undefined});\r\n }}\r\n \r\n />\r\n\r\n\r\n const followingList =
\r\n controlThis.fetchMoreFollowing(controlThis.state.authenticated)}\r\n hasMore={!this.state.followingAtEnd}\r\n loader={
There's more...
}\r\n scrollableTarget='following-scroll-host'\r\n\r\n endMessage={\r\n

\r\n Done\r\n

\r\n }\r\n >\r\n {this.state.followingArtists.map((pair, index) => (\r\n {return await onOtherNavigate(artistId, artistName)}}\r\n OnTrashClick={async (top:number, artistId:string, artistName:string)=>{return await onTrashClick(top, artistId, artistName, true, pair[1] === 'pending')}}\r\n OnPlusClick={async (top:number, artistId:string, artistName:string)=>{return true;}}\r\n />\r\n ))}\r\n \r\n
;\r\n\r\n const followersList =
\r\n controlThis.fetchMoreFollowers(controlThis.state.authenticated)}\r\n hasMore={!this.state.followerAtEnd}\r\n loader={
There's more...
}\r\n scrollableTarget='followers-scroll-host'\r\n\r\n endMessage={\r\n

\r\n Done\r\n

\r\n }\r\n >\r\n {this.state.followerArtists.map((pair, index) => (\r\n {return await onOtherNavigate(artistId, artistName)}}\r\n OnTrashClick={async (top:number, artistId:string, artistName:string)=>{return await onTrashClick(top, artistId, artistName, false, pair[1] === 'pending')}}\r\n OnPlusClick={async (top:number, artistId:string, artistName:string)=>{return await onPlusClick(top, artistId, artistName)}}\r\n />\r\n ))}\r\n \r\n
;\r\n\r\n const searchArtistList =
\r\n controlThis.fetchMoreSearchResults()}\r\n hasMore={!this.state.searchAtEnd}\r\n loader={
Finding them...
}\r\n scrollableTarget='search-scroll-host'\r\n\r\n endMessage={\r\n

\r\n That's them\r\n

\r\n }\r\n >\r\n {this.state.searchArtists === undefined ? <> : this.state.searchArtists.map((pair, index) => (\r\n {return await onOtherNavigate(artistId, artistName)}}\r\n OnTrashClick={async (top:number, artistId:string, artistName:string)=>{return true;}}\r\n OnPlusClick={async (top:number, artistId:string, artistName:string)=>{return await onAddClick(top, artistId, artistName)}}\r\n />\r\n ))}\r\n \r\n
;\r\n\r\n\r\n const SearchObserver = () => {\r\n useEffect(()=>{\r\n if (controlThis.state.newSearchOn !== controlThis.state.prevSearchOn) {\r\n // cancel any pending search request\r\n if (controlThis.searchAbortController !== undefined) {\r\n controlThis.searchAbortController.abort();\r\n controlThis.searchAbortController = undefined;\r\n }\r\n if (controlThis.state.newSearchOn === undefined) {\r\n controlThis.setState({searchArtists: undefined})\r\n } else {\r\n controlThis.fetchMoreSearchResults();\r\n }\r\n }\r\n });\r\n return <>;\r\n }\r\n\r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {Smesshy - Following}\r\n CloseNav = {-1}\r\n Body={\r\n <>\r\n \r\n
\r\n
\r\n
\r\n
\r\n Following:\r\n
\r\n {searchArtistEntry}\r\n {this.state.newSearchOn !== undefined ? searchArtistList : followingList}\r\n
\r\n
\r\n
\r\n Followers:\r\n
\r\n {followersList}\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n }\r\n />,\r\n this.state\r\n );\r\n }\r\n}\r\n\r\nexport default FollowingPage;","import { Component } from 'react';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport { ArtistProfile, LunchBoxStreakReported } from '../storageManager';\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport { FollowingTile } from './followingPage';\r\nimport { SmesshySubButton } from './smesshyButton';\r\n\r\n\r\n\r\nexport interface FollowingListerState extends SmesshyCommonState {\r\n followingArtists: Array<[ArtistProfile, boolean]>;\r\n streakInfo: Map;\r\n}\r\nexport interface FollowingListerProps extends SmesshyCommonProps {\r\n Mutual: boolean;\r\n ShowCheckbox: boolean;\r\n ShowStreak: boolean;\r\n StreaksOnly: boolean;\r\n OnSelectChange?: (selected: Array)=>Promise;\r\n OnSelect?: (selectedId: string)=>Promise;\r\n}\r\n\r\nclass FollowingLister extends SmesshyCommon(Component) {\r\n\r\n followingRequestNextStart: number;\r\n followingRequestAtEnd: boolean;\r\n followingArtistsNextStart: number;\r\n followingArtistsAtEnd: boolean;\r\n\r\n constructor(props: FollowingListerProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.followingRequestNextStart = 0;\r\n this.followingRequestAtEnd = false;\r\n this.followingArtistsNextStart = 0;\r\n this.followingArtistsAtEnd = false;\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n followingArtists: new Array<[ArtistProfile, boolean]>(),\r\n streakInfo: new Map()\r\n };\r\n\r\n }\r\n \r\n componentDidMount() {\r\n STrace.addStep('followingLister', 'didMound', '');\r\n let controlThis = this;\r\n this.executeAsync(async ()=> {\r\n controlThis.pushWaitingFrame(this);\r\n STrace.addStep('followingPicker', 'initAuth', '');\r\n await controlThis.initAuthentication(controlThis, true);\r\n controlThis.popWaitingFrame();\r\n });\r\n \r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('followingLister', 'populateAuth', authenticated.toString());\r\n this.pushWaitingFrame(this);\r\n\r\n if (authenticated) {\r\n let token = await this.getAccessToken();\r\n if (token !== undefined) {\r\n await this.fetchAllFollowingAsync();\r\n }\r\n \r\n }\r\n this.popWaitingFrame();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.termAuthentication();\r\n }\r\n\r\n\r\n async fetchAllFollowingAsync() : Promise {\r\n\r\n STrace.addStep('followingPicker', 'fetchAllFollowingAsync', '');\r\n if (this.followingArtistsAtEnd) {\r\n return false;\r\n }\r\n\r\n this.pushWaitingFrame(this);\r\n let token = await this.getAccessToken();\r\n if (token === undefined) {\r\n this.popWaitingFrame();\r\n return false;\r\n } \r\n \r\n const following = new Array<[ArtistProfile, boolean]>();\r\n STrace.addStep('followingPicker', 'getUserFollowingAsync', 'approved');\r\n const more = await this.storageManager!.getUserFollowingAsync('approved', this.props.Mutual);\r\n const morelist = new Array(); more.forEach(i=>morelist.push(i));\r\n\r\n if (this.props.ShowStreak) {\r\n STrace.addStep('followingPicker', 'getLunchboxStreakInfoAsync', '');\r\n const streaks = await this.storageManager!.getLunchboxStreakInfoAsync(morelist);\r\n if (streaks !== undefined) {\r\n for (const streak of streaks) {\r\n this.state.streakInfo.set(streak.otherId, streak);\r\n }\r\n }\r\n }\r\n const controlThis = this;\r\n STrace.addStep('followingPicker', 'getArtistProfilesAsync', '');\r\n await this.storageManager!.getArtistProfilesAsync(morelist, 'basic', (profs: Array)=>{\r\n for (const prof of profs) {\r\n if (controlThis.props.StreaksOnly) {\r\n if (controlThis.state.streakInfo.has(prof.artistId)) {\r\n following.push([prof, false]);\r\n }\r\n } else {\r\n following.push([prof, false]);\r\n }\r\n }\r\n controlThis.setState({followingArtists: following});\r\n controlThis.followingArtistsAtEnd = true;\r\n });\r\n this.popWaitingFrame();\r\n\r\n return true\r\n }\r\n\r\n fetchMoreFollowing() {\r\n let controlThis = this;\r\n this.pushWaitingFrame(this);\r\n this.executeAsync(async ()=> {\r\n await controlThis.fetchAllFollowingAsync();\r\n this.popWaitingFrame();\r\n });\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`followingPicker, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const onSelectClick = async (otherId: string) : Promise => {\r\n if (controlThis.props.OnSelect !== undefined) {\r\n return await controlThis.props.OnSelect(otherId);\r\n }\r\n if (controlThis.props.ShowCheckbox !== true || controlThis.props.OnSelectChange === undefined) {\r\n return true;\r\n }\r\n STrace.addStep('followingLister', 'other nav', otherId);\r\n const newSelected = new Array<[ArtistProfile, boolean]>();\r\n const selectedIds = new Array();\r\n for (const pair of controlThis.state.followingArtists) {\r\n let pairPush = pair;\r\n if (pair[0].artistId === otherId) {\r\n pairPush = [pair[0], !pair[1]];\r\n }\r\n newSelected.push(pairPush);\r\n if (pairPush[1] === true) {\r\n selectedIds.push(pairPush[0].artistId);\r\n }\r\n }\r\n await controlThis.props.OnSelectChange!(selectedIds);\r\n controlThis.setState({followingArtists: newSelected});\r\n return true;\r\n }\r\n\r\n const followingList =
\r\n controlThis.fetchMoreFollowing()}\r\n hasMore={!this.followingArtistsAtEnd}\r\n loader={
Getting them...
}\r\n scrollableTarget='following-scroll-host'\r\n\r\n endMessage={<>}\r\n >\r\n {this.state.followingArtists.map((pair, index) => (\r\n {return await onSelectClick(artistId)}}\r\n OnTrashClick={async (top:number, artistId:string, artistName:string)=>{return true;}}\r\n OnPlusClick={async (top:number, artistId:string, artistName:string)=>{return true;}}\r\n OnCheckClick={async (top:number, artistId:string, artistName:string)=>{return await onSelectClick(artistId)}}\r\n />\r\n ))}\r\n \r\n
;\r\n\r\n\r\n return this.renderFramework(followingList, this.state);\r\n }\r\n}\r\n\r\n\r\n\r\nexport interface LuchboxPickerState extends SmesshyCommonState {\r\n selectedFollowers: Array;\r\n\r\n}\r\nexport interface LuchboxPickerProps extends SmesshyCommonProps {\r\n Bounds: DOMRect;\r\n OnAccept: (selectedFollowers: Array)=>Promise;\r\n OnReject: ()=>void;\r\n}\r\n\r\n\r\nexport class LuchboxPicker extends SmesshyCommon(Component) {\r\n\r\n constructor(props: LuchboxPickerProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n selectedFollowers: new Array()\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const controlThis = this;\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`lunchboxPicker, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n const controlThis = this;\r\n\r\n const boundLeft = this.props.Bounds.left;\r\n const boundTop = this.props.Bounds.top;\r\n const boundWidth = this.props.Bounds.width;\r\n const boundHeight = this.props.Bounds.height;\r\n \r\n return this.renderFramework(\r\n
\r\n
\r\n
\r\n
\r\n
{`Who should get this one?`}
\r\n X}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('lunchboxPicker', 'reject', '');\r\n controlThis.props.OnReject();\r\n return true;\r\n }}\r\n />\r\n
\r\n Send it!}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('lunchboxPicker', 'accept', '');\r\n return await controlThis.props.OnAccept(this.state.selectedFollowers);\r\n }}\r\n Disabled={this.state.selectedFollowers.length === 0}/>\r\n
\r\n ) : Promise=>{\r\n STrace.addStep('lunchboxPicker', 'list changed', '');\r\n controlThis.setState({selectedFollowers: selected});\r\n return true;\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n
, this.state);\r\n \r\n }\r\n}\r\n\r\nexport interface StreakViewerState extends SmesshyCommonState {\r\n\r\n}\r\nexport interface StreakViewerProps extends SmesshyCommonProps {\r\n Bounds: DOMRect;\r\n OnReject: ()=>void;\r\n}\r\n\r\n\r\nexport class StreakViewer extends SmesshyCommon(Component) {\r\n\r\n constructor(props: StreakViewerProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n STrace.addStep('streakViewer', 'didMound', '');\r\n const controlThis = this;\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`streakViewer, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n const controlThis = this;\r\n\r\n const boundLeft = this.props.Bounds.left;\r\n const boundTop = this.props.Bounds.top;\r\n const boundWidth = this.props.Bounds.width;\r\n const boundHeight = this.props.Bounds.height;\r\n \r\n return this.renderFramework(\r\n
\r\n
\r\n
\r\n
\r\n
{`Your current lunchbox streaks:`}
\r\n X}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('streakViewer', 'reject', '');\r\n controlThis.props.OnReject();\r\n return true;\r\n }}\r\n />\r\n
\r\n
\r\n =>{\r\n controlThis.setState({askQuestion:{\r\n Top: controlThis._app!.GetScaledPxHeight(164),\r\n Title: Poke,\r\n Prompts: [Shall I remind this individual, vis-à-vis your currently endangered lunchbox streak, as to both the importance of and benefits gained from maintaining personal relationships even in small ways, such as by regularly placing a friendly little drawing in a pal's lunchbox or by, in the reciprocal case where a painting has been carefully crafted and gifted to them by someone such as yourself, merely looking at it?],\r\n Options: [{Key:'canvas', Option:Yup, OnOption:async ():Promise=>{\r\n STrace.addStep('followingPicker', 'postPokeLunchboxAsync', selectedId);\r\n controlThis.pushWaitingFrame(controlThis);\r\n controlThis.storageManager!.postPokeLunchboxAsync(selectedId);\r\n controlThis.setState({askQuestion:undefined})\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}],\r\n OnCancel:()=>{controlThis.setState({askQuestion:undefined});} \r\n }});\r\n return true;\r\n }}\r\n\r\n />\r\n
\r\n
\r\n
\r\n
, this.state);\r\n \r\n }\r\n}\r\n\r\nexport default FollowingLister;","import React, { useEffect, ChangeEvent, Component } from 'react';\r\nimport { App } from '../App'\r\nimport Smear from './smash/smear';\r\nimport IconButton, {CloseButton, IconPhoto, IconPlay, IconTrash, IconEmpty, IconPlus, IconSample, IconFinger, IconPalette, IconPainting, IconSplotch, IconClose, IconUpload, IconRefFactory, IconBlow, IconKnife, IconStop} from './iconButton';\r\nimport tinycolor from 'tinycolor2';\r\nimport FingerTip from './smash/fingertip';\r\nimport { Navigate } from 'react-router-dom';\r\nimport SmesshyAsk, { SmesshyAskOption, SmesshyAskParams, SmesshyDone } from './smesshyAsk';\r\nimport AuthorizeRoute from './api-authorization/AuthorizeRoute'\r\nimport Smessage from './smessage';\r\nimport ImageLocate from './imageLocate';\r\nimport AnimationActionRecording, { AnimationActionKind } from './smash/animationActions';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState, SmesshyToolOptions } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\nimport { LuchboxPicker } from './followingPicker';\r\nimport { tutorialPaintingBlow, tutorialPaintingCanvasManual, tutorialPaintingCanvasTouch, tutorialPaintingColor, tutorialPaintingInitial, tutorialPaintingKnife, tutorialPaintingPalette, tutorialPaintingPaletteSwap, tutorialPaintingReplay, tutorialPaintingSample, tutorialPaintingSave, tutorialPaintingSaveAnon, tutorialPaintingSmudge, tutorialPaintingStamp, tutorialPaintingTrash } from './tutorialStep';\r\nimport Smesshy from '../smesshy';\r\nimport { ChallengeState } from '../storageManager';\r\nimport ChallengeTile from './challengeTile';\r\nimport {CountdownTimer} from './countDownText';\r\n\r\nexport interface PaintingPageState extends SmesshyCommonState {\r\n color: string;\r\n sampleMode: boolean;\r\n paletteMode: boolean;\r\n pressWeight: number;\r\n fixedSize: number;\r\n avgLightRadius: number;\r\n avgHeavyRadius: number;\r\n useMouse: boolean;\r\n showSize: boolean;\r\n addedColors: Array;\r\n limitedColors: Array;\r\n pendingActionButton: string | undefined;\r\n allDisabled: boolean;\r\n replaying: boolean;\r\n popChallenge: boolean;\r\n challengePercentRemaining: number;\r\n challengeState: ChallengeState | undefined;\r\n paintingDisabled: boolean;\r\n}\r\nexport interface PaintingPageProps extends SmesshyCommonProps {\r\n InteractionMode: string;\r\n SaveMode: string;\r\n KnownAvgLightRadius: number;\r\n KnownAvgHeavyRadius: number;\r\n KnownUseMouse: boolean;\r\n KnownShowSize: boolean;\r\n StampsAllowed: boolean;\r\n}\r\n\r\ninterface PaintingPageBehaviors {\r\n needsCalibraton: boolean;\r\n fixedSize: number;\r\n showSize: boolean;\r\n restorePalette: boolean;\r\n restorePaintingActions: string | undefined;\r\n contextKey: string;\r\n canCacheCtx: boolean;\r\n saveStrokes: boolean;\r\n showReplay: boolean;\r\n forceReplay: boolean;\r\n showStamp: boolean;\r\n showPalette: boolean;\r\n showSample: boolean;\r\n saveKind: string;\r\n}\r\n\r\nclass PaintingPage extends SmesshyCommon(Component) {\r\n\r\n smearRef: React.RefObject | null = null;\r\n mainRecording: AnimationActionRecording | undefined = undefined; \r\n pendingReplay: string | undefined;\r\n timeoutEnableButtons: NodeJS.Timeout | undefined;\r\n behave: PaintingPageBehaviors = {} as PaintingPageBehaviors;\r\n baseColors: Set;\r\n enteredCaption: string | undefined;\r\n \r\n challengeTimer: CountdownTimer | undefined;\r\n \r\n\r\n constructor(props: PaintingPageProps) {\r\n super(props);\r\n this.baseColors = new Set();\r\n\r\n try {\r\n this.initCommon(props.AppObject);\r\n\r\n const doCalibrateFirst = ((this.GetAppState('calibrationVersion', false) as number) < App.calibrationVersion);\r\n const fixedSize = props.KnownShowSize ? FingerTip.standardFingerRadius : 0;\r\n\r\n\r\n if (props.SaveMode === 'any') {\r\n this.behave = {\r\n needsCalibraton: doCalibrateFirst,\r\n fixedSize: fixedSize,\r\n showSize: props.KnownShowSize,\r\n restorePalette: true,\r\n restorePaintingActions : 'paintingActionsSelf',\r\n contextKey: 'paintingPageSelf',\r\n saveStrokes: true,\r\n showReplay: true,\r\n forceReplay: false,\r\n showStamp: true,\r\n showPalette: true,\r\n showSample: true,\r\n canCacheCtx: true,\r\n saveKind: 'any'\r\n } as PaintingPageBehaviors;\r\n } else if (props.SaveMode === 'chal') {\r\n this.behave = {\r\n needsCalibraton: doCalibrateFirst,\r\n fixedSize: fixedSize,\r\n showSize: props.KnownShowSize,\r\n restorePalette: true,\r\n restorePaintingActions : 'paintingActionsChal',\r\n contextKey: 'paintingPageChal',\r\n saveStrokes: true,\r\n showReplay: true,\r\n showPalette: true,\r\n showSample: true,\r\n forceReplay: false,\r\n showStamp: props.StampsAllowed,\r\n canCacheCtx: true,\r\n saveKind: 'chal'\r\n } as PaintingPageBehaviors;\r\n } else if (props.SaveMode === 'foll') {\r\n this.behave = {\r\n needsCalibraton: doCalibrateFirst,\r\n fixedSize: fixedSize,\r\n showSize: props.KnownShowSize,\r\n restorePalette: true,\r\n restorePaintingActions : 'paintingActionsSelf',\r\n contextKey: 'paintingPageSelf',\r\n saveStrokes: true,\r\n showReplay: true,\r\n forceReplay: false,\r\n showStamp: true,\r\n showPalette: true,\r\n showSample: true,\r\n canCacheCtx: true,\r\n saveKind: 'foll'\r\n } as PaintingPageBehaviors;\r\n } else if (props.SaveMode === 'lunc') {\r\n this.behave = {\r\n needsCalibraton: doCalibrateFirst,\r\n fixedSize: fixedSize,\r\n showSize: props.KnownShowSize,\r\n restorePalette: true,\r\n restorePaintingActions : 'paintingActionsSelf',\r\n contextKey: 'paintingPageSelf',\r\n saveStrokes: true,\r\n showReplay: true,\r\n forceReplay: false,\r\n showStamp: true,\r\n showPalette: true,\r\n showSample: true,\r\n canCacheCtx: true,\r\n saveKind: 'lunc'\r\n } as PaintingPageBehaviors;\r\n } else if (props.InteractionMode === 'anon') {\r\n this.behave = {\r\n needsCalibraton: false,\r\n fixedSize: FingerTip.standardFingerRadius,\r\n showSize: true,\r\n restorePalette: false,\r\n restorePaintingActions : undefined,\r\n contextKey: 'paintingPageAnon',\r\n saveStrokes: false,\r\n showReplay: false,\r\n forceReplay: false,\r\n showStamp: true,\r\n showPalette: true,\r\n showSample: true,\r\n canCacheCtx: true,\r\n saveKind: 'none'\r\n } as PaintingPageBehaviors;\r\n } else if (props.InteractionMode === 'watch') {\r\n this.behave = {\r\n needsCalibraton: false,\r\n fixedSize: doCalibrateFirst ? FingerTip.standardFingerRadius : fixedSize,\r\n showSize: doCalibrateFirst ? true : props.KnownShowSize,\r\n restorePalette: true,\r\n restorePaintingActions : 'paintingActionsOther',\r\n contextKey: 'paintingPageAnon',\r\n saveStrokes: false,\r\n forceReplay: true,\r\n showReplay: true,\r\n showStamp: true,\r\n showPalette: true,\r\n showSample: true,\r\n canCacheCtx: false,\r\n saveKind: 'none'\r\n } as PaintingPageBehaviors;\r\n } else if (props.InteractionMode === 'edit') {\r\n this.behave = {\r\n needsCalibraton: false,\r\n fixedSize: doCalibrateFirst ? FingerTip.standardFingerRadius : fixedSize,\r\n showSize: doCalibrateFirst ? true : props.KnownShowSize,\r\n restorePalette: true,\r\n restorePaintingActions : 'paintingActionsSelf',\r\n contextKey: 'paintingPageSelf',\r\n saveStrokes: true,\r\n forceReplay: true,\r\n showReplay: true,\r\n showStamp: true,\r\n canCacheCtx: true,\r\n showPalette: true,\r\n showSample: true,\r\n saveKind: 'any'\r\n } as PaintingPageBehaviors;\r\n } else {\r\n this.behave = {} as PaintingPageBehaviors;\r\n console.error('PaintingPage, unknown mode');\r\n }\r\n \r\n \r\n this.smearRef = React.createRef();\r\n this.mainRecording = new AnimationActionRecording();\r\n\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n color: '#000000',\r\n pressWeight: FingerTip.standardFingerRadius,\r\n sampleMode: false,\r\n paletteMode: false,\r\n fixedSize: this.behave.fixedSize,\r\n avgLightRadius: props.KnownAvgLightRadius,\r\n avgHeavyRadius: props.KnownAvgHeavyRadius,\r\n useMouse: props.KnownUseMouse,\r\n showSize: this.behave.showSize,\r\n addedColors: new Array(),\r\n limitedColors: new Array(),\r\n pendingActionButton: undefined,\r\n askQuestion: undefined,\r\n navigateTo: this.behave.needsCalibraton ? {To:'/calibrate'} : undefined,\r\n overlayTool: undefined,\r\n authenticated: false,\r\n allDisabled: false,\r\n replaying: false,\r\n challengeState: undefined,\r\n popChallenge: false,\r\n challengePercentRemaining: 1,\r\n paintingDisabled: false\r\n };\r\n } catch (e: any) {\r\n props.AppObject.reportException(`Paint, constructor`, 'ex', '', e)\r\n }\r\n }\r\n\r\n prevDefault = (ev:TouchEvent)=>{\r\n if (ev.touches.length === 1) {\r\n const touch = ev.touches[0];\r\n if (touch.clientX < 16 || touch.clientX > window.innerWidth - 16) {\r\n ev.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n STrace.addStep('painting', 'didMound', '');\r\n\r\n window.addEventListener('touchstart', this.prevDefault, { passive: false })\r\n let controlThis = this;\r\n this.executeAsync(async ()=> {\r\n controlThis.pushWaitingFrame(this);\r\n let restorePalette = true;\r\n let restorePainting = true;\r\n\r\n if (controlThis.behave.saveKind === 'chal') {\r\n // get running challenge and make sure we can paint now\r\n let challengeState = await Smesshy.getSpecificChallengeStateAsync(controlThis, undefined, false);\r\n if (challengeState === undefined || challengeState.challengeId <= 1 || challengeState.state !== 'paint') {\r\n controlThis.setState({navigateTo: {To:'/'}});\r\n controlThis.popWaitingFrame();\r\n return;\r\n }\r\n // has the user already painted some for this challenge? If no, then clear the painting and actions\r\n let lastChallengeEntry = localStorage.getItem('smesshy-last-challenge-entry');\r\n if (lastChallengeEntry === undefined || lastChallengeEntry === null || lastChallengeEntry !== challengeState.challengeId.toString()) {\r\n STrace.addStep('paint', 'chal start clear canvas', '');\r\n controlThis.clearMainSmash(true); \r\n restorePainting = false;\r\n localStorage.setItem('smesshy-last-challenge-entry', challengeState.challengeId.toString());\r\n localStorage.setItem('smesshy-challenge-time-remaining', '1.0');\r\n }\r\n\r\n this.behave.showStamp = challengeState.rules !== undefined && challengeState.rules.stamps !== undefined ? challengeState.rules.stamps : challengeState.stampAllowed; \r\n\r\n if (challengeState.rules !== undefined && challengeState.rules !== null) {\r\n if (challengeState.rules.colorRestrictions !== undefined && challengeState.rules.colorRestrictions.length > 0) {\r\n // restricted colors\r\n this.behave.showPalette = false;\r\n this.behave.showSample = false;\r\n restorePalette = false;\r\n this.setState({limitedColors: challengeState.rules.colorRestrictions});\r\n }\r\n if (challengeState.rules.startingWith !== undefined && challengeState.rules.startingWith.length > 0) {\r\n restorePainting = true;\r\n localStorage.setItem(this.behave.restorePaintingActions!, challengeState.rules.startingWith);\r\n }\r\n this.setChallengeTimer(challengeState);\r\n }\r\n\r\n this.setState({challengeState: challengeState, popChallenge: true});\r\n\r\n } \r\n\r\n const persistedPaintingInfo = controlThis.getCurrentPainting();\r\n if (restorePainting === true) {\r\n controlThis.pendingReplay = persistedPaintingInfo[0];\r\n }\r\n \r\n // put the saved palette back if any\r\n if (restorePalette && persistedPaintingInfo[1] !== undefined) {\r\n controlThis.setState({ addedColors: persistedPaintingInfo[1]});\r\n }\r\n controlThis.popWaitingFrame();\r\n \r\n });\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('painting', 'populateAuth', authenticated.toString());\r\n this._app!.clearNotifications('pokeLunchbox');\r\n this.setState({authenticated: authenticated});\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.challengeTimer !== undefined) {\r\n this.challengeTimer.clear();\r\n }\r\n this.saveStrokes();\r\n window.removeEventListener('touchstart', this.prevDefault);\r\n }\r\n\r\n setChallengeTimer(challengeState: ChallengeState) {\r\n if (challengeState !== undefined && challengeState.rules.timeLimit !== undefined && challengeState.rules.timeLimit !== null && challengeState.rules.timeLimit > 0) {\r\n if (this.challengeTimer !== undefined) {\r\n this.challengeTimer.clear();\r\n }\r\n let remainingStr = localStorage.getItem('smesshy-challenge-time-remaining');\r\n let remaining = 1.0;\r\n if (remainingStr !== null) {\r\n remaining = parseFloat(remainingStr);\r\n if (isNaN(remaining) || remaining < 0 || remaining > 1) {\r\n remaining = 1.0;\r\n }\r\n }\r\n this.setState({challengePercentRemaining: remaining, paintingDisabled: remaining === 0});\r\n\r\n this.challengeTimer = new CountdownTimer();\r\n this.challengeTimer.countDownFrom(challengeState.rules.timeLimit * remaining, 2, (remainingTime) => {\r\n let newRemaining = 0;\r\n if (remainingTime > 0) {\r\n newRemaining = remainingTime / challengeState.rules.timeLimit;\r\n }\r\n this.setState({challengePercentRemaining: newRemaining, paintingDisabled: newRemaining === 0});\r\n localStorage.setItem('smesshy-challenge-time-remaining', newRemaining.toString());\r\n\r\n });\r\n }\r\n this.setState({paintingDisabled: false});\r\n }\r\n toggleChallengeTimer(pause: boolean) {\r\n if (this.challengeTimer === undefined) {\r\n return;\r\n }\r\n this.challengeTimer.togglePause(pause);\r\n }\r\n\r\n setChallengeStartWith(challengeState: ChallengeState) {\r\n if (challengeState !== undefined && \r\n challengeState.rules !== undefined && challengeState.rules !== null &&\r\n challengeState.rules.startingWith !== undefined && challengeState.rules.startingWith !== null &&\r\n challengeState.rules.startingWith.length > 0) {\r\n localStorage.setItem(this.behave.restorePaintingActions!, challengeState.rules.startingWith);\r\n this.pendingReplay = challengeState.rules.startingWith;\r\n }\r\n }\r\n\r\n onDragStart(mainCanvas: boolean) : boolean {\r\n if (mainCanvas === true) {\r\n if (this._app!.DoShowTutorial('paintingCanvas')) {\r\n if (this.behave.showSize === true) {\r\n this.setState({tutorialStep: tutorialPaintingCanvasManual})\r\n } else {\r\n this.setState({tutorialStep: tutorialPaintingCanvasTouch})\r\n }\r\n return false;\r\n }\r\n }\r\n // small delay to prevent accidental button presses will happen when done, so reset if just starting while waiting\r\n if (this.timeoutEnableButtons !== undefined) {\r\n clearTimeout(this.timeoutEnableButtons);\r\n this.timeoutEnableButtons = undefined;\r\n }\r\n this.setState({allDisabled:true});\r\n return true;\r\n }\r\n onDragEnd() {\r\n // small delay to prevent accidental button presses.\r\n if (this.timeoutEnableButtons !== undefined) {\r\n clearTimeout(this.timeoutEnableButtons);\r\n this.timeoutEnableButtons = undefined;\r\n }\r\n let controlThis=this;\r\n this.timeoutEnableButtons = setTimeout(()=>{\r\n controlThis.setState({allDisabled:false}); \r\n controlThis.timeoutEnableButtons = undefined;\r\n controlThis.saveStrokes()\r\n\r\n }, 500);\r\n }\r\n\r\n\r\n clearMainSmash(save: boolean) {\r\n if (this.smearRef!.current) {\r\n this.smearRef!.current!.clearCanvas(); \r\n }\r\n this.mainRecording = new AnimationActionRecording();\r\n this.mainRecording.recordAction({kind:AnimationActionKind.color, color: this.state.color});\r\n this.mainRecording.recordAction({kind:AnimationActionKind.paintRadius, rad: this.state.pressWeight});\r\n if (save) {\r\n this.saveStrokes()\r\n }\r\n }\r\n\r\n stopAndChopReplay() {\r\n if (this.state.replaying === true) {\r\n let lastStep = this.smearRef!.current!.stopReplay();\r\n if (lastStep !== -1) {\r\n this.mainRecording!.chopAfter(lastStep);\r\n this.saveStrokes();\r\n }\r\n this.setState({replaying: false, allDisabled:false});\r\n }\r\n }\r\n\r\n addColorSample(rgb: tinycolor.ColorFormats.RGB) {\r\n let colorKey = new tinycolor(rgb).toHexString();\r\n let newColor = (!this.baseColors.has(colorKey)) && this.state.addedColors.indexOf(colorKey) == -1;\r\n\r\n if (newColor) {\r\n this.mainRecording!.recordAction({kind:AnimationActionKind.color, color: colorKey});\r\n let newAdded = this.state.addedColors.concat(colorKey);\r\n this.saveStrokes();\r\n this.setState({sampleMode: false, addedColors: newAdded, color: colorKey, pendingActionButton: undefined});\r\n } else {\r\n this.setState({sampleMode: false, color: colorKey, pendingActionButton: undefined});\r\n }\r\n \r\n }\r\n\r\n removeColorSamples() {\r\n localStorage.removeItem('paletteCurrent');\r\n this.saveStrokes();\r\n this.setState({addedColors: []});\r\n }\r\n\r\n clearAsk() {\r\n this.setState({askQuestion: undefined, pendingActionButton:undefined});\r\n }\r\n\r\n getCurrentPainting() : [string | undefined, Array | undefined] {\r\n\r\n let persistedRGBs: Array | undefined;\r\n if (this.behave.restorePalette) {\r\n let persistedPalette:string | null = localStorage.getItem('paletteCurrent');\r\n if (persistedPalette !== null && persistedPalette !== undefined) {\r\n let persistedColorStr = JSON.parse(persistedPalette) as Array\r\n if (persistedColorStr !== null && persistedColorStr !== undefined && persistedColorStr.length > 0) {\r\n persistedRGBs = new Array();\r\n for (const clr of persistedColorStr) {\r\n persistedRGBs.push(new tinycolor(clr).toHexString());\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n let paintingActionsCurrent:string | null | undefined;\r\n if (this.behave.restorePaintingActions !== undefined) {\r\n paintingActionsCurrent = localStorage.getItem(this.behave.restorePaintingActions);\r\n }\r\n if (paintingActionsCurrent === null) {\r\n paintingActionsCurrent = undefined;\r\n }\r\n return [paintingActionsCurrent, persistedRGBs];\r\n }\r\n\r\n\r\n stillSaving = false;\r\n \r\n saveStrokes() {\r\n\r\n if (this.behave.saveStrokes === false) {\r\n return;\r\n }\r\n\r\n // lots of things need to be up and running before we should try this\r\n if (this.stillSaving === true || this.state.showWaitSpin === true || !this.smearRef!.current || this.smearRef!.current.getPage() === undefined ) {\r\n return;\r\n }\r\n this.stillSaving = true;\r\n\r\n let saveActionNeeded = this.mainRecording!.getSerializeNeeded();\r\n if (saveActionNeeded === 'skip'){\r\n this.stillSaving = false;\r\n return;\r\n }\r\n \r\n let rec = this.mainRecording!.serialize();\r\n\r\n const persistedPalette = new Array();\r\n for (const clr of this.state.addedColors) {\r\n persistedPalette.push(new tinycolor(clr).toHexString());\r\n }\r\n if (this.behave.showSample === true) {\r\n localStorage.setItem('paletteCurrent', JSON.stringify(persistedPalette));\r\n }\r\n localStorage.setItem(this.behave.restorePaintingActions!, rec);\r\n\r\n this.stillSaving = false;\r\n }\r\n\r\n localPressWeight = FingerTip.minFingerRadius;\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`paint, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n \r\n maxCaptionWidth = -1;\r\n captionInputFont = '13px Arial';\r\n measureCtx: CanvasRenderingContext2D | undefined = undefined;\r\n babyRender() {\r\n\r\n let controlThis = this;\r\n const doHaptic = this.doButtonHaptic();\r\n\r\n if (this.maxCaptionWidth === -1) {\r\n let bodyStyle = window.getComputedStyle(document.body);\r\n let fontFam = bodyStyle.getPropertyValue('font-family');\r\n let smallWidth = this._app!.GetScaledPxWidth(13);\r\n let measureCanvas = document.createElement('canvas');\r\n this.measureCtx = measureCanvas.getContext('2d')!;\r\n this.captionInputFont = smallWidth + 'px ' + fontFam;\r\n this.measureCtx.font = this.captionInputFont;\r\n this.maxCaptionWidth = this.measureCtx.measureText('Example of Longest Text').width;\r\n }\r\n\r\n\r\n const makeIconButton = (key: string | undefined, color: string|undefined, iconRefFactory: IconRefFactory, disabled: boolean, onPressAlso: (()=>void) | undefined) : JSX.Element=> {\r\n if (key === undefined) {\r\n key = color;\r\n }\r\n return (\r\n {\r\n if (color !== undefined) {\r\n controlThis.localPressWeight = FingerTip.minFingerRadius - 1;\r\n controlThis.setState({color:color, sampleMode:false, pressWeight: FingerTip.minFingerRadius})\r\n controlThis.mainRecording!.recordAction({kind:AnimationActionKind.color, color: color});\r\n controlThis.mainRecording!.recordAction({kind:AnimationActionKind.paintRadius, rad: FingerTip.minFingerRadius});\r\n } \r\n }}\r\n OnPressTick={()=>{\r\n if (color !== undefined) {\r\n controlThis.localPressWeight ++;\r\n if (doHaptic && controlThis.localPressWeight <= FingerTip.maxFingerRadius) {\r\n let vibTime = Math.floor(2 + (3 * (controlThis.localPressWeight - FingerTip.minFingerRadius) / (FingerTip.maxFingerRadius - FingerTip.minFingerRadius)));\r\n navigator.vibrate(vibTime);\r\n }\r\n controlThis.localPressWeight = Math.min(FingerTip.maxFingerRadius, controlThis.localPressWeight);\r\n controlThis.setState({sampleMode:false, pressWeight: controlThis.localPressWeight})\r\n controlThis.mainRecording!.recordAction({kind:AnimationActionKind.paintRadius, rad: controlThis.localPressWeight});\r\n }\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n if (color !== undefined) {\r\n let tutorialStep = tutorialPaintingColor;\r\n if (iconRefFactory === IconFinger) {\r\n tutorialStep = tutorialPaintingSmudge;\r\n } else if (iconRefFactory === IconKnife) {\r\n tutorialStep = tutorialPaintingKnife;\r\n } else if (iconRefFactory === IconBlow) {\r\n tutorialStep = tutorialPaintingBlow;\r\n }\r\n if (controlThis._app!.DoShowTutorial(tutorialStep.Key)) {\r\n controlThis.setState({tutorialStep: tutorialStep})\r\n return true;\r\n } else {\r\n controlThis.mainRecording!.recordAction({kind:AnimationActionKind.color, color: color});\r\n controlThis.mainRecording!.recordAction({kind:AnimationActionKind.paintRadius, rad: controlThis.localPressWeight});\r\n controlThis.saveStrokes();\r\n return true;\r\n }\r\n } else {\r\n controlThis.setState({pendingActionButton:key});\r\n if (onPressAlso !== undefined) {\r\n onPressAlso();\r\n }\r\n return true;\r\n }\r\n }}\r\n\r\n StartPushedState={this.state.color === key || this.state.pendingActionButton === key}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(31)}\r\n />);\r\n };\r\n\r\n const renderSizeBar = (): JSX.Element =>{\r\n let weightPct = Math.floor(100*(this.state.pressWeight) / (FingerTip.maxFingerRadius));\r\n\r\n return (\r\n
\r\n {this.state.showSize && this.state.paletteMode === false ? : dab}\r\n \r\n \r\n
\r\n {\r\n this.state.showSize && this.state.paletteMode === false ?\r\n {\r\n controlThis.setState({showSize:true, fixedSize:Number.parseInt(val.target.value)})}\r\n }\r\n min={FingerTip.minFingerRadius}\r\n max={FingerTip.maxFingerRadius}\r\n step={1}\r\n value={this.state.fixedSize === 0 ? FingerTip.standardFingerRadius : this.state.fixedSize}\r\n className='smesshy-slider'\r\n >\r\n : <>\r\n }\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {this.state.showSize && this.state.paletteMode === false ? : glop}\r\n
);\r\n };\r\n\r\n const renderSubPalette = (key: string):JSX.Element => {\r\n let scaleX = this._app!.GetScaledPxWidth(1);\r\n let scaleY = this._app!.GetScaledPxHeight(1);\r\n return (\r\n
\r\n {\r\n const grd = crc.createLinearGradient(160*scaleX, 0, 0, 160*scaleY);\r\n grd.addColorStop(0, \"darkgrey\");\r\n grd.addColorStop(1, \"white\");\r\n crc.strokeStyle=grd;\r\n crc.lineWidth=10;\r\n crc.ellipse(80*scaleX,80*scaleY,70*scaleX,70*scaleY,0,0,2*Math.PI, false);\r\n crc.stroke();\r\n }\r\n }\r\n TextureSmash = {false}\r\n CentralPull={(d:number):number=>{\r\n return (d*d)/(65.0 * 65 * scaleX * scaleX);\r\n return 0;\r\n }}\r\n DryInterval={0}\r\n DryRate={0}\r\n OnColorSample={(rgb)=>controlThis.addColorSample(rgb)}\r\n UseMouse={this.state.useMouse}\r\n FixedSize={FingerTip.standardFingerRadius}\r\n AvgLightRadius={this.state.avgLightRadius}\r\n AvgHeavyRadius={this.state.avgHeavyRadius}\r\n PaintRadius={this.state.pressWeight}\r\n OnDragStart = {()=>controlThis.onDragStart(false)}\r\n OnDragEnd = {()=>controlThis.onDragEnd()}\r\n ExceptionHandler={(source: string, kind: string, code: string, exception: unknown)=>{this.props.AppObject.reportException(source, kind, code, exception)}}\r\n />\r\n
);\r\n }\r\n\r\n const renderClearButton = ():JSX.Element => {\r\n return (<>\r\n {makeIconButton('clear', undefined, IconTrash, \r\n this.state.replaying===false && (this.state.allDisabled || this.state.paletteMode), \r\n ()=>{\r\n STrace.addStep('paint', 'clear ask', '');\r\n if (controlThis.state.paletteMode === true) {return;}\r\n controlThis.setState({askQuestion:{\r\n Top: 64,\r\n Title: Clear,\r\n Prompts: [Whats gone is gone.],\r\n Options: [{Key:'canvas', Option:Clear Canvas, OnOption:async ():Promise=>{\r\n STrace.addStep('paint', 'clear canvas', '');\r\n controlThis.clearMainSmash(true); \r\n if (controlThis.state.replaying === true) {\r\n controlThis.setState({replaying: false, allDisabled:false});\r\n }\r\n controlThis.clearAsk();\r\n\r\n controlThis.setChallengeStartWith(controlThis.state.challengeState!);\r\n\r\n // reset the challenge clock.\r\n localStorage.setItem('smesshy-challenge-time-remaining', '1.0');\r\n controlThis.setChallengeTimer(controlThis.state.challengeState!);\r\n \r\n return true;\r\n }}, \r\n {Key:'palette', Option:Clear Colors, Disabled:controlThis.behave.showSample === false, OnOption:async ():Promise=>{\r\n STrace.addStep('paint', 'clear palette', '');\r\n controlThis.removeColorSamples(); controlThis.clearAsk();\r\n return true;\r\n }}],\r\n OnCancel:()=>{\r\n STrace.addStep('paint', 'clear reject', '');\r\n controlThis.clearAsk()} \r\n }});\r\n \r\n if (controlThis._app!.DoShowTutorial('paintingTrash')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingTrash})\r\n };\r\n })}\r\n\r\n \r\n );\r\n };\r\n const renderReplayButton = ():JSX.Element => {\r\n if (controlThis.behave.showReplay===false) {\r\n return <>;\r\n }\r\n return (<>\r\n {makeIconButton('replay', undefined, this.state.replaying===false ? IconPlay : IconStop, \r\n this.state.replaying===false && (this.state.allDisabled || this.state.paletteMode),\r\n ()=>{ \r\n STrace.addStep('paint', 'replay ask', '');\r\n if (controlThis.state.paletteMode === true) {return;}\r\n if (controlThis.state.replaying === true) {\r\n controlThis.stopAndChopReplay();\r\n return;\r\n }\r\n controlThis.setState({askQuestion:{\r\n Top: 64,\r\n Title: Replay / Redraw,\r\n Options: [{Key:'replay', Option:Replay and redraw the current painting, OnOption:async ():Promise=>{\r\n STrace.addStep('paint', 'replay start', '');\r\n controlThis.setState({replaying: true, allDisabled:true});\r\n controlThis.smearRef!.current!.profileReplay = true;\r\n controlThis.smearRef!.current!.replayRecorded(3, 12, controlThis.mainRecording!.recordedAction, ()=>{\r\n controlThis.setState({overlayTool: controlThis.smesshyDone(100), replaying: false, allDisabled:false});\r\n }); \r\n controlThis.clearAsk();\r\n return true;\r\n }}],\r\n OnCancel:()=>{\r\n STrace.addStep('paint', 'replay reject', '');\r\n controlThis.clearAsk()}\r\n }});\r\n if (controlThis._app!.DoShowTutorial('paintingReplay')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingReplay})\r\n };\r\n\r\n })}\r\n \r\n );\r\n };\r\n const renderImageButton = ():JSX.Element => {\r\n if (controlThis.behave.showStamp===false) {\r\n return <>;\r\n }\r\n\r\n return (<>\r\n {makeIconButton('image', undefined, IconPhoto, this.state.allDisabled || this.state.paletteMode, ()=>{\r\n STrace.addStep('paint', 'stamp ask', '');\r\n if (controlThis.state.paletteMode === true) {return;}\r\n let stampDepth = FingerTip.maxSmashTouchDepth * 2; \r\n const onImageSelect = (evt: ChangeEvent) => { \r\n STrace.addStep('paint', 'stamp select', '');\r\n let targ = evt.target as HTMLInputElement;\r\n if (targ && targ.files && targ.files.length === 1) {\r\n let localUrl = URL.createObjectURL(targ.files[0]);\r\n // because of abs position, we need to adjust the smear rect to be relative to the app\r\n let smearRect = controlThis.smearRef!.current!.boundingClientRect()!;\r\n smearRect = new DOMRect(smearRect.x - controlThis.props.AppShape!.appRectangle.x, \r\n smearRect.y - controlThis.props.AppShape!.appRectangle.y, \r\n smearRect.width, smearRect.height);\r\n\r\n controlThis.setState({overlayTool: \r\n {Element: {\r\n STrace.addStep('paint', 'stamp place', '');\r\n controlThis.setState({overlayTool: undefined});\r\n controlThis.smearRef!.current!.stampImage(img, offX, offY, width, height, scaleWidth, scaleHeight, rotation, stampDepth);\r\n controlThis.saveStrokes();\r\n }}\r\n />,\r\n OnCancel: ()=>{\r\n controlThis.setState({overlayTool: undefined});}}\r\n });\r\n }\r\n controlThis.clearAsk()\r\n };\r\n let pressRef: React.RefObject = React.createRef();\r\n controlThis.setState({askQuestion:{\r\n Top: 64,\r\n Title: Apply a Stamp,\r\n Prompts: [A photo or image can be 'stamped' onto,\r\n the canvas with paint. How thick?,\r\n
\r\n dry<\r\n {\r\n stampDepth = Number.parseInt(val.target.value);\r\n }}\r\n min={FingerTip.maxSmashTouchDepth/2}\r\n max={FingerTip.maxSmashTouchDepth * 4}\r\n step={2}\r\n defaultValue={stampDepth}\r\n className='smesshy-slider'\r\n >\r\n >goopy\r\n
],\r\n Options: [{Key:'camera', Option:, OnOption:async ():Promise=>{\r\n return true;\r\n //pressRef.current?.click();\r\n }, PassiveOnly:true}, \r\n {Key:'image', Option:, OnOption:async ():Promise=>{\r\n return true;\r\n //pressRef.current?.click();\r\n }, PassiveOnly:true}],\r\n OnCancel:()=>{\r\n STrace.addStep('paint', 'stamp ask reject', '');\r\n controlThis.clearAsk()}\r\n }});\r\n if (controlThis._app!.DoShowTutorial('paintingStamp')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingStamp})\r\n };\r\n \r\n })}\r\n\r\n \r\n );\r\n };\r\n\r\n const onUploadPainting = async (visibilityKind: string, closeOnSave: boolean, caption?:string, lunchboxTo?: Array ) : Promise =>{\r\n let thumb = controlThis.smearRef!.current!.takeSnapshot(50,100)!;\r\n let preview = controlThis.smearRef!.current!.takeSnapshot(350,700)!;\r\n controlThis.saveStrokes();\r\n let actions = controlThis.mainRecording!.serialize();\r\n controlThis.pushWaitingFrame(controlThis);\r\n STrace.addStep('paint', 'putUserPaintingAsync', visibilityKind);\r\n const pi = await controlThis.storageManager!.putUserPaintingAsync(visibilityKind, thumb, preview, actions, caption!);\r\n if (pi !== undefined) {\r\n if (lunchboxTo !== undefined && lunchboxTo.length > 0 && visibilityKind === 'lunc') {\r\n let utcDate = new Date();\r\n let userDate = new Date(utcDate.getTime() - utcDate.getTimezoneOffset() * 60000);\r\n let userDays = userDate.getTime() / (1000 * 60 * 60 * 24);\r\n STrace.addStep('paint', 'postLunchboxDeliveryAsync', pi.paintingId!);\r\n await controlThis.storageManager!.postLunchboxDeliveryAsync({deliveryId: pi.visibilityId!, toUsers: lunchboxTo, paintingId: pi.paintingId!, userDays: userDays});\r\n }\r\n controlThis.clearMainSmash(true); \r\n }\r\n controlThis.popWaitingFrame();\r\n controlThis.setState({askQuestion: undefined, overlayTool: controlThis.smesshyDone(100)});\r\n if (closeOnSave) {\r\n controlThis.setState({navigateTo: {To: -1}});\r\n }\r\n return true;\r\n };\r\n\r\n const onSaveLunchbox = async (closeOnSave: boolean, caption: string | undefined): Promise=>{\r\n const smearRect = controlThis.smearRef!.current!.boundingClientRect()!;\r\n const dlgWidth = Math.min(280, smearRect.width-20);\r\n const dlHeight = Math.min(500, smearRect.height-20);\r\n const dlgRect = new DOMRect(smearRect.x + (smearRect.width - dlgWidth) / 2, smearRect.y + (smearRect.height - dlHeight) / 2, dlgWidth, dlHeight);\r\n\r\n controlThis.setState({askQuestion: undefined, overlayTool: {\r\n Element: ): Promise =>{\r\n return await onUploadPainting('lunc', closeOnSave, caption, selectedFollowers);\r\n }}\r\n OnReject={()=>{\r\n controlThis.setState({overlayTool: undefined});\r\n }}\r\n\r\n />\r\n }});\r\n return true;\r\n }\r\n \r\n const renderSaveButton = ():JSX.Element => {\r\n if (controlThis.behave.saveKind === 'none') {\r\n return <>;\r\n }\r\n let closeOnSave = controlThis.behave.saveKind !== 'any';\r\n let inputRef = React.createRef() as React.RefObject;\r\n\r\n return (<>\r\n {makeIconButton('upload', undefined, IconUpload, this.state.allDisabled || this.state.paletteMode, ()=>{\r\n STrace.addStep('paint', 'upload ask', '');\r\n controlThis.enteredCaption = undefined;\r\n const setUploadAsk = (challengeOpen: boolean, alreadyInChallenge: boolean, stampAllowed: boolean, hasStamp: boolean)=>{\r\n\r\n if (controlThis._app!.DoShowTutorial('paintingSave')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingSave})\r\n };\r\n\r\n let disabled = true;\r\n let challengeText =
\r\n Waiting for\r\n the next\r\n Challenge\r\n
;\r\n\r\n if (challengeOpen) {\r\n if (alreadyInChallenge) {\r\n challengeText =
\r\n Already\r\n in the\r\n Current\r\n Challenge\r\n
;\r\n } else if (stampAllowed === false && hasStamp === true) {\r\n challengeText =
\r\n No Stamps\r\n Allowed in\r\n Current\r\n Challenge\r\n
;\r\n } else {\r\n disabled = false;\r\n challengeText =
\r\n My Entry\r\n Into the\r\n Current\r\n Challenge\r\n
\r\n }\r\n }\r\n \r\n let options = new Array();\r\n\r\n if (controlThis.behave.saveKind === 'chal') {\r\n options.push({Key:'challenge', Option:\r\n challengeText, OnOption: async (): Promise=>{\r\n STrace.addStep('paint', 'upload', 'chal');\r\n return await onUploadPainting('chal', closeOnSave, controlThis.enteredCaption);\r\n }, Disabled: disabled});\r\n }\r\n if (controlThis.behave.saveKind === 'any' || controlThis.behave.saveKind === 'foll') {\r\n options.push({Key:'followers', Option:\r\n
\r\n For All\r\n of My\r\n Followers\r\n
, OnOption:async ():Promise=>{\r\n STrace.addStep('paint', 'upload', 'foll');\r\n return await onUploadPainting('foll', closeOnSave, controlThis.enteredCaption);\r\n }});\r\n }\r\n if (controlThis.behave.saveKind === 'any' || controlThis.behave.saveKind === 'lunc') {\r\n options.push({Key:'lunchbox', Option:\r\n
\r\n Hide it\r\n in a\r\n Lunchbox\r\n
, OnOption:async ():Promise=>{\r\n STrace.addStep('paint', 'upload', 'lunc');\r\n return await onSaveLunchbox( closeOnSave, controlThis.enteredCaption)}});\r\n }\r\n options.push(\r\n {Key:'personal', Option:\r\n
\r\n My\r\n Private\r\n Pile\r\n
, OnOption:async ():Promise=>{\r\n STrace.addStep('paint', 'upload', 'priv');\r\n return await onUploadPainting('priv', false, controlThis.enteredCaption)}});\r\n controlThis.setState({askQuestion:{\r\n Top: 64,\r\n Title: Save,\r\n Prompts: [
\r\n I call this: \"\r\n {\r\n if (inputRef.current) {\r\n controlThis.enteredCaption = inputRef.current.value;\r\n if (controlThis.enteredCaption === '') {\r\n controlThis.enteredCaption = undefined;\r\n } else {\r\n if (controlThis.enteredCaption.length > 48) {\r\n controlThis.enteredCaption = controlThis.enteredCaption.substring(0, 48);\r\n }\r\n let width = controlThis.measureCtx!.measureText(controlThis.enteredCaption).width;\r\n while (width > controlThis.maxCaptionWidth) {\r\n controlThis.enteredCaption = controlThis.enteredCaption.substring(0, controlThis.enteredCaption.length - 1);\r\n width = controlThis.measureCtx!.measureText(controlThis.enteredCaption).width;\r\n }\r\n if (controlThis.enteredCaption !== inputRef.current.value) {\r\n inputRef.current.value = controlThis.enteredCaption;\r\n }\r\n }\r\n }\r\n }}>\r\n \"\r\n
,\r\n Who gets to see this painting?,\r\n ],\r\n Options: options,\r\n OnCancel:()=>{\r\n STrace.addStep('paint', 'upload ask reject', '');\r\n controlThis.clearAsk()}\r\n }});\r\n\r\n }\r\n\r\n if (controlThis.state.paletteMode === true) {return;}\r\n if (this.state.authenticated) {\r\n let challengeOpen = false;\r\n let hasStamp = controlThis.mainRecording!.stampSeen;\r\n let stampAllowed = true;\r\n let alreadyInChallenge = false;\r\n \r\n controlThis.executeAsync(async ()=> {\r\n STrace.addStep('paint', 'getChallengeStateAsync', '');\r\n controlThis.pushWaitingFrame(controlThis);\r\n let challengeState = await controlThis.storageManager!.getChallengeStateAsync(undefined, true);\r\n controlThis.popWaitingFrame();\r\n if (challengeState !== undefined) {\r\n challengeOpen = challengeState.state === 'paint';\r\n stampAllowed = controlThis.behave.showStamp;;\r\n if (challengeOpen) {\r\n STrace.addStep('paint', 'getUserInChallengeAsync', '');\r\n controlThis.pushWaitingFrame(controlThis);\r\n alreadyInChallenge = await controlThis.storageManager!.getUserInChallengeAsync();\r\n controlThis.popWaitingFrame();\r\n }\r\n setUploadAsk(challengeOpen, alreadyInChallenge, stampAllowed, hasStamp);\r\n }\r\n });\r\n\r\n setUploadAsk(challengeOpen, alreadyInChallenge, stampAllowed, hasStamp);\r\n \r\n } else {\r\n\r\n if (controlThis._app!.DoShowTutorial('paintingSaveAnon')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingSaveAnon})\r\n return;\r\n };\r\n \r\n try {\r\n controlThis.setState({ navigateTo: controlThis.getAuthenticationNavigate('/painting', 'login')});\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`PaintingPage upload auth`, 'ex', '', e)\r\n }\r\n }\r\n })}\r\n \r\n );\r\n };\r\n\r\n\r\n const ReplayObserver = () => {\r\n useEffect(()=>{\r\n // if there is something to replay AND we are not loading or doing auth then\r\n const smear = controlThis.smearRef!.current;\r\n if (controlThis.pendingReplay !== undefined && controlThis.state.showWaitSpin === false && controlThis.state.navigateTo === undefined && smear) {\r\n // if there is no render context, that means thing are still setting up in that child component. set our state to something dumb to trigger a re render\r\n if (smear.getPage() === undefined) {\r\n this.setState({color: this.state.color});\r\n } else {\r\n // replay could happen. restore the sequence\r\n //sessionStorage.setItem('last-smesshy-replay', controlThis.pendingReplay);\r\n this.mainRecording!.restore(controlThis.pendingReplay); \r\n controlThis.pendingReplay = undefined;\r\n // now, SHOULD we replay? \r\n if (!smear.usingCachedContext || controlThis.behave.forceReplay) {\r\n controlThis.setState({replaying: true, allDisabled:true});\r\n smear!.replayRecorded(.1, 1, this.mainRecording!.recordedAction, ()=>{\r\n controlThis.setState({overlayTool: controlThis.smesshyDone(100), replaying: false, allDisabled:false}); \r\n });\r\n }\r\n\r\n let finalDrawProps = controlThis.mainRecording!.finalDrawPropsUsed()\r\n controlThis.setState({color: finalDrawProps[0], pressWeight: finalDrawProps[1] });\r\n }\r\n }\r\n if (controlThis._app!.DoShowTutorial('paintingInitial')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingInitial})\r\n }\r\n \r\n });\r\n return <>;\r\n }\r\n const addBaseColor = (rgbStr: string) : string => {\r\n let colorCode = new tinycolor(rgbStr).toHexString();\r\n this.baseColors.add(colorCode);\r\n return colorCode;\r\n };\r\n let challengeWidth = '100%';\r\n let challengeTimeLeftWidth = '0%';\r\n let challengeColorUrgency = 'rgba(255,0,0,0)';\r\n if (this.state.challengePercentRemaining !== undefined) {\r\n let reserved = .22;\r\n let remaining = 1 - reserved;\r\n let challengePercentUsed = (1 - this.state.challengePercentRemaining) * remaining;\r\n challengeWidth = (100 * (1-challengePercentUsed)) + '%';\r\n challengeTimeLeftWidth = (100 * challengePercentUsed) + '%';\r\n let urgencyAlpha = 1.0 / Math.pow(2,this.state.challengePercentRemaining/0.25);\r\n challengeColorUrgency = `rgba(255,0,0,${urgencyAlpha})`;\r\n\r\n }\r\n \r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Body={\r\n <>\r\n \r\n {this.state.challengeState === undefined ? <> :\r\n
\r\n
\r\n {\r\n return controlThis.state.challengeState!;\r\n }}\r\n Options={{Prefix: 'Challenge:', ShowTitle: true, ShowEntrants:false, ShowPrize: false, ShowResults: false, ShowRules: false, Expanded: this.state.popChallenge}}\r\n OnExpandContract={(expanded: boolean)=>{\r\n controlThis.toggleChallengeTimer(expanded);\r\n if (expanded === false) {\r\n if (controlThis.state.popChallenge === true) {\r\n controlThis.setState({popChallenge: false});\r\n }\r\n }\r\n }}\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n }\r\n
\r\n
\r\n {this.behave.showPalette === false ? ' ' :\r\n makeIconButton('palette', undefined, this.state.paletteMode ? IconPainting: IconPalette, this.state.allDisabled, ()=>{\r\n STrace.addStep('paint', 'palette', controlThis.state.paletteMode.toString());\r\n if (controlThis._app!.DoShowTutorial('paintingPaletteSwap')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingPaletteSwap})\r\n return;\r\n }\r\n controlThis.setState({paletteMode: !controlThis.state.paletteMode, pendingActionButton: undefined});\r\n if (controlThis._app!.DoShowTutorial('paintingPalette')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingPalette})\r\n }\r\n })}\r\n {makeIconButton(undefined, (addBaseColor('rgb(1, 1, 1)')), IconFinger, this.state.allDisabled, undefined)}\r\n {makeIconButton(undefined, (addBaseColor('rgb(1, 2, 3)')), IconKnife, this.state.allDisabled, undefined)}\r\n {makeIconButton(undefined, (addBaseColor('rgb(254, 254, 254)')), IconBlow, this.state.allDisabled, undefined)}\r\n {renderClearButton()}\r\n {renderReplayButton()}\r\n {renderImageButton()}\r\n {renderSaveButton()}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {this.state.limitedColors.length === 0 ? <>\r\n {makeIconButton(undefined, (addBaseColor('rgb(0, 0, 0)')), IconSplotch, this.state.allDisabled, undefined)}\r\n {makeIconButton(undefined, (addBaseColor('rgb(255, 255, 255)')), IconSplotch, this.state.allDisabled, undefined)}\r\n {makeIconButton(undefined, (addBaseColor('rgb(253, 199, 12)')), IconSplotch, this.state.allDisabled, undefined)}\r\n {makeIconButton(undefined, (addBaseColor('rgb(190, 12, 0)')), IconSplotch, this.state.allDisabled, undefined)}\r\n {makeIconButton(undefined, (addBaseColor('rgb(20, 8, 65)')), IconSplotch, this.state.allDisabled, undefined)}\r\n {\r\n this.state.addedColors.map((c)=>\r\n makeIconButton(undefined, new tinycolor(c).toHexString(), IconSplotch, this.state.allDisabled, undefined)\r\n )\r\n }\r\n : <>\r\n {\r\n this.state.limitedColors.map((c)=>\r\n makeIconButton(undefined, c, IconSplotch, this.state.allDisabled, undefined)\r\n )\r\n }\r\n \r\n }\r\n {this.behave.showSample === false ? <> :\r\n makeIconButton('sample', undefined, this.state.sampleMode ? IconSample: IconPlus, this.state.allDisabled, ()=>{\r\n STrace.addStep('paint', 'samp', '');\r\n if (controlThis._app!.DoShowTutorial('paintingSample')) {\r\n controlThis.setState({tutorialStep: tutorialPaintingSample})\r\n return;\r\n }\r\n if (controlThis.state.sampleMode === true) {\r\n controlThis.setState({sampleMode: false, pendingActionButton: undefined});\r\n } else {\r\n controlThis.setState({sampleMode: true, pendingActionButton: 'sample'});\r\n }\r\n })}\r\n
\r\n { this.state.paletteMode === false ?\r\n \r\n controlThis.addColorSample(rgb)}\r\n UseMouse={this.state.useMouse}\r\n FixedSize={this.state.fixedSize}\r\n AvgLightRadius={this.state.avgLightRadius}\r\n AvgHeavyRadius={this.state.avgHeavyRadius}\r\n PaintRadius={this.state.pressWeight}\r\n OnDragStart = {()=>controlThis.onDragStart(true)}\r\n OnDragEnd = {()=>controlThis.onDragEnd()}\r\n OnRecordAnimation={(ani)=>controlThis.mainRecording!.recordAction(ani)}\r\n ExceptionHandler={(source: string, kind: string, code: string, exception: unknown)=>{this.props.AppObject.reportException(source, kind, code, exception)}}\r\n />\r\n\r\n :\r\n
\r\n
\r\n {\r\n crc.fillStyle='black';\r\n crc.fillText(\"Use this area and these palettes to mix up some new colors.\", 10, 20);\r\n crc.fillText(\"Use the + button to sample the colors and save them.\", 10, 40);\r\n }\r\n }\r\n TextureSmash = {false}\r\n DryInterval={0}\r\n DryRate={0}\r\n OnColorSample={(rgb)=>controlThis.addColorSample(rgb)}\r\n UseMouse={this.state.useMouse}\r\n FixedSize={FingerTip.standardFingerRadius}\r\n AvgLightRadius={this.state.avgLightRadius}\r\n AvgHeavyRadius={this.state.avgHeavyRadius}\r\n PaintRadius={this.state.pressWeight}\r\n OnDragStart = {()=>controlThis.onDragStart(false)}\r\n OnDragEnd = {()=>controlThis.onDragEnd()}\r\n ExceptionHandler={(source: string, kind: string, code: string, exception: unknown)=>{this.props.AppObject.reportException(source, kind, code, exception)}} \r\n />\r\n
\r\n
\r\n {renderSubPalette('smesshySub1PaletteContexts')}\r\n
\r\n
\r\n {renderSubPalette('smesshySub2PaletteContexts')}\r\n
\r\n
\r\n {renderSubPalette('smesshySub3PaletteContexts')}\r\n
\r\n
\r\n {renderSubPalette('smesshySub4PaletteContexts')}\r\n
\r\n\r\n
\r\n }\r\n
\r\n
\r\n {renderSizeBar()}\r\n }\r\n />,\r\n this.state);\r\n }\r\n}\r\n\r\nexport default PaintingPage;","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport {CloseButton} from './iconButton';\r\nimport FingerTip from './smash/fingertip';\r\nimport Toggle from 'react-toggle'\r\nimport { Link, createSearchParams } from 'react-router-dom';\r\nimport { Footer } from '../smesshy';\r\nimport Smessage from './smessage';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport { ArtistProfile, PaintingInfo, SmesshyUserPreferences, UserRewardSummary } from '../storageManager';\r\nimport { JsxElement, UserPreferences } from 'typescript';\r\nimport { SmesshySubButton } from './smesshyButton';\r\nimport GamePage from './gamePage';\r\nimport PaintingFrame from './paintingFrame';\r\nimport { tutorialKeys } from './tutorialStep';\r\nimport Env from '../envInst';\r\n\r\nexport interface SettingsPageState extends SmesshyCommonState {\r\n useMouse: boolean;\r\n showSize: boolean;\r\n hapticButton: boolean;\r\n allPaintingsPublic: boolean;\r\n autoAcceptFollows: boolean;\r\n notifications: Map;\r\n notificationsPossible: boolean;\r\n notificationsAllowed: boolean;\r\n notificationsSubscribed: boolean;\r\n accountType: string | undefined;\r\n accountName: string | undefined;\r\n selfPortraitId: string | undefined;\r\n selfPortraitUrl: string | undefined;\r\n paintings: number;\r\n rewardSummary: UserRewardSummary | undefined;\r\n useGPU: boolean;\r\n}\r\nexport interface SettingsPageProps extends SmesshyCommonProps {\r\n KnownUseMouse: boolean;\r\n KnownShowSize: boolean;\r\n KnownHapticButton: boolean;\r\n NewSelfPortraitId?: string;\r\n}\r\n\r\nclass SettingsPage extends SmesshyCommon(Component) {\r\n\r\n listRef : React.RefObject | null = null;\r\n validateRef : React.RefObject | null = null;\r\n\r\n constructor(props: SettingsPageProps) {\r\n super(props);\r\n try {\r\n this.initCommon(props.AppObject);\r\n\r\n this.listRef = React.createRef();\r\n this.validateRef = React.createRef();\r\n let useGPU = false;\r\n let localUseGPU = localStorage.getItem('smesshy-app-GPU-status');\r\n if (localUseGPU !== null) {\r\n if (localUseGPU === 'trust' || localUseGPU === 'attempt') {\r\n useGPU = true;\r\n }\r\n }\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n useMouse: props.KnownUseMouse,\r\n showSize: props.KnownShowSize,\r\n hapticButton: props.KnownHapticButton,\r\n authenticated: false,\r\n navigateTo: undefined,\r\n accountType: 'nobody',\r\n accountName: 'whodis? new phone',\r\n selfPortraitId: 'invalid',\r\n selfPortraitUrl: 'invalid',\r\n allPaintingsPublic: true,\r\n autoAcceptFollows: false,\r\n paintings: 0,\r\n notifications: new Map(),\r\n notificationsPossible: this._app!.notificationsPossible(),\r\n notificationsAllowed: false,\r\n notificationsSubscribed: false,\r\n rewardSummary: undefined,\r\n useGPU: useGPU,\r\n\r\n };\r\n } catch (e: any) {\r\n props.AppObject.reportException(`settings, constructor`, 'ex', '', e)\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('settings', 'didMound', '');\r\n\r\n let controlThis = this;\r\n\r\n if (controlThis.props.NewSelfPortraitId !== undefined && controlThis.props.NewSelfPortraitId !== null) {\r\n controlThis.setState({ selfPortraitUrl:'loading', selfPortraitId: 'none'});\r\n }\r\n }\r\n\r\n\r\n public static stringToNotificationMap(str: string): Map {\r\n const result = new Map();\r\n if (str === undefined || str === null || str === '') {\r\n return result;\r\n }\r\n const nots = str.split(';');\r\n nots.forEach(n=>{\r\n const parts = n.split(':');\r\n if (parts.length === 2) {\r\n result.set(parts[0], parts[1] === 'true');\r\n }\r\n });\r\n return result;\r\n }\r\n public static notificationMapToString(map: Map): string {\r\n let result = '';\r\n map.forEach((v,k)=> {\r\n if (result !== '') {\r\n result += ';';\r\n }\r\n result += `${k}:${v}`;\r\n });\r\n return result;\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('settings', 'populateAuth', authenticated.toString());\r\n\r\n try {\r\n let controlThis = this;\r\n let accountType = 'nobody';\r\n let accountName = 'whodis? new phone';\r\n let selfPortraitId = 'none';\r\n let selfPortraitUrl = 'none';\r\n let autoAcceptFollows = false;\r\n let defaultPublic = false;\r\n let notifications = new Map();\r\n let paintings = 0;\r\n let notificationsAllowed = this.state.notificationsAllowed;\r\n let notificationsSubscribed = this.state.notificationsSubscribed;\r\n let rewardSummary: UserRewardSummary | undefined = undefined;\r\n if (authenticated) {\r\n const user = await this.getUser();\r\n if (user !== null && user !== undefined && user.profile !== null && user.profile !== undefined ) {\r\n \r\n accountName = user.profile.preferred_username!;\r\n accountType = user.profile.website!;\r\n STrace.addStep('settings', 'getUserArtistProfileAsync', '');\r\n const prof = await this.storageManager!.getUserArtistProfileAsync()\r\n STrace.addStep('settings', 'getUserStatsAsync', 'basic');\r\n const userStats = await this.storageManager!.getUserStatsAsync('basic', 1);\r\n if (userStats !== undefined && userStats.length > 0) {\r\n paintings = userStats[0].totalPaintings;\r\n }\r\n STrace.addStep('settings', 'getUserRewardSummaryAsync', '');\r\n rewardSummary = await this.storageManager!.getUserRewardSummaryAsync();\r\n\r\n if (prof !== null && prof !== undefined) {\r\n if (prof.autoApprove !== undefined) {\r\n autoAcceptFollows = prof.autoApprove;\r\n }\r\n if (prof.defaultPublic !== undefined) {\r\n defaultPublic = prof.defaultPublic;\r\n }\r\n if (prof.notifications !== undefined) {\r\n notifications = SettingsPage.stringToNotificationMap(prof.notifications);\r\n }\r\n if (this.state.notificationsPossible) {\r\n notificationsAllowed = Notification.permission === 'granted';\r\n if (notificationsAllowed) {\r\n notificationsSubscribed = await this._app!.getNotificationSubscription() !== null;\r\n }\r\n }\r\n\r\n let selfPortraitId = prof.artistImageId;\r\n if (this.props.NewSelfPortraitId !== undefined && this.props.NewSelfPortraitId !== null) {\r\n STrace.addStep('settings', 'putUserPortraitAsync', this.props.NewSelfPortraitId);\r\n await this.storageManager!.putUserPortraitAsync(this.props.NewSelfPortraitId);\r\n selfPortraitId = this.props.NewSelfPortraitId;\r\n }\r\n \r\n if (selfPortraitId !== null && selfPortraitId !== undefined) {\r\n selfPortraitUrl = 'loading...';\r\n const fakeInfs: Array = [{visibilityKind:'publ', paintingId: selfPortraitId, artistProfile: {} as ArtistProfile}];\r\n const token = (await controlThis.getAccessToken())!;\r\n STrace.addStep('settings', 'getPaintingPreviews', selfPortraitId);\r\n this.storageManager!.getPaintingPreviews(token, fakeInfs, (pins=>{\r\n if (pins.length === 1) {\r\n selfPortraitUrl = pins[0].imageDetail!.preview;\r\n controlThis.setState({ selfPortraitUrl: selfPortraitUrl});\r\n }\r\n }))\r\n }\r\n }\r\n }\r\n }\r\n this.setState({authenticated: authenticated, accountName: accountName, accountType: accountType, paintings: paintings,\r\n selfPortraitId: selfPortraitId, selfPortraitUrl: selfPortraitUrl, autoAcceptFollows: autoAcceptFollows, allPaintingsPublic: defaultPublic,\r\n notifications: notifications, notificationsAllowed: notificationsAllowed, notificationsSubscribed: notificationsSubscribed,\r\n rewardSummary: rewardSummary\r\n });\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`Settings, check authentication`, 'ex', '', e)\r\n }\r\n\r\n }\r\n\r\n async refreshRewardSummary() {\r\n STrace.addStep('settings', 'getUserRewardSummaryAsync', '');\r\n let rewardSummary = await this.storageManager!.getUserRewardSummaryAsync();\r\n this.setState({rewardSummary: rewardSummary});\r\n }\r\n \r\n\r\n localPressWeight = FingerTip.minFingerRadius;\r\n\r\n async setPreferences(prefs: SmesshyUserPreferences)\r\n {\r\n const newState: SettingsPageState = {} as any;\r\n if (prefs.autoApprove !== undefined) {\r\n newState.autoAcceptFollows = prefs.autoApprove;\r\n } else {\r\n newState.autoAcceptFollows = this.state.autoAcceptFollows;\r\n }\r\n if (prefs.defaultPublic !== undefined) {\r\n newState.allPaintingsPublic = prefs.defaultPublic;\r\n } else {\r\n newState.allPaintingsPublic = this.state.allPaintingsPublic;\r\n }\r\n if (prefs.notifications !== undefined) {\r\n newState.notifications = SettingsPage.stringToNotificationMap(prefs.notifications);\r\n } else {\r\n newState.notifications = this.state.notifications;\r\n }\r\n this.setState(newState);\r\n STrace.addStep('settings', 'putUserPreferencesAsync', '');\r\n this.pushWaitingFrame(this);\r\n await this.storageManager!.putUserPreferencesAsync(prefs);\r\n this.popWaitingFrame();\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`settings, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let env = Env;\r\n\r\n let controlThis = this;\r\n\r\n const termsAndPrivacy = <>\r\n Terms}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'terms', '');\r\n controlThis.setState({ navigateTo: {To:{pathname:'/termsOfServiceApp'}}});\r\n return true;\r\n }}\r\n />\r\n Privacy}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'privacy', '');\r\n controlThis.setState({ navigateTo: {To:{pathname:'/privPolApp'}}});\r\n return true;\r\n }}\r\n />\r\n ;\r\n\r\n const termsPrivacyDelete = <>\r\n {termsAndPrivacy}\r\n Delete My Account}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n Disabled = {false}\r\n OnPressFinish={async (): Promise=>{\r\n let inputRef = React.createRef() as React.RefObject;\r\n\r\n STrace.addStep('setting', 'delete', 'pushed');\r\n controlThis.setState({askQuestion:{\r\n Top: controlThis._app!.GetScaledPxHeight(64),\r\n Title: Delete Your Account ?!?!,\r\n Prompts: [Are you sure you want to delete your account ?,\r\n That means all paintings, followers, etc.,\r\n Gone!,\r\n To be safe, type in your artist name here:,\r\n
\r\n \r\n
],\r\n Options: [{Key:'delete', Option:Bye Bye Smesshy, OnOption:async ():Promise=>{\r\n try {\r\n if (inputRef.current === null || inputRef.current === undefined || inputRef.current.value === null || inputRef.current.value === '') {\r\n return false;\r\n }\r\n STrace.addStep('setting', 'delete', 'confirmed');\r\n controlThis.setState({askQuestion:undefined});\r\n controlThis.pushWaitingFrame(controlThis);\r\n if (await controlThis.storageManager!.deleteUserAccountAsync(inputRef.current.value) === true) {\r\n controlThis.setState({ navigateTo: controlThis.getAuthenticationNavigate('/settings', 'logout')});\r\n }\r\n controlThis.popWaitingFrame();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`Settings,sign out`, 'ex', '', e)\r\n }\r\n return true;\r\n }}],\r\n OnCancel:()=>{controlThis.setState({askQuestion:undefined});} \r\n }});\r\n return true;\r\n }}\r\n \r\n />\r\n ;\r\n\r\n let iOSButton = <>;\r\n if (env.getDeviceName() === 'iOS') {\r\n let inApp = env.isInPWA();\r\n let iOSNote = <>;\r\n let doButton = false;\r\n if (this.state.notificationsPossible === false) {\r\n if (inApp) {\r\n iOSNote = \r\n {`You have installed Smesshy and yet, notifications support is not detected.`}
\r\n {`If you are using iOS 16.4 or higher, please report this as a problem`}
\r\n
\r\n } else {\r\n iOSNote = \r\n {`On iOS 16.4 or higher, you can get notifications IF you have 'installed' Smesshy as an app.`}
\r\n {env.getBrowserName() !== 'Safari' ? <>Open this page in Safari
: <>}\r\n {`Tap the Action button (often called the Share button).`}
\r\n {`Scroll down the share sheet past the rows of contacts and apps, then select 'Add to Home Screen'`}
\r\n {`Open Smesshy from that fancy new Home Screen icon.`}\r\n
\r\n }\r\n doButton = true;\r\n } else {\r\n if (this.state.notificationsAllowed === false) {\r\n iOSNote = \r\n {`On iOS you can get notifications if you turn them on here but you might also need to turn them on in the system settings.`}
\r\n {`So, flip the toggle here and then...`}
\r\n {`Go to Settings > Smesshy > Notifications and turn on 'Allow Notifications'.`}\r\n
\r\n doButton = true;\r\n }\r\n }\r\n if (doButton) {\r\n iOSButton = iOS note}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'iosAsk', '');\r\n controlThis.setState({askQuestion:{\r\n Top: controlThis._app!.GetScaledPxHeight(64),\r\n Title: iOS Notifications,\r\n Prompts: [iOSNote],\r\n Options: [{Key:'yep', Option:Close, OnOption:async ():Promise=>{\r\n controlThis.setState({askQuestion:undefined});\r\n return true;\r\n }}],\r\n OnCancel:()=>{controlThis.setState({askQuestion:undefined});} \r\n }});\r\n return true;\r\n\r\n }}\r\n />\r\n }\r\n } \r\n\r\n let payoutLine = <>;\r\n let payoutRequestCancelButton = Cancel Request}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'payoutRequestCancel', '');\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.requestRewardCancelAsync();\r\n await controlThis.refreshRewardSummary();\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}\r\n />;\r\n let payoutRequestRepeatButton = Repeat Request}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'payoutRequestRepeat', '');\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.requestRewardRepeatAsync();\r\n await controlThis.refreshRewardSummary();\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}\r\n />;\r\n\r\n if (this.state.rewardSummary !== undefined) {\r\n let status = this.state.rewardSummary.pendingPayoutRequestStatus;\r\n switch (status)\r\n {\r\n case 'none':\r\n case 'paymentMade':\r\n break;\r\n case \"rewardGrant\":\r\n case 'systemCancel':\r\n case \"userCancel\":\r\n payoutLine =
\r\n Send me those dollars!}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'payoutRequest', '');\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.requestRewardPayoutAsync();\r\n await controlThis.refreshRewardSummary();\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}\r\n />\r\n
;\r\n break;\r\n case \"error\":\r\n case \"testPaymentInvalid\":\r\n payoutLine =
\r\n Please email smesshyhelp@wrongsaw.com\r\n
;\r\n break;\r\n case \"userRequest\":\r\n case \"instructSent\":\r\n payoutLine =
\r\n A very 'spammy looking' email was sent to the address from your signed-in identity.\r\n We look forward to hearing from you.\r\n
\r\n {payoutRequestCancelButton}\r\n {payoutRequestRepeatButton}\r\n
\r\n
;\r\n break;\r\n case \"processingInstruct\":\r\n payoutLine =
\r\n Thanks for sending us your payment instructions, we are working on the next step.\r\n {payoutRequestCancelButton}\r\n
;\r\n break;\r\n case \"testPaymentFailed\":\r\n payoutLine =
\r\n We followed your instructions and tried to transfered a small amount of money to your account as a test trasaction.\r\n This transaction FAILED. Please contact smesshyhelp@wrongsaw.com\r\n {payoutRequestCancelButton}\r\n
;\r\n break;\r\n case \"testPaymentMade\":\r\n payoutLine =
\r\n We followed your instructions and transfered a small amount of money to your account as a test trasaction.\r\n We did this to ensure that the instructions were from you, typed correctly, understood by us and actionable.\r\n (If you did not receive a transfer from smesshy_rewards, or if you have no idea why you are seeing this message, please contact smesshyhelp@wrongsaw.com) \r\n Otherwise, please enter the exact amount in USD of the transfer we sent and then 'Validate.'\r\n
\r\n
\r\n \r\n Validate}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n let userAmt = 0;\r\n if (controlThis.validateRef !== null && controlThis.validateRef.current !== null) {\r\n userAmt = Number.parseFloat(controlThis.validateRef.current.value);\r\n }\r\n if (userAmt > 0) {\r\n STrace.addStep('setting', 'testRewardValidateAmountAsync', '');\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.testRewardValidateAmountAsync(userAmt);\r\n await controlThis.refreshRewardSummary();\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }\r\n return false;\r\n }}\r\n />\r\n
\r\n\r\n {payoutRequestCancelButton}\r\n
\r\n\r\n
;\r\n \r\n break;\r\n case \"testPaymentConfirmed\":\r\n payoutLine =
\r\n Test amount validated, now we are working of transfering the rest.\r\n
;\r\n break;\r\n }\r\n\r\n\r\n }\r\n\r\n //let testFailButton = <>;\r\n let testFailButton = DO NOT PUSH}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async ()=>{\r\n STrace.addStep('setting', 'testAuthFail', '');\r\n await controlThis.storageManager!.testAuthFail();\r\n return true;\r\n }}\r\n />\r\n let testLastReplayButton = Last Replay Text}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async ()=>{\r\n let last = sessionStorage.getItem('last-smesshy-replay');\r\n if (last == null) {\r\n last = 'No last replay text found';\r\n }\r\n this.props.AppObject.reportException(`What did I replay last?`, 'test', '', last);\r\n \r\n return true;\r\n }}\r\n />\r\n \r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {Smesshy - Settings}\r\n CloseNav = {'/'}\r\n Body={\r\n\r\n
\r\n
\r\n
\r\n
\r\n Adjust to Your Fingertip}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'calibrate', '');\r\n controlThis.setState({navigateTo: {To: '/calibrate'}});\r\n return true;\r\n }}\r\n />\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n {!this.state.authenticated ?\r\n
\r\n Sign In}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n try {\r\n STrace.addStep('setting', 'sign in', '');\r\n controlThis.setState({ navigateTo: controlThis.getAuthenticationNavigate('/settings', 'login')});\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`Settings,sign in`, 'ex', '', e)\r\n }\r\n return true;\r\n }}\r\n />\r\n {termsAndPrivacy}\r\n
\r\n :\r\n Sign Out}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n try {\r\n STrace.addStep('setting', 'sign out', '');\r\n controlThis.setState({ navigateTo: controlThis.getAuthenticationNavigate('/settings', 'logout')});\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`Settings,sign out`, 'ex', '', e)\r\n }\r\n return true;\r\n }}\r\n /> \r\n }\r\n \r\n \r\n {this.state.authenticated ?\r\n <>\r\n {this.state.paintings > 0 ?\r\n
\r\n
\r\n Self Portrait}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n ExtraStyleClass='width-content height-content'\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'nav self portrait', '');\r\n controlThis.setState(\r\n {navigateTo: {To: {pathname:'/painting-selection', search:`?${createSearchParams({title: 'Select your self-portrait:', scope: 'my', filter:'recent', callback:'/settings', current:this.state.selfPortraitId!})}`}}\r\n });\r\n return true;\r\n }}\r\n />\r\n {termsPrivacyDelete}\r\n
\r\n {this.state.selfPortraitUrl === 'none' ? \r\n
Pick one.
: \r\n (this.state.selfPortraitUrl=== 'loading' ?
Loading it...
:\r\n )\r\n }\r\n \r\n
:\r\n
\r\n
\r\n Self Portrait}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n ExtraStyleClass='width-content height-content'\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'paint self portrait', '');\r\n\r\n controlThis.setState(\r\n {navigateTo: {To: '/painting'}}\r\n );\r\n return true;\r\n }}\r\n />\r\n {termsPrivacyDelete}\r\n
\r\n {\r\n
Paint one.
\r\n }\r\n
\r\n } \r\n\r\n \r\n \r\n \r\n : <>\r\n }\r\n
\r\n {this.state.authenticated && this.state.rewardSummary !== undefined ?\r\n
\r\n
\r\n Lifetime Awards (USD):\r\n {new Intl.NumberFormat('en-US', {style: 'currency', currency: 'USD'}).format(this.state.rewardSummary.totalRewardGranted)}\r\n \r\n
\r\n
\r\n Current Award Balance (USD):\r\n {new Intl.NumberFormat('en-US', {style: 'currency', currency: 'USD'}).format(this.state.rewardSummary.currentRewardBalance)}\r\n
\r\n {payoutLine}\r\n\r\n
: <>\r\n }\r\n\r\n {this.state.authenticated ?\r\n
\r\n
\r\n \r\n {iOSButton}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
: <>\r\n }\r\n
\r\n Reset Tutorial}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'reset tutorial', '');\r\n controlThis._app!.ResetTutorialKeys(tutorialKeys);\r\n return true;\r\n }}\r\n />\r\n Repeat Setup}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('setting', 'reset setup', '');\r\n localStorage.setItem('smesshy-app-setup-complete', 'false');\r\n localStorage.setItem('smesshy-app-setup-notifications', 'false');\r\n localStorage.setItem('smesshy-app-setup-cookies', 'false');\r\n controlThis.setState({navigateTo: {To: '/'}});\r\n return true;\r\n }}\r\n />\r\n\r\n
\r\n
\r\n Experiments and Tests:\r\n \r\n\r\n
\r\n {testFailButton}\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n }\r\n />, this.state\r\n );\r\n }\r\n}\r\n\r\nexport default SettingsPage;","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport {TouchActionAnimationQueue} from './smash/smear';\r\nimport {CloseButton } from './iconButton';\r\nimport FingerTip from './smash/fingertip';\r\nimport { Navigate } from 'react-router-dom';\r\nimport { Footer } from '../smesshy';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\nimport { Point2D } from './smash/utils';\r\n\r\n\r\nclass fakeFinger {\r\n radiusMin: number;\r\n radiusMax: number;\r\n radiusLast: number;\r\n constructor(radiusMin: number, radiusMax: number) {\r\n this.radiusMin = radiusMin;\r\n this.radiusMax = radiusMax;\r\n this.radiusLast = radiusMin + (radiusMax - radiusMin) / 2;\r\n }\r\n public nextRadius() {\r\n let spin = Math.random();\r\n if (spin < .4) {\r\n return this.radiusLast;\r\n } else if (spin < .7) {\r\n if (this.radiusLast <= this.radiusMin) {\r\n return this.radiusLast;\r\n }\r\n this.radiusLast --;\r\n return this.radiusLast;\r\n } else {\r\n if (this.radiusLast >= this.radiusMax) {\r\n return this.radiusLast;\r\n }\r\n this.radiusLast ++;\r\n return this.radiusLast;\r\n }\r\n \r\n }\r\n\r\n}\r\n\r\n\r\nexport interface CalibrateSpotState {\r\n\r\n}\r\nexport interface CalibrateSpotProps {\r\n OnMouseUse: ()=>void;\r\n OnTouchUse: ()=>void;\r\n OnRecordedChange: (recordedValue: number)=>void;\r\n Expected: string;\r\n KnownMinRadius: number;\r\n KnownMaxRadius: number;\r\n Diameter: number;\r\n Border: number;\r\n Locked: boolean;\r\n LastShownValue: number;\r\n}\r\n\r\n\r\nexport class CalibrateSpot extends Component {\r\n\r\n trackRef: React.RefObject;\r\n\r\n constructor(props: CalibrateSpotProps) {\r\n super(props);\r\n\r\n let fakeMin = 0;\r\n let fakeMax = 0;\r\n if (props.Expected === 'light') {\r\n fakeMin = FingerTip.minFingerRadius * 2\r\n fakeMax = Math.floor(FingerTip.minFingerRadius * 5);\r\n } else {\r\n fakeMax = FingerTip.maxFingerRadius * 2\r\n fakeMin = Math.floor(FingerTip.maxFingerRadius);\r\n }\r\n this.trackRef = React.createRef();\r\n this.fakefinger = new fakeFinger(fakeMin, fakeMax);\r\n }\r\n fakefinger: fakeFinger;\r\n\r\n componentDidMount(): void {\r\n const controlThis = this;\r\n }\r\n capturedPointer = -1;\r\n \r\n render() {\r\n const controlThis = this;\r\n\r\n const pointerDown = (evt: React.PointerEvent) => {\r\n if (controlThis.capturedPointer === -1) {\r\n if (controlThis.props.Locked) {\r\n return;\r\n }\r\n controlThis.capturedPointer = evt.pointerId;\r\n const track=this.trackRef.current!;\r\n track.setPointerCapture(evt.pointerId);\r\n let newDiameter = evt.width;\r\n //newDiameter = controlThis.fakefinger.nextRadius();\r\n controlThis.props.OnRecordedChange(newDiameter);\r\n }\r\n\r\n };\r\n const pointerMove = (evt: React.PointerEvent) => {\r\n if (controlThis.capturedPointer === evt.pointerId) {\r\n\r\n if (controlThis.props.Locked) {\r\n return;\r\n }\r\n\r\n let width = evt.width;\r\n //width = controlThis.fakefinger.nextRadius();\r\n\r\n controlThis.props.OnRecordedChange(width);\r\n \r\n }\r\n\r\n };\r\n const pointerUp = (evt: React.PointerEvent) => {\r\n if (controlThis.capturedPointer === evt.pointerId) {\r\n const track=this.trackRef.current!;\r\n controlThis.capturedPointer = -1;\r\n track.releasePointerCapture(evt.pointerId);\r\n }\r\n };\r\n \r\n \r\n const mouseDown = (evt: React.MouseEvent) => {\r\n controlThis.props.OnMouseUse();\r\n };\r\n \r\n const mouseClick = (evt: React.MouseEvent) => {\r\n controlThis.props.OnMouseUse();\r\n };\r\n\r\n const touchStart = (evt:React.TouchEvent) => {\r\n controlThis.props.OnTouchUse();\r\n };\r\n const touchMove = (evt:React.TouchEvent) => {\r\n try {\r\n evt.preventDefault();\r\n } catch (e) {\r\n }\r\n \r\n };\r\n const touchEnd = (evt:React.TouchEvent) => {\r\n \r\n };\r\n\r\n let minWidth = this.props.KnownMinRadius;\r\n let maxWidth = this.props.KnownMaxRadius;\r\n\r\n // diameterRecorded is ratio of recorded between min and max, then turn into display width\r\n let recDiameter = 0;\r\n\r\n let maxDiameter: number;\r\n let targetDiameter: number;\r\n let targetStart: number;\r\n let maxBorder = 'none'\r\n let targetBorder = 'none'\r\n let recordedValue = this.props.LastShownValue;\r\n if (this.props.Expected === 'light') {\r\n maxDiameter = this.props.Diameter + this.props.Border;\r\n targetDiameter = this.props.Diameter;\r\n\r\n if (recordedValue !== 0) {\r\n recDiameter = 0;\r\n if (minWidth !== maxWidth) {\r\n recDiameter = (recordedValue - minWidth) / (maxWidth - minWidth);\r\n }\r\n recDiameter = Math.floor(this.props.Diameter + recDiameter * this.props.Border);\r\n }\r\n\r\n targetBorder = '1px solid black';\r\n targetStart = this.props.Border/2;\r\n } else {\r\n maxDiameter = this.props.Diameter;\r\n targetDiameter = this.props.Diameter;\r\n\r\n if (recordedValue !== 0) {\r\n recDiameter = 1;\r\n if (minWidth !== maxWidth) {\r\n recDiameter = (recordedValue - minWidth) / (maxWidth - minWidth);\r\n }\r\n const variance = Math.min(this.props.Border, this.props.Diameter);\r\n recDiameter = Math.floor((this.props.Diameter - variance) + (recDiameter * variance));\r\n }\r\n\r\n targetStart = 0;\r\n maxBorder = '1px solid black';\r\n\r\n }\r\n\r\n let recStart = (maxDiameter - recDiameter) / 2;\r\n if (maxBorder !== 'none' && recDiameter > 1) {\r\n recDiameter -= 2; // stupid border\r\n }\r\n\r\n return (
\r\n
\r\n
\r\n\r\n
);\r\n }\r\n}\r\n\r\nexport interface CalibrateTouchPageState extends SmesshyCommonState {\r\n doImplicitClose: boolean,\r\n lightCalibrated: boolean,\r\n bestLightDiam: number;\r\n minLightDiam: number;\r\n maxLightDiam: number;\r\n lastLightDiam: number;\r\n lightRecorded: Array;\r\n heavyCalibrated: boolean,\r\n bestHeavyDiam: number;\r\n minHeavyDiam: number;\r\n maxHeavyDiam: number;\r\n lastHeavyDiam: number;\r\n heavyRecorded: Array;\r\n sawMouseClick: boolean;\r\n sawTouch: boolean;\r\n}\r\nexport interface CalibrateTouchPageProps extends SmesshyCommonProps {\r\n KnownCalibrated: boolean;\r\n}\r\n\r\nclass CalibrateTouchPage extends SmesshyCommon(Component) {\r\n\r\n listRef : React.RefObject;\r\n\r\n constructor(props: CalibrateTouchPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n this.listRef = React.createRef();\r\n\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n doImplicitClose: false,\r\n sawMouseClick: false,\r\n sawTouch: false,\r\n lightCalibrated: false,\r\n bestLightDiam: 0,\r\n minLightDiam: 0,\r\n maxLightDiam: 0,\r\n lastLightDiam: 0,\r\n lightRecorded: new Array(0,0,0,0),\r\n heavyCalibrated: false,\r\n bestHeavyDiam: 0,\r\n minHeavyDiam: 0,\r\n maxHeavyDiam: 0,\r\n lastHeavyDiam: 0,\r\n heavyRecorded: new Array(0,0,0,0),\r\n };\r\n }\r\n\r\n prevDefault = (ev:TouchEvent)=>{\r\n if (ev.touches.length === 1) {\r\n ev.preventDefault();\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n STrace.addStep('calibrate', 'didMound', '');\r\n\r\n window.addEventListener('touchstart', this.prevDefault, { passive: false })\r\n\r\n // if the calibration is being repeated, then just keep going.\r\n // however, on the first time we see this page, set the app settings so it looks like we calibrated\r\n // and want to set the size manually. \r\n // if calibration works, then the settings will change. If the user closes the page, then the manual size will be used.\r\n if ((this.GetAppState('calibrationVersion', false) as number) < App.calibrationVersion) {\r\n this.SetAppState('useMouse', false, true);\r\n this.SetAppState('showSize', true, true);\r\n this.SetAppState('avgLightRadius', 0, true);\r\n this.SetAppState('avgHeavyRadius', 0, true);\r\n this.SetAppState('calibrationVersion', App.calibrationVersion, true);\r\n }\r\n\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener('touchstart', this.prevDefault);\r\n }\r\n\r\n reset() {\r\n this.setState({doImplicitClose:false, sawMouseClick:false, sawTouch:false, \r\n lightCalibrated:false, bestLightDiam:0, minLightDiam:0, maxLightDiam:0, lastLightDiam:0, lightRecorded:[0,0,0,0], \r\n heavyCalibrated:false, bestHeavyDiam:0, minHeavyDiam:0, maxHeavyDiam:0, lastHeavyDiam:0, heavyRecorded:[0,0,0,0], \r\n });\r\n }\r\n\r\n localPressWeight = FingerTip.minFingerRadius;\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`calibrate, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n if (this.state.doImplicitClose === true) {\r\n return \r\n }\r\n\r\n const sawMouse = () => {\r\n if (controlThis.state.sawTouch === true) {\r\n return;\r\n }\r\n controlThis.setState({sawMouseClick: true,\r\n askQuestion:{\r\n Top: 64,\r\n Title: A Mouse!,\r\n Prompts: [Using a mouse is fine. You'll just need to set the 'finger size' by using the slider at the bottom of the painting canvas.,\r\n ],\r\n Options: [{Key:'ok', Option:{ controlThis.props.KnownCalibrated ? `Understood` : `Ok, let me paint now!`}, OnOption:async ():Promise=>{\r\n STrace.addStep('calibrate', 'mouse ok', '');\r\n controlThis.SetAppState('useMouse', true, true);\r\n controlThis.SetAppState('showSize', true, true);\r\n controlThis.SetAppState('avgLightRadius', controlThis.state.bestLightDiam/2, true);\r\n controlThis.SetAppState('avgHeavyRadius', controlThis.state.bestHeavyDiam/2, true);\r\n controlThis.SetAppState('calibrationVersion', App.calibrationVersion, true);\r\n\r\n controlThis.setState({askQuestion:undefined, doImplicitClose:true});\r\n return true;\r\n }}, \r\n ],\r\n OnCancel:()=>{\r\n STrace.addStep('calibrate', 'mouse cancel', '');\r\n controlThis.setState({askQuestion:undefined}); controlThis.reset();}\r\n }}\r\n );\r\n };\r\n const sawTouch = () => {\r\n controlThis.setState({sawTouch: true});\r\n };\r\n const recordValue = (recordedValue: number, index: number, type: string) => {\r\n if (recordedValue <= 0){\r\n return;\r\n }\r\n \r\n let lastLight: number;\r\n let lastHeavy: number;\r\n let min: number;\r\n let max: number;\r\n let recordedValues: Array;\r\n if (type === 'light') {\r\n recordedValues = controlThis.state.lightRecorded;\r\n min = controlThis.state.minLightDiam;\r\n max = controlThis.state.maxLightDiam;\r\n lastLight = recordedValue;\r\n lastHeavy = controlThis.state.lastHeavyDiam;\r\n } else {\r\n recordedValues = controlThis.state.heavyRecorded;\r\n min = controlThis.state.minHeavyDiam;\r\n max = controlThis.state.maxHeavyDiam;\r\n if (recordedValue < recordedValues[index]) {\r\n // this captures the heaviest press in this spot\r\n recordedValue = recordedValues[index];\r\n }\r\n lastLight = controlThis.state.lastLightDiam;\r\n lastHeavy = recordedValue;\r\n }\r\n\r\n recordedValues[index] = recordedValue;\r\n let sum = 0;\r\n let cnt = 0;\r\n\r\n let localMin = Number.MAX_VALUE;\r\n for (let i=0; i max) {\r\n max = recordedValues[i];\r\n }\r\n localMin = Math.min(localMin, recordedValues[i]);\r\n sum += recordedValues[i];\r\n cnt ++;\r\n }\r\n let avg: number;\r\n if (cnt === 0) {\r\n avg = 0;\r\n } else {\r\n avg = sum / cnt;\r\n }\r\n\r\n // done is when all values filled in \r\n // always remove the min. better for both light and heavy\r\n let lightCalibrated = controlThis.state.lightCalibrated;\r\n let heavyCalibrated = controlThis.state.heavyCalibrated;\r\n let bestLightDiam = controlThis.state.bestLightDiam;\r\n let bestHeavyDiam = controlThis.state.bestHeavyDiam;\r\n\r\n if (cnt === recordedValues.length) {\r\n sum -= localMin;\r\n cnt --;\r\n avg = sum / cnt;\r\n\r\n if (type === 'light') {\r\n lightCalibrated = true;\r\n controlThis.setState({lightCalibrated: true});\r\n } else {\r\n heavyCalibrated = true;\r\n controlThis.setState({heavyCalibrated: true});\r\n }\r\n }\r\n\r\n min = Math.floor(min * 10) / 10;\r\n max = Math.floor(max * 10) / 10;\r\n avg = Math.floor(avg * 10) / 10;\r\n lastHeavy = Math.floor(lastHeavy * 10) / 10;\r\n lastLight = Math.floor(lastLight * 10) / 10;\r\n\r\n if (type === 'light') {\r\n bestLightDiam = avg;\r\n controlThis.setState({minLightDiam: min, maxLightDiam: max, bestLightDiam: avg, lastLightDiam: lastLight});\r\n } else {\r\n controlThis.setState({minHeavyDiam: min, maxHeavyDiam: max, bestHeavyDiam: avg, lastHeavyDiam: lastHeavy});\r\n bestHeavyDiam = avg;\r\n }\r\n\r\n if (lightCalibrated && heavyCalibrated) {\r\n\r\n if (bestLightDiam === 0 || bestHeavyDiam === 0 || bestLightDiam === bestHeavyDiam || Math.abs(bestLightDiam - bestHeavyDiam) < bestHeavyDiam * .2) {\r\n controlThis.setState({\r\n askQuestion:{\r\n Top: 64,\r\n Title: Those looked the same,\r\n Prompts: [The light and heavy touches looked the same. This can happen with some older phones, or some 'special' fingers. You'll need to set the 'finger size' by using the slider at the bottom of the painting canvas.,\r\n ],\r\n Options: [{Key:'ok', Option:{ controlThis.props.KnownCalibrated ? `Understood` : `Ok, let me paint now!`}, OnOption:async ():Promise=>{\r\n STrace.addStep('calibrate', 'too close ok', Math.abs(bestLightDiam - bestHeavyDiam).toString());\r\n controlThis.SetAppState('useMouse', false, true);\r\n controlThis.SetAppState('showSize', true, true);\r\n controlThis.SetAppState('avgLightRadius', 0, true);\r\n controlThis.SetAppState('avgHeavyRadius', 0, true);\r\n controlThis.SetAppState('calibrationVersion', App.calibrationVersion, true);\r\n\r\n controlThis.setState({askQuestion:undefined, doImplicitClose:true});\r\n return true;\r\n }}, \r\n {Key:'retry', Option:{ `No wait, I want to try again`}, OnOption:async ():Promise=>{ \r\n STrace.addStep('calibrate', 'too close retry', Math.abs(bestLightDiam - bestHeavyDiam).toString());\r\n controlThis.setState({askQuestion:undefined}); controlThis.reset();\r\n return true;\r\n }}, \r\n ],\r\n OnCancel:()=>{\r\n STrace.addStep('calibrate', 'too close cancel', Math.abs(bestLightDiam - bestHeavyDiam).toString());\r\n controlThis.setState({askQuestion:undefined}); controlThis.reset();}\r\n }}\r\n );\r\n \r\n } else {\r\n controlThis.setState({\r\n askQuestion:{\r\n Top: 64,\r\n Title: Measurement Done,\r\n Prompts: [Success!, your finger measurements will be used when painting.],\r\n Options: [{Key:'ok', Option:{ controlThis.props.KnownCalibrated ? `Understood` : `Ok, let me paint now!`}, OnOption:async ():Promise=>{\r\n STrace.addStep('calibrate', 'good ok', Math.abs(bestLightDiam - bestHeavyDiam).toString());\r\n controlThis.setState({askQuestion:undefined, doImplicitClose:true});\r\n controlThis.SetAppState('useMouse', false, true);\r\n controlThis.SetAppState('showSize', false, true);\r\n controlThis.SetAppState('avgLightRadius', bestLightDiam/2, true);\r\n controlThis.SetAppState('avgHeavyRadius', bestHeavyDiam/2, true);\r\n controlThis.SetAppState('calibrationVersion', App.calibrationVersion, true);\r\n return true;\r\n\r\n }}, \r\n {Key:'retry', Option:{ `No wait, I want to try again`}, OnOption:async ():Promise=>{ \r\n STrace.addStep('calibrate', 'good retry', Math.abs(bestLightDiam - bestHeavyDiam).toString());\r\n controlThis.setState({askQuestion:undefined}); controlThis.reset();\r\n return true;\r\n }}, \r\n ],\r\n OnCancel:()=>{\r\n STrace.addStep('calibrate', 'good cancel', Math.abs(bestLightDiam - bestHeavyDiam).toString());\r\n controlThis.setState({askQuestion:undefined}); controlThis.reset();}\r\n }}\r\n );\r\n }\r\n }\r\n };\r\n \r\n return this.renderFramework(\r\n Smesshy Fingertip Measurement}\r\n CloseNav = {-1}\r\n Body={\r\n
\r\n
\r\n
Before finger painting with Smesshy, let's test out your 'brush'.
\r\n
All these phones, computers, fingers and people... There's so many kinds!
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n {\r\n sawMouse() }\r\n }\r\n OnTouchUse={()=>{\r\n sawTouch() }\r\n }\r\n\r\n OnRecordedChange={(recordedValue: number)=>{\r\n recordValue(recordedValue, 0, 'light');\r\n }}\r\n />\r\n {\r\n sawMouse() }\r\n }\r\n OnTouchUse={()=>{\r\n sawTouch() }\r\n }\r\n\r\n OnRecordedChange={(recordedValue: number)=>{\r\n recordValue(recordedValue, 1, 'light');\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n sawMouse() }\r\n }\r\n OnTouchUse={()=>{\r\n sawTouch() }\r\n }\r\n\r\n OnRecordedChange={(recordedValue: number)=>{\r\n recordValue(recordedValue, 2, 'light');\r\n }}\r\n />\r\n {\r\n sawMouse() }\r\n }\r\n OnTouchUse={()=>{\r\n sawTouch() }\r\n }\r\n\r\n OnRecordedChange={(recordedValue: number)=>{\r\n recordValue(recordedValue, 3, 'light');\r\n }}\r\n />\r\n
\r\n
\r\n \r\n
\r\n Using your \r\n lightest touch\r\n , just your fingertip, \r\n fill in\r\n (only the insides of) those small circles.\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n Using a \r\n heavy flat touch\r\n , smash it down, \r\n fill in\r\n (out to the edges) the insides of these larger circles.\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n {\r\n sawMouse() }\r\n }\r\n OnTouchUse={()=>{\r\n sawTouch() }\r\n }\r\n\r\n OnRecordedChange={(recordedValue: number)=>{\r\n recordValue(recordedValue, 0, 'heavy');\r\n }}\r\n />\r\n {\r\n sawMouse() }\r\n }\r\n OnTouchUse={()=>{\r\n sawTouch() }\r\n }\r\n\r\n OnRecordedChange={(recordedValue: number)=>{\r\n recordValue(recordedValue, 1, 'heavy');\r\n }}\r\n />\r\n {\r\n sawMouse() }\r\n }\r\n OnTouchUse={()=>{\r\n sawTouch() }\r\n }\r\n\r\n OnRecordedChange={(recordedValue: number)=>{\r\n recordValue(recordedValue, 2, 'heavy');\r\n }}\r\n />\r\n\r\n {\r\n sawMouse() }\r\n }\r\n OnTouchUse={()=>{\r\n sawTouch() }\r\n }\r\n\r\n OnRecordedChange={(recordedValue: number)=>{\r\n recordValue(recordedValue, 3, 'heavy');\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Mouse Click\r\n
\r\n
\r\n Finger Touch\r\n
\r\n
\r\n
\r\n
\r\n Light Touch\r\n
\r\n
\r\n Last: \r\n
\r\n
\r\n {this.state.lastLightDiam} \r\n
\r\n
\r\n Min: \r\n
\r\n
\r\n {this.state.minLightDiam} \r\n
\r\n
\r\n Max: \r\n
\r\n
\r\n {this.state.maxLightDiam} \r\n
\r\n
\r\n Best \r\n
\r\n
\r\n {this.state.bestLightDiam} \r\n
\r\n\r\n
\r\n
\r\n
\r\n Heavy Touch\r\n
\r\n
\r\n Last: \r\n
\r\n
\r\n {this.state.lastHeavyDiam} \r\n
\r\n
\r\n Min: \r\n
\r\n
\r\n {this.state.minHeavyDiam} \r\n
\r\n
\r\n Max: \r\n
\r\n
\r\n {this.state.maxHeavyDiam} \r\n
\r\n
\r\n Best \r\n
\r\n
\r\n {this.state.bestHeavyDiam} \r\n
\r\n
\r\n
\r\n
\r\n }\r\n />, this.state); \r\n }\r\n}\r\n\r\n\r\nexport default CalibrateTouchPage;","import React, { Component } from 'react';\r\nimport {SvgDown, SvgUp } from './iconButton';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\nimport { ArtistStats } from '../storageManager';\r\n\r\n\r\nexport interface StatsPageState extends SmesshyCommonState {\r\n stats: Array | undefined;\r\n}\r\nexport interface StatsPageProps extends SmesshyCommonProps {\r\n}\r\n\r\nclass StatsPage extends SmesshyCommon(Component) {\r\n\r\n constructor(props: StatsPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n stats: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('stats', 'didMound', '');\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('setup', 'populateAuth', authenticated.toString());\r\n\r\n if (authenticated) {\r\n STrace.addStep('settings', 'getUserStatsAsync', 'full');\r\n const userStats = await this.storageManager!.getUserStatsAsync('full', 2);\r\n this.setState({stats: userStats});\r\n }\r\n }\r\n\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`stats, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const onLabelPress = (row: number, label: string) => {\r\n let explanation1 : string | undefined = undefined;\r\n let explanation2 : string | undefined = undefined;\r\n let explanation3 : string | undefined = undefined;\r\n\r\n switch (row) {\r\n case 2:\r\n explanation1 = 'The number of paintings you have saved and not deleted.';\r\n break;\r\n case 3:\r\n explanation1 = `'Favored' means pushing the 'heart' button on a painting.`;\r\n break;\r\n case 4:\r\n explanation1 = `The number of times you have favored a painting, even one of your own, which is like ... 'whatever?!?'`;\r\n break;\r\n case 5:\r\n explanation1 = `The number of times a follower of yours has favored one of your paintings.`;\r\n break;\r\n case 6:\r\n explanation1 = `The number of times a non-follower has favored one of your paintings.`;\r\n break;\r\n case 7:\r\n explanation1 = `'Offensive' means someone has pushed the 'yuck face' button on a painting.`;\r\n break;\r\n case 8:\r\n explanation1 = `The number of times you have found a painting offensive AND were brave enough to report it.`;\r\n break;\r\n case 9:\r\n explanation1 = `The average alignment (with the beliefs and bravery of others) for the paintings you have found offensive.`;\r\n explanation2 = `If only you report a painting, you get a 0. If others report it, you get a 1`;\r\n break;\r\n case 10:\r\n explanation1 = `The number of times you have painted something that someone else found offensive and they were brave enough to report it.`;\r\n break;\r\n case 11:\r\n explanation1 = `'Suspicious' means someone has pushed the 'question mark, exclamation point, question mark' button on a painting indicating they think it could be fake or copied.`;\r\n break;\r\n case 12:\r\n explanation1 = `The number of times you have found a painting suspicious AND were brave enough to report it.`;\r\n break;\r\n case 13:\r\n explanation1 = `The average alignment (with the beliefs and bravery of others) for the paintings you have found suspicious.`; \r\n explanation2 = `If only you report a painting, you get a 0. If others report it, you get a 1`;\r\n break;\r\n case 14:\r\n explanation1 = `The number of times you have painted something that someone else found suspicious and they were brave enough to report it.`;\r\n break;\r\n case 15:\r\n explanation1 = `Lunchbox is a feature where you can send a painting to one or more mutual followers. This is a direct message that only they can see.`;\r\n break;\r\n case 16:\r\n explanation1 = `The number of paintings you have hid in someone's lunchbox.`;\r\n break;\r\n case 17:\r\n explanation1 = `The number of paintings where you hid it AND the receiver looked upon it in delight.`;\r\n break;\r\n case 18:\r\n explanation1 = `The number of paintings you have received in your lunchbox.`;\r\n break;\r\n case 19:\r\n explanation1 = `The number of paintings you looked at in your lunchbox.`;\r\n break;\r\n case 20:\r\n explanation1 = `The longest streak of days where you have sent a painting to someone's lunchbox, they have looked at it, they have sent a painting to your lunchbox, and you have looked at it.`;\r\n break;\r\n case 21:\r\n explanation1 = `Challenges are the public competitions where people submit paintings and vote on them.`;\r\n break;\r\n case 22:\r\n explanation1 = `The number of paintings you have submitted to a challenge.`;\r\n break;\r\n case 23:\r\n explanation1 = `The highest final position one of your entries has achieved in a challenge.`;\r\n break;\r\n case 24:\r\n explanation1 = `The total number of points you have received from other people in challenges.`;\r\n break;\r\n case 25:\r\n explanation1 = `The total number of votes you have received from other people in challenges.`;\r\n break;\r\n case 26:\r\n explanation1 = `The total number of points you have given to other people in challenges.`;\r\n break;\r\n case 27:\r\n explanation1 = `The average alignment between the scores you give to each painting and the average of scores from all other voters for that same painting.`;\r\n explanation2 = `For instance, you score a painting as 5 and the group average is 6.5 then you get a (1-(6.5-5)/9) alignment.`;\r\n explanation3 = `(that's .83).`;\r\n break;\r\n case 28:\r\n explanation1 = `Followers are people who have chosen to see your paintings on their 'Following' refrigerator doors.`;\r\n break;\r\n case 29:\r\n explanation1 = `The number of people who have chosen to follow your work and bask in the glow of your majestic presence.`;\r\n break;\r\n case 30:\r\n explanation1 = `The number of people you have chosen to follow.`;\r\n break;\r\n case 31:\r\n explanation1 = `A 'Maven' is an influential connoisseur or expert in a field.`;\r\n explanation2 = `So, to be called a 'Smesshy maven'? Special.`;\r\n break;\r\n case 32:\r\n explanation1 = `Your Maven rating combines your expertise (number of challenges entered and how well you rank in them), your connoisseur skill (how well can you predict the highest challenge scores and how often do you vote), and your influence level (number of followers, follows and their overall ratings too).`;\r\n break;\r\n case 33:\r\n explanation1 = `The average Maven score of your followers.`;\r\n break;\r\n case 34:\r\n explanation1 = `The average Maven score of those you follow.`;\r\n break;\r\n }\r\n\r\n if (explanation1 !== undefined) {\r\n let prompts = new Array();\r\n prompts.push({explanation1});\r\n if (explanation2 !== undefined) {\r\n prompts.push({explanation2});\r\n }\r\n if (explanation3 !== undefined) {\r\n prompts.push({explanation3});\r\n }\r\n\r\n controlThis.setState({askQuestion:{\r\n Top: controlThis._app!.GetScaledPxHeight(120),\r\n Title: Since you asked...,\r\n Prompts: [...prompts],\r\n Options: [{Key:'okGreat', Option:OK, OnOption:async ():Promise=>{\r\n controlThis.setState({askQuestion:undefined});\r\n return true;\r\n }}], OnCancel:()=>{\r\n controlThis.setState({askQuestion:undefined});\r\n }\r\n }});\r\n }\r\n }\r\n\r\n let statsNew = this.state.stats !== undefined && this.state.stats.length > 0 ? this.state.stats[0] : undefined;\r\n let statsPrev = this.state.stats !== undefined && this.state.stats.length > 1 ? this.state.stats[1] : undefined;\r\n\r\n let kpiHeight = `${this._app!.GetScaledPxHeight(20)}px`;\r\n const addRow = (row: number, label: string, member: string) => {\r\n let prevOne = statsPrev !== undefined ? Math.round((statsPrev as any)[member] as number * 1000)/1000 : ' - ';\r\n let newOne = statsNew !== undefined ? Math.round((statsNew as any)[member] as number * 1000)/1000 : ' - ';\r\n\r\n let kpi = <>;\r\n if (typeof prevOne === 'number' && typeof newOne === 'number') {\r\n kpi = newOne > prevOne ? SvgUp(kpiHeight) : newOne < prevOne ? SvgDown(kpiHeight) : <>;\r\n }\r\n let rank = ' - ';\r\n if (statsNew !== undefined) {\r\n let rankNum = Math.round((statsNew as any)[member+'Rank'] as number * 100);\r\n if (rankNum === 0) {\r\n rank = '<1%';\r\n } else if (rankNum === 100) {\r\n rank = ' - ';\r\n } else {\r\n rank = `${rankNum}%`;\r\n }\r\n }\r\n\r\n return <>\r\n
onLabelPress(row, label)}>\r\n {label}\r\n
\r\n
\r\n {prevOne}\r\n
\r\n
\r\n {kpi}\r\n
\r\n
\r\n {newOne}\r\n
\r\n
\r\n {rank}\r\n
\r\n\r\n \r\n }\r\n const addLine = (row: number, title: string) => {\r\n return <>\r\n
onLabelPress(row, title)}>\r\n {title}\r\n
\r\n
\r\n  \r\n
\r\n
\r\n  \r\n
\r\n
\r\n  \r\n
\r\n
\r\n  \r\n
\r\n\r\n \r\n }\r\n\r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {Smesshy - Statistics}\r\n CloseNav = '/'\r\n Body={\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Previous\r\n
\r\n
\r\n \r\n
\r\n
\r\n Latest\r\n
\r\n
\r\n Top %\r\n
\r\n\r\n {addRow(2, 'Paintings Saved', 'totalPaintings')}\r\n {addLine(3, 'Favored:')}\r\n {addRow(4, 'You Think', 'totalFavorites')}\r\n {addRow(5, `You Made (Followers)`, 'totalFavoredByFollowers')}\r\n {addRow(6, `You Made (Strangers)`, 'totalFavoredByOthers')}\r\n {addLine(7, 'Offensive:')}\r\n {addRow(8, 'You Think', 'totalOffendedBy')}\r\n {addRow(9, 'Think Alignment', 'offendedAlignment')}\r\n {addRow(10, 'You Made', 'totalOffend')}\r\n {addLine(11, 'Suspicious:')}\r\n {addRow(12, 'You Think', 'totalSuspectOf')}\r\n {addRow(13, 'Think Alignment', 'suspectedAlignment')}\r\n {addRow(14, 'You Made', 'totalSuspect')}\r\n {addLine(15, 'Lunchbox:')}\r\n {addRow(16, 'Deliveries Made', 'lunchboxDeliveriesSent')}\r\n {addRow(17, 'Deliveries Seen', 'lunchboxDeliveriesSeen')}\r\n {addRow(18, 'Receptions', 'lunchboxDeliveriesReceived')}\r\n {addRow(19, 'Receptions Viewed', 'lunchboxDeliveriesViewed')}\r\n {addRow(20, 'Longest Streak', 'longestLunchboxStreak')}\r\n {addLine(21, 'Challenges:')}\r\n {addRow(22, 'Your Entries', 'competitionEntries')}\r\n {addRow(23, 'Highest Rank', 'competitionHighestRank')}\r\n {addRow(24, 'Points Received', 'competitionPointsReceived')}\r\n {addRow(25, 'Votes Received', 'competitionVotesReceived')}\r\n {addRow(26, 'Points You Awarded', 'competitionVotes')}\r\n {addRow(27, 'Points Alignment', 'competitionVoteAlignment')}\r\n {addLine(28, 'Followers:')}\r\n {addRow(29, 'You Follow', 'totalFollowers')}\r\n {addRow(30, 'Follow You', 'totalFollowing')}\r\n {addLine(31, 'Maven*:')}\r\n {addRow(32, 'Your Rating', 'mavenScore')}\r\n {addRow(33, 'Follower Rating', 'averageFollowerMavenScore')}\r\n {addRow(34, 'Following Rating', 'averageFollowingMavenScore')}\r\n
\r\n\r\n
\r\n \r\n
\r\n }\r\n />, this.state);\r\n }\r\n}\r\n\r\nexport default StatsPage;","import React, { Component } from 'react';\r\nimport { Footer } from '../smesshy';\r\nimport { CloseButton } from './iconButton';\r\nimport { SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\n\r\nexport interface SmessageState extends SmesshyCommonState {\r\n}\r\nexport interface SmessageProps extends SmesshyCommonProps {\r\n Title: string;\r\n Say: string;\r\n Loading: boolean;\r\n CloseNav?: string | undefined;\r\n}\r\n\r\n\r\nclass Smessage extends SmesshyCommon(Component) {\r\n\r\n constructor(props: SmessageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n\r\n this.state = {\r\n authenticated: false,\r\n showWaitSpin: false\r\n };\r\n }\r\n\r\n render() {\r\n \r\n return this.renderFramework(\r\n {this.props.Title}}\r\n CloseNav = {this.props.CloseNav}\r\n Body={\r\n
\r\n
\r\n {this.props.Say}\r\n
\r\n
\r\n }\r\n />, this.state);\r\n }\r\n}\r\n\r\nexport default Smessage;\r\n","import { Profile, User, UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName, QueryParameterNames } from './ApiAuthorizationConstants';\r\nimport {App} from '../../App';\r\nimport { Navigate } from 'react-router-dom';\r\nimport { promises } from 'dns';\r\nimport { STrace } from '../../smesshyCommon';\r\n\r\nexport interface AuthorizeServiceResult {\r\n status?: string;\r\n message?: any;\r\n state?: any;\r\n}\r\n\r\nexport interface UserProfileValues {\r\n userName?: string;\r\n picture?: string;\r\n}\r\n\r\n\r\ntype AuthorizeServiceSubscription = {callback: ()=>void, subscription: number};\r\n\r\nexport class AuthorizeService {\r\n __instId: string\r\n _callbacks: Array= [];\r\n _nextSubscriptionId = 0;\r\n _user: User | null = null;\r\n _isAuthenticated = false;\r\n _appObject : App;\r\n\r\n userManager: UserManager | undefined;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n constructor(appObject: App) {\r\n this.__instId = \"1\"\r\n this._isAuthenticated = false;\r\n this._appObject = appObject;\r\n }\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser();\r\n return !!(user?.profile);\r\n }\r\n\r\n async getUser() : Promise {\r\n if (this._user && this._user.profile) {\r\n return this._user;\r\n }\r\n\r\n try {\r\n if (this.userManager === undefined) {\r\n return null;\r\n }\r\n const user = await this.userManager!.getUser();\r\n return user;\r\n } catch (e: any) {\r\n this._appObject.reportException(`Authentication - getUser`, 'ex', '', e);\r\n return null;\r\n }\r\n }\r\n\r\n async getUserId() : Promise {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile.sub;\r\n }\r\n\r\n try {\r\n const user = await this.userManager!.getUser();\r\n if (user !== null && user !== undefined && user.profile) {\r\n return user.profile.sub;\r\n }\r\n } catch (e: any) {\r\n this._appObject.reportException(`Authentication - getUserId`, 'ex', '', e);\r\n }\r\n return null;\r\n }\r\n\r\n async getAccessToken(required:boolean, forceNew?: boolean) : Promise {\r\n try {\r\n STrace.addStep('auth', 'ensureUserManager', '');\r\n await this.ensureUserManagerInitialized(required);\r\n\r\n if (this.getTokenRequestState() != 'ready') {\r\n return undefined;\r\n }\r\n \r\n this.setTokenRequestState('getuser');\r\n \r\n if (this.userManager === undefined && required === false) {\r\n this.setTokenRequestState('ready');\r\n return\r\n }\r\n \r\n const user = await this.userManager!.getUser();\r\n\r\n if (user === null) {\r\n this.setTokenRequestState('ready');\r\n return undefined;\r\n }\r\n\r\n let expSeconds = user!.expires_in;\r\n if (expSeconds < 20 || forceNew) {\r\n const state = { returnUrl:'/' };\r\n this.setTokenRequestState('renew');\r\n STrace.addStep('auth', 'signIn', 'expired');\r\n const result = await this.signIn(state);\r\n\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n this.setTokenRequestState('redirect');\r\n return undefined;\r\n case AuthenticationResultStatus.Success:\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setTokenRequestState('ready');\r\n throw new Error(result.message.message);\r\n }\r\n }\r\n\r\n this.setTokenRequestState('ready');\r\n if (user === null) {\r\n return undefined;\r\n }\r\n \r\n return user.access_token;\r\n \r\n } catch (e: any) {\r\n this.setTokenRequestState('ready');\r\n this._appObject.reportException(`Authentication - getAccessToken`, 'ex', '', e);\r\n }\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state: any) {\r\n STrace.addStep('auth', 'ensureUserManager', '');\r\n await this.ensureUserManagerInitialized(true);\r\n \r\n try {\r\n const justSignedOut = sessionStorage.getItem('smesshy-sign-out') === 'true';\r\n if (justSignedOut) {\r\n sessionStorage.removeItem('smesshy-sign-out');\r\n //this._appObject.SetCookie('idsrv', null);\r\n \r\n }\r\n\r\n STrace.addStep('auth', 'silentSignIn', '');\r\n const silentUser = await this.userManager!.signinSilent(this.createArguments(undefined));\r\n this.updateState(silentUser);\r\n return this.success(state);\r\n } catch (silentError) {\r\n try {\r\n let args = this.createArguments(state);\r\n STrace.addStep('auth', 'redirectSignIn', '');\r\n await this.userManager!.signinRedirect(args);\r\n return this.redirect();\r\n } catch (redirectError: any) {\r\n console.log(\"Redirect authentication error: \", redirectError);\r\n throw new Error(`There was a redirect authentication error signing in: ${redirectError.message}`);\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url: string) {\r\n try {\r\n STrace.addStep('auth', 'ensureUserManager', '');\r\n await this.ensureUserManagerInitialized(true);\r\n STrace.addStep('auth', 'signInCallback', '');\r\n const user = await this.userManager!.signinCallback(url);\r\n //this.setTokenRequestState('ready');\r\n this.updateState(user);\r\n return this.success(user && user.state);\r\n } catch (error: any) {\r\n await error;\r\n console.log('There was an error signing in: ', error);\r\n throw new Error(`There was an error signing in: ${error.message}`);\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state: any) : Promise {\r\n STrace.addStep('auth', 'ensureUserManager', '');\r\n await this.ensureUserManagerInitialized(true);\r\n try {\r\n sessionStorage.setItem('smesshy-sign-out', 'true');\r\n STrace.addStep('auth', 'signOutRedirect', '');\r\n await this.userManager!.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError: any) {\r\n console.log(\"Redirect signout error: \", redirectSignOutError);\r\n throw new Error(`Redirect signout error: ${redirectSignOutError.message}`);\r\n }\r\n }\r\n\r\n async completeSignOut(url: string) {\r\n STrace.addStep('auth', 'ensureUserManager', '');\r\n await this.ensureUserManagerInitialized(true);\r\n try {\r\n STrace.addStep('auth', 'signOutCallback', '');\r\n const response = await this.userManager!.signoutCallback(url);\r\n this.updateState(null);\r\n return this.success(response && response.state);\r\n } catch (error: any) {\r\n console.log(`There was an error trying to log out '${error}'.`);\r\n throw new Error(`There was an error signing out: ${error.message}`);\r\n }\r\n }\r\n\r\nupdateState(user: User | null) {\r\n this._user = user;\r\n this._isAuthenticated = !!this._user;\r\n var s = this.getTokenRequestState()\r\n\r\n if (s === 'ready') {\r\n this.notifySubscribers();\r\n }\r\n }\r\n\r\n subscribe(callback: ()=>void ) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\r\n return this._nextSubscriptionId - 1;\r\n }\r\n\r\n unsubscribe(subscriptionId: number) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element:AuthorizeServiceSubscription, index:number) => element.subscription === subscriptionId ? { found: true, index } : { found: false, index:-1 })\r\n .filter(element => element.found === true);\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1);\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback;\r\n callback();\r\n }\r\n }\r\n\r\n createArguments(state:any | undefined) : any {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n error(message: any) : AuthorizeServiceResult {\r\n return { status: AuthenticationResultStatus.Fail, message: message };\r\n }\r\n\r\n success(state: any | undefined) : AuthorizeServiceResult {\r\n return { status: AuthenticationResultStatus.Success, state: state };\r\n }\r\n\r\n redirect() : AuthorizeServiceResult {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n getTokenRequestState() : string {\r\n let state = sessionStorage.getItem('smesshy-token-request-state');\r\n if (state == null) {\r\n this.setTokenRequestState('ready');\r\n state = 'ready';\r\n }\r\n\r\n if (state !== 'ready') {\r\n let stateTimeStr = sessionStorage.getItem('smesshy-token-request-state-time')!;\r\n let stateTime = Number.parseInt(stateTimeStr);\r\n if (Date.now() - stateTime > (1000 * 20)) {\r\n // 20 seconds since we were ready? maybe send another request\r\n\r\n this.setTokenRequestState('ready');\r\n state = 'ready';\r\n }\r\n }\r\n\r\n return state;\r\n }\r\n\r\n setTokenRequestState(state: string) {\r\n sessionStorage.setItem('smesshy-token-request-state', state);\r\n sessionStorage.setItem('smesshy-token-request-state-time', Date.now().toString());\r\n }\r\n\r\n\r\n async ensureUserManagerInitialized(required:boolean) : Promise {\r\n if (this.userManager !== undefined) {\r\n return true;\r\n }\r\n\r\n let response: Response;\r\n try {\r\n response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl, {headers: {'smesshy-api-trace':STrace.getRecent()}});\r\n } catch(e: any) {\r\n if (required) {\r\n throw new Error(`Could not contact authority '${ApplicationPaths.ApiAuthorizationClientConfigurationUrl}' it says: ${e.message}` );\r\n }\r\n return false;\r\n }\r\n\r\n if (!response.ok) {\r\n if (required) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'` );\r\n }\r\n return false;\r\n }\r\n\r\n let settings = await response.json();\r\n \r\n //settings.automaticSilentRenew = true;\r\n //settings.includeIdTokenInSilentRenew = true;\r\n const st = new WebStorageStateStore({prefix: 'smesshyAuth'});\r\n\r\n const reloaded = sessionStorage.getItem('smesshy-reload') === 'true';\r\n sessionStorage.setItem('smesshy-reload', 'true');\r\n if (!reloaded) {\r\n // navigate to page in new session. so pull the user info from the store and expire it\r\n const ids = await st.getAllKeys();\r\n for (const id of ids) {\r\n let strUser = await st.get(id);\r\n let objUser = JSON.parse(strUser);\r\n const profile = objUser.profile;\r\n if (profile && profile.auth_time) {\r\n objUser.expires_at = profile.auth_time;\r\n strUser = JSON.stringify(objUser);\r\n await st.set(id, strUser);\r\n }\r\n }\r\n }\r\n\r\n settings.userStore = st;\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager!.removeUser();\r\n this.updateState(null);\r\n });\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport default AuthorizeService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n};\r\n\r\n\r\n","import { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps } from '../../smesshyCommon';\r\nimport React, { Component } from 'react';\r\nimport Smessage from '../smessage';\r\nimport { App } from '../../App';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\n\r\nexport interface LoginState {\r\n loading: boolean,\r\n message: string | undefined | null\r\n}\r\nexport interface LoginProps extends SmesshyCommonProps {\r\n action: string;\r\n}\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\n\r\nclass Login extends SmesshyCommon(Component) {\r\n\r\n constructor(props: LoginProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n loading: true,\r\n message: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('login', 'didMound', '');\r\n const action = this.props.action;\r\n const controlThis = this;\r\n this.executeAsync(async () => {\r\n try {\r\n switch (action) {\r\n case LoginActions.Login:\r\n STrace.addStep('login', 'login', '');\r\n await controlThis.login(controlThis.getReturnUrl());\r\n break;\r\n case LoginActions.LoginCallback:\r\n STrace.addStep('login', 'processLoginCallback', '');\r\n await controlThis.processLoginCallback();\r\n break;\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search);\r\n const error = params.get(QueryParameterNames.Message);\r\n throw new Error(error!);\r\n case LoginActions.Profile:\r\n STrace.addStep('login', 'redirectToProfile', '');\r\n controlThis.redirectToProfile();\r\n break;\r\n case LoginActions.Register:\r\n STrace.addStep('login', 'redirectToRegister', '');\r\n controlThis.redirectToRegister();\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n } catch (e: any) {\r\n controlThis.props.AppObject.reportException(`Login action ${action}`, 'ex', '', e)\r\n }\r\n });\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n }\r\n\r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n const action = this.props.action;\r\n let { message } = this.state;\r\n \r\n if (message === undefined || message === null) {\r\n switch (action) {\r\n case LoginActions.Login:\r\n message = 'Signing you in...';\r\n break;\r\n case LoginActions.LoginCallback:\r\n message = 'Processing login callback...';\r\n break;\r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return (
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n return \r\n }\r\n\r\n async login(returnUrl: string) {\r\n const state = { returnUrl };\r\n STrace.addStep('login', 'signIn', '');\r\n const result = await this.signIn(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n STrace.addStep('login', 'navigateToReturnUrl', '');\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`);\r\n }\r\n }\r\n \r\n async processLoginCallback() {\r\n const url = window.location.href;\r\n STrace.addStep('login', 'completeSignIn', '');\r\n const result = await this.completeSignIn(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n STrace.addStep('login', 'navigateToReturnUrl', '');\r\n this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid authentication result status '${result.status}'.`);\r\n }\r\n }\r\n \r\n getReturnUrl(state?: any) : string {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\r\n }\r\n \r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\r\n }\r\n \r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\r\n }\r\n \r\n redirectToApiAuthorizationPath(apiAuthorizationPath: string) {\r\n const redirectUrl = `${window.location.origin}/${apiAuthorizationPath}`;\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser they get sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl);\r\n }\r\n \r\n navigateToReturnUrl(returnUrl: string) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl);\r\n }\r\n \r\n}\r\n\r\nexport default Login;\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import React from 'react'\r\nimport { Component } from 'react';\r\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\r\nimport Smessage from '../smessage';\r\nimport { App } from '../../App';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../../smesshyCommon';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\n\r\n\r\nexport interface LogoutState extends SmesshyCommonState {\r\n message: string | undefined | null;\r\n}\r\nexport interface LogoutProps extends SmesshyCommonProps {\r\n action: string;\r\n}\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\n\r\nclass Logout extends SmesshyCommon(Component) {\r\n\r\n constructor(props: LogoutProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n message: undefined,\r\n showWaitSpin: false,\r\n authenticated: false\r\n };\r\n \r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('logout', 'didMound', '');\r\n const action = this.props.action;\r\n const controlThis = this;\r\n this.executeAsync(async () => {\r\n controlThis.pushWaitingFrame(controlThis);\r\n try {\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n //if (!!window.history.state.usr.local) {\r\n STrace.addStep('logout', 'logout', '');\r\n await controlThis.logout(controlThis.getReturnUrl(null));\r\n //} else {\r\n // This prevents regular links to /authentication/logout from triggering a logout\r\n //this.setState({ isReady: true, message: \"The logout was not initiated from within the page.\" });\r\n //}\r\n break;\r\n case LogoutActions.LogoutCallback:\r\n STrace.addStep('logout', 'processLogoutCallback', '');\r\n await controlThis.processLogoutCallback();\r\n break;\r\n case LogoutActions.LoggedOut:\r\n STrace.addStep('logout', 'logged out', '');\r\n controlThis.setState({ message: \"You successfully logged out!\" });\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n controlThis.popWaitingFrame();\r\n\r\n } catch (e: any) {\r\n controlThis.props.AppObject.reportException(`Login action ${action}`, 'ex', '', e)\r\n }\r\n\r\n controlThis.populateAuthenticationState(controlThis);\r\n });\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n let { showWaitSpin: loading, message } = this.state;\r\n const action = this.props.action;\r\n\r\n if (loading) {\r\n return
\r\n }\r\n\r\n if (message === undefined || message === null) {\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n message = 'Processing logout';\r\n break;\r\n case LogoutActions.LogoutCallback:\r\n message = 'Processing logout callback';\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n return \r\n }\r\n\r\n async logout(returnUrl: string) {\r\n const state = { returnUrl };\r\n const isauthenticated = await this.isAuthenticated();\r\n if (isauthenticated) {\r\n const result = await this.signOut(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n STrace.addStep('logout', 'navigateToReturnUrl', '');\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n } else {\r\n this.setState({ message: \"You successfully logged out!\" });\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href;\r\n STrace.addStep('logout', 'completeSignOut', '');\r\n const result = await this.completeSignOut(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n STrace.addStep('logout', 'navigateToReturnUrl', '');\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticate: boolean) {\r\n STrace.addStep('logout', 'populateAuth', authenticate.toString());\r\n }\r\n\r\n getReturnUrl(state: any) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\r\n }\r\n\r\n navigateToReturnUrl(returnUrl: string | URL) {\r\n return window.location.replace(returnUrl);\r\n }\r\n}\r\n\r\nexport default Logout;\r\n","import React, { Component } from 'react';\r\nimport Login from './Login'\r\nimport Logout from './Logout'\r\nimport { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants';\r\nimport { JsxElement } from 'typescript';\r\nimport { App } from '../../App';\r\n\r\nconst GetApiAuthorizationRoutes = (app: App) =>\r\n{\r\n return [\r\n {\r\n path: ApplicationPaths.Login,\r\n element: loginAction(app, LoginActions.Login)\r\n },\r\n {\r\n path: ApplicationPaths.LoginFailed,\r\n element: loginAction(app, LoginActions.LoginFailed)\r\n },\r\n {\r\n path: ApplicationPaths.LoginCallback,\r\n element: loginAction(app, LoginActions.LoginCallback)\r\n },\r\n {\r\n path: ApplicationPaths.Profile,\r\n element: loginAction(app, LoginActions.Profile)\r\n },\r\n {\r\n path: ApplicationPaths.Register,\r\n element: loginAction(app, LoginActions.Register)\r\n },\r\n {\r\n path: ApplicationPaths.LogOut,\r\n element: logoutAction(app, LogoutActions.Logout)\r\n },\r\n {\r\n path: ApplicationPaths.LogOutCallback,\r\n element: logoutAction(app, LogoutActions.LogoutCallback)\r\n },\r\n {\r\n path: ApplicationPaths.LoggedOut,\r\n element: logoutAction(app, LogoutActions.LoggedOut)\r\n }\r\n ];\r\n}\r\n\r\nfunction loginAction(app: App, name: string):JSX.Element {\r\n return ();\r\n}\r\n\r\nfunction logoutAction(app: App, name: string):JSX.Element {\r\n return ();\r\n}\r\n\r\nexport default GetApiAuthorizationRoutes;\r\n","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport {CloseButton } from './iconButton';\r\nimport { Footer } from '../smesshy';\r\nimport { Profile, User } from 'oidc-client';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState, SmesshyNavigateOptions, SmesshyPushy, SmesshyPushyProps, SmesshyPushyState } from '../smesshyCommon';\r\nimport { Link, Navigate, createSearchParams, useSearchParams } from 'react-router-dom';\r\nimport { PaintingInfo } from '../storageManager';\r\nimport Smessage from './smessage';\r\nimport { SmesshySubButton } from './smesshyButton';\r\nimport GamePage from './gamePage';\r\n\r\n\r\n\r\ninterface FridgeState extends SmesshyPushyState{\r\n\r\n}\r\ninterface FridgeProps extends SmesshyPushyProps{\r\n Infos: Array;\r\n GetImage: (imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined)=>JSX.Element;\r\n}\r\n\r\nclass Fridge extends SmesshyPushy(Component) {\r\n\r\n constructor(props: FridgeProps) {\r\n super(props);\r\n\r\n this.state = {\r\n currentPushedState: false\r\n };\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (prevProps.StartPushedState !== this.props.StartPushedState) {\r\n this.setState({currentPushedState: this.props.StartPushedState})\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.abandonPress();\r\n }\r\n\r\n render() {\r\n\r\n let controlThis = this;\r\n\r\n const thumbIfExists = (infos: Array, idx: number) : string | undefined => {\r\n if (infos === undefined || infos.length <= idx || infos[idx].imageDetail === undefined) {\r\n return undefined;\r\n }\r\n return (infos[idx].imageDetail!.thumbnail);\r\n }\r\n\r\n return (\r\n
controlThis.onClick(e, this.props)}\r\n onContextMenu={(e:React.MouseEvent)=> controlThis.onContext(e, this.props)}\r\n onPointerDown={(e:React.PointerEvent) => {controlThis.startPress(e, this.props)}}\r\n onPointerUp={(e:React.PointerEvent) => {controlThis.finishPress(e, this.props)} }\r\n onPointerMove={(e:React.PointerEvent) => controlThis.pointerMove(e, this.props)}\r\n onPointerCancel={(e:React.PointerEvent) => controlThis.cancelPress(e, this.props)}\r\n >\r\n {this.props.GetImage(thumbIfExists(this.props.Infos, 0), thumbIfExists(this.props.Infos, 1), thumbIfExists(this.props.Infos, 2))}\r\n
);\r\n }\r\n}\r\n\r\n\r\nexport interface GalleryDoorsPageState extends SmesshyCommonState {\r\n myRecInfos: Array;\r\n myFavInfos: Array;\r\n myPopInfos: Array;\r\n folRecInfos: Array;\r\n folFavInfos: Array;\r\n folPopInfos: Array;\r\n globTrendInfos: Array;\r\n globFavInfos: Array;\r\n globPopInfos: Array;\r\n\r\n}\r\nexport interface GalleryDoorsPageProps extends SmesshyCommonProps {\r\n}\r\n\r\nclass GalleryDoorsPage extends SmesshyCommon(Component) {\r\n\r\n constructor(props: GalleryDoorsPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n myRecInfos: new Array(),\r\n myFavInfos: new Array(),\r\n myPopInfos: new Array(),\r\n folRecInfos: new Array(),\r\n folFavInfos: new Array(),\r\n folPopInfos: new Array(),\r\n globTrendInfos: new Array(),\r\n globFavInfos: new Array(),\r\n globPopInfos: new Array(),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('galleryDoors', 'didMound', '');\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('galleryDoors', 'populateAuth', authenticated.toString());\r\n\r\n if (authenticated) {\r\n const sm=this.storageManager!;\r\n let token = (await this.getAccessToken())!;\r\n\r\n STrace.addStep('galleryDoors', 'getUserPaintingsWithThumbs', 'recent');\r\n sm.getUserPaintingsWithThumbs(token, 0, 2, 'recent', pins=>this.setState({myRecInfos:pins}));\r\n STrace.addStep('galleryDoors', 'getUserPaintingsWithThumbs', 'favorite');\r\n sm.getUserPaintingsWithThumbs(token, 0, 2, 'favorite', pins=>this.setState({myFavInfos:pins}));\r\n STrace.addStep('galleryDoors', 'getUserPaintingsWithThumbs', 'popular');\r\n sm.getUserPaintingsWithThumbs(token, 0, 2, 'popular', pins=>this.setState({myPopInfos:pins}));\r\n\r\n STrace.addStep('galleryDoors', 'getFollowingPaintingsWithThumbs', 'recent');\r\n sm.getFollowingPaintingsWithThumbs(token, 0, 2, 'recent', pins=>this.setState({folRecInfos:pins}));\r\n STrace.addStep('galleryDoors', 'getFollowingPaintingsWithThumbs', 'favorite');\r\n sm.getFollowingPaintingsWithThumbs(token, 0, 2, 'favorite', pins=>this.setState({folFavInfos:pins}));\r\n STrace.addStep('galleryDoors', 'getFollowingPaintingsWithThumbs', 'popular');\r\n sm.getFollowingPaintingsWithThumbs(token, 0, 2, 'popular', pins=>this.setState({folPopInfos:pins}));\r\n\r\n STrace.addStep('galleryDoors', 'getGlobalPaintingsWithThumbs-auth', 'recent');\r\n sm.getGlobalPaintingsWithThumbs(token, 0, 2, 'recent', pins=>this.setState({globTrendInfos:pins}));\r\n STrace.addStep('galleryDoors', 'getGlobalPaintingsWithThumbs-auth', 'favorite');\r\n sm.getGlobalPaintingsWithThumbs(token, 0, 2, 'favorite', pins=>this.setState({globFavInfos:pins}));\r\n STrace.addStep('galleryDoors', 'getGlobalPaintingsWithThumbs-auth', 'popular');\r\n sm.getGlobalPaintingsWithThumbs(token, 0, 2, 'popular', pins=>this.setState({globPopInfos:pins}));\r\n\r\n } else {\r\n const sm=this.storageManager!;\r\n let token = 'none';\r\n\r\n STrace.addStep('galleryDoors', 'getGlobalPaintingsWithThumbs-anon', 'recent');\r\n sm.getGlobalPaintingsWithThumbs(token, 0, 2, 'recent', pins=>this.setState({globTrendInfos:pins}));\r\n STrace.addStep('galleryDoors', 'getGlobalPaintingsWithThumbs-anon', 'favorite');\r\n sm.getGlobalPaintingsWithThumbs(token, 0, 2, 'favorite', pins=>this.setState({globFavInfos:pins}));\r\n STrace.addStep('galleryDoors', 'getGlobalPaintingsWithThumbs-anon', 'popular');\r\n sm.getGlobalPaintingsWithThumbs(token, 0, 2, 'popular', pins=>this.setState({globPopInfos:pins}));\r\n }\r\n \r\n }\r\n\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n\r\n }\r\n\r\n getGalRefMyRec(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n R\r\n R\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n C\r\n C\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n N\r\n N\r\n \r\n \r\n T\r\n T\r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n );\r\n }\r\n\r\n\r\n getGalRefMyFav(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n \r\n \r\n \r\n Bookmarks\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n getGalRefMyPop(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n \r\n \r\n \r\n Popular\r\n \r\n );\r\n }\r\n\r\n\r\n getGalRefFolRec(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n R\r\n R\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n C\r\n C\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n N\r\n N\r\n \r\n \r\n T\r\n T\r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n );\r\n }\r\n\r\n getGalRefFolFav(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n \r\n \r\n \r\n Bookmarks\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n getGalRefFolPop(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n \r\n \r\n \r\n Popular\r\n \r\n );\r\n }\r\n\r\n getGalRefGlobRec(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n T\r\n T\r\n \r\n \r\n R\r\n R\r\n \r\n \r\n E\r\n E\r\n \r\n \r\n N\r\n N\r\n \r\n \r\n D\r\n D\r\n \r\n \r\n I\r\n I\r\n \r\n \r\n N\r\n N\r\n \r\n \r\n G\r\n G\r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n );\r\n }\r\n\r\n getGalRefGlobFav(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n \r\n \r\n \r\n Bookmarks\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n getGalRefGlobPop(imgSrc1: string|undefined, imgSrc2: string|undefined, imgSrc3: string|undefined) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {imgSrc1 === undefined ? <> : }\r\n {imgSrc2 === undefined ? <> : }\r\n {imgSrc3 === undefined ? <> : }\r\n \r\n \r\n \r\n Fantastic\r\n \r\n );\r\n }\r\n\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`gallery doors, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {Smesshy - Gallery}\r\n CloseNav = {'/'}\r\n Body={\r\n
\r\n
\r\n
\r\n My Masterpieces\r\n
\r\n
\r\n => {\r\n STrace.addStep('gallery doors', 'pick door', 'my recent');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'My recent paintings:', scope: 'my', filter:'recent', auth:'true'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n
\r\n => {\r\n STrace.addStep('gallery doors', 'pick door', 'my favorite');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'My paintings that I like:', scope: 'my', filter:'favorite', auth:'true'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n
\r\n => {\r\n STrace.addStep('gallery doors', 'pick door', 'my popular');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'My paintings that others like:', scope: 'my', filter:'popular', auth:'true'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n\r\n
\r\n
\r\n Following\r\n
\r\n Whom ...
}\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('gallery doors', 'following', '');\r\n controlThis.setState({navigateTo:{To:'/following'}});\r\n return true;\r\n }}\r\n\r\n />\r\n
\r\n
\r\n => {\r\n STrace.addStep('gallery doors', 'pick door', 'follow recent');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'Recent paintings from those I follow:', scope: 'following', filter:'recent', auth:'true'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n
\r\n => {\r\n STrace.addStep('gallery doors', 'pick door', 'follow favorite');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'My favorite paintings from those I follow:', scope: 'following', filter:'favorite', auth:'true'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n
\r\n => {\r\n STrace.addStep('gallery doors', 'pick door', 'follow popular');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'Popular paintings from those I follow:', scope: 'following', filter:'popular', auth:'true'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n
\r\n From Everyone\r\n
\r\n
\r\n => {\r\n STrace.addStep('gallery doors', 'pick door', 'global recent');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'Trending paintings from everyone:', scope: 'global', filter:'recent', auth:'false'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n
\r\n =>{\r\n STrace.addStep('gallery doors', 'pick door', 'global favorite');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'Paintings I like from everyone:', scope: 'global', filter:'favorite', auth:'true'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n
\r\n =>{\r\n STrace.addStep('gallery doors', 'pick door', 'global popular');\r\n controlThis.setState({navigateTo:{To:{pathname:'./gallery', search:`?${createSearchParams({title: 'All time best from everyone:', scope: 'global', filter:'popular', auth:'false'})}`} }})\r\n return true;\r\n }}/>\r\n
\r\n
\r\n
\r\n }\r\n />, \r\n this.state);\r\n }\r\n}\r\n\r\nexport default GalleryDoorsPage;","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport {CloseButton } from './iconButton';\r\nimport { Footer } from '../smesshy';\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { Profile } from 'oidc-client';\r\nimport { SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\nimport { SmesshyMainButton } from './smesshyButton';\r\n\r\n\r\nexport interface ErrorPageState extends SmesshyCommonState{\r\n}\r\nexport interface ErrorPageProps extends SmesshyCommonProps {\r\n From: string;\r\n Message: string;\r\n Kind: string;\r\n Code: string;\r\n}\r\n\r\nclass ErrorPage extends SmesshyCommon(Component) {\r\n\r\n constructor(props: ErrorPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false\r\n\r\n };\r\n }\r\n componentDidMount(): void {\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n return this.renderFramework(\r\n Smesshy - Disaster}\r\n CloseNav = {'/'}\r\n Body={\r\n
\r\n
\r\n
\r\n {this.props.Kind !== 'test' ? `Something unexpected happened'`: 'You ran a test'}\r\n
\r\n
\r\n
\r\n
\r\n Smesshy.com {this.props.Kind === 'ex' ? `says: 'what we have here, is a failure to communicate'`: this.props.Kind === 'test' ? `says: 'this happened'`: 'responded with an error'}\r\n
\r\n
\r\n {this.props.Code === '' ? '': `Code: ${this.props.Code}`}\r\n
\r\n
\r\n When you said: {this.props.From}\r\n
\r\n
\r\n It said: {this.props.Message}\r\n
\r\n
\r\n
\r\n \r\n
\r\n Go back and refresh\r\n
\r\n }\r\n\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n ExtraStyleClass='each-space-around'\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.triggerRefresh();\r\n controlThis.setState({navigateTo: {To:-1}});\r\n return true;\r\n }}\r\n />\r\n\r\n \r\n\r\n
\r\n
\r\n }\r\n />, this.state \r\n );\r\n }\r\n}\r\n\r\nexport default ErrorPage;","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport IconButton, {IconBookmark, IconBookmarked, IconLike, IconLikeRed, IconFinger, IconRefFactory, IconSelected, IconSelect, IconTrash, IconOffendedFilled, IconOffended, IconSuspectYes, IconSuspect, VoteButton } from './iconButton';\r\nimport { User } from 'oidc-client';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport { MakePaintingLocate, PaintingInfo } from '../storageManager';\r\nimport { Navigate } from 'react-router';\r\nimport { createSearchParams } from 'react-router-dom';\r\nimport { FollowingTile } from './followingPage';\r\nimport ChallengeTile, { ChallengeTileOptions } from './challengeTile';\r\nimport Smesshy from '../smesshy';\r\n\r\nexport interface PaintingFrameState extends SmesshyCommonState {\r\n user: User | null;\r\n bookmark: boolean;\r\n favorite: boolean;\r\n favoriteCount: number;\r\n offensive: boolean;\r\n offensiveCount: number;\r\n suspect: boolean;\r\n suspectCount: number;\r\n selected: boolean;\r\n expandedView: boolean;\r\n deleted: boolean;\r\n}\r\n\r\nexport interface PaintingFrameProps extends SmesshyCommonProps {\r\n PaintingInfo: PaintingInfo;\r\n UserId: string | null;\r\n SaveEdit: boolean;\r\n ChallengeOptions: ChallengeTileOptions | undefined\r\n ShowLunchbox: boolean;\r\n VoteMode: boolean;\r\n NoArtist: boolean;\r\n SelectionMode: boolean;\r\n Callback?: string;\r\n CurrentSelection?: string;\r\n VoteSelection?: number; \r\n OnVoteSelection?: (idx: number)=>boolean;\r\n}\r\n\r\nclass PaintingFrame extends SmesshyCommon(Component) {\r\n\r\n rectRef = React.createRef() as React.RefObject;\r\n constructor(props: PaintingFrameProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n user: null,\r\n deleted: false,\r\n bookmark: props.PaintingInfo.userBookmark!,\r\n favorite: props.PaintingInfo.userFavorite!,\r\n favoriteCount: (props.PaintingInfo.totalFavorites === undefined) ? 0 : props.PaintingInfo.totalFavorites!,\r\n offensive: props.PaintingInfo.userOffended!,\r\n offensiveCount: (props.PaintingInfo.totalOffended === undefined) ? 0 : props.PaintingInfo.totalOffended!,\r\n expandedView: false,\r\n suspect: props.PaintingInfo.userSuspect!,\r\n suspectCount: (props.PaintingInfo.totalSuspect === undefined) ? 0 : props.PaintingInfo.totalSuspect!,\r\n selected: props.PaintingInfo.paintingId === props.CurrentSelection,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`paintingFrame, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const onOtherNavigate = async ():Promise => {\r\n const otherId = controlThis.props.PaintingInfo.artistProfile.artistId!;\r\n STrace.addStep('frame', 'other nav', otherId);\r\n const otherName = controlThis.props.PaintingInfo.artistProfile.artistName!;\r\n const params = createSearchParams({title: otherName, scope: 'others', filter:otherId});\r\n controlThis.setState({navigateTo: {To:`/other-gallery?${params.toString()}`}});\r\n return true;\r\n }\r\n\r\n const userIsArtist = this.props.UserId !== null && this.props.UserId === this.props.PaintingInfo.artistProfile.artistId;\r\n const doHaptic = this.doButtonHaptic();\r\n\r\n let iconsUsed = 0;\r\n let showLunchbox = false;\r\n let showLike = false;\r\n let showBookmark = false;\r\n let showOffend = false;\r\n let showSuspect = false;\r\n let showEdit = false;\r\n let showSelect = false;\r\n let showDelete = false;\r\n\r\n let iconSizeName = 'large';\r\n let iconSvgSize = 31;\r\n\r\n if (this.props.VoteMode) {\r\n showLike = true;\r\n showBookmark = true;\r\n showOffend = true;\r\n showSuspect = true;\r\n showEdit = true;\r\n iconSizeName = 'medium';\r\n iconSvgSize = 25;\r\n } else if (this.props.SelectionMode){\r\n showSelect = true;\r\n } else {\r\n showLunchbox = this.props.ShowLunchbox && this.props.PaintingInfo.lunchboxViewScore !== undefined && this.props.PaintingInfo.lunchboxViewScore > 0;\r\n if (showLunchbox) {\r\n iconsUsed+= 1.33;\r\n }\r\n \r\n showLike = true;\r\n iconsUsed ++;\r\n\r\n if (this.state.favoriteCount > 0) {\r\n iconsUsed += .33\r\n }\r\n if (this.state.favoriteCount > 9) {\r\n iconsUsed += .33\r\n }\r\n\r\n showBookmark = true;\r\n iconsUsed ++;\r\n\r\n if (this.state.offensiveCount > 0) {\r\n iconsUsed += .33\r\n }\r\n if (this.state.offensiveCount > 9) {\r\n iconsUsed += .33\r\n }\r\n\r\n if (this.state.offensiveCount > 0 || !userIsArtist) {\r\n showOffend = true;\r\n iconsUsed ++;\r\n }\r\n \r\n showDelete = userIsArtist;\r\n if (showDelete) {\r\n iconsUsed++;\r\n }\r\n \r\n showEdit = true;\r\n iconsUsed ++;\r\n\r\n if (iconsUsed > 4.5) {\r\n iconSizeName = 'medium';\r\n iconSvgSize = 25;\r\n if (iconsUsed > 5.5) {\r\n iconSizeName = 'small';\r\n iconSvgSize = 19;\r\n }\r\n }\r\n }\r\n\r\n\r\n \r\n\r\n let lunchbox = (showLunchbox) ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : <>; \r\n let editButton = {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = await controlThis.requireSetupAsync(async () => {\r\n STrace.addStep('frame', 'playback', '');\r\n controlThis.pushWaitingFrame(controlThis);\r\n let token = (await controlThis.getAccessToken())!;\r\n STrace.addStep('frame', 'getPaintingActions', this.props.PaintingInfo.paintingId!);\r\n controlThis.storageManager!.getPaintingActions(token, this.props.PaintingInfo, (pin=>{\r\n localStorage.setItem(controlThis.props.SaveEdit ? 'paintingActionsSelf' : 'paintingActionsOther', pin.imageDetail!.actions);\r\n let interactionMode = controlThis.props.SaveEdit ? 'edit' : 'watch';\r\n controlThis.setState({navigateTo: {To: {pathname:'/painting', search:`?${createSearchParams({mode: interactionMode})}`}}});\r\n }));\r\n controlThis.popWaitingFrame(); \r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n />;\r\n\r\n let likeButton = this.state.favorite ? {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = await controlThis.requireSetupAsync(async () => {\r\n controlThis.setState({favorite:false, favoriteCount: controlThis.state.favoriteCount - 1})\r\n STrace.addStep('frame', 'deleteUserFavoritePaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.deleteUserFavoritePaintingAsync(MakePaintingLocate(controlThis.props.PaintingInfo));\r\n controlThis.popWaitingFrame();\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={true}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n /> : {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = await controlThis.requireSetupAsync(async () => {\r\n controlThis.setState({favorite:true, favoriteCount: controlThis.state.favoriteCount + 1})\r\n STrace.addStep('frame', 'putUserFavoritePaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.putUserFavoritePaintingAsync(MakePaintingLocate(controlThis.props.PaintingInfo));\r\n controlThis.popWaitingFrame();\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n />;\r\n\r\n let bookmarkButton = this.state.bookmark ? {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = await controlThis.requireSetupAsync(async () => {\r\n controlThis.setState({bookmark:false})\r\n STrace.addStep('frame', 'deleteUserBookmarkPaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.deleteUserBookmarkPaintingAsync(MakePaintingLocate(controlThis.props.PaintingInfo));\r\n controlThis.popWaitingFrame();\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={true}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n /> : {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = await controlThis.requireSetupAsync(async () => {\r\n controlThis.setState({bookmark:true})\r\n STrace.addStep('frame', 'putUserBookmarkPaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.putUserBookmarkPaintingAsync(MakePaintingLocate(controlThis.props.PaintingInfo));\r\n controlThis.popWaitingFrame();\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n />; \r\n\r\n let offendedButton = userIsArtist ? \r\n (this.state.offensiveCount === 0 ? <> : \r\n {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n return true;\r\n }}\r\n StartPushedState={true}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n />\r\n ) :\r\n (this.state.offensive ? {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = await controlThis.requireSetupAsync(async () => {\r\n controlThis.setState({offensive:false, offensiveCount: controlThis.state.offensiveCount - 1})\r\n STrace.addStep('frame', 'deleteUserOffensivePaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.deleteUserOffensivePaintingAsync(MakePaintingLocate(controlThis.props.PaintingInfo));\r\n controlThis.popWaitingFrame();\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={true}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n /> : {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('frame', 'offend ask', '');\r\n let reqNav = controlThis.requireSetup(() => {\r\n controlThis.setState({askQuestion:{\r\n Top: controlThis.bestTop(controlThis.rectRef.current!, 191, 'below'),\r\n Title: Offensive?,\r\n Prompts: [Report this painting as offensive or in poor taste?,\r\n Doing so may have punitive repercussions for the artist.],\r\n Options: [{Key:'trashPainting', Option:Yes, it IS BAD, OnOption:async ():Promise=>{\r\n controlThis.setState({offensive:true, offensiveCount: controlThis.state.offensiveCount + 1, askQuestion:undefined})\r\n STrace.addStep('frame', 'putUserOffensivePaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.putUserOffensivePaintingAsync(MakePaintingLocate(controlThis.props.PaintingInfo));\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}], OnCancel:()=>{controlThis.setState({askQuestion:undefined});}\r\n }});\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n />);\r\n\r\n let suspectButton =\r\n (this.state.suspect ? {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = await controlThis.requireSetupAsync(async () => {\r\n controlThis.setState({suspect:false})\r\n STrace.addStep('frame', 'deleteUserSuspectPaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.deleteUserSuspectPaintingAsync(MakePaintingLocate(controlThis.props.PaintingInfo));\r\n controlThis.popWaitingFrame();\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={true}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n /> : {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('frame', 'suspect ask', '');\r\n let reqNav = controlThis.requireSetup(() => {\r\n controlThis.setState({askQuestion:{\r\n Top: controlThis.bestTop(controlThis.rectRef.current!, 191, 'below'),\r\n Title: Suspect?,\r\n Prompts: [Report this painting as suspect, a copy or a fake?,\r\n Doing so may have punitive repercussions for the artist.],\r\n Options: [{Key:'suspectPainting', Option:Yes, it IS SUSPECT, OnOption:async ():Promise=>{\r\n controlThis.setState({suspect:true, askQuestion:undefined})\r\n STrace.addStep('frame', 'putUserSuspectPaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.putUserSuspectPaintingAsync(MakePaintingLocate(controlThis.props.PaintingInfo));\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}], OnCancel:()=>{controlThis.setState({askQuestion:undefined});}\r\n }});\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n />);\r\n \r\n let selectButton = this.state.selected ? {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('frame', 'suspect ask', '');\r\n let reqNav = controlThis.requireSetup(() => {\r\n STrace.addStep('frame', 'selected', 'none');\r\n controlThis.setState({selected:false});\r\n controlThis.setState({navigateTo: {To:`${controlThis.props.Callback}?${createSearchParams({current: 'none'})}`}});\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={true}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n /> : {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('frame', 'suspect ask', '');\r\n let reqNav = controlThis.requireSetup(() => {\r\n STrace.addStep('frame', 'selected', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.setState({selected:true})\r\n controlThis.setState({navigateTo: {To:`${controlThis.props.Callback}?${createSearchParams({current: controlThis.props.PaintingInfo.paintingId!})}`}});\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n />;\r\n\r\n let deleteButton = userIsArtist ? {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('frame', 'delete ask', '');\r\n STrace.addStep('frame', 'suspect ask', '');\r\n let reqNav = controlThis.requireSetup(() => {\r\n controlThis.setState({askQuestion:{\r\n Top: controlThis.bestTop(controlThis.rectRef.current!, 147, 'below'),\r\n Title: Trash?,\r\n Prompts: [To be clear, delete,\r\n this fantastic work?],\r\n Options: [{Key:'trashPainting', Option:Yes, trash it, OnOption:async ():Promise=>{\r\n controlThis.setState({deleted: true, askQuestion:undefined});\r\n STrace.addStep('frame', 'deleteUserPaintingAsync', controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.deleteUserPaintingAsync(controlThis.props.PaintingInfo.paintingId!);\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}], OnCancel:()=>{controlThis.setState({askQuestion:undefined});}\r\n }});\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={false}\r\n Haptic = {doHaptic}\r\n Height={this._app!.GetScaledPxHeight(iconSvgSize)}\r\n Size={iconSizeName}\r\n /> : <>;\r\n \r\n let feedbackLine = <>;\r\n let sideLine = <>;\r\n if (this.props.VoteMode) {\r\n const isPushed = (idx: number): boolean => {\r\n return controlThis.props.VoteSelection === idx;\r\n }\r\n const onPress = (idx: number): boolean => {\r\n if (controlThis.props.OnVoteSelection !== undefined) {\r\n STrace.addStep('frame', 'vote', idx.toString());\r\n return controlThis.props.OnVoteSelection(idx);\r\n }\r\n return false;\r\n }\r\n\r\n feedbackLine = \r\n
\r\n {likeButton}\r\n {bookmarkButton}\r\n {offendedButton}\r\n {suspectButton}\r\n {editButton}\r\n
\r\n\r\n sideLine = \r\n
\r\n =>onPress(9)}\r\n />\r\n =>onPress(8)}\r\n />\r\n =>onPress(5)}\r\n />\r\n =>onPress(4)}\r\n />\r\n =>onPress(2)}\r\n />\r\n =>onPress(1)}\r\n />\r\n =>onPress(0)}\r\n />\r\n
\r\n\r\n\r\n } else if (this.props.SelectionMode){\r\n feedbackLine = \r\n
\r\n {selectButton}\r\n
\r\n } else {\r\n feedbackLine = \r\n
\r\n
\r\n {lunchbox}\r\n {likeButton}\r\n {this.state.favoriteCount ?
{this.state.favoriteCount}
: <>}\r\n {bookmarkButton}\r\n {offendedButton}\r\n {this.state.offensiveCount ?
{this.state.offensiveCount}
: <>}\r\n {deleteButton}\r\n
\r\n {editButton}\r\n
\r\n }\r\n\r\n let artistLine = <>;\r\n\r\n if (!userIsArtist && this.props.SelectionMode===false && this.props.NoArtist===false) {\r\n artistLine = \r\n =>{return true;}}\r\n OnPlusClick={async (top:number, artistId:string, artistName:string): Promise=>{return true;}}\r\n OnTileClick={async (top:number, artistId:string, artistName:string): Promise=>{return await onOtherNavigate();}}\r\n />\r\n }\r\n let captionLine = <>;\r\n if (this.props.PaintingInfo.caption !== undefined && this.props.PaintingInfo.caption !== null && this.props.PaintingInfo.caption.length > 0) {\r\n captionLine =
\r\n {`\"${this.props.PaintingInfo.caption}\"`}\r\n
;\r\n }\r\n let challengeLine = <>;\r\n if (this.props.ChallengeOptions !== undefined && this.props.PaintingInfo.challengeName && this.props.SelectionMode===false) {\r\n challengeLine = {\r\n return await Smesshy.getSpecificChallengeStateAsync(controlThis, cId, true);\r\n }}\r\n />\r\n }\r\n\r\n const paintingMeta =
\r\n {captionLine}\r\n {feedbackLine}\r\n {challengeLine}\r\n {artistLine}\r\n
\r\n\r\n const onPaintingClick = ()=> {\r\n STrace.addStep('frame', 'expand', (!this.state.expandedView).toString());\r\n this.setState({expandedView: !this.state.expandedView});\r\n }\r\n\r\n var imgStyle = {width:'100%', height:'100%', \r\n backgroundImage:`url(${this.props.PaintingInfo.imageDetail!.preview})`,\r\n backgroundPosition: 'center', backgroundRepeat: 'no-repeat', backgroundSize: 'contain' };\r\n\r\n const imgElement = this.props.VoteMode === false ? \r\n onPaintingClick()}/> : \r\n
\r\n
onPaintingClick()}>
\r\n {sideLine}\r\n
;\r\n \r\n\r\n return this.renderFramework(\r\n <>\r\n {this.state.expandedView == false ? (\r\n <>\r\n
\r\n {imgElement}\r\n {paintingMeta}\r\n {this.state.deleted === true ? (
) : (<>)}\r\n
\r\n \r\n \r\n ) : (\r\n
onPaintingClick()} \r\n style={{maxWidth:512, maxHeight: 1024, position:'absolute', left:0, top: 0, height:'100%', width:'100%', backgroundColor:'rgba(0,0,0,.67)', zIndex: 10}}>\r\n\r\n
\r\n
;\r\n
\r\n )}\r\n , this.state);\r\n }\r\n}\r\n\r\nexport default PaintingFrame;","import React, { Component } from 'react';\r\nimport { App, SmesshyAppShape } from '../App'\r\nimport IconButton, {CloseButton, IconBookmark, IconBookmarked } from './iconButton';\r\nimport { Footer } from '../smesshy';\r\nimport { Profile, User } from 'oidc-client';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState, SmesshyNavigateOptions } from '../smesshyCommon';\r\nimport PaintingFrame from './paintingFrame';\r\nimport { ArtistProfile, PaintingInfo } from '../storageManager';\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport { prependListener } from 'process';\r\nimport Smessage from './smessage';\r\nimport { SmesshySubButton } from './smesshyButton';\r\nimport GamePage from './gamePage';\r\nimport { StreakViewer } from './followingPicker';\r\nimport { ChallengeTileOptions } from './challengeTile';\r\n\r\n\r\n\r\nexport interface PaintingPairState {\r\n}\r\nexport interface PaintingPairProps {\r\n AppObject: App;\r\n AppShape: SmesshyAppShape | undefined;\r\n PaintingInfo1?: PaintingInfo;\r\n PaintingInfo2?: PaintingInfo;\r\n UserId: string | null;\r\n SaveEdit: boolean;\r\n ChallengeOptions: ChallengeTileOptions | undefined;\r\n CurrentChallengeId: number;\r\n ShowLunchbox: boolean;\r\n SelectionMode: boolean;\r\n Callback?: string;\r\n NoArtist: boolean;\r\n CurrentSelection?: string;\r\n}\r\n\r\nexport class PaintingPair extends Component {\r\n\r\n constructor(props: PaintingPairProps) {\r\n super(props);\r\n\r\n this.state = {\r\n };\r\n }\r\n\r\n render() {\r\n let swapChallengeOptions: ChallengeTileOptions | undefined = {ShowPrize: false, ShowResults: true, ShowRules: false, ShowTitle: true, ShowEntrants:true, Prefix: ''};\r\n\r\n let options1 = this.props.ChallengeOptions;\r\n let options2 = this.props.ChallengeOptions;\r\n if (this.props.ChallengeOptions === undefined && this.props.CurrentChallengeId !== -1) {\r\n // signal that we can swap in challenge options for those NOT in the current challenge\r\n if (this.props.PaintingInfo1 !== undefined && this.props.PaintingInfo1!.visibilityId !== this.props.CurrentChallengeId) {\r\n options1 = swapChallengeOptions;\r\n }\r\n if (this.props.PaintingInfo2 !== undefined && this.props.PaintingInfo2!.visibilityId !== this.props.CurrentChallengeId) {\r\n options2 = swapChallengeOptions;\r\n }\r\n }\r\n return (
\r\n
\r\n {this.props.PaintingInfo1 === undefined ? <> :\r\n }\r\n
\r\n
\r\n {this.props.PaintingInfo2 === undefined ? <> :\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport interface GalleryPageState extends SmesshyCommonState {\r\n userId: string | null;\r\n nextStart: number;\r\n atEnd: boolean;\r\n saveEdit: boolean;\r\n challengeOptions: ChallengeTileOptions | undefined;\r\n currentChallengeId: number;\r\n showLunchbox: boolean;\r\n paintingInfos: Array;\r\n follows: boolean;\r\n artistProfile: ArtistProfile | undefined;\r\n showingBookmarked: boolean;\r\n}\r\nexport interface GalleryPageProps extends SmesshyCommonProps {\r\n Title: string;\r\n Scope: string;\r\n Filter: string;\r\n FetchCount: number;\r\n SelectionMode: boolean;\r\n ArtistMode: boolean;\r\n Callback?: string;\r\n CurrentSelection?: string;\r\n RequireAuth: boolean;\r\n ShowBookmarkFilter?: boolean;\r\n}\r\n\r\nclass GalleryPage extends SmesshyCommon(Component) {\r\n\r\n scrollRef: React.RefObject;\r\n\r\n constructor(props: GalleryPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.scrollRef = React.createRef();\r\n this.initState(props);\r\n }\r\n\r\n initState(props: GalleryPageProps) {\r\n let saveEdit = false;\r\n let challengeOptions: ChallengeTileOptions | undefined = {ShowPrize: false, ShowResults: true, ShowRules: false, ShowTitle: true, ShowEntrants:false, Prefix: ''};\r\n let showLunchbox = false;\r\n\r\n let requireAccount = false;\r\n \r\n switch(props.Scope) {\r\n case 'my':\r\n requireAccount = true;\r\n saveEdit = true;\r\n showLunchbox = true;\r\n break;\r\n case 'following':\r\n requireAccount = true;\r\n break;\r\n case 'global':\r\n if (props.Filter === 'recent') {\r\n challengeOptions = undefined;\r\n }\r\n break;\r\n case 'others':\r\n requireAccount = true;\r\n break;\r\n }\r\n\r\n let reqNav : SmesshyNavigateOptions | undefined = undefined;\r\n if (requireAccount) {\r\n reqNav = this.requireSetup(()=>{}, true);\r\n } \r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n userId: null,\r\n nextStart: 0,\r\n atEnd: false,\r\n saveEdit: saveEdit,\r\n challengeOptions: challengeOptions,\r\n currentChallengeId: -1,\r\n showLunchbox: showLunchbox,\r\n paintingInfos: new Array(),\r\n follows: false,\r\n artistProfile: undefined,\r\n showingBookmarked: false,\r\n navigateTo: reqNav\r\n };\r\n\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('gallery', 'didMound', '');\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('gallery', 'populateAuth', authenticated.toString());\r\n if (authenticated) {\r\n this.setState({authenticated:true, userId: await this.getUserId()});\r\n \r\n if (this.props.ArtistMode === true) {\r\n STrace.addStep('gallery', 'getUserFollowingAsync', 'approved');\r\n const follows = await this.storageManager!.getUserFollowingAsync('approved', false);\r\n this.setState({follows:follows.has(this.props.Filter)});\r\n\r\n const controlThis = this;\r\n STrace.addStep('gallery', 'getArtistProfilesAsync', this.props.Filter);\r\n await this.storageManager!.getArtistProfilesAsync([this.props.Filter], 'full', (profs: Array)=>{\r\n if (profs.length > 0) {\r\n controlThis.setState({artistProfile: profs[0]});\r\n }\r\n });\r\n\r\n }\r\n this.fetchMorePaintings(true,this.state.atEnd, this.state.nextStart, this.state.paintingInfos, this.state.showingBookmarked);\r\n } else {\r\n this.setState({authenticated:false});\r\n if (this.state.navigateTo === undefined) {\r\n this.fetchMorePaintings(false, this.state.atEnd, this.state.nextStart, this.state.paintingInfos, this.state.showingBookmarked); \r\n }\r\n }\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n if (prevProps.Filter !== this.props.Filter || prevProps.Scope != this.props.Scope) {\r\n this.initState(this.props);\r\n }\r\n }\r\n\r\n fetchMorePaintings(authenticated: boolean, atEnd: boolean, nextStart: number, paintingInfos: Array, showingBookmarked: boolean) {\r\n if (atEnd) {\r\n return;\r\n }\r\n\r\n if (this.props.RequireAuth && !authenticated) {\r\n return;\r\n }\r\n \r\n let app = this.props.AppObject;\r\n let controlThis = this;\r\n this.pushWaitingFrame(this);\r\n this.executeAsync(async ()=> {\r\n\r\n const acceptPins = (pins: Array)=>{\r\n controlThis.setState({\r\n paintingInfos: paintingInfos.concat(pins),\r\n nextStart: nextStart + pins.length, \r\n atEnd:pins.length < controlThis.props.FetchCount\r\n });\r\n\r\n for (let pin of pins) {\r\n controlThis._app!.clearNotifications('painting', pin.paintingId!);\r\n }\r\n };\r\n\r\n let token = await controlThis.getAccessToken();\r\n if (token === undefined) {\r\n token = 'none'\r\n } \r\n\r\n if (controlThis.props.Scope === 'my') {\r\n STrace.addStep('gallery', 'getUserPaintingsWithPreviews', 'my');\r\n let filter = controlThis.props.Filter;\r\n if (showingBookmarked) {\r\n filter = 'favorite';\r\n }\r\n controlThis.storageManager!.getUserPaintingsWithPreviews(token, \r\n nextStart, nextStart + controlThis.props.FetchCount-1, filter, acceptPins); \r\n \r\n } else if (controlThis.props.Scope === 'following') {\r\n if (controlThis.props.Filter === 'lunchbox') {\r\n STrace.addStep('gallery', 'getCurrentLunchboxPaintingsWithPreviews', 'following lunchbox');\r\n controlThis.storageManager!.getCurrentLunchboxPaintingsWithPreviews(token, \r\n nextStart, nextStart + controlThis.props.FetchCount-1, acceptPins);\r\n } else {\r\n STrace.addStep('gallery', 'getFollowingPaintingsWithPreviews', 'following');\r\n controlThis.storageManager!.getFollowingPaintingsWithPreviews(token, \r\n nextStart, nextStart + controlThis.props.FetchCount-1, controlThis.props.Filter, acceptPins);\r\n }\r\n } else if (controlThis.props.Scope === 'global') {\r\n STrace.addStep('gallery', 'getGlobalPaintingsWithPreviews', 'global');\r\n controlThis.storageManager!.getGlobalPaintingsWithPreviews(token,\r\n nextStart, nextStart + controlThis.props.FetchCount-1, controlThis.props.Filter, acceptPins);\r\n } else if (controlThis.props.Scope === 'others') {\r\n STrace.addStep('gallery', 'getOthersPaintingsWithPreviews', 'others');\r\n controlThis.storageManager!.getOthersPaintingsWithPreviews(token, \r\n nextStart, nextStart + controlThis.props.FetchCount-1, controlThis.props.Filter, acceptPins);\r\n }\r\n controlThis.popWaitingFrame();\r\n });\r\n\r\n }\r\n \r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`gallery, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const onUnFollow = async (): Promise => {\r\n STrace.addStep('gallery', 'deleteUserFollowingAsync-pending', controlThis.props.Filter);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.deleteUserFollowingAsync(controlThis.props.Filter, 'approved');\r\n controlThis.setState({follows:false});\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }\r\n const onFollow = async (): Promise => {\r\n let reqNav = await controlThis.requireSetupAsync(async ()=>{\r\n STrace.addStep('gallery', 'postUserFollowingAsync', controlThis.props.Filter);\r\n controlThis.pushWaitingFrame(controlThis);\r\n await controlThis.storageManager!.postUserFollowingAsync(controlThis.props.Filter);\r\n controlThis.setState({follows:true});\r\n controlThis.popWaitingFrame();\r\n });\r\n\r\n if (reqNav !== undefined) {\r\n controlThis.setState({navigateTo:reqNav});\r\n }\r\n return true;\r\n }\r\n\r\n const pairs = new Array<[PaintingInfo| undefined, PaintingInfo| undefined]>();\r\n let lastPair: [PaintingInfo | undefined, PaintingInfo | undefined] = [undefined, undefined];\r\n for (const pin of this.state.paintingInfos) {\r\n if (lastPair[0] === undefined) {\r\n pairs.push(lastPair);\r\n lastPair[0] = pin;\r\n } else {\r\n lastPair[1] = pin;\r\n lastPair = [undefined, undefined];\r\n }\r\n }\r\n let titleExtra = `${this.props.Scope} ${this.props.Filter}`;\r\n if (this.props.Scope === 'others') {\r\n titleExtra = 'Artist Page';\r\n }\r\n let bookmarkFilterButton = <>;\r\n\r\n if (this.props.ShowBookmarkFilter) {\r\n bookmarkFilterButton = {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let paintingInfos = new Array();\r\n controlThis.setState({showingBookmarked:!controlThis.state.showingBookmarked, nextStart:0, paintingInfos:paintingInfos, atEnd:false});\r\n controlThis.fetchMorePaintings(controlThis.state.authenticated, false, 0, paintingInfos, !controlThis.state.showingBookmarked);\r\n return true;\r\n }}\r\n StartPushedState={true}\r\n Haptic = {this.doButtonHaptic()}\r\n Height={this._app!.GetScaledPxHeight(31)}\r\n Size={'large'}\r\n />\r\n\r\n }\r\n\r\n let headerSection =
\r\n
{this.props.Title}
\r\n {bookmarkFilterButton}\r\n
\r\n\r\n if (this.props.ArtistMode) {\r\n let followButton = <>;\r\n if (this.props.Filter !== this.state.userId) {\r\n if (this.state.follows) {\r\n followButton = Stop Following}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise => {return await onUnFollow()}}\r\n />;\r\n } else { \r\n followButton = Follow}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise => {return await onFollow()}}\r\n />;\r\n }\r\n }\r\n let paintingsDisp = '-';\r\n let offensiveDisp = '-';\r\n let suspiciousDisp = '-';\r\n let challengesDisp = '-';\r\n let rankDisp = '-';\r\n let avgScoreDisp = '-';\r\n let scoreGivenDisp = '-';\r\n let scoreRecievedDisp = '-';\r\n let followersDisp = '-';\r\n let followingDisp = '-';\r\n let mavenDisp = '-';\r\n\r\n if (this.state.artistProfile !== undefined && this.state.artistProfile.artistStats !== undefined) {\r\n paintingsDisp = this.state.artistProfile.artistStats!.totalPaintings.toString();\r\n offensiveDisp = this.state.artistProfile.artistStats!.totalOffend.toString();\r\n suspiciousDisp = this.state.artistProfile.artistStats!.totalSuspect.toString();\r\n challengesDisp = this.state.artistProfile.artistStats!.competitionEntries.toString();\r\n rankDisp = this.state.artistProfile.artistStats!.competitionHighestRank.toString();\r\n let compPoints = this.state.artistProfile.artistStats!.competitionPointsReceived;\r\n let compVotes = this.state.artistProfile.artistStats!.competitionVotesReceived;\r\n if (compVotes > 0) {\r\n avgScoreDisp = (compPoints / compVotes).toFixed(1);\r\n }\r\n scoreGivenDisp = this.state.artistProfile.artistStats!.competitionVotes.toString();\r\n scoreRecievedDisp = compVotes.toString();\r\n followersDisp = this.state.artistProfile.artistStats!.totalFollowers.toString();\r\n followingDisp = this.state.artistProfile.artistStats!.totalFollowing.toString();\r\n mavenDisp = this.state.artistProfile.artistStats!.mavenScore.toFixed(3);\r\n }\r\n\r\n headerSection = \r\n
\r\n
\r\n {this.props.Title}\r\n
\r\n
\r\n {followButton}\r\n
\r\n
\r\n Paintings:\r\n
\r\n
\r\n {paintingsDisp}\r\n
\r\n
\r\n Offensive:\r\n
\r\n
\r\n {offensiveDisp}\r\n
\r\n
\r\n Suspicious:\r\n
\r\n
\r\n {suspiciousDisp}\r\n
\r\n
\r\n Challenges:\r\n
\r\n
\r\n {challengesDisp}\r\n
\r\n
\r\n Best Rank:\r\n
\r\n
\r\n {rankDisp}\r\n
\r\n
\r\n Avg Score:\r\n
\r\n
\r\n {avgScoreDisp}\r\n
\r\n
\r\n Scores Given:\r\n
\r\n
\r\n {scoreGivenDisp}\r\n
\r\n
\r\n Received:\r\n
\r\n
\r\n {scoreRecievedDisp}\r\n
\r\n
\r\n Followers:\r\n
\r\n
\r\n {followersDisp}\r\n
\r\n
\r\n Following:\r\n
\r\n
\r\n {followingDisp}\r\n
\r\n
\r\n Maven Score:\r\n
\r\n
\r\n {mavenDisp}\r\n
\r\n\r\n
\r\n Recent paintings:\r\n
\r\n\r\n
\r\n\r\n \r\n } \r\n\r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {{`Smesshy - ${titleExtra}`}}\r\n CloseNav = {-1}\r\n Body={\r\n
\r\n {headerSection}\r\n \r\n \r\n
\r\n }\r\n />, this.state);\r\n }\r\n}\r\n\r\nexport default GalleryPage;","import React, { Component } from 'react';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\n\r\n\r\nexport interface TermsOfServicePageState extends SmesshyCommonState {\r\n content: string;\r\n}\r\nexport interface TermsOfServicePageProps extends SmesshyCommonProps {\r\n}\r\n\r\nclass TermsOfServicePage extends SmesshyCommon(Component) {\r\n\r\n constructor(props: TermsOfServicePageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n content:'fetching it ...'\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('terms', 'didMound', '');\r\n let controlThis = this;\r\n this.pushWaitingFrame(this);\r\n this.executeAsync(async ()=> {\r\n try {\r\n const resp = await fetch('account/getTermsOfService', {headers: {'Content-Type':'text/html', 'smesshy-api-trace':STrace.getRecent()}});\r\n const content = await (resp.text());\r\n controlThis.setState({content: content});\r\n } catch (reason) {\r\n controlThis._app!.reportException('get termsOfService', 'ex', '', reason);\r\n }\r\n controlThis.popWaitingFrame();\r\n\r\n });\r\n\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n return this.renderFramework(\r\n Smesshy - Terms Of Service}\r\n CloseNav = {-1}\r\n Body={\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n />, this.state);\r\n }\r\n}\r\n\r\nexport default TermsOfServicePage;","import React, { Component } from 'react';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\n\r\n\r\nexport interface PrivacyPageState extends SmesshyCommonState {\r\n content: string;\r\n}\r\nexport interface PrivacyPageProps extends SmesshyCommonProps {\r\n}\r\n\r\nclass PrivacyPage extends SmesshyCommon(Component) {\r\n\r\n constructor(props: PrivacyPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n content:'fetching it ...'\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.pushWaitingFrame(this);\r\n STrace.addStep('privacy', 'didMound', '');\r\n let controlThis = this;\r\n this.executeAsync(async ()=> {\r\n try {\r\n const resp = await fetch('account/getPrivacyPolicy', {headers: {'Content-Type':'text/html', 'smesshy-api-trace':STrace.getRecent()}});\r\n const content = await (resp.text());\r\n controlThis.setState({content: content});\r\n } catch (reason) {\r\n controlThis._app!.reportException('get Privacy', 'ex', '', reason);\r\n }\r\n controlThis.popWaitingFrame();\r\n });\r\n\r\n }\r\n\r\n render() {\r\n let controlThis = this;\r\n\r\n return this.renderFramework(\r\n Smesshy - Privacy Policy}\r\n CloseNav = {-1}\r\n Body={\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n />, this.state);\r\n }\r\n}\r\n\r\nexport default PrivacyPage;","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport {CloseButton } from './iconButton';\r\nimport { Footer } from '../smesshy';\r\nimport { Profile, User } from 'oidc-client';\r\nimport Smessage from './smessage';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\nimport { ArtistProfile, ChallengeResult, ChallengeState, PaintingInfo, PaintingLocate, VoteRoundStatus } from '../storageManager';\r\nimport PaintingFrame from './paintingFrame';\r\nimport { SmesshyMainButton, SmesshySubButton } from './smesshyButton';\r\nimport CountDownText from './countDownText';\r\nimport { FollowingTile } from './followingPage';\r\nimport { createSearchParams } from 'react-router-dom';\r\nimport ChallengeTile from './challengeTile';\r\nimport Smesshy from '../smesshy';\r\n\r\n\r\nexport interface VotePageState extends SmesshyCommonState {\r\n challengeState: ChallengeState;\r\n voteStatus: VoteRoundStatus | undefined;\r\n voteInfos: Array | undefined;\r\n expired: boolean;\r\n currentSelections: Map;\r\n challengeTitle: string;\r\n}\r\nexport interface VotePageProps extends SmesshyCommonProps {\r\n ChallengeId: string | undefined;\r\n}\r\n\r\nclass VotePage extends SmesshyCommon(Component) {\r\n\r\n constructor(props: VotePageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n challengeState: {\r\n challengeId: -1,\r\n state: 'none',\r\n prizePool: 0,\r\n title: '',\r\n voteRoundCurrent: 0,\r\n voteRoundsTotal: 0,\r\n timeLeft: 100*60*60,\r\n roundTimeLeft: 100*60*60,\r\n stampAllowed: false,\r\n entries: 0,\r\n rules:{stamps:false, timeLimit:0, styleGuide:'', colorRestrictions:[], startingWith:''}\r\n },\r\n voteStatus: undefined,\r\n expired: false,\r\n voteInfos: undefined,\r\n currentSelections: new Map(),\r\n challengeTitle: 'Loading...',\r\n };\r\n }\r\n\r\n lastAuthCheck: boolean | undefined = undefined;\r\n lastChallengeCheck: ChallengeState | undefined = undefined;\r\n\r\n componentDidMount() {\r\n STrace.addStep('vote', 'didMound', '');\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('vote', 'populateAuth', authenticated.toString());\r\n\r\n this.lastAuthCheck = authenticated;\r\n STrace.addStep('vote', 'getChallengeStateAsync', '');\r\n this.lastChallengeCheck = await this.storageManager!.getChallengeStateAsync(this.props.ChallengeId, true);\r\n if (this.lastChallengeCheck !== undefined) {\r\n this.setState({challengeState:this.lastChallengeCheck});\r\n }\r\n await this.checkFetchChallengeVotes();\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n\r\n }\r\n\r\n async checkFetchChallengeVotes() : Promise {\r\n let controlThis = this;\r\n let challengeTitle = this.state.challengeState.title;\r\n\r\n if (this.lastAuthCheck === undefined || this.lastChallengeCheck === undefined) {\r\n \r\n return false; // not init yet\r\n }\r\n this.pushWaitingFrame(this);\r\n if (this.lastAuthCheck && (this.lastChallengeCheck.state === 'vote' || this.lastChallengeCheck.state === 'finished')) {\r\n STrace.addStep('vote', 'getChallengeUserVoteStatusAsync', 'check');\r\n const voteStatus = (await this.storageManager!.getChallengeUserVoteStatusAsync(this.props.ChallengeId))!;\r\n STrace.addStep('vote', 'got status', voteStatus.userStatus);\r\n this.setState({voteStatus: voteStatus});\r\n if (voteStatus.userStatus === 'allowed') {\r\n STrace.addStep('vote', 'getChallengeVoteImagesAsync', '');\r\n let voteImages = await this.storageManager!.getChallengeVoteImagesAsync(this.props.ChallengeId);\r\n if (voteImages?.length !== 0) {\r\n STrace.addStep('vote', 'getGlobalPaintingsInfosAsync', '');\r\n const voteInfs = await this.storageManager!.getGlobalPaintingsInfosAsync(voteImages!);\r\n if (voteInfs !== undefined) {\r\n const token = (await controlThis.getAccessToken())!;\r\n STrace.addStep('vote', 'getPaintingPreviews', '');\r\n this.pushWaitingFrame(this);\r\n this.storageManager!.getPaintingPreviews(token, voteInfs, (pins=>{\r\n if (pins.length > 0) {\r\n controlThis.setState({ voteInfos: pins, expired: false, currentSelections: new Map()});\r\n }\r\n controlThis.popWaitingFrame();\r\n }))\r\n }\r\n }\r\n } \r\n }\r\n this.popWaitingFrame();\r\n return true;\r\n }\r\n\r\n async evaluateAd(): Promise {\r\n STrace.addStep('vote', 'putChallengeUserVoteStatusAsync', '');\r\n this.pushWaitingFrame(this);\r\n await this.storageManager!.putChallengeUserVoteStatusAsync(this.props.ChallengeId);\r\n await this.checkFetchChallengeVotes();\r\n this.popWaitingFrame();\r\n return true;\r\n }\r\n\r\n\r\n async sendVote() : Promise{\r\n const votes = new Array();\r\n let sel = this.state.currentSelections;\r\n votes.push(sel.get(1)!);\r\n if (sel.size > 1) {\r\n votes.push(sel.get(2)!);\r\n }\r\n if (sel.size > 2) {\r\n votes.push(sel.get(3)!);\r\n }\r\n if (sel.size > 3) {\r\n votes.push(sel.get(4)!);\r\n }\r\n STrace.addStep('vote', 'postVoteScoresAsync', '');\r\n this.pushWaitingFrame(this);\r\n let result = await this.storageManager!.postVoteScoresAsync(this.props.ChallengeId, votes);\r\n if (result === 'expired') {\r\n this.setState({expired: true, voteInfos: undefined, askQuestion: undefined});\r\n\r\n } else if (result === 'registered') {\r\n STrace.addStep('vote', 'getChallengeUserVoteStatusAsync', 'voted');\r\n const voteStatus = (await this.storageManager!.getChallengeUserVoteStatusAsync(this.props.ChallengeId))!;\r\n STrace.addStep('vote', 'got status post vote', voteStatus === undefined ? 'undefined' : voteStatus.userStatus);\r\n \r\n this.setState({overlayTool: this.smesshyDone(100), voteInfos: undefined, voteStatus: voteStatus, askQuestion: undefined});\r\n\r\n }\r\n this.popWaitingFrame();\r\n return true;\r\n \r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`vote, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const getVoteSelection = (option: number): number | undefined => {\r\n if (controlThis.state.currentSelections.has(option)) {\r\n return controlThis.state.currentSelections.get(option);\r\n }\r\n };\r\n const voteSelected = (option: number, idx: number): boolean => {\r\n let sel = controlThis.state.currentSelections;\r\n // push same number again or a new number?\r\n if (sel.has(option) && sel.get(option) === idx) {\r\n sel.delete(option);\r\n } else {\r\n sel.set(option, idx);\r\n }\r\n // other option with this number? pop up\r\n sel.forEach((v, k) => {\r\n if (k !== option) {\r\n if (v === idx) {\r\n sel.delete(k);\r\n }\r\n }\r\n });\r\n \r\n\r\n let canVote = sel.size === controlThis.state.voteInfos?.length;\r\n controlThis.setState({currentSelections: sel, askQuestion: canVote === false? undefined : \r\n {\r\n Top: 164,\r\n Title: Send Your Vote,\r\n Prompts: [Happy with those choices?],\r\n Options: [{Key:'vote', Option:Send My Vote!, OnOption: async ():Promise=>{return await controlThis.sendVote()}}],\r\n OnCancel:()=>{\r\n STrace.addStep('vote', 'send reject', '');\r\n controlThis.setState({askQuestion:undefined});}\r\n }});\r\n return true;\r\n };\r\n\r\n let viewChoices = <>;\r\n var titleLine = <>;\r\n \r\n if (this.state.showWaitSpin) {\r\n titleLine = Checking...;\r\n }\r\n else if (this.state.expired) {\r\n\r\n titleLine = Dang, you waited too long, someone else got that vote;\r\n\r\n viewChoices = \r\n Push this giant button to get a fresh set\r\n }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n STrace.addStep('vote', 'get ad', '');\r\n return await controlThis.checkFetchChallengeVotes()\r\n }}\r\n />\r\n\r\n\r\n } else if (this.state.challengeState.state === 'vote' || this.state.challengeState.state === 'finished') {\r\n if (this.state.voteInfos !== undefined && this.state.voteInfos!.length > 0) {\r\n\r\n titleLine =
\r\n {\r\n if (this.state.challengeState.challengeId === cId) {\r\n return this.state.challengeState;\r\n } else {\r\n return await Smesshy.getSpecificChallengeStateAsync(controlThis, cId, true);\r\n }\r\n }}\r\n Options={{ShowResults: false, ShowTitle: true, ShowRules: true, ShowPrize: true, ShowEntrants:true, Prefix:'Vote for:'}}\r\n />\r\n\r\n Award points to each painting:\r\n
;\r\n\r\n let vote1 = {return voteSelected(1, idx)}}\r\n />;\r\n \r\n let vote2 = <>;\r\n if (this.state.voteInfos!.length > 1) {\r\n vote2 = {return voteSelected(2, idx)}}\r\n />;\r\n }\r\n \r\n let vote3 = <>;\r\n if (this.state.voteInfos!.length > 2) {\r\n vote3 = {return voteSelected(3, idx)}}\r\n />\r\n }\r\n \r\n let vote4 = <>;\r\n if (this.state.voteInfos!.length > 3) {\r\n vote4 = {return voteSelected(4, idx)}}\r\n />\r\n }\r\n \r\n viewChoices =
\r\n
\r\n
\r\n {vote1}\r\n
\r\n
\r\n {vote2}\r\n
\r\n \r\n
\r\n
\r\n
\r\n {vote3}\r\n
\r\n
\r\n {vote4}\r\n
\r\n
\r\n
\r\n } else {\r\n\r\n if (this.state.voteStatus !== undefined){\r\n let whatsNext = The next round is in:\r\n\r\n if (this.state.voteStatus.voteRoundCurrent + 1 === this.state.voteStatus.voteRoundsTotal) {\r\n whatsNext = The vote ends in:;\r\n } \r\n if (this.state.voteStatus.userStatus === 'locked' || this.state.voteStatus.userStatus === 'allowed') {\r\n titleLine =
\r\n You've already voted this round.\r\n
\r\n {whatsNext}\r\n {controlThis.setState({expired:true});}}/>\r\n
\r\n Wait around I guess, or...\r\n
\r\n\r\n viewChoices = \r\n Push this GIANT button to:\r\n
    \r\n
  • Evaluate an advertisement
  • \r\n
  • Get a fresh set of votes right now.
  • \r\n
\r\n
}\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async ()=>{return await controlThis.evaluateAd();}}\r\n />\r\n }\r\n else {\r\n titleLine =
\r\n You've used all of this round's allowed votes.\r\n
\r\n {whatsNext}\r\n {controlThis.setState({expired:true});}}/>\r\n
\r\n Come back later.\r\n
\r\n\r\n\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n return (this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {Smesshy - Challenge}\r\n CloseNav = '/'\r\n Body={\r\n
\r\n
\r\n
\r\n {titleLine}\r\n
\r\n
\r\n {viewChoices}\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n }\r\n />, this.state));\r\n }\r\n}\r\n\r\nexport default VotePage;","import React, { Component } from 'react';\r\nimport { App } from '../App'\r\nimport FingerTip from './smash/fingertip';\r\nimport Toggle from 'react-toggle'\r\nimport { Link, createSearchParams } from 'react-router-dom';\r\nimport Smessage from './smessage';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport { ArtistProfile, PaintingInfo, SmesshyUserPreferences } from '../storageManager';\r\nimport { UserPreferences } from 'typescript';\r\nimport { SmesshyMainButton, SmesshySubButton } from './smesshyButton';\r\nimport GamePage from './gamePage';\r\nimport Env from '../envInst';\r\nimport { IconSelect, IconSelected, ScaledIcon } from './iconButton';\r\nimport SettingsPage from './settingsPage';\r\n\r\nexport interface SetupPageState extends SmesshyCommonState {\r\n\r\n showAuth: boolean;\r\n accountName: string;\r\n notificationsSetup: boolean;\r\n notificationsPossible: boolean;\r\n cookiesSetup: boolean;\r\n notifications: Map;\r\n installSignaled: boolean;\r\n calibrated: boolean;\r\n\r\n}\r\nexport interface SetupPageProps extends SmesshyCommonProps {\r\n InApp: boolean;\r\n}\r\n\r\nclass SetupPage extends SmesshyCommon(Component) {\r\n\r\n listRef : React.RefObject | null = null;\r\n\r\n constructor(props: SetupPageProps) {\r\n super(props);\r\n try {\r\n this.initCommon(props.AppObject);\r\n\r\n this.listRef = React.createRef();\r\n\r\n this.state = {\r\n showAuth: false,\r\n authenticated: false,\r\n accountName: 'new user',\r\n installSignaled: false,\r\n showWaitSpin: false,\r\n cookiesSetup: false,\r\n notificationsSetup: false,\r\n notificationsPossible: false,\r\n notifications: new Map(),\r\n calibrated: false,\r\n };\r\n } catch (e: any) {\r\n props.AppObject.reportException(`Setup, constructor`, 'ex', '', e)\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('setup', 'didMound', '');\r\n\r\n let env = Env;\r\n const controlThis = this;\r\n\r\n if (env.inPWA && env.setupComplete() === true) {\r\n this.setState({navigateTo: {To:{pathname:'/'}}})\r\n }\r\n\r\n env.afterInstall = async () => {\r\n controlThis.setState({installSignaled: true});\r\n }\r\n\r\n let cookiesSetup = env.setupCookies();\r\n let notificationsPossible = false;\r\n let notificationsSetup = env.setupNotifications();\r\n if (notificationsSetup === false) {\r\n notificationsPossible = this._app!.notificationsPossible();\r\n }\r\n\r\n const calibratedTo = this.GetAppState('calibrationVersion', false) as number;\r\n const calibrated = !(Number.isNaN(calibratedTo) || calibratedTo < App.calibrationVersion) \r\n\r\n this.setState({cookiesSetup: cookiesSetup, notificationsSetup: notificationsSetup, notificationsPossible: notificationsPossible, calibrated: calibrated}); \r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('setup', 'populateAuth', authenticated.toString());\r\n try {\r\n let accountName = 'whodis? new phone';\r\n let notifications = new Map();\r\n let notificationsSetup = this.state.notificationsSetup;\r\n if (authenticated) {\r\n const user = await this.getUser();\r\n if (user !== null && user !== undefined && user.profile !== null && user.profile !== undefined ) {\r\n \r\n accountName = user.profile.preferred_username!;\r\n STrace.addStep('setup', 'getUserArtistProfileAsync', '');\r\n const prof = await this.storageManager!.getUserArtistProfileAsync();\r\n if (prof !== null && prof !== undefined) {\r\n if (prof.notifications !== undefined) {\r\n notifications = SettingsPage.stringToNotificationMap(prof.notifications);\r\n }\r\n }\r\n\r\n if (this.state.notificationsPossible === true) {\r\n notificationsSetup = (await this._app!.getNotificationSubscription()) !== null;\r\n }\r\n }\r\n }\r\n this.setState({showAuth:true, authenticated: authenticated, accountName: accountName, notifications: notifications});\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`Setup, check authentication`, 'ex', '', e)\r\n }\r\n\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`setup, render`, 'ex', '', e)\r\n return
?!?!
;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n let env = Env;\r\n\r\n\r\n const termsAndPrivacy = <>\r\n Terms}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({ navigateTo: {To:{pathname:'/termsOfServiceApp'}}});\r\n return true;\r\n }}\r\n />\r\n Privacy}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({ navigateTo: {To:{pathname:'/privPolApp'}}});\r\n return true;\r\n }}\r\n />\r\n ;\r\n\r\n const cookieAsk =
\r\n
{`Smesshy uses a bare minimum set of browser cookies to help us remember that you are you.`}
\r\n
{`It REALLY can't work without them.`}
\r\n I Accept these minimal cookies}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n env.finishCookiesSetup();\r\n controlThis.setState({ cookiesSetup: true});\r\n return true;\r\n }}\r\n />\r\n
;\r\n\r\n const partingWishes =
\r\n
{`That's it, done. Some thing you may want to do next:`}
\r\n
  • {`Go to the settings page and review notification details and other choices.`}
  • \r\n
  • {`Paint a self portrait, then go to the settings page and make it your avatar.`}
  • \r\n
  • {`Check out the current competition, maybe enter it or vote on it!`}
  • \r\n
  • {`Go to your feed and see what's good. Find and follow some pals`}
  • \r\n
  • {`Paint a masterpiece and hide it in a pal's lunchbox. (direct messages)`}
  • \r\n Take me to Smesshy}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n env.finishSetup();\r\n controlThis.setState({navigateTo: {To:{pathname:'/'}}});\r\n return true;\r\n }}\r\n />\r\n
    ;\r\n\r\n const iconHeight = this._app!.GetScaledPxHeight(31)\r\n let welcome = <>;\r\n let finishedSteps = new Array();\r\n let currentStep = 'none';\r\n let currentContent = <>;\r\n let remainingSteps = new Array();\r\n \r\n remainingSteps.push('Install Smessy as a Web App');\r\n remainingSteps.push('Continue from the Web App');\r\n remainingSteps.push('Accept the bare minimum cookies');\r\n remainingSteps.push('Make your profile');\r\n remainingSteps.push('How do you feel about notifications?');\r\n remainingSteps.push('Measure your fingertip and touch screen');\r\n\r\n if (!this.props.InApp) {\r\n welcome =
    {`Hello there, we'll step you through this:`}
    ;\r\n currentStep = remainingSteps.shift()!;\r\n \r\n let explain1 ='';\r\n let explain2 ='';\r\n let explain3 ='';\r\n let explain4 ='';\r\n let promptButton = <>;\r\n let helpImage1 = <>;\r\n let helpImage2 = <>;\r\n \r\n // not inApp means we might need to install the app and certainly need to switch over to it\r\n // env.installed = 'unknown';\r\n // env.browserName = 'Other';\r\n // env.deferredInstallPrompt = undefined;\r\n // env.deviceName = 'Other';\r\n\r\n let installed = env.installed;\r\n let dip = env.deferredInstallPrompt;\r\n\r\n if (installed === 'unknown' || installed === 'false') {\r\n if (dip !== undefined) {\r\n // got a prompt, so we can install\r\n promptButton = OK, let's do that now!}\r\n Haptic={this.doButtonHaptic()} \r\n StartPushedState={false}\r\n ExtraStyleClass=''\r\n OnClick={async ()=>{\r\n try {\r\n const result = await (dip as any).prompt();\r\n } catch (e: any){\r\n console.error(e);\r\n controlThis.setState({doRefresh:true});\r\n }\r\n\r\n }}/>;\r\n\r\n } else {\r\n // don't know and no prompt was sent\r\n // why don't we know? maybe wrong browser?\r\n if (env.deviceName === 'Other') {\r\n // assume desktop, only edge or chrome can install\r\n if (env.browserName === 'Chrome') {\r\n explain1 = `Using the Chrome browser on a desktop/laptop computer.`;\r\n explain2 = `If you already installed Smesshy as a browser app, you will see the 'switch' icon in the Chrome address bar.`;\r\n helpImage1 = Chrome switch icon;\r\n explain3 = `If not, you need to install Smesshy by clicking on the 'install' icon in the Chrome address bar.`;\r\n helpImage2 = Chrome install icon;\r\n explain4 = `Either way, click one of those icons to get started.`;\r\n } else if (env.browserName === 'Edge') {\r\n explain1 = `Using the Edge browser on a desktop/laptop computer.`;\r\n explain2 = `If you already installed Smesshy as a browser app, you will see the 'switch' icon in the Edge address bar.`;\r\n helpImage1 = Edge switch icon;\r\n explain3 = `If not, you need to install Smesshy by clicking on the 'install' icon in the Edge address bar.`;\r\n helpImage2 = Edge install icon;\r\n explain4 = `Either way, click one of those icons to get started.`;\r\n } else {\r\n explain1 = `It seem that you are using a desktop/laptop browser.`;\r\n explain2 = `Only the Chrome or Edge browsers can install Smesshy as an app onto desktops. Please try one of those.`;\r\n }\r\n\r\n } else if (env.deviceName === 'iOS') {\r\n if (env.browserName !== 'Safari') {\r\n explain1 = `On iOs, you can only install Smesshy as a browser app using the Safari browser.`;\r\n explain2 = `Run this thing, and point it at https://smesshy.com`;\r\n helpImage1 = Safari on iOs icon;\r\n explain3 = `See you in a minute from Safari...`;\r\n\r\n } else {\r\n explain1 = `On iOS, you can install Smesshy as a browser app.`;\r\n explain2 = `Tap the Action button (often called the Share button, often at the bottom of the screen.).`;\r\n helpImage1 = Safari action icon;\r\n explain3 = `Scroll down the share sheet past the rows of contacts and apps, then select 'Add to Home Screen'`;\r\n helpImage2 = Safari add to home icon;\r\n explain4 = `Open Smesshy from that fancy new Home Screen App icon.`;\r\n }\r\n } else if (env.deviceName === 'Android') {\r\n if (env.browserName === 'Chrome') {\r\n explain1 = `While using Chrome on Android, you can install Smesshy as a browser app.`;\r\n explain2 = `Tap the three dots in the upper right corner.`;\r\n helpImage1 = Chrome dots icon;\r\n explain3 = `Select 'Install app'`;\r\n helpImage2 = Chrome install icon;\r\n explain4 = `Open Smesshy from that fancy new Home Screen App icon.`;\r\n } else if (env.browserName === 'Firefox') {\r\n explain1 = `While using Firefox on Android, you can install Smesshy as a browser app.`;\r\n explain2 = `Tap the three dots in the upper right corner.`;\r\n helpImage1 = Firfox dots icon;\r\n explain3 = `Select either 'Add to Home screen' or 'Install'`;\r\n helpImage2 = Firfox install icon;\r\n explain4 = `Open Smesshy from that fancy new Home Screen App icon.`;\r\n\r\n } else {\r\n explain1 = `On Android, you can install Smesshy as a browser app.`;\r\n explain2 = `But ... Try using the Chrome browser.`;\r\n }\r\n }\r\n }\r\n\r\n } else if (installed === 'true') {\r\n // just need to swap to it, didn't happen automatically from OS\r\n explain1 = `Good news! Smesshy is already installed as a browser app.`;\r\n explain2 = `So, go find the Smesshy app icon on your home screen and start from there.`;\r\n explain3 = `See you on the other side ...`;\r\n }\r\n currentContent =
    \r\n
    \r\n {explain1}\r\n
    \r\n
    \r\n {explain2}\r\n
    \r\n
    \r\n {promptButton}\r\n
    \r\n
    \r\n {helpImage1}\r\n
    \r\n
    \r\n {explain3}\r\n
    \r\n
    \r\n {helpImage2}\r\n
    \r\n
    \r\n {explain4}\r\n
    \r\n\r\n
    \r\n } else {\r\n welcome =
    {`Hello there, let's continue setting up Smeshhy!`}
    ;\r\n finishedSteps.push(remainingSteps.shift()!);\r\n finishedSteps.push(remainingSteps.shift()!);\r\n currentStep = remainingSteps.shift()!;\r\n\r\n // inApp means app is installed and running, so take over setup with account/auth/notifications/calibration\r\n if (this.state.showAuth === false) {\r\n currentContent =
    {`Looking for you ...`}
    \r\n } else {\r\n if (this.state.authenticated === false) {\r\n if (this.state.cookiesSetup === false) {\r\n currentContent = cookieAsk;\r\n } else {\r\n finishedSteps.push(currentStep);\r\n currentStep = remainingSteps.shift()!;\r\n \r\n currentContent =
    \r\n \r\n Push this button to:\r\n
  • Create a new Smesshy account*
  • \r\n
  • Sign-in with an existing one.
  • \r\n
    \r\n * We get it, you're like 'sigh... another App specific account, yuck.' But trust us, this one is worth it because it's ... you know ... Smesshy!\r\n
    }\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n try {\r\n controlThis.setState({ navigateTo: controlThis.getAuthenticationNavigate('/setup', 'login')});\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`Setup,sign in`, 'ex', '', e)\r\n }\r\n return true;\r\n }}\r\n />\r\n
    \r\n }\r\n } else {\r\n welcome =
    {`Hello there ${this.state.accountName}, let's continue setting up Smesshy!`}
    \r\n\r\n if (this.state.cookiesSetup === false) {\r\n currentContent = cookieAsk;\r\n } else {\r\n finishedSteps.push(currentStep);\r\n currentStep = remainingSteps.shift()!;\r\n finishedSteps.push(currentStep);\r\n currentStep = remainingSteps.shift()!;\r\n\r\n if (this.state.notificationsSetup === false) {\r\n\r\n let notiAsk =
    \r\n
    {`Shall we try to turn on notifications?`}
    \r\n
    \r\n Sounds Good!}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n Disabled={this.state.notificationsPossible === false}\r\n OnPressFinish={async (): Promise=>{\r\n let allowed = await controlThis._app!.getNotificationPermission(true);\r\n\r\n if (allowed) {\r\n controlThis.pushWaitingFrame(controlThis);\r\n const sub = await controlThis._app!.getNotificationSubscription();\r\n if (sub === null) {\r\n STrace.addStep('setup', 'createNotificationRegistration', '');\r\n if (await controlThis._app!.createNotificationRegistration() === true) {\r\n controlThis.state.notifications.set('any', true);\r\n STrace.addStep('setup', 'putUserPreferencesAsync', 'any true');\r\n await controlThis.storageManager!.putUserPreferencesAsync({notifications: SettingsPage.notificationMapToString(controlThis.state.notifications)});\r\n }\r\n } else {\r\n controlThis.state.notifications.set('any', true);\r\n STrace.addStep('setup', 'putUserPreferencesAsync', 'any true');\r\n await this.storageManager!.putUserPreferencesAsync({notifications: SettingsPage.notificationMapToString(controlThis.state.notifications)});\r\n }\r\n controlThis.popWaitingFrame();\r\n\r\n }\r\n env.finishNotificationsSetup();\r\n controlThis.setState({ notificationsSetup: true});\r\n return true;\r\n }}\r\n />\r\n No Thanks}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async ()=>{\r\n controlThis.pushWaitingFrame(controlThis);\r\n controlThis.state.notifications.set('any', false);\r\n STrace.addStep('setup', 'putUserPreferencesAsync', 'any false');\r\n await this.storageManager!.putUserPreferencesAsync({notifications: SettingsPage.notificationMapToString(controlThis.state.notifications)});\r\n\r\n env.finishNotificationsSetup();\r\n controlThis.setState({ notificationsSetup: true});\r\n controlThis.popWaitingFrame();\r\n return true;\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n let iOSNote = <>;\r\n if (env.getDeviceName() === 'iOS') {\r\n if (this.state.notificationsPossible === false) {\r\n iOSNote = {`Notifications look impossible. If you are using iOS 16.4 or higher, please report this as a problem`}\r\n } else {\r\n iOSNote = {`On iOS you can get notifications if you turn them on here but you might also need to turn them on in the system settings.\r\n Go to Settings > Smesshy > Notifications and turn on 'Allow Notifications'`} \r\n }\r\n }\r\n currentContent =
    \r\n
    {`You can get notifications from Smesshy when`}
    \r\n
    \r\n
  • {`Someone favors your painting`}
  • \r\n
  • {`A friend sends you a picture`}
  • \r\n
  • {`A new challenges starts`}
  • \r\n
  • {`etc.`}
  • \r\n
    \r\n {notiAsk}\r\n {iOSNote}\r\n
    ;\r\n } else {\r\n finishedSteps.push(currentStep);\r\n currentStep = remainingSteps.shift()!;\r\n if (this.state.calibrated === false) {\r\n currentContent =
    \r\n Calibrate my fingertip}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({navigateTo: {To:{pathname:'/calibrate'}}});\r\n return true;\r\n }}\r\n />\r\n I will do this later.}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.setState({calibrated: true});\r\n return true;\r\n }}\r\n />\r\n\r\n
    ;\r\n\r\n } else {\r\n finishedSteps.push(currentStep);\r\n currentStep = remainingSteps.shift()!;\r\n currentContent = partingWishes;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) } : undefined}\r\n Title = {Smesshy - Setup}\r\n CloseNav = {env.inPWA ? undefined : -1}\r\n Body={\r\n
    \r\n {welcome}\r\n {finishedSteps.map((step, index) => {\r\n return
    {ScaledIcon(IconSelected(undefined), iconHeight)}{step}
    ;\r\n })\r\n }\r\n
    \r\n
    {ScaledIcon(IconSelect(undefined), iconHeight)}{currentStep}
    \r\n {currentContent}\r\n
    \r\n {remainingSteps.map((step, index) => {\r\n return
    {ScaledIcon(IconSelect(undefined), iconHeight)}{step}
    ;\r\n })\r\n }\r\n
    \r\n {termsAndPrivacy}\r\n
    \r\n \r\n
    \r\n }\r\n />, this.state\r\n );\r\n }\r\n}\r\n\r\nexport default SetupPage;","import React, { Children, Component } from 'react';\r\nimport { App } from '../App'\r\nimport {CloseButton } from './iconButton';\r\nimport { Footer } from '../smesshy';\r\nimport { Profile, User } from 'oidc-client';\r\nimport Smessage from './smessage';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport GamePage from './gamePage';\r\nimport { ArtistProfile, ChallengeResult, ChallengeState, PaintingInfo, PaintingLocate, VoteRoundStatus } from '../storageManager';\r\nimport PaintingFrame from './paintingFrame';\r\nimport { SmesshyMainButton, SmesshySubButton } from './smesshyButton';\r\nimport CountDownText from './countDownText';\r\nimport { FollowingTile } from './followingPage';\r\nimport { createSearchParams } from 'react-router-dom';\r\nimport ChallengeTile from './challengeTile';\r\nimport Smesshy from '../smesshy';\r\n\r\n\r\nexport interface ResultPageState extends SmesshyCommonState {\r\n challengeState: ChallengeState;\r\n challengeStateNext: ChallengeState | undefined;\r\n challengeStatePrev: ChallengeState | undefined;\r\n resultInfos: Array | undefined;\r\n luckyVoterProfile: ArtistProfile | undefined;\r\n challengeTitle: string;\r\n}\r\nexport interface ResultPageProps extends SmesshyCommonProps {\r\n ChallengeId: string | undefined;\r\n}\r\n\r\nclass ResultPage extends SmesshyCommon(Component) {\r\n\r\n constructor(props: ResultPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n challengeState: {\r\n challengeId: -1,\r\n state: 'none',\r\n prizePool: 0,\r\n title: '',\r\n voteRoundCurrent: 0,\r\n voteRoundsTotal: 0,\r\n timeLeft: 100*60*60,\r\n roundTimeLeft: 100*60*60,\r\n stampAllowed: false,\r\n entries: 0,\r\n rules:{stamps:false, timeLimit:0, styleGuide:'', colorRestrictions:[], startingWith:''}\r\n },\r\n challengeStateNext: undefined,\r\n challengeStatePrev: undefined,\r\n resultInfos: undefined,\r\n luckyVoterProfile: undefined,\r\n challengeTitle: 'Why are the internets slow?',\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n STrace.addStep('result', 'didMound', '');\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('result', 'populateAuth', authenticated.toString());\r\n\r\n await this.moveToResults(this.props.ChallengeId!);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\r\n\r\n }\r\n\r\n async moveToResults(challengeId: string) {\r\n\r\n STrace.addStep('result', 'getChallengeStateAsync', challengeId);\r\n let requestedChallengeState = await this.storageManager!.getChallengeStateAsync(challengeId, true);\r\n let prevChallengeState: ChallengeState | undefined = undefined;\r\n let nextChallengeState: ChallengeState | undefined = undefined;\r\n let challengeTitle = 'Why are the internets slow?';\r\n let fetchedResultInfos : Array | undefined = undefined;\r\n let fetchedLuckyVoterProfile: ArtistProfile | undefined = undefined;\r\n\r\n if (requestedChallengeState === undefined) {\r\n }\r\n else {\r\n\r\n let chId = requestedChallengeState!.challengeId;\r\n let chIdNext = chId + 1;\r\n let chIdPrev = chId - 1;\r\n \r\n if (requestedChallengeState.state !== 'finished'){\r\n chIdNext = -1;\r\n chId = chIdPrev;\r\n requestedChallengeState = undefined;\r\n chIdPrev = chId - 1;\r\n }\r\n if (requestedChallengeState === undefined) {\r\n STrace.addStep('result', 'getChallengeStateAsync', chId.toString());\r\n requestedChallengeState = await this.storageManager!.getChallengeStateAsync(chId.toString(), true);\r\n }\r\n if (chIdNext >= 8) {\r\n STrace.addStep('result', 'getChallengeStateAsync', chIdNext.toString());\r\n nextChallengeState = await this.storageManager!.getChallengeStateAsync(chIdNext.toString(), true);\r\n }\r\n if (chIdPrev >= 8) {\r\n STrace.addStep('result', 'getChallengeStateAsync', chIdPrev.toString());\r\n prevChallengeState = await this.storageManager!.getChallengeStateAsync(chIdPrev.toString(), true);\r\n }\r\n \r\n }\r\n\r\n if (requestedChallengeState !== undefined) {\r\n challengeTitle = requestedChallengeState.title;\r\n STrace.addStep('result', 'getChallengeResultAsync', 'last');\r\n let lastResults = await this.storageManager!.getChallengeResultAsync(requestedChallengeState.challengeId.toString()); \r\n if (lastResults !== undefined && lastResults !== null) {\r\n this.setState({challengeTitle: lastResults.title});\r\n if (lastResults.place1 !== undefined && lastResults.place1 !== null) {\r\n // get the artist profile for the lucky voter, if there is one\r\n if (lastResults.voterSelected !== undefined && lastResults.voterSelected !== null) {\r\n STrace.addStep('result', 'getArtistProfilesAsync', lastResults.voterSelected);\r\n await this.storageManager!.getArtistProfilesAsync([lastResults.voterSelected], 'basic', (profiles: Array) => {\r\n if (profiles.length > 0) {\r\n fetchedLuckyVoterProfile = profiles[0];\r\n this.setState({luckyVoterProfile: fetchedLuckyVoterProfile});\r\n }\r\n });\r\n }\r\n \r\n const resultImages = new Array();\r\n resultImages.push(lastResults.place1);\r\n if (lastResults.place2 !== undefined && lastResults.place2 !== null) {\r\n resultImages.push(lastResults.place2);\r\n }\r\n if (lastResults.place3 !== undefined && lastResults.place3 !== null) {\r\n resultImages.push(lastResults.place3);\r\n } \r\n STrace.addStep('result', 'getGlobalPaintingsInfosAsync', '');\r\n const resultInfos = await this.storageManager!.getGlobalPaintingsInfosAsync(resultImages!);\r\n if (resultInfos !== undefined) {\r\n let token = (await this.getAccessToken())!;\r\n if (token === undefined) {\r\n token = 'none'\r\n } \r\n STrace.addStep('result', 'getPaintingPreviews', '');\r\n let controlThis = this; \r\n this.storageManager!.getPaintingPreviews(token, resultInfos, (pins=>{\r\n if (pins.length > 0) {\r\n fetchedResultInfos = pins;\r\n controlThis.setState({ resultInfos: pins});\r\n }\r\n }))\r\n }\r\n }\r\n }\r\n }\r\n this.setState({ resultInfos: fetchedResultInfos, challengeTitle: challengeTitle, luckyVoterProfile: fetchedLuckyVoterProfile, challengeState: requestedChallengeState!, challengeStateNext: nextChallengeState, challengeStatePrev: prevChallengeState});\r\n }\r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`vote, render`, 'ex', '', e)\r\n return
    ?!?!
    ;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const onLuckyNavigate = async (): Promise => {\r\n const otherId = controlThis.state.luckyVoterProfile!.artistId!;\r\n STrace.addStep('result', 'lucky nav', otherId);\r\n const otherName = controlThis.state.luckyVoterProfile!.artistName!;\r\n const params = createSearchParams({title: otherName, scope: 'others', filter:otherId});\r\n controlThis.setState({navigateTo: {To:`/other-gallery?${params.toString()}`}});\r\n return true;\r\n }\r\n\r\n let viewChoices = <>;\r\n var titleLine = <>;\r\n\r\n let prevButton = <>;\r\n let nextButton = <>;\r\n \r\n if (this.state.showWaitSpin) {\r\n titleLine = Checking...;\r\n } else {\r\n titleLine =
    \r\n {\r\n if (this.state.challengeState.challengeId === cId) {\r\n return this.state.challengeState;\r\n } else {\r\n return await Smesshy.getSpecificChallengeStateAsync(controlThis, cId, true);\r\n }\r\n }}\r\n Options={{ShowResults: false, ShowTitle: true, ShowRules: true, ShowPrize: false, ShowEntrants:true, Prefix:'Winners for:'}}\r\n />\r\n \r\n
    ;\r\n\r\n if (this.state.challengeStatePrev !== undefined) {\r\n prevButton = {`<<< ${this.state.challengeStatePrev.title}`}}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.moveToResults(this.state.challengeStatePrev!.challengeId.toString());\r\n return true;\r\n }}\r\n />;\r\n }\r\n\r\n if (this.state.challengeStateNext !== undefined) {\r\n nextButton = {`${this.state.challengeStateNext.title} >>>`}}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise=>{\r\n controlThis.moveToResults(this.state.challengeStateNext!.challengeId.toString());\r\n return true;\r\n }}\r\n />;\r\n }\r\n\r\n\r\n if (this.state.resultInfos !== undefined) {\r\n viewChoices =\r\n
    \r\n
    \r\n
    \r\n Grand Champion:\r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.resultInfos.length > 1 ? \r\n
    \r\n First Runner Up:\r\n
    \r\n \r\n
    \r\n
    : <>}\r\n {this.state.resultInfos.length > 2 ? \r\n
    \r\n Second Runner Up:\r\n
    \r\n \r\n
    \r\n
    : <>}\r\n {this.state.luckyVoterProfile !== undefined ? \r\n
    \r\n The Lucky Voter:\r\n
    \r\n {return await onLuckyNavigate();}}\r\n OnTrashClick={async (top:number, artistId:string, artistName:string)=>{return true}}\r\n OnPlusClick={async (top:number, artistId:string, artistName:string)=>{return true}}\r\n />\r\n
    \r\n
    : <>}\r\n
    \r\n
    \r\n\r\n } else {\r\n if (this.state.challengeState.state === 'finished') {\r\n viewChoices = Sad to say, but nobody participated in that challenge.
    Maybe there was a flood, an earthquake, locusts?
    ;\r\n } else {\r\n viewChoices = Nobody knows;\r\n }\r\n }\r\n }\r\n\r\n return (this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {Smesshy - Challenge}\r\n CloseNav = '/'\r\n Body={\r\n
    \r\n
    \r\n
    \r\n {prevButton}\r\n {nextButton}\r\n
    \r\n
    \r\n {titleLine}\r\n
    \r\n
    \r\n {viewChoices}\r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n }\r\n />, this.state));\r\n }\r\n}\r\n\r\nexport default ResultPage;","import React, { Component } from 'react';\r\nimport { App, SmesshyAppShape } from '../App'\r\nimport IconButton, {CloseButton, IconBookmark, IconBookmarked } from './iconButton';\r\nimport { Footer } from '../smesshy';\r\nimport { Profile, User } from 'oidc-client';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport PaintingFrame from './paintingFrame';\r\nimport { ArtistProfile, PaintingInfo } from '../storageManager';\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport { prependListener } from 'process';\r\nimport Smessage from './smessage';\r\nimport { SmesshyMainButton, SmesshySubButton } from './smesshyButton';\r\nimport GamePage from './gamePage';\r\nimport { StreakViewer } from './followingPicker';\r\nimport { PaintingPair } from './galleryPage';\r\nimport { createSearchParams } from 'react-router-dom';\r\n\r\n\r\nexport interface LunchboxPageState extends SmesshyCommonState {\r\n userId: string | null;\r\n followingOnly: boolean;\r\n bookmarksOnly: boolean;\r\n nextStart: number;\r\n atEnd: boolean;\r\n paintingInfos: Array;\r\n}\r\nexport interface LunchboxPageProps extends SmesshyCommonProps {\r\n FetchCount: number;\r\n}\r\n\r\nclass LunchboxPage extends SmesshyCommon(Component) {\r\n\r\n scrollRef: React.RefObject;\r\n\r\n constructor(props: LunchboxPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.scrollRef = React.createRef();\r\n this.initState(props);\r\n }\r\n\r\n initState(props: LunchboxPageProps) {\r\n\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n userId: null,\r\n nextStart: 0,\r\n atEnd: false,\r\n paintingInfos: new Array(),\r\n followingOnly: false,\r\n bookmarksOnly: false,\r\n };\r\n\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('lunchbox', 'didMound', '');\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('lunchbox', 'populateAuth', authenticated.toString());\r\n if (authenticated) {\r\n this.setState({authenticated:true, userId: await this.getUserId()});\r\n this.fetchMorePaintings(true, this.state.atEnd, this.state.nextStart, this.state.paintingInfos, this.state.followingOnly, this.state.bookmarksOnly);\r\n // clear any notifications about the lunchbox\r\n this._app!.clearNotifications('lunchbox');\r\n } else {\r\n this.setState({authenticated:false});\r\n }\r\n }\r\n\r\n\r\n fetchMorePaintings(authenticated: boolean, atEnd: boolean, nextStart: number, paintingInfos: Array, followingOnly: boolean, bookmarksOnly: boolean) {\r\n if (atEnd) {\r\n return;\r\n }\r\n \r\n let app = this.props.AppObject;\r\n let controlThis = this;\r\n this.pushWaitingFrame(this);\r\n this.executeAsync(async ()=> {\r\n\r\n const acceptPins = (pins: Array)=>{\r\n controlThis.setState({\r\n paintingInfos: paintingInfos.concat(pins),\r\n nextStart: nextStart + pins.length, \r\n atEnd:pins.length < controlThis.props.FetchCount\r\n });\r\n };\r\n\r\n let token = await controlThis.getAccessToken();\r\n if (token !== undefined) {\r\n STrace.addStep('lunchbox', 'getCurrentLunchboxPaintingsWithPreviews', 'following lunchbox');\r\n controlThis.storageManager!.getCurrentLunchboxPaintingsWithPreviews(token, \r\n controlThis.state.nextStart, controlThis.state.nextStart + controlThis.props.FetchCount-1, acceptPins);\r\n\r\n controlThis.popWaitingFrame();\r\n }\r\n });\r\n\r\n }\r\n \r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`gallery, render`, 'ex', '', e)\r\n return
    ?!?!
    ;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const pairs = new Array<[PaintingInfo| undefined, PaintingInfo| undefined]>();\r\n let lastPair: [PaintingInfo | undefined, PaintingInfo | undefined] = [undefined, undefined];\r\n for (const pin of this.state.paintingInfos) {\r\n if (lastPair[0] === undefined) {\r\n pairs.push(lastPair);\r\n lastPair[0] = pin;\r\n } else {\r\n lastPair[1] = pin;\r\n lastPair = [undefined, undefined];\r\n }\r\n }\r\n\r\n const onStreakLook = async (): Promise => {\r\n const smearRect = controlThis.scrollRef.current!.getBoundingClientRect();\r\n const dlgWidth = controlThis._app!.GetScaledPxWidth(280);\r\n const dlgHeight = controlThis._app!.GetScaledPxWidth(600);\r\n const dlgTop = controlThis._app!.GetScaledPxWidth(70);\r\n const dlgLeft = controlThis._app!.GetScaledPxWidth(40);\r\n const dlgRect = new DOMRect(dlgLeft, dlgTop, dlgWidth, dlgHeight);\r\n\r\n controlThis.setState({askQuestion: undefined, overlayTool: {\r\n Element: {\r\n controlThis.setState({overlayTool: undefined});\r\n }}\r\n\r\n />\r\n }});\r\n return true;\r\n }\r\n\r\n let myPaintingsButton = \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Just Mine\r\n \r\n \r\n \r\n
    }\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = controlThis.requireSetup(() => {\r\n STrace.addStep('lunchbox', 'nav my', '');\r\n controlThis.setState({navigateTo:{To:{pathname:'/my-paintings', search:`?${createSearchParams({title: 'My recent paintings:', scope: 'my', filter:'recent', auth:'true'})}`} }})\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n />;\r\n \r\n\r\n\r\n let headerSection =
    \r\n
    \r\n How are my daily streaks?}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise => {\r\n let reqNav = await controlThis.requireSetupAsync(async () => {\r\n await onStreakLook()\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n \r\n }}\r\n /> \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n and\r\n hide\r\n
    \r\n
    \r\n it in a pal's lunchbox\r\n\r\n
    }\r\n\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = controlThis.requireSetup(() => {\r\n controlThis.setState({navigateTo: {To:{pathname:'/painting', search:`?${createSearchParams({ saveMode: 'lunc'})}`}}});\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n />\r\n
    \r\n {myPaintingsButton}\r\n
    \r\n
    \r\n\r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {{`Smesshy - My Lunchbox`}}\r\n CloseNav = {'/'}\r\n Body={\r\n
    \r\n {headerSection}\r\n
    Paintings your pals have hidden recently:
    \r\n\r\n \r\n \r\n
    \r\n }\r\n />, this.state);\r\n }\r\n}\r\n\r\nexport default LunchboxPage;","import React, { Component } from 'react';\r\nimport { App, SmesshyAppShape } from '../App'\r\nimport IconButton, {CloseButton, IconBookmark, IconBookmarked } from './iconButton';\r\nimport { Footer } from '../smesshy';\r\nimport { Profile, User } from 'oidc-client';\r\nimport { STrace, SmesshyCommon, SmesshyCommonProps, SmesshyCommonState } from '../smesshyCommon';\r\nimport PaintingFrame from './paintingFrame';\r\nimport { ArtistProfile, PaintingInfo } from '../storageManager';\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport { prependListener } from 'process';\r\nimport Smessage from './smessage';\r\nimport { SmesshyMainButton, SmesshySubButton } from './smesshyButton';\r\nimport GamePage from './gamePage';\r\nimport { StreakViewer } from './followingPicker';\r\nimport { PaintingPair } from './galleryPage';\r\nimport { createSearchParams } from 'react-router-dom';\r\nimport Smesshy from '../smesshy';\r\n\r\nexport interface FeedPageState extends SmesshyCommonState {\r\n userId: string | null;\r\n followingOnly: boolean;\r\n bookmarksOnly: boolean;\r\n nextStart: number;\r\n atEnd: boolean;\r\n paintingInfos: Array;\r\n currentChallengeId: number;\r\n}\r\nexport interface FeedPageProps extends SmesshyCommonProps {\r\n FetchCount: number;\r\n}\r\n\r\nclass FeedPage extends SmesshyCommon(Component) {\r\n\r\n scrollRef: React.RefObject;\r\n\r\n constructor(props: FeedPageProps) {\r\n super(props);\r\n this.initCommon(props.AppObject);\r\n\r\n this.scrollRef = React.createRef();\r\n this.initState(props);\r\n }\r\n\r\n initState(props: FeedPageProps) {\r\n this.state = {\r\n showWaitSpin: false,\r\n authenticated: false,\r\n userId: null,\r\n nextStart: 0,\r\n atEnd: false,\r\n paintingInfos: new Array(),\r\n followingOnly: false,\r\n bookmarksOnly: false,\r\n currentChallengeId: -1\r\n };\r\n\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('feed', 'didMound', '');\r\n }\r\n\r\n async onPopulateAuthenticationState(authenticated: boolean) {\r\n STrace.addStep('feed', 'populateAuth', authenticated.toString());\r\n if (authenticated) {\r\n this.setState({authenticated:true, userId: await this.getUserId()});\r\n this.fetchMorePaintings(true, this.state.atEnd, this.state.nextStart, this.state.paintingInfos, this.state.followingOnly, this.state.bookmarksOnly);\r\n } else {\r\n this.setState({authenticated:false});\r\n this.fetchMorePaintings(false, this.state.atEnd, this.state.nextStart, this.state.paintingInfos, this.state.followingOnly, this.state.bookmarksOnly);\r\n }\r\n this.pushWaitingFrame(this);\r\n let challengeState = await Smesshy.getSpecificChallengeStateAsync(this, undefined, false);\r\n if (challengeState !== undefined && challengeState.challengeId > 1) {\r\n this.setState({ currentChallengeId:challengeState.challengeId});\r\n }\r\n this.popWaitingFrame();\r\n\r\n }\r\n\r\n\r\n fetchMorePaintings(authenticated: boolean, atEnd: boolean, nextStart: number, paintingInfos: Array, followingOnly: boolean, bookmarksOnly: boolean) {\r\n if (atEnd) {\r\n return;\r\n }\r\n \r\n let app = this.props.AppObject;\r\n let controlThis = this;\r\n this.pushWaitingFrame(this);\r\n this.executeAsync(async ()=> {\r\n\r\n const acceptPins = (pins: Array)=>{\r\n controlThis.setState({\r\n paintingInfos: paintingInfos.concat(pins),\r\n nextStart: nextStart + pins.length, \r\n atEnd:pins.length < controlThis.props.FetchCount\r\n });\r\n\r\n for (let pin of pins) {\r\n controlThis._app!.clearNotifications('painting', pin.paintingId!);\r\n }\r\n };\r\n\r\n let token = await controlThis.getAccessToken();\r\n if (token === undefined) {\r\n token = 'none'\r\n } \r\n\r\n let filter = bookmarksOnly ? 'favorite' : 'recent';\r\n if (followingOnly) {\r\n STrace.addStep('feed', 'getFollowingPaintingsWithPreviews', 'following');\r\n controlThis.storageManager!.getFollowingPaintingsWithPreviews(token, \r\n nextStart, nextStart + controlThis.props.FetchCount-1, filter, acceptPins);\r\n } else {\r\n STrace.addStep('feed', 'getGlobalPaintingsWithPreviews', 'global');\r\n controlThis.storageManager!.getGlobalPaintingsWithPreviews(token,\r\n nextStart, nextStart + controlThis.props.FetchCount-1, filter, acceptPins);\r\n }\r\n controlThis.popWaitingFrame();\r\n });\r\n\r\n }\r\n \r\n\r\n render() {\r\n try {\r\n return this.babyRender();\r\n } catch (e: any) {\r\n this.props.AppObject.reportException(`gallery, render`, 'ex', '', e)\r\n return
    ?!?!
    ;\r\n }\r\n }\r\n babyRender() {\r\n let controlThis = this;\r\n\r\n const pairs = new Array<[PaintingInfo| undefined, PaintingInfo| undefined]>();\r\n let lastPair: [PaintingInfo | undefined, PaintingInfo | undefined] = [undefined, undefined];\r\n for (const pin of this.state.paintingInfos) {\r\n if (lastPair[0] === undefined) {\r\n pairs.push(lastPair);\r\n lastPair[0] = pin;\r\n } else {\r\n lastPair[1] = pin;\r\n lastPair = [undefined, undefined];\r\n }\r\n }\r\n\r\n let headerSection =
    \r\n
    \r\n
    {'From:'}
    \r\n
    \r\n {controlThis.state.followingOnly ? 'Those I follow' : 'Anyone'}}\r\n Haptic = {this.doButtonHaptic()}\r\n StartPushedState = {false}\r\n OnPressFinish={async (): Promise => {\r\n let reqNav = controlThis.requireSetup(() => {\r\n let paintingInfos = new Array();\r\n controlThis.setState({followingOnly:!controlThis.state.followingOnly, nextStart:0, paintingInfos:paintingInfos, atEnd:false});\r\n controlThis.fetchMorePaintings(controlThis.state.authenticated, false, 0, paintingInfos, !controlThis.state.followingOnly, controlThis.state.bookmarksOnly);\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n />\r\n
    \r\n {\r\n }}\r\n OnPressTick={()=>{\r\n }}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = controlThis.requireSetup(() => {\r\n let paintingInfos = new Array();\r\n controlThis.setState({bookmarksOnly:!controlThis.state.bookmarksOnly, nextStart:0, paintingInfos:paintingInfos, atEnd:false});\r\n controlThis.fetchMorePaintings(controlThis.state.authenticated, false, 0, paintingInfos, controlThis.state.followingOnly, !controlThis.state.bookmarksOnly);\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n StartPushedState={true}\r\n Haptic = {this.doButtonHaptic()}\r\n Height={this._app!.GetScaledPxHeight(31)}\r\n Size={'large'}\r\n />\r\n
    \r\n\r\n \r\n Your followers want more ...\r\n
    \r\n
    \r\n and post\r\n
    \r\n
    }\r\n\r\n Haptic={this.doButtonHaptic()}\r\n StartPushedState={false}\r\n OnPressFinish={async (): Promise=>{\r\n let reqNav = controlThis.requireSetup(() => {\r\n controlThis.setState({navigateTo: {To:{pathname:'/painting', search:`?${createSearchParams({saveMode: 'foll'})}`}}});\r\n });\r\n if (reqNav != undefined) {\r\n controlThis.setState({navigateTo: reqNav});\r\n }\r\n return true;\r\n }}\r\n />\r\n
    \r\n\r\n return this.renderFramework(\r\n { await controlThis.onPopulateAuthenticationState(authenticated) }}\r\n Title = {{`Smesshy - Feed Me!`}}\r\n CloseNav = {'/'}\r\n Body={\r\n
    \r\n {headerSection}\r\n \r\n \r\n
    \r\n }\r\n />, this.state);\r\n }\r\n}\r\n\r\nexport default FeedPage;","//import * as signalR from \"@microsoft/signalr\"\r\nimport React, { Component, ReactElement, useEffect } from 'react';\r\nimport { withCookies, Cookies } from 'react-cookie';\r\nimport './App.css';\r\nimport Smesshy from \"./smesshy\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport PaintingPage from \"./components/paintingPage\";\r\nimport FingerTip from \"./components/smash/fingertip\";\r\nimport SettingsPage from \"./components/settingsPage\";\r\nimport CalibrateTouchPage from \"./components/calibrateTouch\";\r\nimport StatsPage from './components/statsPage';\r\nimport GetApiAuthorzationRoutes from './components/api-authorization/ApiAuthorizationRoutes';\r\nimport { Route, Routes, URLSearchParamsInit, useSearchParams } from 'react-router-dom';\r\nimport GalleryDoorsPage from './components/galleryDoorsPage';\r\nimport ErrorPage from './components/errorPage';\r\nimport AuthorizeService from './components/api-authorization/AuthorizeService';\r\nimport GalleryPage from './components/galleryPage';\r\nimport FollowingPage from './components/followingPage';\r\nimport SmesshyStorageManager from './storageManager';\r\nimport { smesshyVersion } from './version';\r\nimport Smessage from './components/smessage';\r\nimport TermsOfServicePage from './components/termsOfServicePage';\r\nimport PrivacyPage from './components/privacyPage';\r\nimport VotePage from './components/votePage';\r\nimport Env from './envInst';\r\nimport SetupPage from './components/setupPage';\r\nimport { STrace } from './smesshyCommon';\r\nimport ResultPage from './components/results';\r\nimport LunchboxPage from './components/lunchboxPage';\r\nimport FeedPage from './components/feedPage';\r\nimport { Page } from './components/smash/page';\r\nimport { GPUChecker } from './components/smash/GPURunner';\r\n\r\n\r\nclass modWindow {\r\n csweetGameId: any\r\n}\r\n\r\nlet serviceWorkerRegistration : ServiceWorkerRegistration | undefined = undefined;\r\nif ('serviceWorker' in navigator) {\r\n navigator.serviceWorker\r\n .register('/sw.js')\r\n .then((reg) => { \r\n console.log('Service Worker Registered'); \r\n serviceWorkerRegistration = reg;\r\n\r\n });\r\n}\r\ninterface AppRoute {\r\n index?: boolean;\r\n path?: string;\r\n element: ReactElement;\r\n}\r\n\r\nexport interface SmesshyAppShape {\r\n appRectangle: DOMRect;\r\n}\r\n\r\nexport interface AppState {\r\n loading: boolean;\r\n sessionId: number;\r\n sessionState: string;\r\n fromPage: string;\r\n shownPage: string;\r\n showSplash: boolean;\r\n appShape: SmesshyAppShape | undefined;\r\n trigger: number;\r\n}\r\n\r\nexport interface AppProps {\r\n cookies: Cookies\r\n searchParams: [URLSearchParams, (nextInit: URLSearchParamsInit, navigateOptions?: {replace?: boolean | undefined;state?: any;} | undefined) => void]\r\n}\r\n\r\nexport class App extends Component {\r\n\r\n static displayName = App.name;\r\n public asyncHelp = new AsyncHelper();\r\n\r\n public authService = new AuthorizeService(this);\r\n\r\n storageManager : SmesshyStorageManager;\r\n\r\n outerRef : React.RefObject;\r\n hostRef : React.RefObject;\r\n resizeListener :(((ev: UIEvent)=>void) | undefined) = undefined;\r\n\r\n waitingFrames = new Array();\r\n showingSpinner = false;\r\n spinnerTimeout: NodeJS.Timeout | undefined = undefined;\r\n\r\n static useGPU = false;\r\n static trustGPU = false;\r\n\r\n static doTrustGPU() {\r\n App.trustGPU = true;\r\n App.useGPU = true;\r\n localStorage.setItem('smesshy-app-GPU-status', 'trust');\r\n }\r\n static doAvoidGPU() {\r\n App.trustGPU = false;\r\n App.useGPU = false;\r\n localStorage.setItem('smesshy-app-GPU-status', 'avoid');\r\n }\r\n\r\n\r\n constructor(props: AppProps) {\r\n super(props);\r\n const { cookies } = props;\r\n const { searchParams } = props;\r\n\r\n this.outerRef = React.createRef();\r\n this.hostRef = React.createRef();\r\n\r\n this.storageManager = new SmesshyStorageManager(this);\r\n\r\n let gameSession = Number.NaN;\r\n\r\n if ((window as object).hasOwnProperty('csweetGameId')) {\r\n const idSetOnWindow: any = (window as unknown as modWindow).csweetGameId;\r\n if (idSetOnWindow !== undefined && idSetOnWindow !== 'current_csweet_game_id') {\r\n gameSession = Number.parseInt(idSetOnWindow);\r\n }\r\n }\r\n\r\n if (Number.isNaN(gameSession)) {\r\n const queryParameters = new URLSearchParams(window.location.search);\r\n const gameSessionSent = queryParameters.get(\"g\");\r\n if (gameSessionSent !== undefined && gameSessionSent !== null) {\r\n gameSession = Number.parseInt(gameSessionSent);\r\n }\r\n }\r\n \r\n this.initGameState();\r\n\r\n const bound = new DOMRect(0, 0, window.innerWidth, window.innerHeight);\r\n let appShape = this.adjustAppShape(bound, false);\r\n\r\n this.state = {\r\n loading: true,\r\n sessionId: gameSession,\r\n sessionState: 'unk',\r\n fromPage: 'smesshy',\r\n shownPage: 'smesshy',\r\n showSplash: true,\r\n appShape: appShape,\r\n trigger: 0\r\n };\r\n\r\n let localCheckMinSupport = sessionStorage.getItem('smesshy-app-check-api-status');\r\n if (localCheckMinSupport === null) {\r\n sessionStorage.setItem('smesshy-app-check-api-status', 'attempt');\r\n if (Env.getCreateImageBitmapSupport() === false) {\r\n this.reportException('\"Smesshy, Wake Up!\"', 'setup', \"-1\", `\"Yeah, about that: This browser version doesn't support CreateImageBitmap on a canvas and that is my favorite API. Chrome added this in like 2015, but Apple didn't get around to it until 2021, so ... Not much can be done except upgrade your browser / os.\"`);\r\n return;\r\n }\r\n }\r\n\r\n App.useGPU = false;\r\n App.trustGPU = false;\r\n let localUseGPU = localStorage.getItem('smesshy-app-GPU-status');\r\n if (localUseGPU === null) {\r\n localUseGPU = 'attempt';\r\n localStorage.setItem('smesshy-app-GPU-status', localUseGPU);\r\n }\r\n if (localUseGPU === 'trust') {\r\n App.trustGPU = true;\r\n App.useGPU = true;\r\n } else if (localUseGPU === 'attempt') {\r\n App.useGPU = true;\r\n App.trustGPU = false;\r\n } else {\r\n App.useGPU = false;\r\n App.trustGPU = false;\r\n }\r\n if (App.useGPU) {\r\n Page.initializeGPU();\r\n if (GPUChecker.errorCode !== 0) {\r\n localStorage.setItem('smesshy-app-GPU-status', 'avoid');\r\n App.useGPU = false;\r\n App.trustGPU = false;\r\n this.reportException(GPUChecker.errorLoc, 'gpu', GPUChecker.errorCode.toString(), GPUChecker.errorText);\r\n }\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n STrace.addStep('app', 'didMound', '');\r\n\r\n if (this.resizeListener === undefined) {\r\n let controlThis = this;\r\n\r\n this.resizeListener = (ev: UIEvent)=> {\r\n controlThis.setState({trigger: controlThis.state.trigger + 1});\r\n };\r\n\r\n window.addEventListener('resize', this.resizeListener, true);\r\n }\r\n\r\n this.asyncHelp.executeAsyncLater(async ()=> {\r\n let env = Env;\r\n\r\n env.afterSwitch = ()=> {\r\n this.triggerRefresh();\r\n this.checkVersion();\r\n }\r\n await env.collectEnvironmentState();\r\n\r\n if (env.inPWA === true) {\r\n try {\r\n STrace.addStep('app', 'ensureUserManager', '');\r\n await this.authService.ensureUserManagerInitialized(true);\r\n } catch (reason) {\r\n this.reportException('init Authentication', 'ex', '', reason);\r\n }\r\n }\r\n\r\n this.setState({ loading: false, shownPage: 'smesshy'});\r\n \r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n if (this.resizeListener !== undefined) {\r\n window.removeEventListener('resize', this.resizeListener);\r\n }\r\n if (this.spinnerTimeout !== undefined) {\r\n clearTimeout(this.spinnerTimeout);\r\n }\r\n }\r\n\r\n\r\n get SessionId(): number {\r\n return this.state.sessionId;\r\n }\r\n \r\n \r\n render() {\r\n\r\n let env = Env;\r\n let inApp = env.inPWA;\r\n\r\n let paintMode = this.props.searchParams[0].get('mode')!;\r\n if ((paintMode === undefined || paintMode === null) && this.state.loading === false) {\r\n if (inApp === false) {\r\n paintMode = 'anon';\r\n }\r\n }\r\n const controlThis = this;\r\n\r\n const OrientObserver = () => {\r\n useEffect(()=>{\r\n if (controlThis.outerRef.current){\r\n const bound = controlThis.outerRef.current.getBoundingClientRect();\r\n bound.width = Math.round(bound.width);\r\n bound.height = Math.round(bound.height);\r\n bound.x = Math.round(bound.x);\r\n bound.y = Math.round(bound.y);\r\n if (bound.width < 10) { // sometimes we get an empty or near empty window mid-refreshing\r\n return;\r\n }\r\n if (bound.height < 700 && bound.width > bound.height) {\r\n this.adjustAppShape(undefined, true);\r\n } else {\r\n this.adjustAppShape(bound, true);\r\n }\r\n }\r\n });\r\n return <>;\r\n }\r\n\r\n\r\n const GetAppRoutes = (): Array=> {\r\n return [\r\n {\r\n path: '/',\r\n index: true,\r\n element: \r\n },\r\n {\r\n path: '/setup',\r\n element: \r\n },\r\n {\r\n path: '/painting',\r\n element: \r\n },\r\n {\r\n path: '/settings',\r\n element: \r\n },\r\n {\r\n path: '/calibrate',\r\n element: \r\n },\r\n {\r\n path: '/stats',\r\n element: \r\n },\r\n {\r\n path: '/vote',\r\n element: \r\n },\r\n {\r\n path: '/result',\r\n element: \r\n },\r\n {\r\n path: '/gallery-doors',\r\n element: \r\n },\r\n {\r\n path: '/single',\r\n element: \r\n },\r\n {\r\n path: '/my-paintings',\r\n element: \r\n },\r\n\r\n {\r\n path: '/gallery-doors/gallery',\r\n element: \r\n },\r\n {\r\n path: '/feed',\r\n element: \r\n },\r\n {\r\n path: '/lunchbox',\r\n element: \r\n },\r\n {\r\n path: '/painting-selection',\r\n element: \r\n },\r\n {\r\n path: '/other-gallery',\r\n element: \r\n },\r\n {\r\n path: '/following',\r\n element: \r\n },\r\n {\r\n path: '/termsOfServiceApp',\r\n element: \r\n },\r\n {\r\n path: '/privPolApp',\r\n element: \r\n },\r\n\r\n {\r\n path: '/error',\r\n element: \r\n }\r\n ];\r\n }\r\n\r\n var rectHost = this.state.appShape?.appRectangle;\r\n\r\n const allRoutes = \r\n {GetAppRoutes().map((route, index) => {\r\n const { element, path, ...rest } = route;\r\n return ;\r\n })}\r\n {GetApiAuthorzationRoutes(this).map((route, index) => {\r\n const { element, path, ...rest } = route;\r\n return ;\r\n })}\r\n\r\n \r\n const authRoutes = \r\n {GetAppRoutes().map((route, index) => {\r\n const { element, path, ...rest } = route;\r\n return } />;\r\n })}\r\n {GetApiAuthorzationRoutes(this).map((route, index) => {\r\n const { element, path, ...rest } = route;\r\n return ;\r\n })}\r\n\r\n \r\n\r\n const wrongWay = <>\r\n
    \r\n
    \r\n {authRoutes};\r\n \r\n\r\n const gettingSmesshy =
    \r\n {authRoutes}\r\n
    ;\r\n\r\n const smesshyMain =
    \r\n {allRoutes}\r\n
    ;\r\n \r\n const body = this.state.appShape === undefined ? wrongWay : this.state.loading === true ? gettingSmesshy : smesshyMain;\r\n\r\n return <>\r\n \r\n
    \r\n {body}\r\n
    \r\n ;\r\n }\r\n\r\n playerId?: string = undefined;\r\n\r\n static calibrationVersion = 2;\r\n\r\n adjustAppShape(bound: DOMRect | undefined, updateState: boolean) : SmesshyAppShape | undefined {\r\n if (bound === undefined) {\r\n if (this.state.appShape !== undefined) {\r\n let result = this.state.appShape;\r\n this.setState({appShape: undefined});\r\n return result;\r\n }\r\n return undefined;\r\n }\r\n let idealAvailableWidth = 370;\r\n let idealAvailableHeight = 750;\r\n let idealAspectRatio = idealAvailableWidth / idealAvailableHeight;\r\n let topGutter = 2;\r\n let bottomGutter = 6;\r\n let leftGutter = 2;\r\n let rightGutter = 6;\r\n let availableWidth = bound.width - leftGutter - rightGutter;\r\n let availableHeight = bound.height - topGutter - bottomGutter;\r\n if (availableHeight > 1024)\r\n {\r\n availableHeight = 1024;\r\n let extraGutter = (bound.height - availableHeight) / 2;\r\n topGutter += extraGutter;\r\n bottomGutter += extraGutter;\r\n }\r\n if (availableWidth > 512)\r\n {\r\n availableWidth = 512;\r\n let extraGutter = (bound.width - availableWidth) / 2;\r\n leftGutter += extraGutter;\r\n rightGutter += extraGutter;\r\n }\r\n let aspectRatio = availableWidth / availableHeight;\r\n let usedWidth = availableWidth;\r\n let usedHeight = availableHeight;\r\n if (aspectRatio < idealAspectRatio) {\r\n usedHeight = availableWidth / idealAspectRatio;\r\n } else if (aspectRatio > idealAspectRatio) {\r\n usedWidth = availableHeight * idealAspectRatio;\r\n }\r\n let rectNew = new DOMRect(leftGutter + (availableWidth - usedWidth) / 2, topGutter + (availableHeight - usedHeight) / 2, usedWidth, usedHeight);\r\n if (this.state === undefined || this.state.appShape === undefined || \r\n this.state.appShape.appRectangle.width !== rectNew.width || this.state.appShape.appRectangle.height !== rectNew.height ||\r\n this.state.appShape.appRectangle.x !== rectNew.x || this.state.appShape.appRectangle.y !== rectNew.y) {\r\n\r\n // let scaledPx2Vw = (usedWidth/idealAvailableWidth) * 100 / usedWidth;\r\n // let scaledPx2Vh = (usedHeight/idealAvailableHeight) * 100 / usedHeight;\r\n // let unitWidth = (usedWidth / bound.width) * scaledPx2Vw;\r\n // let unitHeight = (usedHeight / bound.height) * scaledPx2Vh;\r\n\r\n // unitWidth = unitWidth * usedWidth / 100.0;\r\n // unitHeight = unitHeight * usedHeight / 100.0;\r\n\r\n let unitWidth = usedWidth / idealAvailableWidth;\r\n let unitHeight = usedHeight / idealAvailableHeight;\r\n \r\n let r = document.querySelector(':root') as HTMLElement;\r\n if (r !== null) {\r\n r.style.setProperty('--smesshy-unit-width', `${unitWidth}px`);\r\n r.style.setProperty('--smesshy-unit-height', `${unitHeight}px`);\r\n }\r\n const newShape = {appRectangle: rectNew};\r\n if (updateState) {\r\n this.setState({appShape: newShape});\r\n }\r\n return newShape;\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n public GetScaledPxWidthVw(px : number) : string {\r\n if (this.state.appShape === undefined || this.state.appShape === null) {\r\n return '100px';\r\n }\r\n return `calc(var(--smesshy-unit-width) * ${px})`\r\n }\r\n public GetScaledPxHeightVh(px : number) : string {\r\n if (this.state.appShape === undefined || this.state.appShape === null) {\r\n return '100px';\r\n }\r\n return `calc(var(--smesshy-unit-height) * ${px})`\r\n }\r\n public GetScaledPxWidth(px : number) : number {\r\n if (this.state.appShape === undefined || this.state.appShape === null) {\r\n return 1;\r\n }\r\n return px * this.state.appShape!.appRectangle.width / 370;\r\n }\r\n public GetScaledPxHeight(px : number) : number {\r\n if (this.state.appShape === undefined || this.state.appShape === null) {\r\n return 1;\r\n }\r\n return px * this.state.appShape!.appRectangle.height / 750;\r\n }\r\n public GetUnScaledPxWidth(px : number) : number {\r\n if (this.state.appShape === undefined || this.state.appShape === null) {\r\n return 1;\r\n }\r\n return px * 370 / this.state.appShape!.appRectangle.width;\r\n }\r\n public GetUnScaledPxHeight(px : number) : number {\r\n if (this.state.appShape === undefined || this.state.appShape === null) {\r\n return 1;\r\n }\r\n return px * 750 / this.state.appShape!.appRectangle.height;\r\n }\r\n\r\n public GetAppShape() : SmesshyAppShape {\r\n return this.state.appShape!;\r\n }\r\n\r\n public GetInPWA() : boolean {\r\n return Env.inPWA;\r\n }\r\n\r\n initGameState() {\r\n let env = Env;\r\n const controlThis = this;\r\n\r\n const { cookies } = this.props;\r\n this.playerId = cookies.get('playerUniqueId');\r\n if (this.playerId === undefined || this.playerId === null) {\r\n this.playerId = uuidv4();\r\n this.SetCookie('playerUniqueId', this.playerId);\r\n }\r\n \r\n let storedCalibrated = localStorage.getItem('calibrationVersion');\r\n if (storedCalibrated === null) {\r\n // maybe the old cookies are there, swap over\r\n let storedCalibrated = cookies.get('calibrationVersion');\r\n if (storedCalibrated !== undefined && storedCalibrated !== null) {\r\n this.SetAppState('calibrationVersion', storedCalibrated, true);\r\n this.SetAppState('avgLightRadius', this.GetCookie('avgLightRadius', FingerTip.minFingerRadius.toString()), true);\r\n this.SetAppState('avgHeavyRadius', this.GetCookie('avgHeavyRadius', FingerTip.maxFingerRadius.toString()), true);\r\n this.SetAppState('useMouse', this.GetCookie('useMouse', 'false'), true);\r\n this.SetAppState('showSize', this.GetCookie('showSize', 'false'), true);\r\n this.SetAppState('hapticButton', env.getVibrateSupport() ? this.GetCookie('hapticButton', 'true') : 'false', true);\r\n\r\n this.SetCookie('calibrationVersion', null);\r\n this.SetCookie('avgLightRadius', null);\r\n this.SetCookie('avgHeavyRadius', null);\r\n this.SetCookie('useMouse', null);\r\n this.SetCookie('showSize', null);\r\n this.SetCookie('hapticButton', null);\r\n }\r\n }\r\n // set defaults unless already stored. either way, convert from strings\r\n this.SetAppState('calibrationVersion', Number.parseInt(this.GetAppState('calibrationVersion', '0', true) as string), true);\r\n this.SetAppState('avgLightRadius', Number.parseFloat(this.GetAppState('avgLightRadius', FingerTip.minFingerRadius.toString(), true) as string), true);\r\n this.SetAppState('avgHeavyRadius', Number.parseFloat(this.GetAppState('avgHeavyRadius', FingerTip.maxFingerRadius.toString(), true) as string), true);\r\n this.SetAppState('useMouse', this.GetAppState('useMouse', 'false', true) === 'true', true);\r\n this.SetAppState('showSize', this.GetAppState('showSize', 'false', true) === 'true', true);\r\n this.SetAppState('hapticButton', this.GetAppState('hapticButton', env.getVibrateSupport() ? 'true' : 'false', true) === 'true', true);\r\n\r\n }\r\n\r\n public SetCookie(tag: string, value: any) {\r\n const { cookies } = this.props;\r\n if (value === null) {\r\n cookies.remove(tag);\r\n } else {\r\n cookies.set(tag, value, { path: '/', maxAge:2*365*24*60*60 });\r\n }\r\n }\r\n public GetCookie(tag: string, defaultValue: string) {\r\n const { cookies } = this.props;\r\n var value = cookies.get(tag);\r\n if (value === undefined || value === null) {\r\n value = defaultValue;\r\n }\r\n return value;\r\n }\r\n\r\n _gameState = new Map();\r\n public GetAppState(tag: string, defaultValue: unknown, checkPersist?: boolean): unknown {\r\n let fullTag = `${tag}`;\r\n if (this._gameState.has(fullTag)) {\r\n return this._gameState.get(fullTag);\r\n } else {\r\n if (checkPersist === true) {\r\n let persisted: string | null;\r\n if ((persisted = localStorage.getItem(tag)) !== null) {\r\n defaultValue = persisted;\r\n }\r\n }\r\n this._gameState.set(fullTag, defaultValue);\r\n return defaultValue;\r\n }\r\n }\r\n public SetAppState(tag: string, newValue: unknown, persist?: boolean) {\r\n let fullTag = `${tag}`;\r\n this._gameState.set(fullTag, newValue);\r\n if (persist === true) {\r\n if (newValue === null) {\r\n localStorage.removeItem(tag);\r\n } else {\r\n localStorage.setItem(tag, (newValue as any).toString());\r\n }\r\n }\r\n }\r\n\r\n public DoShowTutorial(key: string) {\r\n if (this.GetAppState(`show-tutorial-${key}`, 'true', true) === 'true') {\r\n return this.GetAppState(`show-tutorial-any`, 'true', true) === 'true';\r\n }\r\n return false;\r\n }\r\n\r\n public FinishTutorial(key: string) {\r\n this.SetAppState(`show-tutorial-${key}`, 'false', true);\r\n }\r\n\r\n public ResetTutorialKeys(keys: Array) {\r\n for (let key of keys) {\r\n this.SetAppState(`show-tutorial-${key}`, 'true', true);\r\n }\r\n }\r\n \r\n public triggerRefresh() {\r\n sessionStorage.setItem('smesshy-app-refresh', 'true');\r\n }\r\n\r\n public checkVersion() {\r\n let timeNow = Date.now();\r\n let lastVerCheck = sessionStorage.getItem('smesshy-app-version-check');\r\n let triggeredRefresh = sessionStorage.getItem('smesshy-app-refresh');\r\n if (triggeredRefresh === 'true' || lastVerCheck === null || Number.parseInt(lastVerCheck) < timeNow - (1000*60*60)) {\r\n sessionStorage.removeItem('smesshy-app-refresh');\r\n sessionStorage.setItem('smesshy-app-version-check', timeNow.toString());\r\n if (triggeredRefresh === 'true') {\r\n window.location.reload();\r\n } else {\r\n fetch('api/diagnostic/getAppVersion').then((resp)=>{\r\n resp.text().then((v: string) => {\r\n if (v !== smesshyVersion) {\r\n window.location.reload();\r\n }\r\n })\r\n \r\n }).catch(reason=>{\r\n window.location.reload();\r\n });\r\n }\r\n }\r\n }\r\n\r\n public pushWaitingFrame(frame: Component) {\r\n this.waitingFrames.push(frame);\r\n if (this.waitingFrames.length === 1) {\r\n // should never happen, but just in case\r\n if (this.spinnerTimeout !== undefined) {\r\n clearTimeout(this.spinnerTimeout);\r\n this.spinnerTimeout = undefined;\r\n }\r\n this.showingSpinner = false;\r\n let controlThis = this;\r\n this.spinnerTimeout = setTimeout(()=> {\r\n controlThis.spinnerTimeout = undefined;\r\n controlThis.showingSpinner = true;\r\n controlThis.waitingFrames[0].setState({showWaitSpin: true});\r\n }, 250);\r\n }\r\n }\r\n public popWaitingFrame() {\r\n if (this.waitingFrames.length > 0) {\r\n let frame = this.waitingFrames.pop();\r\n if (this.waitingFrames.length === 0) {\r\n if (this.spinnerTimeout !== undefined) {\r\n clearTimeout(this.spinnerTimeout);\r\n this.spinnerTimeout = undefined;\r\n }\r\n if (this.showingSpinner === true) {\r\n frame!.setState({showWaitSpin: false});\r\n }\r\n this.showingSpinner = false;\r\n }\r\n }\r\n }\r\n\r\n debugLog = '';\r\n public LogLine(line: string) {\r\n this.debugLog+=line+'\\n';\r\n }\r\n public GetLog() {\r\n return this.debugLog;\r\n }\r\n\r\n public reportException(source: string, kind: string, code: string, exception: unknown) {\r\n localStorage.setItem('_lastExceptionSource', source);\r\n localStorage.setItem('_lastExceptionKind', kind);\r\n localStorage.setItem('_lastExceptionCode', code);\r\n localStorage.setItem('_lastExceptionText', exception === undefined ? 'undefined' : (exception as object).toString());\r\n console.warn(`Exception reported: ${source} ${kind} `);\r\n this.waitingFrames = new Array();\r\n window.location.assign('/error');\r\n\r\n }\r\n\r\n\r\n urlBase64ToUint8Array(base64String: string) {\r\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\r\n var base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n \r\n var rawData = window.atob(base64);\r\n var outputArray = new Uint8Array(rawData.length);\r\n \r\n for (var i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n }\r\n\r\n\r\n public notificationsPossible() : boolean {\r\n // must be a service worker to talk with\r\n // needed to set breakpoints so don't mind this goofy code\r\n if (serviceWorkerRegistration !== undefined)\r\n if ('pushManager' in serviceWorkerRegistration)\r\n if (serviceWorkerRegistration['pushManager'] !== undefined)\r\n if ('subscribe' in serviceWorkerRegistration['pushManager'])\r\n if (serviceWorkerRegistration['pushManager']['subscribe'] !== undefined)\r\n if ('getSubscription' in serviceWorkerRegistration['pushManager'])\r\n if (serviceWorkerRegistration['pushManager']['getSubscription'] !== undefined)\r\n if ('Notification' in window)\r\n if (window['Notification'] !== undefined)\r\n if ('permission' in window['Notification'])\r\n if (window['Notification']['permission'] !== undefined)\r\n if ('requestPermission' in window['Notification'])\r\n if (window['Notification']['requestPermission'] !== undefined)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n public async clearNotifications(kind: string, id?: string) {\r\n if (this.notificationsPossible() === false) {\r\n return;\r\n }\r\n const nots = await serviceWorkerRegistration!.getNotifications();\r\n let totalNots = nots.length;\r\n let clearedNots = 0;\r\n for (let i = 0; i < nots.length; i++) {\r\n let body = nots[i].body;\r\n switch (kind) {\r\n case 'all':\r\n nots[i].close();\r\n clearedNots++;\r\n break;\r\n case 'lunchbox':\r\n if (body.endsWith('in your lunchbox.')) {\r\n nots[i].close();\r\n clearedNots++;\r\n }\r\n break;\r\n case 'pokeLunchbox':\r\n if (body.includes('VERY WORRIED about your lunchbox')) {\r\n nots[i].close();\r\n clearedNots++;\r\n }\r\n break;\r\n case 'following':\r\n if (body.endsWith('follow your paintings.')) {\r\n nots[i].close();\r\n clearedNots++;\r\n }\r\n break;\r\n case 'painting':\r\n var paintingId = '';\r\n if (body.endsWith(']')) {\r\n let start = body.lastIndexOf('[');\r\n if (start !== -1) {\r\n paintingId = body.substring(start+1, body.length-1);\r\n if (paintingId === id) {\r\n nots[i].close();\r\n clearedNots++;\r\n }\r\n }\r\n }\r\n break;\r\n \r\n }\r\n }\r\n\r\n if ('setAppBadge' in navigator) {\r\n (navigator as any).setAppBadge(totalNots - clearedNots);\r\n }\r\n\r\n }\r\n\r\n public async getNotificationSubscription() : Promise {\r\n return await serviceWorkerRegistration!['pushManager']['getSubscription']();\r\n }\r\n\r\n public async deleteNotificationRegistration() : Promise {\r\n // must be a service worker to talk with\r\n if (this.notificationsPossible() === false) {\r\n return true; // since true means it's gone, and it was never here\r\n }\r\n try {\r\n // existing subscription? fine else register with the worker\r\n let sub = await this.getNotificationSubscription();\r\n if (sub === null || sub === undefined) {\r\n return true; // since true means it's gone, and it was never here\r\n }\r\n if (await sub.unsubscribe() === true) {\r\n STrace.addStep('app', 'deleteNotificationSubscription', '');\r\n await this.storageManager.deleteNotificationSubscription(sub.endpoint);\r\n return true;\r\n }\r\n } catch (reason) {\r\n }\r\n return false;\r\n }\r\n\r\n public async getNotificationPermission(reAsk: boolean) : Promise {\r\n let perms = window['Notification']['permission'];\r\n if (perms === 'default' || (perms === 'denied' && reAsk)) {\r\n // don't know yet, must ask\r\n perms = await window['Notification']['requestPermission']();\r\n }\r\n if (perms === 'denied') {\r\n return false; // nope\r\n }\r\n return true;\r\n }\r\n\r\n public async createNotificationRegistration() : Promise{\r\n try {\r\n // need public key from server\r\n STrace.addStep('app', 'getVapidPublicKey', '');\r\n const respPK = await fetch('api/notification/getVapidPublicKey');\r\n const vapidPK = await respPK.text();\r\n const convertedVapidPK = this.urlBase64ToUint8Array(vapidPK);\r\n\r\n const newSub = await serviceWorkerRegistration!.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n applicationServerKey: convertedVapidPK\r\n });\r\n\r\n STrace.addStep('app', 'registerNotificationSubscription', '');\r\n await this.storageManager.registerNotificationSubscription(newSub);\r\n return true;\r\n } catch (reason) {\r\n // alert(`tell Jeff: '${reason}'`)\r\n }\r\n return false;\r\n }\r\n \r\n}\r\n\r\nclass AsyncHelper {\r\n\r\n currentAsync: (()=>void) | undefined = undefined;\r\n pendingWork = new Array<()=>void>();\r\n \r\n constructor() {\r\n \r\n }\r\n\r\n public executeAsyncLater(code: ()=>void) {\r\n\r\n const localThis = this;\r\n async function wrapper() {\r\n localThis.currentAsync = code;\r\n try {\r\n await code(); \r\n localThis.currentAsync = undefined; \r\n } catch(err) {\r\n localThis.currentAsync = undefined; \r\n throw err;\r\n }\r\n while(localThis.pendingWork.length > 0) {\r\n const pending = localThis.pendingWork[0];\r\n localThis.pendingWork = localThis.pendingWork.slice(1);\r\n pending();\r\n }\r\n }\r\n if (this.currentAsync !== undefined) {\r\n //console.log('attempt to async / non / async in js, stashing');\r\n this.pendingWork.push(wrapper);\r\n } else {\r\n this.currentAsync = code;\r\n wrapper();\r\n }\r\n }\r\n\r\n public executeWhenSafe(code: ()=>void) {\r\n if (this.currentAsync !== undefined) {\r\n this.pendingWork.push(code);\r\n } else {\r\n code();\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default withCookies((props: any) => (\r\n ));\r\n","export const smesshyVersion = \"1745\";\r\n","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","// import React from 'react';\r\n// import ReactDOM from 'react-dom/client';\r\n// import './index.css';\r\n// import App from './App';\r\n// import reportWebVitals from './reportWebVitals';\r\n\r\n// const root = ReactDOM.createRoot(\r\n// document.getElementById('root') as HTMLElement\r\n// );\r\n\r\n// root.render(\r\n// <>\r\n// \r\n// \r\n// );\r\n\r\n// // If you want to start measuring performance in your app, pass a function\r\n// // to log results (for example: reportWebVitals(console.log))\r\n// // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\n// reportWebVitals();\r\n\r\n\r\n//import 'bootstrap/dist/css/bootstrap.css';\r\nimport './index.css';\r\nimport React from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\nconst root = createRoot(rootElement!);\r\n\r\nroot.render(\r\n \r\n \r\n );\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://cra.link/PWA\r\n//serviceWorkerRegistration.unregister();\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"names":["Object","defineProperty","exports","value","obj","_react","require","_react2","__esModule","default","createElement","width","height","viewBox","d","fill","fillRule","module","b","Symbol","for","c","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","prototype","hasOwnProperty","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","key","ref","__self","__source","call","defaultProps","props","_owner","current","jsx","jsxs","iterator","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","assign","D","E","this","context","refs","updater","F","G","isReactComponent","setState","Error","forceUpdate","H","constructor","isPureReactComponent","I","Array","isArray","J","K","L","M","arguments","length","children","O","P","Q","replace","escape","toString","R","N","push","next","done","String","keys","join","S","T","_status","_result","then","U","V","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","Children","map","forEach","apply","count","toArray","only","Component","PureComponent","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createFactory","bind","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","name","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","concat","targetStatics","sourceStatics","i","descriptor","pop","sortIndex","id","performance","now","unstable_now","Date","setTimeout","clearTimeout","setImmediate","callback","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_forceFrameRate","console","error","Math","floor","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","unstable_shouldYield","unstable_wrapCallback","base64","ieee754","customInspectSymbol","Buffer","K_MAX_LENGTH","createBuffer","RangeError","buf","Uint8Array","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","isBuffer","len","checked","undefined","numberIsNaN","data","fromObject","toPrimitive","assertSize","size","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","charCodeAt","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","enumerable","get","poolSize","alloc","allocUnsafeSlow","_isBuffer","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","code","errors","sym","getMessage","Base","super","writable","configurable","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","abs","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","createRoot","hydrateRoot","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","num","output","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","func","number","object","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_extends","source","_createClass","defineProperties","Constructor","protoProps","staticProps","_interopRequireDefault","_classnames2","_propTypes2","_check2","_x2","_util","Toggle","_PureComponent","instance","_classCallCheck","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","handleClick","handleTouchStart","handleTouchMove","handleTouchEnd","handleFocus","handleBlur","previouslyChecked","defaultChecked","state","hasFocus","subClass","superClass","create","_inherits","prevProps","event","disabled","checkbox","moved","preventDefault","focus","click","startX","pointerCoord","activated","currentX","endX","onFocus","onBlur","icons","_this2","_props","className","inputProps","_objectWithoutProperties","classes","onClick","onTouchStart","onTouchMove","onTouchEnd","getIcon","_ref","unchecked","onChange","hasOwn","classNames","argType","inner","changedTouches","touch","clientX","clientY","pageX","pageY","aa","ca","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","toUpperCase","ta","pa","isNaN","qa","test","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","match","Na","Oa","prepareStackTrace","Reflect","construct","Pa","tag","Qa","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","body","Ya","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","options","selected","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","search","tel","text","time","url","week","me","ne","oe","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","of","has","pf","qf","rf","random","sf","capture","passive","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Promise","Jf","queueMicrotask","resolve","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","eh","fh","gh","hh","ih","jh","kh","nh","_reactInternals","lh","mh","oh","shouldComponentUpdate","ph","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_stringRef","th","uh","vh","index","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ii","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useMutableSource","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","WeakMap","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","createElementNS","autoFocus","createTextNode","Hj","Ij","Jj","Kj","Lj","WeakSet","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","unstable_strictMode","findDOMNode","flushSync","hydrate","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","opt","pairs","dec","decode","pair","tryDecode","enc","encode","fieldContentRegExp","maxAge","domain","path","expires","toUTCString","httpOnly","secure","sameSite","decodeURIComponent","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","s","NaN","rt","checkDCE","o","toStringTag","debug","info","warn","Log","reset","setInterval","clearInterval","Global","_testing","setXMLHttpRequest","localStorage","sessionStorage","XMLHttpRequest","MetadataService","JsonService","_settings","_jsonService","resetSigningKeys","signingKeys","getMetadata","metadata","metadataUrl","getJson","metadataSeed","reject","getIssuer","_getMetadataProperty","getAuthorizationEndpoint","getUserInfoEndpoint","getTokenEndpoint","getCheckSessionIframe","getEndSessionEndpoint","getRevocationEndpoint","getKeysEndpoint","getSigningKeys","_metadataUrl","authority","UrlUtility","addQueryParam","parseUrlFragment","exec","JoseUtil","jws","KeyUtil","X509","crypto","hextob64u","b64tohex","AllowedSigningAlgs","OidcClientSettings","client_id","client_secret","response_type","_","scope","redirect_uri","post_logout_redirect_uri","client_authentication","prompt","max_age","ui_locales","acr_values","resource","response_mode","filterProtocolClaims","loadUserInfo","staleStateAge","clockSkew","clockService","ClockService","userInfoJwtIssuer","mergeClaims","stateStore","WebStorageStateStore","ResponseValidatorCtor","ResponseValidator","$","MetadataServiceCtor","extraQueryParams","tt","et","extraTokenParams","_authority","_metadata","_metadataSeed","_signingKeys","_client_id","_client_secret","_response_type","_scope","_redirect_uri","_post_logout_redirect_uri","_client_authentication","_prompt","_display","_max_age","_ui_locales","_acr_values","_resource","_response_mode","_filterProtocolClaims","_loadUserInfo","_staleStateAge","_clockSkew","_clockService","_userInfoJwtIssuer","_mergeClaims","_stateStore","_validator","_metadataService","_extraQueryParams","_extraTokenParams","getEpochTime","prefix","store","_store","_prefix","setItem","getItem","remove","removeItem","getAllKeys","_contentTypes","_XMLHttpRequest","_jwtHandler","open","onload","status","getResponseHeader","find","startsWith","parse","responseText","statusText","onerror","setRequestHeader","send","postForm","btoa","SigninRequest","id_token_hint","login_hint","request","request_uri","request_type","skipUserInfo","isOidc","isCode","SigninState","nonce","code_verifier","code_challenge","filter","isOAuth","State","created","_id","_data","_created","_request_type","toStorageString","fromStorageString","clearStaleState","all","OidcClient","createSigninRequest","readSigninResponseState","SigninResponse","response","processSigninResponse","validateSigninResponse","createSignoutRequest","SignoutRequest","readSignoutResponseState","SignoutResponse","ErrorResponse","processSignoutResponse","validateSignoutResponse","settings","validator","metadataService","TokenClient","exchangeCode","grant_type","exchangeRefreshToken","refresh_token","error_description","error_uri","session_state","_nonce","_code_verifier","hashString","_code_challenge","hexToBase64Url","_skipUserInfo","getRandomValues","msCrypto","User","id_token","access_token","token_type","profile","expires_at","expires_in","AccessTokenEvents","accessTokenExpiringNotificationTime","accessTokenExpiringTimer","Timer","accessTokenExpiredTimer","_accessTokenExpiringNotificationTime","_accessTokenExpiring","_accessTokenExpired","load","init","cancel","unload","addAccessTokenExpiring","addHandler","removeAccessTokenExpiring","removeHandler","addAccessTokenExpired","removeAccessTokenExpired","Event","_name","_callbacks","findIndex","raise","SessionMonitor","CheckSessionIFrame","timer","_userManager","_CheckSessionIFrameCtor","_timer","events","addUserLoaded","_start","addUserUnloaded","_stop","getUser","monitorAnonymousSession","querySessionStatus","sid","_sub","_sid","_checkSessionIFrame","_checkSessionInterval","_stopCheckSessionOnError","_callback","stop","_raiseUserSessionChanged","_raiseUserSignedOut","_raiseUserSignedIn","checkSessionInterval","stopCheckSessionOnError","_url","_interval","_stopOnError","_frame_origin","_frame","visibility","position","_boundMessageEvent","_message","origin","_session_state","TokenRevocationClient","_XMLHttpRequestCtor","revoke","_revoke","CordovaPopupWindow","_promise","_resolve","_reject","features","popupWindowFeatures","popupWindowTarget","startUrl","_isInAppBrowserInstalled","some","navigate","cordova","_error","_popup","InAppBrowser","_exitCallbackEvent","_exitCallback","_loadStartCallbackEvent","_loadStartCallback","promise","_success","_cleanup","close","Version","InMemoryWebStorage","UserManager","CordovaPopupNavigator","CordovaIFrameNavigator","UserInfoService","_userInfoService","_joseUtil","_tokenClient","_processSigninParams","_validateTokens","_processClaims","isOpenIdConnect","getClaims","_processCode","_validateIdTokenAndAccessToken","_validateIdToken","_validateIdTokenAttributes","validateJwtAttributes","_validateAccessToken","_getSigningKeyForJwt","header","kid","_filterByAlg","alg","_getSigningKeyForJwtWithSingleRetry","parseJwt","validateJwt","kty","at_hash","_getClaimsFromJwt","iss","KEYUTIL","userAgent","lang","superclass","lib","mixIn","$super","clone","WordArray","words","sigBytes","clamp","Hex","Latin1","Utf8","unescape","BufferedBlockAlgorithm","_nDataBytes","_append","_process","blockSize","_minBufferSize","_doProcessBlock","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","x64","Word","high","low","toX32","Base64","_map","sqrt","SHA256","_hash","HmacSHA256","SHA512","nt","HmacSHA512","SHA384","HmacSHA384","fromNumber","appName","am","DB","DM","DV","FV","F1","F2","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","mod","revert","reduce","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","Rt","It","Dt","getTime","chunkSize","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd","square","appVersion","dmp1","dmq1","coeff","curve","zinv","fromBigInteger","infinity","doPublic","setPublic","isPublic","isPrivate","encrypt","encryptOAEP","MessageDigest","Util","getCanonicalAlgName","getHashLength","Nr","hashHex","Ur","toBigInteger","getX","getY","isInfinity","twice","getInfinity","multiplyTwo","getQ","getA","getB","decodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","decodeFrom","decodeFromHex","add2D","twice2D","multiply2D","isOnCurve","validate","Sr","RegExp","KJUR","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","getPEMStringFromHex","Mr","newObject","ASN1Object","DERBoolean","DERInteger","DERBitString","DEROctetString","DERNull","DERObjectIdentifier","DEREnumerated","DERUTF8String","DERNumericString","DERPrintableString","DERTeletexString","DERIA5String","DERUTCTime","DERGeneralizedTime","DERVisibleString","DERBMPString","DERSequence","DERSet","DERTaggedObject","explicit","jsonToASN1HEX","getEncodedHex","oidHexToInt","oidIntToHex","params","getLengthHexFromValue","hV","hTLV","isModified","getFreshValueHex","hL","hT","getValueHex","setByParam","tlv","DERAbstractString","getString","setString","Dr","setStringHex","hex","DERAbstractTime","localDateToUTC","getTimezoneOffset","formatDate","zeroPadding","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","Pr","setByDateValue","UTC","setByDate","DERAbstractStructured","setByASN1ObjectArray","asn1Array","appendASN1Object","setByBigInteger","setByInteger","setValueHex","int","setHexValueIncludingUnusedBits","setUnusedBitsAndHexValue","setByBinaryString","setByBooleanArray","newFalseArray","bin","setValueOidString","setValueName","x509","OID","name2oid","setValueNameOrOid","oid","withMillis","millis","sortFlag","sort","sortflag","isExplicit","asn1Object","setASN1Object","tage","tagi","wr","Fr","Er","xr","Ar","kr","Cr","Tr","Rr","Ir","qr","Gr","Lr","Jr","Br","Or","jr","Hr","Vr","Kr","Wr","zr","Yr","Xr","$r","getLblen","getL","getVblen","getVidx","getV","getTLV","getTLVblen","getNextSiblingIdx","getChildIdx","getNthChildIdx","getIdxbyList","getIdxbyListEx","isContextTag","getTLVbyList","getTLVbyListEx","getVbyList","getVbyListEx","getInt","getOID","Qr","getOIDName","oid2name","hextooidstr","dump","ommit_long_octet","isASN1HEX","oidname","x509ExtName","checkStrictDER","isHex","utf8tob64u","b64utoutf8","isBase64","isBase64URL","isIntegerArray","isPrintable","isIA5","isMail","DIGESTINFOHEAD","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","MD5withRSA","SHA1withRSA","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","RIPEMD160withRSA","MD5withECDSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","RIPEMD160withECDSA","SHA1withDSA","SHA224withDSA","SHA256withDSA","MD5withRSAandMGF1","SHAwithRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","MD5","SHA1","SHA224","RIPEMD160","getDigestInfoHex","getPaddedDigestInfoHex","digestString","digestHex","sha256Hex","sha512Hex","isKey","DSA","ECDSA","prov","SECURERANDOMGEN","getRandomHexOfNbytes","getRandomBigIntegerOfNbytes","getRandomHexOfNbits","getRandomBigIntegerOfNbits","getRandomBigIntegerZeroToMax","getRandomBigIntegerMinToMax","setAlgAndProvider","updateString","updateHex","sjcl","hash","codec","toBits","fromBits","algName","provName","HASHLENGTH","Mac","algProv","mac","pass","doFinal","doFinalString","doFinalHex","setPassword","utf8","rstr","b64u","Signature","_setAlgNames","mdAlgName","pubkeyAlgName","_zeroPaddingOfSignature","Zr","getKey","prvKey","pubKey","sign","sHashHex","ecprvhex","eccurvename","prv","hSign","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","signString","signHex","verify","ecpubhex","pub","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","initParams","psssaltlen","prvkeypem","prvkeypas","Cipher","getAlgByKeyAndName","decrypt","decryptOAEP","oidhex2name","ECParameterDB","getName","getBigRandom","setNamedCurve","ecparams","getByName","prvKeyHex","pubKeyHex","curveName","setPrivateKeyHex","setPublicKeyHex","getPublicKeyXYHex","keylen","getShortNISTPCurveName","generateKeyPairHex","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","verifyHex","parseSigHex","verifyRaw","Bitcoin","parseSig","toByteArraySigned","parseSigCompact","readPKCS5PrvKeyHex","readPKCS8PrvKeyHex","readPKCS8PubKeyHex","readCertPubKeyHex","parseSigHexInHexRS","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","regist","AES","iv","ciphertext","proc","eproc","ivlen","TripleDES","DES","cipher","ivsalt","keyhex","ivhex","parsePKCS5PEM","getKeyAndUnusedIvByPasscodeAndIvsalt","decryptKeyB64","getDecryptedKeyHex","getEncryptedPKCS5PEMFromPrvKeyHex","parseHexOfEncryptedPKCS8","encryptionSchemeAlg","encryptionSchemeIV","pbkdf2Salt","pbkdf2Iter","getPBKDF2KeyHexFromParam","PBKDF2","keySize","iterations","_getPlainPKCS8HexFromEncryptedPKCS8PEM","getKeyFromEncryptedPKCS8PEM","getKeyFromPlainPrivatePKCS8Hex","parsePlainPrivatePKCS8Hex","algparam","algoid","keyidx","getKeyFromPlainPrivatePKCS8PEM","_getKeyFromPublicPKCS8Hex","parsePublicRawRSAKeyHex","parsePublicPKCS8Hex","xy","dp","dq","co","setPrivateEx","setPrivate","crv","on","getPublicKeyFromCertHex","getPublicKeyFromCertPEM","generateKeypair","generate","prvKeyObj","pubKeyObj","getPEM","SubjectPublicKeyInfo","seq","octstr","bitstr","null","getKeyFromCSRPEM","getKeyFromCSRHex","parseCSRHex","p8pubkeyhex","getKeyID","getJWKFromKey","getPosArrayOfChildrenFromHex","getHexValueArrayOfChildrenFromHex","readPrivateKeyFromPEMString","readPKCS5PubKeyHex","readCertHex","getPublicKeyHex","tn","en","rn","nn","AlgorithmIdentifier","PSSNAME2ASN1TLV","HEX2STAG","foffset","aExtInfo","getVersion","getSerialNumberHex","getSignatureAlgorithmField","getAlgorithmIdentifierName","getX500Name","getIssuerHex","getIssuerString","hex2dn","getSubject","getSubjectHex","getSubjectString","getNotBefore","getNotAfter","getPublicKeyIdx","getPublicKeyContentIdx","getPublicKey","getSignatureAlgorithmName","getSignatureValueHex","verifySignature","parseExt","critical","vidx","getExtInfo","getExtBasicConstraints","extname","cA","pathLen","getExtKeyUsage","names","getExtKeyUsageString","getExtKeyUsageBin","KEYUSAGE_NAME","getExtSubjectKeyIdentifier","getExtAuthorityKeyIdentifier","getGeneralNames","issuer","dn","sn","getExtExtKeyUsage","getExtExtKeyUsageName","getExtSubjectAltName","getExtIssuerAltName","getGeneralName","rfc822","dns","uri","ip","getExtSubjectAltName2","getExtCRLDistributionPoints","getDistributionPoint","dpname","getDistributionPointName","full","getExtCRLDistributionPointsURI","getExtAIAInfo","ocsp","caissuer","getExtAuthorityInfoAccess","getExtCertificatePolicies","getPolicyInformation","policyoid","getPolicyQualifierInfo","cps","unotice","getUserNotice","exptext","getDisplayText","getExtCRLNumber","getExtCRLReason","getExtOcspNonce","getExtOcspNoCheck","getExtAdobeTimeStamp","reqauth","getX500NameRule","ds","getX500NameArray","dnarraytostr","getRDN","getAttrTypeAndValue","oid2atype","readCertPEM","getParam","serial","sigalg","notbefore","notafter","subject","sbjpubkey","getExtParamArray","sighex","getExtParam","extn","findExt","updateExtCDPFullURI","updateExtAIAOCSP","updateExtAIACAIssuer","getInfo","dname","doPrivate","signPSS","verifyPSS","SALT_LEN_HLEN","SALT_LEN_MAX","SALT_LEN_RECOVER","hex2rdn","hex2attrTypeValue","getPublicKeyInfoPropOfCertPEM","JWS","isSafeJSONString","parseJWS","parsedJWS","sigvalH","headB64U","payloadB64U","sigvalB64U","sigvalBI","headS","payloadS","readSafeJSONString","jwsalg2sigalg","headerObj","payloadObj","headerPP","payloadPP","sigHex","verifyJWT","inArray","includedArray","aud","IntDate","getNow","verifyAt","gracePeriod","nbf","iat","jti","HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","PS256","PS384","PS512","none","getEncodedSignatureValueFromJWS","getJWKthumbprint","getZulu","intDate2UTCString","intDate2Zulu","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","SecureRandom","rng_seed_time","BigInteger","RSAKey","EDSA","an","un","cn","hn","ln","ASN1HEX","CryptoJS","b64toBA","stoBA","BAtos","BAtohex","stohex","stob64","stob64u","b64utos","b64tob64u","b64utob64","hex2b64","b64utohex","utf8tob64","b64toutf8","utf8tohex","hextoutf8","hextorstr","rstrtohex","hextob64","hextob64nl","b64nltohex","hextopem","pemtohex","hextoArrayBuffer","DataView","setUint8","ArrayBuffertohex","getUint8","zulutomsec","zulutosec","zulutodate","datetozulu","getUTCMilliseconds","uricmptohex","hextouricmp","ipv6tohex","hextoipv6","hextoip","iptohex","encodeURIComponentAll","newline_toUnix","newline_toDos","hextoposhex","intarystrtohex","strdiffidx","xn","An","kn","Pn","SlowBuffer","INSPECT_MAX_BYTES","kMaxLength","_augment","species","Function","x5c","_validateJwt","azp","scopes","SilentRenewService","UserManagerSettings","_events","UserManagerEvents","_silentRenewService","automaticSilentRenew","startSilentRenew","monitorSession","_sessionMonitor","_tokenRevocationClient","_loadUser","removeUser","storeUser","signinRedirect","useReplaceToNavigate","_signinStart","_redirectNavigator","signinRedirectCallback","_signinEnd","signinPopup","popup_redirect_uri","_signin","_popupNavigator","signinPopupCallback","_signinCallback","signinSilent","_useRefreshToken","includeIdTokenInSilentRenew","validateSubOnSilentRenew","current_sub","_signinSilentIframe","_validateIdTokenFromTokenRefreshToken","auth_time","silent_redirect_uri","_iframeNavigator","silentRequestTimeout","signinSilentCallback","signinCallback","signoutCallback","signoutRedirectCallback","signoutPopupCallback","query_status_response_type","prepare","signoutRedirect","_signoutStart","_signoutEnd","signoutPopup","popup_post_logout_redirect_uri","_signout","revokeAccessTokenOnSignout","_revokeInternal","revokeAccessToken","_revokeAccessTokenInternal","_revokeRefreshTokenInternal","stopSilentRenew","_userStore","_userStoreKey","redirectNavigator","popupNavigator","iframeNavigator","userStore","RedirectNavigator","PopupNavigator","IFrameNavigator","_popup_redirect_uri","_popup_post_logout_redirect_uri","_popupWindowFeatures","_popupWindowTarget","_silent_redirect_uri","_silentRequestTimeout","_automaticSilentRenew","_validateSubOnSilentRenew","_includeIdTokenInSilentRenew","_monitorSession","_monitorAnonymousSession","_query_status_response_type","_revokeAccessTokenOnSignout","PopupWindow","notifyOpener","_checkForPopupClosedTimer","_checkForPopupClosed","closed","opener","IFrameWindow","notifyParent","_timeout","_origin","parent","protocol","host","_userLoaded","_userUnloaded","_silentRenewError","_userSignedIn","_userSignedOut","_userSessionChanged","removeUserLoaded","removeUserUnloaded","addSilentRenewError","removeSilentRenewError","_raiseSilentRenewError","addUserSignedIn","removeUserSignedIn","addUserSignedOut","removeUserSignedOut","addUserSessionChanged","removeUserSessionChanged","_nowFunc","expiration","_timerHandle","_expiration","_tokenExpiring","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","chunkId","promises","miniCssF","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","prev","doneFns","head","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","NavigationContext","React","LocationContext","RouteContext","outlet","matches","invariant","cond","matchRoutes","routes","locationArg","basename","pathname","stripBasename","parsePath","branches","flattenRoutes","score","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","parentPath","route","relativePath","caseSensitive","joinPaths","computeScore","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","segments","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","pattern","matcher","paramNames","regexpSource","paramName","endsWith","compilePath","captureGroups","splatValue","safelyDecodeURIComponent","resolveTo","toArg","routePathnames","locationPathname","to","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","nextChar","paths","useInRouterContext","useLocation","useNavigate","routePathnamesJson","activeRef","go","_renderMatches","parentMatches","reduceRight","React.createElement","Navigate","Route","Router","basenameProp","locationProp","navigationType","NavigationType","Pop","static","staticProp","navigationContext","trailingPathname","Routes","routeMatch","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","useRoutes","createRoutesFromChildren","BrowserRouter","historyRef","createBrowserHistory","history","listen","useSearchParams","defaultInit","defaultSearchParamsRef","createSearchParams","searchParams","getAll","append","nextInit","navigateOptions","URLSearchParams","readCookie","cleanValue","cleanupCookieValue","doNotParse","isParsingCookie","__assign","Cookies","cookies","changeListeners","HAS_DOCUMENT_COOKIE","cookie","parseCookies","_updateBrowserValues","parseOptions","_emitChange","result","name_1","_a","finalOptions","addChangeListener","removeChangeListener","idx","CookiesContext","__extends","extendStatics","__","__rest","propertyIsEnumerable","_typeof","trimLeft","trimRight","tinycolor","opts","rgb","format","named","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","convertToPercentage","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_roundA","round","_format","_gradientType","gradientType","_ok","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","pad2","rgbaToArgbHex","convertDecimalToHex","_desaturate","amount","toHsl","clamp01","_saturate","_greyscale","desaturate","_lighten","_brighten","toRgb","_darken","_spin","hue","_complement","polyad","step","_splitcomplement","_analogous","results","slices","part","_monochromatic","toHsv","modification","isDark","getBrightness","isLight","isValid","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","setAlpha","toHsvString","toHslString","toHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","args","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","color1","color2","mix","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","parms","level","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","parseFloat","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","Point2D","octantFrom","ptFrom","sx","sy","moveOctantFrom","dx","dy","newRelative","distance","angle","cos","sin","newRotated","ptCenter","sinA","cosA","x1","y1","y2","angleToward","destination","atan2","taxiDistance","midTo","stepLineLow","pt0","pt1","into","stepLineHigh","lineTo","reverse","pushTL","using","pushTR","pushBL","pushBR","distanceTo","inRect","rect","right","bottom","normalizeAngle","PI","angleDiff","angleA","angleB","windOrder","pts","areaTotal","ptNext","pt","componentDistanceWithMoveOctantTo","ptTo","moveOct","coef","moveOctantPointDistanceCoeficients","sutherlandHodgman","subjectPolygon","clipPolygon","outputList","cp1","cp2","inputList","isInside","intersection","polygonArea","polygon","n1","n2","n3","center","octantFromOffsets","offsetsFromOctant","octant","SQRT2","LRUStrings","addFirst","addNode","removeAny","removeLast","DoublyLinkedPointList","isEmpty","addLast","newNode","SeededRandom","seed","nextFloat","imul","measureTextCanvas","colorMixKM","buf1","off1","buf2","off2","weight2","bufResult","offResult","latent","c0","c3","c00","c11","c22","c33","c01","c02","evalPolynomial","concentration0","concentration1","concentration2","concentration3","missingRed","missingGreen","missingBlue","latentToRgb","latent1","latent2","weight1","lerpLatent","rgbToLatent","off","ix","iy","iz","tx","ty","tz","lut","rmix","gmix","bmix","getLookUpTable","inPos","outPos","numBits","codeBuffer","inputDecoded","distExtra","lenghtBase","lengthExtra","distBase","lengthDezigzag","Huffman","sizeListArray","sizeListOffset","sizeListCount","fast","Uint16Array","firstCode","firstSymbol","maxCode","Int32Array","nextCode","sizes","bitReverse","bits","fillBits","receive","huffmanDecode","fastBits","parseHuffmanBlock","dist","computeHuffmanCodes","lenCodes","codeLengthSizes","hlit","hdist","hclen","codeLength","decodeChar","block","decodeBase85","final","decompress","PageChange","addProgramLocations","gcFrom","programInfo","checkLoc","GPUChecker","attribLocations","vertexPosition","checkAPI","getAttribLocation","program","texCoordLocation","initPermanentStorage","textureCallback","vertexBuffers","addPermanentStorage","buffers","vertexPositionBuffer","texCoordBuffer","positions","Float32Array","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","coords","page","crcDebug","pageWetLatentCTexture","pageWetLatentMTexture","pageWetDepthTexture","pageDryDepthTexture","pageWetAgeTexture","pageDryLatentCTexture","pageDryLatentMTexture","pageVisibleLatentCTexture","pageVisibleLatentMTexture","pageWetLatentCFramebufferW","pageWetLatentMFramebufferW","pageWetDepthFramebufferW","pageDryDepthFramebufferW","pageWetAgeFramebufferW","pageDryLatentCFramebufferW","pageDryLatentMFramebufferW","pageVisibleLatentCFramebufferW","pageVisibleLatentMFramebufferW","setTextureCoordBuffer","processChanges","GPURunner","setViewport","check","preparePageForStartup","selectStartupProgram","initializeStartupProgram","specializeStartupRoutine","runStartupRoutine","finalizeStartup","applyStartupToPage","preparePageForProcess","selectProcessProgram","initializeProcessProgram","specializeProcessRoutine","runProcessRoutine","finalizeProcess","applyProcessToPage","preparePageForFinish","selectFinishProgram","initializeFinishProgram","specializeFinishRoutine","runFinishRoutine","finalizeFinish","applyFinishToPage","flush","workingFrameFactory","clearUsage","App","trustGPU","healthy","doTrustGPU","doAvoidGPU","debugGetIntTexture","tex","entries","byte","texBuff","sampFb","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","TEXTURE_2D","resBuff","UNSIGNED_BYTE","UNSIGNED_INT","RGBA","RGBA_INTEGER","Uint32Array","readPixels","vsSource","verts","TouchPageChange","getPrograms","fsSourceExternalToLatent","externalToLatentProgram","fsSourceLatentToExternal","latentToExternalProgram","fsSourceProcessAccumulateTakes","processAccumulateTakesProgram","fsSourceProcessCommitAccumulator","processCommitAccumulatorProgram","fsSourceWetChangesToVisibleChanges","wetChangesToVisibleChangesProgram","fsSourceVisibleChangesToFinal","visibleChangesToFinalProgram","fsSourceCentralPullWetChanges","centralPullWetChangesProgram","fsSourceDebugRenderDepth","debugRenderDepth","fsSourceDebugTypeEffects","debugTypeEffects","initProgramLocations","uniformLocations","addStartupProgramLocations","addFinalProgramLocations","addProcessProgramLocations","addFinishProgramLocations","addSharedProgramLocations","kmLookupTexNum","getUniformLocation","workingLatentCTexNum","workingLatentMTexNum","workingWetDepthTexNum","workingDryDepthTexNum","accumLatentCTexNum","accumLatentMTexNum","accumWetDepthTexNum","accumDryDepthTexNum","referenceLatentCTexNum","referenceLatentMTexNum","referenceWetDepthTexNum","referenceDryDepthTexNum","maxDepthTexNum","actionCommitTexNum","actionFromTexNum","actionFracTexNum","maxDepthTextureIndex","actionTextureIndex","writeAccum","actionTextureOffset","maxDepthTextureOffset","dryTransmits","doAntiAlias","workingWetAgeTexNum","doDepthLighting","touchBuffers","kmLookupTexture","initTexture","nullDepthTexture","nullLatentCTexture","nullLatentMTexture","activeTexture","TEXTURE0","kmLookupTexNumVal","bindTexture","texImage2D","R8UI","RED_INTEGER","accumWetDepthTexNumVal","R16UI","UNSIGNED_SHORT","accumLatentCTexNumVal","RGBA16UI","accumLatentMTexNumVal","tipsAndLocations","tipApplication","centralPull","activeWorkingLatentCTexture","activeWorkingLatentMTexture","activeWorkingDepthTexture","activeWorkingFramebuffer","activeAccLatentCTexture","activeAccLatentMTexture","activeAccDepthTexture","activeAccFramebuffer","activeOutputLatentCTexture","activeOutputLatentMTexture","activeOutputDepthTexture","activeOutputFramebuffer","activeStashedLatentCTexture","activeStashedLatentMTexture","activeStashedDepthTexture","activeStashedFramebuffer","activePreservedLatentCTexture","activePreservedLatentMTexture","activePreservedDepthTexture","activePreservedFramebuffer","initialWetLatentCTexture","initialWetLatentMTexture","initialWetDepthTexture","initialWetAgeTexture","working1LatentCTexture","working1LatentMTexture","working1DepthTexture","working1Framebuffer","working2LatentCTexture","working2LatentMTexture","working2DepthTexture","working2Framebuffer","working3LatentCTexture","working3LatentMTexture","working3DepthTexture","working3Framebuffer","accLatentCTexture","accLatentMTexture","accDepthTexture","accFramebuffer","finalWetAgeTexture","debugShowAt","debugShowAt2","workingFrameTextureNumbers","workingLatentCTexNumVal","workingLatentMTexNumVal","workingWetDepthTexNumVal","debugRenderLatentOutput","piRestart","depthRender","saveInputLatentCTex","saveInputLatentMTex","useOutputLatentCTex","useOutputLatentMTex","saveInputDepthTex","useOutputDepthTex","useProgram","_initializeOutputProgram","drawArrays","TRIANGLES","clearRect","drawImage","canvas","debugMeasureDepthTexture","texDepth","values","debugSpewArray","intPer","cellWidth","scaleDown","altWidth","altHeight","spew","cellSpew","debugSpewDepthTexture","debugSpewLatentTexture","texLat","debugMeasureOutput","latC","latM","dep","cnt","totD","totC0","totC1","totC2","totC3","totM0","totM1","totM2","totM3","bindWorkingFrame","frame","latentCTex","latentMTex","depthTex","activateTexture","bindOutputFrame","bindExternalOutputFrame","fbTemp","colorTex","COLOR_ATTACHMENT1","drawBuffers","stashOutput","bindStashAsWorking","preserveOutput","bindPreservedAsWorking","directOutputTowardAccumulator","useTempAccumulator","useAccumulator","useAvailableOutputFrame","usePageReference","wetDepthTex","dryDepthTex","referenceDryDepthTexNumVal","referenceWetDepthTexNumVal","referenceLatentMTexNumVal","referenceLatentCTexNumVal","viewport","initTouchWetPageChange","applyTouchWetPageChange","initTouchVisiblePageChange","applyTouchVisiblePageChange","_initializeStartupProgram","_initializeSharedProgram","doInitializeProgram","uniform1i","workingDryDepthTexNumVal","accumDryDepthTexNumVal","_specializeStartupRoutine","working","internalFormat","tex0","tex1","tex2","tex3","_runStartupRoutine","fbTemp1","READ_FRAMEBUFFER","fbTemp2","DRAW_FRAMEBUFFER","blitFramebuffer","COLOR_BUFFER_BIT","NEAREST","invalidateFramebuffer","deleteFramebuffer","_finalizeStartup","_initializeProcessProgram","actionFromTexNumVal","actionFracTexNumVal","actionCommitTexNumVal","maxDepthTexNumVal","_specializeProcessRoutine","_runProcessRoutine","accumulateForEntries","perEntryDo","tipLoc","accumulateTextures","textures","idxFirst","idxLast","getAccumulateProgram","getCommitProgram","offsetX","offsetY","stopNow","uniform2i","idxMax","idxsAction","checkFB","_finalizeProcess","buff0123","buff5678","buffSelf","anglePushes","quadParams","memberStart","memberMid","memberEnd","aiOff","quad","pctStart","pctEnd","pctMid","total","scaleStart","scaleMid","scaleEnd","scaleGap","scaleMax","scaleMin","buffOff","cellsWidth","cellsHeight","pageFirstY","aiFromPageOff","ptLocate","aLocate","ptPage","aiPusher","texSubImage2D","_initializeFinishProgram","workingWetAgeTexNumVal","_specializeFinishRoutine","_runFinishRoutine","fbWAge","initTextureFramebuffer","COLOR_ATTACHMENT2","_finalizeFinish","crcVisible","fsColorMixLatentSource","fsColorMixLerpLatentSource","fsColorMixRGBToLatentSource","fsColorMixLatentToRGBSource","fsActionPositionsSource","fsSourceDoDepthLighting","fsSourceProcessGlobals","CirclePageChange","fsSourceDrop","dropProgram","externalDropDepthTexNum","externalDropDepthTextureOffset","dropColor","circleBuffers","maxDepthTexture","moveFromTexture","moveFracTexture","commitTexture","dropDepthTexture","circleChangeTextureSet","instrument","TipInstrument","finger","motion","TipMotion","press","TipAction","unknown","modifier","TEXTURE_2D_ARRAY","texImage3D","moveEntries","texFrom","RGBA32F","FLOAT","texFrac","R32F","RED","texCommit","maxEntries","texMax","initialDrop","piSave","externalDropDepthTexNumVal","uniform4f","dropOffX","dropOffY","depth","tip","specialApplication","changeTextures","getChangeTextureIndexes","stopEarly","DryPageChange","fsSourceStartup","startupProgram","fsSourceProcessWet","processWetProgram","fsSourceProcessDry","processDryProgram","addProcessWetProgramLocations","addProcessDryProgramLocations","finishProgram","pageAgeTexNum","pageWetDepthTexNum","pageWetLatentCTexNum","pageWetLatentMTexNum","factor","pageDryDepthTexNum","pageDryLatentCTexNum","pageDryLatentMTexNum","pageVisLatentCTexNum","pageVisLatentMTexNum","dryBuffers","decrementedAgeTexture","decrementedAgeFramebuffer","finalWetDepthTexture","finalDryDepthTexture","finalDryLatentCTexture","finalDryLatentMTexture","finalWetLatentCTexture","finalWetLatentMTexture","finalWetAgeColorDepthFramebuffer","finalDryColorDepthFramebuffer","initDryPageChange","applyDryPageChange","wetAgeTexNum","wetDepthTexNum","wetLatentCTexNum","wetLatentMTexNum","uniform1f","initializeProcessDryProgram","dryDepthTexNum","dryLatentCTexNum","dryLatentMTexNum","visLatentCTexNum","visLatentMTexNum","blitReadX1","blitReadY1","blitDrawX1","blitDrawY1","BlowPageChange","fsSourceProcess","processProgram","fsSourceFinish","dryAmount","dryPosition","dryRadius","blowBuffers","localWorkingWetDepthTexture","localWorkingDryDepthTexture","localWorkingWetAgeTexture","localWorkingFramebuffer","localResultWetDepthTexture","localResultDryDepthTexture","localResultWetAgeTexture","localResultFramebuffer","uniform2f","resolution","rep","radius","RefreshPageChange","fsSourceFinishDry","finishDryProgram","pageWetAgeTexNum","showDry","refreshBuffers","previousBlows","initRefreshPageChange","ageTexNum","SmearPageChange","fsSourceProcessMeasurePressure","processMeasurePressure","fsSourceProcessDistributePressure","processDistributePressure","fsSourceProcessNOP","processNOP","fsSourceProcessAccumulateScrape","processAccumulateScrape","fsSourceProcessApplyScrapeAccumulator","processApplyAccumulateScrape","pressureTexNum","smearBuffers","maxDepthTextures","moveFromTextures","moveFracTextures","commitTextures","FingerTip","minFingerRadius","maxFingerRadius","smashChangeTextureSet","drag","pressureTexture","pressureFB","specializeProcessRoutineRadius","lastRadius","doSpew","pressureTexNumVal","KnifePageChange","fsSourceProcessScrapeLift","processScrapeLift","fsSourceProcessScrapeWet","processScrapeWet","fsSourceProcessScrapeDry","processScrapeDry","gapPattern","orientCoef","movePerpendicular","knifeBuffers","knifeChangeTextureSet","knife","paintRadius","initPageChangeDryLatentTextureFromPage","applyPageChangeDryLatentTextureToPage","patternDo","getKnifePattern","octMove","ptMovePerp","moveOctantRight","uniform1iv","SamplePageChange","fsSourceProcessConcentrate","processConcentrate","concentrateLine","sampleBuffers","initSamplePageChange","line","texColor","StampPageChange","fsSourceStamp","stampProgram","externalStampColorTexNum","externalStampColorTextureOffset","stampDepth","stampBuffers","stampColorTexture","stampColors","externalStampColorTexNumVal","stampOffX","stampOffY","stampDims","lostContext","errorCode","errorLoc","errorText","errorChecks","clear","ctx","ctxTag","ctxLoc","loc","intFunc","nullIsError","locTag","isContextLost","getError","fbCode","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","aDet","getFramebufferAttachmentParameter","FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE","FRAMEBUFFER_ATTACHMENT_RED_SIZE","FRAMEBUFFER_ATTACHMENT_GREEN_SIZE","FRAMEBUFFER_ATTACHMENT_BLUE_SIZE","FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE","FRAMEBUFFER_UNSUPPORTED","FRAMEBUFFER_INCOMPLETE_MULTISAMPLE","setError","WorkingFrameFactory","maxItems","currentItems","usedItems","cachedItems","cachedLRU","activeTextures","makeKey","frameBuffer","texShapes","ts","usedPair","usedItem","COLOR_ATTACHMENT3","setActivateTexture","removeOldest","cachedL","deleteTexture","fbTag","texTag","item","usedL","newItem","newChecker","initializeGPU","getContext","antialias","powerPreference","failIfMajorPerformanceCaveat","maxTexSize","getParameter","MAX_TEXTURE_SIZE","INVALID_OPERATION","maxActiveTextures","MAX_TEXTURE_IMAGE_UNITS","maxDrawBuffers","MAX_DRAW_BUFFERS","maxColorAttachments","MAX_COLOR_ATTACHMENTS","maxTextureArrayLayers","MAX_ARRAY_TEXTURE_LAYERS","prec","getShaderPrecisionFormat","FRAGMENT_SHADER","HIGH_FLOAT","precision","HIGH_INT","rangeMax","initializedPrograms","vertexShader","loadShader","VERTEX_SHADER","fragmentShaderPrograms","codeInfo","shaderProgram","createProgram","fragmentShader","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","getShaderInfoLog","vertexAttribPointer","enableVertexAttribArray","timeEnd","fromCtx","initCtxSet","targetTexture","createTexture","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","text2","text3","text4","text5","text6","COLOR_ATTACHMENT4","COLOR_ATTACHMENT5","COLOR_ATTACHMENT6","shader","createShader","shaderSource","compileShader","allocateRenderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","fbR","framebufferRenderbuffer","fbW","allocatePage","rbfbrfbw","buffVisibleLatentC","visibleLatentCFramebufferR","visibleLatentCFramebufferW","buffVisibleLatentM","visibleLatentMFramebufferR","visibleLatentMFramebufferW","buffDryLatentC","dryLatentCFramebufferR","dryLatentCFramebufferW","buffDryLatentM","dryLatentMFramebufferR","dryLatentMFramebufferW","buffWetLatentC","wetLatentCFramebufferR","wetLatentCFramebufferW","buffWetLatentM","wetLatentMFramebufferR","wetLatentMFramebufferW","buffWetDepth","wetDepthFramebufferR","wetDepthFramebufferW","buffDryDepth","dryDepthFramebufferR","dryDepthFramebufferW","buffWetAge","wetAgeFramebufferR","wetAgeFramebufferW","getCurrentViewport","initChangeTexture","pageFrame","readX0","readY0","readX1","readY1","writeX0","writeY0","writeX1","writeY1","changeWI","initPageChangeWetDepthTextureFromPage","change","pageReadX0","pageReadX1","changeWriteX1","pageReadY0","changeWriteY0","pageReadY1","changeWriteY1","changeBufs","applyPageChangeWetDepthTextureToPage","pageWriteX0","changeReadX1","pageWriteX1","changeReadY0","pageWriteY0","pageWriteY1","fbRead","initPageChangeWetLatentTextureFromPage","applyPageChangeWetLatentTextureToPage","initPageChangeWetAgeTextureFromPage","applyPageChangeWetAgeTextureToPage","initPageChangeVisibleLatentTextureFromPage","applyPageChangeVisibleLatentTextureToPage","debugGPUGetBuffer","pageFB","intoBuff","changeTexture","debugGPUGetDepth","debugGPUGetLatent","clearPage","clearBufferuiv","COLOR","CellKind","TipEffect","rectTL","MAX_SAFE_INTEGER","rectBR","cells","steps","changeEntries","PageTipPlacement","tipPageCenter","pageBuffer","setWetDry","pageCenter","pageTipCenter","Page","pixToScaleUnits","cPix","scaleUnitsToPix","renderScale","getOffscreenCrc","OffscreenCanvas","cvs","application","lift","makeCircleChangeTextureSet","makeSmearChangeTextureSet","blow","makeKnifeChangeTextureSet","cx","cy","exceptionHandler","rnd","paintDries","cellsTotal","cellData","cellDataBlade","cellDryApplied","wetCanvasOffsets","wetCanvasStage","wetCanvasStageMax","wetCanvasStageOffsets","lastTipPlacement","lastTipApplication","useGPU","onClear","blendDried","fillStyle","fillRect","clearData","offsetOfCoordinates","coordinatesOfOffset","wetColorAtOffset","rOff","visibleColorAtOffset","getWetDepthAtOffset","setWetDepthAtOffset","tipCoordinatesToPageCoordinates","ptTip","getChangeDimensions","minX","maxX","minY","maxY","pageWidth","pageHeight","lastChangeDims","lastWidth","lastHeight","addWidth","addHeight","align","createTouchPageChange","entry","entryMinX","entryMaxX","entryMinY","entryMaxY","effectRadius","changeDims","tipChanges","relCenter","eyeDropper","stamp","applyTouchPageChange","pageChange","collectTipCellData","tipCoordinatesToBufferOffset","pageLoc","pageMinX","pageMaxX","pageMinY","pageMaxY","tipMinX","tipMinY","tipMaxX","tipMaxY","cellDataRows","row","lengthModified","printRelativeModifiedStart","firstCell","adj","pageRelativeStart","rowMinX","copyLength","printRelativeStart","copyFrom","allCellData","fCell","allFlowCells","inBounds","ptOnPrint","stagedDepth","finalDepth","dvTipCells","offDepthHigh","offDepthLow","offWetRed","offWetGreen","offWetBlue","offDryRed","offDryGreen","offDryBlue","move1","removedDepth","move2","move3","move4","move5","modified","writeTipCellData","kindCells","finalKind","background","pageOffset","makeCanvasOffsetDry","makeCanvasOffsetWet","setCellVisibleColor","colorIsSmudge","colorIsBlow","colorIsKnife","preferredMeniscusScrapeDepth","scaledDepth","preferredSmashScrapeDepth","depthRat","backgroundImplicitDepth","offVisRed","offVisGreen","offVisBlue","stageFlow","totalMove","prevError","newError","fCellDest","fracMove","fraction","intMove","ptOnPageSrc","ptOnPageDst","dSrc","dDst","contrib","scale","commitFlow","moveTo","move","toIsSmudge","fromIsSmudge","wTip","ColorToTipApplication","dry","smudge","paint","dropPaint","paintColor","pChange","colorRGB","fillRad","paintVol","newPaintVolume","minCells","smashRadius","octantMove","doFilledCircle","glop","fCellTip","getSingleChangeFlowCell","cellsToEffects","dropDim","ptBuff","maxPrintRadius","ptOnBuff","depthOffset","applyTip","tipKind","runCentralFlowPattern","blowTip","dragDryAmount","dryCells","fCellAir","fCellPage","pageDepth","localDryAmount","saveMove","clearAppliedDry","clearKnifeBladeCells","dragTip","ptStart","ptEnd","radiusStart","radiusEnd","octantLast","stepLine","primaryMoveOctant","smashRadiusOf","radiusStep","radiusTrack","radiusLast","ptLast","ftScrape","getKnifeShape","customizeKnifePattern","getScrapeShape","runKnifeFlowPattern","runDragFlowPattern","dragBlowTip","changes","ft","getCircleShape","refreshVisible","removeTip","smashOnly","stageRadiate","smash","commitRadiate","fCellsRing","fCellsCentralRings","maxDepth","maxTouchDepth","preferredScrapeDepth","ring","stageArcScrape","fCells","curDepth","curMax","moveFwd","maxKindPushDepth","minScrapeDepth","commitArcScrape","corona","maxCoronaDepth","stageOverflows","extra","commitOverflows","stageFill","moves","considered","fCellTrace","_fCellTrace$move","maxMeniscusTouchDepth","minSmashScrapeDepth","commitFill","stageArcBlend","commitArcBlend","performDrag","fillMoves","fCellsMeniscusScrape","fCellsSmashScrape","fCellsMeniscusBlend","tipToPageOff","mainPlacement","bladePlacement","tipKnifeBlade","getFlowCell","tipStart","fCellsKnifeBack","fCellsKnifeEdge","prevDepth","nextDepth","unKindCells","effect","existingWetStage","useGpu","finalFactor","reps","dryChange","iWetCanvasStage","wetCellsStage","wetCellsAll","paintDepthScale","normalizeTouchRadius","inputRadius","useFixedSize","fixedSize","avgLightRadius","avgHeavyRadius","standardFingerRadius","ratioToAvg","tipX","tipY","setCellDepths","fCellSrc","meniscus","minMeniscusScrapeDepth","printInvertedAlphas","maxSmashTouchDepth","maxMeniscusScrapeDepth","coronaGoal","maxCoronaWidth","smashArea","meniscusArea","coronaArea","avgSmash","totalPaint","outerRadius","innerRadius","withAction","circleQuadO","circleQuads","circleQuadI","fillQuad","translate","iRowPair","startO","endO","startI","iCol","tPair","iX","iY","getConnectedCircle","octantEntries","node0","node2","node8","node6","llBuildTop","llBuildBottom","iCenter","iFirst","iLast","traceQuad","addPoint","firstNode","lastNode","centerNode","cAdded","nodeLeftTop","nodeLeftBottom","nodeRightTop","nodeRightBottom","mid","getOrMakeShape","maker","shapes","makeCircleShape","makeScrapeShape","makeKnifeShape","octFrom","fCellMap","newKind","alterKind","cell","finalizeFlowCells","colRangePerRow","rowOffset","iRow","sourceGrids","iStep","sourceGrid","flowCells","octLooks","diag90Frac","diag45Frac","diag0Frac","direct90Frac","direct45Frac","direct0Frac","octFracs","thisGrid","nextGrid","nextNextGrid","ringCells","oct","sX","sY","look","fracs","iLook","iLookX","lookIdx","targ","p2Frac","tipLoc2TextureLoc","textWidth","textHeight","textureCorner","ptOnTexture","mapTextureLocation","srcCx","srcCy","srcDx","addCommitTexture","sourceCellTakes","srcFinger","cts","frac","srcLoc","makeCircleChangeTextureIndexes","indexes","iRing","cachedCircleChangeTextureSet","tipChangeTextures","fatFinger","wFat","hFat","fillFromMax","fillFromMov4","fillFromMov1","tempCell","inverted","srcRing","destRing","addInverted","pri","destRingCell","textLocDest","destMap","destList","textLocSrc","sourceCellTakesP1","sourceCellTakesP2","invertedMap","texFromP1","texFracP1","texFromP2","texFracP2","sources","destLoc","texFromDest","texFracDest","p1","p2","srcFrac","totalFrac","srcTextureLoc","offText","iOctMove","ptOnPrintFlipY","comps","dest","makeSmearChangeTextureIndexes","tipIdx","allOctantIndex","iOctFrom","fromMoveScrapeOctants","makeKnifeChangeTextureIndexes","selfIdx","waitForSelf","removeOcts","getMoveOctantMidlineLookup","moveOctantMidlineLookups","targetPoints","moveOctantMidlineParams","xStart1","yStart1","xEnd1","yEnd1","dI","diag","offsetsDiag","x2","idx1","idx2","ySet","octFront","offsetsFront","octRight","octBack","octLeft","octL0","octR0","octL1","moveOctantLeft","octR1","octL2","octR2","octL3","offsetsFill","offsetsTrace","rCirc","clockBackFirst","counterBackFirst","clockFrontFirst","clockFrontLast","traceArc","processedLastArc","tracePrev","fCellPrev","traceNext","fCellNext","traceArcLast","fCellTraceArc","fCellTraceChannel","processedLastChannel","channelMax","fCellNextChannel","trace","fCellFront","offsetsRight","fCellRight","offsetsLeft","fCellLeft","filledScrapeOctant","offsetsMove","tipCenter","backX","backY","midlinePoints","makeScrapeCell","edge","fCellDst","fCellBlade","fCellBladeFront","ptFront","chainBladeCells","octPt","offsetsExpand","expandX","expandY","ptCenterExpand","ptCellExpand","toothStart","toothWidth","gapWidth","doBack","divs","teethLeft","gapsLeft","maxSmashScrapeDepth","circleQuad35","circleQuad34","circleQuad33","circleQuad32","circleQuad31","circleQuad30","circleQuad29","circleQuad28","circleQuad27","circleQuad26","circleQuad25","circleQuad24","circleQuad23","circleQuad22","circleQuad21","circleQuad20","circleQuad19","circleQuad18","circleQuad17","circleQuad16","circleQuad15","circleQuad14","circleQuad13","circleQuad12","circleQuad11","circleQuad10","circleQuad09","circleQuad08","circleQuad07","circleQuad06","circleQuad05","circleQuad04","circleQuad03","circleQuad02","circleQuad01","smearChannelDepths","smearChannelOctantCenter","allOctants","semi05Octants","semi08Octants","semi18Octants","semi17Octants","semi27Octants","semi26Octants","semi56Octants","semi53Octants","semi83Octants","semi80Octants","semi70Octants","semi71Octants","semi61Octants","semi62Octants","semi32Octants","semi35Octants","moveFromSmashOctants","moveFromMeniscusOctants","moveFlowOctants","moveFrontOctants","AnimationActionKind","recordedAction","lastSerializedAction","stampSeen","hasContent","recordAction","newAction","kind","lastAction","chopAfter","recLength","removeLastStroke","iPeek","cPop","getSerializeNeeded","serialize","actions","act","finish","stampAct","lines","colors","buff","colorCur","paintRadCur","rad","startAct","setInt16","dryAct","setUint16","restore","encoded","decoded","prevDryAction","cLine","iLine","cColor","finalDrawPropsUsed","finalColor","finalRadius","colorFound","radiusFound","countDrawingActions","ApplicationName","QueryParameterNames","LogoutActions","LoginActions","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","SmesshyMainButton","SmesshyPushy","loading","currentPushedState","StartPushedState","prevState","abandonPress","controlThis","targetClass","Disabled","ExtraStyleClass","AllowVScroll","_jsx","targetRef","onContextMenu","onContext","onPointerDown","startPress","onPointerUp","finishPress","onPointerMove","pointerMove","onPointerCancel","cancelPress","Display","SmesshySubButton","SmesshyAsk","SmesshyCommon","initCommon","AppObject","Params","OnShow","maxWidth","maxHeight","backgroundColor","Top","_jsxs","Title","_app","Haptic","doButtonHaptic","OnPressFinish","async","OnCancel","Prompts","_Fragment","Options","Option","PassiveOnly","OnOption","Key","SmesshyDone","smearRef","checkRecording","AnimationActionRecording","startReplay","ReplayObserver","smear","getPage","replayRecorded","OnFinish","Smear","contextKey","Color","SampleMode","CanCacheCtx","TextureSmash","DryInterval","DryRate","OnColorSample","UseMouse","FixedSize","AvgLightRadius","AvgHeavyRadius","PaintRadius","ExceptionHandler","exception","reportException","SmesshyWait","swirl","randoColor","pokeColor","TutorialStep","FinishTutorial","centerStyle","boxLeft","Scale","boxWidth","Width","boxTop","evt","OnDismiss","Content","tutorialPaintingInitial","tutorialPaintingCanvasTouch","tutorialPaintingCanvasManual","tutorialPaintingColor","tutorialPaintingSmudge","tutorialPaintingKnife","tutorialPaintingBlow","tutorialPaintingSample","tutorialPaintingPaletteSwap","tutorialPaintingPalette","tutorialPaintingTrash","tutorialPaintingReplay","tutorialPaintingStamp","tutorialPaintingSave","tutorialPaintingSaveAnon","tutorialKeys","installed","deferredInstallPrompt","deviceName","browserName","inPWA","canVibrate","afterInstall","afterSwitch","canMatchMedia","lastInstalledStatus","matchMedia","mql","isInPWA","standalone","fullscreen","checkAppInstalledState","app","setupComplete","setupNotifications","finishNotificationsSetup","setupCookies","finishCookiesSetup","finishSetup","getDeferredInstallPrompt","getDeviceName","MSStream","maxTouchPoints","getBrowserName","collectEnvironmentState","getVibrateSupport","getCreateImageBitmapSupport","SuperClass","_subscription","_appShape","_inPWA","storageManager","GetAppShape","GetInPWA","executeAsync","asyncHelp","executeAsyncLater","executeWhenSafe","GetAppState","SetAppState","newValue","pushWaitingFrame","popWaitingFrame","Env","subscribe","authService","unsubscribe","isAuthenticated","getAccessToken","forceNew","getUserId","signIn","completeSignIn","signOut","completeSignOut","requireSetup","thenAction","env","To","Replace","requireSetupAsync","initAuthentication","comp","requireAuth","STrace","addStep","ensureUserManagerInitialized","authenticationChanged","populateAuthenticationState","reason","termAuthentication","authenticated","onPopulateAuthenticationState","triggerRefresh","_this$_app","checkVersion","smesshyDone","overlayTool","renderFramework","_this$_app2","nav","ask","tool","tutorial","doRefresh","reload","navigateTo","askQuestion","AppShape","_state$overlayTool","tutorialStep","GetScaledPxWidth","showWaitSpin","getAuthenticationNavigate","returnUrl","bestTop","forScaledHeight","placement","maxTop","GetUnScaledPxHeight","appRectangle","minTop","fromRect","getBoundingClientRect","fromTop","fromBottom","fromHeight","GetScaledPxHeight","capturedPointer","targetRect","lastOnTarget","finishing","pressTickInterval","OnClick","setPointerCapture","vibrate","OnPressStart","PressTickInterval","continuePress","OnPressTick","releasePointerCapture","pointerOnTarget","recentSteps","getRecent","recent","clearRecent","TouchActionAnimationQueue","evaluateNewAction","takeAction","pendingAction","wrapAt","lastQueued","lastCommit","active","evaluating","waiting","peekAction","at","popAction","pushAction","queueAction","takeActions","firstAction","longestSprint","localThis","requestAnimationFrame","canvasRef","noMouse","dragging","replaying","usingCachedContext","lastPos","lastDrawOctant","lastMoveOctant","lastLastMoveOctant","replayOriginX","replayOriginY","dryInterval","replayAnimationFrame","debugFirstY","evalAction","lastConsider","considerAction","isFinish","isStart","longestGap","longestDragGap","lineLen","stepAt","faNew","startStroke","OnRecordAnimation","finishStroke","saveSeed","ptAt","continueStroke","postCall","iLastReplayAction","profileReplay","lastPaintRadius","strokes","debugPt","cancelAnimationFrame","setReplayOrigin","clientWidth","clientHeight","drawCtx","imageSmoothingEnabled","imageSmoothingQuality","CentralPull","clearCanvas","boundingClientRect","stopReplay","OnClear","stampSelf","takeSnapshot","snapWidth","snapHeight","sampX","sampY","sampWidth","sampHeight","hRatio","vRatio","hGap","vGap","snapCvs","toDataURL","atLeastSeconds","idealMaxSeconds","recorded","onFinish","noClear","totalReplayActionsStored","totalReplayTimeStored","totalReplayActions","totalReplayTime","cAct","actualFrames","actualSkips","drawActs","normalTime","desiredTime","actPerSecBase","actTime","expectedComputeTime","actPerFrame","frameActAccumulate","tipKindCur","animateSet","frameActions","iFrame","dragAct","ptDrag","applyStamp","elap","fps","profileEnd","stampCtxToAction","crc","imdat","getImageData","stampLines","aaStamp","ySamp","stampLine","xSamp","iSampBase","stampImage","offX","offY","scaleWidth","scaleHeight","rotation","crcSamp","stampWidth","stampHeight","rotate","putEffectColors","ptImageOnPage","ptImage","offImg","createAntiAliasOutline","skipMoveOct","filledPoints","aaPoints","markPoint","doThis","aap","filled0","filled1","filled2","filled3","filled5","filled6","filled7","filled8","shouldAA","useColor","ptPageSrc","ptImageSrc","offImgSrc","ptPageAA","ptImageAA","offImgAA","putAllAppliedDry","putAllDepth","tot","depthRatInv","pokeApplication","paintRadiusToDryDepth","depthRatio","sample","sampleEntry","sampleChange","cFilled","totalRed","totalGreen","totalBlue","blowEntry","blowChange","putImageData","idDx","idDy","createImageData","createImageBitmap","ibm","firstDrawOct","prevApplication","finishApplication","ptOffset","stampEntry","stampChange","lineWidth","colorsOff","iclr","pageColors","bufStamp","offPage","wetDepth","wStamp","getPointerLocation","stopDragging","OnDragEnd","babyRender","objectFit","objectPosition","touchAction","OnDragStart","smesshySplash","IconClose","designSize","svgGroupElement","IconPlus","transform","IconSample","IconSplotch","stroke","IconPalette","IconPainting","IconUpload","IconFinger","IconBlow","strokeLinecap","strokeLinejoin","IconTrash","IconStop","transformBox","transformOrigin","IconPlay","IconPhoto","IconBookmark","IconBookmarked","IconSelect","IconSelected","IconOffendedFilled","rx","ry","IconKnife","IconStartWith","ScaledIcon","icon","xmlns","pointerEvents","IconButton","touchWeight","Size","IconRef","Height","CloseButton","doClose","navTo","Tag","VoteButton","Value","GamePage","mainRef","resizeListener","trigger","login","authFinished","RequireAuth","OnPopulateAuthenticationState","snapshot","checkingAuth","authStateResult","Body","ShowHeader","padding","ShowRefresh","CloseNav","ShowFooter","Footer","randoFacts","UnknownChallengeState","challengeId","prizePool","timeLeft","roundTimeLeft","title","stampAllowed","voteRoundCurrent","voteRoundsTotal","rules","stamps","timeLimit","styleGuide","colorRestrictions","startingWith","MakePaintingLocate","artistId","artistProfile","paintingId","SmesshyDiagnosticLog","TimeoutList","duration","maxTime","items","containsValues","knownFull","missingRange","firstOffset","lastOffset","expire","SmesshyStorageManager","appObject","allTimeoutLists","cachedPaintingInfos","cachedThumbnails","cachedPreviews","cachedActions","cachedArtistProfiles","fiveMinutes","makeRequestInit","tokenNeed","method","token","headers","makeQueryWithArrayParams","baseQuery","paramList","getChallengeStateAsync","requireResponse","reqInit","responseChallengeState","fetch","json","getChallengeResultAsync","responseChallengeResult","getChallengeUserVoteStatusAsync","responseVoteStatus","putChallengeUserVoteStatusAsync","getChallengeVoteImagesAsync","responseVoteImages","postVoteScoresAsync","scores","responseCurrentPut","putUserPaintingAsync","visibilityKind","thumb","preview","caption","paintingInfo","imageDetail","thumbnail","newPInfo","createDateTime","challengeName","visibilityId","getTimeoutList","newList","deleteUserPaintingAsync","getUserInChallengeAsync","responseInChallenge","putUserBookmarkPaintingAsync","locate","userBookmark","deleteUserBookmarkPaintingAsync","putUserFavoritePaintingAsync","pin","userFavorite","totalFavorites","deleteUserFavoritePaintingAsync","putUserOffensivePaintingAsync","userOffended","totalOffended","deleteUserOffensivePaintingAsync","putUserSuspectPaintingAsync","userSuspect","deleteUserSuspectPaintingAsync","getPaintingThumbs","pins","onGet","missingThumbs","fetchThumbs","respThum","thumbs","addThumbs","getPaintingPreviews","missingPreviews","fetchPreviews","respPrev","prevs","addPreviews","getPaintingActions","fetchActions","respActions","getUserPaintingsWithThumbs","getPaintingsWithThumbs","fetchUserPaintings","getFollowingPaintingsWithThumbs","fetchFollowingPaintings","getGlobalPaintingsWithThumbs","fetchGlobalPaintings","getUserPaintingsWithPreviews","getPaintingsWithPreviews","getFollowingPaintingsWithPreviews","getGlobalPaintingsWithPreviews","getOthersPaintingsWithPreviews","fetchOthersPaintings","getCurrentLunchboxPaintingsWithPreviews","fetchLunchboxPaintings","getGlobalPaintingsInfosAsync","locates","query","resp","getUserFollowingAsync","mutual","postUserFollowingAsync","followId","deleteUserFollowingAsync","deleteUserFollowerAsync","approveUserFollowerAsync","getUserFollowersAsync","tlApp","missing","searchArtistProfilesAsync","searchQuery","cancelSignal","profsResult","signal","profs","prof","getArtistProfilesAsync","ids","statsLevel","missingArtists","getUserArtistProfileAsync","deleteUserAccountAsync","confirm","responsePost","getUserStatsAsync","stats","getUserRewardSummaryAsync","requestRewardPayoutAsync","requestRewardCancelAsync","requestRewardRepeatAsync","testRewardValidateAmountAsync","userReportedAmount","putUserPortraitAsync","portraitId","putUserPreferencesAsync","prefs","postLunchboxDeliveryAsync","delivery","getLunchboxStreakInfoAsync","otherIds","postPokeLunchboxAsync","otherId","fetchFunc","pinsAdd","addPaintingInfos","getCachedPaintingInfos","thing","pids","reInit","sTrace","pis","imageIds","iThumb","previews","iPrev","registerNotificationSubscription","newSub","deleteNotificationSubscription","subId","testAuthFail","postDiagnostic","CountdownTimer","timerId","timeWhenStarted","remainingWhenStarted","pausedTime","isPaused","countDownFrom","secondsRemaining","interval","onTick","newRemaining","timeNow","togglePause","pause","secondsLeft","secondsToTime","secLeft","mPre","CountDownText","SecondsRemaining","SecondsInitial","setupTimer","ChallengeTile","rectRef","requestingStateForId","expandedView","Expanded","challengeState","isChallengeStateUsed","OnChallengeStateNeeded","cs","OnExpandContract","isChallengeStateNeeded","ShowPrize","ShowRules","ShowEntrants","Prefix","ShowTitle","iconSvgSizeSmall","iconSvgSizeBig","onChallengeClick","showRules","prize","canStamp","hasStyleGuide","hasStartWith","hasColorRestrictions","hasTimeLimit","startWith","entriesCaption","showResults","ShowResults","FinalRank","TotalVotes","TotalPoints","Smesshy","splashSmearRef","splashTimeout","splashText","PickRandomFact","showSplash","inSetupApp","userName","selfPortraitUrl","getSpecificChallengeStateAsync","controlFrom","cId","required","ShowSplash","artistName","artistImageId","fakeInfs","timerExpire","splashSmash","actualRect","smesshyOptions","challengeButtonInstallRequired","challengeButtonTimeLeft","challengeButtonText","challengeButtonIcon","challengeRulesText","challengeTitleText","challengeButtonNavigateTo","showChallengePane","saveMode","challengeButton","GetScaledPxHeightVh","reqNav","challengeResultButton","challengeBestEverButton","paintOrder","fontFamily","fontSize","whiteSpace","auth","challengeInfo","namePart1","namePart2","namePart3","namePart4","font","iSegmentStart","iLastSpace","measureText","getTextSegments","artistImage","lunchboxButton","gradientUnits","gradientTransform","stopColor","galleryButton","paintButton","GetScaledPxWidthVw","currentLine","word","met","fillText","actualBoundingBoxAscent","actualBoundingBoxDescent","randomUUID","rnds8","rng","byteToHex","unsafeStringify","native","rnds","ImageLocate","pointerEventAction","startOffsetX","startOffsetY","startScaleWidth","startScaleHeight","startRotation","primPointerId","startPrimX","startPrimY","secPointerId","startSecX","startSecY","lastOffsetX","lastOffsetY","lastScaleWidth","lastScaleHeight","lastRotation","lastPrimX","lastPrimY","lastSecX","lastSecY","sw","dw","imgWidth","imgHeight","Bounds","Image","Url","ev","sampDx","sampDy","visDx","visDy","ratio","boundLeft","boundTop","boundWidth","boundHeight","imgLeft","imgTop","handleLeft","handleWidth","handleTop","handleHeight","pointerDown","pointer","dxPrim","dyPrim","dxSec","dySec","setOffsetX","setOffsetY","setScaleX","setScaleY","followScaleY","setRotation","twoPointAdjust","newRotation","newOffsetX","newOffsetY","newScaleWidth","newScaleHeight","alterScaleWidth","alterScaleHeight","widthStart","widthNow","heightStart","heightNow","cX","cY","aStart","rotationThis","dxStart","dyStart","dxLast","dyLast","startD","alterScale","widthNew","heighNew","pointerUp","noClick","OnPlacement","draggable","cursor","rotateCharm","marginBottom","marginLeft","marginRight","borderWidth","borderStyle","handleRadius","noTrailing","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","wrapper","elapsed","SearchInput","currentValue","DefaultValue","inputTimer","inputRef","paddingRight","paddingLeft","paddingBottom","paddingTop","DefaultPrompt","OnValueChange","Delay","blur","FollowingTile","artistPortrait","ArtistProfile","artistImageUrl","plusButton","ShowPlus","OnPlusClick","pendingButton","ShowPending","trashButton","ShowTrash","OnTrashClick","checkButton","ShowCheck","Checked","OnCheckClick","streakDisplay","statsColumn","StreakInfo","secondsUntilStreakEnd","currentStreak","streakColor","mavenDisp","followDisp","artistStats","mavenScore","totalFollowers","totalFollowing","justifySelf","OnTileClick","FollowingPage","followingRequestNextStart","followingRequestAtEnd","followingArtistsNextStart","followingArtistsAtEnd","followerRequestNextStart","followerRequestAtEnd","followerArtistsNextStart","followerArtistsAtEnd","searchAbortController","userId","newSearchOn","prevSearchOn","searchNextStart","searchAtEnd","searchArtists","followingAtEnd","followingArtists","followerAtEnd","followerArtists","asyncUpdate","fetchMoreFollowingAsync","fetchMoreFollowersAsync","clearNotifications","completeFollowingProfile","newFollows","newFollowLU","oldProf","fetchMoreFollowingRequestsAsync","more","morelist","newFollowing","fetchMoreFollowingArtistsAsync","fetchMoreFollowerRequestsAsync","fetchMoreFollowerArtistsAsync","following","followingRequests","followers","followerRequests","fetchMoreFollowing","fetchMoreFollowers","fetchMoreSearchResults","AbortController","oldList","onOtherNavigate","otherName","onTrashClick","promptText1","promptText2","yesText","newFollowingArtists","newFollowerArtists","searchArtistEntry","followingList","InfiniteScroll","dataLength","hasMore","loader","scrollableTarget","endMessage","textAlign","followersList","otherPair","onPlusClick","searchArtistList","onAddClick","SearchObserver","abort","FollowingLister","streakInfo","fetchAllFollowingAsync","Mutual","ShowStreak","streaks","streak","StreaksOnly","onSelectClick","OnSelect","ShowCheckbox","OnSelectChange","newSelected","selectedIds","pairPush","LuchboxPicker","selectedFollowers","OnReject","OnAccept","StreakViewer","selectedId","PaintingPage","mainRecording","pendingReplay","timeoutEnableButtons","behave","baseColors","enteredCaption","challengeTimer","prevDefault","innerWidth","stillSaving","localPressWeight","maxCaptionWidth","captionInputFont","measureCtx","doCalibrateFirst","calibrationVersion","KnownShowSize","SaveMode","needsCalibraton","showSize","restorePalette","restorePaintingActions","saveStrokes","showReplay","forceReplay","showStamp","showPalette","showSample","canCacheCtx","saveKind","StampsAllowed","InteractionMode","pressWeight","sampleMode","paletteMode","KnownAvgLightRadius","KnownAvgHeavyRadius","useMouse","KnownUseMouse","addedColors","limitedColors","pendingActionButton","allDisabled","popChallenge","challengePercentRemaining","paintingDisabled","restorePainting","lastChallengeEntry","clearMainSmash","setChallengeTimer","persistedPaintingInfo","getCurrentPainting","remainingStr","remainingTime","toggleChallengeTimer","setChallengeStartWith","onDragStart","mainCanvas","DoShowTutorial","onDragEnd","save","stopAndChopReplay","lastStep","addColorSample","colorKey","newAdded","removeColorSamples","clearAsk","persistedRGBs","paintingActionsCurrent","persistedPalette","persistedColorStr","clr","rec","doHaptic","fontFam","getComputedStyle","getPropertyValue","smallWidth","measureCanvas","makeIconButton","iconRefFactory","onPressAlso","vibTime","renderSubPalette","scaleX","scaleY","grd","createLinearGradient","addColorStop","strokeStyle","ellipse","onUploadPainting","closeOnSave","lunchboxTo","utcDate","userDays","deliveryId","toUsers","finalDrawProps","addBaseColor","rgbStr","colorCode","challengeWidth","challengeTimeLeftWidth","challengeColorUrgency","challengePercentUsed","expanded","renderClearButton","renderReplayButton","renderImageButton","onImageSelect","files","localUrl","URL","createObjectURL","smearRect","DOMRect","pressRef","accept","onAbort","renderSaveButton","setUploadAsk","challengeOpen","alreadyInChallenge","hasStamp","challengeText","dlgWidth","dlHeight","dlgRect","onSaveLunchbox","maxLength","ani","renderSizeBar","weightPct","SettingsPage","listRef","validateRef","localUseGPU","hapticButton","KnownHapticButton","accountType","accountName","selfPortraitId","allPaintingsPublic","autoAcceptFollows","paintings","notifications","notificationsPossible","notificationsAllowed","notificationsSubscribed","rewardSummary","NewSelfPortraitId","stringToNotificationMap","notificationMapToString","defaultPublic","user","preferred_username","website","userStats","totalPaintings","autoApprove","Notification","permission","getNotificationSubscription","refreshRewardSummary","setPreferences","newState","_controlThis$_app","_controlThis$_app2","termsAndPrivacy","termsPrivacyDelete","iOSButton","inApp","iOSNote","doButton","payoutLine","payoutRequestCancelButton","payoutRequestRepeatButton","pendingPayoutRequestStatus","userAmt","testFailButton","Intl","NumberFormat","currency","totalRewardGranted","currentRewardBalance","allowed","getNotificationPermission","createNotificationRegistration","deleteNotificationRegistration","ResetTutorialKeys","fakeFinger","radiusMin","radiusMax","nextRadius","CalibrateSpot","trackRef","fakefinger","fakeMin","fakeMax","Expected","maxDiameter","targetDiameter","minWidth","KnownMinRadius","KnownMaxRadius","recDiameter","maxBorder","targetBorder","recordedValue","LastShownValue","Diameter","Border","variance","recStart","borderRadius","border","onMouseDown","OnMouseUse","OnTouchUse","Locked","newDiameter","OnRecordedChange","CalibrateTouchPage","doImplicitClose","sawMouseClick","sawTouch","lightCalibrated","bestLightDiam","minLightDiam","maxLightDiam","lastLightDiam","lightRecorded","heavyCalibrated","bestHeavyDiam","minHeavyDiam","maxHeavyDiam","lastHeavyDiam","heavyRecorded","sawMouse","KnownCalibrated","recordValue","lastLight","lastHeavy","recordedValues","avg","sum","localMin","MAX_VALUE","StatsPage","onLabelPress","label","explanation1","explanation2","explanation3","prompts","statsNew","statsPrev","kpiHeight","addRow","member","prevOne","newOne","kpi","SvgDown","rank","rankNum","addLine","Smessage","Say","__instId","_nextSubscriptionId","_user","_isAuthenticated","_appObject","userManager","_popUpDisabled","getTokenRequestState","setTokenRequestState","AuthenticationResultStatus","Redirect","Success","Fail","silentUser","createArguments","updateState","success","silentError","redirect","redirectError","redirectSignOutError","notifySubscribers","subscription","subscriptionId","subscriptionIndex","stateTimeStr","stateTime","st","reloaded","strUser","objUser","getReturnUrl","processLoginCallback","redirectToProfile","redirectToRegister","Loading","navigateToReturnUrl","fromQuery","redirectToApiAuthorizationPath","encodeURI","apiAuthorizationPath","redirectUrl","Logout","logout","processLogoutCallback","authenticate","loginAction","logoutAction","Fridge","thumbIfExists","infos","GetImage","Infos","GalleryDoorsPage","myRecInfos","myFavInfos","myPopInfos","folRecInfos","folFavInfos","folPopInfos","globTrendInfos","globFavInfos","globPopInfos","sm","getGalRefMyRec","imgSrc1","imgSrc2","imgSrc3","getGalRefMyFav","getGalRefMyPop","getGalRefFolRec","getGalRefFolFav","getGalRefFolPop","getGalRefGlobRec","getGalRefGlobFav","getGalRefGlobPop","margin","ErrorPage","Kind","Code","From","Message","PaintingFrame","deleted","bookmark","PaintingInfo","favorite","favoriteCount","offensive","offensiveCount","suspect","suspectCount","totalSuspect","CurrentSelection","userIsArtist","UserId","iconsUsed","showLunchbox","showLike","showBookmark","showOffend","showSuspect","showEdit","showSelect","showDelete","iconSizeName","iconSvgSize","VoteMode","SelectionMode","ShowLunchbox","lunchboxViewScore","lunchbox","editButton","SaveEdit","interactionMode","likeButton","bookmarkButton","offendedButton","suspectButton","selectButton","Callback","deleteButton","feedbackLine","sideLine","isPushed","VoteSelection","onPress","OnVoteSelection","artistLine","NoArtist","captionLine","challengeLine","ChallengeOptions","finalRank","totalPoints","totalVotes","paintingMeta","onPaintingClick","imgStyle","backgroundImage","backgroundPosition","backgroundRepeat","backgroundSize","imgElement","PaintingPair","swapChallengeOptions","options1","options2","CurrentChallengeId","PaintingInfo1","PaintingInfo2","GalleryPage","scrollRef","initState","saveEdit","challengeOptions","requireAccount","Scope","Filter","nextStart","atEnd","currentChallengeId","paintingInfos","follows","showingBookmarked","ArtistMode","fetchMorePaintings","acceptPins","FetchCount","lastPair","titleExtra","bookmarkFilterButton","ShowBookmarkFilter","headerSection","followButton","onUnFollow","onFollow","paintingsDisp","offensiveDisp","suspiciousDisp","challengesDisp","rankDisp","avgScoreDisp","scoreGivenDisp","scoreRecievedDisp","followersDisp","followingDisp","totalOffend","competitionEntries","competitionHighestRank","compPoints","competitionPointsReceived","compVotes","competitionVotesReceived","toFixed","competitionVotes","columnGap","gridTemplateRows","gridTemplateColumns","TermsOfServicePage","content","PrivacyPage","VotePage","lastAuthCheck","lastChallengeCheck","voteStatus","expired","voteInfos","currentSelections","challengeTitle","ChallengeId","checkFetchChallengeVotes","userStatus","voteImages","voteInfs","evaluateAd","sendVote","votes","sel","getVoteSelection","option","voteSelected","_controlThis$state$vo","canVote","viewChoices","titleLine","vote1","vote2","vote3","vote4","whatsNext","roundSecondsLeft","SetupPage","showAuth","installSignaled","cookiesSetup","notificationsSetup","calibrated","calibratedTo","cookieAsk","partingWishes","iconHeight","welcome","finishedSteps","currentStep","currentContent","remainingSteps","InApp","notiAsk","explain1","explain2","explain3","explain4","promptButton","helpImage1","helpImage2","dip","alt","ResultPage","challengeStateNext","challengeStatePrev","resultInfos","luckyVoterProfile","moveToResults","prevChallengeState","nextChallengeState","fetchedResultInfos","fetchedLuckyVoterProfile","requestedChallengeState","chId","chIdNext","chIdPrev","lastResults","place1","voterSelected","profiles","resultImages","place2","place3","prevButton","nextButton","onLuckyNavigate","LunchboxPage","followingOnly","bookmarksOnly","onStreakLook","dlgHeight","dlgTop","dlgLeft","myPaintingsButton","FeedPage","serviceWorkerRegistration","serviceWorker","register","reg","AsyncHelper","AuthorizeService","outerRef","hostRef","waitingFrames","showingSpinner","spinnerTimeout","playerId","_gameState","debugLog","gameSession","idSetOnWindow","csweetGameId","gameSessionSent","initGameState","bound","innerHeight","appShape","adjustAppShape","sessionId","sessionState","fromPage","shownPage","SessionId","_this$state$appShape","paintMode","OrientObserver","GetAppRoutes","_this$props$searchPar","_this$props$searchPar2","rectHost","allRoutes","rest","GetApiAuthorzationRoutes","authRoutes","wrongWay","gettingSmesshy","smesshyMain","idealAspectRatio","topGutter","bottomGutter","leftGutter","rightGutter","availableWidth","availableHeight","extraGutter","usedWidth","usedHeight","rectNew","unitWidth","unitHeight","querySelector","newShape","px","GetUnScaledPxWidth","uuidv4","SetCookie","storedCalibrated","GetCookie","checkPersist","fullTag","persisted","lastVerCheck","triggeredRefresh","LogLine","GetLog","urlBase64ToUint8Array","base64String","rawData","atob","outputArray","nots","getNotifications","totalNots","clearedNots","setAppBadge","endpoint","reAsk","perms","respPK","vapidPK","convertedVapidPK","pushManager","userVisibleOnly","applicationServerKey","currentAsync","pendingWork","WrappedComponent","CookieWrapper","_super","unlisten","forwardedRef","restProps","allCookies","ForwardedComponent","hoistStatics","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","baseUrl","rootElement","getElementById","reportWebVitals"],"sourceRoot":""}
    \r\n \r\n
    \r\n © 2025 Wrong Saw \r\n
    \r\n