  -      -      -     leal	42(%rdi), %eax
# CHECK-NEXT:  -     1.00    -      -      -      -      -      -     1.00    -      -      -      -      -     imull	%esi, %eax

# CHECK:      [1] Code Region - lower

# CHECK:      Iterations:        100
# CHECK-NEXT: Instructions:      200
# CHECK-NEXT: Total Cycles:      105
# CHECK-NEXT: Total uOps:        200

# CHECK:      Dispatch Width:    2
# CHECK-NEXT: uOps Per Cycle:    1.90
# CHECK-NEXT: IPC:               1.90
# CHECK-NEXT: Block RThroughput: 1.0

# CHECK:      Instruction Info:
# CHECK-NEXT: [1]: #uOps
# CHECK-NEXT: [2]: Latency
# CHECK-NEXT: [3]: RThroughput
# CHECK-NEXT: [4]: MayLoad
# CHECK-NEXT: [5]: MayStore
# CHECK-NEXT: [6]: HasSideEffects (U)

# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
# CHECK-NEXT:  1      3     1.00                        imull	%esi, %eax
# CHECK-NEXT:  1      1     0.50                        leal	42(%rdi), %eax

# CHECK:      Resources:
# CHECK-NEXT: [0]   - JALU0
# CHECK-NEXT: [1]   - JALU1
# CHECK-NEXT: [2]   - JDiv
# CHECK-NEXT: [3]   - JFPA
# CHECK-NEXT: [4]   - JFPM
# CHECK-NEXT: [5]   - JFPU0
# CHECK-NEXT: [6]   - JFPU1
# CHECK-NEXT: [7]   - JLAGU
# CHECK-NEXT: [8]   - JMul
# CHECK-NEXT: [9]   - JSAGU
# CHECK-NEXT: [10]  - JSTC
# CHECK-NEXT: [11]  - JVALU0
# CHECK-NEXT: [12]  - JVALU1
# CHECK-NEXT: [13]  - JVIMUL

# CHECK:      Resource pressure per iteration:
# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]
# CHECK-NEXT: 1.00   1.00    -      -      -      -      -      -     1.00    -      -      -      -      -

# CHECK:      Resource pressure by instruction:
# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   Instructions:
# CHECK-NEXT:  -     1.00    -      -      -      -      -      -     1.00    -      -      -      -      -     imull	%esi, %eax
# CHECK-NEXT: 1.00    -      -      -      -      -      -      -      -      -      -      -      -      -     leal	42(%rdi), %eax


/* { dg-do compile } */
/* { dg-options "-O3 -fdump-tree-fnsplit" } */
class MemoryManager;
class XMLExcepts {
public :
    enum Codes     {
      AttrList_BadIndex
    };
};
class XMLException {
public:
    XMLException(const char* const srcFile, const unsigned int srcLine,
MemoryManager* const memoryManager = 0);
};
class ArrayIndexOutOfBoundsException : public XMLException {
public:
    ArrayIndexOutOfBoundsException(const char* const srcFile , const unsigned
int srcLine , const XMLExcepts::Codes toThrow , MemoryManager* memoryManager =
0) : XMLException(srcFile, srcLine, memoryManager) {
    }
};
class XMLAttDef {
  bool fExternalAttribute;
};
class XMLAttDefList {
public:
    MemoryManager* getMemoryManager() const;
};
class DTDAttDef : public XMLAttDef {
};
class DTDAttDefList : public XMLAttDefList {
  virtual const XMLAttDef &getAttDef(unsigned int index) const ;
  DTDAttDef** fArray;
  unsigned int fCount;
};
const XMLAttDef &DTDAttDefList::getAttDef(unsigned int index) const {
  if(index >= fCount)
    throw ArrayIndexOutOfBoundsException("foo.cpp", 0,
XMLExcepts::AttrList_BadIndex, getMemoryManager());
  return *(fArray[index]);
}

/* Mistake in branch prediction caused us to split away real body of the function keeping
   only throw () invokation.   This is bad idea.  */
/* { dg-final { scan-tree-dump-not "Splitting function" "fnsplit"} } */


 a));
    assertEquals("linear : -23 -22 : |-23|-22.5|-22",
      asString(Auto.makeNumericScale(NumericExtentDetail.makeForField(a), true, pad, 0.95, 4, false), a));
    assertEquals("linear : -30 0 : |-30|-20|-10|0", asString(NumericScale.makeLinearScale(spanOf(a), true, 0.99, pad, 4, false), a));

    a = Fields.makeColumnField("a", "label", new Object[]{0.0});
    a = Data.toNumeric(a);
    Auto.defineTransform(a);
    assertEquals("linear : 0 1 : |0|0.5|1", asString(NumericScale.makeLinearScale(spanOf(a), true, 0.99, pad, 4, false), a));
  }

  @Test
  public void testLogScale() {
    Field a = Fields.makeColumnField("a", "label", new Object[]{2, 4, 7, 120, 45, 120, 200, 3345});
    a = Data.toNumeric(a);
    double[] pad = {0, 0};
    assertEquals("log : 2 3,345 : |10|100|1,000", asString(NumericScale.makeLogScale(spanOf(a), false, pad, 0.0, 3), a));
    assertEquals("log : 1 3,345 : |1|10|100|1,000", asString(NumericScale.makeLogScale(spanOf(a), false, pad, 0.2, 3), a));
    assertEquals("log : 1 10,000 : |1|100|10,000", asString(NumericScale.makeLogScale(spanOf(a), true, pad, 0.0, 3), a));
    assertEquals("log : 1 10,000 : |1|10|100|1,000|10,000", asString(NumericScale.makeLogScale(spanOf(a), true, pad, 0.0, 5), a));
    assertEquals("log : 1 5,000 : |1|3|10|30|100|300|1,000|3,000", asString(NumericScale.makeLogScale(spanOf(a), true, pad, 0.0, 10), a));

    a = Fields.makeColumnField("a", "label", new Object[]{45, 120, 200, 3345});
    a = Data.toNumeric(a);
    assertEquals("log : 45 3,345 : |100|1,000", asString(NumericScale.makeLogScale(spanOf(a), false, pad, 0.0, 3), a));
    assertEquals("log : 45 3,345 : |100|1,000", asString(NumericScale.makeLogScale(spanOf(a), false, pad, 0.2, 3), a));
    assertEquals("log : 1 3,345 : |1|10|100|1,000", asString(NumericScale.makeLogScale(spanOf(a), false, pad, 0.75, 3), a));
    assertEquals("log : 10 10,000 : |10|100|1,000|10,000", asString(NumericScale.makeLogScale(spanOf(a), true, pad, 0.0, 3), a));

    a = Fields.makeColumnField("a", "label", new Object[]{0.04, 0.2, 5});
    a = Data.toNumeric(a);
    assertEquals("log : 0.04 5 : |0.1|1", asString(NumericScale.makeLogScale(spanOf(a), false, pad, 0.0, 3), a));
    assertEquals("log : 0.04 5 : |0.1|1", asString(NumericScale.makeLogScale(spanOf(a), false, pad, 0.2, 3), a));
    assertEquals("log : 0.04 5 : |0.1|1", asString(NumericScale.makeLogScale(spanOf(a), false, pad, 0.75, 3), a));
    assertEquals("log : 0.01 10 : |0.01|0.1|1|10", asString(NumericScale.makeLogScale(spanOf(a), true, pad, 0.0, 3), a));
  }

  private String asString(NumericScale details, Field field) {
    String s = details.type + " : " + field.format(details.min) + " " + field.format(details.max) + " : ";
    for (int i = 0; i < details.divisions.length; i++) {
      s += "|" + field.format(details.divisions[i]);
    }
    return s;
  }

}
/*
 * Copyright (c) 2015 IBM Corporation and others.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * You may not use this file except in compliance wi


					{
						PromptID: 1001,
						UserID:   "test_user",
					},
				}).Return(map[mysql.PromptIDUserIDPair]*model.PromptUserDraft{}, nil)

				return fields{
					promptBasicDAO: mockBasicDAO,
					promptDraftDAO: mockDraftDAO,
				}
			},
			args: args{
				ctx: context.Background(),
				param: repo.ListPromptParam{
					SpaceID:  123,
					PageNum:  1,
					PageSize: 10,
					KeyWord:  "search_term",
					UserID:   "test_user",
				},
			},
			want: &repo.ListPromptResult{
				Total: 1,
				PromptDOs: []*entity.Prompt{
					{
						ID:          1001,
						SpaceID:     123,
						PromptKey:   "test_key_1",
						PromptBasic: &entity.PromptBasic{DisplayName: "Test search_term Prompt"},
					},
				},
			},
			wantErr: nil,
		},
		{
			name: "list with created by filter",
			fieldsGetter: func(ctrl *gomock.Controller) fields {
				mockBasicDAO := daomocks.NewMockIPromptBasicDAO(ctrl)
				mockBasicDAO.EXPECT().List(gomock.Any(), mysql.ListPromptBasicParam{
					SpaceID:    123,
					CreatedBys: []string{"user1", "user2"},
					Offset:     0,
					Limit:      10,
				}).Return([]*model.PromptBasic{
					{
						ID:        1001,
						SpaceID:   123,
						PromptKey: "test_key_1",
						Name:      "Test Prompt 1",
						CreatedBy: "user1",
					},
				}, int64(1), nil)

				mockDraftDAO := daomocks.NewMockIPromptUserDraftDAO(ctrl)
				mockDraftDAO.EXPECT().MGet(gomock.Any(), []mysql.PromptIDUserIDPair{
					{
						PromptID: 1001,
						UserID:   "test_user",
					},
				}).Return(map[mysql.PromptIDUserIDPair]*model.PromptUserDraft{}, nil)

				return fields{
					promptBasicDAO: mockBasicDAO,
					promptDraftDAO: mockDraftDAO,
				}
			},
			args: args{
				ctx: context.Background(),
				param: repo.ListPromptParam{
					SpaceID:    123,
					PageNum:    1,
					PageSize:   10,
					CreatedBys: []string{"user1", "user2"},
					UserID:     "test_user",
				},
			},
			want: &repo.ListPromptResult{
				Total: 1,
				PromptDOs: []*entity.Prompt{
					{
						ID:          1001,
						SpaceID:     123,
						PromptKey:   "test_key_1",
						PromptBasic: &entity.PromptBasic{DisplayName: "Test Prompt 1", CreatedBy: "user1"},
					},
				},
			},
			wantErr: nil,
		},
		{
			name: "list with order by and asc",
			fieldsGetter: func(ctrl *gomock.Controller) fields {
				mockBasicDAO := daomocks.NewMockIPromptBasicDAO(ctrl)
				mockBasicDAO.EXPECT().List(gomock.Any(), mysql.ListPromptBasicParam{
					SpaceID: 123,
					Offset:  10,
					Limit:   5,
					OrderBy: 1,
					Asc:     true,
				}).Return([]*model.PromptBasic{
					{
						ID:        1001,
						SpaceID:   123,
						PromptKey: "test_key_1",
						Name:      "Test Prompt 1",
					},
				}, int64(15), nil)

				mockDraftDAO := daomocks.NewMockIPromptUserD


.
 */
interface StepCell<I, S> {
  /**
   * @see Step
   */
  step: Step<I, S>;
  /**
   * The backing storage for the step, which was created when it was
   * first added.
   */
  store: S;
  /**
   * The caller of the `add_setup_step` function. In development, it is
   * checked against subsequent calls to make sure the same name is not
   * being used from multiple locations and potentially multiple types,
   * which would violate the type safety of `STEPS`.
   *
   * In production, the value is always an empty string.
   */
  caller: string;
}

const STEPS = new Map<string, StepCell<any, any>>();

/**
 * Registers a function to run during the setup phase, such as a command
 * upload or initializer.
 *
 * @see Step
 */
export function add_setup_step<I, S>(item: I, step: Step<I, S>) {
  const old_cell = STEPS.get(step.name);
  const caller = trace_caller();

  if (old_cell) {
    assert(caller === old_cell.caller, `%$${step.name}% called from multiple places!`);
    logger.debug(`Setup step %${step.name}% gained an item`);

    return old_cell.step.store_push(item, old_cell.store);
  }

  logger.debug(`Setup step %${step.name}% created!`);

  const store = step.store_create();
  const new_cell: StepCell<I, S> = { step, store, caller };

  new_cell.step.store_push(item, new_cell.store);
  STEPS.set(step.name, new_cell);
}

export function run_setup_steps(client: Client) {
  const promises: Promise<void>[] = [];

  for (const [step_id, step_cell] of STEPS) {
    const { step, store } = step_cell;

    if (step.skip_if?.(client)) {
      continue;
    }

    const float = step.floating;
    const promise = step.execute(client, store).catch((e) => {
      const fn = float ? logger.error : panic;
      fn(`${float ? 'Floating s' : 'S'}etup step %${step_id}% failed`, e);
    });

    if (!float) {
      promises.push(promise);
    }
  }

  return Promise.all(promises);
}

function trace_caller(): string {
  if (!IS_DEBUG) {
    return '';
  }

  try {
    throw new Error();
  } catch (e: any) {
    return e.stack;
  }
}
import { assert } from 'chai';
import { beforeEach, describe, it } from 'mocha';

import UpdateHandler from '../src/UpdateHandler';

let updateHandler: UpdateHandler;
let counter: number;

