.0 <4.0.0"
''');
    var mainFile = newFile('$testPackageRootPath/lib/main.dart', r'''
// ignore: unused_import
import 'dart:html';
''');
    await assertNoDiagnosticsInFile(mainFile.path);
  }

  test_nonWebApp() async {
    newFile('$testPackageRootPath/pubspec.yaml', r'''
name: sample_project
version: 1.0.0+1

environment:
  sdk: ">=3.0.0 <4.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true
''');
    var mainFile = newFile('$testPackageRootPath/lib/main.dart', r'''
// ignore: unused_import
import 'dart:html';
''');
    await assertDiagnosticsInFile(mainFile.path, [lint(25, 19)]);
  }

  test_noPubspec() async {
    var mainFile = newFile('$testPackageRootPath/lib/main.dart', r'''
// ignore: unused_import
import 'dart:html';
''');
    await assertNoDiagnosticsInFile(mainFile.path);
  }

  test_webApp() async {
    newFile('$testPackageRootPath/pubspec.yaml', r'''
name: sample_project
version: 1.0.0+1

environment:
  sdk: ">=3.0.0 <4.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true
''');
    var mainFile = newFile('$testPackageRootPath/lib/main.dart', r'''
// ignore: unused_import
import 'dart:html';
''');
    newFile('$testPackageRootPath/web/README', 'Placeholder.');
    await assertDiagnosticsInFile(mainFile.path, [
      // Even in a package with a `web/` directory, do not use web libraries.
      // Note(srawlins): This seems weird to me, but this is the expectation
      // from the previous version of this test.
      lint(25, 19),
    ]);
  }

  test_webPlugin() async {
    newFile('$testPackageRootPath/pubspec.yaml', r'''
name: sample_project
version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  plugin:
    platforms:
      web:
        pluginClass: SamplePlugin
        fileName: main.dart
''');
    var mainFile = newFile('$testPackageRootPath/lib/main.dart', r'''
