diff --git a/app/img/icons/IconsetW.png b/app/img/icons/IconsetW.png index dfbe1362..9e8d7ede 100644 Binary files a/app/img/icons/IconsetW.png and b/app/img/icons/IconsetW.png differ diff --git a/app/img/icons/IconsetW_2x.png b/app/img/icons/IconsetW_2x.png index 19e6472b..d8519014 100644 Binary files a/app/img/icons/IconsetW_2x.png and b/app/img/icons/IconsetW_2x.png differ diff --git a/app/index.html b/app/index.html index d3a49705..5c800795 100644 --- a/app/index.html +++ b/app/index.html @@ -78,6 +78,8 @@ + + diff --git a/app/js/controllers.js b/app/js/controllers.js index ff175065..342d4ca6 100644 --- a/app/js/controllers.js +++ b/app/js/controllers.js @@ -2321,6 +2321,8 @@ angular.module('myApp.controllers', ['myApp.i18n']) send: submitMessage, replyClear: replyClear, fwdsClear: fwdsClear, + toggleSlash: toggleSlash, + replyKeyboardToggle: replyKeyboardToggle, type: 'new' } $scope.mentions = {} @@ -2347,9 +2349,6 @@ angular.module('myApp.controllers', ['myApp.i18n']) $scope.$on('last_message_edit', setEditLastMessage) - $scope.replyKeyboardToggle = replyKeyboardToggle - $scope.toggleSlash = toggleSlash - $rootScope.$watch('idle.isIDLE', function (newVal) { if ($rootScope.idle.initial) { return diff --git a/app/js/directives.js b/app/js/directives.js index 87b5718c..9759fe91 100755 --- a/app/js/directives.js +++ b/app/js/directives.js @@ -1494,6 +1494,9 @@ angular.module('myApp.directives', ['myApp.filters']) return } if ($(sendFormWrap).is(':visible')) { + if (!sendForm || !sendForm.offsetHeight) { + sendForm = $('.im_send_form', element)[0] + } $(sendFormWrap).css({ height: $(sendForm).height() }) @@ -1547,9 +1550,11 @@ angular.module('myApp.directives', ['myApp.filters']) } }) - .directive('mySendForm', function (_, $q, $timeout, $compile, $modalStack, $http, $interpolate, Storage, AppStickersManager, AppDocsManager, ErrorService, AppInlineBotsManager, FileManager, shouldFocusOnInteraction) { + .directive('mySendForm', function (_, $q, $timeout, $interval, $window, $compile, $modalStack, $http, $interpolate, Storage, AppStickersManager, AppDocsManager, ErrorService, AppInlineBotsManager, FileManager, shouldFocusOnInteraction) { + return { link: link, + templateUrl: templateUrl('send_form'), scope: { draftMessage: '=', mentions: '=', @@ -1558,19 +1563,31 @@ angular.module('myApp.directives', ['myApp.filters']) } function link ($scope, element, attrs) { + var messageFieldWrap = $('.im_send_field_wrap', element)[0] var messageField = $('textarea', element)[0] var emojiButton = $('.composer_emoji_insert_btn', element)[0] var emojiPanel = $('.composer_emoji_panel', element)[0] var fileSelects = $('input', element) var dropbox = $('.im_send_dropbox_wrap', element)[0] - var messageFieldWrap = $('.im_send_field_wrap', element)[0] var dragStarted var dragTimeout var submitBtn = $('.im_submit', element)[0] + var voiceRecorderWrap = $('.im_voice_recorder_wrap', element)[0] + var voiceRecordBtn = $('.im_record', element)[0] var stickerImageCompiled = $compile('') var cachedStickerImages = {} + var voiceRecorder = null + var voiceRecordSupported = Recorder.isRecordingSupported() + var voiceRecordDurationInterval = null + var voiceRecorderPromise = null + if (voiceRecordSupported) { + element.addClass('im_record_supported') + } + + $scope.voiceRecorder = {duration: 0, recording: false, processing: false} + var emojiTooltip = new EmojiTooltip(emojiButton, { getStickers: function (callback) { AppStickersManager.getStickers().then(callback) @@ -1683,6 +1700,126 @@ angular.module('myApp.directives', ['myApp.filters']) }) }) + $(voiceRecordBtn).on('contextmenu', cancelEvent) + + var voiceRecordTouch = Config.Navigator.touch ? true : false + var voiceRecordEvents = { + start: voiceRecordTouch ? 'touchstart' : 'mousedown', + move: voiceRecordTouch ? 'touchmove' : 'mousemove', + stop: voiceRecordTouch ? 'touchend' : 'mouseup' + } + $(voiceRecordBtn).on(voiceRecordEvents.start, function(event) { + if ($scope.voiceRecorder.processing) { + return + } + + voiceRecorderPromise = null + + voiceRecorder = new Recorder({ + monitorGain: 0, + numberOfChannels: 1, + bitRate: 64000, + encoderSampleRate: 48000, + encoderPath: 'vendor/recorderjs/encoder_worker.js' + }) + + voiceRecorder.addEventListener('start', function(e) { + var startTime = tsNow(true) + + voiceRecordDurationInterval = $interval(function() { + $scope.voiceRecorder.duration = tsNow(true) - startTime + }, 1000) + + $scope.$apply(function() { + $scope.voiceRecorder.recording = true + }) + + console.warn(dT(), 'recording now!') + }) + + voiceRecorder.addEventListener('streamReady', function(e) { + voiceRecorder.start() + }) + + voiceRecorder.initStream() + + var curHover = false + var curBoundaries = {} + + var updateVoiceHoverBoundaries = function () { + var boundElement = $('.im_bottom_panel_wrap') + // console.warn(dT(), 'bound', boundElement[0]) + var offset = boundElement.offset() + curBoundaries = { + top: offset.top, + left: offset.left, + width: boundElement.outerWidth(), + height: boundElement.outerHeight(), + } + } + + var updateVoiceHoveredClass = function (event, returnHover) { + var originalEvent = event.originalEvent || event + var touch = voiceRecordTouch + ? originalEvent.changedTouches && originalEvent.changedTouches[0] + : originalEvent + // console.log('event', voiceRecordTouch, originalEvent) + var isHover = touch && + touch.pageX >= curBoundaries.left && + touch.pageX <= curBoundaries.left + curBoundaries.width && + touch.pageY >= curBoundaries.top && + touch.pageY <= curBoundaries.top + curBoundaries.height + + if (curHover != isHover) { + console.warn(dT(), 'change hover', isHover) + element.toggleClass('im_send_form_hover', isHover) + curHover = isHover + } + return returnHover && isHover + } + + updateVoiceHoverBoundaries() + updateVoiceHoveredClass(event) + + if (!Config.Mobile) { + $(voiceRecorderWrap).css({ + height: messageFieldWrap.offsetHeight, + width: messageFieldWrap.offsetWidth + }) + } + + $($window).on(voiceRecordEvents.move, updateVoiceHoveredClass) + + $($window).one(voiceRecordEvents.stop, function(event) { + console.warn(111) + $($window).off(voiceRecordEvents.move, updateVoiceHoveredClass) + + var isHover = updateVoiceHoveredClass(event, true) + + if ($scope.voiceRecorder.duration > 0 && isHover) { + $scope.voiceRecorder.processing = true + voiceRecorder.addEventListener('dataAvailable', function(e) { + var blob = blobConstruct([e.detail], 'audio/ogg') + console.warn(dT(), 'got audio', blob) + + $scope.draftMessage.files = [blob] + $scope.draftMessage.isMedia = true + + $scope.voiceRecorder.processing = false + }) + } + voiceRecorder.stop() + console.warn(dT(), 'stop audio') + + $interval.cancel(voiceRecordDurationInterval) + + $scope.$apply(function() { + $scope.voiceRecorder.recording = false + $scope.voiceRecorder.duration = 0 + }) + }) + }) + var sendOnEnter = true function updateSendSettings () { Storage.get('send_ctrlenter').then(function (sendOnCtrl) { @@ -1867,14 +2004,14 @@ angular.module('myApp.directives', ['myApp.filters']) if (e.type == 'dragenter' || e.type == 'dragover') { if (dragStateChanged) { - if (!Config.Mobile) { - $(emojiButton).hide() - } - $(dropbox) - .css({height: messageFieldWrap.offsetHeight + 2, width: messageFieldWrap.offsetWidth}) - .show() + $(dropbox).css({ + height: messageFieldWrap.offsetHeight, + width: messageFieldWrap.offsetWidth + }) + element.addClass('im_send_form_dragging') } } else { + return cancelEvent(e) if (e.type == 'drop') { $scope.$apply(function () { $scope.draftMessage.files = Array.prototype.slice.call(e.originalEvent.dataTransfer.files) @@ -1882,10 +2019,7 @@ angular.module('myApp.directives', ['myApp.filters']) }) } dragTimeout = setTimeout(function () { - $(dropbox).hide() - if (!Config.Mobile) { - $(emojiButton).show() - } + element.removeClass('im_send_form_dragging') dragStarted = false dragTimeout = false }, 300) @@ -3900,4 +4034,4 @@ angular.module('myApp.directives', ['myApp.filters']) return { link: link } - }) + }) \ No newline at end of file diff --git a/app/js/lib/schema.tl.txt b/app/js/lib/schema.tl similarity index 100% rename from app/js/lib/schema.tl.txt rename to app/js/lib/schema.tl diff --git a/app/js/locales/en-us.json b/app/js/locales/en-us.json index 900ad180..516c076b 100644 --- a/app/js/locales/en-us.json +++ b/app/js/locales/en-us.json @@ -23,6 +23,7 @@ "group_modal_menu_delete_group": "Delete and exit", "group_modal_menu_clear_history": "Clear history", "group_modal_delete_group": "Delete group", + "group_modal_join": "Join group", "group_modal_settings": "Settings", "group_modal_notifications": "Notifications", "group_modal_menu_share_link": "Invite to group via link", @@ -40,6 +41,7 @@ "channel_modal_description": "Description", "channel_modal_share_link": "Share link", "channel_modal_share_loading": "Loading{dots}", + "channel_modal_menu_edit": "Edit channel", "channel_modal_join": "Join channel", "channel_modal_add_member": "Invite members", "channel_modal_leave_channel": "Leave channel", @@ -528,7 +530,8 @@ "im_submit_message": "Send", "im_submit_edit_message": "Save", "im_edit_message_title": "Edit message", - + "im_voice_recording_label": "Release outside this form to cancel", + "im_voice_processing_label": "Processing{dots}", "login_sign_in": "Sign in", "login_enter_number_description": "Please choose your country and enter your full phone number.", "login_incorrect_number": "Incorrect phone number", diff --git a/app/js/message_composer.js b/app/js/message_composer.js index fb0b805f..298a8a7e 100644 --- a/app/js/message_composer.js +++ b/app/js/message_composer.js @@ -1610,7 +1610,8 @@ MessageComposer.prototype.resetTyping = function () { } MessageComposer.prototype.setPlaceholder = function (newPlaceholder) { - (this.richTextareaEl || this.textareaEl).attr('placeholder', newPlaceholder) + console.warn(dT(), 'set placeholder', this.richTextareaEl) + ;(this.richTextareaEl || this.textareaEl).attr('placeholder', newPlaceholder) } function Scroller (content, options) { diff --git a/app/less/app.less b/app/less/app.less index 04187eaf..dfe7e53c 100644 --- a/app/less/app.less +++ b/app/less/app.less @@ -2551,6 +2551,21 @@ a.im_message_fwd_photo { color: #999; position: absolute; } +.im_send_form_dragging { + .im_send_dropbox_wrap { + display: block; + } + .composer_rich_textarea, + .im_message_field, + .composer_emoji_insert_btn, + .composer_progress_icon_wrap, + .composer_command_btn, + .composer_keyboard_btn, + .im_inline_placeholder_wrap { + visibility: hidden; + } +} + .im_send_field_wrap { position: relative; } @@ -3505,6 +3520,61 @@ li.inline_result_sticker.composer_autocomplete_option_active a { } +.im_voice_recorder_wrap { + display: none; + z-index: 100; +} + +.im_recorder_indicator, .im_recorder_time { + float: left; + vertical-align: middle; + color: #333; +} + +.im_recorder_indicator i { + background-color: #ff1010; + height: 10px; + width: 10px; + border-radius: 50%; + margin-right: 5px; + vertical-align: baseline; + display: inline-block; + animation: blinker 0.5s cubic-bezier(.5, 0, 1, 1) infinite alternate; +} + +@keyframes blinker { + from { opacity: 1; } + to { opacity: 0; } +} + +.im_recorder_label { + overflow: auto; + font-size: 12px; + text-align: center; + vertical-align: middle; + color: #3a6d99; + + transition: color linear 0.2s; + + i { + margin-right: 5px; + } + + .im_send_form_hover & { + color: #CCC; + } +} + +.im_voice_recording, +.im_processing_recording { + color: #AAA; + + .im_voice_recorder_wrap { + display: block; + } +} + + .error_modal_window { .modal-dialog { max-width: 350px; diff --git a/app/less/desktop.less b/app/less/desktop.less index f170b203..f4b8f1cd 100644 --- a/app/less/desktop.less +++ b/app/less/desktop.less @@ -1290,6 +1290,75 @@ a.im_panel_peer_photo .peer_initials { } } +.im_record { + display: none; + width: 50px; + height: 50px; + margin: -8px 0 0 -18px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 13px 16px 13px 16px; + + border-radius: 50px; + overflow: hidden; + background: #fff; + transition: background-color linear 0.2s; + + .im_record_supported & { + display: block; + } +} +.im_send_form_hover .im_voice_recording .im_record { + background: #bfd9ed; +} + +.icon-mic { + display: inline-block; + width: 18px; + height: 22px; + vertical-align: text-top; + opacity: 0.8; + + .image-2x('../img/icons/IconsetW.png', 42px, 1171px); + background-position: -12px -285px; + background-color: transparent; + + .im_record:hover & { + opacity: 1; + } + .im_record:active &, + .im_voice_recording & { + background-position: -12px -705px; + } + +} + +.im_voice_recorder_wrap { + padding: 17px 10px 0; + display: none; + position: absolute; +} + +.im_voice_recording, +.im_processing_recording { + .im_voice_recorder_wrap { + display: block; + } + + .composer_rich_textarea, + .im_message_field, + .composer_emoji_insert_btn, + .composer_progress_icon_wrap, + .composer_command_btn, + .composer_keyboard_btn, + .im_inline_placeholder_wrap { + visibility: hidden; + } +} + + @media (max-height: 600px) { a { &.im_panel_peer_photo, @@ -1340,6 +1409,10 @@ a.im_panel_peer_photo .peer_initials { top: 0; left: 100%; margin: 0 0 0 15px; + + .im_record_supported .im_send_form_empty & { + display: none; + } } .im_media_attach { position: absolute; @@ -1412,6 +1485,22 @@ a.im_panel_peer_photo .peer_initials { padding-top: 5px; padding-bottom: 5px; } + + .im_record { + display: none; + position: absolute; + top: -4px; + right: -56px; + + .im_record_supported .im_send_form_empty & { + display: block; + } + } + + .im_voice_recorder_wrap { + padding-top: 4px; + } + } .im_edit_panel { diff --git a/app/less/mobile.less b/app/less/mobile.less index ad6f6d23..8393aa4f 100644 --- a/app/less/mobile.less +++ b/app/less/mobile.less @@ -574,6 +574,16 @@ html { .audio_player_button { margin-right: 8px; } +.audio_player_volume_slider .tg_slider_wrap { + display: none; +} +.audio_player_seek_slider { + width: 100%; +} + +.audio_player_seek_slider .tg_slider_track { + background: rgba(200, 200, 200, 0.6); +} .im_message_body_media { .im_message_document, @@ -1329,6 +1339,11 @@ a.im_message_fwd_author { &_modal_section_value { font-size: 15px; padding: 0 12px; + + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + width: 100%; } &_modal_section_body { @@ -1416,9 +1431,9 @@ a.im_message_fwd_author { } } -.icon-paperclip { +.icon-paperclip, .icon-mic { display: inline-block; - width: 19px; + width: 18px; height: 23px; vertical-align: text-top; opacity: 0.8; @@ -1427,17 +1442,25 @@ a.im_message_fwd_author { background-position: -12px -68px; } +.icon-mic { + background-position: -12px -285px; +} +.im_voice_recording .icon-mic { + background-position: -12px -705px; +} + .im_attach { cursor: pointer; - display: none; + display: block; overflow: hidden; position: absolute; - right: 0; + left: 0; top: 0; margin: 0; width: 50px; height: 32px; padding: 3px 13px 4px 16px; + right: auto; &:active { .icon-paperclip { @@ -1447,14 +1470,74 @@ a.im_message_fwd_author { } } -.im_send_form_empty { - .im_submit { - display: none; +.im_record { + display: none; + right: 0; + top: -8px; + width: 50px; + height: 50px; + position: absolute; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 13px 16px 13px 16px; + + border-radius: 50px; + overflow: hidden; + background: #fff; + transition: background-color linear 0.2s; + + .im_record_supported .im_send_form_empty & { + display: block; } +} +.im_send_form_hover .im_voice_recording .im_record { + background: #bfd9ed; +} - .im_attach { +.im_send_form_empty .im_submit { + opacity: 0.4; +} +.im_record_supported .im_send_form_empty .im_submit { + display: none; +} + +.im_voice_recorder_wrap { + height: 32px; + line-height: 32px; + right: 50px; + left: 0; + padding: 0 0 0 20px; +} +.im_recorder_label { + padding-right: 48px; +} + + +.im_voice_recording, +.im_processing_recording { + color: #AAA; + + .im_voice_recorder_wrap { display: block; } + .im_send_field_wrap, + .im_submit, + .im_attach { + display: none; + // visibility: hidden; + } +} + +.im_processing_recording { + .im_recorder_indicator i { + background-color: green; + } + + .im_record { + display: none; + } } .icon-emoji { @@ -1470,17 +1553,12 @@ a.im_message_fwd_author { } .composer_emoji_insert_btn { - position: absolute; - left: 0; - top: 0; - margin: 0; - padding: 3px 13px 4px 13px; - width: 48px; - height: 32px; + top: 3px; + right: 5px; - &.on, + &.composer_emoji_insert_btn_on, &:active, - .is_1x &.on, + .is_1x &.composer_emoji_insert_btn_on, .is_1x &:active { .icon-emoji { background-position: -10px -803px; @@ -1524,8 +1602,8 @@ a.im_message_fwd_author { } .composer_emoji_tooltip { - margin-left: 6px; - margin-top: -176px; + margin-left: -246px; + margin-top: -181px; z-index: 10000; } .composer_emoji_tooltip_tab { @@ -1844,6 +1922,8 @@ a.media_modal_date:hover { } .composer_rich_textarea, .composer_textarea { + padding-right: 28px; + .im_send_field_wrap_2ndbtn & { padding-right: 35px; } @@ -1866,18 +1946,17 @@ a.media_modal_date:hover { position: relative; } .composer_command_btn { - right: 10px; + right: 35px; top: 6px; } .composer_keyboard_btn { - right: 10px; + right: 35px; top: 6px; } .im_send_keyboard_wrap { padding: 0 5px; } - .composer_progress_icon_wrap { right: 6px; top: 4px; -} \ No newline at end of file +} diff --git a/app/manifest.webapp b/app/manifest.webapp index 88416791..4d6825da 100644 --- a/app/manifest.webapp +++ b/app/manifest.webapp @@ -44,6 +44,9 @@ "device-storage:videos": { "description": "Required for videos download", "access": "createonly" + }, + "audio-capture" : { + "description" : "Required to record voice messages" } }, "activities": { diff --git a/app/partials/desktop/im.html b/app/partials/desktop/im.html index 6a87c3c7..1c403323 100644 --- a/app/partials/desktop/im.html +++ b/app/partials/desktop/im.html @@ -211,56 +211,8 @@ -
diff --git a/app/partials/desktop/send_form.html b/app/partials/desktop/send_form.html new file mode 100644 index 00000000..208e8bfa --- /dev/null +++ b/app/partials/desktop/send_form.html @@ -0,0 +1,64 @@ + \ No newline at end of file diff --git a/app/partials/mobile/channel_modal.html b/app/partials/mobile/channel_modal.html new file mode 100644 index 00000000..e1c397fc --- /dev/null +++ b/app/partials/mobile/channel_modal.html @@ -0,0 +1,152 @@ +>2]=q;r=s}}else{g[f>>2]=s;q=s+-15.0;r=q>r?q:r;g[h>>2]=r;q=s}s=(s-r)/(q-r+1.0000000036274937e-15);q=0.0;r=0.0;f=0;while(1){if((f|0)==8)break;ka=+g[b+5856+(f*72|0)+(d<<2)>>2];q=q+ka;r=r+ +F(+ka);f=f+1|0}r=r/+F(+(q*8.0+1.0e-15));r=r>.9900000095367432?.9900000095367432:r;r=r*r;r=r*r;ka=v/t;f=b+5776+(d<<2)|0;q=r*+g[f>>2];q=ka>q?ka:q;g[J+(d<<2)>>2]=q;p=p+q;if((d|0)>8)p=p-+g[J+(d+-9<<2)>>2];I=(+(d+-18|0)*.029999999329447746+1.0)*p;g[f>>2]=q;S=S>I?S:I;U=U+q*+(d+-8|0);R=R+r;T=T+s;I=u;d=w}if((M|0)==32){c[ha>>2]=0;l=ia;return}f=c[N>>2]|0;c[O>>2]=f;p=(c[j>>2]=f,+g[j>>2])+-2.5;g[Q>>2]=p;f=1;while(1){if((f|0)==19){f=16;break}ja=f+-1|0;v=+((c[20572+(f<<2)>>2]|0)-(c[20572+(ja<<2)>>2]|0)|0)*2.0*.25;u=+g[O+(ja<<2)>>2]+v;ka=+g[N+(f<<2)>>2];g[O+(f<<2)>>2]=uka?v:ka;g[Q+(f<<2)>>2]=ka;f=f+1|0;p=ka}while(1){if((f|0)<=-1){f=0;break}ja=f+1|0;v=+((c[20572+(ja<<2)>>2]|0)-(c[20572+(f<<2)>>2]|0)|0)*2.0*.25;u=+g[O+(ja<<2)>>2]+v;M=O+(f<<2)|0;ka=+g[M>>2];g[M>>2]=u >2]-v;ja=Q+(f<<2)|0;ka=+g[ja>>2];g[ja>>2]=v>ka?v:ka;f=f+-1|0}while(1){if((f|0)==19){r=0.0;d=0;break}ka=+g[N+(f<<2)>>2];v=+g[Q+(f<<2)>>2]-ka;ka=ka-(+g[O+(f<<2)>>2]+2.5);ja=~~+D(+(((v<0.0?0.0:v)+(ka<0.0?0.0:ka))*64.0+.5));a[b+8300+(ga*56|0)+36+f>>0]=(ja|0)<255?ja:255;f=f+1|0}while(1){if((d|0)==8)break;else{q=999999986991104.0;h=0}while(1){if((h|0)==8)break;else{p=0.0;f=0}while(1){if((f|0)==18)break;ka=+g[b+6432+(d*72|0)+(f<<2)>>2]-+g[b+6432+(h*72|0)+(f<<2)>>2];p=p+ka*ka;f=f+1|0}q=(h|0)==(d|0)|q >2]|0;x=d+1|0;y=c[20572+(x<<2)>>2]|0;r=0.0;h=w;while(1){if((h|0)>=(y|0))break;la=+g[Y+(h<<3)>>2];V=+g[Y+(h<<3)+4>>2];ja=480-h|0;s=+g[Y+(ja<<3)>>2];ka=+g[Y+(ja<<3)+4>>2];r=r+(la*la+s*s+V*V+ka*ka);h=h+1|0}s=q>r?q:r;ja=b+7152+(d<<2)|0;q=t*+g[ja>>2];q=q>r?q:r;g[ja>>2]=q;q=r>q?r:q;p=p*.05000000074505806;p=p>q?p:q;if(!(q>p*.1&q*1.0e9>s)){ja=f;q=s;d=x;f=ja;continue}if(!(q>u*+(y-w|0))){ja=f;q=s;d=x;f=ja;continue}f=x;q=s;d=x}if((c[Z>>2]|0)==48e3){V=X*1.7361111531499773e-05;X=(c[b+5852>>2]|0)==20?.029999999329447746:.07000000029802322;ja=b+7224|0;la=t*+g[ja>>2];la=la>V?la:V;g[ja>>2]=la;la=V>la?V:la;ka=p*.05000000074505806;f=(la*1.0e9>(q>V?q:V)?la>X*(ka>la?ka:la):0)&la>u*160.0|(f|0)>16?20:f}w=c[fa>>2]|0;y=(w|0)<3?20:f;X=+Ih(I)*20.0;x=b+7432|0;ka=+g[x>>2]+-.003000000026077032;ka=ka>X?ka:X;g[x>>2]=ka;x=b+7436|0;la=+g[x>>2]*(1.0-_);g[x>>2]=X
>2]*+g[$+(f<<2)>>2];f=f+1|0}g[ca+(h<<2)>>2]=p;h=h+1|0}while(1){if((h|0)==8)break;d=h<<4;p=0.0;f=0;while(1){if((f|0)==16)break;p=p+ +g[20648+(d+f<<2)>>2]*.5*(+g[b+7080+(f<<2)>>2]+ +g[b+7008+(f<<2)>>2]);f=f+1|0}g[ba+(h<<2)>>2]=p;h=h+1|0}q=R/18.0;B=B/18.0;g[A>>2]=B+(1.0-B)*((w|0)<10?.5:T/18.0);ka=S/9.0;d=b+5848|0;la=+g[d>>2]*.800000011920929;la=ka>la?ka:la;g[d>>2]=la;d=b+8300+(ga*56|0)+8|0;g[d>>2]=U*.015625;c[z>>2]=((c[z>>2]|0)+1|0)%8|0;h=w+1|0;c[fa>>2]=(h|0)<1e4?h:1e4;h=b+8300+(ga*56|0)+4|0;g[h>>2]=la;f=0;while(1){if((f|0)==4)break;g[da+(f<<2)>>2]=(+g[ca+(f<<2)>>2]+ +g[b+7228+(f+24<<2)>>2])*-.12298999726772308+(+g[b+7228+(f<<2)>>2]+ +g[b+7228+(f+16<<2)>>2])*.49195000529289246+ +g[b+7228+(f+8<<2)>>2]*.6969299912452698-+g[b+7356+(f<<2)>>2]*1.4349000453948975;f=f+1|0}p=1.0-aa;f=0;while(1){if((f|0)==4){f=0;break}ja=b+7356+(f<<2)|0;g[ja>>2]=p*+g[ja>>2]+aa*+g[ca+(f<<2)>>2];f=f+1|0}while(1){if((f|0)==4){f=0;break}g[da+(f+4<<2)>>2]=(+g[ca+(f<<2)>>2]-+g[b+7228+(f+24<<2)>>2])*.6324599981307983+(+g[b+7228+(f<<2)>>2]-+g[b+7228+(f+16<<2)>>2])*.31622999906539917;f=f+1|0}while(1){if((f|0)==3)break;ja=f+8|0;g[da+(ja<<2)>>2]=(+g[ca+(f<<2)>>2]+ +g[b+7228+(f+24<<2)>>2])*.5345199704170227-(+g[b+7228+(f<<2)>>2]+ +g[b+7228+(f+16<<2)>>2])*.26725998520851135-+g[b+7228+(ja<<2)>>2]*.5345199704170227;f=f+1|0}c:do if((c[fa>>2]|0)>5){f=0;while(1){if((f|0)==9){f=0;break c}ja=b+7388+(f<<2)|0;la=+g[da+(f<<2)>>2];g[ja>>2]=p*+g[ja>>2]+aa*la*la;f=f+1|0}}else f=0;while(0);while(1){if((f|0)==4){f=0;break}g[da+(f<<2)>>2]=+g[ca+(f<<2)>>2]-+g[ba+(f<<2)>>2];f=f+1|0}while(1){if((f|0)==8){f=0;break}ja=b+7228+(f+16<<2)|0;c[b+7228+(f+24<<2)>>2]=c[ja>>2];ba=b+7228+(f+8<<2)|0;c[ja>>2]=c[ba>>2];ja=b+7228+(f<<2)|0;c[ba>>2]=c[ja>>2];c[ja>>2]=c[ca+(f<<2)>>2];f=f+1|0}while(1){if((f|0)==9)break;la=+F(+(+g[b+7388+(f<<2)>>2]));g[da+(f+11<<2)>>2]=la-+g[21160+(f<<2)>>2];f=f+1|0}g[da+72>>2]=v+-.7799999713897705;g[da+80>>2]=+g[h>>2]+-.15472300350666046;g[da+84>>2]=+g[A>>2]+-.7246429920196533;g[da+88>>2]=q+-.7437170147895813;g[da+92>>2]=+g[d>>2]+.06921599805355072;g[da+96>>2]=+g[x>>2]+-.06792999804019928;jh(da,ea);t=(+g[ea>>2]+1.0)*.5;g[ea>>2]=t;d=ea+4|0;u=+g[d>>2]*.5+.5;u=u*u;g[d>>2]=u;g[b+8300+(ga*56|0)+32>>2]=u;d=b+7424|0;ka=+g[d>>2];aa=1.0-ka;la=ka*1.0000000474974513e-03+aa*.009999999776482582;ca=u>.949999988079071;ja=u<.05000000074505806&(ca^1);s=ja|ca?(ja?.05000000074505806:.949999988079071):u;ja=b+7428|0;_=+g[ja>>2];ca=_>.949999988079071;da=_<.05000000074505806&(ca^1);v=da|ca?(da?.05000000074505806:.949999988079071):_;V=1.0-_;X=1.0-la;s=+E(+(s-v))*.05000000074505806/(s*(1.0-v)+v*(1.0-s))+.019999999552965164;v=(_*X+V*la)*+G(+u,+s);v=v/((V*X+_*la)*+G(+(1.0-u),+s)+v);g[ja>>2]=v;g[b+8300+(ga*56|0)+24>>2]=v;v=+g[ja>>2];v=v*t+(1.0-v)*.5;g[ea>>2]=v;ja=v>.949999988079071;ea=v<.05000000074505806&(ja^1);t=ea|ja?(ea?.05000000074505806:.949999988079071):v;ea=ka>.949999988079071;ja=ka<.05000000074505806&(ea^1);s=ja|ea?(ja?.05000000074505806:.949999988079071):ka;t=+E(+(t-s))*.05000000074505806/(t*(1.0-s)+s*(1.0-t))+.019999999552965164;s=+G(+(1.0-v),+t);t=+G(+v,+t);la=(ka*.9998999834060669+aa*9.999999747378752e-05)*t;la=la/((aa*.9998999834060669+ka*9.999999747378752e-05)*s+la);g[d>>2]=la;g[b+8300+(ga*56|0)+20>>2]=la;if((c[fa>>2]|0)==1){q=(c[b+4>>2]|0)==2048?.10000000149011612:.625;h=b+7856|0;g[h>>2]=q;p=1.0-q;f=b+7456|0;g[f>>2]=p}else{fa=b+7456|0;ja=b+7856|0;f=fa;h=ja;p=+g[fa>>2];q=+g[ja>>2]}r=p+ +g[b+7460>>2];p=q+ +g[b+7860>>2];g[f>>2]=r*.9998999834060669*s;g[h>>2]=p*.9998999834060669*t;f=1;while(1){if((f|0)==99)break;ja=f+1|0;g[b+7456+(f<<2)>>2]=+g[b+7456+(ja<<2)>>2]*s;g[b+7856+(f<<2)>>2]=+g[b+7856+(ja<<2)>>2]*t;f=ja}g[b+7852>>2]=p*9.999999747378752e-05*s;g[b+8252>>2]=r*9.999999747378752e-05*t;p=9.999999682655225e-21;f=0;while(1){if((f|0)==100)break;p=p+(+g[b+7456+(f<<2)>>2]+ +g[b+7856+(f<<2)>>2]);f=f+1|0}p=1.0/p;f=0;while(1){if((f|0)==100)break;ja=b+7456+(f<<2)|0;g[ja>>2]=+g[ja>>2]*p;ja=b+7856+(f<<2)|0;g[ja>>2]=+g[ja>>2]*p;f=f+1|0}q=+g[d>>2];if(u>.75){p=q;if(p>.9){ja=b+8268|0;fa=(c[ja>>2]|0)+1|0;c[ja>>2]=(fa|0)<500?fa:500;ja=b+8260|0;ka=+g[ja>>2];la=v-ka;g[ja>>2]=ka+1.0/+(fa|0)*(la<-.20000000298023224?-.20000000298023224:la)}if(p<.1){ja=b+8264|0;fa=(c[ja>>2]|0)+1|0;c[ja>>2]=(fa|0)<500?fa:500;ja=b+8256|0;ka=+g[ja>>2];la=v-ka;g[ja>>2]=ka+1.0/+(fa|0)*(la>.20000000298023224?.20000000298023224:la)}}c[b+7444>>2]=q>.5&1;c[b+8300+(ga*56|0)+28>>2]=y;c[b+5852>>2]=y;g[b+8300+(ga*56|0)+12>>2]=B;c[ha>>2]=1;l=ia;return}function gh(a,b,d,e,f,h,i,j,k,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0.0,o=0,p=0,q=0,r=0,s=0;s=l;if(!f){n=0.0;l=s;return +n}o=(m|0)==48e3;if(!o)if((m|0)==16e3){h=(h<<1|0)/3|0;p=(f<<1|0)/3|0}else p=f;else{h=h<<1;p=f<<1}r=fa()|0;q=l;l=l+((1*(p<<2)|0)+15&-16)|0;ka[a&1](b,q,p,h,i,j,k);if((j|0)==-2)n=.000030517578125/+(k|0);else n=(j|0)>-1?.0000152587890625:.000030517578125;h=0;while(1){if((h|0)>=(p|0))break;k=q+(h<<2)|0;g[k>>2]=+g[k>>2]*n;h=h+1|0}a:do if(o)n=+ih(e,d,q,p);else{if((m|0)>=24e3){switch(m|0){case 24e3:break;default:{n=0.0;break a}}Sh(d|0,q|0,p<<2|0)|0;n=0.0;break}switch(m|0){case 16e3:break;default:{n=0.0;break a}}f=p*3|0;a=fa()|0;b=l;l=l+((1*(f<<2)|0)+15&-16)|0;h=0;while(1){if((h|0)>=(p|0))break;o=c[q+(h<<2)>>2]|0;m=h*3|0;c[b+(m<<2)>>2]=o;c[b+(m+1<<2)>>2]=o;c[b+(m+2<<2)>>2]=o;h=h+1|0}+ih(e,d,b,f);ha(a|0);n=0.0}while(0);ha(r|0);l=s;return +n}function hh(a,b){a=+a;b=+b;var c=0.0,d=0.0;c=b*b;d=a*a;if(c+d<1.000000045813705e-18){d=0.0;return +d}if(c =(f|0))break;p=d<<1;l=+g[c+(p<<2)>>2];m=+g[a>>2];n=(l-m)*.6074370741844177;m=m+n;g[a>>2]=l+n;n=+g[c+((p|1)<<2)>>2];l=+g[h>>2];k=(n-l)*.15062999725341797;g[h>>2]=n+k;j=+g[i>>2];o=(-n-j)*.15062999725341797;j=m+j+o;g[i>>2]=o-n;g[b+(d<<2)>>2]=(m+l+k)*.5;e=e+j*j;d=d+1|0}return +e}function jh(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,h=0,i=0,j=0;j=l;l=l+400|0;i=j;e=0;f=22e3;while(1){if((e|0)==16){f=0;h=23664;break}d=+g[f>>2];c=f;h=0;while(1){c=c+4|0;if((h|0)==25)break;d=d+ +g[a+(h<<2)>>2]*+g[c>>2];h=h+1|0}g[i+(e<<2)>>2]=+kh(d);e=e+1|0;f=f+104|0}while(1){if((f|0)==2)break;d=+g[h>>2];e=0;c=h;while(1){c=c+4|0;if((e|0)==16)break;d=d+ +g[i+(e<<2)>>2]*+g[c>>2];e=e+1|0}g[b+(f<<2)>>2]=+kh(d);f=f+1|0;h=h+68|0}l=j;return}function kh(a){a=+a;var b=0.0,c=0,d=0;if(!(a<8.0)){a=1.0;return +a}if(!(a>-8.0)){a=-1.0;return +a}if(a!=a|0.0!=0.0){a=0.0;return +a}c=a<0.0;a=c?-a:a;d=~~+D(+(a*25.0+.5));a=a-+(d|0)*.03999999910593033;b=+g[21196+(d<<2)>>2];a=(c?-1.0:1.0)*(b+a*(1.0-b*b)*(1.0-b*a));return +a}function lh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return mh(a,b,c,b,c,d,e)|0}function mh(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;if(h>>>0>10){if(!i){i=0;return i|0}c[i>>2]=3;i=0;return i|0}j=nh(96)|0;o=j+52|0;c[o>>2]=0;c[j+56>>2]=0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=-1;c[j+80>>2]=0;c[j+28>>2]=0;c[j+24>>2]=0;c[j+72>>2]=0;c[j+84>>2]=0;g[j+44>>2]=1.0;c[j+20>>2]=a;c[j+88>>2]=1;c[j+92>>2]=1;c[j+32>>2]=160;k=a<<2;l=j+60|0;c[l>>2]=nh(k)|0;m=j+68|0;c[m>>2]=nh(k)|0;n=j+64|0;c[n>>2]=nh(k)|0;k=0;while(1){if((k|0)==(a|0))break;c[(c[l>>2]|0)+(k<<2)>>2]=0;c[(c[m>>2]|0)+(k<<2)>>2]=0;c[(c[n>>2]|0)+(k<<2)>>2]=0;k=k+1|0}oh(j,h);ph(j,b,d,e,f);k=qh(j)|0;if(!k)c[o>>2]=1;else{rh(j);j=0}if(!i){i=j;return i|0}c[i>>2]=k;i=j;return i|0}function nh(a){a=a|0;var b=0;b=Kh(a)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;Qh(b|0,0,a|0)|0;return b|0}function oh(a,b){a=a|0;b=b|0;var d=0;if(b>>>0>10)return;d=a+16|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;if(!(c[a+52>>2]|0))return;qh(a)|0;return}function ph(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a+4|0;if((((c[a>>2]|0)==(e|0)?(c[g>>2]|0)==(f|0):0)?(c[a+8>>2]|0)==(b|0):0)?(c[a+12>>2]|0)==(d|0):0)return;h=a+12|0;i=c[h>>2]|0;c[a>>2]=e;c[g>>2]=f;g=a+8|0;c[g>>2]=b;c[h>>2]=d;f=2;e=b;while(1){if(f>>>0>(c[(e>>>0 >>0?g:h)>>2]|0)>>>0)break;e=c[g>>2]|0;while(1){if((e>>>0)%(f>>>0)|0|0)break;d=c[h>>2]|0;if((d>>>0)%(f>>>0)|0|0)break;b=(e>>>0)/(f>>>0)|0;c[g>>2]=b;d=(d>>>0)/(f>>>0)|0;c[h>>2]=d;e=b}f=f+1|0}a:do if(i|0){e=a+20|0;f=a+64|0;d=0;while(1){if(d>>>0>=(c[e>>2]|0)>>>0)break a;g=(c[f>>2]|0)+(d<<2)|0;c[g>>2]=((R(c[g>>2]|0,c[h>>2]|0)|0)>>>0)/(i>>>0)|0;g=(c[f>>2]|0)+(d<<2)|0;b=c[h>>2]|0;if((c[g>>2]|0)>>>0>=b>>>0)c[g>>2]=b+-1;d=d+1|0}}while(0);if(!(c[a+52>>2]|0))return;qh(a)|0;return}function qh(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0;o=a+24|0;p=c[o>>2]|0;q=a+28|0;n=c[q>>2]|0;f=c[a+8>>2]|0;k=a+12|0;h=c[k>>2]|0;c[a+36>>2]=(f>>>0)/(h>>>0)|0;c[a+40>>2]=(f>>>0)%(h>>>0)|0;m=a+16|0;d=c[m>>2]|0;b=c[23800+(d*20|0)+4>>2]|0;j=a+48|0;c[j>>2]=b;e=c[23800+(d*20|0)>>2]|0;c[o>>2]=e;if(f>>>0>h>>>0){g[a+44>>2]=+g[23800+(d*20|0)+8>>2]*+(h>>>0)/+(f>>>0);e=(((R(e,f)|0)>>>0)/(h>>>0)|0)+7&-8;c[o>>2]=e;if(h<<1>>>0 >>0){b=b>>>1;c[j>>2]=b}if(h<<2>>>0 >>0){b=b>>>1;c[j>>2]=b}if(h<<3>>>0 >>0){b=b>>>1;c[j>>2]=b}if(h<<4>>>0 >>0){b=b>>>1;c[j>>2]=b}if(!b){c[j>>2]=1;b=1}}else c[a+44>>2]=c[23800+(d*20|0)+12>>2];d=R(e,h)|0;f=(R(e,b)|0)+8|0;if(d>>>0<=f>>>0?(536870911/(h>>>0)|0)>>>0>=e>>>0:0){i=1;h=16}else h=15;if((h|0)==15?(536870903/(b>>>0)|0)>>>0>=e>>>0:0){d=f;i=0;h=16}do if((h|0)==16){b=a+80|0;if((c[b>>2]|0)>>>0 >>0){e=a+76|0;f=th(c[e>>2]|0,d<<2)|0;if(!f)break;c[e>>2]=f;c[b>>2]=d}f=a+44|0;h=a+76|0;do if(i){b=0;while(1){if(b>>>0>=(c[k>>2]|0)>>>0)break;l=+(b>>>0);d=0;while(1){e=c[o>>2]|0;if(d>>>0>=e>>>0)break;r=+uh(+g[f>>2],+(d-((e|0)/2|0)+1|0)-l/+((c[k>>2]|0)>>>0),e,c[23800+((c[m>>2]|0)*20|0)+16>>2]|0);g[(c[h>>2]|0)+((R(b,e)|0)+d<<2)>>2]=r;d=d+1|0}b=b+1|0}b=a+84|0;if((c[m>>2]|0)>8){c[b>>2]=1;break}else{c[b>>2]=2;break}}else{b=-4;while(1){e=c[j>>2]|0;d=c[o>>2]|0;if((b|0)>=((R(e,d)|0)+4|0))break;r=+uh(+g[f>>2],+(b|0)/+(e>>>0)-+(d>>>1>>>0),d,c[23800+((c[m>>2]|0)*20|0)+16>>2]|0);g[(c[h>>2]|0)+(b+4<<2)>>2]=r;b=b+1|0}b=a+84|0;if((c[m>>2]|0)>8){c[b>>2]=3;break}else{c[b>>2]=4;break}}while(0);b=(c[o>>2]|0)+-1+(c[a+32>>2]|0)|0;d=c[q>>2]|0;if(b>>>0>d>>>0){d=c[a+20>>2]|0;if((536870911/(d>>>0)|0)>>>0>>0)break;e=a+72|0;d=th(c[e>>2]|0,(R(d,b)|0)<<2)|0;if(!d)break;c[e>>2]=d;c[q>>2]=b}else b=d;if(!(c[a+56>>2]|0)){f=a+20|0;e=a+72|0;d=0;while(1){if(d>>>0>=(R(c[f>>2]|0,b)|0)>>>0){b=0;break}g[(c[e>>2]|0)+(d<<2)>>2]=0.0;d=d+1|0;b=c[q>>2]|0}return b|0}b=c[o>>2]|0;if(b>>>0<=p>>>0){if(b>>>0>=p>>>0){q=0;return q|0}j=a+20|0;k=a+68|0;e=a+72|0;d=0;while(1){if(d>>>0>=(c[j>>2]|0)>>>0){b=0;break}b=(c[k>>2]|0)+(d<<2)|0;f=c[b>>2]|0;c[b>>2]=(p-(c[o>>2]|0)|0)>>>1;b=0;while(1){h=(c[k>>2]|0)+(d<<2)|0;i=c[h>>2]|0;if(b>>>0>=((c[o>>2]|0)+-1+i+f|0)>>>0)break;a=c[e>>2]|0;n=(R(d,c[q>>2]|0)|0)+b|0;c[a+(n<<2)>>2]=c[a+(n+i<<2)>>2];b=b+1|0}c[h>>2]=i+f;d=d+1|0}return b|0}i=a+68|0;j=p+-1|0;k=a+72|0;m=a+60|0;b=c[a+20>>2]|0;a:while(1){h=b+-1|0;if(!b){b=0;break}b=c[(c[i>>2]|0)+(h<<2)>>2]|0;f=b<<1;d=R(h,n)|0;b=j+b|0;while(1){e=b+-1|0;if(!b){b=0;break}a=c[k>>2]|0;b=(R(h,c[q>>2]|0)|0)+e|0;c[a+(b+(c[(c[i>>2]|0)+(h<<2)>>2]|0)<<2)>>2]=c[a+(d+e<<2)>>2];b=e}while(1){d=(c[i>>2]|0)+(h<<2)|0;if(b>>>0>=(c[d>>2]|0)>>>0)break;g[(c[k>>2]|0)+((R(h,c[q>>2]|0)|0)+b<<2)>>2]=0.0;b=b+1|0}f=p+f|0;c[d>>2]=0;b=c[o>>2]|0;if(f>>>0>=b>>>0){c[(c[i>>2]|0)+(h<<2)>>2]=(f-b|0)>>>1;b=0;while(1){d=c[(c[i>>2]|0)+(h<<2)>>2]|0;if(b>>>0>=((c[o>>2]|0)+-1+d|0)>>>0){b=h;continue a}f=c[k>>2]|0;a=(R(h,c[q>>2]|0)|0)+b|0;c[f+(a<<2)>>2]=c[f+(a+d<<2)>>2];b=b+1|0}}b=f+-1|0;e=f+-2|0;d=0;while(1){if((d|0)==(b|0))break;s=c[k>>2]|0;a=R(h,c[q>>2]|0)|0;c[s+(a+((c[o>>2]|0)+-2-d)<<2)>>2]=c[s+(a+(e-d)<<2)>>2];d=d+1|0}while(1){d=c[o>>2]|0;if(b>>>0>=(d+-1|0)>>>0)break;g[(c[k>>2]|0)+((R(h,c[q>>2]|0)|0)+(d+-2-b)<<2)>>2]=0.0;b=b+1|0}b=(c[m>>2]|0)+(h<<2)|0;c[b>>2]=(c[b>>2]|0)+((d-f|0)>>>1);b=h}return b|0}while(0);c[a+84>>2]=5;c[o>>2]=p;s=1;return s|0}function rh(a){a=a|0;sh(c[a+72>>2]|0);sh(c[a+76>>2]|0);sh(c[a+60>>2]|0);sh(c[a+68>>2]|0);sh(c[a+64>>2]|0);sh(a);return}function sh(a){a=a|0;Lh(a);return}function th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(!a){a=Kh(b)|0;return a|0}if(b>>>0>4294967231){c[6029]=12;a=0;return a|0}o=b>>>0<11?16:b+11&-8;n=a+-8|0;p=a+-4|0;m=c[p>>2]|0;d=m&-8;j=a+(d+-8)|0;h=c[8506]|0;e=m&3;if(!((e|0)!=1&n>>>0>=h>>>0&(d|0)>0))da();f=c[j+4>>2]|0;if(!(f&1))da();do if(!e){if(!(o>>>0<256|d>>>0<(o|4)>>>0)?(d-o|0)>>>0<=c[8622]<<1>>>0:0)return a|0}else{if(d>>>0>=o>>>0){d=d-o|0;if(d>>>0<=15)return a|0;n=n+o|0;c[p>>2]=m&1|o|2;c[n+4>>2]=d|3;p=n+d+4|0;c[p>>2]=c[p>>2]|1;Mh(n,d);return a|0}if((j|0)==(c[8508]|0)){l=(c[8505]|0)+d|0;e=l-o|0;d=n+o|0;if(l>>>0<=o>>>0)break;c[p>>2]=m&1|o|2;c[d+4>>2]=e|1;c[8508]=d;c[8505]=e;return a|0}if((j|0)==(c[8507]|0)){f=(c[8504]|0)+d|0;if(f>>>0 >>0)break;d=f-o|0;e=m&1;if(d>>>0>15){n=n+o|0;m=n+d|0;c[p>>2]=e|o|2;c[n+4>>2]=d|1;c[m>>2]=d;e=m+4|0;c[e>>2]=c[e>>2]&-2;e=n}else{c[p>>2]=e|f|2;e=n+f+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[8504]=d;c[8507]=e;return a|0}if((f&2|0)==0?(l=(f&-8)+d|0,l>>>0>=o>>>0):0){k=l-o|0;b=f>>>3;a:do if(f>>>0>=256){g=c[j+24>>2]|0;f=c[j+12>>2]|0;do if((f|0)==(j|0)){f=j+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){i=0;break}else e=f}while(1){f=d+20|0;b=c[f>>2]|0;if(b|0){d=b;e=f;continue}f=d+16|0;b=c[f>>2]|0;if(!b)break;else{d=b;e=f}}if(e>>>0 >>0)da();else{c[e>>2]=0;i=d;break}}else{b=c[j+8>>2]|0;if(b>>>0 >>0)da();d=b+12|0;if((c[d>>2]|0)!=(j|0))da();e=f+8|0;if((c[e>>2]|0)==(j|0)){c[d>>2]=f;c[e>>2]=b;i=f;break}else da()}while(0);if(g|0){d=c[j+28>>2]|0;e=34312+(d<<2)|0;do if((j|0)==(c[e>>2]|0)){c[e>>2]=i;if(!i){c[8503]=c[8503]&~(1< >>0>=(c[8506]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=i;if(!i)break a;else break}else da();while(0);f=c[8506]|0;if(i>>>0 >>0)da();c[i+24>>2]=g;d=j+16|0;e=c[d>>2]|0;do if(e|0)if(e>>>0 >>0)da();else{c[i+16>>2]=e;c[e+24>>2]=i;break}while(0);d=c[d+4>>2]|0;if(d|0)if(d>>>0<(c[8506]|0)>>>0)da();else{c[i+20>>2]=d;c[d+24>>2]=i;break}}}else{e=c[j+8>>2]|0;f=c[j+12>>2]|0;d=34048+(b<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0 >>0)da();if((c[e+12>>2]|0)!=(j|0))da()}if((f|0)==(e|0)){c[8502]=c[8502]&~(1<>>0 >>0)da();d=f+8|0;if((c[d>>2]|0)==(j|0))g=d;else da()}else g=f+8|0;c[e+12>>2]=f;c[g>>2]=e}while(0);d=m&1;if(k>>>0<16){c[p>>2]=l|d|2;p=n+l+4|0;c[p>>2]=c[p>>2]|1;return a|0}else{n=n+o|0;c[p>>2]=d|o|2;c[n+4>>2]=k|3;p=n+k+4|0;c[p>>2]=c[p>>2]|1;Mh(n,k);return a|0}}}while(0);d=Kh(b)|0;if(!d){a=0;return a|0}p=c[p>>2]|0;p=(p&-8)-((p&3|0)==0?8:4)|0;Sh(d|0,a|0,(p>>>0>>0?p:b)|0)|0;Lh(a);a=d;return a|0}function uh(a,b,d,e){a=+a;b=+b;d=d|0;e=e|0;var f=0.0,g=0.0;g=+E(+b);if(g<1.0e-06){g=a;return +g}f=+(d|0);if(g>f*.5){g=0.0;return +g}g=b*a*3.141592653589793;a=a*+I(+g)/g;g=+E(+(b*2.0/f));g=a*+Bh(g,c[e>>2]|0,c[e+4>>2]|0);return +g}function vh(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0;w=c[a+24>>2]|0;y=a+60|0;x=a+64|0;s=c[a+76>>2]|0;t=c[a+92>>2]|0;u=c[a+36>>2]|0;v=c[a+40>>2]|0;m=c[a+12>>2]|0;p=c[(c[x>>2]|0)+(b<<2)>>2]|0;q=c[(c[y>>2]|0)+(b<<2)>>2]|0;r=0;while(1){if((q|0)>=(c[e>>2]|0)){a=8;break}if((r|0)>=(c[h>>2]|0)){a=8;break}n=s+((R(p,w)|0)<<2)|0;o=d+(q<<2)|0;a=0;i=0.0;j=0.0;k=0.0;l=0.0;while(1){if((a|0)>=(w|0))break;C=i+ +g[n+(a<<2)>>2]*+g[o+(a<<2)>>2];A=a|1;z=a|2;B=a|3;a=a+4|0;i=C;j=j+ +g[n+(B<<2)>>2]*+g[o+(B<<2)>>2];k=k+ +g[n+(A<<2)>>2]*+g[o+(A<<2)>>2];l=l+ +g[n+(z<<2)>>2]*+g[o+(z<<2)>>2]}g[f+((R(t,r)|0)<<2)>>2]=i+k+l+j;A=p+v|0;B=A>>>0 >>0;p=A-(B?0:m)|0;q=q+u+((B^1)&1)|0;r=r+1|0}if((a|0)==8){c[(c[y>>2]|0)+(b<<2)>>2]=q;c[(c[x>>2]|0)+(b<<2)>>2]=p;return r|0}return 0}function wh(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0;t=c[a+24>>2]|0;v=a+60|0;u=a+64|0;p=c[a+76>>2]|0;q=c[a+92>>2]|0;r=c[a+36>>2]|0;s=c[a+40>>2]|0;j=c[a+12>>2]|0;m=c[(c[u>>2]|0)+(b<<2)>>2]|0;n=c[(c[v>>2]|0)+(b<<2)>>2]|0;o=0;while(1){if((n|0)>=(c[e>>2]|0)){a=8;break}if((o|0)>=(c[h>>2]|0)){a=8;break}k=p+((R(m,t)|0)<<2)|0;l=d+(n<<2)|0;a=0;i=0.0;while(1){if((a|0)>=(t|0))break;w=i+ +g[k+(a<<2)>>2]*+g[l+(a<<2)>>2];a=a+1|0;i=w}g[f+((R(q,o)|0)<<2)>>2]=i;k=m+s|0;l=k>>>0 >>0;m=k-(l?0:j)|0;n=n+r+((l^1)&1)|0;o=o+1|0}if((a|0)==8){c[(c[v>>2]|0)+(b<<2)>>2]=n;c[(c[u>>2]|0)+(b<<2)>>2]=m;return o|0}return 0}function xh(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0;J=l;l=l+16|0;F=J;G=c[a+24>>2]|0;I=a+60|0;H=a+64|0;z=c[a+92>>2]|0;A=c[a+36>>2]|0;B=c[a+40>>2]|0;C=a+12|0;D=c[C>>2]|0;E=a+48|0;n=a+76|0;o=F+4|0;p=F+8|0;q=F+12|0;w=c[(c[H>>2]|0)+(b<<2)>>2]|0;x=c[(c[I>>2]|0)+(b<<2)>>2]|0;y=0;while(1){if((x|0)>=(c[e>>2]|0)){a=8;break}if((y|0)>=(c[h>>2]|0)){a=8;break}r=d+(x<<2)|0;s=c[E>>2]|0;u=R(w,s)|0;a=c[C>>2]|0;t=(u>>>0)/(a>>>0)|0;u=(u>>>0)%(a>>>0)|0;v=+(a>>>0);a=0;i=0.0;j=0.0;k=0.0;m=0.0;while(1){if((a|0)>=(G|0))break;M=+g[r+(a<<2)>>2];L=c[n>>2]|0;N=a+1|0;K=(R(N,s)|0)+4-t|0;a=N;i=i+M*+g[L+(K+-2<<2)>>2];j=j+M*+g[L+(K+1<<2)>>2];k=k+M*+g[L+(K+-1<<2)>>2];m=m+M*+g[L+(K<<2)>>2]}Ah(+(u>>>0)/v,F);g[f+((R(z,y)|0)<<2)>>2]=+g[F>>2]*i+ +g[o>>2]*k+ +g[p>>2]*m+ +g[q>>2]*j;L=w+B|0;N=L>>>0 >>0;w=L-(N?0:D)|0;x=x+A+((N^1)&1)|0;y=y+1|0}if((a|0)==8){c[(c[I>>2]|0)+(b<<2)>>2]=x;c[(c[H>>2]|0)+(b<<2)>>2]=w;l=J;return y|0}return 0}function yh(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0;J=l;l=l+16|0;F=J;G=c[a+24>>2]|0;I=a+60|0;H=a+64|0;z=c[a+92>>2]|0;A=c[a+36>>2]|0;B=c[a+40>>2]|0;C=a+12|0;D=c[C>>2]|0;E=a+48|0;n=a+76|0;o=F+4|0;p=F+8|0;q=F+12|0;w=c[(c[H>>2]|0)+(b<<2)>>2]|0;x=c[(c[I>>2]|0)+(b<<2)>>2]|0;y=0;while(1){if((x|0)>=(c[e>>2]|0)){a=8;break}if((y|0)>=(c[h>>2]|0)){a=8;break}r=d+(x<<2)|0;s=c[E>>2]|0;u=R(w,s)|0;a=c[C>>2]|0;t=(u>>>0)/(a>>>0)|0;u=(u>>>0)%(a>>>0)|0;v=+(a>>>0);a=0;i=0.0;j=0.0;k=0.0;m=0.0;while(1){if((a|0)>=(G|0))break;M=+g[r+(a<<2)>>2];L=c[n>>2]|0;N=a+1|0;K=(R(N,s)|0)+4-t|0;a=N;i=i+M*+g[L+(K+-2<<2)>>2];j=j+M*+g[L+(K+1<<2)>>2];k=k+M*+g[L+(K+-1<<2)>>2];m=m+M*+g[L+(K<<2)>>2]}Ah(+(u>>>0)/v,F);g[f+((R(z,y)|0)<<2)>>2]=+g[F>>2]*i+ +g[o>>2]*k+ +g[p>>2]*m+ +g[q>>2]*j;L=w+B|0;N=L>>>0 >>0;w=L-(N?0:D)|0;x=x+A+((N^1)&1)|0;y=y+1|0}if((a|0)==8){c[(c[I>>2]|0)+(b<<2)>>2]=x;c[(c[H>>2]|0)+(b<<2)>>2]=w;l=J;return y|0}return 0}function zh(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=a+60|0;n=a+64|0;k=c[a+92>>2]|0;l=c[a+36>>2]|0;m=c[a+40>>2]|0;d=c[a+12>>2]|0;a=c[(c[n>>2]|0)+(b<<2)>>2]|0;i=c[(c[o>>2]|0)+(b<<2)>>2]|0;j=0;while(1){if((i|0)>=(c[e>>2]|0)){d=5;break}if((j|0)>=(c[h>>2]|0)){d=5;break}g[f+((R(k,j)|0)<<2)>>2]=0.0;q=a+m|0;p=q>>>0 >>0;a=q-(p?0:d)|0;i=i+l+((p^1)&1)|0;j=j+1|0}if((d|0)==5){c[(c[o>>2]|0)+(b<<2)>>2]=i;c[(c[n>>2]|0)+(b<<2)>>2]=a;return j|0}return 0}function Ah(a,b){a=+a;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;e=a*.16666999459266663*a*a;d=a*-.16666999459266663+e;g[b>>2]=d;f=a*.5*a;c=f+a-f*a;g[b+4>>2]=c;a=a*-.3333300054073334+f-e;g[b+12>>2]=a;g[b+8>>2]=1.0-d-c-a;return}function Bh(a,b,c){a=+a;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;d=+(c|0)*a;c=~~+D(+d);d=d-+(c|0);g=d;f=d*d;d=f*d;e=d*.1666666667;a=g*-.1666666667+e;f=f*.5;d=g+f-d*.5;e=g*-.3333333333+f-e;return +(e*+h[b+(c<<3)>>3]+(1.0-a-d-e)*+h[b+(c+1<<3)>>3]+d*+h[b+(c+2<<3)>>3]+a*+h[b+(c+3<<3)>>3])}function Ch(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=l;l=l+16|0;s=v+8|0;t=v+4|0;u=v;c[s>>2]=f;i=c[e>>2]|0;f=c[h>>2]|0;q=c[a+28>>2]|0;o=(c[a+72>>2]|0)+((R(q,b)|0)<<2)|0;p=(c[a+24>>2]|0)+-1|0;q=q-p|0;r=c[a+88>>2]|0;j=a+68|0;if(c[(c[j>>2]|0)+(b<<2)>>2]|0){f=f-(Dh(a,b,s,f)|0)|0;if(c[(c[j>>2]|0)+(b<<2)>>2]|0){t=i;u=f;s=c[e>>2]|0;t=s-t|0;c[e>>2]=t;e=c[h>>2]|0;e=e-u|0;c[h>>2]=e;l=v;return}}n=a+92|0;m=d;a:while(1){k=(m|0)==0;do{if(!((i|0)!=0&(f|0)!=0))break a;j=i>>>0>q>>>0?q:i;c[t>>2]=j;c[u>>2]=f;b:do if(k){d=0;while(1){if(d>>>0>=j>>>0)break b;g[o+(d+p<<2)>>2]=0.0;d=d+1|0;j=c[t>>2]|0}}else{d=0;while(1){if(d>>>0>=j>>>0)break b;c[o+(d+p<<2)>>2]=c[m+((R(d,r)|0)<<2)>>2];d=d+1|0;j=c[t>>2]|0}}while(0);w=c[s>>2]|0;Eh(a,b,t,w,u);j=c[t>>2]|0;i=i-j|0;d=c[u>>2]|0;f=f-d|0;c[s>>2]=w+((R(d,c[n>>2]|0)|0)<<2)}while(k);m=m+((R(j,r)|0)<<2)|0}w=c[e>>2]|0;w=w-i|0;c[e>>2]=w;w=c[h>>2]|0;w=w-f|0;c[h>>2]=w;l=v;return}function Dh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n+4|0;m=n;c[k>>2]=e;j=a+68|0;c[m>>2]=c[(c[j>>2]|0)+(b<<2)>>2];i=(c[a+72>>2]|0)+((R(c[a+28>>2]|0,b)|0)<<2)|0;e=c[a+24>>2]|0;Eh(a,b,m,c[d>>2]|0,k);g=(c[j>>2]|0)+(b<<2)|0;c[g>>2]=(c[g>>2]|0)-(c[m>>2]|0);g=c[(c[j>>2]|0)+(b<<2)>>2]|0;if(!g){m=c[k>>2]|0;k=a+92|0;k=c[k>>2]|0;k=R(m,k)|0;b=c[d>>2]|0;k=b+(k<<2)|0;c[d>>2]=k;l=n;return m|0}h=e+-1|0;f=0;e=g;while(1){if(f>>>0>=e>>>0)break;e=h+f|0;c[i+(e<<2)>>2]=c[i+(e+(c[m>>2]|0)<<2)>>2];f=f+1|0;e=c[(c[j>>2]|0)+(b<<2)>>2]|0}m=c[k>>2]|0;k=a+92|0;k=c[k>>2]|0;k=R(m,k)|0;b=c[d>>2]|0;k=b+(k<<2)|0;c[d>>2]=k;l=n;return m|0}function Eh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=c[a+24>>2]|0;i=(c[a+72>>2]|0)+((R(c[a+28>>2]|0,b)|0)<<2)|0;c[a+56>>2]=1;g=ja[c[a+84>>2]&7](a,b,i,d,e,f)|0;e=a+60|0;a=c[(c[e>>2]|0)+(b<<2)>>2]|0;if((a|0)<(c[d>>2]|0))c[d>>2]=a;c[f>>2]=g;g=(c[e>>2]|0)+(b<<2)|0;c[g>>2]=(c[g>>2]|0)-(c[d>>2]|0);g=c[d>>2]|0;a=h+-1|0;e=0;while(1){if((e|0)>=(a|0))break;c[i+(e<<2)>>2]=c[i+(e+g<<2)>>2];e=e+1|0}return}function Fh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=c[f>>2]|0;m=c[d>>2]|0;n=a+88|0;o=c[n>>2]|0;p=a+92|0;h=c[p>>2]|0;i=a+20|0;k=c[i>>2]|0;c[p>>2]=k;c[n>>2]=k;j=(b|0)==0;g=0;while(1){if(g>>>0>=k>>>0)break;c[f>>2]=l;c[d>>2]=m;if(j)Ch(a,g,0,d,e+(g<<2)|0,f);else Ch(a,g,b+(g<<2)|0,d,e+(g<<2)|0,f);g=g+1|0;k=c[i>>2]|0}c[n>>2]=o;c[p>>2]=h;return (c[a+84>>2]|0)==5|0}function Gh(){return 33944}function Hh(a){a=+a;var b=0;b=(g[j>>2]=a,c[j>>2]|0);if((b&2130706432)>>>0<=1249902592){b=(b|0)<0;a=(b?8388608.0:-8388608.0)+((b?-8388608.0:8388608.0)+a);if(a==0.0)a=b?-0.0:0.0}return +a}function Ih(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;k=+h[j>>3]+-1.0;i=k*(k*.5);l=k/(k+2.0);m=l*l;a=m*m;h[j>>3]=k-i;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;g=+h[j>>3];a=k-g-i+l*(i+(a*(a*(a*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(a*(a*(a*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=g*.4342944818781689;i=+(e+(f>>>20)|0);l=i*.30102999566361177;k=l+m;a=k+(m+(l-k)+(a*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function Jh(a){a=+a;return ~~+Hh(a)|0}function Kh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=l;l=l+16|0;o=K;do if(a>>>0<245){p=a>>>0<11?16:a+11&-8;a=p>>>3;t=c[8502]|0;d=t>>>a;if(d&3|0){a=(d&1^1)+a|0;d=34048+(a<<1<<2)|0;e=d+8|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[8506]|0)>>>0)da();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else da()}else c[8502]=t&~(1<>2]=J|3;J=f+J+4|0;c[J>>2]=c[J>>2]|1;J=g;l=K;return J|0}s=c[8504]|0;if(p>>>0>s>>>0){if(d|0){i=2<>>12&16;a=a>>>i;e=a>>>5&8;a=a>>>e;g=a>>>2&4;a=a>>>g;d=a>>>1&2;a=a>>>d;b=a>>>1&1;b=(e|i|g|d|b)+(a>>>b)|0;a=34048+(b<<1<<2)|0;d=a+8|0;g=c[d>>2]|0;i=g+8|0;e=c[i>>2]|0;do if((a|0)!=(e|0)){if(e>>>0<(c[8506]|0)>>>0)da();f=e+12|0;if((c[f>>2]|0)==(g|0)){c[f>>2]=a;c[d>>2]=e;j=t;break}else da()}else{j=t&~(1<>2]=p|3;e=g+p|0;c[e+4>>2]=h|1;c[e+h>>2]=h;if(s|0){f=c[8507]|0;b=s>>>3;d=34048+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(c[8506]|0)>>>0)da();else{k=a;m=b}}else{c[8502]=j|b;k=d;m=d+8|0}c[m>>2]=f;c[k+12>>2]=f;c[f+8>>2]=k;c[f+12>>2]=d}c[8504]=h;c[8507]=e;J=i;l=K;return J|0}k=c[8503]|0;if(k){a=(k&0-k)+-1|0;I=a>>>12&16;a=a>>>I;H=a>>>5&8;a=a>>>H;J=a>>>2&4;a=a>>>J;d=a>>>1&2;a=a>>>d;b=a>>>1&1;b=c[34312+((H|I|J|d|b)+(a>>>b)<<2)>>2]|0;a=(c[b+4>>2]&-8)-p|0;d=c[b+16+(((c[b+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){j=b;h=a}else{do{I=(c[d+4>>2]&-8)-p|0;J=I>>>0>>0;a=J?I:a;b=J?d:b;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0}while((d|0)!=0);j=b;h=a}f=c[8506]|0;if(j>>>0 >>0)da();i=j+p|0;if(j>>>0>=i>>>0)da();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0 >>0)da();else{c[a>>2]=0;n=b;break}}else{e=c[j+8>>2]|0;if(e>>>0 >>0)da();b=e+12|0;if((c[b>>2]|0)!=(j|0))da();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;n=d;break}else da()}while(0);a:do if(g|0){b=c[j+28>>2]|0;a=34312+(b<<2)|0;do if((j|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[8503]=k&~(1<>>0>=(c[8506]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=n;if(!n)break a;else break}else da();while(0);a=c[8506]|0;if(n>>>0>>0)da();c[n+24>>2]=g;b=c[j+16>>2]|0;do if(b|0)if(b>>>0>>0)da();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[j+20>>2]|0;if(b|0)if(b>>>0<(c[8506]|0)>>>0)da();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(h>>>0<16){J=h+p|0;c[j+4>>2]=J|3;J=j+J+4|0;c[J>>2]=c[J>>2]|1}else{c[j+4>>2]=p|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(s|0){e=c[8507]|0;b=s>>>3;d=34048+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(c[8506]|0)>>>0)da();else{q=a;r=b}}else{c[8502]=t|b;q=d;r=d+8|0}c[r>>2]=e;c[q+12>>2]=e;c[e+8>>2]=q;c[e+12>>2]=d}c[8504]=h;c[8507]=i}J=j+8|0;l=K;return J|0}}}else if(a>>>0<=4294967231){a=a+11|0;p=a&-8;k=c[8503]|0;if(k){e=0-p|0;a=a>>>8;if(a)if(p>>>0>16777215)i=31;else{r=(a+1048320|0)>>>16&8;C=a< >>16&4;C=C< >>16&2;i=14-(q|r|i)+(C<>>15)|0;i=p>>>(i+7|0)&1|i<<1}else i=0;d=c[34312+(i<<2)>>2]|0;b:do if(!d){d=0;a=0;C=81}else{a=0;h=p<<((i|0)==31?0:25-(i>>>1)|0);g=0;while(1){f=(c[d+4>>2]&-8)-p|0;if(f>>>0>>0)if(!f){a=d;e=0;f=d;C=85;break b}else{a=d;e=f}f=c[d+20>>2]|0;d=c[d+16+(h>>>31<<2)>>2]|0;g=(f|0)==0|(f|0)==(d|0)?g:f;f=(d|0)==0;if(f){d=g;C=81;break}else h=h<<((f^1)&1)}}while(0);if((C|0)==81){if((d|0)==0&(a|0)==0){a=2<>>12&16;r=r>>>m;j=r>>>5&8;r=r>>>j;n=r>>>2&4;r=r>>>n;q=r>>>1&2;r=r>>>q;d=r>>>1&1;a=0;d=c[34312+((j|m|n|q|d)+(r>>>d)<<2)>>2]|0}if(!d){j=a;i=e}else{f=d;C=85}}if((C|0)==85)while(1){C=0;d=(c[f+4>>2]&-8)-p|0;r=d>>>0 >>0;d=r?d:e;a=r?f:a;f=c[f+16+(((c[f+16>>2]|0)==0&1)<<2)>>2]|0;if(!f){j=a;i=d;break}else{e=d;C=85}}if((j|0)!=0?i>>>0<((c[8504]|0)-p|0)>>>0:0){f=c[8506]|0;if(j>>>0 >>0)da();h=j+p|0;if(j>>>0>=h>>>0)da();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){s=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0 >>0)da();else{c[a>>2]=0;s=b;break}}else{e=c[j+8>>2]|0;if(e>>>0 >>0)da();b=e+12|0;if((c[b>>2]|0)!=(j|0))da();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;s=d;break}else da()}while(0);c:do if(g){b=c[j+28>>2]|0;a=34312+(b<<2)|0;do if((j|0)==(c[a>>2]|0)){c[a>>2]=s;if(!s){t=k&~(1<>>0>=(c[8506]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=s;if(!s){t=k;break c}else break}else da();while(0);a=c[8506]|0;if(s>>>0>>0)da();c[s+24>>2]=g;b=c[j+16>>2]|0;do if(b|0)if(b>>>0>>0)da();else{c[s+16>>2]=b;c[b+24>>2]=s;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[8506]|0)>>>0)da();else{c[s+20>>2]=b;c[b+24>>2]=s;t=k;break}else t=k}else t=k;while(0);do if(i>>>0>=16){c[j+4>>2]=p|3;c[h+4>>2]=i|1;c[h+i>>2]=i;b=i>>>3;if(i>>>0<256){d=34048+(b<<1<<2)|0;a=c[8502]|0;b=1<>2]|0;if(a>>>0<(c[8506]|0)>>>0)da();else{x=a;y=b}}else{c[8502]=a|b;x=d;y=d+8|0}c[y>>2]=h;c[x+12>>2]=h;c[h+8>>2]=x;c[h+12>>2]=d;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J< >>16&2;b=14-(H|I|b)+(J<>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;d=34312+(b<<2)|0;c[h+28>>2]=b;a=h+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);e=c[d>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(i|0)){C=139;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=136;break}else{a=a<<1;e=b}}if((C|0)==136)if(d>>>0<(c[8506]|0)>>>0)da();else{c[d>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;break}else if((C|0)==139){b=e+8|0;a=c[b>>2]|0;J=c[8506]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=e;c[h+24>>2]=0;break}else da()}}else{J=i+p|0;c[j+4>>2]=J|3;J=j+J+4|0;c[J>>2]=c[J>>2]|1}while(0);J=j+8|0;l=K;return J|0}}}else p=-1;while(0);d=c[8504]|0;if(d>>>0>=p>>>0){b=d-p|0;a=c[8507]|0;if(b>>>0>15){J=a+p|0;c[8507]=J;c[8504]=b;c[J+4>>2]=b|1;c[J+b>>2]=b;c[a+4>>2]=p|3}else{c[8504]=0;c[8507]=0;c[a+4>>2]=d|3;J=a+d+4|0;c[J>>2]=c[J>>2]|1}J=a+8|0;l=K;return J|0}h=c[8505]|0;if(h>>>0>p>>>0){H=h-p|0;c[8505]=H;J=c[8508]|0;I=J+p|0;c[8508]=I;c[I+4>>2]=H|1;c[J+4>>2]=p|3;J=J+8|0;l=K;return J|0}if(!(c[8620]|0)){c[8622]=4096;c[8621]=4096;c[8623]=-1;c[8624]=-1;c[8625]=0;c[8613]=0;a=o&-16^1431655768;c[o>>2]=a;c[8620]=a;a=4096}else a=c[8622]|0;i=p+48|0;j=p+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=p>>>0){J=0;l=K;return J|0}a=c[8612]|0;if(a|0?(x=c[8610]|0,y=x+k|0,y>>>0<=x>>>0|y>>>0>a>>>0):0){J=0;l=K;return J|0}d:do if(!(c[8613]&4)){d=c[8508]|0;e:do if(d){e=34456;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(w=e+4|0,(a+(c[w>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){C=163;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=Vh(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[w>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;C=180;break d}}else{e=a;C=171}}else b=0}else C=163;while(0);do if((C|0)==163){d=Vh(0)|0;if((d|0)!=(-1|0)?(b=d,u=c[8621]|0,v=u+-1|0,b=((v&b|0)==0?0:(v+b&0-u)-b|0)+k|0,u=c[8610]|0,v=b+u|0,b>>>0>p>>>0&b>>>0<2147483647):0){y=c[8612]|0;if(y|0?v>>>0<=u>>>0|v>>>0>y>>>0:0){b=0;break}a=Vh(b|0)|0;if((a|0)==(d|0)){h=b;g=d;C=180;break d}else{e=a;C=171}}else b=0}while(0);do if((C|0)==171){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;C=180;break d}a=c[8622]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;C=180;break d}if((Vh(a|0)|0)==(-1|0)){Vh(d|0)|0;b=0;break}else{h=a+b|0;g=e;C=180;break d}}while(0);c[8613]=c[8613]|4;C=178}else{b=0;C=178}while(0);if(((C|0)==178?k>>>0<2147483647:0)?(B=Vh(k|0)|0,y=Vh(0)|0,z=y-B|0,A=z>>>0>(p+40|0)>>>0,!((B|0)==(-1|0)|A^1|B>>>0 >>0&((B|0)!=(-1|0)&(y|0)!=(-1|0))^1)):0){h=A?z:b;g=B;C=180}if((C|0)==180){b=(c[8610]|0)+h|0;c[8610]=b;if(b>>>0>(c[8611]|0)>>>0)c[8611]=b;k=c[8508]|0;do if(k){b=34456;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){C=190;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((C|0)==190?(c[b+12>>2]&8|0)==0:0)?k>>>0 >>0&k>>>0>=a>>>0:0){c[d>>2]=e+h;J=k+8|0;J=(J&7|0)==0?0:0-J&7;I=k+J|0;J=(c[8505]|0)+(h-J)|0;c[8508]=I;c[8505]=J;c[I+4>>2]=J|1;c[I+J+4>>2]=40;c[8509]=c[8624];break}b=c[8506]|0;if(g>>>0>>0){c[8506]=g;i=g}else i=b;d=g+h|0;b=34456;while(1){if((c[b>>2]|0)==(d|0)){C=198;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((C|0)==198?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;n=b+4|0;c[n>>2]=(c[n>>2]|0)+h;n=g+8|0;n=g+((n&7|0)==0?0:0-n&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;m=n+p|0;j=b-n-p|0;c[n+4>>2]=p|3;do if((b|0)!=(k|0)){if((b|0)==(c[8507]|0)){J=(c[8504]|0)+j|0;c[8504]=J;c[8507]=m;c[m+4>>2]=J|1;c[m+J>>2]=J;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;f=a>>>3;f:do if(a>>>0>=256){g=c[b+24>>2]|0;e=c[b+12>>2]|0;do if((e|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){H=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}if(d>>>0>>0)da();else{c[d>>2]=0;H=a;break}}else{f=c[b+8>>2]|0;if(f>>>0>>0)da();a=f+12|0;if((c[a>>2]|0)!=(b|0))da();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;H=e;break}else da()}while(0);if(!g)break;a=c[b+28>>2]|0;d=34312+(a<<2)|0;do if((b|0)!=(c[d>>2]|0))if(g>>>0>=(c[8506]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=H;if(!H)break f;else break}else da();else{c[d>>2]=H;if(H|0)break;c[8503]=c[8503]&~(1<>>0 >>0)da();c[H+24>>2]=g;a=b+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0 >>0)da();else{c[H+16>>2]=d;c[d+24>>2]=H;break}while(0);a=c[a+4>>2]|0;if(!a)break;if(a>>>0<(c[8506]|0)>>>0)da();else{c[H+20>>2]=a;c[a+24>>2]=H;break}}else{d=c[b+8>>2]|0;e=c[b+12>>2]|0;a=34048+(f<<1<<2)|0;do if((d|0)!=(a|0)){if(d>>>0>>0)da();if((c[d+12>>2]|0)==(b|0))break;da()}while(0);if((e|0)==(d|0)){c[8502]=c[8502]&~(1< >>0>>0)da();a=e+8|0;if((c[a>>2]|0)==(b|0)){E=a;break}da()}while(0);c[d+12>>2]=e;c[E>>2]=d}while(0);b=b+h|0;f=h+j|0}else f=j;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[m+4>>2]=f|1;c[m+f>>2]=f;b=f>>>3;if(f>>>0<256){d=34048+(b<<1<<2)|0;a=c[8502]|0;b=1<>2]|0;if(a>>>0>=(c[8506]|0)>>>0){I=a;J=b;break}da()}while(0);c[J>>2]=m;c[I+12>>2]=m;c[m+8>>2]=I;c[m+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J< >>16&2;b=14-(H|I|b)+(J<>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=34312+(b<<2)|0;c[m+28>>2]=b;a=m+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[8503]|0;d=1<>2]=m;c[m+24>>2]=e;c[m+12>>2]=m;c[m+8>>2]=m;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){C=265;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=262;break}else{a=a<<1;e=b}}if((C|0)==262)if(d>>>0<(c[8506]|0)>>>0)da();else{c[d>>2]=m;c[m+24>>2]=e;c[m+12>>2]=m;c[m+8>>2]=m;break}else if((C|0)==265){b=e+8|0;a=c[b>>2]|0;J=c[8506]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=m;c[b>>2]=m;c[m+8>>2]=a;c[m+12>>2]=e;c[m+24>>2]=0;break}else da()}}else{J=(c[8505]|0)+j|0;c[8505]=J;c[8508]=m;c[m+4>>2]=J|1}while(0);J=n+8|0;l=K;return J|0}b=34456;while(1){a=c[b>>2]|0;if(a>>>0<=k>>>0?(D=a+(c[b+4>>2]|0)|0,D>>>0>k>>>0):0)break;b=c[b+8>>2]|0}f=D+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=k+16|0;a=a>>>0 >>0?k:a;b=a+8|0;d=g+8|0;d=(d&7|0)==0?0:0-d&7;J=g+d|0;d=h+-40-d|0;c[8508]=J;c[8505]=d;c[J+4>>2]=d|1;c[J+d+4>>2]=40;c[8509]=c[8624];d=a+4|0;c[d>>2]=27;c[b>>2]=c[8614];c[b+4>>2]=c[8615];c[b+8>>2]=c[8616];c[b+12>>2]=c[8617];c[8614]=g;c[8615]=h;c[8617]=0;c[8616]=b;b=a+24|0;do{J=b;b=b+4|0;c[b>>2]=7}while((J+8|0)>>>0 >>0);if((a|0)!=(k|0)){g=a-k|0;c[d>>2]=c[d>>2]&-2;c[k+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=34048+(b<<1<<2)|0;a=c[8502]|0;b=1<>2]|0;if(a>>>0<(c[8506]|0)>>>0)da();else{F=a;G=b}}else{c[8502]=a|b;F=d;G=d+8|0}c[G>>2]=k;c[F+12>>2]=k;c[k+8>>2]=F;c[k+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J< >>16&2;d=14-(H|I|d)+(J< >>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=34312+(d<<2)|0;c[k+28>>2]=d;c[k+20>>2]=0;c[f>>2]=0;b=c[8503]|0;a=1< >2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(g|0)){C=292;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=289;break}else{a=a<<1;e=b}}if((C|0)==289)if(d>>>0<(c[8506]|0)>>>0)da();else{c[d>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((C|0)==292){b=e+8|0;a=c[b>>2]|0;J=c[8506]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=k;c[b>>2]=k;c[k+8>>2]=a;c[k+12>>2]=e;c[k+24>>2]=0;break}else da()}}}else{J=c[8506]|0;if((J|0)==0|g>>>0 >>0)c[8506]=g;c[8614]=g;c[8615]=h;c[8617]=0;c[8511]=c[8620];c[8510]=-1;b=0;do{J=34048+(b<<1<<2)|0;c[J+12>>2]=J;c[J+8>>2]=J;b=b+1|0}while((b|0)!=32);J=g+8|0;J=(J&7|0)==0?0:0-J&7;I=g+J|0;J=h+-40-J|0;c[8508]=I;c[8505]=J;c[I+4>>2]=J|1;c[I+J+4>>2]=40;c[8509]=c[8624]}while(0);b=c[8505]|0;if(b>>>0>p>>>0){H=b-p|0;c[8505]=H;J=c[8508]|0;I=J+p|0;c[8508]=I;c[I+4>>2]=H|1;c[J+4>>2]=p|3;J=J+8|0;l=K;return J|0}}c[6029]=12;J=0;l=K;return J|0}function Lh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!a)return;d=a+-8|0;h=c[8506]|0;if(d>>>0 >>0)da();a=c[a+-4>>2]|0;b=a&3;if((b|0)==1)da();e=a&-8;o=d+e|0;a:do if(!(a&1)){a=c[d>>2]|0;if(!b)return;k=d+(0-a)|0;j=a+e|0;if(k>>>0 >>0)da();if((k|0)==(c[8507]|0)){a=o+4|0;b=c[a>>2]|0;if((b&3|0)!=3){r=k;f=j;m=k;break}c[8504]=j;c[a>>2]=b&-2;c[k+4>>2]=j|1;c[k+j>>2]=j;return}e=a>>>3;if(a>>>0<256){b=c[k+8>>2]|0;d=c[k+12>>2]|0;a=34048+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0 >>0)da();if((c[b+12>>2]|0)!=(k|0))da()}if((d|0)==(b|0)){c[8502]=c[8502]&~(1< >>0 >>0)da();a=d+8|0;if((c[a>>2]|0)==(k|0))g=a;else da()}else g=d+8|0;c[b+12>>2]=d;c[g>>2]=b;r=k;f=j;m=k;break}g=c[k+24>>2]|0;d=c[k+12>>2]|0;do if((d|0)==(k|0)){d=k+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){i=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0 >>0)da();else{c[b>>2]=0;i=a;break}}else{e=c[k+8>>2]|0;if(e>>>0 >>0)da();a=e+12|0;if((c[a>>2]|0)!=(k|0))da();b=d+8|0;if((c[b>>2]|0)==(k|0)){c[a>>2]=d;c[b>>2]=e;i=d;break}else da()}while(0);if(g){a=c[k+28>>2]|0;b=34312+(a<<2)|0;do if((k|0)==(c[b>>2]|0)){c[b>>2]=i;if(!i){c[8503]=c[8503]&~(1<>>0>=(c[8506]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(k|0)&1)<<2)>>2]=i;if(!i){r=k;f=j;m=k;break a}else break}else da();while(0);d=c[8506]|0;if(i>>>0 >>0)da();c[i+24>>2]=g;a=k+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0 >>0)da();else{c[i+16>>2]=b;c[b+24>>2]=i;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[8506]|0)>>>0)da();else{c[i+20>>2]=a;c[a+24>>2]=i;r=k;f=j;m=k;break}else{r=k;f=j;m=k}}else{r=k;f=j;m=k}}else{r=d;f=e;m=d}while(0);if(m>>>0>=o>>>0)da();a=o+4|0;b=c[a>>2]|0;if(!(b&1))da();if(!(b&2)){a=c[8507]|0;if((o|0)==(c[8508]|0)){q=(c[8505]|0)+f|0;c[8505]=q;c[8508]=r;c[r+4>>2]=q|1;if((r|0)!=(a|0))return;c[8507]=0;c[8504]=0;return}if((o|0)==(a|0)){q=(c[8504]|0)+f|0;c[8504]=q;c[8507]=m;c[r+4>>2]=q|1;c[m+q>>2]=q;return}f=(b&-8)+f|0;e=b>>>3;b:do if(b>>>0>=256){g=c[o+24>>2]|0;a=c[o+12>>2]|0;do if((a|0)==(o|0)){d=o+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){n=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<(c[8506]|0)>>>0)da();else{c[b>>2]=0;n=a;break}}else{b=c[o+8>>2]|0;if(b>>>0<(c[8506]|0)>>>0)da();d=b+12|0;if((c[d>>2]|0)!=(o|0))da();e=a+8|0;if((c[e>>2]|0)==(o|0)){c[d>>2]=a;c[e>>2]=b;n=a;break}else da()}while(0);if(g|0){a=c[o+28>>2]|0;b=34312+(a<<2)|0;do if((o|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[8503]=c[8503]&~(1<>>0>=(c[8506]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else da();while(0);d=c[8506]|0;if(n>>>0 >>0)da();c[n+24>>2]=g;a=o+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0 >>0)da();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[8506]|0)>>>0)da();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{b=c[o+8>>2]|0;d=c[o+12>>2]|0;a=34048+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(c[8506]|0)>>>0)da();if((c[b+12>>2]|0)!=(o|0))da()}if((d|0)==(b|0)){c[8502]=c[8502]&~(1< >>0<(c[8506]|0)>>>0)da();a=d+8|0;if((c[a>>2]|0)==(o|0))l=a;else da()}else l=d+8|0;c[b+12>>2]=d;c[l>>2]=b}while(0);c[r+4>>2]=f|1;c[m+f>>2]=f;if((r|0)==(c[8507]|0)){c[8504]=f;return}}else{c[a>>2]=b&-2;c[r+4>>2]=f|1;c[m+f>>2]=f}a=f>>>3;if(f>>>0<256){d=34048+(a<<1<<2)|0;b=c[8502]|0;a=1<>2]|0;if(b>>>0<(c[8506]|0)>>>0)da();else{p=b;q=a}}else{c[8502]=b|a;p=d;q=d+8|0}c[q>>2]=r;c[p+12>>2]=r;c[r+8>>2]=p;c[r+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a< >>16&4;q=q<
>>16&2;a=14-(o|p|a)+(q<>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=34312+(a<<2)|0;c[r+28>>2]=a;c[r+20>>2]=0;c[r+16>>2]=0;b=c[8503]|0;d=1<>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){a=124;break}d=e+16+(b>>>31<<2)|0;a=c[d>>2]|0;if(!a){a=121;break}else{b=b<<1;e=a}}if((a|0)==121)if(d>>>0<(c[8506]|0)>>>0)da();else{c[d>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;break}else if((a|0)==124){a=e+8|0;b=c[a>>2]|0;q=c[8506]|0;if(b>>>0>=q>>>0&e>>>0>=q>>>0){c[b+12>>2]=r;c[a>>2]=r;c[r+8>>2]=b;c[r+12>>2]=e;c[r+24>>2]=0;break}else da()}}else{c[8503]=b|d;c[e>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r}while(0);r=(c[8510]|0)+-1|0;c[8510]=r;if(!r)a=34464;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[8510]=-1;return}function Mh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+b|0;d=c[a+4>>2]|0;a:do if(!(d&1)){g=c[a>>2]|0;if(!(d&3))return;l=a+(0-g)|0;k=g+b|0;i=c[8506]|0;if(l>>>0>>0)da();if((l|0)==(c[8507]|0)){a=o+4|0;d=c[a>>2]|0;if((d&3|0)!=3){r=l;f=k;break}c[8504]=k;c[a>>2]=d&-2;c[l+4>>2]=k|1;c[l+k>>2]=k;return}e=g>>>3;if(g>>>0<256){d=c[l+8>>2]|0;b=c[l+12>>2]|0;a=34048+(e<<1<<2)|0;if((d|0)!=(a|0)){if(d>>>0>>0)da();if((c[d+12>>2]|0)!=(l|0))da()}if((b|0)==(d|0)){c[8502]=c[8502]&~(1< >>0>>0)da();a=b+8|0;if((c[a>>2]|0)==(l|0))h=a;else da()}else h=b+8|0;c[d+12>>2]=b;c[h>>2]=d;r=l;f=k;break}g=c[l+24>>2]|0;b=c[l+12>>2]|0;do if((b|0)==(l|0)){b=l+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){j=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}if(d>>>0>>0)da();else{c[d>>2]=0;j=a;break}}else{e=c[l+8>>2]|0;if(e>>>0>>0)da();a=e+12|0;if((c[a>>2]|0)!=(l|0))da();d=b+8|0;if((c[d>>2]|0)==(l|0)){c[a>>2]=b;c[d>>2]=e;j=b;break}else da()}while(0);if(g){a=c[l+28>>2]|0;d=34312+(a<<2)|0;do if((l|0)==(c[d>>2]|0)){c[d>>2]=j;if(!j){c[8503]=c[8503]&~(1<>>0>=(c[8506]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(l|0)&1)<<2)>>2]=j;if(!j){r=l;f=k;break a}else break}else da();while(0);b=c[8506]|0;if(j>>>0>>0)da();c[j+24>>2]=g;a=l+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0>>0)da();else{c[j+16>>2]=d;c[d+24>>2]=j;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[8506]|0)>>>0)da();else{c[j+20>>2]=a;c[a+24>>2]=j;r=l;f=k;break}else{r=l;f=k}}else{r=l;f=k}}else{r=a;f=b}while(0);h=c[8506]|0;if(o>>>0 >>0)da();a=o+4|0;d=c[a>>2]|0;if(!(d&2)){a=c[8507]|0;if((o|0)==(c[8508]|0)){q=(c[8505]|0)+f|0;c[8505]=q;c[8508]=r;c[r+4>>2]=q|1;if((r|0)!=(a|0))return;c[8507]=0;c[8504]=0;return}if((o|0)==(a|0)){q=(c[8504]|0)+f|0;c[8504]=q;c[8507]=r;c[r+4>>2]=q|1;c[r+q>>2]=q;return}f=(d&-8)+f|0;e=d>>>3;b:do if(d>>>0>=256){g=c[o+24>>2]|0;b=c[o+12>>2]|0;do if((b|0)==(o|0)){b=o+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){n=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}if(d>>>0 >>0)da();else{c[d>>2]=0;n=a;break}}else{e=c[o+8>>2]|0;if(e>>>0 >>0)da();a=e+12|0;if((c[a>>2]|0)!=(o|0))da();d=b+8|0;if((c[d>>2]|0)==(o|0)){c[a>>2]=b;c[d>>2]=e;n=b;break}else da()}while(0);if(g|0){a=c[o+28>>2]|0;d=34312+(a<<2)|0;do if((o|0)==(c[d>>2]|0)){c[d>>2]=n;if(!n){c[8503]=c[8503]&~(1<>>0>=(c[8506]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else da();while(0);b=c[8506]|0;if(n>>>0>>0)da();c[n+24>>2]=g;a=o+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0>>0)da();else{c[n+16>>2]=d;c[d+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[8506]|0)>>>0)da();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{d=c[o+8>>2]|0;b=c[o+12>>2]|0;a=34048+(e<<1<<2)|0;if((d|0)!=(a|0)){if(d>>>0 >>0)da();if((c[d+12>>2]|0)!=(o|0))da()}if((b|0)==(d|0)){c[8502]=c[8502]&~(1<