describe('UpdateHandler', () => {
  beforeEach(() => {
    updateHandler = new UpdateHandler();
    counter = 0;
  });

  describe('#addHandler()', () => {
    it('should store all handlers in a map', () => {
      const handler = updateHandler.addHandler<number>(
        'status',
        (v) => { counter += v; },
        () => false,
      );

      assert.equal(updateHandler.handlers.size, 1);
      assert.isDefined(
        updateHandler.handlers.get('status'),
        'missing value for "status" in the updateHandler',
      );
      assert.deepEqual(
        updateHandler.handlers.get('status'),
        [handler],
        `handler in "status" not the same has handler added, found ${updateHandler.handlers.get('status')}`,
      );
    });

    it('should have no handler when none is added', () => {
      updateHandler = new UpdateHandler();
      assert.equal(updateHandler.handlers.size, 0);
    });

    it('should add an expiring handler properly', (done) => {
      updateHandler.addHandler<number>(
        'status',
        (v) => { counter += v; },
        () => false,
        10,
        () =


tty_print()

# ~ agent_executor = create_react_agent(llm, tools)

# ~ events = agent_executor.stream(
    # ~ {"messages": [("user", userInput)]},
    # ~ stream_mode="values",
# ~ )

# ~ for event in events:
    # ~ messages = event.get("messages", [])
    # ~ for message in messages:
        # ~ if message["role"] == "ai":
            # ~ # Check if the AI message includes tool call information
            # ~ if "thought" in message:
                # ~ print("================================= Thought =================================")
                # ~ print(message["thought"])
            # ~ if "action" in message:
                # ~ print("================================== Action ==================================")
                # ~ print(message["action"])
            # ~ if "action_input" in message:
                # ~ print("================================= Action Input ==============================")
                # ~ print(message["action_input"])
        # ~ message.pretty_print()  # This will still display the original output

# ~ from langchain.agents import load_tools, initialize_agent, AgentType

# ~ agent = initialize_agent(tools, llm, agent = AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

# ~ result = agent.invoke(userInput)

# ~ print(result)


*****
* Calculate ambient table
*****
	Cconws	#sfx_initamb
	addq.l	#1,d0
	lea	ambtable,a0
	move.l	#255,d4
.ambloop:
	move.l	#255,d5
	sub.b	d4,d5
	ext.w	d5
	muls	#256,d5
	divs	d0,d5
	move.w	d5,(a0)+
	move.w	d5,(a0)+
	dbra	d4,.ambloop

*****
* Calculate panoration table
*****
	Cconws	#sfx_initpan
	lea	ambtable,a0
	lea	pantable,a1
	move.l	#255,d3
.panloop:
	move.l	(a0)+,(a1)+
	dbra	d3,.panloop

	Cconws	#sfx_initdone

	rts

sound_start:
*****
* Setup sound chip
*****
	move.l	samstart,d3
	move.b	d3,$ffff8907.w	; frame start (low byte)
	move.b	d3,$ffff890D.w	; frame count (low byte)
	lsr.w	#8,d3
	move.b	d3,$ffff8905.w	; frame start (mid byte)
	move.b	d3,$ffff890B	; frame count (mid byte)
	swap	d3
	move.b	d3,$ffff8903.w	; frame start (high byte)
	move.b	d3,$ffff8909.w	; frame count (high byte)
	move.l	samend,d3
	sub.l	#4,d3
	move.b	d3,$ffff8913.w	; frame end (low byte)
	lsr.w	#8,d3
	move.b	d3,$ffff8911.w	; frame end (mid byte)
	swap 	d3
	move.b	d3,$ffff890f.w	; frame end (high byte)

	move.w	freq,d7
	cmp.b	#1,d7
	bne.s	.not12
	moveq.l	#%01000001,d3
	bra.s	.freqset
.not12:
	cmp.b	#2,d7
	bne.s	.not25
	moveq.l	#%01000010,d3
	bra.s	.freqset
.not25:
	moveq.l	#%01000011,d3
.freqset:
	move.w	d3,$ffff8920.w	; set track control and sound mode

	move.w	#%00000011,$ffff8900	; set interupts and start DMA

	move.l	$70.w,sfx_VBL2+2	; old VBL
	move.l	#sfx_VBL,$70.w	; new VBL

	rts


/*
 * Copyright (c) 2018, RISE SICS.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the Institute nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * This file is part of the Contiki operating system.
 *
 */

 /**
  * \addtogroup sys
  * @{
  *
  * \defgroup node-id Node ID management
  * @{
  *
  * \file
  *    Node-id (simple 16-bit identifiers) handling
  * \author Simon Duquennoy <simon.duquennoy@ri.se>
  *
  */

#ifndef NODE_ID_H_
#define NODE_ID_H_

#include "contiki.h"
#include "net/linkaddr.h"
#if BUILD_WITH_DEPLOYMENT
#include "services/deployment/deployment.h"
#endif

/* A global variable that hosts the node ID */
extern uint16_t node_id;
/**
 * Initialize the node ID. Must be called after initialized of linkaddr
 */
static inline void
node_id_init(void)
{
#if BUILD_WITH_DEPLOYMENT
  deployment_init();
#else /* BUILD_WITH_DEPLOYMENT */
  /* Initialize with a default value derived from linkaddr */
  node_id = linkaddr_node_addr.u8[LINKADDR_SIZE - 1]
            + (linkaddr_node_addr.u8[LINKADDR_SIZE - 2] << 8);
#endif /* BUILD_WITH_DEPLOYMENT */
}

#endif /* NODE_ID_H_ */
/**
 * @}
 * @}
 */


ak těm porodním bábám prokazoval dobrodiní a lid se množil a byl velmi zdatný.
> 21Protože se porodní báby bály Boha, požehnal jejich domům.
> 22Ale farao všemu svému lidu rozkázal: „Každého syna, který se jim narodí, hoďte do Nilu; každou dceru nechte naživu.“

### Reflexe

Faraon měl tak velké obavy z toho, aby se Izraelité neosvobodili ze svého zotročení, že nařídil porodním bábám, aby udělaly něco naprosto zvláštního - aby zabily každého chlapce, kterého porodí, a tím aby udusily budoucnost Izraele. Zatímco porodní báby se tomuto požadavku hrdinně vyhýbají, faraon je neúprosný a vyzývá k utopení dětí mužského pohlaví v řece Nil.

Svatý Metoděj považuje faraóna za „předobraz ďábla“. Stejně jako faraón nařídil zabití izraelských chlapců, ďábel se pokouší zabít lidskou ctnost. Vysvětluje, že vody Nilu jsou obrazem našich vášní a ten zlý chce, aby se naše duše vrhly do těchto vod, aby se utopily. Každý člověk zná bolest vnitřního udušení: osamělost pornografie, prázdnota alkoholu, nuda neprozkoumaného života a nekonečná snaha o zábavu.

Dnes je třetí den vašeho odhodlání osvobodit se od těchto věcí. To, co vás kdysi zotročovalo, je nyní prostředkem, díky němuž se stáváte svobodnými, pokud se toho snažíte zbavit.

Svatý Augustin si všímá jisté ironie v příběhu Exodus: Izraelci kráčeli vodami Rudého moře na svobodu. Ti, kteří byli zotročeni a odsouzeni k utonutí, nyní procházejí mořem na cestě ke svobodě.

Naše kultura nás obklopuje neustálým vybízením k bezduchým a ničivým požitkům. I když se od nich vzdalujeme, připadá nám, jako bychom jimi procházeli. V tom se podobáme Izraelitů, kteří procházeli Rudým mořem a měli dvě obří vodní stěny - po levici a pravici.

Ale když Boží síla otevírá cestu, naším jediným úkolem je pokročit vpřed.
Děkujte Pánu, že vám dnes otevřel cestu, a získejte odvahu jít kupředu.
## Den 78 - PŘEDVOLAT PÁNOVU VELIKOST

### Týdenní aktivity (ukazatelé cesty)

1. Znovu se zavázejte k dennímu rozjímání
1. V něm se vám v následujících posledních dvou týdnech mnoho objasní. B


note: uvs aren't geom specific, stretching will occur)

    TESTS:
      plane(), box(), cylinder(), cone(), torus(), sphere(), rect()

      default fill and stroke, fill(), stroke(), noStroke(), noFill(), normalMaterial(), texture()

    FPS should average higher than 45 FPS on modern laptop/desktop

<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>p5.js | reference</title>
    <meta name="description" content="p5.js a JS client-side library for creating graphic and interactive experiences, based on the core principles of Processing.">
    <meta name="viewport" content="width=device-width">

    <link rel="stylesheet" href="../css/normalize.css">

    <link rel="stylesheet" href="../css/main.css">

    <link rel="stylesheet" href="../css/prism.css">

    <link rel="stylesheet" href="../assets/reference.css">

Processing
        p5.js
        Processing.py
        Processing for Android

      <form style='pointer-events:all;' name="search" method="get" action="https://www.google.com/search">
        <input type="hidden" name="as_sitesearch" value="p5js.org" />
        <input id="search_field" type="text" title="Search" name="as_q" value="" size="20" class="text" aria-label="search text field"  aria-haspopup="false"/>
        <input id="search_button" type="submit" value=" " aria-label="Search" name="submit search" alt="Search"/>
      </form


ct",
            icon: constrain_path(select_path()),
            hotkey: HotKey::new(None, "v"),
        };

        let pen = ToolbarItem {
            name: "Pen",
            icon: constrain_path(pen_path()),
            hotkey: HotKey::new(None, "p"),
        };

        let hyperpen = ToolbarItem {
            name: "HyperPen",
            icon: constrain_path(hyperpen_path()),
            hotkey: HotKey::new(SysMods::Shift, "P"),
        };

        let preview = ToolbarItem {
            name: "Preview",
            icon: constrain_path(preview_path()),
            hotkey: HotKey::new(None, "h"),
        };

        let rectangle = ToolbarItem {
            name: "Rectangle",
            icon: constrain_path(rect_path()),
            hotkey: HotKey::new(None, "u"),
        };

        let ellipse = ToolbarItem {
            name: "Ellipse",
            icon: constrain_path(ellipse_path()),
            hotkey: HotKey::new(SysMods::Shift, "U"),
        };

        let knife = ToolbarItem {
            name: "Knife",
            icon: constrain_path(knife_path()),
            hotkey: HotKey::new(None, "e"),
        };

        let measure = ToolbarItem {
            name: "Measure",
            icon: constrain_path(measure_path()),
            hotkey: HotKey::new(None, "m"),
        };

        Toolbar::new(vec![
            select, pen, hyperpen, knife, preview, measure, rectangle, ellipse,
        ])
    }
}

fn constrain_path(mut path: BezPath) -> BezPath {
    let path_size = path.bounding_box().size();
    let icon_size = TOOLBAR_ITEM_SIZE.max_side() - TOOLBAR_ICON_PADDING * 2.0;
    let scale = icon_size / path_size.max_side();
    path.apply_affine(Affine::scale(scale));
    let center_offset = (TOOLBAR_ITEM_SIZE - (path_size * scale)).to_vec2() / 2.0;
    path.apply_affine(Affine::translate(center_offset));
    path
}

fn select_path() -> BezPath {
    let mut bez = BezPath::new();

    bez.move_to((110.0, 500.0));
    bez.line_to((110.0, 380.0));
    bez.line_to((2.0, 410.0));
    bez.line_to((0.0, 410.0));
    bez.line_to((159.0, 0.0));
    bez.line_to((161.0, 0.0));
    bez.line_to((320.0, 410.0));
    bez.line_to((318.0, 410.0));
    bez.line_to((210.0, 380.0));
    bez.line_to((210.0, 500.0));
    bez.line_to((110.0, 500.0));
    bez.close_path();
    bez
}

fn pen_path() -> BezPath {
    let mut bez = BezPath::new();

    bez.move_to((40.0, 500.0));
    bez.line_to((240.0, 500.0));
    bez.line_to((240.0, 410.0));
    bez.line_to((40.0, 410.0));
    bez.line_to((40.0, 500.0));
    bez.close_path();

    bez.move_to((40.0, 410.0));
    bez.line_to((240.0, 410.0));
    bez.line_to((239.0, 370.0));
    bez.line_to((280.0, 290.0));
    bez.curve_to((240.0, 220.0), (205.0, 130.0), (195.0, 0.0));
    bez.line_to((85.0, 0.0));
    bez.curve_to((


if (activeElement is BodyElement ||
            (!_frame.contains(activeElement) && activeElement is DivElement)) {
          scrollerEl.focus();
        }
        if (_hovering == false) {
          _hovering = true;
          _cancelTimeout();
          _showScrollbars(true);
          refresh();
        }
      });
      _frame.onMouseOut.listen((e) {
        _hovering = false;
        // Start hiding immediately if we aren't
        // scrolling or already in the process of
        // hiding the scrollbar
        if (!_scrollInProgress && _timer == null) {
          _boundHideFn();
        }
      });
    }
  }

  void _onStart(/*MouseEvent | Touch*/ e) {
    Element elementOver = e.target;
    if (elementOver == _verticalElement || elementOver == _horizontalElement) {
      _currentScrollVertical = elementOver == _verticalElement;
      if (_currentScrollVertical) {
        _currentScrollStartMouse = e.page.y;
        _currentScrollStartOffset = _scroller.getVerticalOffset();
      } else {
        _currentScrollStartMouse = e.page.x;
        _currentScrollStartOffset = _scroller.getHorizontalOffset();
      }
      _refreshScrollRatio();
      _scrollBarDragInProgress = true;
      _scroller._momentum.abort();
      e.stopPropagation();
    }
  }

  void _refreshScrollRatio() {
    Size contentSize = _scroller._getAdjustedContentSize();
    if (_currentScrollVertical) {
      _refreshScrollRatioHelper(
          _scroller._scrollSize.height, contentSize.height);
    } else {
      _refreshScrollRatioHelper(_scroller._scrollSize.width, contentSize.width);
    }
  }

  void _refreshScrollRatioHelper(num frameSize, num contentSize) {
    num frameTravelDistance = frameSize -
        _defaultScrollSize(frameSize, contentSize) -
        _PADDING_LENGTH * 2;
    if (frameTravelDistance < 0.001) {
      _currentScrollRatio = 0;
    } else {
      _currentScrollRatio = (contentSize - frameSize) / frameTravelDistance;
    }
  }

  void _onMove(/*MouseEvent | Touch*/ e) {
    if (!_scrollBarDragInProgress) {
      return;
    }
    _refreshScrollRatio();
    int coordinate = _currentScrollVertical ? e.page.y : e.page.x;
    num delta = (coordinate - _currentScrollStartMouse) * _currentScrollRatio;
    if (delta != 0) {
      num x;
      num y;
      _currentScrollStartOffset -= delta;
      if (_currentScrollVertical) {
        x = _scroller.getHorizontalOffset();
        y = _currentScrollStartOffset.toInt();
      } else {
        x = _currentScrollStartOffset.toInt();
        y = _scroller.getVerticalOffset();
      }
      _scroller.setPosition(x, y);
    }
    _currentScrollStartMouse = coordinate;
  }

  void _onEnd(Event e) {
    _scrollBarDragInProgress = false;
    // TODO(jacobr): make scrollbar less tightly coupled to the scroller.
    _scroller._onScrollerDragEnd.add(Event(ScrollerEventType.DRAG_END));
  }

  /// When scrolling ends, schedule a timeout to hide the scrollbars.
  void _onScrollerEnd(Event? e) {
    _cancelTimeout();
    _timer = Timer(const Duration(milliseconds: _DISPLAY_TIME), _boundHideFn);
    _scrollInProgress = false;
  }

  @override
  void onScrollerMoved(num scrollX, num scrollY, bool decelerating) {
    if (_scrollInProgress == false) {
      // Display the scrollbar and then immediately prepare to hide it...
      _onScrollerStart(null);
      _onScrollerEnd(null);
    }
    updateScrollbars(scrollX, scrollY);
  }

  v


s = atoi(argv[i++]);
      }
      else if(argv[i][1]=='p')
      {
        ++i;
        rep = atoi(argv[i++]);
      }
    }
    else
    {
      need_help = true;
      break;
    }
  }

  if(need_help)
  {
    std::cout << argv[0] << " -s <matrix sizes> -c <cache sizes> -t <nb tries> -p <nb repeats>\n";
    std::cout << "   <matrix sizes> : size\n";
    std::cout << "   <matrix sizes> : rows columns depth\n";
    return 1;
  }