// ignore: unused_import
import 'dart:html';
''');
    await assertNoDiagnosticsInFile(mainFile.path);
  }
}
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:test_reflective_loader/test_reflective_loader.dart';

import '../rule_test_support.dart';

void main() {
  defineReflectiveSuite(() {
    defineReflectiveTests(UseKeyInWidgetConstructorsTest);
  });
}

@reflectiveTest
class UseKeyInWidgetConstructorsTest extends LintRuleTest {
  @override
  bool get addFlutterPackageDep => true;

  @override
  String get lintRule => LintNames.use_key_in_widget_constructors;

  test_augmentedConstruct


['Long'];
  processedAt?: Maybe<Scalars['Long']>;
};

export type Query = {
  __typename?: 'Query';
  getUploadUrl?: Maybe<Scalars['String']>;
  getDownloadUrl?: Maybe<Scalars['String']>;
  receipts?: Maybe<Array<Maybe<Receipt>>>;
};

export type QueryGetDownloadUrlArgs = {
  id: Scalars['String'];
};

export type Mutation = {
  __typename?: 'Mutation';
  receiptProcessed?: Maybe<Receipt>;
};

export type MutationReceiptProcessedArgs = {
  username: Scalars['String'];
  id: Scalars['String'];
  price?: Maybe<Scalars['Float']>;
  createdAt: Scalars['Long'];
  processedAt?: Maybe<Scalars['Long']>;
};

export type Subscription = {
  __typename?: 'Subscription';
  onReceiptProcessed?: Maybe<Receipt>;
};

export type SubscriptionOnReceiptProcessedArgs = {
  username: Scalars['String'];
};
import { Validatable } from '../Validatable'

export class RegExpRule implements Validatable<string> {
  private regex: RegExp

  errorMessage: string

  constructor(regex: RegExp, error = 'not matched to ' + regex) {
    this.regex = regex
    this.errorMessage = error
  }

  validate(data: string): boolean {
    return this.regex.test(data)
  }
}
import { Action, createReducer, on } from '@ngrx/store';
import * as AccountActions from '../actions/account.actions';

export interface AccountState {
  accountLevel:
    | 'first_time'
    | 'trial'
    | 'paid_account'
    | 'trial_end'
    | 'athlete';
}

const InitialState: AccountState = {
  accountLevel: null,
};

const accountReducer = createReducer(
  InitialState,
  on(AccountActions.SetAccountLevel, (state, { accountLvl }) => ({
    ...state,
    accountLevel: accountLvl,
  }))
);

export function reducer(
  state: AccountState | undefined,
  action: Action
): AccountState {
  return accountReducer(state, action);
}
import { Message } from "discord.js";
const axios = require('axios');
/**
 * Simple message event handler that checks if a message was sent by a bot.
 * It also checks two simple commands and sends a default message
 * if neither conditions were met.
 * @param message Message
 */

//This is mock calls to Discord Bot
//export message Handler
export const messageHandler = async (message: Message) => {
  if (message.author.bot) {
    //message exported from discord.js
    //Message is element of discord
    throw "Message sent by a bot.";
  }
  //If text message equals /ping
  if (message.content === "/ping") {
    //respond with pong
    message.channel.send("pong");
  } //mock call to /help command
  else if (message.content === "/help") {
    //respond with /help message body
    message.channel.send("🙏 Commands 🙏");
  } //mock call to Discord /price_to_usd command
  else if (message.content === "/price_to_usd") {
    //call to coingecko.com API with AXIOS
    const result = await axios.request({
      method: 'get',
      url: `https://api.coingecko.com/api/v3/simple/price?ids=bluzelle&vs_currencies=usd`
    });
    //Variable that holds USD value from API
    let obj = result.data.bluzelle.usd
    console.log('3' + obj)
    //Send message with USD variable
    await message.channel.send(obj);
  }  //mock call to Discord with /validators_test
  else if (message.content === "/validators_test") {
    //request with AXIOS
    const r


 center;
}

.dashboard-section.crypto .checkbox-single .checkbox-area {
    align-items: center;
}

.dashboard-section.crypto .checkbox-single .checkbox-area input {
    position: absolute;
    opacity: 0;
    cursor: pointer;
    height: 0;
    width: 0;
}

.dashboard-section.crypto .checkbox-single .checkbox-area .checkmark {
    position: absolute;
    left: 0;
    height: 40px;
    width: 40px;
    border-radius: 20px;
    background: #F4F5F6;
}

.dashboard-section.crypto .checkbox-single .checkbox-area .checkmark::after {
    content: "";
    position: absolute;
    display: none;
}

.dashboard-section.crypto .checkbox-single .checkmark {
    display: flex;
    align-items: center;
    justify-content: center;
}

.dashboard-section.crypto .checkbox-single .checkmark::after {
    width: 16px;
    height: 16px;
    background-image: url(../images/icon/check.png);
    background-repeat: no-repeat;
}

.dashboard-section.crypto .checkbox-single input:checked~.checkmark {
    background: #224241;
}

.dashboard-section.crypto .checkbox-single input:checked~.checkmark:after {
    display: block;
}

.dashboard-section.crypto .checkbox-single .item-title span {
    font-weight: 700;
    margin-right: 15px;
}

.dashboard-section.crypto .checkbox-single .item-title .img-area {
    margin-left: 70px;
    width: 62px;
    height: 62px;
    background: #F4F5F6;
    border-radius: 31px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.dashboard-section.crypto .fee-area {
    margin-top: 30px;
}

.dashboard-section.crypto .fee-area ul li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 10px;
}

.dashboard-section.crypto .fee-area .fee {
    margin-top: 10px;
    border-top: 1px solid #E6E8EC;
}

.dashboard-section.deposit-money .table-area {
    border: 1px solid #CADBFC;
    border-radius: 10px;
}

.dashboard-section.deposit-money .card-area {
    position: relative;
    gap: 30px;
    width: 80%;
}

.dashboard-section.deposit-money .card-area input {
    position: absolute;
    opacity: 0;
    display: none;
    width: 0;
    height: 0;
}

.dashboard-section.deposit-money .card-area input[type=radio]+label {
    position: relative;
    width: 100%;
    transition: 0.3s all;
    position: relative;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}

.dashboard-section.deposit-money .card-area input[type=radio]+label img {
    width: 100%;
}

.dashboard-section.deposit-money .card-area input[type=radio]:checked+label::before {
    position: absolute;
    content: '';
    width: 16px;
    height: 16px;
    background-image: url(../images/icon/check-2.png);
    background-repeat: no-repeat;
    z-index: 2;
}

.dashboard-section.deposit-money .card-area input[type=radio]:checked+label::after {
    position: absolute;
    c


يقوس - 20 أوت 1955",
    "commune_id": 114,
    "commune_name": "سيقوس",
    "daira_name": "سيقوس",
    "wilaya_code": "04",
    "wilaya_name": "أم البواقي"
  },
  {
    "post_code": "04067",
    "post_name": "سوق النعمان - هواري بومدين",
    "post_address": "",
    "commune_id": 115,
    "commune_name": "سوق نعمان",
    "daira_name": "سوق نعمان",
    "wilaya_code": "04",
    "wilaya_name": "أم البواقي"
  },
  {
    "post_code": "04068",
    "post_name": "عين فكرون - أفاق 2",
    "post_address": "عين فكرون - أفاق 2",
    "commune_id": 91,
    "commune_name": "عين فكرون",
    "daira_name": "عين فكرون",
    "wilaya_code": "04",
    "wilaya_name": "أم البواقي"
  },
  {
    "post_code": "10048",
    "post_name": "عين بيضاء",
    "post_address": "عين بيضاء 10231",
    "commune_id": 89,
    "commune_name": "عين البيضاء",
    "daira_name": "عين البيضاء",
    "wilaya_code": "04",
    "wilaya_name": "أم البواقي"
  },
  {
    "post_code": "10078",
    "post_name": "أولاد قاسم",
    "post_address": "أولاد قاسم 10242",
    "commune_id": 109,
    "commune_name": "أولاد قاسم",
    "daira_name": "عين مليلة",
    "wilaya_code": "04",
    "wilaya_name": "أم البواقي"
  },
  {
    "post_code": "12050",
    "post_name": "أولاد ناصر",
    "post_address": "قرية أولاد ناصر",
    "commune_id": 99,
    "commune_name": "العامرية",
    "daira_name": "سيقوس",
    "wilaya_code": "04",
    "wilaya_name": "أم البواقي"
  },
  {
    "post_code": "14039",
    "post_name": "عين بيضاء",
    "post_address": "عين بيضاء",
    "commune_id": 89,
    "commune_name": "عين البيضاء",
    "daira_name": "عين البيضاء",
    "wilaya_code": "04",
    "wilaya_name": "أم البواقي"
  },
  {
    "post_code": "30019",
    "post_name": "عين بيضاء",
    "post_address": "الطريق الوطني رقم 206",
    "commune_id": 89,
    "commune_name": "عين البيضاء",
    "daira_name": "عين البيضاء",
    "wilaya_code": "04",
    "wilaya_name": "أم البواقي"
  },
  {
    "post_code": "31039",
    "post_name":


a2/utils.py:92: if hasattr(obj, "jinja_pass_arg"):
- .venv/lib/python3.12/site-packages/jinja2/utils.py:93: return obj.jinja_pass_arg  # type: ignore
- .venv/lib/python3.12/site-packages/jinja2/utils.py:105: """Check if the object passed is undefined.  This does nothing more than
- .venv/lib/python3.12/site-packages/jinja2/utils.py:124: pass
- .venv/lib/python3.12/site-packages/jinja2/utils.py:524: pass
- .venv/lib/python3.12/site-packages/jinja2/utils.py:553: pass
- .venv/lib/python3.12/site-packages/jinja2/utils.py:657: :param kwargs: Extra arguments to pass to ``dumps``. Merged onto
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:98: "if no eval context is passed, the node must have an"
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:115: or arbitrary values.  Fields are passed to the constructor as regular
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:167: pass
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:296: is passed to the compiler.
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:427: pass unsafe names to the name attribute.  The compiler translates the
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:762: pass_arg = _PassArg.from_obj(func)  # type: ignore
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:764: if func is None or pass_arg is _PassArg.context:
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:776: if pass_arg is _PassArg.eval_context:
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:778: elif pass_arg is _PassArg.environment:
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:810: check for volatile, async, and ``@pass_context`` etc.
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:1128: :func:`~jinja2.pass_context` decorator when using the high-level
- .venv/lib/python3.12/site-packages/jinja2/nodes.py:1129: API, which causes a reference to the context to be passed as the
- .venv/lib/python3.12/site-packages/jinja2/loaders.py:79: It's passed the environment and template name and has to return a
- .venv/lib/python3.12/site-packages/jinja2/loaders.py:91: changed.  No arguments are passed so the function must store the
- .venv/lib/python3.12/site-packages/jinja2/loaders.py:461: """A loader that is passed a function which does the loading.  The
- .venv/lib/python3.12/site-packages/jinja2/loaders.py:506: """A loader that is passed a dict of loaders where each loader is bound
- .venv/lib/python3.12/site-packages/jinja2/loaders.py:592: pass
- .venv/lib/python3.12/site-packages/jinja2/loaders.py:606: pass
- .venv/lib/python3.12/site-packages/jinja2/idtracking.py:229: raise NotImplementedError(


rties = function( currency, cldr ) {
	var pattern = numberPattern( "decimal", cldr );

	// The number of decimal places and the rounding for each currency is not locale-specific. Those
	// values overridden by Supplemental Currency Data.
	pattern = currencySupplementalOverride( currency, pattern, cldr );

	return {
		displayNames: objectFilter( cldr.main([
			"numbers/currencies",
			currency
		]), /^displayName/ ),
		pattern: pattern,
		unitPatterns: currencyUnitPatterns( cldr )
	};
};

/**
 * Unicode regular expression for: everything except symbols from the category S
 *
 * Generated by:
 *
 * var s = regenerate()
 *   .addRange( 0x0, 0x10FFFF )
 *   .remove( require( "@unicode/unicode-13.0.0/General_Category/Math_Symbol/symbols" ) )
 *   .remove( require( "@unicode/unicode-13.0.0/General_Category/Currency_Symbol/symbols" ) )
 *   .remove( require( "@unicode/unicode-13.0.0/General_Category/Modifier_Symbol/symbols" ) )
 *   .remove( require( "@unicode/unicode-13.0.0/General_Category/Other_Symbol/symbols" ) )
 *
 * https://github.com/mathiasbynens/regenerate
 * https://github.com/node-unicode/unicode-13.0.0
 * http://www.unicode.org/reports/tr44/#General_Category_Values
 */
var regexpNotS = /[\0-#%-\*,-;\?-\]_a-\{\}\x7F-\xA1\xA7\xAA\xAB\xAD\xB2\xB3\xB5-\xB7\xB9-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u0383\u0386-\u03F5\u03F7-\u0481\u0483-\u058C\u0590-\u0605\u0609\u060A\u060C\u060D\u0610-\u06DD\u06DF-\u06E8\u06EA-\u06FC\u06FF-\u07F5\u07F7-\u07FD\u0800-\u09F1\u09F4-\u09F9\u09FC-\u0AF0\u0AF2-\u0B6F\u0B71-\u0BF2\u0BFB-\u0C7E\u0C80-\u0D4E\u0D50-\u0D78\u0D7A-\u0E3E\u0E40-\u0F00\u0F04-\u0F12\u0F14\u0F18\u0F19\u0F20-\u0F33\u0F35\u0F37\u0F39-\u0FBD\u0FC6\u0FCD\u0FD0-\u0FD4\u0FD9-\u109D\u10A0-\u138F\u139A-\u166C\u166E-\u17DA\u17DC-\u193F\u1941-\u19DD\u1A00-\u1B60\u1B6B-\u1B73\u1B7D-\u1FBC\u1FBE\u1FC2-\u1FCC\u1FD0-\u1FDC\u1FE0-\u1FEC\u1FF0-\u1FFC\u1FFF-\u2043\u2045-\u2051\u2053-\u2079\u207D-\u2089\u208D-\u209F\u20C0-\u20FF\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u218C-\u218F\u2308-\u230B\u2329\u232A\u2427-\u243F\u244B-\u249B\u24EA-\u24FF\u2768-\u2793\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2B74\u2B75\u2B96\u2C00-\u2CE4\u2CEB-\u2E4F\u2E52-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u3003\u3005-\u3011\u3014-\u301F\u3021-\u3035\u3038-\u303D\u3040-\u309A\u309D-\u318F\u3192-\u3195\u31A


x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00
	.global ov11_0231C7E8
ov11_0231C7E8:
	.byte 0x45, 0x56, 0x45, 0x4E
	.byte 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4C
	.byte 0x5F, 0x45, 0x50, 0x49, 0x53, 0x4F, 0x44, 0x45, 0x00, 0x00, 0x00, 0x00
	.global ov11_0231C808
ov11_0231C808:
	.byte 0x4C, 0x4F, 0x4F, 0x4B
	.byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5F, 0x46, 0x55
	.byte 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00
	.global C_ROUTINES
C_ROUTINES:
	.byte 0x00, 0x00, 0x04, 0x00
	.word ov11_02319B28
	.byte 0x01, 0x00, 0x04, 0x00
	.word ov11_0231BE60
	.byte 0x02, 0x00, 0x04, 0x00
	.word ov11_0231C3D8
	.byte 0x03, 0x00, 0x04, 0x00
	.word ov11_0231C1F0
	.byte 0x04, 0x00, 0x04, 0x00
	.word ov11_02319D08
	.byte 0x05, 0x00, 0x04, 0x00
	.word ov11_0231C31C
	.byte 0x06, 0x00, 0x04, 0x00
	.word ov11_0231C330
	.byte 0x07, 0x00, 0x04, 0x00
	.word ov11_0231BE70
	.byte 0x08, 0x00, 0x04, 0x00
	.word ov11_02319B34
	.byte 0x09, 0x00, 0x04, 0x00
	.word ov11_0231BC70
	.byte 0x0A, 0x00, 0x04, 0x00
	.word ov11_0231BC20
	.byte 0x0B, 0x00, 0x04, 0x00
	.word ov11_0231C3F0
	.byte 0x0C, 0x00, 0x05, 0x00
	.word ov11_0231C164
	.byte 0x0D, 0x00, 0x05, 0x00
	.word ov11_0231C178
	.byte 0x0E, 0x00, 0x05, 0x00
	.word ov11_0231C0B0
	.byte 0x0F, 0x00, 0x05, 0x00
	.word ov11_0231C2CC
	.byte 0x10, 0x00, 0x05, 0x00
	.word ov11_0231C204
	.byte 0x11, 0x00, 0x05, 0x00
	.word ov11_0231C450
	.byte 0x12, 0x00, 0x05,


s,
}

impl AnalyzedCode {
    /// Analyze code and prepare it for execution.
    pub fn analyze(code: impl AsRef<[u8]>) -> Self {
        let code = code.as_ref();
        let mut jumpdest_map = vec![false; code.len()];

        let mut i = 0;
        while i < code.len() {
            let opcode = OpCode(code[i]);
            i += match opcode {
                OpCode::JUMPDEST => {
                    jumpdest_map[i] = true;
                    1
                }
                OpCode::PUSH1
                | OpCode::PUSH2
                | OpCode::PUSH3
                | OpCode::PUSH4
                | OpCode::PUSH5
                | OpCode::PUSH6
                | OpCode::PUSH7
                | OpCode::PUSH8
                | OpCode::PUSH9
                | OpCode::PUSH10
                | OpCode::PUSH11
                | OpCode::PUSH12
                | OpCode::PUSH13
                | OpCode::PUSH14
                | OpCode::PUSH15
                | OpCode::PUSH16
                | OpCode::PUSH17
                | OpCode::PUSH18
                | OpCode::PUSH19
                | OpCode::PUSH20
                | OpCode::PUSH21
                | OpCode::PUSH22
                | OpCode::PUSH23
                | OpCode::PUSH24
                | OpCode::PUSH25
                | OpCode::PUSH26
                | OpCode::PUSH27
                | OpCode::PUSH28
                | OpCode::PUSH29
                | OpCode::PUSH30
                | OpCode::PUSH31
                | OpCode::PUSH32 => opcode.to_usize() - OpCode::PUSH1.to_usize() + 2,
                _ => 1,
            }
        }

        let mut padded_code = vec![0_u8; i + 1];
        padded_code[..code.len()].copy_from_slice(code);
        padded_code[i] = OpCode::STOP.to_u8();

        let jumpdest_map = JumpdestMap(jumpdest_map);
        let code = padded_code.into();

        Self { jumpdest_map, code }
    }

    /// Execute analyzed EVM bytecode.
    pub async fn execute<H: Host, T: Tracer>(
        &self,
        host: &mut H,
        tracer: &mut T,
        message: Message,
        revision: Revision,
    ) -> Output {
        let state = &mut ExecutionState::new(message, revision);
        let output = match self.execute_with_state(host, tracer, state).await {
            Ok(output) => output.into(),
            Err(status_code) => Output {
                status_code,
                gas_left: 0,
                output_data: Bytes::new(),
                create_address: None,
            },
        };

        tracer.notify_execution_end(&output);

        output
    }

    async fn execute_with_state<H: Host, T: Tracer>(
        &self,
        host: &mut H,
        tracer: &mut T,
        state: &mut ExecutionState,
    ) -> Result<SuccessfulOutput, StatusCode> {
        tracer.notify_execution_start(state.evm_revision, state.message.clone(), self.code.clone());

        let instruction_table = get_baseline_instruction_table(state.evm_revision);

        let mut reverted = false;

        let mut pc = 0;

        loop {
            let op = OpCode(self.code[pc]);

            // Do not print stop on the final STOP


      case Intrinsic::coro_id_retcon:
      case Intrinsic::coro_id_retcon_once:
      case Intrinsic::coro_id_async:
        F.setPresplitCoroutine();
        break;
      case Intrinsic::coro_resume:
        lowerResumeOrDestroy(*CB, CoroSubFnInst::ResumeIndex);
        break;
      case Intrinsic::coro_destroy:
        lowerResumeOrDestroy(*CB, CoroSubFnInst::DestroyIndex);
        break;
      case Intrinsic::coro_promise:
        lowerCoroPromise(cast<CoroPromiseInst>(&I));
        break;
      case Intrinsic::coro_done:
        lowerCoroDone(cast<IntrinsicInst>(&I));
        break;
    }
  }

  // Make sure that all CoroFree reference the coro.id intrinsic.
  // Token type is not exposed through coroutine C/C++ builtins to plain C, so
  // we allow specifying none and fixing it up here.
  if (CoroId)
    for (CoroFreeInst *CF : CoroFrees)
      CF->setArgOperand(0, CoroId);

  // Coroutine suspention could potentially lead to any argument modified
  // outside of the function, hence arguments should not have noalias
  // attributes.
  if (HasCoroSuspend)
    for (Argument &A : F.args())
      if (A.hasNoAliasAttr())
        A.removeAttr(Attribute::NoAlias);
}

static bool declaresCoroEarlyIntrinsics(const Module &M) {
  return coro::declaresIntrinsics(
      M, {"llvm.coro.id", "llvm.coro.id.retcon", "llvm.coro.id.retcon.once",
          "llvm.coro.id.async", "llvm.coro.destroy", "llvm.coro.done",
          "llvm.coro.end", "llvm.coro.end.async", "llvm.coro.noop",
          "llvm.coro.free", "llvm.coro.promise", "llvm.coro.resume",
          "llvm.coro.suspend"});
}

PreservedAnalyses CoroEarlyPass::run(Module &M, ModuleAnalysisManager &) {
  if (!declaresCoroEarlyIntrinsics(M))
    return PreservedAnalyses::all();

  Lowerer L(M);
  for (auto &F : M)
    L.lowerEarlyIntrinsics(F);

  PreservedAnalyses PA;
  PA.preserveSet<CFGAnalyses>();
  return PA;
}
//===- CoroFrame.cpp - Builds and manipulates coroutine frame -------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
// This file contains classes used to discover if for a particular value
// there from sue to definition that crosses a suspend block.
//
// Using the information discovered we form a Coroutine Frame structure to
// contain those values. All uses of those values are replaced with appropriate
// GEP + load from the coroutine frame. At the point of the definition we spill
// the value into the coroutine frame.
//===----------------------------------------------------------------------===//

#include "CoroInternal.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/ScopeExit.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Analysis/PtrUseVisitor.h"
#include "llvm/Analysis/StackLifetime.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/DIBuilder.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llv


        fun file(contents: Any?) {
            log(FILE or D, sGlobalTag, contents!!)
        }

        @JvmStatic
        fun file(@TYPE type: Int, contents: Any?) {
            log(FILE or type, sGlobalTag, contents!!)
        }

        @JvmStatic
        fun file(tag: String?, contents: Any?) {
            log(FILE or D, tag, contents!!)
        }

        @JvmStatic
        fun file(@TYPE type: Int, tag: String?, contents: Any?) {
            log(FILE or type, tag, contents!!)
        }

        @JvmStatic
        fun json(contents: String?) {
            log(JSON or D, sGlobalTag, contents!!)
        }

        @JvmStatic
        fun json(@TYPE type: Int, contents: String?) {
            log(JSON or type, sGlobalTag, contents!!)
        }

        @JvmStatic
        fun json(tag: String?, contents: String?) {
            log(JSON or D, tag, contents!!)
        }

        @JvmStatic
        fun json(@TYPE type: Int, tag: String?, contents: String?) {
            log(JSON or type, tag, contents!!)
        }

        @JvmStatic
        fun xml(contents: String?) {
            log(XML or D, sGlobalTag, contents!!)
        }

        @JvmStatic
        fun xml(@TYPE type: Int, contents: String?) {
            log(XML or type, sGlobalTag, contents!!)
        }

        @JvmStatic
        fun xml(tag: String?, contents: String?) {
            log(XML or D, tag, contents!!)
        }

        @JvmStatic
        fun xml(@TYPE type: Int, tag: String?, contents: String?) {
            log(XML or type, tag, contents!!)
        }

        private fun log(type: Int, tag: String?, vararg contents: Any) {
            if (BuildConfig.DEBUG) {
                val typeLow = type and 0x0f
                val typeHigh = type and 0xf0
                if (typeLow < sConsoleFilter && typeLow < sFileFilter) return
                val tagHead = processTagAndHead(tag)
                val body = processBody(typeHigh, *contents)
                if (sLog2ConsoleSwitch && typeLow >= sConsoleFilter && typeHigh != FILE) {
                    print2Console(typeLow, tagHead.tag, tagHead.consoleHead, body)
                }
                if ((sLog2FileSwitch || typeHigh == FILE) && typeLow >= sFileFilter) {
                    print2File(typeLow, tagHead.tag, tagHead.fileHead + body)
                }
            }
        }

        private fun processTagAndHead(tag: String?): TagHead {
            var tag = tag
            if (!sTagIsSpace && !sLogHeadSwitch) {
                tag = sGlobalTag
            } else {
                val stackTrace = Throwable().stackTrace
                var targetElement = stackTrace[3]
                var fileName = targetElement.fileName
                var className: String
                if (fileName == null) { // 混淆可能会导致获取为空 加-keepattributes SourceFile,LineNumberTable
                    className = targetElement.className
                    val classNameInfo = className.split("\\.".toRegex()).toTypedArray()
                    if (classNameInfo.isNotEmpty()) {
                        className = classNameInfo[classNameInfo.size - 1]
                    }
                    val index = className.indexOf('$')
                    if (index != -1) {
                        className = className.substring(0, index)
                    }
                    fileName = "$className.java"
                } else {
                    val index = fileName.indexOf('.') // 混淆可能导致文件名被改变从而找不到"."
                    className = if (index == -1) fileName else


.eclipse.jface.viewers.ISelectionProvider#removeSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
    */
   @Override
   public void removeSelectionChangedListener(ISelectionChangedListener listener)
   {
      selectionListeners.remove(listener);
   }

   /**
    * @see org.eclipse.jface.viewers.ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection)
    */
   @Override
   public void setSelection(ISelection selection)
   {
      this.selection = selection;
   }
}
/**
 * NetXMS - open source network management system
 * Copyright (C) 2003-2023 Victor Kirhenshtein
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
package org.netxms.ui.eclipse.objectview.objecttabs.helpers;

import java.net.InetAddress;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;
import org.netxms.base.MacAddress;
import org.netxms.client.NXCSession;
import org.netxms.client.objects.AbstractNode;
import org.netxms.client.objects.Interface;
import org.netxms.ui.eclipse.objectview.objecttabs.InterfacesTab;
import org.netxms.ui.eclipse.shared.ConsoleSharedData;
import org.netxms.ui.eclipse.tools.ComparatorHelper;
import org.netxms.ui.eclipse.tools.NaturalOrderComparator;
import org.netxms.ui.eclipse.widgets.SortableTableViewer;

/**
 * Comparator for interface list
 */
public class InterfaceListComparator extends ViewerComparator
{
   private static final MacAddress ZERO_MAC_ADDRESS = new MacAddress();

   private NXCSession session = ConsoleSharedData.getSession();

   /**
    * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
    */
	@Override
	public int compare(Viewer viewer, Object e1, Object e2)
	{
		final Interface iface1 = (Interface)e1;
		final Interface iface2 = (Interface)e2;
      final int column = (Integer)((SortableTableViewer)viewer).getTable().getSortColumn().getData("ID"); //$NON-NLS-1$

		int result;
		switch(column)
		{
			case InterfacesTab.COLUMN_8021X_BACKEND_STATE:
				result = iface1.getDot1xBackendState() - iface2.getDot1xBackendState();
				break;
			case InterfacesTab.COLUMN_8021X_PAE_STATE:
				result = iface1.getDot1xPaeState() - iface2.getDot1xPaeState();
				break;
			case InterfacesTab.COLUMN_ADMIN_STATE:
				result = iface1.getAdminState() - iface2.getAdminState();
				break;
         case InterfacesTab.COLUMN_ALIAS:
            result = NaturalOrderComparator.compare(iface1.getAlias(), iface2.getAlias());
            break;
			case InterfacesTab.COLU


_BUTTON_TAPPED("whatsnew_confirm_button_tapped"),

    /* App Store Review */
    APP_STORE_REVIEW_REQUESTED("app_store_review_requested"),
    RATE_US_TAPPED("rate_us_tapped"),

    /* Deselect Chapters */
    DESELECT_CHAPTERS_TOGGLED_ON("deselect_chapters_toggled_on"),
    DESELECT_CHAPTERS_TOGGLED_OFF("deselect_chapters_toggled_off"),
    DESELECT_CHAPTERS_CHAPTER_SELECTED("deselect_chapters_chapter_selected"),
    DESELECT_CHAPTERS_CHAPTER_DESELECTED("deselect_chapters_chapter_deselected"),
    PLAYBACK_CHAPTER_SKIPPED("playback_chapter_skipped"),
    CHAPTER_LINK_CLICKED("chapter_link_clicked"),

    /* Widgets */
    WIDGET_INSTALLED("widget_installed"),
    WIDGET_UNINSTALLED("widget_uninstalled"),

    /* Sharing */
    SHARE_SCREEN_SHOWN("share_screen_shown"),
    SHARE_SCREEN_PLAY_TAPPED("share_screen_play_tapped"),
    SHARE_SCREEN_PAUSE_TAPPED("share_screen_pause_tapped"),
    SHARE_SCREEN_CLIP_SHARED("share_screen_clip_shared"),
    SHARE_SCREEN_NAVIGATION_BUTTON_TAPPED("share_screen_navigation_button_tapped"),
    SHARE_SCREEN_EDIT_BUTTON_TAPPED("share_screen_edit_button_tapped"),
    SHARE_SCREEN_CLOSE_BUTTON_TAPPED("share_screen_close_button_tapped"),

    /* Pocket Casts Champion */
    POCKET_CASTS_CHAMPION_DIALOG_SHOWN("pocket_casts_champion_dialog_shown"),
    POCKET_CASTS_CHAMPION_DIALOG_RATE_BUTTON_TAPPED("pocket_casts_champion_dialog_rate_button_tapped"),

    /* Transcripts */
    TRANSCRIPT_SHOWN("transcript_shown"),
    TRANSCRIPT_DISMISSED("transcript_dismissed"),
    TRANSCRIPT_ERROR("transcript_error"),
    TRANSCRIPT_SEARCH_SHOWN("transcript_search_shown"),
    TRANSCRIPT_SEARCH_NEXT_RESULT("transcript_search_next_result"),
    TRANSCRIPT_SEARCH_PREVIOUS_RESULT("transcript_search_previous_result"),
    TRANSCRIPT_GENERATED_PAYWALL_SHOWN("transcript_generated_paywall_shown"),
    TRANSCRIPT_GENERATED_PAYWALL_DISMISSED("transcript_generated_paywall_dismissed"),
    TRANSCRIPT_GENERATED_PAYWALL_SUBSCRIBE_TAPPED("transcript_generated_paywall_subscribe_tapped"),
    TRANSCRIPT_SHARED("transcript_shared"),

    /* Referrals */
    REFERRAL_TOOLTIP_SHOWN("referral_tooltip_shown"),
    REFERRAL_TOOLTIP_TAPPED("referral_tooltip_tapped"),
    REFERRAL_SHARE_SCREEN_SHOWN("referral_share_screen_shown"),
    REFERRAL_SHARE_SCREEN_DISMISSED("referral_share_screen_dismissed"),
    REFERRAL_PASS_SHARED("referral_pass_shared"),
    REFERRAL_CLAIM_SCREEN_SHOWN("referral_claim_screen_shown"),
    REFERRAL_ACTIVATE_TAPPED("referral_activate_tapped"),
    REFERRAL_NOT_NOW_TAPPED("referral_not_now_tapped"),
    REFERRAL_PASS_BANNER_SHOWN("referral_pass_banner_shown"),
    REFERRAL_PASS_BANNER_HIDE_TAPPED("referral_pass_banner_hide_


    'cch': 'Atsam',
    'ccp': '𑄌𑄋𑄴𑄟𑄳𑄦',
    'ce': 'нохчийн',
    'ceb': 'Binisaya',
    'cgg': 'Rukiga',
    'ch': 'Chamorro',
    'chb': 'Chibcha',
    'chg': 'Chagatai',
    'chk': 'Chuukese',
    'chm': 'Mari',
    'chn': 'Chinook Jargon',
    'cho': 'Choctaw',
    'chp': 'Chipewyan',
    'chr': 'ᏣᎳᎩ',
    'chy': 'Cheyenne',
    'ckb': 'کوردیی ناوەندی',
    'ckb_Arab': 'کوردیی ناوەندی (عەرەبی)',
    'co': 'Corsican',
    'cop': 'Coptic',
    'cr': 'Cree',
    'crh': 'Crimean Turkish',
    'cs': 'čeština',
    'csb': 'Kashubian',
    'cu': 'Church Slavic',
    'cv': 'Chuvash',
    'cy': 'Cymraeg',
    'da': 'dansk',
    'dak': 'Dakota',
    'dar': 'Dargwa',
    'dav': 'Kitaita',
    'de': 'Deutsch',
    'de_AT': 'Deutsch (Österreich)',
    'de_CH': 'Deutsch (Schweiz)',
    'del': 'Delaware',
    'den': 'Slave',
    'dgr': 'Dogrib',
    'din': 'Dinka',
    'dje': 'Zarmaciine',
    'doi': 'डोगरी',
    'dsb': 'dolnoserbšćina',
    'dua': 'duálá',
    'dum': 'Middle Dutch',
    'dv': 'Divehi',
    'dyo': 'joola',
    'dyu': 'Dyula',
    'dz': 'རྫོང་ཁ',
    'dzg': 'Dazaga',
    'ebu': 'Kĩembu',
    'ee': 'Eʋegbe',
    'efi': 'Efik',
    'egy': 'Ancient Egyptian',
    'eka': 'Ekajuk',
    'el': 'Ελληνικά',
    'elx': 'Elamite',
    'en': 'English',
    'en_AU': 'English (Australia)',
    'en_CA': 'English (Canada)',
    'en_GB': 'English (United Kingdom)',
    'en_US': 'English (United States)',
    'enm': 'Middle English',
    'eo': 'esperanto',
    'es': 'español',
    'es_419': 'español (Latinoamérica)',
    'es_ES': 'español (España)',
    'es_MX': 'español (México)',
    'et': 'eesti',
    'eu': 'euskara',
    'ewo': 'ewondo',
    'fa': 'فارسی',
    'fa_AF': 'فارسی (افغانستان)',
    'fan': 'Fang',
    'fat': 'Fanti',
    'ff': 'Pulaar',
    'ff_Adlm': '𞤆𞤵𞤤𞤢𞤪 (𞤀𞤁𞤂𞤢𞤃)',
    'ff_Latn': 'Fulah (Latin)',
    'fi': 'suomi',
    'fil': 'Filipino',
    'fj': 'Fij


.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28l0-192.4c0-34.9 8.9-45.7 40.6-45.7l317.7 0c30.3 0 40.9 12.9 40.9 45.7l0 190.6-.1 0z"],
    "uber": [448, 512, [], "f402", "M414.1 32L33.9 32C15.2 32 0 47.2 0 65.9L0 446c0 18.8 15.2 34 33.9 34L414 480c18.7 0 33.9-15.2 33.9-33.9l0-380.2C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6l94.4 0 0 20.4c0 3.7 3 6.8 6.8 6.8l67.9 0c3.7 0 6.8-3 6.8-6.8l0-67.9c0-3.7-3-6.8-6.8-6.8l-67.9 0c-3.7 0-6.8 3-6.8 6.8l0 20.4-94.4 0c7-69.4 65.4-122.2 135.1-122.2s128.1 52.8 135.1 122.2c7.5 74.5-46.9 141.1-121.5 148.6z"],
    "digital-ocean": [512, 512, [], "f391", "M87 481.8l73.7 0 0-73.6-73.7 0 0 73.6zM25.4 346.6l0 61.6 61.6 0 0-61.6-61.6 0zM491.6 176.9C468.6 102.7 409.2 43.6 335 20.3 164.9-32.8 8 93.7 8 255.9l95.8 0c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208l0 .3-.3 0 0 95.8c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231l0-95.3-95.6 0 0 95.6 95.3 0 0-.3 .3 0z"],
    "soundcloud": [640, 512, [], "f1be", "M640.2 298.6c-1.3 23.1-11.5 44.8-28.4 60.5s-39.2 24.4-62.3 24.1l-218 0c-4.8 0-9.4-2-12.8-5.4s-5.3-8-5.3-12.8l0-234.8c-.2-4 .9-8 3.1-11.4s5.3-6.1 9-7.7c0 0 20.1-13.9 62.3-13.9 25.8 0 51.1 6.9 73.3 20.1 17.3 10.2 32.3 23.8 44.1 40.1s20 34.8 24.2 54.4c7.5-2.1 15.3-3.2 23.1-3.2 11.7-.1 23.3 2.2 34.2 6.7s20.5 11.3 28.7 19.7 14.


n.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
  color: #fff; }

/*********************************************
 * GLOBAL STYLES
 *********************************************/
:root {
  --background-color: #F0F1EB;
  --main-font: Palatino Linotype, Book Antiqua, Palatino, FreeSerif, serif;
  --main-font-size: 40px;
  --main-color: #000;
  --block-margin: 20px;
  --heading-margin: 0 0 20px 0;
  --heading-font: Palatino Linotype, Book Antiqua, Palatino, FreeSerif, serif;
  --heading-color: #383D3D;
  --heading-line-height: 1.2;
  --heading-letter-spacing: normal;
  --heading-text-transform: none;
  --heading-text-shadow: none;
  --heading-font-weight: normal;
  --heading1-text-shadow: none;
  --heading1-size: 3.77em;
  --heading2-size: 2.11em;
  --heading3-size: 1.55em;
  --heading4-size: 1em;
  --code-font: monospace;
  --link-color: #51483D;
  --link-color-hover: #8b7c69;
  --selection-background-color: #26351C;
  --selection-color: #fff; }

.reveal-viewport {
  background: #F0F1EB;
  background-color: #F0F1EB; }

.reveal {
  font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
  font-size: 40px;
  font-weight: normal;
  color: #000; }

.reveal ::selection {
  color: #fff;
  background: #26351C;
  text-shadow: none; }

.reveal ::-moz-selection {
  color: #fff;
  background: #26351C;
  text-shadow: none; }

.reveal .slides section,
.reveal .slides section > section {
  line-height: 1.3;
  font-weight: inherit; }

/*********************************************
 * HEADERS
 *********************************************/
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
  margin: 0 0 20px 0;
  color: #383D3D;
  font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
  font-weight: normal;
  line-height: 1.2;
  letter-spacing: normal;
  text-transform: none;
  text-shadow: none;
  word-wrap: break-word; }

.reveal h1 {
  font-size: 3.77em; }

.reveal h2 {
  font-size: 2.11em; }

.reveal h3 {
  font-size: 1.55em; }

.reveal h4 {
  font-size: 1em; }

.reveal h1 {
  text-shadow: none; }

/*********************************************
 * OTHER
 *********************************************/
.reveal p {
  margin: 20px 0;
  line-height: 1.3; }

/* Remove trailing margins after titles */
.reveal h1:last-child,
.reveal h2:last-child,
.reveal h3:last-child,
.reveal h4:last-child,
.reveal h5:last-child,
.reveal h6:last-child {
  margin-bottom: 0; }

/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe


_ascii_get_case_fold_codes_by_str,
  onigenc_minimum_property_name_to_ctype,
  is_code_ctype,
  onigenc_not_support_get_ctype_code_range,
  onigenc_single_byte_left_adjust_char_head,
  onigenc_always_true_is_allowed_reverse_match,
#ifdef USE_CASE_MAP_API
  onigenc_single_byte_ascii_only_case_map,
#else
  NULL,
#endif
  0,
  ONIGENC_FLAG_NONE,
};
ENC_ALIAS("ISO8859-11", "ISO-8859-11")

/*
 * Name: TIS-620
 * MIBenum: 2259
 * Link: http://en.wikipedia.org/wiki/Thai_Industrial_Standard_620-2533
 */
ENC_REPLICATE("TIS-620", "ISO-8859-11")

/*
 * Name: Windows-874
 * Link: http://www.microsoft.com/globaldev/reference/sbcs/874.mspx
 */
ENC_REPLICATE("Windows-874", "ISO-8859-11")
ENC_ALIAS("CP874", "Windows-874")


om.saveourtool.diktat.util.FixTestBase

import generated.WarningNames
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags
import org.junit.jupiter.api.Test

class KdocCommentsFixTest : FixTestBase("test/paragraph2/kdoc/", ::KdocComments) {
    @Test
    @Tag(WarningNames.COMMENTED_BY_KDOC)
    fun `check fix code block with kdoc comment`() {
        fixAndCompare("KdocBlockCommentExpected.kt", "KdocBlockCommentTest.kt")
    }

    @Test
    @Tags(Tag(WarningNames.KDOC_NO_CONSTRUCTOR_PROPERTY), Tag(WarningNames.KDOC_NO_CONSTRUCTOR_PROPERTY_WITH_COMMENT), Tag(WarningNames.MISSING_KDOC_TOP_LEVEL))
    fun `check fix without class kdoc`() {
        fixAndCompare("ConstructorCommentNoKDocExpected.kt", "ConstructorCommentNoKDocTest.kt")
    }

    @Test
    @Tags(Tag(WarningNames.KDOC_NO_CONSTRUCTOR_PROPERTY), Tag(WarningNames.KDOC_NO_CONSTRUCTOR_PROPERTY_WITH_COMMENT))
    fun `check fix with class kdoc`() {
        fixAndCompare("ConstructorCommentExpected.kt", "ConstructorCommentTest.kt")
    }

    @Test
    @Tags(Tag(WarningNames.KDOC_NO_CONSTRUCTOR_PROPERTY), Tag(WarningNames.KDOC_NO_CONSTRUCTOR_PROPERTY_WITH_COMMENT))
    fun `check fix with properties in class kdoc`() {
        fixAndCompare("ConstructorCommentPropertiesExpected.kt", "ConstructorCommentPropertiesTest.kt")
    }

    @Test
    @Tags(Tag(WarningNames.KDOC_NO_CONSTRUCTOR_PROPERTY), Tag(WarningNames.KDOC_NO_CONSTRUCTOR_PROPERTY_WITH_COMMENT))
    fun `should preserve newlines when moving comments from value parameters`() {
        fixAndCompare("ConstructorCommentNewlineExpected.kt", "ConstructorCommentNewlineTest.kt")
    }
}
package com.saveourtool.diktat.ruleset.chapter5

import com.saveourtool.diktat.common.config.rules.DIKTAT_RULE_SET_ID
import com.saveourtool.diktat.common.config.rules.RulesConfig
import com.saveourtool.diktat.ruleset.constants.Warnings.NESTED_BLOCK
import com.saveourtool.diktat.ruleset.rules.chapter5.NestedFunctionBlock
import com.saveourtool.diktat.util.LintTestBase

import com.saveourtool.diktat.api.DiktatError
import generated.WarningNames
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test

class NestedFunctionBlockWarnTest : LintTestBase(::NestedFunctionBlock) {
    private val ruleId = "$DIKTAT_RULE_SET_ID:${NestedFunctionBlock.NAME_ID}"
    private val rulesConfigList = listOf(
        RulesConfig(NESTED_BLOCK.name, true, mapOf("maxNestedBlockQuantity" to "2"))
    )

    @Test
    @Tag(WarningNames.NESTED_BLOCK)
    fun `should ignore lambda expression`() {
        lintMethod(
            """
                    |fun foo() {
                    |   while(true) {
                    |       println()
                    |   }
                    |
                    |   when(x) {
                    |       10 -> {10}
                    |       else -> {
                    |           if (true) {
                    |               println(1)
                    |           }
                    |       }
                    |   }
                    |
                    |   val x = {
                    |       if (true) {
                    |           if (false) {
                    |               while(false) {
                    |                   10
                    |               }
                    |           }
                    |       }
                    |   }
                    |
                    |   for(x in 1


hanged the topmost task, then it is time to reschedule.
        if (delayed_work_queue_.top().task.Equals(pending_task.task))
          pump_->ScheduleDelayedWork(pending_task.delayed_run_time);
      } else {
        if (DeferOrRunPendingTask(pending_task))
          return true;
      }
    } while (!work_queue_.empty());
  }

  // Nothing happened.
  return false;
}

bool MessageLoop::DoDelayedWork(TimeTicks* next_delayed_work_time) {
  if (!nestable_tasks_allowed_ || delayed_work_queue_.empty()) {
    recent_time_ = *next_delayed_work_time = TimeTicks();
    return false;
  }

  // When we "fall behind," there will be a lot of tasks in the delayed work
  // queue that are ready to run.  To increase efficiency when we fall behind,
  // we will only call Time::Now() intermittently, and then process all tasks
  // that are ready to run before calling it again.  As a result, the more we
  // fall behind (and have a lot of ready-to-run delayed tasks), the more
  // efficient we'll be at handling the tasks.

  TimeTicks next_run_time = delayed_work_queue_.top().delayed_run_time;
  if (next_run_time > recent_time_) {
    recent_time_ = TimeTicks::Now();  // Get a better view of Now();
    if (next_run_time > recent_time_) {
      *next_delayed_work_time = next_run_time;
      return false;
    }
  }

  PendingTask pending_task = delayed_work_queue_.top();
  delayed_work_queue_.pop();

  if (!delayed_work_queue_.empty())
    *next_delayed_work_time = delayed_work_queue_.top().delayed_run_time;

  return DeferOrRunPendingTask(pending_task);
}

bool MessageLoop::DoIdleWork() {
  if (ProcessNextDelayedNonNestableTask())
    return true;

  if (run_loop_->quit_when_idle_received_)
    pump_->Quit();

  return false;
}

void MessageLoop::DeleteSoonInternal(const tracked_objects::Location& from_here,
                                     void(*deleter)(const void*),
                                     const void* object) {
  PostNonNestableTask(from_here, base::Bind(deleter, object));
}

void MessageLoop::ReleaseSoonInternal(
    const tracked_objects::Location& from_here,
    void(*releaser)(const void*),
    const void* object) {
  PostNonNestableTask(from_here, base::Bind(releaser, object));
}

//------------------------------------------------------------------------------
// MessageLoopForIO

#if defined(OS_WIN)

void MessageLoopForIO::RegisterIOHandler(HANDLE file, IOHandler* handler) {
  pump_io()->RegisterIOHandler(file, handler);
}

bool MessageLoopForIO::RegisterJobObject(HANDLE job, IOHandler* handler) {
  return pump_io()->RegisterJobObject(job, handler);
}

bool MessageLoopForIO::WaitForIOCompletion(DWORD timeout, IOHandler* filter) {
  return pump_io()->WaitForIOCompletion(timeout, filter);
}

#elif defined(OS_POSIX) && !defined(OS_NACL)

bool MessageLoopForIO::WatchFileDescriptor(int fd,
                                           bool persistent,
                                           Mode mode,
                                           FileDescriptorWatcher *controller,
                                           Watcher *delegate) {
  return pump_libevent()->WatchFileDescriptor(
      fd,
      persistent,
      static_cast<base::MessagePumpLibevent::Mode>(mode),
      controller,
      delegate);
}

#endif
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the


#if !defined(AFX_SECURITY_H__99695D7A_1D58_11D2_B21E_0000F87A6B50__INCLUDED_)
#define AFX_SECURITY_H__99695D7A_1D58_11D2_B21E_0000F87A6B50__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// security.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CDlgIADsSecurityDescriptor dialog

class CDlgIADsSecurityDescriptor : public CDialog
{
// Construction
public:
	CDlgIADsSecurityDescriptor(LPUNKNOWN, CWnd* pParent = NULL);   // standard constructor
	~CDlgIADsSecurityDescriptor();

// Dialog Data
	//{{AFX_DATA(CDlgIADsSecurityDescriptor)
	enum { IDD = IDD_SECURITY };
	CListBox	m_cACEList;
	//}}AFX_DATA

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDlgIADsSecurityDescriptor)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	void PopulateACL( IADsAccessControlList *pACL );
	void ResetAcePtr();
	void DisplayACE( IADsAccessControlEntry *pACE );
	void ResetAceMaskControls();
	void DisplayAceObjectType( UINT nID, CString &sObjectType );

	IADsSecurityDescriptor  *m_pSecurityDesc;
	CPtrList				 m_acePtrList;
	CADsSearch				 m_search;

	// Generated message map functions
	//{{AFX_MSG(CDlgIADsSecurityDescriptor)
	virtual BOOL OnInitDialog();
	afx_msg void OnSelChangeAceList();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SECURITY_H__99695D7A_1D58_11D2_B21E_0000F87A6B50__INCLUDED_)


STD_ROM_FN(kof99e)

struct BurnDriver BurnDrvkof99e = {
	"kof99e", "kof99", "neogeo", NULL, "1999",
	"The King of Fighters '99 - Millennium Battle (earlier)\0", NULL, "SNK", "Neo Geo MVS",
	NULL, NULL, NULL, NULL,
	BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_CARTRIDGE | HARDWARE_SNK_NEOGEO | HARDWARE_SNK_CMC42 | HARDWARE_SNK_SMA_PROTECTION, GBF_VSFIGHT, FBF_KOF,
	NULL, kof99eRomInfo, kof99eRomName, NULL, NULL, neogeoInputInfo, neogeoDIPInfo,
	kof99Init, NeoSMAExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
	0x1000, 304, 224, 4, 3
};

// The King of Fighters '99 - Millennium Battle (Korean release)
/* Original Version - Encrypted code & GFX */ /* KOREAN VERSION */

static struct BurnRomInfo kof99kRomDesc[] = {
	{ "kb.neo-sma",   0x040000, 0x9fccc688, 9 | BRF_ESS | BRF_PRG }, //  0 68K code
	{ "151-pg1k.p1",  0x400000, 0xef259292, 1 | BRF_ESS | BRF_PRG }, //  1
	{ "151-pg2k.p2",  0x400000, 0xf3898ec2, 1 | BRF_ESS | BRF_PRG }, //  2

	/* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
	/* Encrypted */
	{ "251-c1.c1",    0x800000, 0x0f9e93fe, 3 | BRF_GRA },           //  3 Sprite data
	{ "251-c2.c2",    0x800000, 0xe71e2ea3, 3 | BRF_GRA },           //  4
	{ "251-c3.c3",    0x800000, 0x238755d2, 3 | BRF_GRA },           //  5
	{ "251-c4.c4",    0x800000, 0x438c8b22, 3 | BRF_GRA },           //  6
	{ "251-c5.c5",    0x800000, 0x0b0abd0a, 3 | BRF_GRA },           //  7
	{ "251-c6.c6",    0x800000, 0x65bbf281, 3 | BRF_GRA },           //  8
	{ "251-c7.c7",    0x800000, 0xff65f62e, 3 | BRF_GRA },           //  9
	{ "251-c8.c8",    0x800000, 0x8d921c68, 3 | BRF_GRA },           // 10

	{ "251-m1.m1",    0x020000, 0x5e74539c, 4 | BRF_ESS | BRF_PRG }, // 11 Z80 code

	{ "251-v1.v1",    0x400000, 0xef2eecc8, 5 | BRF_SND },           // 12 Sound data
	{ "251-v2.v2",    0x400000, 0x73e211ca, 5 | BRF_SND },           // 13
	{ "251-v3.v3",    0x400000, 0x821901da, 5 | BRF_SND },           // 14
	{ "251-v4.v4",    0x200000, 0xb49e6178, 5 | BRF_SND },           // 15
};

STDROMPICKEXT(kof99k, kof99k, neogeo)
STD_ROM_FN(


ssionListMixin:UpdateMissions()
	C_Garrison.GetInProgressMissions(self.inProgressMissions, self:GetMissionFrame().followerTypeID);
	C_Garrison.GetAvailableMissions(self.availableMissions, self:GetMissionFrame().followerTypeID);
	self:UpdateCombatAllyMission();
	Garrison_SortMissions(self.availableMissions);
	self.Tab1:SetText(AVAILABLE.." - "..#self.availableMissions)
	self.Tab2:SetText(WINTERGRASP_IN_PROGRESS.." - "..#self.inProgressMissions)
	if ( #self.inProgressMissions > 0 ) then
		self.Tab2.Left:SetDesaturated(false);
		self.Tab2.Right:SetDesaturated(false);
		self.Tab2.Middle:SetDesaturated(false);
		self.Tab2.Text:SetTextColor(1, 1, 1);
		self.Tab2:SetEnabled(true);
	else
		self.Tab2.Left:SetDesaturated(true);
		self.Tab2.Right:SetDesaturated(true);
		self.Tab2.Middle:SetDesaturated(true);
		self.Tab2.Text:SetTextColor(0.5, 0.5, 0.5);
		self.Tab2:SetEnabled(false);
	end
	self:Update();
end

function GarrisonMissionListMixin:Update()
	local missions;
	local followerTypeID = self:GetMissionFrame().followerTypeID;
	if (self.showInProgress) then
		missions = self.inProgressMissions;
	else
		missions = self.availableMissions;
	end
	local numMissions = #missions;
	local scrollFrame = self.listScroll;
	local offset = HybridScrollFrame_GetOffset(scrollFrame);
	local buttons = scrollFrame.buttons;
	local numButtons = #buttons;

	if (numMissions == 0) then
		self.EmptyListString:Show();
	else
		self.EmptyListString:Hide();
	end

	for i = 1, numButtons do
		local button = buttons[i];
		local index = offset + i; -- adjust index
		if ( index <= numMissions) then
			local mission = missions[index];
			button.id = index;
			button.info = mission;
			button.Title:SetWidth(0);
			button.Title:SetText(mission.name);
			button.Level:SetText(mission.level);
			if ( mission.durationSeconds >= GARRISON_LONG_MISSION_TIME ) then
				local duration = format(GARRISON_LONG_MISSION_TIME_FORMAT, mission.duration);
				button.Summary:SetFormattedText(PARENS_TEMPLATE, duration);
			else
				button.Summary:SetFormattedText(PARENS_TEMPLATE, mission.duration);
			end
			if ( mission.locPrefix ) then
				button.LocBG:Show();
				button.LocBG:SetAtlas(mission.locPrefix.."-List");
			else
				button.LocBG:Hide();
			end
			if (mission.isRare) then
				button.RareOverlay:Show();
				button.RareText:Show();
				button.IconBG:SetVertexColor(0, 0.012, 0.291, 0.4)
			else
				button.RareOverlay:Hide();
				button.RareText:Hide();
				button.IconBG:SetVertexColor(0, 0, 0, 0.4)
			end
			local showingItemLevel = false;
			if ( mission.isMaxLevel and mission.iLevel > 0 ) then
				button.ItemLevel:SetFormattedText(NUMBER_IN_PARENTHESES, mission.iLevel);
				button.ItemLevel:Show();
				showingItemLevel = true;
			else
				button.ItemLevel:Hide();
			end
			if ( showingItemLevel and mission.isRare ) then
				button.Level:SetPoint("CENTER", button, "TOPLEFT", 40, -22);
			else
				button.Level:SetPoint("CENTER", button, "TOPLEFT", 40, -36);
			end

			button:Enable();
			if (mission.inProgress) then
				button.


l(None, result.result_set[0][0])

        # Count default value is 0.
        query = """MATCH (a) return count(a.missing_field)"""
        result = graph.query(query)
        self.env.assertEqual(0, result.result_set[0][0])

        # Avarage default value is 0.
        query = """MATCH (a) return avg(a.missing_field)"""
        result = graph.query(query)
        self.env.assertEqual(None, result.result_set[0][0])

        # Collect default value is an empty array.
        query = """MATCH (a) return collect(a.missing_field)"""
        result = graph.query(query)
        self.env.assertEqual([], result.result_set[0][0])

        # StdDev default value is 0.
        query = """MATCH (a) return stdev(a.missing_field)"""
        result = graph.query(query)
        self.env.assertEqual(0, result.result_set[0][0])

        # percentileCont default value is null.
        query = """MATCH (a) return percentileCont(a.missing_field, 0.1)"""
        result = graph.query(query)
        self.env.assertEqual(None, result.result_set[0][0])

        # percentileDisc default value is null.
        query = """MATCH (a) return percentileDisc(a.missing_field, 0.1)"""
        result = graph.query(query)
        self.env.assertEqual(None, result.result_set[0][0])

    # Test returning multiple occurrence of an expression.
    def test08_return_duplicate_expression(self):
        query = """MATCH (a) return max(a.val) as x, max(a.val) as y"""
        result = graph.query(query)
        self.env.assertEqual(result.result_set[0][0], result.result_set[0][1])

        query = """MATCH (a) return a.val as x, a.val as y LIMIT 1"""
        result = graph.query(query)
        self.env.assertEqual(result.result_set[0][0], result.result_set[0][1])

        query = """return 1 as x, 1 as y"""
        result = graph.query(query)
        self.env.assertEqual(result.result_set[0][0], result.result_set[0][1])

    # Test implicit result-set size limit
    def test09_implicit_resultset_limit(self):
        query = "MATCH (a) RETURN a"

        result = graph.query(query)
        record_count = len(result.result_set)

        # make sure limit is greater than 0
        assert(record_count > 1)
        limit = record_count -1

        # enforce implicit limit
        redis_con.execute_command("GRAPH.CONFIG", "SET", "RESULTSET_SIZE", limit)

        result = graph.query(query)
        limited_record_count = len(result.result_set)
        assert(limited_record_count == limit)

        # lift limit, -1 stands for unlimited
        redis_con.execute_command("GRAPH.CONFIG", "SET", "RESULTSET_SIZE", -1)

        # re-issue query
        result = graph.query(query)
        unlimited_record_count = len(result.result_set)
        assert(unlimited_record_count == record_count)

    def test10_carriage_return_in_result(self):
        query = """RETURN 'Foo\r\nBar'"""
        result = graph.query(query)
        self.env.assertEqual(result.result_set[0][0], 'Foo\r\nBar')


[0];
      var p2 = paths[1];

      expect(p1.state.x).toEqual(10);
      expect(p1.state.y).toEqual(15);
      expect(p1.state.anchors.length).toEqual(4);
      expect(p1.state.anchors[0]).toEqual(new Rune.Anchor().setMove(0, 0));
      expect(p1.state.anchors[1]).toEqual(new Rune.Anchor().setLine(100, 100));
      expect(p1.state.anchors[2]).toEqual(
        new Rune.Anchor().setCurve(100, 200, -100, 200, -100, 100)
      );
      expect(p1.state.anchors[3]).toEqual(
        new Rune.Anchor().setCurve(-100, 0, 0, 0)
      );

      expect(p2.state.x).toEqual(10);
      expect(p2.state.y).toEqual(15);
      expect(p2.state.anchors.length).toEqual(4);
      expect(p2.state.anchors[0]).toEqual(new Rune.Anchor().setMove(0, 25));
      expect(p2.state.anchors[1]).toEqual(new Rune.Anchor().setLine(75, 75));
      expect(p2.state.anchors[2]).toEqual(new Rune.Anchor().setLine(-75, 75));
      expect(p2.state.anchors[3]).toEqual(new Rune.Anchor().setClose());
    });

    it('returns subpaths separated by closeShape', function() {
      var triangles = new Rune.Path(10, 15)
        .lineTo(100, 100)
        .lineTo(0, 100)
        .closePath()
        .lineTo(-100, 100)
        .lineTo(0, 100)
        .closePath();

      var paths = triangles.subpaths();

      expect(paths.length).toEqual(2);
      var p1 = paths[0];
      var p2 = paths[1];

      expect(p1.state.x).toEqual(10);
      expect(p1.state.y).toEqual(15);
      expect(p1.state.anchors.length).toEqual(4);
      expect(p1.state.anchors[0]).toEqual(new Rune.Anchor().setMove(0, 0));
      expect(p1.state.anchors[1]).toEqual(new Rune.Anchor().setLine(100, 100));
      expect(p1.state.anchors[2]).toEqual(new Rune.Anchor().setLine(0, 100));
      expect(p1.state.anchors[3]).toEqual(new Rune.Anchor().setClose());

      expect(p2.state.x).toEqual(10);
      expect(p2.state.y).toEqual(15);
      expect(p2.state.anchors.length).toEqual(3);
      expect(p2.state.anchors[0]).toEqual(new Rune.Anchor().setLine(-100, 100));
      expect(p2.state.anchors[1]).toEqual(new Rune.Anchor().setLine(0, 100));
      expect(p2.state.anchors[2]).toEqual(new Rune.Anchor().setClose());
    });

    it('adds subpaths to parent', function() {
      g.add(s);
      expect(g.children.length).toEqual(1);
      s.subpaths();
      expect(g.children.length).toEqual(3);
    });

    it('does not add subpaths to parent', function() {
      g.add(s);
      expect(g.children.length).toEqual(1);
      s.subpaths(false);
      expect(g.children.length).toEqual(1);
    });

    it('copies the mixin state', function() {
      setMixinVars(s);
      var paths = s.subpaths();
      expect(getMixinVars(paths[0])).toBeIn(getMixinVars(s));
      expect(getMixinVars(paths[1])).toBeI


issions and limitations
 * under the License.
 */

/*!
 * \file src/lang/data_layout.cc
 * \brief Data Layout expression.
 */
#include <tvm/arith/analyzer.h>
#include <tvm/runtime/registry.h>
#include <tvm/tir/data_layout.h>
#include <tvm/tir/stmt_functor.h>

#include <cctype>

namespace tvm {
namespace tir {
using tir::IterVar;
using tir::IterVarNode;
using tir::Var;

TVM_REGISTER_NODE_TYPE(LayoutNode);
TVM_REGISTER_NODE_TYPE(BijectiveLayoutNode);

const LayoutAxis LayoutAxis::UPPER_CASE[] = {
    LayoutAxis('A'), LayoutAxis('B'), LayoutAxis('C'), LayoutAxis('D'), LayoutAxis('E'),
    LayoutAxis('F'), LayoutAxis('G'), LayoutAxis('H'), LayoutAxis('I'), LayoutAxis('J'),
    LayoutAxis('K'), LayoutAxis('L'), LayoutAxis('M'), LayoutAxis('N'), LayoutAxis('O'),
    LayoutAxis('P'), LayoutAxis('Q'), LayoutAxis('R'), LayoutAxis('S'), LayoutAxis('T'),
    LayoutAxis('U'), LayoutAxis('V'), LayoutAxis('W'), LayoutAxis('X'), LayoutAxis('Y'),
    LayoutAxis('Z')};

const LayoutAxis LayoutAxis::LOWER_CASE[] = {
    LayoutAxis('a'), LayoutAxis('b'), LayoutAxis('c'), LayoutAxis('d'), LayoutAxis('e'),
    LayoutAxis('f'), LayoutAxis('g'), LayoutAxis('h'), LayoutAxis('i'), LayoutAxis('j'),
    LayoutAxis('k'), LayoutAxis('l'), LayoutAxis('m'), LayoutAxis('n'), LayoutAxis('o'),
    LayoutAxis('p'), LayoutAxis('q'), LayoutAxis('r'), LayoutAxis('s'), LayoutAxis('t'),
    LayoutAxis('u'), LayoutAxis('v'), LayoutAxis('w'), LayoutAxis('x'), LayoutAxis('y'),
    LayoutAxis('z')};

const LayoutAxis& LayoutAxis::Get(const char name) {
  ICHECK((name >= 'A' && name <= 'Z') || (name >= 'a' && name <= 'z'))
      << "Invalid layout axis name: " << name << ". Has to be A-Z or a-z.";
  return (name >= 'A' && name <= 'Z') ? LayoutAxis::UPPER_CASE[name - 'A']
                                      : LayoutAxis::LOWER_CASE[name - 'a'];
}

const LayoutAxis& LayoutAxis::Get(const IterVar& itvar) {
  const std::string axis = itvar->var.get()->name_hint;
  ICHECK_EQ(axis.size(), 1) << "Invalid layout axis " << axis;
  return LayoutAxis::Get(axis[0]);
}

const LayoutAxis& LayoutAxis::Get(const std::string& name) {
  ICHECK_EQ(name.length(), 1) << "Invalid axis " << name;
  return LayoutAxis::Get(name[0]);
}

Layout::Layout(const Array<IterVar>& axes) {
  auto node = make_object<LayoutNode>();
  node->axes = axes;
  std::ostringstream repr;
  for (const IterVar& axis : axes) {
    if (const auto* factor = axis->dom->extent.as<IntImmNode>()) {
      ICHECK_GT(factor->value, 0);
      repr << factor->value;
    }
    ICHECK_EQ(axis->var.get()->name_hint.size(), 1)
        << "Invalid layout axis " << axis->var.get()->name_hint;
    char c = axis->var.get()->name_hint.operator std::string()[0];
    ICHECK((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) << "Invalid layout axis " << c;
    repr << axis->var.get()->name_hint;
  }
  node->name = repr.str();
  data_ = std::move(node);
}

Layout::Layout(const std::string& name) {  // NOLINT(*)
  if (name == "__undef__") return;

  auto node = make_object<LayoutNode>();
  node->name = name;

  if (name.empty()) return;  // scalar

  // parse layout string
  int32_t factor = 0;
  for (char c : name) {
    if (c >= '


style-1 .form-control {
	font-size: 0.9em;
}

@media (max-width: 767px) {
	.custom-form-style-1 .form-control.custom-xs-mb {
		margin-bottom: 15px;
	}
}

.custom-thumb-carousel {
	padding: 8px;
}

.custom-thumb-carousel:after {
	content: '';
	display: block;
	clear: both;
}

.custom-thumb-carousel .img-thumbnail {
	padding: 0;
	margin: 0;
}

.custom-thumb-carousel .img-thumbnail.img-thumbnail-hover-icon:before {
	background: rgba(var(--quaternary), 0.65);
}

.custom-thumb-carousel .img-thumbnail.img-thumbnail-hover-icon:after {
	content: "\e090";
	font-family: simple-line-icons;
}

.custom-thumb-carousel strong {
	display: inline-block;
}

/*
* Event
*/
.custom-thumb-info {
	border: none;
	overflow: visible;
}

.custom-thumb-info .thumb-info-wrapper {
	margin: 0 !important;
}

.custom-thumb-info .thumb-info-wrapper:after {
	content: none;
}

.custom-thumb-info .thumb-info-caption {
	display: block;
	padding: 20px 40px;
}

.custom-thumb-info .thumb-info-caption .custom-thumb-info-wrapper-box {
	float: left;
	width: 100%;
	margin: -57px 0 15px 0;
}

.custom-thumb-info .thumb-info-caption .custom-event-infos, .custom-thumb-info .thumb-info-caption .thumb-info-catption-text {
	float: left;
	width: 100%;
}

.custom-thumb-info .thumb-info-caption .thumb-info-caption-text, .custom-thumb-info .thumb-info-caption p {
	padding: 0;
	font-size: 1em;
	line-height: 2;
}

.custom-thumb-info .thumb-info-caption p {
	font-size: 0.9em;
}

.custom-event-infos ul {
	padding: 0;
	margin: 0;
}

.custom-event-infos ul li {
	list-style: none;
	display: inline-block;
	margin-left: 15px;
	font-size: 0.9em;
}

.custom-event-infos ul li:first-child {
	margin-left: 0;
}

.custom-event-infos ul li i {
	font-size: 1.2em;
	color: #1f222b;
	font-weight: bold;
}

.custom-post-event {
	position: relative;
}

.custom-post-event .post-event-date {
	position: absolute;
	top: 0;
	right: 0;
	padding: 15px 20px;
}

.custom-post-event .post-event-date span {
	display: block;
}

.custom-post-event .post-event-date span.day {
	font-size: 1.9em;
}

.custom-post-event .post-event-date span.year {
	font-size: 0.9em;
}

.custom-post-event .post-event-date.custom-xlg-space {
	top: 30px;
	right: 30px;
}

.custom-post-event .post-event-content p {
	font-size: 0.9em;
}

.custom-post-event .post-event-content a {
	display: inline-block;
}

.custom-post-event .comments-count {
	display: inline-block;
}

/*
* Testimonial
*/
.


str r1,[r7,r10,lsr #7]

endofop81f8:
  ldr r5,[r7,#0x5c] ;@ Load Cycles
  ldrh r8,[r4],#2 ;@ Fetch next opcode
  subs r5,r5,#166 ;@ Subtract cycles
  ldrge pc,[r6,r8,asl #2] ;@ Jump to opcode handler
  b CycloneEnd

divzero81f8:
  mov r0,#5 ;@ Divide by zero
  bl Exception
  ldr r5,[r7,#0x5c] ;@ Load Cycles
  ldrh r8,[r4],#2 ;@ Fetch next opcode
  subs r5,r5,#204 ;@ Subtract cycles
  ldrge pc,[r6,r8,asl #2] ;@ Jump to opcode handler
  b CycloneEnd

;@ ---------- [81f9] divs.w $33333333.l, d0 uses Op81f9 ----------
Op81f9:
  str r4,[r7,#0x50] ;@ Save prev PC + 2
  str r5,[r7,#0x5c] ;@ Save Cycles

;@ EaCalc : Get '$33333333.l' into r0:
  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
  ldrh r0,[r4],#2
  orr r0,r0,r2,lsl #16
;@ EaRead : Read '$33333333.l' (address in r0) into r0:
  str r4,[r7,#0x40] ;@ Save PC
  bic r0,r0,#0xff000000
  mov lr,pc
  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler

;@ EaCalc : Get register index into r10:
  and r10,r8,#0x0e00
;@ EaRead : Read register[r10] into r2:
  ldr r2,[r7,r10,lsr #7]

  movs r1,r0,asl #16
  beq divzero81f9 ;@ division by zero

  mov r11,#0 ;@ r11 = 1 or 2 if the result is negative
  tst r2,r2
  orrmi r11,r11,#2
  rsbmi r2,r2,#0 ;@ Make r2 positive

  movs r0,r1,asr #16
  orrmi r11,r11,#1
  rsbmi r0,r0,#0 ;@ Make r0 positive

;@ detect the nasty 0x80000000 / -1 situation
  mov r3,r2,asr #31
  eors r3,r3,r1,asr #16
  beq wrendofop81f9

;@ Divide r2 by r0
  mov r3,#0
  mov r1,r0

;@ Shift up divisor till it's just less than numerator
Shift81f9:
  cmp r1,r2,lsr #1
  movls r1,r1,lsl #1
  bcc Shift81f9

Divide81f9:
  cmp r2,r1
  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
  subcs r2,r2,r1
  teq r1,r0
  movne r1,r1,lsr #1
  bne Divide81f9

;@r3==quotient,r2==remainder
  and r1,r11,#1
  teq r1,r11,lsr #1
  rsbne r3,r3,#0 ;@ negate if quotient is negative
  tst r11,#2
  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative

  mov r1,r3,asl #16
  cmp r3,r1,asr #16 ;@ signed overflow?
  orrne r9,r9,#0x10000000 ;@ set overflow flag


/* Copyright 2020 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "registers.h"
#include "stdint.h"

/*
 * Map SCP address (bits 31~28) to AP address
 *
 * SCP address	AP address	Note
 *
 * 0x0000_0000			SRAM
 * 0x1000_0000	0x6000_0000	un-cached DRAM
 * 0x2000_0000	0x7000_0000	un-cached DRAM
 * 0x3000_0000
 *
 * 0x4000_0000
 * 0x5000_0000	0x0000_0000
 * 0x6000_0000	0x1000_0000
 * 0x7000_0000	0xa000_0000
 *
 * 0x8000_0000
 * 0x9000_0000	0x8000_0000
 * 0xa000_0000	0x9000_0000
 * 0xb000_0000
 *
 * 0xc000_0000	0x8000_0000
 * 0xd000_0000	0x2000_0000
 * 0xe000_0000	0x3000_0000
 * 0xf000_0000	0x5000_0000
 */

#define REMAP_ADDR_SHIFT		28
#define REMAP_ADDR_LSB_MASK		(BIT(REMAP_ADDR_SHIFT) - 1)
#define REMAP_ADDR_MSB_MASK		((~0) << REMAP_ADDR_SHIFT)
#define MAP_INVALID 0xff

static const uint8_t addr_map[16] = {
	MAP_INVALID,	/* SRAM */
	0x6,		/* ext_addr_0x1 */
	0x7,		/* ext_addr_0x2 */
	MAP_INVALID,	/* no ext_addr_0x3 */

	MAP_INVALID,	/* no ext_addr_0x4 */
	0x0,		/* ext_addr_0x5 */
	0x1,		/* ext_addr_0x6 */
	0xa,		/* ext_addr_0x7 */

	MAP_INVALID,	/* no ext_addr_0x8 */
	0x8,		/* ext_addr_0x9 */
	0x9,		/* ext_addr_0xa */
	MAP_INVALID,	/* no ext_addr_0xb */

	0x8,		/* ext_addr_0xc */
	0x2,		/* ext_addr_0xd */
	0x3,		/* ext_addr_0xe */
	0x5,		/* ext_addr_0xf */
};

void memmap_init(void)
{
	SCP_R_REMAP_0X0123 =
		(uint32_t)addr_map[0x1] << 8 |
		(uint32_t)addr_map[0x2] << 16;

	SCP_R_REMAP_0X4567 =
		(uint32_t)addr_map[0x5] << 8 |
		(uint32_t)addr_map[0x6] << 16 |
		(uint32_t)addr_map[0x7] << 24;

	SCP_R_REMAP_0X89AB =
		(uint32_t)addr_map[0x9] << 8 |
		(uint32_t)addr_map[0xa] << 16;

	SCP_R_REMAP_0XCDEF =
		(uint32_t)addr_map[0xc] |
		(uint32_t)addr_map[0xd] << 8 |
		(uint32_t)addr_map[0xe] << 16 |
		(uint32_t)addr_map[0xf] << 24;
}

int memmap_ap_to_scp(uintptr_t ap_addr, uintptr_t *scp_addr)
{
	int i;
	uint8_t msb = ap_addr >> REMAP_ADDR_SHIFT;

	for (i = 0; i < ARRAY_SIZE(addr_map); ++i) {
		if (addr_map[i] != msb)
			continue;

		*scp_addr = (ap_addr & REMAP_ADDR_LSB_MASK) |
			(i << REMAP_ADDR_SHIFT);
		return EC_SUCCESS;
	}

	return EC_ERROR_INVAL;
}

int memmap_scp_to_ap(uintptr_t scp_addr, uintptr_t *ap_addr)
{
	int i = scp_addr >> REMAP_ADDR_SHIFT;

	if (addr_map[i] == MAP_INVALID)
		return EC_ERROR_INVAL;

	*ap_addr = (scp_addr & REMAP_ADDR_LSB_MASK) |
		(addr_map[i] << REMAP_ADDR_SHIFT);
	return EC_SUCCESS;
}


 it is not resolved.
func (p *parser) parseBinaryExpr(lhs bool, prec1 int) ast.Expr {
	if p.trace {
		defer un(trace(p, "BinaryExpr"))
	}

	x := p.parseUnaryExpr(lhs)
	for prec := p.tok.Precedence(); prec >= prec1; prec-- {
		for p.tok.Precedence() == prec {
			pos, op := p.pos, p.tok
			p.next()
			if lhs {
				p.resolve(x)
				lhs = false
			}
			y := p.parseBinaryExpr(false, prec+1)
			x = &ast.BinaryExpr{p.checkExpr(x), pos, op, p.checkExpr(y)}
		}
	}

	return x
}

// If lhs is set and the result is an identifier, it is not resolved.
// TODO(gri): parseExpr may return a type or even a raw type ([..]int) -
//            should reject when a type/raw type is obviously not allowed
func (p *parser) parseExpr(lhs bool) ast.Expr {
	if p.trace {
		defer un(trace(p, "Expression"))
	}

	return p.parseBinaryExpr(lhs, token.LowestPrec+1)
}

func (p *parser) parseRhs() ast.Expr {
	return p.parseExpr(false)
}

// ----------------------------------------------------------------------------
// Statements

func (p *parser) parseSimpleStmt(labelOk bool) ast.Stmt {
	if p.trace {
		defer un(trace(p, "SimpleStmt"))
	}

	x := p.parseLhsList()

	switch p.tok {
	case
		token.DEFINE, token.ASSIGN, token.ADD_ASSIGN,
		token.SUB_ASSIGN, token.MUL_ASSIGN, token.QUO_ASSIGN,
		token.REM_ASSIGN, token.AND_ASSIGN, token.OR_ASSIGN,
		token.XOR_ASSIGN, token.SHL_ASSIGN, token.SHR_ASSIGN, token.AND_NOT_ASSIGN:
		// assignment statement
		pos, tok := p.pos, p.tok
		p.next()
		y := p.parseRhsList()
		return &ast.AssignStmt{x, pos, tok, y}
	}

	if len(x) > 1 {
		p.errorExpected(x[0].Pos(), "1 expression")
		// continue with first expression
	}

	switch p.tok {
	case token.COLON:
		// labeled statement
		colon := p.pos
		p.next()
		if label, isIdent := x[0].(*ast.Ident); labelOk && isIdent {
			// Go spec: The scope of a label is the body of the function
			// in which it is declared and excludes the body of any nested
			// function.
			stmt := &ast.LabeledStmt{label, colon, p.parseStmt()}
			p.declare(stmt, p.labelScope, ast.Lbl, label)
			return stmt
		}
		p.error(x[0].Pos(), "illegal label declaration")
		return &ast.BadStmt{x[0].Pos(), colon + 1}

	case token.ARROW:
		// send statement
		arrow := p.pos
		p.next() // consume "<-"
		y := p.parseRhs()
		return &ast.SendStmt{x[0], arrow, y}

	case token.INC, token.DEC:
		// increment or decrement
		s := &ast.IncDecStmt{x[0], p.pos, p.tok}
		p.next() // consume "++" or "--"
		return s
	}

	// expression
	return &ast.ExprStmt{x[0]}
}

func (p *parser) parseCallExpr() *ast.CallExpr {
	x := p.parseRhs()
	if call, isCall := x.(*ast


WriteIndentedString("return this;\n")
	// Done
	builder.WriteIndentedString("}\n\n")
	// Legacy case for bytes
	if bitwidth == 8 {
		generateJavaModuleLegacyColumnSetter(className, methodName, builder)
	}
}

// legacy setter to support UnsignedByte.
func generateJavaModuleLegacyColumnSetter(className string, methodName string, builder indentBuilder) {
	i1Builder := builder.Indent()
	builder.WriteIndentedString("public ", className, " ", methodName, "(final UnsignedByte val) {\n")
	i1Builder.WriteIndentedString("return ", methodName, "(val.toByte());\n")
	builder.WriteIndentedString("}\n\n")
}

func generateJavaModuleLongPutter(columnName, fieldName string, bitwidth uint, builder indentBuilder) {
	n := byteWidth(bitwidth)
	i1Builder := builder.Indent()
	builder.WriteIndentedString("if(val < 0 || val >= ", maxValueStr(bitwidth), "L) {\n")
	i1Builder.WriteIndentedString(
		"throw new IllegalArgumentException(\"", columnName+" has invalid value (\" + val + \")\");\n")
	builder.WriteIndentedString("}\n")
	//
	for i := int(n) - 1; i >= 0; i-- {
		shift := (i * 8)
		if shift == 0 {
			builder.WriteIndentedString(fieldName, ".put((byte) val);\n")
		} else {
			builder.WriteIndentedString(fieldName, ".put((byte) (val >> ", fmt.Sprintf("%d", shift), "));\n")
		}
	}
}

func generateJavaModuleBytesPutter(columnName, fieldName string, bitwidth uint, builder indentBuilder) {
	i1Builder := builder.Indent()
	n := byteWidth(bitwidth)
	//
	builder.WriteIndentedString("// Trim array to size\n")
	builder.WriteIndentedString("Bytes bs = val.trimLeadingZeros();\n")
	builder.WriteIndentedString("// Sanity check against expected width\n")
	builder.WriteIndentedString(fmt.Sprintf("if(bs.bitLength() > %d) {\n", bitwidth))
	i1Builder.WriteIndentedString(
		fmt.Sprintf("throw new IllegalArgumentException(\"%s has invalid width (\"+bs.bitLength()+\"bits)\");\n", columnName))
	builder.WriteIndentedString("}\n")
	builder.WriteIndentedString("// Write padding (if necessary)\n")
	builder.WriteIndentedString(fmt.Sprintf("for(int i=bs.size(); i<%d; i++) { %s.put((byte) 0); }\n", n, fieldName))
	builder.WriteIndentedString("// Write bytes\n")
	builder.WriteIndentedString(fmt.Sprintf("for(int i=0; i<bs.size(); i++) { %s.put(bs.get(i)); }\n", fieldName))
}

func generateJavaModuleValidateRow[F any](className string, mod corset.SourceModule, schema sc.AnySchema[F],
	builder indentBuilder) {
	//
	i1Builder := builder.Indent()
	i2Builder := i1Builder.Indent()
	//
	builder.WriteIndentedString("public ", className, " validateRow() {\n")
	// Write register initialisers
	for _, col := range mod.Registers(schema.Width()) {
		reg := schema.Register(col.Register)
		// Check whether this is part of our module
		if reg.IsInputOutput() {
			name := fmt.Sprintf("%s.%s", mod.Name, reg.Name)
			regstr := fmt.Sprintf("%d", col.Register.Index(schema.Width()))
			// Yes, include register
			i1Builder.WriteIndentedString("if(!filled.get(", regstr, ")) {\n")
			i2Builder.WriteIndentedString("throw new IllegalStateException(\"", name, " has not been filled.\");\n")
			i1Builder.WriteIndentedString("}\n")
		}
	}
	//
	i1Builder.WriteIndentedString("this.filled.clear()


 MessageBatchingManager =
      new MessageBatchingManager({
        providers: { },
        maxSizeBytes: 10000, // Something high so that the bytes don't trigger the send
        maxTimeMs: timeToWaitMs,
        skipNackOnFail: true, // For now, test skip the NACK, so NO NACK on FAIL!
      });
    // Create some dummy message objects under the max size
    let aMessage1: ConsumeMessage = createDummyMessageOfLength(100);
    let messageCountAll = 1; // Count of ALL the messages in the end.
    let messageBytesAll = 100; // Important that this is the sum of ALL the messages.

    // Setup an instance of AMQP Cacoon
    let amqpCacoon = new AmqpCacoon(amqpCacoonConfig);
    // Mock 'amqp.connect' form the underlying Cacoon (we don't really want to connect or open a channelWrapper
    // for this test!)
    simple.mock(amqpCacoon, 'amqp.connect').resolveWith({});
    // Get a channelWrapper
    let channelWrapper = await amqpCacoon.getPublishChannel();
    // Create a dummy stub handler (it will get mocked next!)
    let handler = async (
      channel: ChannelWrapper,
      msg: ConsumeBatchMessages
    ) => {
      await Promise.resolve();
    };
    // Wrap the handler in a SPY
    handler = simple.spy(handler);

    // Test our handleMessageBuffering, at this stage, we DO NOT expect our mock of sendBufferedMessages to be called!
    // Since TIME should not yet be exceeded
    await messageBatchingHandler.handleMessageBuffering(
      channelWrapper,
      aMessage1,
      handler
    );
    // Verify the handler was NOT called!
    expect(handler.callCount, 'sub handler was called!').to.equal(0);

    // Now let's wait maxTimeMs before we check again
    await new Promise((resolve) => setTimeout(resolve, timeToWaitMs));

    // We waited, verify the handler was called since we expect it should have due to exceeding maxTimeMs
    expect(handler.callCount, 'sub handler was called!').to.equal(1);
    // Verify the handler received the right data
    expect(
      handler.lastCall.args[1].totalSizeInBytes,
      'sub handler called with bad argument "messages.totalSizeInBytes"'
    ).to.equal(messageBytesAll);
    expect(
      handler.lastCall.args[1].messages.length,
      'sub handler called with bad argument "messages.messages"'
    ).to.equal(messageCountAll);
    // Verify the instance class now has zero messages and zero bytes! (since a successful Buffer send should
    // perform a reset!
    expect(
      messageBatchingHandler.getMessageCount(),
      'Message count mismatch.'
    ).to.equal(0);
    expect(
      messageBatchingHandler.getBufferSize(),
      'Buffer size mismatch.'
    ).to.equal(0);
    // Exit the test
    return;
  });
});

// A dummy message. Changing this should not be necessary! It's content is not hugely important
// since we're not really sending anything, but it does need to have the valid structure!
// charLength will be used to create messages of varying lengths for testing.
function createDummyMessageOfLength(charLength: number): ConsumeMessage {
  let aString: string = '';
  for (let i = 0; i < charLength; i++) {
    aString += 'a';
  }
  return {
    content: Buffer.from(aString),
    fields: {
      deliveryTag: 1,
      redelivered: false,
      exchange: '',
      routingKey: '',
      consumerTag: '',
    },
    properties: {
      contentType: null,
      contentEncodi


Style(el);
    const marginY =
      parseFloat(style.getPropertyValue('margin-top')) +
      parseFloat(style.getPropertyValue('margin-bottom'));
    return height + marginY;
  }
  return height;
}

/**
 * Measures the width and height of the inner edge
 * of an element. By default, will subtract the element's
 * current padding, but this is optional.
 * @returns A tuple as [width, height]
 */
export function innerDimensions(
  el: HTMLElement,
  usePadding = true,
): [number, number] {
  const rect = el.getBoundingClientRect();
  if (usePadding) {
    const style = getComputedStyle(el);
    const paddingX =
      parseFloat(style.getPropertyValue('padding-left')) +
      parseFloat(style.getPropertyValue('padding-right'));
    const paddingY =
      parseFloat(style.getPropertyValue('padding-top')) +
      parseFloat(style.getPropertyValue('padding-bottom'));
    return [rect.width - paddingX, rect.height - paddingY];
  }
  return [rect.width, rect.height];
}

/**
 * Optimized version of innerDimensions, to use
 * if you only need the width of an element
 */
export function innerWidth(el: HTMLElement, usePadding = true): number {
  const width = el.getBoundingClientRect().width;
  if (usePadding) {
    const style = getComputedStyle(el);
    const padding =
      parseFloat(style.getPropertyValue('padding-left')) +
      parseFloat(style.getPropertyValue('padding-right'));
    return width - padding;
  }
  return width;
}

/**
 * Optimized version of innerDimensions, to use
 * if you only need the height of an element
 */
export function innerHeight(el: HTMLElement, usePadding = true): number {
  const height = el.getBoundingClientRect().height;
  if (usePadding) {
    const style = getComputedStyle(el);
    const padding =
      parseFloat(style.getPropertyValue('padding-top')) +
      parseFloat(style.getPropertyValue('padding-bottom'));
    return height - padding;
  }
  return height;
}

/**
 * Gets the equivalent pixel dimension according to the browser
 * for any CSS unit of dimension allowed by CSS. Adds
 * a temporary element to the DOM with the specified
 * style and then measures the pixel length. This
 * way you can accurately convert, say, mm to px.
 * @returns A tuple as [width, height]
 * @example
 * // returns [4, 38]
 * cssDimensionsToPx('1mm', '10mm')
 */
export function cssDimensionsToPx(
  width: string,
  height: string,
): [number, number] {
  // create a fake div of requested width/height
  const div = document.createElement('div');
  div.style.width = width;
  div.style.height = height;
  div.style.position = 'absolute';
  div.style.visibility = 'hidden';
  div.style.padding = '0';
  div.style.margin = '0';
  div.style.top = '0';
  div.style.left = '0';
  div.style.boxSizing = 'content-box';

  // add it to the DOM
  document.body.appendChild(div);

  // measure it in pixels
  const rect = div.getBoundingClientRect();

  // remove it from the DOM
  document.body.removeChild(div);

  return [rect.width, rect.height];
}
import { Chart } from 'chart.js';

const template = (r: number, g: number, b: number, a: number) => `hsla(${r}, ${g}%, ${b}%, ${a})`;

const randomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min) + min);

const shuffle = (array: any[]) => {
  const newArray = [...array]
  for (let i = 0; i < newArray.length - 2; i += 1) {
    const j = randomInt(i, newArray.length)
    const tem


n:a[l]})}i(r(69693)),i([r(3599),r(83348),r(44844),r(43701),r(15553),r(46230),r(15359),r(55429),r(44453),r(83595),r(77901),r(88856),r(96919),r(82494),r(32141),r(95433)]),i([r(30227),r(44611)]),window.PlotlyLocales&&Array.isArray(window.PlotlyLocales)&&(i(window.PlotlyLocales),delete window.PlotlyLocales),e.Icons=r(35188);var c=r(32141),u=r(44122);e.Plots={resize:u.resize,graphJson:u.graphJson,sendDataToCloud:u.sendDataToCloud},e.Fx={hover:c.hover,unhover:c.unhover,loneHover:c.loneHover,loneUnhover:c.loneUnhover},e.Snapshot=r(6170),e.PlotSchema=r(57297)},35188:function(t){"use strict";t.exports={undo:{width:857.1,height:1e3,path:"m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z",transform:"matrix(1 0 0 -1 0 850)"},home:{width:928.6,height:1e3,path:"m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z",transform:"matrix(1 0 0 -1 0 850)"},"camera-retro":{width:1e3,height:1e3,path:"m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z",transform:"matrix(1 0 0 -1 0 850)"},zoombox:{width:1e3,height:1e3,path:"m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l


.com/s
    }

    a,
    a:visited {
        text-decoration: underline;
    }

    a[href]:after {
        content: " (" attr(href) ")";
    }

    abbr[title]:after {
        content: " (" attr(title) ")";
    }

    // Don't show links that are fragment identifiers,
    // or use the `javascript:` pseudo protocol
    a[href^="#"]:after,
    a[href^="javascript:"]:after {
        content: "";
    }

    pre,
    blockquote {
        border: 1px solid $code-border-color;
        page-break-inside: avoid;
    }

    thead {
        display: table-header-group; // h5bp.com/t
    }

    tr,
    img {
        page-break-inside: avoid;
    }

    img {
        max-width: 100% !important;
    }

    p,
    h2,
    h3 {
        orphans: 3;
        widows: 3;
    }

    h2,
    h3 {
        page-break-after: avoid;
    }

    // Responsive overrides for layout.
    .container {
        max-width: 100%;
        width: 100%;

        &.fixed,
        .fixed & {
            width: 100%;
        }
    }
}
// Media Query Breakpoints
@mixin bp($point) {
    @if $point == xxs {
        @media (max-width: $grid-breakpoint-xxs-max) {
            @content;
        }
    }
    @elseif $point == xs {
        @media print and (max-width: $grid-print-breakpoint-xs-max ), screen and (min-width: $grid-breakpoint-xs-min) and (max-width: $grid-breakpoint-xs-max) {
            @content;
        }
    }
    @else if $point == s {
        @media print and (min-width: $grid-print-breakpoint-s-min ) and (max-width: $grid-breakpoint-s-max), screen and (min-width: $grid-breakpoint-s-min) and (max-width: $grid-breakpoint-s-max) {
            @content;
        }
    }
    @else if $point == m {
        @media (min-width: $grid-breakpoint-m-min) and (max-width: $grid-breakpoint-m-max) {
            @content;
        }
    }
    @else if $point == l {
        @media (min-width: $grid-breakpoint-l-min) {
            @content;
        }
    }
}

// Minimum width.
@mixin bp-min($point) {
    @if $point == xs {
        @media print and (min-width: $grid-print-breakpoint-xs-max ), screen and (min-width: $grid-breakpoint-xs-min) {
            @content;
        }
    }
    @else if $point == s {
        @media print and (min-width: $grid-print-breakpoint-s-min ), screen and (min-width: $grid-breakpoint-s-min) {
            @content;
        }
    }
    @else if $point == m {
        @media (min-width: $grid-breakpoint-m-min) {
            @content;
        }
    }
    @else if $point == l {
        @media (min-width: $grid-breakpoint-l-min) {
            @content;
        }
    }
}

// Max width. 'l' needs no max width since it is the top tier.
@mixin bp-max($point) {
    @if $point == xxs {
        @media (max-width: $grid-breakpoint-xxs-max) {
            @content;
        }
    }
    @else if $point == xs {
        @media print and (max-width: $grid-print-breakpoint-xs-max ), screen and (max-width: $grid-breakpoint-xs-max) {
            @content;
        }
    }
    @else if $point == s {
        @media (max-width: $grid-breakpoint-s-max) {
            @content;
        }
    }
    @else if $point == m {


```c
a. x大于5 // x>5
b. scanf() 读取一个名为x的double类型值且失败 // scanf("%lf",&x)!=1
c. x的值等于5 // x==5
```

4. 用代码表示以下测试条件
```c
a. scanf() 成功读入一个整数 // scanf("%d",&x)==1
b. x不等于5 // x!=5
c. x大于或等于20 // x>=20
```

5. 下面的程序有点问题，请找出问题所在。
```c
#include <stdio.h>
int main(void)
{
    int i,j,list(10);
    for (i=1,i<=10,i++)
    {
        list[i] = 2 * i + 3;
        for (j = 1,j>=i,j++)
            printf("  %d",list[j]);
        printf("\n");
}
```
修改后的程序为：
```c
#include <stdio.h>
int main(void)
{
    int i,j,list[10];
    for(i = 0;i<=9;i++)
    {
        list[i] = 2 * i + 3;
        for(j = 1;j<=i;j++)
            printf("  %d",list[j]);
        printf("\n");
    }
    return 0;
}
```

6. 编写一个程序打印下面的图案，要求使用嵌套循环：
```c
$$$$$$$$
$$$$$$$$
$$$$$$$$
$$$$$$$$
```
代码如下：
```c
#include <stdio.h>
int main(void)
{
    int i,j;
    for(i = 0;i<=4;i++){
        for(j=0;j<=8;j++)
            printf("$");
    printf("\n");
    }
    return 0;
}
```

7. 下面的程序各打印什么内容？
```c
a.
    #include <stdio.h>
    int main(void)
    {
        int i = 0;
        while (++i < 4)
            printf("Hi! ");
        do
            printf("Bye! ");
        while (i++ < 8)
        return 0;
    }
    // 打印结果为：3次(1,2,3) Hi! Hi! Hi!
    // 打印结果为：5次(4,5,6,7,8) Bye! Bye! Bye! Bye! Bye! do while是先打印，再判断循环，
b.
    #include <stdio.h>
    int main(void)
    {
        int i;
        char ch;
        for (i = 0,ch='A',i<4;i++,ch +=2 * i)
            printf("%c",ch);
        return 0;
    }
    // 打印结果为：ACGM
```

8. 假设用户输入的是 Go west，young man!,下面各程序的输出是什么？（在ASCII码中，! 紧跟在空格字符后面）
```c
a.
    #include <stdio.h>
    int main(void)
    {
        char ch;
        scanf("%c",&c);
        while (ch!='g')
        {
            printf("%c",ch)
            scanf("%c",&ch);
        }
        return 0;
    }
    // 打印输出为：Go West,youn
b.
    #include <stdio.h>
    int main(void)
    {
        char


8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em +


      0.0145rem 0.029rem 0.174rem rgba(0, 0, 0, 0.01698),
      0.0335rem 0.067rem 0.402rem rgba(0, 0, 0, 0.024),
      0.0625rem 0.125rem 0.75rem rgba(0, 0, 0, 0.03),
      0.1125rem 0.225rem 1.35rem rgba(0, 0, 0, 0.036),
      0.2085rem 0.417rem 2.502rem rgba(0, 0, 0, 0.04302),
      0.5rem 1rem 6rem rgba(0, 0, 0, 0.06),
      0 0 0 0.0625rem rgba(0, 0, 0, 0.015);
    --card-sectionning-background-color: #18232c;
    --dropdown-background-color: hsl(205, 30%, 15%);
    --dropdown-border-color: #24333e;
    --dropdown-box-shadow: var(--card-box-shadow);
    --dropdown-color: var(--color);
    --dropdown-hover-background-color: rgba(36, 51, 62, 0.75);
    --modal-overlay-background-color: rgba(36, 51, 62, 0.8);
    --progress-background-color: #24333e;
    --progress-color: var(--primary);
    --loading-spinner-opacity: 0.5;
    --tooltip-background-color: var(--contrast);
    --tooltip-color: var(--contrast-inverse);
    --icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
    --icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    --icon-chevron-button: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    --icon-chevron-button-inverse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(0, 0, 0)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    --icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='n


شرون',
  'السابع والعشرون',
  'الثامن والعشرون',
  'التاسع والعشرون',
  'الثلاثون',
];
List surah_juzz = [
  1,
  22,
  42,
  62,
  82,
  102,
  121,
  142,
  162,
  182,
  201,
  222,
  242,
  262,
  282,
  302,
  322,
  342,
  362,
  382,
  402,
  422,
  442,
  462,
  482,
  502,
  522,
  542,
  562,
  582
];

List quranSurahsPage = [
  1,
  2,
  50,
  77,
  106,
  128,
  151,
  177,
  187,
  208,
  221,
  235,
  249,
  255,
  262,
  267,
  282,
  293,
  305,
  312,
  322,
  332,
  342,
  350,
  359,
  367,
  377,
  385,
  396,
  104,
  411,
  415,
  418,
  428,
  434,
  440,
  446,
  453,
  458,
  467,
  477,
  483,
  489,
  496,
  499,
  502,
  507,
  511,
  515,
  518,
  520,
  523,
  526,
  528,
  531,
  534,
  537,
  542,
  545,
  549,
  551,
  553,
  554,
  556,
  558,
  560,
  562,
  564,
  566,
  568,
  570,
  572,
  574,
  575,
  577,
  578,
  580,
  582,
  583,
  585,
  586,
  587,
  587,
  589,
  590,
  591,
  591,
  592,
  593,
  594,
  595,
  595,
  596,
  596,
  597,
  597,
  598,
  598,
  599,
  599,
  600,
  600,
  601,
  601,
  601,
  602,
  602,
  602,
  603,
  603,
  603,
  604,
  604,
  604,
];

List switchSurahName(int page) {
  List surahUrl;
  switch (page) {
    case 1:
      surahUrl = ['assets/PDF/output_folder/page_1.png'];
      break;
    case (>= 2 || < 50):
      surahUrl = [
        'assets/PDF/output_folder/page_1.png',
        'assets/PDF/output_folder/page_2.png',
        'assets/PDF/output_folder/page_3.png',
        'assets/PDF/output_folder/page_4.png',
        'assets/PDF/output_folder/page_5.png',
        'assets/PDF/output_folder/page_6.png',
        'assets/PDF/output_folder/page_7.png',
        'assets/PDF/output_folder/page_8.png',
        'assets/PDF/output_folder/page_9.png',
        'assets/PDF/output_folder/page_10.png',
        'assets/PDF/output_folder/page_11.png',
        'assets/PDF/output_folder/page_12.png',
        'assets/PDF/output_folder/page_13.png',
        'assets/PDF/output_folder/page_14.png',
        'assets/PDF/output_folder/page_15.png',
        'assets/PDF/output_folder/page_16.png',
        'assets/PDF/output_folder/page_17.png',
        'assets/PDF/output_folder/page_18.png',
        'assets/PDF/output_folder/page_19.png',
        'assets/PDF/output_folder/page_20.png',
        'assets/PDF/output_folder/page_21.png',
        'assets/PDF/output_folder/page_22.png',
        'assets/PDF/output_folder/page_23.png',
        'assets/PDF/


/*
Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans

This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

*/

#ifndef SPU_SAMPLE_TASK_H
#define SPU_SAMPLE_TASK_H

#include "../PlatformDefinitions.h"
#include "LinearMath/btScalar.h"
#include "LinearMath/btVector3.h"
#include "LinearMath/btMatrix3x3.h"

#include "LinearMath/btAlignedAllocator.h"

enum
{
	CMD_SAMPLE_INTEGRATE_BODIES = 1,
	CMD_SAMPLE_PREDICT_MOTION_BODIES
};

ATTRIBUTE_ALIGNED16(struct) SpuSampleTaskDesc
{
	BT_DECLARE_ALIGNED_ALLOCATOR();

	uint32_t						m_sampleCommand;
	uint32_t						m_taskId;

	uint64_t 	m_mainMemoryPtr;
	int			m_sampleValue;

};

void	processSampleTask(void* userPtr, void* lsMemory);
void*	createSampleLocalStoreMemory();

#endif //SPU_SAMPLE_TASK_H