19, [6] = 54577 }
Bistooltip_wowtbc_bislists["Paladin"]["Retribution"]["RS"][11] = { ["slot_name"] = "Finger", ["enhs"] = { [1] = { ["type"] = "none", ["id"] = 0 }, [2] = { ["type"] = "item", ["id"] = 40111 } }, [1] = 50402, [2] = 54576, [3] = 50604, [4] = 50678, [5] = 50657, [6] = 50618 }
Bistooltip_wowtbc_bislists["Paladin"]["Retribution"]["RS"][12] = { ["slot_name"] = "Trinket", ["enhs"] = { }, [1] = 50706, [2] = 54590, [3] = 50351, [4] = 47131, [5] = 50363, [6] = 54569 }
Bistooltip_wowtbc_bislists["Paladin"]["Retribution"]["RS"][13] = { ["slot_name"] = "Weapon", ["enhs"] = { [1] = { ["type"] = "spell", ["id"] = 59621 }, [2] = { ["type"] = "item", ["id"] = 40111 }, [3] = { ["type"] = "none", ["id"] = 0 }, [4] = { ["type"] = "item", ["id"] = 40111 }, [5] = { ["type"] = "none", ["id"] = 0 }, [6] = { ["type"] = "item", ["id"] = 40111 } }, [1] = 49623, [2] = 50730, [3] = 50603, [4] = 50735, [5] = 50070, [6] = 51946 }
Bistooltip_wowtbc_bislists["Paladin"]["Retribution"]["RS"][14] = { ["slot_name"] = "Relic", ["enhs"] = { }, [1] = 50455, [2] = 47661, [3] = 42853, [4] = 42852, [5] = 45510, [6] = 40191 }
Bistooltip_wowtbc_bislists["Priest"]["Discipline"] = {};
Bistooltip_wowtbc_bislists["Priest"]["Discipline"]["PR"] = {};
Bistooltip_wowtbc_bislists["Priest"]["Discipline"]["T9"] = {};
Bistooltip_wowtbc_bislists["Priest"]["Discipline"]["T10"] = {};
Bistooltip_wowtbc_bislists["Priest"]["Discipline"]["RS"] = {};
Bistooltip_wowtbc_bislists["Priest"]["Discipline"]["PR"][1] = { ["slot_name"] = "Head", ["enhs"] = { [1] = { ["type"] = "item", ["id"] = 44876 }, [2] = { ["type"] = "item", ["id"] = 41401 }, [3] = { ["type"] = "none", ["id"] = 0 }, [4] = { ["type"] = "item", ["id"] = 39998 } }, [1] = 37294, [2] = 39295, [3] = 39514, [4] = 42553, [5] = 44909, [6] = 34339 }
Bistooltip_wowtbc_bislists["Priest"]["Discipline"]["PR"][2] = { ["slot_name"] = "Neck", ["enhs"] = { }, [1] = 40681, [2] = 44657, [3] = 39232, [4] = 42647, [5] = 42023, [6] = 37683 }
Bistooltip_wowtbc_bislists["Priest"]["Discipline"]["PR"][3] = { ["slot_name"] = "Shoulder", ["enhs"] = { [1] = { ["type"] = "item", ["i


-- Copyright 2024 Remy Blank <remy@c-space.org>
-- SPDX-License-Identifier: MIT

local io = require 'mlua.io'
local mem = require 'mlua.mem'
local testing = require 'mlua.testing'
local pico = require 'pico'
local standard_link = require 'pico.standard_link'

local Test = testing.Test

local function xip_hit_rate(hit1, acc1, hit2, acc2)
    if hit2 == 0xffffffff or acc2 == 0xffffffff then return 'N/A' end
    local hit, acc = hit2 - hit1, acc2 - acc1
    hit = hit + (hit >= 0 and 0.0 or 4294967296.0)
    acc = acc + (acc >= 0 and 0.0 or 4294967296.0)
    return ('%.1f%%'):format(100.0 * (hit / acc))
end

local pre_run = Test._pre_run
function Test:_pre_run()
    if not self._parent then pico.xip_ctr(true) end  -- Clear XIP counters
    pre_run(self)
    self._xip_hit, self._xip_acc = pico.xip_ctr()
end

local post_run = Test._post_


using Microsoft.ReportingServices.Common;
using Microsoft.ReportingServices.ReportProcessing;
using System;
using System.Diagnostics;
using System.IO;

namespace Microsoft.ReportingServices.ReportPublishing
{
	internal sealed class RdlObjectModelUpgradeStrategy : ReportUpgradeStrategy
	{
		private readonly bool m_renameInvalidDataSources;

		private readonly bool m_throwUpgradeException;

		internal RdlObjectModelUpgradeStrategy(bool renameInvalidDataSources, bool throwUpgradeException)
		{
			m_renameInvalidDataSources = renameInvalidDataSources;
			m_throwUpgradeException = throwUpgradeException;
		}

		internal override Stream Upgrade(Stream definitionStream)
		{
			Stream stream = RDLUpgrader.UpgradeToCurrent(definitionStream,


///////////////////////////////
    // Iterator constructors
    /////////////////////////////////////////////////////////////////////////

    /// Returns an iterator over the possibly contained value.
    ///
    /// The iterator yields one value if the result is [`Result::Ok`], otherwise none.
    ///
    /// # Examples
    ///
    /// Basic usage:
    ///
    /// ```
    /// let x: Result<u32, &str> = Ok(7);
    /// assert_eq!(x.iter().next(), Some(&7));
    ///
    /// let x: Result<u32, &str> = Err("nothing!");
    /// assert_eq!(x.iter().next(), None);
    /// ```
    #[inline]
    #[stable(feature = "rust1", since = "1.0.0")]
    pub fn iter(&self) -> Iter<'_, T> {
        Iter { inner: self.as_ref().ok() }
    }

    /// Returns a mutable iterator over the possibly contained value.
    ///
    /// The iterator yields one value if the result is [`Result::Ok`], otherwise none.
    ///
    /// # Examples
    ///
    /// Basic usage:
    ///
    /// ```
    /// let mut x: Result<u32, &str> = Ok(7);
    /// match x.iter_mut().next() {
    ///     Some(v) => *v = 40,
    ///     None => {},
    /// }
    /// assert_eq!(x, Ok(40));
    ///
    /// let mut x: Result<u32, &str> = Err("nothing!");
    /// assert_eq!(x.iter_mut().next(), None);
    /// ```
    #[inline]
    #[stable(feature = "rust1", since = "1.0.0")]
    pub fn iter_mut(&mut self) -> IterMut<'_, T> {
        IterMut { inner: self.as_mut().ok() }
    }

    ////////////////////////////////////////////////////////////////////////
    // Boolean operations on the values, eager and lazy
    /////////////////////////////////////////////////////////////////////////

    /// Returns `res` if the result is [`Ok`], otherwise returns the [`Err`] value of `self`.
    ///
    ///
    /// # Examples
    ///
    /// Basic usage:
    ///
    /// ```
    /// let x: Result<u32, &str> = Ok(2);
    /// let y: Result<&str, &str> = Err("late error");
    /// assert_eq!(x.and(y), Err("late error"));
    ///
    /// let x: Result<u32, &str> = Err("early error");
    /// let y: Result<&str, &str> = Ok("foo");
    /// assert_eq!(x.and(y), Err("early error"));
    ///
    /// let x: Result<u32, &str> = Err("not a 2");
    /// let y: Result<&str, &str> = Err("late error");
    /// assert_eq!(x.and(y), Err("not a 2"));
    ///
    /// let x: Result<u32, &str> = Ok(2);
    /// let y: Result<&str, &str> = Ok("different result type");
    /// assert_eq!(x.and(y), Ok("different result type"));
    /// ```
    #[inline]
    #[stable(feature = "rust1", since = "1.0.0")]
    pub fn and<U>(self, res: Result<U, E>) -> Result<U, E> {
        match self {
            Ok(_) => res,
            Err(e) => Err(e),
        }
    }

    /// Calls `op` if the result is [`Ok`], otherwise returns the [`Err`] value of `self`.
    ///
    ///
    /// This function can be used for control flow based on `Result` values.
    ///
    /// # Examples
    ///
    /// Basic usage:
    ///


119AFCC 80087204 100062AE */   sw        $v0, 0x10($s3)
/* 119AFD0 80087208 01004230 */  andi       $v0, $v0, 0x1
/* 119AFD4 8008720C 05004010 */  beqz       $v0, .Llevel_13_80087224
/* 119AFD8 80087210 00000000 */   nop
/* 119AFDC 80087214 46006292 */  lbu        $v0, 0x46($s3)
/* 119AFE0 80087218 00000000 */  nop
/* 119AFE4 8008721C 01004224 */  addiu      $v0, $v0, 0x1
.Llevel_13_80087220:
/* 119AFE8 80087220 460062A2 */  sb         $v0, 0x46($s3)
.Llevel_13_80087224:
/* 119AFEC 80087224 04000286 */  lh         $v0, 0x4($s0)
.Llevel_13_80087228:
/* 119AFF0 80087228 1400638E */  lw         $v1, 0x14($s3)
/* 119AFF4 8008722C 00000000 */  nop
/* 119AFF8 80087230 21186200 */  addu       $v1, $v1, $v0
/* 119AFFC 80087234 140063AE */  sw         $v1, 0x14($s3)
/* 119B000 80087238 0C000292 */  lbu        $v0, 0xC($s0)
/* 119B004 8008723C 00000000 */  nop
/* 119B008 80087240 FFFF4224 */  addiu      $v0, $v0, -0x1
/* 119B00C 80087244 961C0208 */  j          .Llevel_13_80087258
/* 119B010 80087248 0C0002A2 */   sb        $v0, 0xC($s0)
.Llevel_13_8008724C:
/* 119B014 8008724C 21206002 */  addu       $a0, $s3, $zero
.Llevel_13_80087250:
/* 119B018 80087250 5A49010C */  jal        func_80052568
/* 119B01C


:	.asciz "LDRH"
_szLDRH1:	.asciz "LDRH R"
_szLDRH2:	.asciz "LDRH \\"
_szLDRB:	.asciz "LDRB"
_szLDRSH:	.asciz "LDRSH"
_szLDRSB:	.asciz "LDRSB"
_szLDM:		.asciz "LDM"
_szLDMIA:	.asciz "LDMIA"
_szSTR:		.asciz "STR"
_szSTRH:	.asciz "STRH"
_szSTRB:	.asciz "STRB"
_szSTMIA:	.asciz "STMIA"

_szOK:		.asciz "OK"
_szBad:		.asciz "BAD"
_szRd:		.asciz "R^"
_szRn:		.asciz "R_"
_szC:		.asciz "C"
_szN:		.asciz "N"
_szV:		.asciz "V"
_szZ:		.asciz "Z"
_szGT:		.asciz "+"
_szGE:		.asciz ","
_szLT:		.asciz "-"
_szLE:		.asciz "."

.align 2
.end


tore: (key: TKey, value: TValue) => void;
  removeStored: (key: TKey) => void;
  clear?: () => void;
}
import Vue from "vue";
import { IVuety, Vuety } from "./core";

export function Data(target: Vue, propertyKey: string): any;
export function Data(factory?: () => any): any;
export function Data(this: Vue): any | undefined {
	function data(factory: () => any | undefined, target: IVuety, propertyKey: string) {
		Vuety("Data", target)(v => {
			if (!factory) {
				const val = v.getDefault(propertyKey);
				factory = () => val;
			}
			v.storeData(propertyKey, factory);
		});
	}

	if (arguments.length < 3) {
		const args = arguments;
		return function(this: IVuety) {
			data.apply(this, [args[0], ...Array.from(arguments)]);
		};
	} else {
		data.apply(this, [undefined, ...Array.from(arguments)]);
	}
	return;
}
import { describe, expect, test } from 'vitest';

import { mergeDefaults } from '../utils/mergeDefaults.js';
import {
    checkCircular,
    countNodes,
    countWords,
    createTrieRootFromList,
    findNode,
    has,
    isCircular,
    iteratorTrieWords,
} from './trie-util.js';

const oc = expect.objectContaining;

describe('Validate Util Functions', () => {
    test('createTriFromList', () => {
        const trie = createTrieRootFromList(words);
        expect(has(trie, 'sample')).toBe(true);
        expect(has(trie, 'not found')).toBe(false);
    });

    test('has', () => {
        const trie = createTrieRootFromList(words);
        // cspell:ignore sampl
        expect(has(trie, 'sample')).toBe(true);
        expect(has(trie, 'sampl')).toBe(false);
    });

    test('find', () => {
        const trie = createTrieRootFromList(words);
        expect(has(trie, 'sample')).toBe(true);
        // cspell:ignore sampl samp
        const n0 = findNode(trie, 'sample');
        const n1 = findNode(trie, 'sampl');
        const n2 = findNode(trie, 'samp');
        expect(n0?.f).toBeTruthy();
        expect(n1?.c?.['e']).toBe(n0);
        expect(n2?.c?.['l']).toBe(n1);
    });

    test('countNodes', () => {
        const trie = createTrieRootFromList(words);
        expect(countNodes(trie)).toBe(73);
    });

    test('isCircular', () => {
        const trie = createTrieRootFromList(words);
        expect(isCircular(trie)).toBe(false);
        const n = findNode(trie, 'samp');
        n && n.c && (n.c['x'] = trie);
        expect(isCircular(trie)).toBe(true);
    });

    test('checkCircular', () => {
        const trie = createTrieRootFromList(words);
        expect(isCircular(trie)).toBe(false);
        const cir = findNode(trie, 'sp');
        const n = findNode(trie, 'space');
        n && n.c && (n.c['s'] = cir || trie);
        const { ref } = checkCircular(trie);
        if (ref) ref.stack = [];
        expect(ref).toEqual(oc({ word: 'spaces', pos: 2 }));
    });

    test('countWords', () => {
        const trie = createTrieRootFromList(words);
        expect(countWords(trie)).toBe(19);
        const n = findNode(trie, 'samp');
        n && n.c && (n.c['x'] = trie);
        expect(isCircular(trie)).toBe(true);
        expect(countWords(trie)).toBe(19);
    });

    test('iteratorTrieWords', () => {
        const trie = createTrieRootFromList(words);
        expect([...iteratorTrieWords(trie)].join(' ')).toBe(


 hdr->setup_sects);
	print_num("Root flags", hdr->root_flags);
	print_num("Sys size", hdr->syssize);
	print_num("RAM size", hdr->ram_size);
	print_num("Video mode", hdr->vid_mode);
	print_num("Root dev", hdr->root_dev);
	print_num("Boot flag", hdr->boot_flag);
	print_num("Jump", hdr->jump);
	print_num("Header", hdr->header);
	if (hdr->header == KERNEL_V2_MAGIC)
		printf("%-20s  %s\n", "", "Kernel V2");
	else
		printf("%-20s  %s\n", "", "Ancient kernel, using version 100");
	print_num("Version", hdr->version);
	print_num("Real mode switch", hdr->realmode_swtch);
	print_num("Start sys seg", hdr->start_sys_seg);
	print_num("Kernel version", hdr->kernel_version);
	version = zimage_get_kernel_version(base_ptr,
					    (void *)state.bzimage_addr);
	if (version)
		printf("   @%p: %s\n", version, version);
	print_num("Type of loader", hdr->type_of_loader);
	show_loader(hdr);
	print_num("Load flags", hdr->loadflags);
	print_flags(load_flags, ARRAY_SIZE(load_flags), hdr->loadflags);
	print_num("Setup move size", hdr->setup_move_size);
	print_num("Code32 start", hdr->code32_start);
	print_num("Ramdisk image", hdr->ramdisk_image);
	print_num("Ramdisk size", hdr->ramdisk_size);
	print_num("Bootsect kludge", hdr->bootsect_kludge);
	print_num("Heap end ptr", hdr->heap_end_ptr);
	print_num("Ext loader ver", hdr->ext_loader_ver);
	print_num("Ext loader type", hdr->ext_loader_type);
	print_num("Command line ptr", hdr->cmd_line_ptr);
	if (show_cmdline && hdr->cmd_line_ptr) {
		printf("   ");
		/* Use puts() to avoid limits from CONFIG_SYS_PBSIZE */
		puts((char *)(ulong)hdr->cmd_line_ptr);
		printf("\n");
	}
	print_num("Initrd addr max", hdr->initrd_addr_max);
	print_num("Kernel alignment", hdr->kernel_alignment);
	print_num("Relocatable kernel", hdr->relocatable_kernel);
	print_num("Min alignment", hdr->min_alignment);
	if (hdr->min_alignment)
		printf("%-20s: %x\n", "", 1 << hdr->min_alignment);
	print_num("Xload flags", hdr->xloadflags);
	print_flags(xload_flags, ARRAY_SIZE(xload_flags), hdr->xloadflags);
	print_num("Cmdline size", hdr->cmdline_size);
	print_num("Hardware subarch", hdr->hardware_subarch);
	print_num64("HW subarch data", hdr->hardware_subarch_data);
	print_num("Payload offset", hdr->payload_offset);
	print_num("Payload length", hdr->payload_length);
	print_num64("Setup data", hdr->setup_data);
	print_num64("Pref address", hdr->pref_address);
	print_num("Init size", hdr->init_size);
	print_num("Handover offset", hdr->handover_offset);
	if (get_boot_protocol(hdr, false) >= 0x215)
		print_num("Kernel info offset", hdr->kernel_info_offset);
}

void zboot_start(ulong bzimage_addr, ulong bzimage_size, ulong initrd_addr,
		 ulong initrd_size, ulong base_addr, const char *cmdline)
{
	memset(&state, '\0', sizeof(state));

	state.bzimage_size = bzimage_size;
	state.initrd_addr = initrd_addr;
	state.initrd_size = initrd_size;
	if (base_addr) {
		state.base_ptr = map_sysmem(base_addr, 0);
		state.load_address = bzimage_addr;
	} else {
		state.bzimage_addr = bzimage_addr;
	}
	state.cmdline = cmdline;
}

void zboot_info(void)
{
	printf("Kernel loaded at %08lx, setup_base=%p\n",
	       state.load_address, state.base_ptr);
}


(255, 0, 20), thickness=2):
    """
    The function renders the specified text string in the image. This function does not return a
    value instead it modifies the input image.

    Args:
        input_frame: The source image, is an RGB image.
        txt: The specific text string for drawing.
        origin: Top-left corner of the text string in the image. The resolution should be normalized between 0-1
        fontscale: Font scale factor that is multiplied by the font-specific base size.
        color: Text Color. (BGR format)
        thickness: Thickness of the lines used to draw a text.
    """
    resolution = input_frame.shape
    origin = int(resolution[1] * origin[0]), int(resolution[0] * origin[1])
    font = cv.FONT_HERSHEY_SIMPLEX
    cv.putText(input_frame, txt, origin, font, fontscale,
               color, thickness, cv.LINE_AA)


'../common/test_initialization.dart';
import 'utils.dart';

void main() {
  internalBootstrapBrowserTest(() => testMain);
}

Future<void> testMain() async {
  setUpUnitTests(
    withImplicitView: true,
    setUpTestViewDimensions: false,
  );

  const ui.Rect region = ui.Rect.fromLTWH(0, 0, 400, 600);

  late ui.PictureRecorder recorder;
  late ui.Canvas canvas;

  setUp(() {
    recorder = ui.PictureRecorder();
    canvas = ui.Canvas(recorder, region);
  });

  tearDown(() {
  });

  test('draws points in all 3 modes', () async {
    final ui.Paint paint = ui.Paint();
    paint.strokeWidth = 2.0;
    paint.color = const ui.Color(0xFF00FF00);
    const List<ui.Offset> points = <ui.Offset>[
      ui.Offset(10, 10),
      ui.Offset(50, 10),
      ui.Offset(70, 70),
      ui.Offset(170, 70)
    ];
    canvas.drawPoints(ui.PointMode.points, points, paint);
    const List<ui.Offset> points2 = <ui.Offset>[
      ui.Offset(10, 110),
      ui.Offset(50, 110),
      ui.Offset(70, 170),
      ui.Offset(170, 170)
    ];
    canvas.drawPoints(ui.PointMode.lines, points2, paint);
    const List<ui.Offset> points3 = <ui.Offset>[
      ui.Offset(10, 210),
      ui.Offset(50, 210),
      ui.Offset(70, 270),
      ui.Offset(170, 270)
    ];
    canvas.drawPoints(ui.PointMode.polygon, points3, paint);

    await drawPictureUsingCurrentRenderer(recorder.endRecording());
    await matchGoldenFile('ui_canvas_draw_points.png', region: region);
  });

  test('draws raw points in all 3 modes', () async {
    final ui.Paint paint = ui.Paint();
    paint.strokeWidth = 2.0;
    paint.color = const ui.Color(0xFF0000FF);
    final Float32List points = offsetListToFloat32List(const <ui.Offset>[
      ui.Offset(10, 10),
      ui.Offset(50, 10),
      ui.Offset(70, 70),
      ui.Offset(170, 70)
    ]);
    canvas.drawRawPoints(ui.PointMode.points, points, paint);
    final Float32List points2 = offsetListToFloat32List(const <ui.Offset>[
      ui.Offset(10, 110),
      ui.Offset(50, 110),
      ui.Offset(70, 170),
      ui.Offset(170, 170)
    ]);
    canvas.drawRawPoints(ui.PointMode.lines, points2, paint);
    final Float32List points3 = offsetListToFloat32List(const <ui.Offset>[
      ui.Offset(10, 210),
      ui.Offset(50, 210),
      ui.Offset(70, 270),
      ui.Offset(170, 270)
    ]);
    canvas.drawRawPoints(ui.PointMode.polygon, points3, paint);

    await drawPictureUsingCurrentRenderer(recorder.endRecording());
    await matchGoldenFile('ui_canvas_draw_raw_points.png', region: region);
  });

  test('Should draw points with strokeWidth', () async {
    final ui.Paint nullStrokePaint =
      ui.Paint()..color = const ui.Color(0xffff0000);
    canvas.drawRawPoints(ui.PointMode.lines, Float32List.fromList(<double>[
      30.0, 20.0, 200.0, 20.0]), nullStrokePaint);
    final ui.Paint strokePaint1 = ui.Paint()
      ..strokeWidth = 1.0
      ..color = const ui.Color(0xff0000ff);
    canvas.drawRawPoints(ui.PointMode.lines, Float32List.fromList(<double>[
      30.0, 30.0, 200.0, 30.0]), strokePaint1);
    final ui.Paint strokePaint3 = ui.Paint()
      ..strokeWidth


onDTO> bundleRevisions = supervisor.getAgent()
			.getBundleRevisons();

		assertNotNull(bundleRevisions);
		assertEquals(4, bundleRevisions.size());

		List<RequirementDTO> reqs = bundleRevisions.get(3).requirements; // agent
		assertNotNull(reqs);
		assertTrue(reqs.size() > 0);
		assertEquals("osgi.wiring.package", reqs.get(0).namespace);
	}

	@Test
	public void testAgentGetBundleRevisionsById() throws Exception {
		List<BundleRevisionDTO> bundleRevisions = supervisor.getAgent()
			.getBundleRevisons(2, 3);

		assertNotNull(bundleRevisions);
		assertEquals(2, bundleRevisions.size());

		List<RequirementDTO> reqs = bundleRevisions.get(1).requirements; // agent
		assertNotNull(reqs);
		assertTrue(reqs.size() > 0);
		assertEquals("osgi.wiring.package", reqs.get(0).namespace);
	}

	@Test
	public void testAgentInstallBundle() throws Exception {
		String sha = supervisor.addFile(t3);
		BundleDTO bundle = supervisor.getAgent()
			.install(t3.getAbsolutePath(), sha);

		assertNotNull(bundle);
		assertEquals(4, bundle.id);
		assertEquals("bsn-3", bundle.symbolicName);
		assertEquals("3.0.0", bundle.version);
	}

	@Test
	public void testAgentInstallBundleWithData() throws Exception {
		BundleDTO bundle = supervisor.getAgent()
			.installWithData("FOO", IO.read(t3));

		assertNotNull(bundle);
		assertEquals(4, bundle.id);
		assertEquals("bsn-3", bundle.symbolicName);
		assertEquals("3.0.0", bundle.version);

		Bundle b = framework.getBundleContext()
			.getBundle("FOO");

		assertThat(b).isNotNull();
	}

	@Test
	public void testAgentInstallBundleWithDataAndNullLocation() throws Exception {
		BundleDTO bundle = supervisor.getAgent()
			.installWithData(null, IO.read(t3));

		assertNotNull(bundle);
		assertEquals(4, bundle.id);
		assertEquals("bsn-3", bundle.symbolicName);
		assertEquals("3.0.0", bundle.version);
		Bundle b = framework.getBundleContext()
			.getBundle("manual:" + bundle.symbolicName);

		assertThat(b).isNotNull();
	}

	@Test
	public void testAgentUpdateBundleWithData() throws Exception {
		BundleDTO bundle = supervisor.getAgent()
			.installWithData("FOO", IO.read(t4));

		Bundle b = framework.getBundleContext()
			.getBundle("FOO");

		assertThat(b).isNotNull();

		BundleDTO bt41 = supervisor.getAgent()
			.installWithData("FOO", IO.read(t41));

		assertThat(bt41.version).isEqualTo("4.1.0");
		assertThat(b.getVersion()
			.toString()).isEqualTo("4.1.0");
	}

	@Test
	public void testAgentUpdateBundleWithDataAndNullLocation() throws Exception {
		BundleDTO bt4 = supervisor.getAgent()
			.installWithData(null, IO.read(t4));

		Bundle b = framework.getBundleContext()
			.getBundle("manual:" + bt4.symbolicName);

		assertThat(b).isNotNull();

		BundleDTO bt41 = supervisor.getAgent()
			.installWithData(null, IO.read(t41));

		assertThat(bt41.version).isEqualTo("4.1.0");
		assertThat(b.getVersion()
			.toString()).isEqualTo("4.1.0");
	}

	@Test
	public void testAgentUpdateBundleWithWithNullLocationAndMultipleChoice() throws Exception {
		try {
			BundleDTO b4 = supervisor.getAgent()
				.installWithData("b4


c";
  --fa--fa: "\f07c\f07c"; }

.fa-album-collection-circle-user {
  --fa: "\e48f";
  --fa--fa: "\e48f\e48f"; }

.fa-candy {
  --fa: "\e3e7";
  --fa--fa: "\e3e7\e3e7"; }

.fa-bowl-hot {
  --fa: "\f823";
  --fa--fa: "\f823\f823"; }

.fa-soup {
  --fa: "\f823";
  --fa--fa: "\f823\f823"; }

.fa-flatbread {
  --fa: "\e40b";
  --fa--fa: "\e40b\e40b"; }

.fa-heart-circle-plus {
  --fa: "\e500";
  --fa--fa: "\e500\e500"; }

.fa-code-fork {
  --fa: "\e13b";
  --fa--fa: "\e13b\e13b"; }

.fa-city {
  --fa: "\f64f";
  --fa--fa: "\f64f\f64f"; }

.fa-signal-bars-weak {
  --fa: "\f691";
  --fa--fa: "\f691\f691"; }

.fa-signal-alt-1 {
  --fa: "\f691";
  --fa--fa: "\f691\f691"; }

.fa-microphone-lines {
  --fa: "\f3c9";
  --fa--fa: "\f3c9\f3c9"; }

.fa-microphone-alt {
  --fa: "\f3c9";
  --fa--fa: "\f3c9\f3c9"; }

.fa-clock-twelve {
  --fa: "\e358";
  --fa--fa: "\e358\e358"; }

.fa-pepper-hot {
  --fa: "\f816";
  --fa--fa: "\f816\f816"; }

.fa-citrus-slice {
  --fa: "\e2f5";
  --fa--fa: "\e2f5\e2f5"; }

.fa-sheep {
  --fa: "\f711";
  --fa--fa: "\f711\f711"; }

.fa-unlock {
  --fa: "\f09c";
  --fa--fa: "\f09c\f09c"; }

.fa-colon-sign {
  --fa: "\e140";
  --fa--fa: "\e140\e140"; }

.fa-headset {
  --fa: "\f590";
  --fa--fa: "\f590\f590"; }

.fa-badger-honey {
  --fa: "\f6b4";
  --fa--fa: "\f6b4\f6b4"; }

.fa-h4 {
  --fa: "\f86a";
  --fa--fa: "\f86a\f86a"; }

.fa-store-slash {
  --fa: "\e071";
  --fa--fa: "\e071\e071"; }

.fa-road-circle-xmark {
  --fa: "\e566";
  --fa--fa: "\e566\e566"; }

.fa-signal-slash {
  --fa: "\f695";
  --fa--fa: "\f695\f695"; }

.fa-user-minus {
  --fa: "\f503";
  --fa--fa: "\f503\f503"; }

.fa-mars-stroke-up {
  --fa: "\f22a";
  --fa--fa: "\f22a\f22a"; }

.fa-mars-stroke-v {
  --fa: "\f22a";
  --fa--fa: "\f22a\f22a"; }

.fa-champagne


ified     # 🐶 E2.0 dog face",
        "\uD83D\uDC36",
        "1F415                                      ; fully-qualified     # 🐕 E2.0 dog",
        "\uD83D\uDC15",
        "1F9AE                                      ; fully-qualified     # 🦮 E12.1 guide dog",
        "\uD83E\uDDAE",
        "1F415 200D 1F9BA                           ; fully-qualified     # 🐕🦺 E12.1 service dog",
        "\uD83D\uDC15\u200D\uD83E\uDDBA",
        "1F429                                      ; fully-qualified     # 🐩 E2.0 poodle",
        "\uD83D\uDC29",
        "1F43A                                      ; fully-qualified     # 🐺 E2.0 wolf",
        "\uD83D\uDC3A",
        "1F98A                                      ; fully-qualified     # 🦊 E4.0 fox",
        "\uD83E\uDD8A",
        "1F99D                                      ; fully-qualified     # 🦝 E11.0 raccoon",
        "\uD83E\uDD9D",
        "1F431                                      ; fully-qualified     # 🐱 E2.0 cat face",
        "\uD83D\uDC31",
        "1F408                                      ; fully-qualified     # 🐈 E2.0 cat",
        "\uD83D\uDC08",
        "1F981                                      ; fully-qualified     # 🦁 E2.0 lion",
        "\uD83E\uDD81",
        "1F42F                                      ; fully-qualified     # 🐯 E2.0 tiger face",
        "\uD83D\uDC2F",
        "1F405                                      ; fully-qualified     # 🐅 E2.0 tiger",
        "\uD83D\uDC05",
        "1F406                                      ; fully-qualified     # 🐆 E2.0 leopard",
        "\uD83D\uDC06",
        "1F434                                      ; fully-qualified     # 🐴 E2.0 horse face",
        "\uD83D\uDC34",
        "1F40E                                      ; fully-qualified     # 🐎 E2.0 horse",
        "\uD83D\uDC0E",
        "1F984                                      ; fully-qualified     # 🦄 E2.0 unicorn",
        "\uD83E\uDD84",
        "1F993                                      ; fully-qualified     # 🦓 E5.0 zebra",
        "\uD83E\uDD93",
        "1F98C                                      ; fully-qualified     # 🦌 E4.0 deer",
        "\uD83E\uDD8C",
        "1F42E                                      ; fully-qualified     # 🐮 E2.0 cow face",
        "\uD83D\uDC2E",
        "1F402                                      ; fully-qualified     # 🐂 E2.0 ox",
        "\uD83D\uDC02",
        "1F403                                      ; fully-qualified     # 🐃 E2.0 water buffalo",
        "\uD83D\uDC03",
        "1F404                                      ; fully-qualified     # 🐄 E2.0 cow",
        "\uD83D\uDC04",
        "1F437                                      ; fully-qualified     # 🐷 E2.0 pig face",
        "\uD83D\uDC37",
        "1F416                                      ; fully-qualified     # 🐖 E2.0 pig",
        "\uD83D\uDC16",
        "1F417                                      ; fully-qualified     # 🐗 E2.0 boar",
        "\uD83D\uDC17",


	add r1, sp, #0
	bl ov00_021EC11C
	str r0, [r4, #0x14]
	ldr r0, [sp, #4]
	str r0, [r4, #0x18]
	ldr r0, [sp]
	str r0, [r4, #0x1c]
	bl ov00_021EC210
	bl ov00_021EC8D8
	mov r0, #6
	str r0, [r4, #8]
	ldr r1, [sp]
	cmp r1, #7
	bhi _02228E32
	add r1, r1, r1
	add r1, pc
	ldrh r1, [r1, #6]
	lsl r1, r1, #0x10
	asr r1, r1, #0x10
	add pc, r1
_02228E02: ; jump table
	.short _02228E32 - _02228E02 - 2 ; case 0
	.short _02228E12 - _02228E02 - 2 ; case 1
	.short _02228E12 - _02228E02 - 2 ; case 2
	.short _02228E24 - _02228E02 - 2 ; case 3
	.short _02228E16 - _02228E02 - 2 ; case 4
	.short _02228E2E - _02228E02 - 2 ; case 5
	.short _02228E20 - _02228E02 - 2 ; case 6
	.short _02228E2E - _02228E02 - 2 ; case 7
_02228E12:
	str r0, [r4, #8]
	b _02228E32
_02228E16:
	bl ov00_021FA0D8
	mov r0, #6
	str r0, [r4, #8]
	b _02228E32
_02228E20:
	str r0, [r4, #8]
	b _02228E32
_02228E24:
	bl ov00_021ED9B4
	mov r0, #6
	str r0, [r4, #8]
	b _02228E32
_02228E2E:
	bl sub_020399EC
_02228E32:
	ldr r1, [sp, #4]
	ldr r0, _02228E4C ; =0xFFFFB1E0
	cmp r1, r0
	bge _02228E44
	ldr r0, _02228E50 ; =0xFFFF8AD1
	cmp r1, r0
	blt _02228E44
	mov r0, #6
	str r0, [r4, #8]
_02228E44:
	mov r0, #0
	add sp, #8
	pop {r4, pc}
	nop
_02228E4C: .word 0xFFFFB1E0
_02228E50: .word 0xFFFF8AD1
	thumb_func_end ov39_02228DA0

	thumb_func_start ov39_02228E54
ov39_02228E54: ; 0x02228E54
	push {r4, r5, r6, lr}
	add r5, r0, #0
	ldr r0, [r5]
	ldr r0, [r0]
	ldr r0, [r0, #4]
	bl sub_0202C6F4
	add r6, r0, #0
	ldr r0, [r5]
	ldr r0, [r0]
	ldr r0, [r0, #4]
	bl Save_SysInfo_Get
	add r4, r0, #0
	add r0, r6, #0
	bl sub_0202C08C
	add r0, r4, #0
	bl Save_SysInfo_GetDwcProfileId
	cmp r0, #0
	bne _02228E8E
	add r0, r6, #0
	bl sub_0203A040
	add r1, r0, #


x?) but we are anyway
    /// memory-bandwidth bound

    qreal prob = 0;

    // iterate each column, of which one amp (the diagonal) contributes
    qindex numIts = powerOf2(qureg.logNumColsPerNode);
    qindex numAmpsPerCol = powerOf2(qureg.numQubits);
    qindex firstDiagInd = util_getLocalIndexOfFirstDiagonalAmp(qureg);

    #pragma omp parallel for reduction(+:prob) if(qureg.isMultithreaded)
    for (qindex n=0; n<numIts; n++) {

        // i = local index of nth local diagonal element
        qindex i = fast_getQuregLocalIndexOfDiagonalAmp(n, firstDiagInd, numAmpsPerCol);
        prob += std::real(qureg.cpuAmps[i]);
    }

    return prob;
}

template <int NumQubits>
qreal cpu_statevec_calcProbOfMultiQubitOutcome_sub(Qureg qureg, vector<int> qubits, vector<int> outcomes) {

    assert_numTargsMatchesTemplateParam(qubits.size(), NumQubits);

    qreal prob = 0;

    // each iteration visits one amp per 2^qubits.size() amps
    // (>=1 since all qubits are in suffix, so qubits.size() <= suffix size)
    qindex numIts = qureg.numAmpsPerNode / powerOf2(qubits.size());

    auto sortedQubits = util_getSorted(qubits); // all in suffix
    auto qubitStateMask = util_getBitMask(qubits, outcomes);

    // use template param to compile-time unroll loop in insertBits()
    SET_VAR_AT_COMPILE_TIME(int, numBits, NumQubits, qubits.size());

    #pragma omp parallel for reduction(+:prob) if(qureg.isMultithreaded)
    for (qindex n=0; n<numIts; n++) {

        // i = nth local index where qubits are in the specified outcome state
        qindex i = insertBitsWithMaskedValues(n, sortedQubits.data(), numBits, qubitStateMask);

        prob += std::norm(qureg.cpuAmps[i]);
    }

    return prob;
}

template <int NumQubits>
qreal cpu_densmatr_calcProbOfMultiQubitOutcome_sub(Qureg qureg, vector<int> qubits, vector<int> outcomes) {

    assert_numTargsMatchesTemplateParam(qubits.size(), NumQubits);

    // note that qubits are only ket qubits for which the corresponding bra-qubit is in the suffix;
    // this function is not invoked upon nodes where prefix bra-qubits do not correspond to given outcomes

    qreal prob = 0;

    // each iteration visits one relevant diagonal amp (= one column)
    qindex numIts = powerOf2(qureg.logNumColsPerNode - qubits.size());
    qindex numAmpsPerCol = powerOf2(qureg.numQubits);
    qindex firstDiagInd = util_getLocalIndexOfFirstDiagonalAmp(qureg);

    auto sortedQubits = util_getSorted(qubits); // all in suffix, with corresponding bra's all in suffix
    auto qubitStateMask = util_getBitMask(qubits, outcomes);

    // use template param to compile-time unroll loop in insertBits()
    SET_VAR_AT_COMPILE_TIME(int, numBits, NumQubits, qubits.size());

    #pragma omp parallel for reduction(+:prob) if(qureg.isMultithreaded)
    for (qindex n=0; n<numIts; n++) {

        // i = local statevector index of nth local basis state with a contributing diagonal
        qindex i = insertBitsWithMaskedValues(n, sortedQubits.data(), numBits, qubitStateMask); // may be unrolled at compile-time

        // j = local, flat, density-matrix index


ols":{"loadError":"Eraro okazis dum la dosiera legado.","networkError":"Reta eraro okazis dum la dosiera alŝuto.","httpError404":"HTTP eraro okazis dum la dosiera alŝuto (404: dosiero ne trovita).","httpError403":"HTTP eraro okazis dum la dosiera alŝuto (403: malpermesita).","httpError":"HTTP eraro okazis dum la dosiera alŝuto (erara stato: %1).","noUrlError":"Alŝuta URL ne estas difinita.","responseError":"Malĝusta respondo de la servilo."},"find":{"find":"Serĉi","findOptions":"Opcioj pri Serĉado","findWhat":"Serĉi:","matchCase":"Kongruigi Usklecon","matchCyclic":"Cikla Serĉado","matchWord":"Tuta Vorto","notFoundMsg":"La celteksto ne estas trovita.","replace":"Anstataŭigi","replaceAll":"Anstataŭigi Ĉion","replaceSuccessMsg":"%1 anstataŭigita(j) apero(j).","replaceWith":"Anstataŭigi per:","title":"Serĉi kaj Anstataŭigi"},"fakeobjects":{"anchor":"Ankro","flash":"FlaŝAnimacio","hiddenfield":"Kaŝita kampo","iframe":"Enlinia Kadro (IFrame)","unknown":"Nekonata objekto"},"flash":{"access":"Atingi skriptojn","accessAlways":"Ĉiam","accessNever":"Neniam","accessSameDomain":"Sama domajno","alignAbsBottom":"Absoluta Malsupro","alignAbsMiddle":"Absoluta Centro","alignBaseline":"TekstoMalsupro","alignTextTop":"TekstoSupro","bgcolor":"Fona Koloro","chkFull":"Permesi tutekranon","chkLoop":"Iteracio","chkMenu":"Ebligi flaŝmenuon","chkPlay":"Aŭtomata legado","flashvars":"Variabloj por Flaŝo","hSpace":"Horizontala Spaco","properties":"Flaŝatributoj","propertiesTab":"Atributoj","quality":"Kvalito","qualityAutoHigh":"Aŭtomate alta","qualityAutoLow":"Aŭtomate malalta","qualityBest":"Plej bona","qualityHigh":"Alta","qualityLow":"Malalta","qualityMedium":"Meza","scale":"Skalo","scaleAll":"Montri ĉion","scaleFit":"Origina grando","scaleNoBorder":"Neniu bordero","title":"Flaŝatributoj","vSpace":"Vertikala Spaco","validateHSpace":"Horizontala Spaco devas esti nombro.","validateSrc":"Bonvolu entajpi la retadreson (URL)","validateVSpace":"Vertikala Spaco devas esti nombro.","windowMode":"Fenestra reĝimo","windowModeOpaque":"Opaka","windowModeTransparent":"Travidebla","windowModeWindow":"Fenestro"},"font":{"fontSize":{"label":"Grado","voiceLabel":"Tipara grado","panelTitle":"Tipara grado"},"label":"Tiparo","panelTitle":"Tipara nomo","voiceLabel":"Tiparo"},"forms":{"button":{"title":"Butonaj atributoj","text":"Teksto (Valoro)","type":"Tipo","typeBtn":"Butono","typeSbm":"Validigi (submit)","typeRst":"Remeti en la originstaton (Reset)"},"checkboxAndRadio":{"checkboxTitle":"Markobutonaj Atributoj","radioTitle":"Radiobutonaj Atributoj","value":"Valoro","selected":"Selektita","required":"Postulata"},"form":{"title":"Formularaj Atributoj","menu":"Formularaj Atributoj","action":"Ago","method":"Metodo","encoding":"Kodoprezento"},"hidden


size);
		} else {
			assertEquals(0,foundMax.size);
		}
		if( alg.canDetectMinimums() ) {
			assertEquals(min,foundMin.size);
		} else {
			assertEquals(0,foundMin.size);
		}
	}

	public void checkFor( int x , int y , QueueCorner list) {
		int numFound = 0;

		for( int i = 0; i < list.size; i++ ) {
			Point2D_I16 p = list.get(i);
			if( p.x == x && p.y == y )
				numFound++;
		}
		if( numFound > 1 )
			fail("Found multiple points of "+x+" "+y);
		else if( numFound == 0 )
			fail("Point "+x+" "+y+" was not found");
	}

	public void setPixel(int x, int y, boolean isMax, float intensity) {
		image.set(x,y,intensity);
		if( alg.getUsesCandidates() ) {
			if( isMax )
				candidatesMax.add(x,y);
			else
				candidatesMin.add(x,y);
		}
	}
}
/*
 * Copyright (c) 2021, Peter Abeles. All Rights Reserved.
 *
 * This file is part of BoofCV (http://boofcv.org).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package boofcv.alg.shapes;

/**
 * Structure that contains results from fitting a shape to a set of observations.
 *
 * @author Peter Abeles
 */
@SuppressWarnings({"NullAway.Init"})
public class FitData<Shape> {
	/**
	 * Description of the shape
	 */
	public Shape shape;
	/**
	 * Fitting error
	 */
	public double error;

	public FitData( Shape shape ) {
		this.shape = shape;
	}

	public FitData() {}
}
/*
 * Copyright (c) 2021, Peter Abeles. All Rights Reserved.
 *
 * This file is part of BoofCV (http://boofcv.org).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package boofcv.alg.flow;

import boofcv.struct.flow.ImageFlow;
import boofcv.struct.image.GrayF32;
import boofcv.struct.image.ImageType;

/**
 * Implementation of {@link HornSchunck} for {@link GrayF32}.
 *
 * @author Peter Abeles
 */
public class HornSchunck_F32 extends HornSchunck<GrayF32, GrayF32> {

	public HornSchunck_F32( float alpha, int numIterations ) {
		super(alpha, numIterations, ImageType.SB_F32);
	}

	@Override
	protected void computeDerivX( GrayF32 image1, GrayF32 image2, GrayF32 derivX ) {
		int w = image1.width - 1;
		int h = image1.height - 1;

		for (int y = 0; y < h; y++) {


/****************************************************************************
 * Copyright 2020-2021,2023 Thomas E. Dickey                                *
 * Copyright 1998-2008,2009 Free Software Foundation, Inc.                  *
 *                                                                          *
 * Permission is hereby granted, free of charge, to any person obtaining a  *
 * copy of this software and associated documentation files (the            *
 * "Software"), to deal in the Software without restriction, including      *
 * without limitation the rights to use, copy, modify, merge, publish,      *
 * distribute, distribute with modifications, sublicense, and/or sell       *
 * copies of the Software, and to permit persons to whom the Software is    *
 * furnished to do so, subject to the following conditions:                 *
 *                                                                          *
 * The above copyright notice and this permission notice shall be included  *
 * in all copies or substantial portions of the Software.                   *
 *                                                                          *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
 *                                                                          *
 * Except as contained in this notice, the name(s) of the above copyright   *
 * holders shall not be used in advertising or otherwise to promote the     *
 * sale, use or other dealings in this Software without prior written       *
 * authorization.                                                           *
 ****************************************************************************/

/****************************************************************************
 *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
 *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
 *     and: Thomas E. Dickey                        1996-on                 *
 *     and: Juergen Pfeifer                         2008                    *
 ****************************************************************************/

/*
**	lib_delwin.c
**
**	The routine delwin().
**
*/

#include <curses.priv.h>

MODULE_ID("$Id: lib_delwin.c,v 1.25 2023/10/21 11:12:44 tom Exp $")

static bool
cannot_delete(WINDOW *win)
{
    bool result = TRUE;

    if (IS_PAD(win)) {
	result = FALSE;
    } else {
	WINDOWLIST *p;
#if NCURSES_SP_FUNCS && defined(USE_SP_WINDOWLIST)
	SCREEN *sp = _nc_screen_of(win);
#endif

	for (each_window(SP_PARM, p)) {
	    if (&(p->win) == win) {
		result = FALSE;
	    } else if (IS_SUBWIN(&(p->win))
		       && p->win._parent == win) {
		result = TRUE;
		break;
	    }
	}
    }
    return result;
}

NCURSES_EXPORT(int)
delwin(WINDOW *win)
{
    int result = ERR;

    T((T_CALLED("delwin(%p)"), (void *) win));

    if (_nc_try_global(curses) == 0) {
	if (win == 0
	    || cannot_delete(win)) {
	    result = ERR;
	} else if (IS_PAD(win)) {
	    win->_parent = NULL;
	    result = _nc_freewin(win);
	} else {
#if NCURSES_SP_FUNCS
	    SCREEN *sp = _nc_screen_of(win);
#endif
	    if (IS_SUBWIN(win)) {
		touchwin(win->_parent);
	    } else if (CurScreen(SP_PARM) != 0) {
		touchwin(CurScreen(SP_PARM));
	    }
	    result = _nc_freewin(win);
	}
	_nc_unlock_global(curses);
    }
    returnCode(result);
}


ubtitle = Translation.SHUTDOWN_STOP_TITLE)

        this.taskId = null
    }

    private enum class State {
        WAITING_FOR_RIDES, COUNTDOWN
    }
}
package net.craftventure.core.effect

import net.craftventure.bukkit.ktx.area.SimpleArea
import net.craftventure.core.npc.NpcEntity
import net.craftventure.core.npc.tracker.NpcAreaTracker
import net.craftventure.core.utils.MathUtil
import net.craftventure.core.utils.spawnParticleX
import org.bukkit.Bukkit
import org.bukkit.Location
import org.bukkit.Material
import org.bukkit.Particle
import org.bukkit.entity.EntityType
import org.bukkit.util.Vector
import penner.easing.Quad

class SpaceMountainCannonEffect : BaseEffect("smcannon") {
    private val areaTracker: NpcAreaTracker
    private var state = State.IDLE
    private var ticksInState = 0

    private var forwardVector = Vector(0, 0, 0)
    private val rightVector = Vector(0, -1, 0)
    private val upVector = Vector(0, -1, 0)
    private val bankingVector = Vector(-1, 0, 0)
    private val particleLocation = Location(Bukkit.getWorld("world"), 245.0, 54.5, -762.5)
    private val cannonBlockList = ArrayList<CannonBlock>()

    init {
        areaTracker = NpcAreaTracker(SimpleArea("world", 178.0, 0.0, -835.0, 280.0, 255.0, -728.0))

        val banking = 0.0
        val workYaw = Math.toRadians(-90.0)//trackYawRadian + (Math.PI * 0.5);
        val workPitch = Math.toRadians(43.0)//trackPitchRadian + (Math.PI * 0.5);

        forwardVector = MathUtil.setYawPitchRadians(forwardVector, workYaw, workPitch)
        forwardVector.multiply(-1)
        forwardVector.y = forwardVector.y * -1
        forwardVector.normalize()

        upVector.setX(0)
        upVector.setY(-1)
        upVector.setZ(0)

        rightVector.setX(0)
        rightVector.setY(-1)
        rightVector.setZ(0)

        bankingVector.setX(-1)
        bankingVector.setY(0)
        bankingVector.setZ(0)
        MathUtil.setYawPitchRadians(bankingVector, workYaw, 0.0)
        MathUtil.rotate(rightVector, bankingVector, -banking * MathUtil.DEGTORAD)
        rightVector.crossProduct(forwardVector)
        rightVector.normalize()

        MathUtil.rotate(upVector, bankingVector, -banking * MathUtil.DEGTORAD - Math.PI * 0.5)
        upVector.crossProduct(forwardVector)
        upVector.normalize()

        addRedBlock(Location(Bukkit.getWorld("world"), 247.5, 54.0, -765.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 246.5, 55.0, -765.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 246.5, 56.0, -765.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 245.5, 56.0, -765.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 245.5, 57.0, -764.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 244.5, 57.0, -764.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 244.5, 57.0, -763.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 244.5, 57.0, -762.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 243.5, 57.0, -762.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 244.5, 57.0, -761.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 244.5, 57.0, -760.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 245.5, 57.0, -760.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 245.5, 56.0, -759.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 246.5, 56.0, -759.5))
        addRedBlock(Location(Bukkit.getWorld("world"), 246.5, 55.


= literal .. string.format(" (max %d bytes large)", sz)
  end
  return literal
end

local function parse_params_schema(params, schema, schema_readable)
  if params == nil then
    return nil, format_error("parse_params_schema")
  end

  local i = 0
  while true do
    local p = params[i]
    if p.key == nil then
      break
    end
    local key = ffi_str(p.key)
    if schema then
      -- TODO: don't support same key with different types for now
      -- prefer string type over integer types
      local typ = tonumber(p.data_type)
      if schema[key] then
        schema[alter_type_key] = schema[alter_type_key] or {}
        schema[alter_type_key][key] = typ
      else
        schema[key] = typ
      end
    end
    -- if schema_return_size then -- only non-ptr string types are needed actually
    --   schema_return_size[key] = tonumber(p.return_size)
    -- end
    if schema_readable then
      table.insert(schema_readable, { key, readable_data_type(p) })
    end
    i = i + 1
  end
  return schema
end

local param_maps_set, param_maps_get = {}, {}

local function get_params_func(typ, field)
  local typ_lower = typ:sub(5):lower()
  if typ_lower:sub(-4) == "_ctx" then
    typ_lower = typ_lower:sub(0, -5)
  end
  -- field name for indexing schema, usually the (const) one created by
  -- EVP_TYP_fetch or EVP_get_typebynam,e
  field = field or "algo"

  local cf_settable = C[typ .. "_settable_params"]
  local settable = function(self, raw)
    local k = self[field]
    if raw and param_maps_set[k] then
      return param_maps_set[k]
    end

    local param = cf_settable(self.ctx)
    -- no params, this is fine, shouldn't be regarded as an error
    if param == nil then
      param_maps_set[k] = {}
      return {}
    end
    local schema, schema_reabale = {}, raw and nil or {}
    parse_params_schema(param, schema, schema_reabale)
    param_maps_set[k] = schema

    return raw and schema or schema_reabale
  end

  local cf_set = C[typ .. "_set_params"]
  local set = function(self, params)
    if not param_maps_set[self[field]] then
      local ok, err = self:settable_params()
      if not ok then
        return false, typ_lower .. ":set_params: " .. err
      end
    end

    local oparams, err = construct(params, nil, param_maps_set[self[field]])
    if err then
      return false, typ_lower .. ":set_params: " .. err
    end

    if cf_set(self.ctx, opar


aee05ec1ad79_1.dc46c4a8ed96f7a9f4add72b9b99f52b.jpeg?

odnHeight=100&odnWidth=100&odnBg=FFFFFF","mediumImage":"https

://i5.walmartimages.com/asr/50b494a6-6033-49b6-adf6-

aee05ec1ad79_1.dc46c4a8ed96f7a9f4add72b9b99f52b.jpeg?

odnHeight=180&odnWidth=180&odnBg=FFFFFF","largeImage":"https:

//i5.walmartimages.com/asr/50b494a6-6033-49b6-adf6-

aee05ec1ad79_1.dc46c4a8ed96f7a9f4add72b9b99f52b.jpeg?

odnHeight=450&odnWidth=450&odnBg=FFFFFF","entityType":"SECOND

ARY"},

{"thumbnailImage":"https://i5.walmartimages.com/asr/87e3b944

-8d04-4c48-b77e-

820de426d84e_1.4f6e9b92373ef9e176a12bb8b0a8160a.jpeg?

odnHeight=100&odnWidth=100&odnBg=FFFFFF","mediumImage":"https

://i5.walmartimages.com/asr/87e3b944-8d04-4c48-b77e-

820de426d84e_1.4f6e9b92373ef9e176a12bb8b0a8160a.jpeg?

odnHeight=180&odnWidth=180&odnBg=FFFFFF","largeImage":"https:

//i5.walmartimages.com/asr/87e3b944-8d04-4c48-b77e-

820de426d84e_1.4f6e9b92373ef9e176a12bb8b0a8160a.jpeg?

odnHeight=450&odnWidth=450&odnBg=FFFFFF","entityType":"SECOND

ARY"},

{"thumbnailImage":"https://i5.walmartimages.com/asr/99bc07d0

-2fe1-437c-8d7f-

e7f3be508a70_1.624ba8166880ad766e33f443af0021a8.jpeg?

odnHeight=100&odnWidth=100&odnBg=FFFFFF","mediumImage":"https

://i5.walmartimages.com/asr/99bc07d0-2fe1-437c-8d7f-

e7f3be508a70_1.624ba8166880ad766e33f443af0021a8.jpeg?

odnHeight=180&odnWidth=180&odnBg=FFFFFF","largeImage":"https:

//i5.walmartimages.com/asr/99bc07d0-2fe1-437c-8d7f-

e7f3be508a70_1.624ba8166880ad766e33f443af0021a8.jpeg?

odnHeight=450&odnWidth=450&odnBg=FFFFFF","entityType":"SECOND

ARY"},

{"thumbnailImage":"https://i5.walmartimages.com/asr/c0f6dd4f-

5600-42e7-baf5-

a9164a207abf_1.fcd007afc34b1640a6f61b35276189fe.jpeg?

odnHeight=100&odnWidth=100&odnBg=FFFFFF","mediumImage":"https

://i5.walmartimages.com/asr/c0f6dd4f-5600-42e7-baf5-

a9164a207abf_1.fcd007afc34b1640a6f61b35276189fe.jpeg?

odnHei


e(service_id) = service_id {
            query = query.filter(grid_property_definition::service_id.eq(service_id));
        } else {
            query = query.filter(grid_property_definition::service_id.is_null());
        }

        let defns = query
            .load::<GridPropertyDefinition>(self.conn)
            .map(Some)
            .map_err(|err| {
                SchemaStoreError::InternalError(InternalError::from_source(Box::new(err)))
            })?
            .ok_or_else(|| {
                SchemaStoreError::NotFoundError(format!(
                    "Could not get all definitions from storage for schema: {}",
                    schema_name,
                ))
            })?
            .into_iter()
            .map(PropertyDefinition::from)
            .collect();

        Ok(defns)
    }
}

#[cfg(feature = "sqlite")]
impl<'a> ListPropertyDefinitionsWithSchemaNameOperation
    for SchemaStoreOperations<'a, diesel::sqlite::SqliteConnection>
{
    fn list_property_definitions_with_schema_name(
        &self,
        schema_name: &str,
        service_id: Option<&str>,
    ) -> Result<Vec<PropertyDefinition>, SchemaStoreError> {
        let mut query = grid_property_definition::table
            .into_boxed()
            .select(grid_property_definition::all_columns)
            .filter(
                grid_property_definition::schema_name
                    .eq(&schema_name)
                    .and(grid_property_definition::end_commit_num.eq(MAX_COMMIT_NUM)),
            );

        if let Some(service_id) = service_id {
            query = query.filter(grid_property_definition::service_id.eq(service_id));
        } else {
            query = query.filter(grid_property_definition::service_id.is_null());
        }

        let defns = query
            .load::<GridPropertyDefinition>(self.conn)
            .map(Some)
            .map_err(|err| {
                SchemaStoreError::InternalError(InternalError::from_source(Box::new(err)))
            })?
            .ok_or_else(|| {
                SchemaStoreError::NotFoundError(format!(
                    "Could not get all definitions from storage for schema: {}",
                    schema_name,
                ))
            })?
            .into_iter()
            .map(PropertyDefinition::from)
            .collect();

        Ok(defns)
    }
}
use crate::world::{World, EntityId, Tile, GroundKind, TerrainKind, RoofKind};
use crate::terminal::Scene;
use crate::terminal;
use crate::geom::Vec;
use termion::color::AnsiValue;

pub fn render(world: &World, player_id: &EntityId) -> Box<Scene> {
    let mut scene = Box::new(Scene::default());
    let player = world.entities.get(&player_id).unwrap();
    let player_roof = world.tiles.get(player.pos).roof;
    let offset = player.pos - Vec::new(terminal::SCREEN_W as i32/2, terminal::SCREEN_H as i32/2);
    for sx in 0 .. terminal::SCREEN_W {
        for sy in 0 .. terminal::SCREEN_H {
            let world_pos = offset + Vec::new(sx as i32, sy as i32);
            let gridline_x = if world_pos.x % 32 == 0 { 1 } else { 0 };
            let gridline_y = if world_pos.y % 32 == 0 { 1 } else { 0 };
            let back_ch = [' ', '|', '-', '+'][gridline_x+gridline_y*2];
            scene.set_point(sx as i32, sy as i32, back_ch, AnsiValue::rgb(5, 5, 5), Some(AnsiValue::rgb(0, 0, 0)));
            let tile = world.tiles.get(world_pos);
            render_tile


de" just mean "dimmed out"
        hide_dotfiles = false,
        hide_gitignored = true,
      },
      bind_to_cwd = true, -- This option is very important to mimic the behaviour just like VsCode
      follow_current_file = { enabled = true },
      use_libuv_file_watcher = true,
    },
    window = {
      mappings = {
        ["<space>"] = "none",
      },
    },
    default_component_configs = {
      indent = {
        with_expanders = true, -- if nil and file nesting is enabled, will enable expanders
        expander_collapsed = "",
        expander_expanded = "",
        expander_highlight = "NeoTreeExpander",
      },
    },
  }
}


int_new2(...)
		return self
	end
	function library.CreateGeneric6DofSpringConstraint2(...)
		local self = setmetatable({}, META)
		self.ptr = CLIB.btGeneric6DofSpringConstraint_new(...)
		return self
	end
	function META:SetDamping(...)
		return CLIB.btGeneric6DofSpringConstraint_setDamping(self.ptr, ...)
	end
	function META:IsSpringEnabled(...)
		return CLIB.btGeneric6DofSpringConstraint_isSpringEnabled(self.ptr, ...)
	end
	function META:GetStiffness(...)
		return CLIB.btGeneric6DofSpringConstraint_getStiffness(self.ptr, ...)
	end
	function META:EnableSpring(...)
		return CLIB.btGeneric6DofSpringConstraint_enableSpring(self.ptr, ...)
	end
	function META:GetDamping(...)
		return CLIB.btGeneric6DofSpringConstraint_getDamping(self.ptr, ...)
	end
	function META:SetEquilibriumPoint(...)
		return CLIB.btGeneric6DofSpringConstraint_setEquilibriumPoint(self.ptr, ...)
	end
	function META:SetEquilibriumPoint2(...)
		return CLIB.btGeneric6DofSpringConstraint_setEquilibriumPoint2(self.ptr, ...)
	end
	function META:SetEquilibriumPoint3(...)
		return CLIB.btGeneric6DofSpringConstraint_setEquilibriumPoint3(self.ptr, ...)
	end
	function META:GetEquilibriumPoint(...)
		return CLIB.btGeneric6DofSpringConstraint_getEquilibriumPoint(self.ptr, ...)
	end
	function META:SetStiffness(...)
		return CLIB.btGeneric6DofSpringConstraint_setStiffness(self.ptr, ...)
	end
end
do -- btSphereBoxCollisionAlgorithm
	local META = {}
	library.metatables.btSphereBoxCollisionAlgorithm = META
	META.__index = function(s, k) return META[k] end
	function library.CreateSphereBoxCollisionAlgorithm(...)
		local self = setmetatable({}, META)
		self.ptr = CLIB.btSphereBoxCollisionAlgorithm_new(...)
		return self
	end
	function META:GetSpherePenetration(...)
		return CLIB.btSphereBoxCollisionAlgorithm_getSpherePenetration(self.ptr, ...)
	end
	function META:GetSphereDistance(...)
		return CLIB.btSphereBoxCollisionAlgorithm_getSphereDistance(self.ptr, ...)
	end
end
do -- btSoftBody_Config_setKSS_SPLT
	local META = {}
	library.metatables.btSoftBody_Config_setKSS_SPLT = META
	META.__index = function(s, k) return META[k] end
	function META:CL(...)
		return CLIB.btSoftBody_Config_setKSS_SPLT_CL(self.ptr, ...)
	end
end
do -- btSoftBody_Config_setKSR_SPLT
	local META = {}
	library.metatables.btSoftBody_Config_setKSR_SPLT = META
	META.__index = function(s, k) return META[k] end
	function META:CL(...)
		return CLIB.btSoftBody_Config_setKSR_SPLT_CL(self.ptr, ...)
	end
end
do -- btSoftBody_ImplicitFnWrapper
	local META = {}
	library.metatables.btSoftBody_ImplicitFnWrapper = META
	META.__index = function(s, k) return META[k] end
	function library.CreateSoftBody_ImplicitFnWrapper(...)
		local self = setmetatable({}, META)
		self.ptr = CLIB.btSoftBody_ImplicitFnWrapper_new(...)
		return self
	end
end


--
-- help.lua
-- User help, displayed on /help option.
-- Copyright (c) 2002-2008 Jason Perkins and the Premake project
--

	function premake.showhelp()

		-- display the basic usage
		printf("")
		printf("Usage: genie [options] action [arguments]")
		printf("")

		-- display all options
		printf("OPTIONS")
		printf("")
		for option in premake.option.each() do
			local trigger = option.trigger
			local description = option.description
			if (option.value) then trigger = trigger .. "=" .. option.value end
			if (option.allowed)


mark" href="#shell" id="shell">#

所谓应用包名, 是唯一确定应用的标识. 例如微信的包名是"com.tencent.mm", QQ的包名是"com.tencent.mobileqq".
要获取一个应用的包名, 可以通过函数getPackageName(appName)获取. 参见帮助->其他一般函数.

pm命令#

pm命令用于管理应用程序, 例如卸载应用、冻结应用等.
以下命令均以"pm "开头, 例如"shell(\"pm disable com.tencent.mm\");"(冻结微信)

list packages [options] filter#

输出所有软件包, 或者, 仅输出包名称包含 filter 中的文本的软件包.
选项：

-f：查看它们的关联文件.

-d：进行过滤以仅显示已停用的软件包.

-e：进行过滤以仅显示已启用的软件包.

-s：进行过滤以仅显示系统软件包.

-3：进行过滤以仅显示第三方软件包.

-i：查看软件包的安装程序.

-u：也包括卸载的软件包.

--user user_id：要查询的用户空间.

list permission-groups#

输出所有已知的权限组.

list permissions [options] group#

输出所有已知权限, 或者, 仅输出 group 中的权限.
选项：

-g：按组加以组织.

-f：输出所有信息.

-s：简短摘要.

-d：仅列出危险权限.

-u：仅列出用户将看到的权限.

list instrumentation [options]#

列出所有测试软件包.
选项：

-f：列出用于测试软件包的 APK 文件.

target_package：列出仅用于此应用的测试软件包.

list features#

输出系统的所有功能.

<h


mesh);
    //MP.RefineIfNeeded();
    //Gr.Set(tri_mesh.face.begin(),tri_mesh.face.end());
}

void TW_CALL BatchProcess(void *)
{
    DoBatchProcess();
}

void TW_CALL SmoothField(void *)
{
//    //tri_mesh.SplitFolds();
//    MeshPrepocess<FieldTriMesh>::SplitFolds(tri_mesh);
//    //tri_mesh.RemoveFolds();
//    MeshPrepocess<FieldTriMesh>::RemoveFolds(tri_mesh);
//    //tri_mesh.RemoveSmallComponents();
//    MeshPrepocess<FieldTriMesh>::RemoveSmallComponents(tri_mesh);
//    MP.SplitFolds();
//    MP.RemoveFolds();
//    MP.RemoveSmallComponents();

    //vcg::tri::io::ExporterPLY<FieldTriMesh>::Save(tri_mesh,"test0.ply");
    //tri_mesh.SmoothField(FieldParam);
    MeshFieldSmoother<FieldTriMesh>::SmoothField(tri_mesh,FieldParam);
    //vcg::tri::io::ExporterPLY<FieldTriMesh>::Save(tri_mesh,"test1.ply");
    drawfield=true;

    //Gr.Set(tri_mesh.face.begin(),tri_mesh.face.end());
}

#ifdef MIQ_QUADRANGULATE
void TW_CALL MiqQuadrangulate(void *)
{

    vcg::tri::MiQParametrizer<FieldTriMesh>::MIQParametrize(tri_mesh,MiqP);//,MaxFeature);
    vcg::tri::Quadrangulator<FieldTriMesh,PMesh> Quadr;

    std::cout<<"Quadrangulating"<<std::endl;
    FieldTriMesh splitted_mesh;
    vcg::tri::Append<FieldTriMesh,FieldTriMesh>::Mesh(splitted_mesh,tri_mesh);
    std::vector< std::vector< short int> > AxisUV;

    Quadr.Quadrangulate(splitted_mesh,quad_mesh,AxisUV,false);
    quadrangulated=true;
    quad_mesh.UpdateAttributes();
    vcg::tri::Allocator<PMesh>::CompactEveryVector(quad_mesh);
    std::cout<<"Num Faces: "<<quad_mesh.face.size()<<std::endl;
    vcg::tri::io::ExporterOBJ<PMesh>::Save(quad_mesh,"quadrangulated.obj",vcg::tri::io::Mask::IOM_BITPOLYGONAL);
}
#endif

void TW_CALL SaveData(void *)
{
    SaveAllData();
}

void TW_CALL AutoSetupField(void *)
{
    MeshFieldSmoother<FieldTriMesh>::AutoSetupParam(tri_mesh,FieldParam);
}

void TW_CALL ErodeDilateFeatureStep(void *)
{
    tri_mesh.ErodeDilate(feature_erode_dilate);
    //MP.ErodeDilate(feature_erode_dilate);
}

void SetFieldBarSizePosition(QWidget *w)
{
    int params[2];
    params[0] = QTDeviceWidth(w) / 3;
    params[1] = QTDeviceHeight(w) / 1.8;
    TwSetParam(barQuad, NULL, "size", TW_PARAM_INT32, 2, params);
    params[0] = QTLogicalToDevice(w, 10);
    params[1] = 30;//QTDeviceHeight(w) - params[1] - QTLogicalToDevice(w, 10);
    TwSetParam(barQuad, NULL, "position", TW_PARAM_INT32, 2, params);
}

void InitFieldBar(QWidget *w)
{
    barQuad = TwNewBar("QuadWild");

    SetFieldBarSizePosition(w);

	TwAddVarRW(barQuad,"sharp_feature_thr",TW_TYPE_DOUBLE, &sharp_feature_thr," label='Sharp Degree'");
    TwAddVarRW(barQuad,"LimitConcave",TW_TYPE_DO


/ConstantProductPool.spec#L252) |
| **selector**      | [`selector`](https://github.com/Certora/Examples/blob/master/DEFI/ERC20/certora/specs/ERC20Fixed.spec#L92) |
| **sig**           | [`sig`](https://github.com/Certora/Examples/blob/master/DEFI/ERC20/certora/specs/ERC20Fixed.spec#L92) |
| **storage**       | [of a contract](https://github.com/Certora/Examples/blob/master/CVLByExample/Storage/certora/specs/storage.spec#L86), [of a ghost](https://github.com/Certora/Examples/blob/master/CVLByExample/Storage/certora/specs/storage.spec#L149), [of nativeBalances](https://github.com/Certora/Examples/blob/master/CVLByExample/Storage/certora/specs/storage.spec#L116),
 [full storage](https://github.com/Certora/Examples/blob/master/CVLByExample/Storage/certora/specs/storage.spec#L106), [`laststorage`](https://github.com/Certora/Examples/blob/master/CVLByExample/Storage/certora/specs/storage.spec#L106), [direct storage access](https://github.com/Certora/Examples/blob/master/CVLByExample/Immutable/Immutable.spec#L16),
 [accessing struct fields](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/DirectStorageAccessToFields/RootStruct.spec#L9) |
| **struct**        | [struct return type](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L47),
 `struct` in `methods` block: [struct parameter](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L23), [struct return type](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L19),
 [returning a struct as a tuple](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L21),
 `struct` in a `CVL` function: [struct parameter to a CVL function](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L36),
 [struct return type of a CVL function](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L47), [returning struct as a tuple](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L53),
 [assignment to struct](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L98), [Assigning struct to a tuple](https://github.com/Certora/Examples/blob/master/CVLByExample/Types/Structs/BankAccounts/certora/specs/structs.spec#L77) |
| **use**           | `rule`: [with filters](https://github.com/Certora/Examples/blob/master/CVLByExample/Import/certora/specs/sub.spec#L32), [overriding imported filters](https://github.com/Certora/Examples/blob/master/CVLByExample/Impor


002D1588  7C 65 1B 78 */	mr r5, r3
/* 802D592C 002D158C  40 82 00 30 */	bne lbl_802D595C
/* 802D5930 002D1590  3C 60 80 57 */	lis r3, lbl_8056BC40@ha
/* 802D5934 002D1594  88 03 BC 40 */	lbz r0, lbl_8056BC40@l(r3)
/* 802D5938 002D1598  28 00 00 02 */	cmplwi r0, 2
/* 802D593C 002D159C  41 80 00 18 */	blt lbl_802D5954
/* 802D5940 002D15A0  3C 60 00 08 */	lis r3, 0x00080001@ha
/* 802D5944 002D15A4  7F A5 EB 78 */	mr r5, r29
/* 802D5948 002D15A8  38 63 00 01 */	addi r3, r3, 0x00080001@l
/* 802D594C 002D15AC  38 9F 00 80 */	addi r4, r31, 0x80
/* 802D5950 002D15B0  4B FE 75 D9 */	bl LogMsg_1
lbl_802D5954:
/* 802D5954 002D15B4  38 60 00 00 */	li r3, 0
/* 802D5958 002D15B8  48 00 00 58 */	b lbl_802D59B0
lbl_802D595C:
/* 802D595C 002D15BC  80 9E 00 00 */	lwz r4, 0(r30)
/* 802D5960 002D15C0  38 60 00 01 */	li r3, 1
/* 802D5964 002D15C4  80 1E 00 04 */	lwz r0, 4(r30)
/* 802D5968 002D15C8  90 85 00 04 */	stw r4, 4(r5)
/* 802D596C 002D15CC  90 05 00 08 */	stw r0, 8(r5)
/* 802D5970 002D15D0  80 9E 00 08 */	lwz r4, 8(r30)
/* 802D5974 002D15D4  80 1E 00 0C */	lwz r0, 0xc(r30)
/* 802D5978 002D15D8  90 85 00 0C */	stw r4, 0xc(r5)
/* 802D597C 002D15DC  90 05 00 10 */	stw r0, 0x10(r5)
/* 802D5980 002D15E0  80 9E 00 10 */	lwz r4, 0x10(r30)
/* 802D5984 002D15E4  80 1E 00 14 */	lwz r0, 0x14(r30)
/* 802D5988 002D15E8  90 85 00 14 */	stw r4, 0x14(r5)
/* 802D598C 002D15EC  90 05 00 18 */	stw r0, 0x18(r5)
/* 802D5990 002D15F0  80 9E 00 18 */	lwz r4, 0x18(r30)
/* 802D5994 002D15F4  80 1E 00 1C */	lwz r0, 0x1c(r30)
/* 802D5998 002D15F8  90 85 00 1C */	stw r4, 0x1c(r5)
/* 802D599C 002D15FC  90 05 00 20 */	stw r0, 0x20(r5)
/* 802D59A0 002D1600  80 9E 00 20 */	lwz r4, 0x20(r30)
/* 802D59A4 002D1604  80 1E 00 24 */	lwz r0, 0x24(r30)
/* 802D59A8 002D1608  90 85 00 24 */	stw r4, 0x24(r5)


import { registry } from "@web/core/registry";
import tourUtils from "@website_sale/js/tours/tour_utils";

registry.category("web_tour.tours").add("shop_checkout_address_ec", {
    test: true,
    url: "/shop",
    steps: () => [
        ...tourUtils.addToCart({ productName: "Test Product" }),
        tourUtils.goToCart({ quantity: 1 }),
        {
            content: "Go to checkout",
            trigger: "a:contains('Checkout')",
        },
        {
            content: "Check that VAT field is present",
            trigger: "label:contains('Identification Type')",
            isCheck: true,
        },
        {
            content: "Check that VAT field is present",
            trigger: "label:contains('Identification Number')",
            isCheck: true,
        },
    ],
});
/** @odoo-module **/

import { KanbanController } from "@web/views/kanban/kanban_controller";
import { useBus, useService } from "@web/core/utils/hooks";
import { useRef } from "@odoo/owl";

export class HrFleetKanbanController extends KanbanController {
    setup() {
        super.setup(...arguments);
        this.uploadFileInput = useRef("uploadFileInput");
        this.uploadService = useService("file_upload");
        useBus(
            this.uploadService.bus,
            "FILE_UPLOAD_LOADED",
            () => {
                this.model.load();
            },
        );
    }

    async onInputChange(ev) {
        if (!ev.target.files) {
            return;
        }
        this.uploadService.upload(
            "/web/binary/upload_attachment",
            ev.target.files,
            {
                buildFormData: (formData) => {
                    formData.append("model", "fleet.vehicle.assignation.log");
                    formData.append("id", this.props.context.active_id);
                },
            },
        );
        ev.target.value = "";
    }
}
/** @odoo-module */
import { patch } from "@web/core/utils/patch";
import { Order } from "@point_of_sale/app/store/models";

patch(Order.prototype, {
    canBeSimplifiedInvoiced() {
        return (
            this.pos.config.is_spanish &&
            this.env.utils.roundCurrency(this.get_total_with_tax()) <
                this.pos.config.l10n_es_simplified_invoice_limit
        );
    },
    wait_for_push_order() {
        return this.pos.config.is_spanish ? true : super.wait_for_push_order(...arguments);
    },
    export_as_JSON() {
        const json = super.export_as_JSON(...arguments);
        if (this.pos.config.is_spanish) {
            json.is_l10n_es_simplified_invoice = this.is_l10n_es_simplified_invoice;
        }
        return json;
    },
});
/** @odoo-module */

import * as ErrorPopup from "@point_of_sale/../tests/tours/helpers/ErrorPopupTourMethods";
import * as ProductScreen from "@point_of_sale/../tests/tours/helpers/ProductScreenTourMethods";
import * as ReceiptScreen from "@point_of_sale/../tests/tours/helpers/ReceiptScreenTourMethods";
import * as PaymentScreen from "@point_of_sale/../tests/tours/helpers/PaymentScreenTourMethods";
import * as PartnerListScreen from "@point_of_sale/../tests/tours/helpers/PartnerListScreenTourMethods";
import { registry } from "@web/core/registry";
import { checkSimplifiedInvoiceNumber, pay } from "./helpers/receipt_helpers";

const SIMPLIFIED_INVOICE_LIMIT = 1000;

registry.category("web_tour.t


this.users.push(user);

    return user;
  }

  async save(user: User): Promise<User> {
    const findIndex = this.users.findIndex(
      (userIndex) => userIndex.id === user.id,
    );

    this.users[findIndex] = user;

    return user;
  }
}

export default FakeUsersRepository;
import { IS_NODE } from '../environment';

const bold: [number, number] = [1, 22];
const dim: [number, number] = [2, 22];
const red: [number, number] = [1, 39];
const reset: [number, number] = [0, 0];
const magenta: [number, number] = [5, 39];
const yellow: [number, number] = [3, 39];
const cyan: [number, number] = [6, 39];
const green: [number, number] = [2, 39];

export const ColorPlaceHolder = IS_NODE? '%s' : '%c';

export interface ColorMap {
	[level: string]: [string, string]
}

function terminal(...colors: [number, number][]) {
	const ret: [string, string] = ['\x1B[', '\x1B['];
	for (const [set, reset] of colors) {
		ret[0] += set + ';';
		ret[1] += reset + ';';
	}
	ret[0] = ret[0].replace(/;$/, 'm');
	ret[1] = ret[1].replace(/;$/, 'm');
	return ret;
}

const browserReset: {[id: string]: string} = {color: 'reset'};

function browser(str: string): [string, string] {
	const reset = str.split(';').map((item) => {
		return item.split(':', 1)[0].trim();
	}).map((k) => {
		if (browserReset[k]) {
			return k + ':' + browserReset[k];
		} else {
			return k + ':normal';
		}
	}).join(';');
	return [str, reset];
}

const TerminalColors: ColorMap = {
	EMERG: terminal(bold, red),
	ERROR: terminal(red),
	WARN: terminal(magenta),
	NOTICE: terminal(yellow),
	INFO: terminal(cyan),
	DEBUG: terminal(reset),
	DATA: terminal(dim, green),
	SILLY: terminal(dim),
	reset: terminal(reset),
};

const BrowserColors: ColorMap = {
	EMERG: browser('color:red;font-weight:bold;font-size:xx-large;'),
	ERROR: browser('color:red;'),
	WARN: browser('color:magenta;'),
	NOTICE: browser('color:#ff5400;'),
	INFO: browser('color:#4fbdff;'),
	DEBUG: browser('color:#626262;'),
	DATA: browser('color:#01a900;'),
	SILLY: browser('color:#c1c1c1;'),
	reset: browser('color:normal'),
};

export const Colors = IS_NODE? TerminalColors : BrowserColors;
 import { Component } from '@angular/core';
 import { HttpClient} from "@angular/common/http";

 @Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
 name: string = '';
 found: boolean;

   constructor(private httpClient: HttpClient){}

  /*

  onNameKeyUp(event:any) {
    this.name = event.target.value;
    this.found = false;
  }

   getProfile(){
    console.log(this.name);
    this.httpClient.get(`http://127.0.0.1:5000/cards/3/${this.name}`)
      .subscribe(
        (data:any = []) => {
          //nepoužívame data.length, protože je to objekt , ne array
          if(Object.keys(data).length) {
            this.found = true;
            this.iron = data.card_details.iron;
            this.wood = data.card_details.woo


alue).toList(),
        if (maxNumberOfMessages != null)
          'MaxNumberOfMessages': maxNumberOfMessages,
        if (messageAttributeNames != null)
          'MessageAttributeNames': messageAttributeNames,
        if (messageSystemAttributeNames != null)
          'MessageSystemAttributeNames':
              messageSystemAttributeNames.map((e) => e.value).toList(),
        if (receiveRequestAttemptId != null)
          'ReceiveRequestAttemptId': receiveRequestAttemptId,
        if (visibilityTimeout != null) 'VisibilityTimeout': visibilityTimeout,
        if (waitTimeSeconds != null) 'WaitTimeSeconds': waitTimeSeconds,
      },
    );

    return ReceiveMessageResult.fromJson(jsonResponse.body);
  }

  /// Revokes any permissions in the queue policy that matches the specified
  /// Label parameter.
  /// <note>
  ///

  ///

  /// Only the owner of a queue can remove permissions from it.
  ///

  ///

  /// Cross-account permissions don't apply to this action. For more
  /// information, see Grant
  /// cross-account permissions to a role and a username in the Amazon
  /// SQS Developer Guide.
  ///

  ///

  /// To remove the ability to change queue permissions, you must deny
  /// permission to the AddPermission,
  /// RemovePermission, and SetQueueAttributes actions
  /// in your IAM policy.
  ///

  ///
 </note>
  ///
  /// May throw [InvalidAddress].
  /// May throw [RequestThrottled].
  /// May throw [QueueDoesNotExist].
  /// May throw [InvalidSecurity].
  /// May throw [UnsupportedOperation].
  ///
  /// Parameter [label] :
  /// The identification of the permission to remove. This is the label added
  /// using the  AddPermission  action.
  ///
  /// Parameter [queueUrl] :
  /// The URL of the Amazon SQS queue from which permissions are removed.
  ///
  /// Queue URLs and names are case-sensitive.
  Future<void> removePermission({
    required String label,
    required String queueUrl,
  }) async {
    final headers = <String, String>{
      'Content-Type': 'application/x-amz-json-1.0',
      'X-Amz-Target': 'AmazonSQS.RemovePermission'
    };
    await _protocol.send(
      method: 'POST',
      requestUri: '/',
      exceptionFnMap: _exceptionFns,
      // TODO queryParams
      headers: headers,
      payload: {
        'Label': label,
        'QueueUrl': queueUrl,
      },
    );
  }

  /// Delivers a message to the specified queue.
  /// <important>
  /// A message can include only XML, JSON, and unformatted text. The following
  /// Unicode characters are allowed. For more information, see the W3C specification for
  /// characters.
  ///
  /// #x9 | #xA | #xD | #x20
  /// to #xD7FF | #xE000 to #xFFFD |
  /// #x10000 to #x10FFFF
  ///
  /// Amazon SQS does not throw an exception or completely reject the message if
  /// it contains invalid characters. Instead, it replaces those invalid
  /// characters with U+FFFD before storing the message in the
  /// queue, as long as the message body contains at least one valid character.
  ///


se64,iVBORw0KGgoAAAANSUhEUgAAAZAAAABiCAYAAAB+koVqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA1LzA2LzEynpvHdgAAAeNJREFUeJzt3bFtw0AUBcFP4/qv1InhRA4kOaAauE0IAjMVMFs8no46vn8e7wGATWtm5vfxvPo5ALiZNTPzfBkhAOxZMzPvt4AAsOcTkKsfA4C7OQNy9VMAcDteYQGQeIUFQCIgACSfMxAFAWCPBQJAIiAAJH6FBUCyZmZeVz8FALezZmYefz6mCMAeN9EBSL6ufgAA7klAAEgEBIBkzcwcVz8FALdjgQCQCAgAiYAAkKyZcQgCwDaH6AAkXmEBkAgIAIlXWAAkZ0AOCQFgj1dYACQCAkDiHggAiUN0ABILBIDEGQgAiYAAkDgDASCxQABIBASAREAASAQEgMQhOgCJi4QAJF5hAZBYIAAkFggAiYAAkAgIAImAAJCch+hO0QHYZIEAkAgIAIlPmQCQWCAAJJ+b6DYIAHssEAASAQEgERAAEgEBIBEQABL3QABILBAAEgEBIPGXtgAkFggAiQUCQGKBAJAICACJgACQCAgAiZvoACQWCACJBQJAYoEAkAgIAImAAJAICACJgACQCAgAiYAAkAgIAMl5kfBwlRCAPRYIAImAAJAICACJgACQrJnxOV4AtlkgACTnAjFBANhkgQCQCAgAib+0BSCxQABIBASAxD0QABILBIBEQABIBASA5B+/giW9vHXuqwAAAABJRU5ErkJggg==');
    background-repeat: repeat-x;
}

rte-control-toolbar {
    border-radius: 5px;
    background-color: white;
    padding: 6px;
    box-shadow: 3px 3px 8px gray;
    /*opacity:0.3;
	transition:opacity linear 0.3s;*/
}

    rte-control-toolbar:hover {
        opacity: 1;
    }

.rte-modern rte-control-toolbar rte-toolbar-button, .rte-modern rte-control-toolbar rte-toolbar-splitbutton, .rte-modern rte-control-toolbar rte-toolbar-dropdown {
    margin: 6px 8px;
}

.rte-modern rte-control-toolbar rte-toolbar-arrowbutton {
    margin: 6px 2px 6px 8px;
}

rte-ribbon-group-left {
    margin-bottom: 4px;
}

rte-ribbon-group-right {
    margin-left: 5px;
}

rte-ribbon-main {
    padding: 5px 5px 1px;
}

rte-ribbon-text {
    padding-top: 2px;
    color: #3e6ac1;
    background-color: #c1d


der.Entity<UfOperacja>(entity =>
        {
            entity.HasKey(e => e.UopId);

            entity.ToTable("uf_Operacja");

            entity.Property(e => e.UopId)
                .ValueGeneratedNever()
                .HasColumnName("uop_Id");
            entity.Property(e => e.UopNazwa)
                .HasMaxLength(50)
                .IsUnicode(false)
                .HasColumnName("uop_Nazwa");
        });

        modelBuilder.Entity<UfPlu>(entity =>
        {
            entity.HasKey(e => e.UplId);

            entity.ToTable("uf_Plu");

            entity.Property(e => e.UplId).HasColumnName("upl_Id");
            entity.Property(e => e.UplIdKonfiguracja).HasColumnName("upl_IdKonfiguracja");
            entity.Property(e => e.UplIdTowar)
                .HasDefaultValue(-1)
                .HasColumnName("upl_IdTowar");
            entity.Property(e => e.UplKodPlu).HasColumnName("upl_KodPlu");
            entity.Property(e => e.UplRodzaj).HasColumnName("upl_Rodzaj");

            entity.HasOne(d => d.UplIdKonfiguracjaNavigation).WithMany(p => p.UfPlus)
                .HasForeignKey(d => d.UplIdKonfiguracja)
                .HasConstraintName("FK_uf_Plu_uf_Konfiguracja");

            entity.HasOne(d => d.UplIdTowarNavigation).WithMany(p => p.UfPlus)
                .HasForeignKey(d => d.UplIdTowar)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_uf_Plu_tw__Towar");
        });

        modelBuilder.Entity<UfSterownik>(entity =>
        {
            entity.HasKey(e => e.UstId);

            entity.ToTable("uf_Sterownik");

            entity.Property(e => e.UstId)
                .ValueGeneratedNever()
                .HasColumnName("ust_Id");
            entity.Property(e => e.UstAboutClsid)
                .HasMaxLength(38)
                .IsUnicode(false)
                .HasColumnName("ust_AboutCLSID");
            entity.Property(e => e.UstDialogClsid)
                .HasMaxLength(38)
                .IsUnicode(false)
                .HasDefaultValue("")
                .HasColumnName("ust_DialogCLSID");
            entity.Property(e => e.UstDriverClsid)
                .HasMaxLength(38)
                .IsUnicode(false)
                .HasDefaultValue("")
                .HasColumnName("ust_DriverCLSID");
            entity.Property(e => e.UstNazwa)
                .HasMaxLength(50)
                .IsUnicode(false)
                .HasColumnName("ust_Nazwa");
            entity.Property(e => e.UstStanowisko)
                .HasMaxLength(50)
                .IsUnicode(false)
                .HasDefaultValue("")
                .HasColumnName("ust_Stanowisko");
            entity.Property(e => e.UstTyp).HasColumnName("ust_Typ");
            entity.Property(e => e.UstWersja)
                .HasMaxLength(20)
                .IsUnicode(false)
                .HasColumnName("ust_Wersja");
        });

        modelBuilder.Entity<UfSynchTemp>(entity =>
        {
            entity.HasKey(e => e.UsytId);

            entity.ToTable("uf_SynchTemp");

            entity.HasIndex(e => new { e.UsytIdZadanie, e.UsytIdTowar }, "IX_uf_SynchTemp");


neObj.geom_type == "MultiLineString"):
                for ThisLine in LineObj:
                    LineList.append(ThisLine)
            elif (LineObj.geom_type == "LineString"):
                LineList.append(LineObj)
            else:
                sys.exit("problem reading lines")

        # catch situation where only one line
        if len(LineList) == 1:
            Lines = LineList[0]
        else:
            Lines = MultiLineString(LineList)

        for ThisTransect in self.Transects:

            # get shortest distance to bathy and associated point
            try:
                TempNode = ThisTransect.HistoricShorelinesPositions[-1][0]
            except:
                continue

            BasePoint = Point(TempNode.X, TempNode.Y)
            NearestPoint = nearest_points(Lines, BasePoint)[0]
            NearestPoint = Node(NearestPoint.x, NearestPoint.y)
            Distance = NearestPoint.get_Distance(ThisTransect.HistoricShorelinesPositions[-1][0])
            ThisTransect.ShorefaceDistance = Distance
            ThisTransect.ShorefaceDepth = ThisTransect.MHWS+10.
            ThisTransect.ShorefaceSlope = (ThisTransect.MHWS+10.)/Distance

    def ReverseLine(self):
        """
        Reverses the order of a line object

        MDH, June 2019
        """

        X, Y = self.get_XY()
        self.GenerateNodes(X[::-1], Y[::-1])

    def get_XY(self):
        """
        Returns X and Y coordinates as vector numpy arrays

        MDH, June 2019
        """
        X = []
        Y = []
        for Node in self.Nodes:
            X.append(Node.X)
            Y.append(Node.Y)

        return np.array(X), np.array(Y)


delete it?"] = {
  ["deDE"] = "Warum erscheint eine benutzerdefinierte Kategorie nach dem Löschen erneut?",
  ["esES"] = "¿Por qué vuelve a aparecer una categoría personalizada después de eliminarla?",
  ["esMX"] = "¿Por qué vuelve a aparecer una categoría personalizada después de eliminarla?",
  ["frFR"] = "Pourquoi une catégorie personnalisée réapparaît-elle après que je l'ai supprimée?",
  ["itIT"] = "Perché una categoria personalizzata riappare dopo che la elimino?",
  ["koKR"] = "사용자 지정 범주를 삭제한 후에도 다시 나타나는 이유는 무엇입니까?",
  ["ptBR"] = "Por que uma categoria personalizada reaparece após eu excluí-la?",
  ["ruRU"] = "Почему созданная мной категория снова появляется после её удаления?",
  ["zhCN"] = "为什么我删除自定义分类后，它会重新出现?",
  ["zhTW"] = "為什麼我刪除自定義分類後，它會重新出現?",
}
L.data["bnet"] = {
  ["deDE"] = "bnet",
  ["esES"] = "bnet",
  ["esMX"] = "bnet",
  ["frFR"] = "bnet",
  ["itIT"] = "bnet",
  ["koKR"] = "배틀넷",
  ["ptBR"] = "bnet",
  ["ruRU"] = "бнет",
  ["zhCN"] = "战网",
  ["zhTW"] = "戰網",
}
L.data["boe"] = {
  ["deDE"] = "Beim Anlegen gebunden",
  ["esES"] = "Se liga al equiparlo",
  ["esMX"] = "Se liga al equiparlo",
  ["frFR"] = "Lié quand équipé",
  ["itIT"] = "Vincolato all'uso",
  ["koKR"] = "획귀",
  ["ptBR"] = "Vinculado ao ser equipado",
  ["ruRU"] = "Становится персональным при надевании",
  ["zhCN"] = "装备绑定",
  ["zhTW"] = "裝備後綁定",
}
L.data["bou"] = {
  ["deDE"] = "bou",
  ["esES"] = "bou",
  ["esMX"] = "bou",
  ["frFR"] = "bou",
  ["itIT"] = "bou",
  ["koKR"] = "bou",
  ["ptBR"] = "bou",
  ["ruRU"] = "bou",
  ["zhCN"] = "bou",
  ["zhTW"] = "bou",
}
L.data["nonbinding"] = {
  ["deDE"] = "nicht bindend",


_ENTER) {
    if (select_file.now == CASE_BACK) { // Back
      select_page.set(0);
      Goto_MainMenu();
    }
    else if (hasUpDir && select_file.now == 1) { // CD-Up
      SDCard_Up();
      goto HMI_SelectFileExit;
    }
    else {
      const uint16_t filenum = select_file.now - 1 - hasUpDir;
      card.getfilename_sorted(SD_ORDER(filenum, card.get_num_Files()));

      // Enter that folder!
      if (card.flag.filenameIsDir) {
        SDCard_Folder(card.filename);
        goto HMI_SelectFileExit;
      }

      // Reset highlight for next entry
      select_print.reset();
      select_file.reset();

      // Start choice and print SD file
      HMI_flag.heat_flag = true;
      HMI_flag.print_finish = false;
      HMI_ValueStruct.show_mode = 0;

      card.openAndPrintFile(card.filename);

      #if HAS_FAN
        // All fans on for Ender 3 v2 ?
        // The slicer should manage this for us.
        //for (uint8_t i = 0; i < FAN_COUNT; i++)
        //  thermalManager.fan_speed[i] = 255;
      #endif

      _card_percent = 0;
      _remain_time = 0;
      Goto_PrintProcess();
    }
  }

  HMI_SelectFileExit:
    DWIN_UpdateLCD();
}

// Printing
void HMI_Printing() {
  EncoderState encoder_diffState = get_encoder_state();
  if (encoder_diffState == ENCODER_DIFF_NO) return;

  if (HMI_flag.done_confirm_flag) {
    if (encoder_diffState == ENCODER_DIFF_ENTER) {
      HMI_flag.done_confirm_flag = false;
      dwin_abort_flag = true; // Reset feedrate, return to Home
    }
    return;
  }

  // Avoid flicker by updating only the previous menu
  if (encoder_diffState == ENCODER_DIFF_CW) {
    if (select_print.inc(3)) {
      switch (select_print.now) {
        case PRINT_SETUP: ICON_Tune(); break;
        case PRINT_PAUSE_RESUME: ICON_Tune(); ICON_ResumeOrPause(); break;
        case PRINT_STOP: ICON_ResumeOrPause(); ICON_Stop(); break;
      }
    }
  }
  else if (encoder_diffState == ENCODER_DIFF_CCW) {
    if (select_print.dec()) {
      switch (select_print.now) {
        case PRINT_SETUP: ICON_Tune(); ICON_ResumeOrPause(); break;
        case PRINT_PAUSE_RESUME: ICON_ResumeOrPause(); ICON_Stop(); break;
        case PRINT_STOP: ICON_Stop(); break;
      }
    }
  }
  else if (encoder_diffState == ENCODER_DIFF_ENTER) {
    switch (select_print.now) {
      case PRINT_SETUP:
        checkkey = Tune;
        HMI_ValueStruct.show_mode = 0;
        select_tune.reset();
        index_tune = MROWS;
        Draw_Tune_Menu();
        break;

      case PRINT_PAUSE_RESUME:
        if (HMI_flag.pause_flag) {
          ICON_Pause();

          char cmd[40];
          cmd[0] = '\0';

          #if BOTH(HAS_HEATED_BED, PAUSE_HEAT)
            if (resume_bed_temp) sprintf_P(cmd, PSTR("M190 S%i\n"), resume_bed_temp);


6QiBR6muCGSEqqUiCMxACIrQcJEQA9uDC53tPAVr6oFsKasqbKmC14MolZK8kAgXHpcAxy8QJdETSIARSoam1zXg91BFmZAnHHbRbqKIyod0dGhv/RLjvDrkj/0mPK0YarFgMZAHLcdVmtcBrKkH6y6WJn/qxLamIcodENFnx/ooWhRwAhDdoUy/KZ6L/C+KoqtpqH8DIkEoCAOgYOAQ+PAT+DrcRQsRJkKUGHESJEn1TjX0M8465zw58hQoQlGiTIVqd4hE44lcfBK1OhrDfSISvYHvFdFt/EQuPw3NkhUsazZs2bHnwJFTB4nE9SnkzqNjMb6XxHYfvvz6E4PHBZEECRYiFDngQHd/iU/Pqnq/KFKlXKtBPYEAyjxUiBN8ID9QqUGJa05DAGgz5IvPvsKrcdSOG8aECVctwp5IP9l1ZN+BQ7+iuO3YTeOo3qtx4o67ovzuT6VoosWIEytehwRJEo9vz1Qp0qT7rSdOSyZhPA51Qac8ufJd8Ye3ltz3xIMvLIb/7ztUEVAUFAvxkAjJkArpkAlZU6Y7YBS3emF8KrcNxxlr1uNsnPMtzodcyIdCKAYqlEI5VEI11EI9NOKCirg4Ua/MTIzSm1OvjtbVUmd2rRrkx3FQZ9FJGspYY+pTDAgloTSUhfJQESpDVahOcqnjfBLDbSYy5TJqKj0ygpwc9X4yXawvFlr4NbEJ8XF2G5EpZHomLPYyOvm9ZVxOiRclR4zr22t6xDXxVJj9TfSEF2cWopMklIaKUBMah6YJyiPdaTFdwB+MlgArE9fPDJx/ooJVPyff3RBUK8SIC/j4j2eRn8oDoUWyTKuh7KFr2QGg7FNdHKJ1hTAKZBBF4XPEUXQFjSj2RxI1LJBGiTKaUaqE7KSpMZelKYw2WaqVSahD2hPyoq15jWKY26AzLLTQ7XE+id6w24T+sOeAwbCvi2E2KHlMgK+VYanVyc8AAAA=);
}// ======================================
// BOOTSTRAP 5 + BOOTSTRAPVUENEXT BUTTONS
// ======================================
// This file ensures proper button styling with Bootstrap 5 and BootstrapVueNext
// Following Bootstrap 5 conventions and ArchitectUI theming

// Base button group styling
.btn-group {
  .btn {
    font-size: $font-size-base;
  }
}

// Base button styling
.btn {
  font-size: $font-size-base;
  position: relative;
  @include transition($btn-transition);

  // Ensure all buttons have proper dimensions and


s] 99%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589| 1.13G/1.13G [00:59\u003c00:00, 19.2MB/s] 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589| 1.13G/1.13G [00:59\u003c00:00, 20.0MB/s] 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589| 1.13G/1.13G [00:59\u003c00:00, 20.4MB/s] 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 1.13G/1.13G [00:59\u003c00:00, 20.5MB/s] \uc774\uc81c \uc77c\ubc18\uc801\uc778 \ud559\uc2b5 \ub8e8\ud504\ub97c \uc815\uc758\ud574\ubd05\uc2dc\ub2e4. \uc2e4\uc81c \ud559\uc2b5 \uc2dc\uc5d0\ub294 \uc9c4\uc9dc \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\uc9c0\ub9cc, \uc774 \ud29c\ud1a0\ub9ac\uc5bc\uc5d0\uc11c\ub294 \uac00\uc9dc \uc785\ub825 \ub370\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uba70 \uc2e4\uc81c \ub370\uc774\ud130\ub97c \uc77d\uc5b4\ub4e4\uc774\ub294 \uac83\uc5d0 \ub300\ud574\uc11c\ub294 \uc2e0\uacbd \uc4f0\uc9c0 \uc54a\uc744 \uac83\uc785\ub2c8\ub2e4. IMAGE_SIZE = 224 def train(model, optimizer): # \uac00\uc9dc \uc774\ubbf8\uc9c0 \uc785\ub825\uac12 \uc0dd\uc131: tensor\uc758 \ud615\ud0dc\ub294 batch_size, channels, height, width fake_image = torch.rand(1, 3, IMAGE_SIZE, IMAGE_SIZE).cuda() # forward\uc640 backward \ud638\ucd9c loss = model.forward(fake_image) loss.sum().backward() # \uc635\ud2f0\ub9c8\uc774\uc800 \uc5c5\ub370\uc774\ud2b8 optimizer.step() optimizer.zero_grad() \ud559\uc2b5 \uc911\uc758 \uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9# \uc774\uc81c \uba54\ubaa8\ub9ac \uc2a4\ub0c5\uc0f7\uc744 \ud655\uc778\ud558\ub824\uace0 \ud558\ubbc0\ub85c, \uc774\ub97c \uc801\uc808\ud788 \ubd84\uc11d\ud560 \uc900\ube44\ub97c \ud574\uc57c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ud559\uc2b5 \uba54\


at_history = json.load(file)
        except (FileNotFoundError, json.JSONDecodeError):
            chat_history = []

        # Добавляем новое сообщение в историю
        chat_history.append({"sender": sender, "message": message})

        # Сохраняем историю обратно в файл
        with open(chat_file, "w", encoding="utf-8") as file:
            json.dump(chat_history, file, ensure_ascii=False, indent=4)

    def load_chat_history(self):
        """Загружает историю чата из JSON файла."""
        chat_file = ROOT_DIR / "chat_history.json"

        try:
            with open(chat_file, "r", encoding="utf-8") as file:
                chat_history = json.load(file)

            # Восстанавливаем сообщения из истории
            for entry in chat_history:
                sender = entry["sender"]
                message = entry["message"]
                sender_alias = "Вы" if sender == "user" else "ChatGPT"
                self.add_message(f"{sender_alias}: {message}", sender=sender)

        except (FileNotFoundError, json.JSONDecodeError):
            pass
    def get_response(self, message):
        headers = {
            "Authorization": f"Bearer {client['api_key']}",
            "Content-Type": "application/json"
            }
        data = {
            "model": "openai/gpt-4o-mini",
            "messages": [{"role": "user", "content": message}]
        }
        try:
            response = requests.post(
                f"{client['base_url']}/chat/completions",
                headers=headers,
                json=data,
                timeout=10
            )
            response.raise_for_status()
            answer = response.json()["choices"][0]["message"]["content"]
        except Exception as e:
            answer = f"Ошибка получения ответа: {e}"

        self.add_message("ChatGPT: " + answer, "chatgpt")
        self.save_chat_history(answer, "ChatGPT")

if __name__ == "__main__":
    ChatApp().run()


, trigEngine = te("w")}, {
		t"$this->fail(", i(1, "", {key = "i1"}), t");"
	}),
	s({trig = "marki", descr = "(marki) \"$this->markTestIncomplete()\"", priority = -1000, trigEngine = te("w")}, {
		t"$this->markTestIncomplete(", i(1, "", {key = "i1"}), t");"
	}),
	s({trig = "marks", descr = "(marks) \"$this->markTestSkipped()\"", priority = -1000, trigEngine = te("w")}, {
		t"$this->markTestSkipped(", i(1, "", {key = "i1"}), t");"
	}),
	s({trig = "te", descr = "(te) \"throw new Exception()\"", priority = -1000, trigEngine = te("w")}, {
		t"throw new ", i(1, "Exception", {key = "i1"}), t"(\"", i(2, "Error Processing Request", {key = "i2"}), t"\");"
	}),
	s({trig = "fpc", descr = "(fpc) \"file_put_contents\" b", priority = -1000, trigEngine = te("w")}, {
		t"file_put_contents(", i(1, "file", {key = "i1"}), t", ", i(2, "content", {key = "i2"}), i(3, ", FILE_APPEND", {key = "i3"}), t");", i(0, "", {key = "i0"})
	}),
	s({trig = "sr", descr = "(sr) \"str_replace\"", priority = -1000, trigEngine = te("w")}, {
		t"str_replace(", i(1, "search", {key = "i1"}), t", ", i(2, "replace", {key = "i2"}), t", ", i(3, "subject", {key = "i3"}), t")", i(0, "", {key = "i0"})
	}),
	s({trig = "ia", descr = "(ia) \"in_array\"", priority = -1000, trigEngine = te("w")}, {
		t"in_array(", i(1, "needle", {key = "i1"}), t", ", i(2, "haystack", {key = "i2"}), t")", i(0, "", {key = "i0"})
	}),
	s({trig = "is", descr = "(is) \"isset\"", priority = -1000, trigEngine = te("w")}, {
		t"isset(", i(1, "var", {key = "i1"}), t")", i(0, "", {key = "i0"})
	}),
	s({trig = "isa", descr = "(isa) \"isset array\"", priority = -1000, trigEngine = te("w")}, {
		t"isset($", i(1, "array", {key = "i1"}), t"[", i(2, "key", {key = "i2"}), t"])", i(0, "", {key = "i0"})
	}),
	s({trig = "in", descr = "(in) \"is_null\"", priority = -1000, trigEngine = te("w")}, {
		t"is_null($", i(1, "var", {key = "i1"}), t")", i(0, "", {key = "i0"})
	}),
	s({trig = "fe", descr = "(fe) \"file_exists\"", priority = -1000, trigEngine = te("w")}, {
		t"file_exists(", i(1, "file", {key = "i1"}), t")", i(0, "", {key = "i0"})
	}),
	s({trig = "id", descr = "(id) \"is_dir\"", priority = -1000, trigEngine = te("w")}, {
		t"is_dir(", i(1, "path", {key = "i1"}), t")", i(0, "", {key = "i0"})
	}),
	s({trig = "pub", descr = "(pub) \"Public function\"", priority = -50, trigEngine = te("


b	.L1308
.L1312:
	add	r0, r0, #1968
	bl	MPEG4DEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1313:
	add	r0, r0, #1968
	bl	MPEG2DEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1314:
	add	r0, r0, #1968
	bl	DIVX3DEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1315:
	add	r0, r0, #1968
	bl	AVSDEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1316:
	add	r0, r0, #1968
	bl	REAL8DEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1317:
	add	r0, r0, #1968
	bl	REAL9DEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1318:
	add	r0, r0, #1968
	bl	VP6DEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1319:
	add	r0, r0, #1968
	bl	VP8DEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1320:
	add	r0, r0, #1968
	bl	MVC_DEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1321:
	add	r0, r0, #1968
	bl	HEVCDEC_GetRemainImg
	mov	r4, r0
	b	.L1308
.L1332:
	mov	r0, r5
	mov	r1, r4
	bl	VCTRL_ReportLastFrame
	sub	r2, r4, #2
	ldr	r1, .L1333+8
	mov	r0, #2
	bl	dprint_vfmw
	mov	r0, r4
	ldmfd	sp, {r4, r5, fp, sp, pc}
.L1327:
	mvn	r4, #0
.L1324:
	mov	r0, r5
	mov	r1, #1
	bl	VCTRL_ReportLastFrame
	ldr	r1, .L1333+12
	mov	r0, #2
	bl	dprint_vfmw
	mov	r0, r4
	ldmfd	sp, {r4, r5, fp, sp, pc}
.L1334:
	.align	2
.L1333:
	.word	.LANCHOR0
	.word	.LC124
	.word	.LC125
	.word	.LC123
	UNWIND(.fnend)
	.size	VCTRL_OutputLastFrame, .-VCTRL_OutputLastFrame
	.align	2
	.global	VCTRL_PostProc
	.type	VCTRL_PostProc, %function
VCTRL_PostProc:
	UNWIND(.fnstart)
	@ args = 4, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	UNWIND(.movsp ip)
	mov	ip, sp
	stmfd	sp!, {r4, r5, r6, r7, fp, ip, lr, pc}
	UNWIND(.pad #4)
	UNWIND(.save {r4, r5, r6, r7, fp, ip, lr})
	UNWIND(


/**
 *    ||          ____  _ __
 * +------+      / __ )(_) /_______________ _____  ___
 * | 0xBC |     / __  / / __/ ___/ ___/ __ `/_  / / _ \
 * +------+    / /_/ / / /_/ /__/ /  / /_/ / / /_/  __/
 *  ||  ||    /_____/_/\__/\___/_/   \__,_/ /___/\___/
 *
 * Crazyflie control firmware
 *
 * Copyright (C) 2011-2012 Bitcraze AB
 *
 * 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, in version 3.
 *
 * 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, see <http://www.gnu.org/licenses/>.
 *
 * adc.h - Analog Digital Conversion header file
 */
#ifndef ADC_H_
#define ADC_H_

#include <stdbool.h>
#include <stdint.h>
#include "FreeRTOS.h"
#include "semphr.h"
#include "config.h"

/******** Defines ********/

/**
 * \def ADC_MEAN_SIZE
 * Number of samples used in the mean value calculation.
 * Mean size should be evenly dividable by decimation bits.
 */
#define ADC_DECIMATE_TO_BITS  12
#define ADC_MEAN_SIZE         8

#define ADC_RESOLUTION        12
#define ADC_DECIMATE_DIVEDEND (ADC_MEAN_SIZE / (1 << (ADC_DECIMATE_TO_BITS - ADC_RESOLUTION)))

#if ADC_DECIMATE_TO_BITS < ADC_RESOLUTION
#  error "ADC_DECIMATE_TO_BITS must be bigger or equal to ADC_RESOLUTION"
#endif

#define ADC_SAMPLING_FREQ      100
#define ADC_OVERSAMPLING_FREQ  (ADC_SAMPLING_FREQ * ADC_MEAN_SIZE)

#define ADC_TRIG_PRESCALE       1
#define ADC_TRIG_PRESCALE_FREQ  (72000000 / (ADC_TRIG_PRESCALE + 1))
#define ADC_TRIG_PERIOD         (ADC_TRIG_PRESCALE_FREQ / (ADC_OVERSAMPLING_FREQ))

#define ADC_INTERNAL_VREF   1.20

/******** Types ********/

typedef struct __attribute__((packed))
{
  uint16_t vref;
  uint16_t val;
} AdcPair;

typedef struct __attribute__((packed))
{
  AdcPair vbat;
} AdcGroup;

typedef struct
{
  uint16_t vbat;
  uint16_t vbatVref;
} AdcDeciGroup;

/*** Public interface ***/

/**
 * Initialize analog to digital converter. Configures gyro and vref channels.
 * Configures DMA to transfer the result.
 */
void adcInit(void);

bool adcTest(void);

/**
 * Converts a 12 bit ADC value to battery voltage
 * @param v  12 bit adc value
 * @param vref  12 bit adc value of the internal voltage
 *              reference, 1.2V
 *
 * @return The voltage in a float value
 */
float adcConvertToVoltageFloat(uint16_t v, uint16_t vref);

/**
 * Starts converting ADC samples by activating the DMA.
 */
void adcDmaStart(void);

/**
 * Stop converting ADC samples.
 */
void adcDmaStop(void);

/**
 * ADC interrupt handler
 */
void adcInterruptHandler(void);

/**
 * ADC task
 */
void adcTask(void *param);

#endif /* ADC_H_ */