#if EIGEN_VERSION_AT_LEAST(3,2,90)
  if(cache_size1>0)
    setCpuCacheSizes(cache_size1,cache_size2,cache_size3);
#endif

  A a(m,p); a.setRandom();
  B b(p,n); b.setRandom();
  C c(m,n); c.setOnes();
  C rc = c;

  std::cout << "Matrix sizes = " << m << "x" << p << " * " << p << "x" << n << "\n";
  std::ptrdiff_t mc(m), nc(n), kc(p);
  internal::computeProductBlockingSizes<Scalar,Scalar>(kc, mc, nc);
  std::cout << "blocking size (mc x kc) = " << mc << " x " << kc << "\n";

  C r = c;

  // check the parallel product is correct
  #if defined EIGEN_HAS_OPENMP
  Eigen::initParallel();
  int procs = omp_get_max_threads();
  if(procs>1)
  {
    #ifdef HAVE_BLAS
    blas_gemm(a,b,r);
    #else
    omp_set_num_threads(1);
    r.noalias() += a * b;
    omp_set_num_threads(procs);
    #endif
    c.noalias() += a * b;
    if(!r.isApprox(c)) std::cerr << "Warning, your parallel product is crap!\n\n";
  }
  #elif defined HAVE_BLAS
    blas_gemm(a,b,r);
    c.noalias() += a * b;
    if(!r.isApprox(c)) {
      std::cout << r  - c << "\n";
      std::cerr << "Warning, your product is crap!\n\n";
    }
  #else
    if(1.*m*n*p<2000.*2000*2000)
    {
      gemm(a,b,c);
      r.noalias() += a.cast<Scalar>() .lazyProduct( b.cast<Scalar>() );
      if(!r.isApprox(c)) {
        std::cout << r - c << "\n";
        std::cerr << "Warning, your product is crap!\n\n";
      }
    }
  #endif

  #ifdef HAVE_BLAS
  BenchTimer tblas;
  c = rc;
  BENCH(tblas, tries, rep, blas_gemm(a,b,c));
  std::cout << "blas  cpu         " << tblas.best(CPU_TIMER)/rep  << "s  \t" << (double(m)*n*p*rep*2/tblas.best(CPU_TIMER))*1e-9  <<  " GFLOPS \t(" << tblas.total(CPU_TIMER)  << "s)\n";
  std::cout << "blas  real        " << tblas.best(REAL_TIMER)/rep << "s  \t" << (double(m)*n*p*rep*2/tblas.best(REAL_TIMER))*1e-9 <<  " GFLOPS \t(" << tblas.total(REAL_TIMER) << "s)\n";
  #endif

  BenchTimer tmt;
  c = rc;
  BENCH(tmt,


 = { bg = C.color5 },
        Vimwikidefault = { bg = C.color3 },
        Vimwikibgreen = { bg = C.color2 },
        Vimwikiborange = { bg = U.blend(C.color1, C.color3, 0.5) },
        Vimwikibgray = { bg = C.color8 },
        Vimwikibblue = { bg = C.color4 },
        Vimwikibred = { bg = C.color1 },
        Vimwikibyellow = { bg = C.color3 },

        Vimwikigreen = { fg = C.color2 },
        Vimwikigray = { fg = C.color8 },
        Vimwikiyellow = { fg = C.color3 },
        Vimwikired = { fg = C.color1 },
        Vimwikipurple = { fg = C.color5 },
        Vimwikiorange = { fg = U.blend(C.color1, C.color3, 0.5) },
        Vimwikiblue = { fg = C.color4 },
    }
end

return M


itionalMetadataReferences.DefaultWithNewtonsoftJson10,
                    NewtonsoftJsonVersion.Version12 => AdditionalMetadataReferences.DefaultWithNewtonsoftJson12,
                    _ => throw new NotSupportedException(),
                },
                TestState =
                {
                    Sources = { source },
                },
            };

            csharpTest.ExpectedDiagnostics.AddRange(expected);

            await csharpTest.RunAsync();
        }

        private async Task VerifyBasicWithJsonNetAsync(NewtonsoftJsonVersion version, string source, params DiagnosticResult[] expected)
        {
            var vbTest = new VerifyVB.Test
            {
                ReferenceAssemblies = version switch
                {
                    NewtonsoftJsonVersion.Version10 => AdditionalMetadataReferences.DefaultWithNewtonsoftJson10,
                    NewtonsoftJsonVersion.Version12 => AdditionalMetadataReferences.DefaultWithNewtonsoftJson12,
                    _ => throw new NotSupportedException(),
                },
                TestState =
                {
                    Sources = { source },
                },
            };

            vbTest.ExpectedDiagnostics.AddRange(expected);

            await vbTest.RunAsync();
        }

        private static DiagnosticResult GetCSharpResultAt(int line, int column, DiagnosticDescriptor rule)
#pragma warning disable RS0030 // Do not use banned APIs
           => VerifyCS.Diagnostic(rule)
               .WithLocation(line, column);
#pragma warning restore RS0030 // Do not use banned APIs

        private static DiagnosticResult GetBasicResultAt(int line, int column, DiagnosticDescriptor rule)
#pragma warning disable RS0030 // Do not use banned APIs
           => VerifyVB.Diagnostic(rule)
               .WithLocation(line, column);
#pragma warning restore RS0030 // Do not use banned APIs
    }
}


MethodName(arg1, arg2)`: Method invocation with arguments.
- `Math.Max(x, y)`: Example method call.

## Element Access Expressions
- [x] `array[index]`: Accessing an array element.
- [x] `dictionary[key]`: Accessing a dictionary value.
- `list[0]`: Example element access.

## Object Creation Expressions
- [x] `new ClassName()`: Creating an instance of a class.
- [x] `new List<int>()`: Example object creation.
- [x] `new { Name = "John", Age = 30 }`: Creating an anonymous type.

## Lambda Expressions
- [x] `(x, y) => x + y`: Lambda expression.
- [x] `(int x) => { Console.WriteLine(x); }`: Example lambda expression.

## Anonymous Types (C# 3.0+)
- [x] `new { Name = "John", Age = 30 }`: Creating an anonymous type.
- `var person = new { Name = "Alice", Age = 25 }`: Example anonymous type creation.

## Object Initialization Expressions
- [x] `new Person { Name = "Alice", Age = 25 }`: Initializing an object.
- `new Point { X = 10, Y = 20 }`: Example object initialization.

## Collection Initialization Expressions (C# 3.0+)
- [x] `new List<int> { 1, 2, 3 }`: Initializing a collection.
- `var numbers = new List<int> { 1, 2, 3 }`: Example collection initialization.

## Array Initialization Expressions
- [x] `new int[] { 1, 2, 3 }`: Initializing an array.
- `int[] arr = { 1, 2, 3 }`: Example array initialization.

## Nullable Value Types
- [x] `int? nullableInt = null;`: Nullable integer.

## Type Conversion Expressions
- [x] `(int)x`: Explicit type conversion.
- [ ] `x as T`: Attempted type conversion (returns `null` if unsuccessful).
- `(T)x`: Example explicit type conversion.

## Arithmetic Expressions
- [x] `x + y`: Addition.
- [x] `x - y`: Subtraction.
- [x] `x * y`: Multiplication.
- [x] `x / y`: Division.
- [x] `x % y`: Modulus (remainder).

## Relational Expressions
- [x] `x < y`: Less than.
- [x] `x <= y`: Less than or equal to.
- [x] `x > y`: Greater than.
- [x] `x >= y`: Greater than or equal to.
- [x] `x == y`: Equal to.
- [x] `x != y`: Not equal to.

## Logical Expressions
- [x] `x && y`: Logical AND.
- [x] `x || y`: Logical OR.
- [x] `!x`: Logical NOT.

## Conditional Expressions
- [x] `condition ? trueExpression : falseExpression`: Conditional (ternary) operator.
- `(x > 0) ? "Positive" : "Non-positive"`: Example usage of the conditional operator.

## Assignment Expressions
- [x] `x = y`: Assignment.
- [x] `x += y`: Addition assignment.
- [x] `x -= y`: Subtraction assignment.
- [x] `x *= y`: Multiplication assignment.
- [x] `x /= y`: Division assignment.
- [x] `x %= y`: Modulus assignment.

## Increment and Decrement Expressions
- [x] `x++`: Post-increment.
- [x] `x--`: Post-decrement.
- [x] `++x`: Pre-increment.
- [x] `--x`: Pre-decrement.

# Common BigInteger Methods and Properties

## Constructors
- [x] `BigInteger()`: Initializes a new instance of the `BigInteger` class with a value of zero.
- [x] `BigInteger(int value)`: Initializes a new instance of the `BigInteger` class with the specified integer value.
- [x] `BigInteger(long value)`: Initializes a new instance of the `BigInteger` class with the specified long integer value.
- [x] `BigInteger(byte[] bytes)`: Initializes a new instance of the `BigInteger` class from an array of bytes.
- [ ] `BigInteger(double value)`: Initializes a ne


#!/bin/python

def sign(n):
    return n//abs(n)

def create_dict(arr):
    n=sum(1 for d in arr if d == 'n')
    ne=sum(1 for d in arr if d == 'ne')
    nw=sum(1 for d in arr if d == 'nw')
    s=sum(1 for d in arr if d == 's')
    sw=sum(1 for d in arr if d == 'sw')
    se=sum(1 for d in arr if d == 'se')
    return {'ns': n-s, 'nesw':ne-sw, 'nwse':nw-se}

def steps(arr):
    dirs = create_dict(arr)
    print(dirs)
    if dirs['nesw'] != 0 and dirs['nwse'] != 0 and sign(dirs['nesw']) == sign(dirs['nwse']):
        delta = min(abs(dirs['nwse']), abs(dirs['nesw']))
        if sign(dirs['nwse']) > 0:
            dirs['nwse'] -= delta
            dirs['nesw'] -= delta
            dirs['ns'] += delta
        else:
            dirs['nwse'] += delta
            dirs['nesw'] += delta
            dirs['ns'] -= delta
    elif dirs['ns'] != 0 and dirs['nwse'] != 0 and sign(dirs['nwse']) != sign(dirs['ns']):
        delta = min(abs(dirs['ns']), abs(dirs['nwse']))
        if sign(dirs['nwse']) > 0:
            dirs['nwse'] -= delta
            dirs['ns'] += delta
            dirs['nesw'] -= delta
        else:
            dirs['nwse'] += delta
            dirs['ns'] -= delta
            dirs['nesw'] += delta
    elif dirs['ns'] != 0 and dirs['nesw'] != 0 and sign(dirs['nesw']) != sign(dirs['ns']):
        delta = min(abs(dirs['ns']), abs(dirs['nesw']))
        if sign(dirs['nesw']) > 0:
            dirs['nesw'] -= delta
            dirs['ns'] += delta
            dirs['nwse'] -= delta
        else:
            dirs['nesw'] += delta
            dirs['ns'] -= delta
            dirs['nwse'] += delta
    print(dirs)
    return abs(dirs['ns']) + abs(dirs['nwse']) + abs(dirs['nesw'])

if __name__ == '__main__':
    with open('dec11input.txt') as f:
        arr = [d for d in f.readline().strip().split(',')]
        print(steps(arr))


musFinalBossStart:

musFinalBossChannel1:
	vibrato $e1
	env $0 $00
	duty $02
musice6c42:
	vol $6
	note gs3 $3c
	vibrato $01
	env $0 $00
	vol $3
	note gs3 $0c
	vibrato $e1
	env $0 $00
	vol $6
	note gs3 $08
	note a3  $08
	note as3 $08
	note b3  $48
	vibrato $01
	env $0 $00
	vol $3
	note b3  $18
	vibrato $e1
	env $0 $00
	vol $6
	note gs4 $3c
	vibrato $01
	env $0 $00
	vol $3
	note gs4 $0c
	vibrato $e1
	env $0 $00
	vol $6
	note gs4 $08
	note a4  $08
	note as4 $08
	note b4  $48
	vibrato $01
	env $0 $00
	vol $3
	note b4  $18
	vibrato $e1
	env $0 $00
	vol $6
	note as3 $3c
	vibrato $01
	env $0 $00
	vol $3
	note as3 $0c
	vibrato $e1
	env $0 $00
	vol $6
	note as3 $08
	note b3  $08
	note c4  $08
	note cs4 $48
	vibrato $01
	env $0 $00
	vol $3
	note cs4 $18
	vibrato $e1
	env $0 $00
	vol $6
	note as4 $3c
	vibrato $01
	env $0 $00
	vol $3
	note as4 $0c
	vibrato $e1
	env $0 $00
	vol $6
	note as4 $08
	note b4  $08
	note c5  $08
	note cs5 $48
	vibrato $01
	env $0 $00
	vol $3
	note cs5 $18
	vibrato $e1
	env $0 $00
	vol $6
	note ds5 $12
	note d5  $06
	rest $03
	vol $3
	note d5  $06
	rest $03
	vol $1
	note d5  $06
	rest $06
	vol $6
	note cs5 $12
	note c5  $06
	rest $03
	vol $3
	note c5  $06
	rest $03
	vol $1
	note c5  $06
	rest $06
	vol $6
	note ds5 $06
	rest $03
	vol $3
	note ds5 $03
	vol $6
	note ds5 $06
	note d5  $06
	rest $03
	vol $3
	note d5  $06
	rest $03
	vol $1
	note d5  $06
	rest $06
	vol $6
	note cs5 $03
	rest $03
	vol $6
	note cs5 $03
	rest $03
	vol $6
	note cs5 $06
	note c5  $06
	rest $03
	vol $3
	note c5  $06
	rest $03
	vol $1
	note c5  $06
	rest $06
	vol $6
	note e5  $12
	note ds5 $06
	vol $4
	note c5  $06
	note b4  $06
	note as4 $06
	note a4  $06
	vol $6
	note d5  $12
	note cs5 $06
	vol $4
	note fs4 $06
	note f4  $06
	note e4  $06
	note ds4 $06


/*
 * Copyright (c) 2001, Swedish Institute of Computer Science.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the Institute nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * This file is part of the lwIP TCP/IP stack.
 *
 * Author: Adam Dunkels <adam@sics.se>
 *
 * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $
 */

#include "httpd.h"
#include "httpd-fs.h"
#include "httpd-fsdata.h"

#ifndef NULL
#define NULL 0
#endif /* NULL */

#include "httpd-fsdata.c"

#if HTTPD_FS_STATISTICS
static u16_t count[HTTPD_FS_NUMFILES];
#endif /* HTTPD_FS_STATISTICS */

/*-----------------------------------------------------------------------------------*/
static u8_t
httpd_fs_strcmp(const char *str1, const char *str2)
{
  u8_t i;
  i = 0;
 loop:

  if(str2[i] == 0 ||
     str1[i] == '\r' ||
     str1[i] == '\n') {
    return 0;
  }

  if(str1[i] != str2[i]) {
    return 1;
  }

  ++i;
  goto loop;
}
/*-----------------------------------------------------------------------------------*/
int
httpd_fs_open(const char *name, struct httpd_fs_file *file)
{
#if HTTPD_FS_STATISTICS
  u16_t i = 0;
#endif /* HTTPD_FS_STATISTICS */
  struct httpd_fsdata_file_noconst *f;

  for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
      f != NULL;
      f = (struct httpd_fsdata_file_noconst *)f->next) {

    if(httpd_fs_strcmp(name, f->name) == 0) {
      file->data = f->data;
      file->len = f->len;
#if HTTPD_FS_STATISTICS
      ++count[i];
#endif /* HTTPD_FS_STATISTICS */
      return 1;
    }
#if HTTPD_FS_STATISTICS
    ++i;
#endif /* HTTPD_FS_STATISTICS */

  }
  return 0;
}
/*-----------------------------------------------------------------------------------*/
void
httpd_fs_init(void)
{
#if HTTPD_FS_STATISTICS
  u16_t i;
  for(i = 0; i < HTTPD_FS_NUMFILES; i++) {
    count[i] = 0;
  }
#endif /* HTTPD_FS_STATISTICS */
}
/*-----------------------------------------------------------------------------------*/
#if HTTPD_FS_STATISTICS
u16_t httpd_fs_count
(char *name)
{
  struct httpd_fsdata_file_noconst *f;
  u16_t i;

  i = 0;
  for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
      f != NULL;
      f = (struct httpd_fsdata_file_noconst *)f->next) {

    if(httpd_fs_strcmp(name, f->name) == 0) {
      return count[i];
    }
    ++i;
  }
  return 0;
}
#endif /* HTTPD_FS_STATISTICS */
/*-----------------------------------------------------------------------------------*/


($carousel-indicator-transition);
  }

  .active {
    opacity: $carousel-indicator-active-opacity;
  }
}

// Optional captions
//
//

.carousel-caption {
  position: absolute;
  right: (100% - $carousel-caption-width) * .5;
  bottom: $carousel-caption-spacer;
  left: (100% - $carousel-caption-width) * .5;
  padding-top: $carousel-caption-padding-y;
  padding-bottom: $carousel-caption-padding-y;
  color: $carousel-caption-color;
  text-align: center;
}

// Dark mode carousel

.carousel-dark {
  .carousel-control-prev-icon,
  .carousel-control-next-icon {
    filter: $carousel-dark-control-icon-filter;
  }

  .carousel-indicators [data-bs-target] {
    background-color: $carousel-dark-indicator-active-bg;
  }

  .carousel-caption {
    color: $carousel-dark-caption-color;
  }
}
// Responsive images (ensure images don't scale beyond their parents)
//
// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
// We previously tried the "images are responsive by default" approach in Bootstrap v2,
// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
// which weren't expecting the images within themselves to be involuntarily resized.
// See also https://github.com/twbs/bootstrap/issues/18178
.img-fluid {
  @include img-fluid();
}

// Image thumbnails
.img-thumbnail {
  padding: $thumbnail-padding;
  background-color: $thumbnail-bg;
  border: $thumbnail-border-width solid $thumbnail-border-color;
  @include border-radius($thumbnail-border-radius);
  @include box-shadow($thumbnail-box-shadow);

  // Keep them at most 100% wide
  @include img-fluid();
}

//
// Figures
//

.figure {
  // Ensures the caption's text aligns with the image.
  display: inline-block;
}

.figure-img {
  margin-bottom: $spacer * .5;
  line-height: 1;
}

.figure-caption {
  @include font-size($figure-caption-font-size);
  color: $figure-caption-color;
}
// Base class
//
// Requires one of the contextual, color modifier classes for `color` and
// `background-color`.

.badge {
  // scss-docs-start badge-css-vars
  --#{$prefix}badge-padding-x: #{$badge-padding-x};
  --#{$prefix}badge-padding-y: #{$badge-padding-y};
  @include rfs($badge-font-size, --#{$prefix}badge-font-size);
  --#{$prefix}badge-font-weight: #{$badge-font-weight};
  --#{$prefix}badge-color: #{$badge-color};
  --#{$prefix}badge-border-radius: #{$badge-border-radius};
  // scss-docs-end badge-css-vars

  display: inline-block;
  padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x);
  @include font-size(var(--#{$prefix}badge-font-size));
  font-weight: var(--#{$prefix}badge-font-weight);
  line-height: 1;
  color: var(--#{$prefix}badge-color);
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  @include border-radius(var(--#{$prefix}badge-border-radius));
  @include gradient-bg();

  // Empty badges collapse automatically


":");
    let sessions_str = format!("{}\n{}", session1_str, session2_str);
    let sessions = Sessions::from_str(&sessions_str, SESSION_ALL).unwrap();
    #[cfg(feature = "tmux_1_8")]
    assert_eq!(sessions[0].id, Some(0));

    //"1557947146::1:1557947146:1::::0::0:$0:1557947146:0:0:4,3,2,1:4\n\
    //1557947146::0:1557947146:1::::0::0:$40:1557947146:0:test_has_session:1:1";
    let session1_vec = vec![
        // session_activity
        #[cfg(feature = "tmux_2_1")]
        "1557947146",
        // session_activity_string
        #[cfg(all(feature = "tmux_2_1", not(feature = "tmux_2_2")))]
        "",
        // session_alerts
        #[cfg(feature = "tmux_2_1")]
        "",
        // session_attached
        #[cfg(feature = "tmux_1_6")]
        "1",
        // session_attached_list
        #[cfg(feature = "tmux_3_1")]
        "",
        // session_created
        #[cfg(feature = "tmux_1_6")]
        "1557947146",
        // session_created_string
        #[cfg(all(feature = "tmux_1_6", not(feature = "tmux_2_2")))]
        "",
        // session_format
        #[cfg(feature = "tmux_2_6")]
        "1",
        // session_group
        #[cfg(feature = "tmux_1_6")]
        "",
        // session_group_attached
        #[cfg(feature = "tmux_3_1")]
        "",
        // session_group_attached_list
        #[cfg(feature = "tmux_3_1")]
        "",
        // session_group_list
        #[cfg(feature = "tmux_2_7")]
        "",
        // session_group_many_attached
        #[cfg(feature = "tmux_3_1")]
        "",
        // session_group_size
        #[cfg(feature = "tmux_2_7")]
        "",
        // session_grouped
        #[cfg(feature = "tmux_1_6")]
        "",
        // session_height
        #[cfg(all(feature = "tmux_1_6", not(feature = "tmux_2_9")))]
        "",
        // session_width
        #[cfg(all(feature = "tmux_1_6", not(feature = "tmux_2_9")))]
        "0",
        // session_id
        #[cfg(feature = "tmux_1_8")]
        "$0",
        // session_last_attached
        #[cfg(feature = "tmux_2_1")]
        "1557947146",
        // session_last_attached_string
        #[cfg(all(feature = "tmux_2_1", not(feature = "tmux_2_2")))]
        "",
        // session_many_attached
        #[cfg(feature = "tmux_2_0")]
        "0",
        // session_name
        #[cfg(feature = "tmux_1_6")]
        "0",
        // session_stack
        #[cfg(feature = "tmux_2_5")]
        "3,2,1",
        // session_windows
        #[cfg(feature = "tmux_1_6")]
        "3",
    ];
    let session2_vec = vec![
        // session_activity
        #[cfg(feature = "tmux_2_1")]
        "1557947146",
        // session_activity_string
        #[cfg(all(feature = "tmux_2_1", not


 `canbus_nodeid`를 할당합니다.

The CMD_SET_KLIPPER_NODEID message format is: `<1-byte message_id = 0x01><6-byte canbus_uuid><1-byte canbus_nodeid>`

### RESP_NEED_NODEID 메시지

The RESP_NEED_NODEID message format is: `<1-byte message_id = 0x20><6-byte canbus_uuid><1-byte set_klipper_nodeid = 0x01>`

## 데이터 패킷

A micro-controller that has been assigned a nodeid via the CMD_SET_KLIPPER_NODEID command can send and receive data packets.

노드의 수신 CAN bus ID(`canbus_nodeid * 2 + 256`)를 사용하는 메시지의 패킷 데이터는 단순히 버퍼에 추가되고 완전한 [mcu protocol message](Protocol.md) 가 발견되면 해당 내용을 구문 분석하고 처리합니다. 데이터는 바이트 스트림으로 처리됩니다 - CAN bus 패킷의 시작과 정렬하기 위해 Klipper 메시지 블록의 시작에 대한 요구 사항은 없습니다.

유사하게, mcu 프로토콜 메시지 응답은 노드의 전송 CAN bus ID(`canbus_nodeid * 2 + 256 + 1`)와 함께 메시지 데이터를 하나 이상의 패킷으로 복사하여 마이크로 컨트롤러에서 호스트로 전송됩니다.
# 릴리즈

Klipper 배포의 역사. Klipper 설치에 대한 정보는 [installation](Installation.md)을 참조하십시오.

## Klipper 0.13.0

Available on 20250411. Major changes in this release:

* New "sweeping vibrations" resonance testing mechanism for input shaper.
* Fans and GPIO pins can now be assigned a formula (via Jinja2 "templates").
* The bed_mesh code now supports "adaptive bed mesh". The area probed can be adjusted for the size of the print.
* A new `minimum_cruise_ratio` kinematic parameter has been added (it replaces the previous `max_accel_to_decel` parameter).
* Several new sensors added:
   * Support


_time;

  if (!thread_cpu_time_unchecked(thread, &sys_time, &user_time)) {
    return -1;
  }

  return user_sys_cpu_time ? sys_time + user_time : user_time;
}

void os::current_thread_cpu_time_info(jvmtiTimerInfo *info_ptr) {
  info_ptr->max_value = ALL_64_BITS;       // will not wrap in less than 64 bits
  info_ptr->may_skip_backward = false;     // elapsed time not wall time
  info_ptr->may_skip_forward = false;      // elapsed time not wall time
  info_ptr->kind = JVMTI_TIMER_TOTAL_CPU;  // user+system time is returned
}

void os::thread_cpu_time_info(jvmtiTimerInfo *info_ptr) {
  info_ptr->max_value = ALL_64_BITS;       // will not wrap in less than 64 bits
  info_ptr->may_skip_backward = false;     // elapsed time not wall time
  info_ptr->may_skip_forward = false;      // elapsed time not wall time
  info_ptr->kind = JVMTI_TIMER_TOTAL_CPU;  // user+system time is returned
}

bool os::is_thread_cpu_time_supported() {
  return true;
}

// System loadavg support. Returns -1 if load average cannot be obtained.
// For now just return the system wide load average (no processor sets).
int os::loadavg(double values[], int nelem) {

  guarantee(nelem >= 0 && nelem <= 3, "argument error");
  guarantee(values, "argument error");

  if (os::Aix::on_pase()) {

    // AS/400 PASE: use libo4 porting library
    double v[3] = { 0.0, 0.0, 0.0 };

    if (libo4::get_load_avg(v, v + 1, v + 2)) {
      for (int i = 0; i < nelem; i ++) {
        values[i] = v[i];
      }
      return nelem;
    } else {
      return -1;
    }

  } else {

    // AIX: use libperfstat
    libperfstat::cpuinfo_t ci;
    if (libperfstat::get_cpuinfo(&ci)) {
      for (int i = 0; i < nelem; i++) {
        values[i] = ci.loadavg[i];
      }
    } else {
      return -1;
    }
    return nelem;
  }
}

void os::pause() {
  char filename[MAX_PATH];
  if (PauseAtStartupFile && PauseAtStartupFile[0]) {
    jio_snprintf(filename, MAX_PATH, "%s", PauseAtStartupFile);
  } else {
    jio_snprintf(filename, MAX_PATH, "./vm.paused.%d", current_process_id());
  }

  int fd = ::open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
  if (fd != -1) {
    struct stat buf;
    ::close(fd);
    while (::stat(filename, &buf) == 0) {
      (void)::poll(NULL, 0, 100);
    }
  } else {
    trcVerbose("Could not open pause file '%s', continuing immediately.", filename);
  }
}

bool os::is_primordial_thread(void) {
  if (pthread_self() == (pthread_t)1) {
    return true;
  } else {
    return false;
  }
}

// OS recognitions (PASE/AIX, OS level) call this before calling any
// one of Aix::on_pase(), Aix::os_version() static
void os::Aix::initialize_os_info() {

  assert(_on_pase == -1 && _os_version == 0, "already called.");

  struct utsname uts;
  memset(&uts, 0, sizeof(uts


        /// <summary>
        /// Gets or sets the text search.
        /// </summary>
        /// <value>The text search.</value>
        [XmlElement("textSearch")]
        public string TextSearch { get; set; }

        /// <summary>
        /// Gets or sets the index of the icons group.
        /// </summary>
        /// <value>The index of the icons group.</value>
        [XmlElement("iconsGroupIndex")]
        public int IconsGroupIndex { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [show non public skills].
        /// </summary>
        /// <value>
        /// 	<c>true</c> if [show non public skills]; otherwise, <c>false</c>.
        /// </value>
        [XmlElement("showNonPublicSkills")]
        public bool ShowNonPublicSkills { get; set; }
    }
}


strb r0, [r4, #0x1b]
	adds r0, r4, #0
	bl UpdateSpriteAnimation
	adds r0, r4, #0
	bl DisplaySprite
	pop {r4, r5}
	pop {r0}
	bx r0
	.align 2, 0
_080938B0: .4byte gUnknown_080D7458

	thumb_func_start sub_80938B4
sub_80938B4: @ 0x080938B4
	push {r4, r5, lr}
	adds r5, r0, #0
	movs r0, #0xc6
	lsls r0, r0, #1
	adds r4, r5, r0
	ldr r0, [r5, #0x64]
	asrs r0, r0, #8
	strh r0, [r4, #0x10]
	ldr r0, [r5, #0x68]
	asrs r0, r0, #8
	subs r0, #0xf
	strh r0, [r4, #0x12]
	ldr r0, [r4, #8]
	movs r1, #0x80
	lsls r1, r1, #3
	orrs r0, r1
	str r0, [r4, #8]
	adds r0, r4, #0
	bl DisplaySprite
	ldr r0, [r5, #0x64]
	asrs r0, r0, #8
	strh r0, [r4, #0x10]
	ldr r0, [r5, #0x68]
	asrs r0, r0, #8
	subs r0, #0x1e
	strh r0, [r4, #0x12]
	ldr r0, [r4, #8]
	ldr r1, _08093900 @ =0xFFFFFBFF
	ands r0, r1
	str r0, [r4, #8]
	adds r0, r4, #0
	bl DisplaySprite
	pop {r4, r5}
	pop {r0}
	bx r0
	.align 2, 0
_08093900: .4byte 0xFFFFFBFF

	thumb_func_start sub_8093904
sub_8093904: @ 0x08093904
	push {r4, r5, r6, lr}
	adds r5, r0, #0
	movs r6, #0
	b _08093944
_0809390C:
	lsls r2, r6, #2
	adds r4, r2, r6
	lsls r4, r4, #3
	movs r0, #0xee
	lsls r0, r0, #1
	adds r4, r4, r0
	adds r4, r5, r4
	ldr r0, [r5, #0x44]
	asrs r0, r0, #8
	lsls r1, r6, #3
	adds r0, r0, r1
	adds r0, r0, r2
	strh r0, [r4, #0x10]
	ldr r0, [r5, #0x48]
	asrs r0, r0, #8
	subs r0, #1
	strh r0, [r4, #0x12]
	movs r0, #0xff
	strb r0, [r4, #0x1b]
	adds r0, r4, #0
	bl UpdateSpriteAnimation
	adds r0, r4, #0
	bl DisplaySprite
	adds r0, r6, #1
	lsls r0, r0, #0x18
	lsrs r6, r0, #0x18
_08093944:
	ldrb r0, [r5, #5]
	cm


.toFloat(), mPaintGray)
                canvas.drawLine(pointBottom.x.toFloat(), pointBottom.y.toFloat(), pointCenter2.x.toFloat(), pointCenter2.y.toFloat(), mPaintGray)
            }

        }
    }

    //设置ItemView的内嵌偏移长度（inset）
    override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
        super.getItemOffsets(outRect, view, parent, state)

        outRect.set(itemLeft.toInt(), itemTop.toInt(), 0, 0)
    }
}package com.smeup.dspfparser.linesprocessor

import com.smeup.dspfparser.positionals.DTKBS
import com.smeup.dspfparser.positionals.FieldType
import com.smeup.dspfparser.positionals.Reference
import com.smeup.dspfparser.positionals.Reserved
import com.smeup.dspfparser.positionals.TypeOfName
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotEquals

internal class LineTest : LinesProcessorLoader("./src/test/resources/FAKE.dspf") {
    init {
        this.linesProcessor.createLines()
    }

    @Test
    fun line_1() {
        val line = this.linesProcessor.lines[0]
        assertEquals(1, line.count)
        assertEquals("00101", line.sequenceNumber)
        assertEquals('A', line.a)
        assertEquals(TypeOfName.R, line.typeOfName)
        assertEquals(Reserved.BLANK, line.reserved)
        assertEquals("RECORD0001", line.fieldName)
        assertEquals(Reference.R, line.reference)
        assertEquals(45, line.length)
        assertEquals(DTKBS.W, line.dataTypeKeyboardShift)
        assertEquals(10, line.decimalsPositions)
        assertEquals(FieldType.B, line.fieldType)
        assertEquals(12, line.y)
        assertEquals(22, line.x)
        assertNotEquals(line.type, LineType.CONSTANT)
    }

    @Test
    fun line_2() {
        val line = this.linesProcessor.lines[1]
        assertNotEquals(line.type, LineType.CONSTANT)
    }

    @Test
    fun line_3() {
        val line = this.linesProcessor.lines[2]
        assertNotEquals(line.type, LineType.CONSTANT)
    }

    @Test
    fun line_4() {
        val line = this.linesProcessor.lines[3]
        assertEquals(12, line.y)
        assertEquals(22, line.x)
        assertEquals(line.type, LineType.CONSTANT)
    }
}
/*
 * Copyright 2019 Sme.UP S.p.A.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.smeup.dspfparser.linesprocessor

import com.smeup.dspfparser.positionals.LAST_COLUMN
import com.smeup.dspfparser.positionals.LineInfo
import com.smeup.dspfparser.utils.removeNewLineAndExtend

/*
    substring trims here are allowed only in some cases for performance reasons. Do not trim randomly!
    trimming blank spaces to "" can cause errors when parsing numbers
    further trims are performed at the next step

    for comments and keywords:
    trimming is needed to prevent holding in memory as much as 5000 blank characters
    padding is needed because a "" string will throw errors, and that
    occurs when trimming a completely blank line (no keywords)
*/
internal data


om, geometry_attr="geometry", srs=self.srid_out, props=props )

    def get_geometry(self, tweet):
        if tweet["coordinates"] is not None:
            return tweet["coordinates"]
        # geo field is deprecated. Should be removed
        if tweet["geo"] is not None:
            return tweet["geo"]
        if tweet["place"] is not None:
            if tweet["place"]["bounding_box"] is not None:
                return tweet["place"]["bounding_box"]

        raise NoGeometryException(locator="Twitter", layer=self.name)

    def get_node_names(self, tweet):
        nodes = []

        if self.attributes == '*':
            for key in tweet.keys():
                if key not in self.geo_keys:
                    childs = self.get_nodes(key, tweet[key], key)
                    nodes.extend(childs)
        else:
            nodes = self.attributes.split(",")

        return nodes

    def get_nodes(self, key, tweet, path):
        nodes = []

        if type(tweet) is dict:
            for key in tweet.keys():
                if key not in self.geo_keys:
                    childs = self.get_nodes(key, tweet[key], "%s.%s" % (path, key))
                    nodes.extend(childs)
        else:
            nodes.append("%s" % path)

        return nodes

class TwitterAPI(object):

    settings = {
        'request_token_url' : 'https://api.twitter.com/oauth/request_token',
        'authorize_url' : 'https://api.twitter.com/oauth/authorize',
        'access_token_url' : 'https://api.twitter.com/oauth/access_token'
    }

    client = None

    def __init__(self, consumer_key, consumer_secret, token_key, token_secret):
        consumer = oauth.Consumer(key = consumer_key, secret = consumer_secret)
        token = oauth.Token(key = token_key, secret = token_secret)

        self.client = oauth.Client(consumer, token)

    def request(self, url, http_method = "GET", post_body = "", http_headers = {}):
        resp, content = self.client.request(url, method = http_method, body = post_body, headers = http_headers)
        return content


w3, [x3, 56]
	cmp	w3, w24
	bne	.L791
	cmp	w2, w0
	bge	.L798
.L786:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
	.size	MVC_ReorderLTList, .-MVC_ReorderLTList
	.global	_mcount
	.align	2
	.p2align 3,,7
	.global	MVC_GetMaxViewIdx
	.type	MVC_GetMaxViewIdx, %function
MVC_GetMaxViewIdx:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	mov	x21, x0
	mov	x0, x30
	mov	w19, w1
	mov	w22, w2
	mov	w20, w3
	bl	_mcount
	add	x0, x21, 10768384
	add	x1, x0, 4068
	ldr	w5, [x0, 4064]
	adds	w5, w5, 1
	beq	.L812
	ldr	w0, [x0, 4068]
	cmp	w19, w0
	beq	.L812
	mov	w6, w5
	mov	w0, 0
	b	.L806
	.p2align 3
.L808:
	ldr	w4, [x1, w0, sxtw 2]
	cmp	w19, w4
	beq	.L814
.L806:
	add	w0, w0, 1
	cmp	w0, w5
	bne	.L808
.L809:
	mov	w0, 0
	tbnz	w6, #31, .L807
.L805:
	sbfiz	x0, x20, 1, 32
	add	x0, x0, x6, sxtw
	cbnz	w22, .L815
	add	x0, x21, x0, lsl 2
	add	x0, x0, 10772480
	ldr	w0, [x0, 12]
.L807:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.p2align 3
.L815:
	add	x0, x0, 2691072
	ldp	x19, x20, [sp, 16]
	add	x0, x21, x0, lsl 2
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ldr	w0, [x0, 8172]
	ret
	.p2align 3
.L814:
	mov	w6, w0
	b	.L809
.L812:
	mov	w6, 0
	b	.L805
	.size	MVC_GetMaxViewIdx, .-MVC_GetMaxViewIdx
	.global	_mcount
	.align	2
	.p2align 3,,7
	.global	mvc_get_inter_view_pic
	.type	mvc_get_inter_view_pic, %function
mvc_get_inter_view_pic:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	stp


 dest as *mut u8, count);
}

#[no_mangle]
pub unsafe extern "C" fn strnlen_s(str: *const c_char, mut strsz: size_t) -> size_t {
    if str.is_null() {
        return 0;
    }

    let mut p = str;
    while strsz > 0 && *p != 0 {
        strsz -= 1;
        p = p.add(1);
    }

    ((p as usize) - (str as usize)) / mem::size_of::<c_char>()
}

pub(crate) unsafe fn memcmp_rs(a: *const c_void, b: *const c_void, mut n: size_t) -> c_int {
    let mut a = a as *const u8;
    let mut b = b as *const u8;

    while n > 0 {
        let cmp = *a - *b;
        if cmp != 0 {
            return c_int::from(cmp);
        }

        a = a.add(1);
        b = b.add(1);
        n -= 1;
    }

    0
}
<reponame>sebcrozet/rust-sfml
/*
* Rust-SFML - Copyright (c) 2013 <NAME>.
*
* The original software, SFML library, is provided by <NAME>.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not claim
*    that you wrote the original software. If you use this software in a product,
*    an acknowledgment in the product documentation would be appreciated but is
*    not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
*    misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source distribution.
*/

//! Utility class for manpulating RGBA colors
//!
//! Color is a simple color class composed of 4 components: Red, Green, Blue, Alpha

use std::ops::{Add, Mul};

use csfml_graphics_sys as ffi;

/// Utility class for manpulating RGBA colors
///
/// sfColor is a simple color class composed of 4 components: Red, Green, Blue, Alpha
#[repr(C)]
pub struct Color(pub ffi::sfColor);

impl Color {

    /// Construct a color from its 3 RGB components
    ///
    /// # Arguments
    /// * red - Red component   (0 .. 255)
    /// * green - -Green component (0 .. 255)
    /// * blue - Blue component  (0 .. 255)
    ///
    /// Return Color object constructed from the components
    pub fn new_rgb(red: u8, green: u8, blue: u8) -> Color {
        Color(ffi::sfColor {
            red: red,
            green: green,
            blue: blue,
            alpha: 255
        })
    }

    /// Construct a color from its 4 RGBA components
    ///
    /// # Arguments
    /// * red - Red component   (0 .. 255)
    /// * green - -Green component (0 .. 255)
    /// * blue - Blue component  (0 .. 255)
    /// * alpha - Alpha component  (0 .. 255)
    ///
    /// Return Color object constructed from the components
    pub fn new_rgba(red: u8, green: u8, blue: u8, alpha: u8) -> Color {
        Color(ffi::sfColor {
            red: red,
            green: green,
            blue: blue,
            alpha: alpha


			ExecuteOrderFromTable( {
				UnitIndex = self.me:entindex(),
				OrderType = DOTA_UNIT_ORDER_MOVE_TO_TARGET,
				TargetIndex = self.hAttackTarget:entindex()
			} )

			return
		end

		local hEtherealBlade = FindItemByName( self.me, "item_ethereal_blade" )
		if hEtherealBlade and hEtherealBlade:IsFullyCastable() then
			ExecuteOrderFromTable( {
				UnitIndex = self.me:entindex(),
				OrderType = DOTA_UNIT_ORDER_CAST_TARGET,
				AbilityIndex = hEtherealBlade:entindex(),
				TargetIndex = self.hAttackTarget:entindex()
			} )
			return
		end

		if self.hAbilityStarfall and self.hAbilityStarfall:IsFullyCastable() then
			ExecuteOrderFromTable( {
				UnitIndex = self.me:entindex(),
				OrderType = DOTA_UNIT_ORDER_CAST_NO_TARGET,
				AbilityIndex = self.hAbilityStarfall:entindex()
			} )
			return
		end

		local hDagon = FindItemByName( self.me, "item_dagon_5" )
		if hDagon and hDagon:IsFullyCastable() then
			ExecuteOrderFromTable( {
				UnitIndex = self.me:entindex(),
				OrderType = DOTA_UNIT_ORDER_CAST_TARGET,
				AbilityIndex = hDagon:entindex(),
				TargetIndex = self.hAttackTarget:entindex()
			} )
			return
		end

	elseif self.nBotState == MIRANA_BOT_STATE_RETREAT then

		local hRetreatEntity = Entities:FindByName( nil, "mirana_retreat_location" )

		ExecuteOrderFromTable( {
			UnitIndex = self.me:entindex(),
			OrderType = DOTA_UNIT_ORDER_MOVE_TO_POSITION,
			Position = hRetreatEntity:GetAbsOrigin()
		} )

		self:ChangeBotState( MIRANA_BOT_STATE_IDLE )

	end
end

function CBasicsIntroMiranaBot:ShootArrowAtPosition( vPosition )
	ExecuteOrderFromTable( {
		UnitIndex = self.me:entindex(),
		OrderType = DOTA_UNIT_ORDER_CAST_POSITION,
		AbilityIndex = self.hAbilityArrow:entindex(),
		Position = vPosition
	} )
end

function CBasicsIntroMiranaBot:ShootArrowAtTarget( hTarget )
	if hTarget == nil then
		print( "Can't shoot arrow at a nil target" )
		return
	end

	self:ShootArrowAtPosition( hTarget:GetAbsOrigin() )
end

function CBasicsIntroMiranaBot:AttackTarget( hTarget )
	ExecuteOrderFromTable( {
		UnitIndex = self.me:entindex(),
		OrderType = DOTA_UNIT_ORDER_ATTACK_TARGET,
		TargetIndex = hTarget:entindex(),
	} )
end

function FindItemByName( hUnit, strItemName )
	for iSlot = DOTA_ITEM_SLOT_1,DOTA_ITEM_MAX do
		local hItem = hUnit:GetItemInSlot( iSlot )
		if hItem and hItem:GetAbilityName() == strItemName then
			return hItem
		end
	end
end

-----------------------------------------------------------------------------------------------------

function Spawn( entityKeyValues )
	if IsServer() then
		thisEntity:SetContextThink( "BasicsIntroMiranaThink", BasicsIntroMiranaThink, 0.25 )

		thisEntity.Bot = CBasicsIntroMiranaBot( thisEntity )
	end
end

function BasicsIntroMiranaThink()
	if IsServer() == false then
		return -1
	end

	thisEntity.Bot:BotThink()

	return 0.1
end


00bc
  IL_009f:  ldloc.0
  IL_00a0:  ldc.i4.s   103
  IL_00a2:  beq.s      IL_00c6
  IL_00a4:  ldloc.0
  IL_00a5:  ldc.i4     0x3e9
  IL_00aa:  sub
  IL_00ab:  switch    (
        IL_00c6,
        IL_00c6,
        IL_00c6)
  IL_00bc:  ldstr      ""default ""
  IL_00c1:  call       ""void System.Console.Write(string)""
  IL_00c6:  ldarga.s   V_0
  IL_00c8:  call       ""bool short?.HasValue.get""
  IL_00cd:  brfalse    IL_016e
  IL_00d2:  ldarga.s   V_0
  IL_00d4:  call       ""short short?.GetValueOrDefault()""
  IL_00d9:  stloc.0
  IL_00da:  ldloc.0
  IL_00db:  ldc.i4.s   101
  IL_00dd:  bgt.s      IL_00f9
  IL_00df:  ldloc.0
  IL_00e0:  ldc.i4.1
  IL_00e1:  sub
  IL_00e2:  switch    (
        IL_0117,
        IL_0122,
        IL_012d)
  IL_00f3:  ldloc.0
  IL_00f4:  ldc.i4.s   101
  IL_00f6:  beq.s      IL_0138
  IL_00f8:  ret
  IL_00f9:  ldloc.0
  IL_00fa:  ldc.i4.s   103
  IL_00fc:  beq.s      IL_0143
  IL_00fe:  ldloc.0
  IL_00ff:  ldc.i4     0x3e9
  IL_0104:  sub
  IL_0105:  switch    (
        IL_014e,
        IL_0159,
        IL_0164)
  IL_0116:  ret
  IL_0117:  ldstr      ""FAIL""
  IL_011c:  call       ""void System.Console.Write(string)""
  IL_0121:  ret
  IL_0122:  ldstr      ""FAIL""
  IL_0127:  call       ""void System.Console.Write(string)""
  IL_012c:  ret
  IL_012d:  ldstr      ""FAIL""
  IL_0132:  call       ""void System.Console.Write(string)""
  IL_0137:  ret
  IL_0138:  ldstr      ""FAIL""
  IL_013d:  call       ""void System.Console.Write(string)""
  IL_0142:  ret
  IL_0143:  ldstr      ""FAIL""
  IL_0148:  call       ""void System.Console.Write(string)""
  IL_014d:  ret
  IL_014e:  ldstr      ""FAIL""
  IL_0153:  call       ""void System.Console.Write(string)""
  IL_0158:  ret
  IL_0159:  ldstr      ""FAIL""
  IL_015e:  call       ""void System.Console.Write(string)""
  IL_0163:  ret
  IL_0164:  ldstr      ""FAIL""
  IL_0169:  call       ""void System.Console.Write(string)""
  IL_016e:  ret
}");
        }

        [Fact, WorkItem(7625, "https://github.com/dotnet/roslyn/issues/7625")]
        public void SwitchOnNullableInt64WithInt32Label()
        {
            var text = @"public static class C
{
    public static bool F(long? x)
    {
        switch (x)
        {
            case 1:
                return true;
            default:
                return false;
        }
    }
    static void Main()
    {
        System.Console.WriteLine(F(1));
    }


/*
   +----------------------------------------------------------------------+
   | PHP Version 5                                                        |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997-2016 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 3.01 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available through the world-wide-web at the following url:           |
   | http://www.php.net/license/3_01.txt                                  |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | license@php.net so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Authors: Felipe Pena <felipe@php.net>                                |
   | Authors: Joe Watkins <joe.watkins@live.co.uk>                        |
   | Authors: Bob Weinand <bwoebi@php.net>                                |
   +----------------------------------------------------------------------+
*/

#include "php.h"
#include "phpdbg.h"
#include "phpdbg_utils.h"
#include "phpdbg_info.h"
#include "phpdbg_bp.h"
#include "phpdbg_prompt.h"

ZEND_EXTERN_MODULE_GLOBALS(phpdbg);

#define PHPDBG_INFO_COMMAND_D(f, h, a, m, l, s) \
	PHPDBG_COMMAND_D_EXP(f, h, a, m, l, s, &phpdbg_prompt_commands[14])

const phpdbg_command_t phpdbg_info_commands[] = {
	PHPDBG_INFO_COMMAND_D(break,    "show breakpoints",              'b', info_break,   NULL, 0),
	PHPDBG_INFO_COMMAND_D(files,    "show included files",           'F', info_files,   NULL, 0),
	PHPDBG_INFO_COMMAND_D(classes,  "show loaded classes",           'c', info_classes, NULL, 0),
	PHPDBG_INFO_COMMAND_D(funcs,    "show loaded classes",           'f', info_funcs,   NULL, 0),
	PHPDBG_INFO_COMMAND_D(error,    "show last error",               'e', info_error,   NULL, 0),
	PHPDBG_INFO_COMMAND_D(vars,     "show active variables",         'v', info_vars,    NULL, 0),
	PHPDBG_INFO_COMMAND_D(literal,  "show active literal constants", 'l', info_literal, NULL, 0),
	PHPDBG_INFO_COMMAND_D(memory,   "show memory manager stats",     'm', info_memory,  NULL, 0),
	PHPDBG_END_COMMAND
};

PHPDBG_INFO(break) /* {{{ */
{
	phpdbg_print_breakpoints(PHPDBG_BREAK_FILE TSRMLS_CC);
	phpdbg_print_breakpoints(PHPDBG_BREAK_SYM TSRMLS_CC);
	phpdbg_print_breakpoints(PHPDBG_BREAK_METHOD TSRMLS_CC);
	phpdbg_print_breakpoints(PHPDBG_BREAK_OPLINE TSRMLS_CC);
	phpdbg_print_breakpoints(PHPDBG_BREAK_FILE_OPLINE TSRMLS_CC);
	phpdbg_print_breakpoints(PHPDBG_BREAK_FUNCTION_OPLINE TSRMLS_CC);
	phpdbg_print_breakpoints(PHPDBG_BREAK_METHOD_OPLINE TSRMLS_CC);
	phpdbg_print_breakpoints(PHPDBG_BREAK_COND TSRMLS_CC);
	phpdbg_print_breakpoints(PHPDBG_BREAK_OPCODE TSRMLS_CC);

	return SUCCESS;
} /* }}} */

PHPDBG_INFO(files) /* {{{ */
{
	HashPosition pos;
	char *fname;

	phpdbg_notice("Included files: %d",
		zend_hash_num_elements(&EG(included_files)));

	zend_hash_internal_pointer_reset_ex(&EG(included_files), &pos);
	while (zend_hash_get_current_key_ex(&EG(included_files), &fname,
		NULL, NULL, 0, &pos) == HASH_KEY_IS_STRING) {
		phpdbg_writeln("File: %s", fname);
		zend_hash_move_forward_ex(&EG(included_files), &pos);
	}

	return SUCCESS;
} /* }}} */

PHPDBG_INFO(error) /* {{{ */
{
	if (PG(last_error_message)) {
		phpdbg_writeln("Last error: %s at %s line %d",
			PG(last_error_message), PG(last_error_file), PG(last_error_lineno));
	} else {
		phpdbg_notice("No error found!");
	}
	return SUCCESS;
} /* }}} */

PHPDBG_INFO(vars) /* {{{ */
{
	HashTable vars;
	HashPosition pos;
	char *var;
	zval **data;

	if (!EG(active_op_array)) {
		phpdbg_error("No active op array!");
		return SUCCESS;
	}

	if (!EG(active_symbol_table)) {
		zend_rebuild_symbol_table(TSRMLS_C);

		if (!EG(active_symbol_table)) {
			phpdbg_error("No active symbol table!");
			return SUCCESS;
		}
	}

	zend_hash_init(&vars, 8, NULL, NULL, 0);

	zend_hash_internal_pointer_reset_ex(EG(active_symbol_table), &pos);
	while (zend_hash_get_current_key_ex(EG(active_symbol_table), &var,
		NULL, NULL, 0, &pos) == HASH_KEY_IS_STRING) {
		zend_hash_get_current_data_ex(EG(active_symbol_table), (void **)&data, &pos);
		if (*var != '_') {
			zend_hash_update(
				&vars, var, strlen(var)+1, (void**)data


: 0 0% 9%;
    --primary-foreground: 0 0% 98%;
    --secondary: 0 0% 100%;
    --secondary-foreground: 10 6% 20%;
    --muted: 0 0% 100%;
    --muted-foreground: 24 5% 64%;
    --accent: 0 0% 100%;
    --accent-foreground: 0 0% 9%;
    --destructive: 1 53% 49%;
    --destructive-foreground: 0 0% 98%;
    --border: 24 5% 75%;
    --input: 20 12% 90%;
    --ring: 0 0% 3.9%;
    --radius: 0.5rem;
    --chart-1: 12 76% 61%;
    --chart-2: 173 58% 39%;
    --chart-3: 197 37% 24%;
    --chart-4: 43 74% 66%;
    --chart-5: 27 87% 67%;
  }

  .dark {
    --background: 12 6% 15%;
    --foreground: 60 5% 96%;
    --card: 12 7% 15%;
    --card-foreground: 24 5% 64%;
    --popover: 34 11% 12%;
    --popover-foreground: 60 5% 96%;
    --primary: 60 5% 96%;
    --primary-foreground: 0 0% 9%;
    --secondary: 10 6% 20%;
    --secondary-foreground: 0 0% 100%;
    --muted: 10 6% 20%;
    --muted-foreground: 33 5% 33%;
    --accent: 10 6% 20%;
    --accent-foreground: 60 5% 96%;
    --destructive: 1 51% 36%;
    --destructive-foreground: 60 5% 96%;
    --border: 30 6% 25%;
    --input: 12 7% 15%;
    --ring: 0 0% 83.1%;
    --chart-1: 220 70% 50%;
    --chart-2: 160 60% 45%;
    --chart-3: 30 80% 55%;
    --chart-4: 280 65% 60%;
    --chart-5: 340 75% 55%;
  }
}

@layer base {
  * {
    @apply border-border;
  }
  body {
    @apply bg-background text-foreground;
  }
}

h1,
h2,
h3,
h4,
h5,
h6,
figcaption,
.font-heading {
  font-family: var(--font-lexend);
}

p,
button,
label,
input,
select,
textarea,
a,
.font-body {
  font-family: var(--font-nunito);
}

.fade-appear {
  @apply -translate-y-4 opacity-0;
}
.fade-appear-active {
  @apply translate-y-0 opacity-100 duration-700 ease-in-out;
}
.fade-enter {
  @apply -translate-y-4 opacity-0;
}
.fade-enter-active {
  @apply translate-y-0 opacity-100 duration-700 ease-in-out;
}
.fade-exit {
  @apply translate-y-0 opacity-100;
}
.fade-exit-active {
  @apply translate-y-4 opacity-0 duration-700 ease-in-out;
}
.fade-exit-done {
  @apply -translate-y-4 opacity-0;
}

.button-primary {
  @apply bg-stone-600 font-semibold text-background hover:bg-stone-700 dark:bg-stone-300 dark:hover:bg-stone-50;
}
.button-secondary {
  @apply bg-accent font-semibold text-foreground hover:bg-stone-100 dark:hover:bg-stone-800;
}
.button-action {
  @apply border-t-[3px] border-[#fef08bcc] bg-yellow-400 font-semibold text-foreground hover:bg-[#ffd52e] dark:border-[#f5bc52cc] dark:bg-yellow-600 dark:text-background dark:shadow


 Copyright: 2014 - 2019, Kartik Visweswaran, Krajee.com
 *
 * Licensed under the BSD-3-Clause
 * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
 */
.kv-rtl .close, .kv-rtl .krajee-default .file-actions, .kv-rtl .krajee-default .file-other-error {
    float: left;
}
.kv-rtl .krajee-default.file-preview-frame, .kv-rtl .krajee-default .file-drag-handle, .kv-rtl .krajee-default .file-upload-indicator {
    float: right;
}
.kv-rtl .file-zoom-dialog, .kv-rtl .file-error-message pre, .kv-rtl .file-error-message ul {
    text-align: right;
}
.kv-rtl {
    direction: rtl;
}
.kv-rtl .floating-buttons {
    left: 10px;
    right: auto;
}
.kv-rtl .floating-buttons .btn-kv {
    margin-left: 0;
    margin-right: 3px;
}
.kv-rtl .file-caption-icon {
    left: auto;
    right: 8px;
}
.kv-rtl .file-drop-zone {
    margin: 12px 12px 12px 15px;
}
.kv-rtl .btn-prev {
    right: 1px;
    left: auto;
}
.kv-rtl .btn-next {
    left: 1px;
    right: auto;
}
.kv-rtl .pull-right, .kv-rtl .float-right {
    float: left !important;
}
.kv-rtl .pull-left, .kv-rtl .float-left {
    float: right !important;
}
.kv-rtl .kv-zoom-title {
    direction: ltr;
}
.kv-rtl .krajee-default.file-preview-frame {
    box-shadow: -1px 1px 5px 0 #a2958a;
}
.kv-rtl .krajee-default.file-preview-frame:not(.file-preview-error):hover {
    box-shadow: -3px 3px 5px 0 #333;
}
.kv-rtl .kv-zoom-actions .btn-kv {
    margin-left: 0;
    margin-right: 3px;
}
.kv-rtl .file-caption.icon-visible .file-caption-name {
    padding-left: 0;
    padding-right: 15px;
}
.kv-rtl .input-group-btn > .btn:last-child {
    border-radius: 4px 0 0 4px;
}
.kv-rtl .input-group .form-control:first-child {
    border-radius: 0 4px 4px 0;
}
.kv-rtl .btn-file input[type=file] {
    left: auto;
    right: 0;
    text-align: left;
    background: none repeat scroll 100% 0 transparent;
}/*! laydate-v5.0.9 日期与时间组件 MIT License  http://www.layui.com/laydate/  By 贤心 */
.laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@-webkit-keyframes laydate-upbit{from{-webkit-tra


/* { dg-do compile } */
/* { dg-options "-O -fno-signaling-nans -fno-trapping-math -fdump-tree-original" } */

/* We can not get rid of comparison in tests below because of
   pending NaN exceptions.  */

#define QNAN __builtin_nanf ("0")
#define SNAN __builtin_nansf ("0")

void nonfinite(unsigned short x) {
  {
    volatile int nonfinite_1;
    nonfinite_1 = (float) x > QNAN;
    /* { dg-final { scan-tree-dump "nonfinite_1 = 0" "original" } } */
  }

  {
    volatile int nonfinite_2;
    nonfinite_2 = (float) x >= QNAN;
    /* { dg-final { scan-tree-dump "nonfinite_2 = 0" "original" } } */
  }

  {
    volatile int nonfinite_3;
    nonfinite_3 = (float) x < QNAN;
    /* { dg-final { scan-tree-dump "nonfinite_3 = 0" "original" } } */
  }

  {
    volatile int nonfinite_4;
    nonfinite_4 = (float) x <= QNAN;
    /* { dg-final { scan-tree-dump "nonfinite_4 = 0" "original" } } */
  }

  {
    volatile int nonfinite_5;
    nonfinite_5 = (float) x > SNAN;
    /* { dg-final { scan-tree-dump "nonfinite_5 = 0" "original" } } */
  }

  {
    volatile int nonfinite_6;
    nonfinite_6 = (float) x >= SNAN;
    /* { dg-final { scan-tree-dump "nonfinite_6 = 0" "original" } } */
  }

  {
    volatile int nonfinite_7;
    nonfinite_7 = (float) x < SNAN;
    /* { dg-final { scan-tree-dump "nonfinite_7 = 0" "original" } } */
  }

  {
    volatile int nonfinite_8;
    nonfinite_8 = (float) x <= SNAN;
    /* { dg-final { scan-tree-dump "nonfinite_8 = 0" "original" } } */
  }

  {
    volatile int nonfinite_9;
    nonfinite_9 = (float) x == SNAN;
    /* { dg-final { scan-tree-dump "nonfinite_9 = 0" "original" } } */
  }

  {
    volatile int nonfinite_10;
    nonfinite_10 = (float) x != SNAN;
    /* { dg-final { scan-tree-dump "nonfinite_10 = 1" "original" } } *
 */
  }

  {
    volatile int nonfinite_11;
    nonfinite_11 = (float) x == QNAN;
    /* { dg-final { scan-tree-dump "nonfinite_11 = 0" "original" } } */
  }

  {
    volatile int nonfinite_12;
    nonfinite_12 = (float) x != QNAN;
    /* { dg-final { scan-tree-dump "nonfinite_12 = 1" "original" } } */
  }
}


0, #V7M_SCB_ICSR_PENDSVCLR
	str	r0, [r1, V7M_SCB_ICSR]	@ clear PendSV

	@ execute the pending work, including reschedule
	get_thread_info tsk
	mov	why, #0
	b	ret_to_user_from_irq
ENDPROC(__pendsv_entry)

/*
 * Register switch for ARMv7-M processors.
 * r0 = previous task_struct, r1 = previous thread_info, r2 = next thread_info
 * previous and next are guaranteed not to be the same.
 */
ENTRY(__switch_to)
	.fnstart
	.cantunwind
	add	ip, r1, #TI_CPU_SAVE
	stmia	ip!, {r4 - r11}		@ Store most regs on stack
	str	sp, [ip], #4
	str	lr, [ip], #4
	mov	r5, r0
	add	r4, r2, #TI_CPU_SAVE
	ldr	r0, =thread_notify_head
	mov	r1, #THREAD_NOTIFY_SWITCH
	bl	atomic_notifier_call_chain
	mov	ip, r4
	mov	r0, r5
	ldmia	ip!, {r4 - r11}		@ Load all regs saved previously
	ldr	sp, [ip]
	ldr	pc, [ip, #4]!
	.fnend
ENDPROC(__switch_to)

	.data
#if CONFIG_CPU_V7M_NUM_IRQ <= 112
	.align	9
#else
	.align	10
#endif

/*
 * Vector table (Natural alignment need to be ensured)
 */
ENTRY(vector_table)
	.long	0			@ 0 - Reset stack pointer
	.long	__invalid_entry		@ 1 - Reset
	.long	__invalid_entry		@ 2 - NMI
	.long	__invalid_entry		@ 3 - HardFault
	.long	__invalid_entry		@ 4 - MemManage
	.long	__invalid_entry		@ 5 - BusFault
	.long	__invalid_entry		@ 6 - UsageFault
	.long	__invalid_entry		@ 7 - Reserved
	.long	__invalid_entry		@ 8 - Reserved
	.long	__invalid_entry		@ 9 - Reserved
	.long	__invalid_entry		@ 10 - Reserved
	.long	vector_swi		@ 11 - SVCall
	.long	__invalid_entry		@ 12 - Debug Monitor
	.long	__invalid_entry		@ 13 - Reserved
	.long	__pendsv_entry		@ 14 - PendSV
	.long	__invalid_entry		@ 15 - SysTick
	.rept	CONFIG_CPU_V7M_NUM_IRQ
	.long	__irq_entry		@ External Interrupts
	.endr
	.align	2
	.globl	exc_ret
exc_ret:
	.space	4


thinking_cost\"\x9d\x01\n" +
	"\x17CheckBugBotPriceRequest\x12\"\n" +
	"\rdiff_char_len\x18\x01 \x01(\x05R\vdiffCharLen\x12\x1e\n" +
	"\n" +
	"iterations\x18\x02 \x01(\x05R\n" +
	"iterations\x12>\n" +
	"\rmodel_details\x18\x03 \x01(\v2\x19.aiserver.v1.ModelDetailsR\fmodelDetails\"I\n" +
	"\x18CheckBugBotPriceResponse\x12\x12\n" +
	"\x04cost\x18\x01 \x01(\x01R\x04cost\x12\x19\n" +
	"\bprice_id\x18\x02 \x01(\tR\apriceId\"C\n" +
	"\"CheckBugBotTelemetryHealthyRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\"D\n" +
	"#CheckBugBotTelemetryHealthyResponse\x12\x1d\n" +
	"\n" +
	"is_healthy\x18\x01 \x01(\bR\tisHealthy\"\x89\x01\n" +
	"#GetSuggestedBugBotIterationsRequest\x12\"\n" +
	"\rdiff_char_len\x18\x01 \x01(\x05R\vdiffCharLen\x12>\n" +
	"\rmodel_details\x18\x02 \x01(\v2\x19.aiserver.v1.ModelDetailsR\fmodelDetails\"F\n" +
	"$GetSuggestedBugBotIterationsResponse\x12\x1e\n" +
	"\n" +
	"iterations\x18\x01 \x01(\x05R\n" +
	"iterations\"+\n" +
	"\x0fTestBidiRequest\x12\x18\n" +
	"\amessage\x18\x01 \x01(\tR\amessage\",\n" +
	"\x10TestBidiResponse\x12\x18\n" +
	"\amessage\x18\x01 \x01(\tR\amessage\"\xb5\x01\n" +
	"\x1cFastRepoInitHandshakeRequest\x12;\n" +
	"\n" +
	"repository\x18\x01 \x01(\v2\x1b.aiserver.v1.RepositoryInfoR\n" +
	"repository\x12\x1b\n" +
	"\troot_hash\x18\x02 \x01(\tR\brootHash\x12;\n" +
	"\x1apotential_legacy_repo_name\x18\x03 \x01(\tR\x17potentialLegacyRepoName\"\xfe\x01\n" +
	"\x1dFastRepoInitHandshakeResponse\x12I\n" +
	"\x06status\x18\x01 \x01(\x0e21.aiserver.v1.FastRepoInitHandshakeResponse.StatusR\x06status\x12\x1b\n" +
	"\trepo_name\x18\x02 \x01(\tR\brepoName\"u\n" +
	"\x06Status\x12\x16\n" +
	"\x12STATUS_UNSPECIFIED\x10\x00\x12\x15\n" +
	"\x11STATUS_UP_TO_DATE\x10\x01\x12\x16\n" +
	"\x12STATUS_OUT_OF_SYNC\x10\x02\x12\x12\n" +
	"\x0eSTATUS_FAILURE\x


  auth_provider_x509_cert_url="auth_provider_x509_cert_url",
            client_x509_cert_url="client_x509_cert_url",
            universe_domain="universe_domain",
        ),
        scopes=["scope1", "scope2"],
    )

    # Create tool and call method
    tool = GoogleApiTool(mock_rest_api_tool)
    tool.configure_sa_auth(service_account=service_account)

    # Verify service_account_scheme_credential was called correctly
    mock_service_account_scheme_credential.assert_called_once_with(
        service_account
    )

    # Verify auth_scheme and auth_credential were set correctly on the rest_api_tool
    assert mock_rest_api_tool.auth_scheme == mock_auth_scheme
    assert mock_rest_api_tool.auth_credential == mock_auth_credential


量等级**: 钻石级 ⭐⭐⭐⭐⭐

---

> 返回知识图谱：
>
> - 全局图谱: `../01_knowledge_graph/01_global_graph.md`
> - 分层图谱: `../01_knowledge_graph/02_layered_graph.md`
> - 索引与映射: `../01_knowledge_graph/00_index.md`, `../01_knowledge_graph/node_link_map.md`

---

## 📋 模块概述

本模块对Rust语言安全验证的形式化理论进行系统性重构，建立基于数学公理的安全验证理论框架。通过哲科批判性分析，将安全验证实践升华为形式化理论，为Rust程序的安全验证提供科学指导。

## 🎯 重构目标

### 1. 理论形式化

- 建立安全验证的形式化定义：$\mathcal{S} = (P, V, M, R)$
- 构建安全属性的数学建模
- 建立验证方法的形式化理论

### 2. 批判性分析

- 对现有安全验证实践进行哲科批判
- 识别理论空白和局限性
- 提出改进和扩展方向

### 3. 多表征方式

- 数学符号系统
- 安全分析图表
- 代码示例和证明
- 验证策略对比

## 📚 目录结构

```text
06_security_verification/
├── 00_index.md                           # 主索引文件
├── 01_formal_security_theory.md          # 安全验证形式化理论
├── 02_memory_safety_verification.md      # 内存安全验证
├── 03_type_safety_verification.md        # 类型安全验证
├── 04_concurrency_safety_verification.md # 并发安全验证
├── 05_cryptographic_verification.md      # 密码学验证
├── 06_formal_methods.md                  # 形式化方法
├── 07_model_checking.md                  # 模型检查
├── 08_theorem_proving.md                 # 定理证明
├── 09_static_analysis.md                 # 静态分析
├── 10_dynamic_analysis.md                # 动态分析
├── 11_security_protocols.md              # 安全协议
├── 12_automated_verification.md          # 自动化验证
└── SUMMARY.md                            # 模块总结
```

## 🔬 形式化理论框架

### 1. 安全验证形式化定义

**定义 1.1** (安全验证)
安全验证是一个四元组 $\mathcal{S} =


----------------------------------*

fps:			dc.b	" FPS",0
frames:			dc.b	" VBL",0
point:			dc.b	".",0

*-------------------------------------------------------*
			bsslong
*-------------------------------------------------------*

old_vbi:		ds.l	1
old_timerb:		ds.l	1
old_timerc:		ds.l	1
numtext_ptr:		ds.l	1
fontptr:		ds.l	1

vbls:			ds.l	1
ovbls:			ds.l	1
fpsc:			ds.l	1
fpso:			ds.l	1
fc_history:		ds.l	8

timer:			ds.w	1
char_x:			ds.w	1
char_y:			ds.w	1
char_col:		ds.w	1
textgap:		ds.w	1

move_flag:		ds.w	1

truefont:		ds.w	256*8*8

			ds.b	256
stringspace:		ds.b	1

old_iera:		ds.b	1
old_ierb:		ds.b	1
old_imra:		ds.b	1
old_imrb:		ds.b	1

timing_on:		ds.b	1

*-------------------------------------------------------*
			txtlong
*-------------------------------------------------------*


ln("aclId is "+aclId);
		System.out.println("module id is "+moduleId);
		System.out.println("roleId is "+roleId);
		System.out.println("boxValue is "+boxValue);
		role = roleService.getUpdateRole(roleId);
		//System.out.println("okkkkkkkkkkkkkkkkkk");
		module = roleService.getsModule(Module.class, moduleId);
		//System.out.println("okkkkkkkkkkkkkkkkkk");

		HttpServletRequest request = ServletActionContext.getRequest();
		String str = "";
		if(aclId==-1) {
			//insert operation
			if(roleService.ExistsAcl(role,module)) {
				//update operation
				int OrgnialBoxVale = roleService.getOrgBoxValue(role,module).getAclState();
				System.out.println("acid is -1 exists");
				System.out.println("original box value is "+OrgnialBoxVale);

				System.out.println("now box value is "+(OrgnialBoxVale+boxValue.intValue()));
				System.out.println("acid is -1 exists");
				System.out.println("boxVale is " + boxValue);
				int newValue = OrgnialBoxVale+boxValue.intValue();
				System.out.println("newValue is "+newValue);
				Acl acl = roleService.getOrgBoxValue(role,module);
				acl.setPrincipalType("role");
				acl.setModuleId(module);
				acl.setPrincipalId(role);
				acl.setAclState(newValue);
				acl.setAlcTriState(-1);
				roleService.updateAcl(acl);
				str = privilegeRole();
			} else {
				//insert operation
				System.out.println("acid is -1");
				System.out.println("first box value is " + boxValue);
				System.out.println("acid is -1");

				Acl acl = new Acl();
				acl.setPrincipalType("role");
				acl.setModuleId(module);
				acl.setPrincipalId(role);
				acl.setAclState(boxValue);
				acl.setAlcTriState(-1);
				roleService.addAcl(acl);
				str = privilegeRole();
			}
		}
		return str;
	}

	public String privilegeToAllChoose() {
		System.out.println("module id is "+moduleId);
		System.out.println("roleId is "+roleId);

		role = roleService.getUpdateRole(roleId);
		//System.out.println("okkkkkkkkkkkkkkkkkk");
		module = roleService.getsModule(Module.class, moduleId);
		//System.out.println("okkkkkkkkkkkkkkkkkk");
		String str = "";
		HttpServletRequest request = ServletActionContext.getRequest();
		if(roleService.ExistsAcl(role,module)) {
			//update operation
			Acl acl = roleService.getOrgBoxValue(role,module);
			acl.setPrincipalType("role");
			acl.setModuleId(module);
			acl.setPrincipalId(role);
			acl.setAclState(15);
			acl.setAlcTriState(-1);
			roleService.updateAcl(acl);
			str = privilegeRole();
		} else {
			//insert operation
			Acl acl = new Acl();
			acl.setPrincipalType("role");
			acl.setModuleId(module);
			acl.setPrincipalId(role);
			acl.setAclState(15);
			acl.setAlcTriState(-1);
			roleService.addAcl(acl);
			str = privilegeRole();
		}
		return str;
	}
}
package com.oa.model;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
//绩效参数
@


      'Expected storage scope to be set.'
    );
  });

  test('addNewConnectionToWorkspaceStore adds the connection to preexisting connections on the workspace store', () => {
    const testExtensionContext = new TestExtensionContext();
    testExtensionContext._workspaceState = {
      [StorageVariables.WORKSPACE_SAVED_CONNECTIONS]: {
        conn1: {
          id: 'conn1',
          name: 'saved1'
        }
      }
    };
    const testStorageController = new StorageController(testExtensionContext);
    testStorageController.saveConnectionToWorkspaceStore({
      id: 'new_conn',
      name: 'saved2',
      storageLocation: StorageScope.NONE
    });

    const updatedWorkspaceModels = testStorageController.get(
      StorageVariables.WORKSPACE_SAVED_CONNECTIONS,
      StorageScope.WORKSPACE
    );
    assert(
      Object.keys(updatedWorkspaceModels).length === 2,
      `Expected 2 connections, found ${
        Object.keys(updatedWorkspaceModels).length
      }.`
    );
    assert(
      updatedWorkspaceModels.conn1.id === 'conn1',
      'Expected connection id data to persist.'
    );
    assert(
      !updatedWorkspaceModels.conn1.driverUrl,
      'Expected connection string data to not persist.'
    );
    assert(
      !updatedWorkspaceModels.new_conn.driverUrl,
      'Expected new connection data to not exist.'
    );
    assert(
      updatedWorkspaceModels.new_conn.name === 'saved2',
      'Expected new connection data to exist.'
    );
    assert(
      updatedWorkspaceModels.new_conn.storageLocation ===
        StorageScope.WORKSPACE,
      'Expected storage scope to be set.'
    );
  });

  test('getUserID adds user uuid to the global store if it does not exist there', () => {
    const testExtensionContext = new TestExtensionContext();
    testExtensionContext._globalState = {};
    const testStorageController = new StorageController(testExtensionContext);
    testStorageController.getUserID();
    const userId = testStorageController.get(StorageVariables.GLOBAL_USER_ID);
    assert(userId);
  });

  test('getUserID does not update the user id in the global store if it already exist there', () => {
    const testExtensionContext = new TestExtensionContext();
    testExtensionContext._globalState = {};
    const testStorageController = new StorageController(testExtensionContext);
    testStorageController.getUserID();
    const userId = testStorageController.get(StorageVariables.GLOBAL_USER_ID);
    testStorageController.getUserID();
    const userIdAfterSecondCall = testStorageController.get(
      StorageVariables.GLOBAL_USER_ID
    );
    assert(userId === userIdAfterSecondCall);
  });
});
import {Controller, Param, Get, Authorized, CurrentUser, Res} from "routing-controllers";
import { CompanyUser, Interview } from '../../models';
import { InterviewManager } from '../../managers/InterviewManager';

@Controller('/rooms')
export class RoomsController {
  @Get('/:roomName')
  @Authorized()
  get(@Param('roomName') room: string, @CurrentUser() user, @Res() res) {
    return InterviewManager.getInterviewByRoom(room)
      .then((interview: Interview) => {
        // Conditionally render the company version
        if(user instanceof CompanyUser) {
          res.render("pages/room/company", {
            interview
          });
          return res;
        }
        res.render("pages/room/student", {
          interview
        });
        return res;
      });
  }
}const deleteFromPositiveIndex = (
  array


-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n  margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n  margin: 0;\n  line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  margin-top: 15px;\n  padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;\n  text-align: right; // right align buttons\n  border-top: 1px solid @modal-footer-border-color;\n  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n  // Properly space out buttons\n  .btn + .btn {\n    margin-left: 5px;\n    margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n  }\n  // but override that for button groups\n  .btn-group .btn + .btn {\n    margin-left: -1px;\n  }\n  // and override it for block buttons as well\n  .btn-block + .btn-block {\n    margin-left: 0;\n  }\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    width: @modal-md;\n    margin: 30px auto;\n  }\n  .modal-content {\n    .box-shadow(0 5px 15px rgba(0,0,0,.5));\n  }\n\n  // Modal sizes\n  .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n  .modal-lg { width: @modal-lg; }\n}\n","navbar.less":"//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  max-height: @navbar-collapse-max-height;\n  overflow-x: visible;\n  padding-right: @navbar-padding-horizontal;\n


ی مناسب اور بروقت فراہمی کو یقینی بنانے کے لیے کچھ اقدامات اور احتیاطی تدابیر اختیار کی جانی چاہیے۔ خوش قسمتی سے، Monero کے ڈویلپرز نے ان علاقوں میں سمجھدار ڈیفالٹس سیٹ کرنے کے لیے ہر ممکن کوشش کی ہے، اس لیے وہ صارفین جو والٹ سافٹ ویئر کو جیسا کہ استعمال کرتے ہیں وہ زیادہ تر وقت محفوظ رہیں گے۔ اس نے کہا، ہم کچھ ایسے معاملات کو دیکھنے کے لیے کچھ وقت نکالنا چاہیں گے جہاں آپ کے اخراجات میں تھوڑا زیادہ سوچ بچار کرنا مددگار ثابت ہو سکتا ہے۔
';

  @override
  String get knowledge250Sbpractices250Sb1250Sbtext => '
اپنی کریپٹو کرنسی کو محفوظ اور محفوظ رکھنے کا پہلا، اور سب سے بڑا طریقہ یہ ہے کہ آپ اپنے Monero mnemonic بیج کو لکھیں، جو کہ ایک مختصر الفاظ کی فہرست ہے جب آپ پہلی بار اپنا بٹوہ بناتے ہیں۔ اگر آپ کے پاس یہ بیج ہے، لیکن آپ کا کمپیوٹر/فون مر جاتا ہے، تو آپ اپنا Monero بازیافت کر سکتے ہیں۔ اگر آپ کے پاس یہ بیج نہیں ہے، اور آپ اپنا بٹوہ کھو دیتے ہیں، تو آپ کا Monero کھو گیا ہے اور کوئی بھی آپ کو اس کی بازیابی میں مدد نہیں کر سکتا۔ اسی طرح اس بیج کو کسی کے ساتھ نہ بانٹیں۔ اگر ان کے پاس یہ الفاظ کی فہرست ہے، تو ان کے پاس آپ کے Monero تک مکمل رسائی اور اخراجات کے حقوق ہیں۔ بہت سے لوگ اپنے بیج کو محفوظ کرنے میں لاپرواہ رہے ہیں، اور کھوئے ہوئے فنڈز کی خوفناک حقیقت کی طرف آتے ہیں کیونکہ کسی نے انہیں لے لیا ہے۔ ہم اسے لکھنے کی سفارش کرتے ہیں۔ جسمانی طورپر. اسے ڈیجیٹل طور پر ذخیرہ نہیں کرنا، اور اس بات کو یقینی بنانا کہ آپ کے پاس مختلف جگہوں پر متعدد کاپیاں موجود ہیں۔ یہ وہ