Your IP : 18.119.157.233


Current Path : /var/www/www-root/data/www/info.monolith-realty.ru/nl6bdggpp/index/
Upload File :
Current File : /var/www/www-root/data/www/info.monolith-realty.ru/nl6bdggpp/index/kivy-events.php

<!DOCTYPE html>
<html lang="sk-SK">
<head prefix="og: # fb: # article: #">

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- X-Generated-By: web2 -->

  <title></title>
  <meta name="title" content="">

	
  <meta name="keywords" content="">

	
  <meta name="description" content="">

	
</head>


<body>



<div id="pravda-sk-body" class="container-pull ostrov-spravy rubrika-svet">
<div class="container"><header id="perex-header" class="header"></header><!-- [/perex-header] -->
</div>
<!-- [/container-header] -->
<div class="container no-padding-advert">
<div class="advert advert-top">
	
</div>

</div>
<!-- [/container-adplacementTOP] -->
<div class="container">
<div class="content-wrap">
<div class="col-md-11 col-sm-15 right-padding no-padding-left content-column">
<div id="templavoila-clanoktelo_t3c-inner"><article class="article-detail" itemscope="" itemtype="">
	</article>
<div class="breadcrumbs">
					
				<span><br>
</span><span></span>
							
			</div>

			
<h1 itemprop="headline">Kivy events. 
Kivy's sound class provides 2 events, on_press and on_stop.
		</h1>

	<aside class="article-fix-actions">
		<span class="share-icon hidden show-if-native-share native-share-button">
				<span class="share-icon-svg">
		
	</span>
		</span>
		<span class="facebook-icon fb-facebook-button hide-if-native-share">
				<span class="facebook-icon-svg">
		
	</span>
		</span>
		<span class="twitter-icon hide-if-native-share">
		
	
		</span>
					<span class="debata-icon debata-fixed">
					<span class="debata-icon-svg">
					
				<span class="badge hidden"></span>
	</span>
			</span>
			</aside>
	
<div class="article-inner">
					
<div class="article-detail-perex">
				
<p itemprop="description">Kivy events  Typically, you would need a lot more points, so it’s better to record gestures in a file and reload them to compare later.  If a widget has children, the event is passed through its children before being passed on to the widget after it.  If you create a new input factory, you need to register it here: Threading and Callback Order&#182;. ObjectWithUid.  If you modified it to class kivy.  the DOM does it on the web.  A TreeView is populated with TreeViewNode instances, but you cannot use a TreeViewNode directly.  Combine several motion events (touch, hover etc. mouse.  Defining and registering an event manager&#182; Button&#182;.  Once you understand Events&#182; Kivy is mostly event-based, meaning the flow of the program is determined by events.  Screen is an element intended to be used with a ScreenManager.  That endless loop breaks as soon as the window/gui instance dies. event.  Better Kivy Click Drag and Combine several motion events (touch, hover etc.  Internally, Kivy will use the specified async library’s API, so KIVY_EVENTLOOP or async_lib must match the async library that is running Kivy.  Events are an important part of Kivy programming.  If you only want to respond to touch events inside the widget/button, you have to check it using self. on_touch_move` and :meth:`~kivy. req_body is not None, a “POST” request will be sent.  As the on_touch_up() method inserts widgets at index 0 by default, this means the event goes from the most recently added widget back to the first Assumption - Using on_release or on_press event to switch screen. In contrast to this method you could also just pass the id to the function that needs to use it, like in case of f_but in the code above.  The following example illustrates how to use Button's event, on_release in a dynamic class to switch screen.  Let’s change that; it’s time to learn about binding events.  Triggers have Event dispatcher&#182; All objects that produce events in Kivy implement the EventDispatcher which provides a consistent interface for registering and manipulating event handlers. .  The resources available online to help Adding Events. :Events: `on_pre_enter`: Event fired when the screen is about to be used: the entering animation is started. 0 and I try to use the custom event to manage a yesNo popup.  As the add_widget() method inserts widgets at index 0 by default, this means the event goes from the most recently added widget back to the first one class kivy.  For a fuller basic and more advanced examples, see the demo apps in examples/async.  I use Kivy 1. ) into one new event and dispatch it to the widgets.  It is currently very basic, supporting a minimal feature set. org/docs/api-kivy.  Python 2. req_headers to suit your requirements and the response to the request will be accessible as the parameter called “result” on the callback function of the on_success event.  The Clock object allows you to schedule a function call in the future as a one These core event binding concepts are central to working with Kivy widgets, and come up in many different ways.  Hover events are enabled by default (disable_hover is False).  The Clock object allows you to schedule a function call in the future as a one-time event with schedule_once(), or as a repetitive event with schedule_interval().  The MotionEvent is the base class used for events provided by pointing devices (touch and non-touch).  According to this: https://kivy.  Once you understand how events work and how to bind to them, you will see them everywhere in Kivy.  There is a simpler way to access objects with id tags in Kv using the ids lookup object.  See on_touch_down() for more information.  Hot Network Questions Could Harry have deduced that Snape was on his side because Snape summoned help in Order of the Phoenix? The goal is to have a websocket listener dispatch events, allowing any widget to listen to them (e.  This module contains the Kivy core functionality and is not intended for end users.  See module documentation for more information.  To configure the button, the same properties (padding, font_size, etc) and sizing system are used as for the Label class: Combine several motion events (touch, hover etc.  btn1_screen_name: '' Implement on_release: event for Animation is used to change a widget’s properties (size/pos/center etc. 8.  By default, a “GET” request will be sent.  At the core of this system is a special class called EventDispatcher , which allows the creation of objects that can dispatch Combine several motion events (touch, hover etc.  property disable_hover &#182; Disables dispatching of hover events if set to True. behaviors.  However, this event is triggered both when the song ends naturally and when the user stops it manually. mouse ''' Mouse provider implementation ===== On linux systems, the mouse provider can be annoying when used with another multitouch provider (hidinput or mtdev).  Abstract Camera Widget class.  active is a boolean and reflects and sets whether the underlying state is ‘down’ (True) Only the first argument is mandatory: the rest are optional.  Kivy: Click-drag Screen Visuals. Widget CheckBox class, see module documentation for more information.  I think you're mistaken on how events work in Kivy. relativelayout.  This is the class most of our game logic will go into.  They make it easy to build whatever behavior you want into Kivy.  1 What is the best/right way to add multiple handlers for same event with Kivy? Quick search. scrollview.  Every motion event is analyzed to detect and correct faulty input, as well as make meaningful interpretations like: - Dispatch filtered motion events by any criteria, like by a:attr:`~kivy.  I am probably misunderstanding how events works here and the Kivy examples.  Mouse provider implementation ===== On linux systems, the mouse provider can be annoying when used with Handling kivy event inside python code. ) to a target value within a target time.  Events: on_pre_enter: () Event fired when the screen is about to be used: the entering animation is started.  0.  Kivy has the concept of a Clock that you can use to schedule function calls for From this point onwards, self.  Events and Properties&#182; Events are an important part of Kivy programming.  EventDispatcher (** kwargs) &#182; Bases: kivy.  Class used to display the options within the dropdown list displayed under the Spinner.  Parameters: index: int.  The library does not implement event propagation by itself and then dispatches on_touch_* events on every involved widget, like e. uix. profile`.  Clock events.  1.  If you are writing an entire Kivy app from scratch, this is the most convenient mode.  `on_enter`: Event fired when the screen is displayed: the entering animation is complete.  Kivy: Work with events. MotionEventProvider.  The following illustration shows how events are handled in the Kivy framework. on_touch_up` events.  As the add_widget() method inserts widgets at index 0 by default, this means the event goes from the most recently added widget back to the first one Kivy Tutorial - Kivy is a Python library that helps you to build cross-platform GUI applications for Windows, Linux, iOS as well as Android. is_touch` is set to `True`. clock. txt_inpt holds a reference to the widget identified by the id txt_input and can be used anywhere in the class, as in the function check_status.  2.  That may not be surprising to those with GUI development experience, but it’s an important concept for newcomers. collide_point method.  In Kivy, a widget is an object that receives input events.  SomeIcon should not trigger the event on ListItem.  Popup Events&#182; There are two events available: on_open which is raised when the popup is opening, and on_dismiss which is raised when the popup is closed.  Gallery; 3D Rotating Monkey Head In Kivy, events bubble up from the first child upwards through the other children. input.  See the module docstring for usage. factory.  size: tuple (int, int) Size at which the image is My solution would be to build a single class that polls the data on a timer (using the kivy Clock class) and then dispatches an event that &quot;new weather data is availible&quot;.  Check module documentation for more information. stderr is logged as a warning.  First off, let’s get familiar with the Kivy app life cycle. core.  Generic event fired when scrolling class kivy.  Event dispatcher&#182; All objects that produce events in Kivy implement the EventDispatcher which provides a consistent interface for registering and manipulating event handlers.  Gallery of Examples.  Dispatch one-time generic events, like app pause/resume.  on_enter: Event fired when the screen is displayed: the entering animation is When the touch-event matches a listener of any of the widgets standing in the way of that event, they will launch their respective callbacks.  Parameters: lib: string. 10.  2 Kivy: Work with events.  Kivy get the object that was pressed on.  Generic event dispatcher interface.  The touch is in parent coordinates.  Feel free to look through it, but bare in mind that calling any of these methods directly may result in an unpredictable behavior as the calls access directly the event loop of an application. MotionEvent.  Note: If you want to use on_press event, replace on_release with on_press Declare StringProperty for each buttons e.  Concrete camera classes must implement initialization and frame capturing to a buffer that can be uploaded to the gpu.  Kivy is then treated as just another coroutine that the given library runs in its event loop.  on_touch_move (touch) [source] &#182; Receive a touch move event.  When it collides, you should get only one widget/button.  The implementation must support the start(), stop() and update() methods.  Kivy supports touch-enabled input.  All widgets are arranged in a widget tree (which is a tree data structure as known from computer science classes): One widget can have any number of child widgets or none. dropdown.  Event called when a text or a file drop on the application is about to begin.  This allows you to reduce the number of images loaded and thus Motion Event&#182;.  packing multiple textures into one image.  Events&#182; Kivy is mostly event-based, meaning the flow of the program is determined by events. EventDispatcher&#182; Bases: kivy.  on_scroll_move.  This class allows you to register event types, and to dispatch them to interested parties (usually other event dispatchers).  Defining and registering an event manager&#182; How to get an &quot;mouse over&quot; event in kivy. textinput.  Any stray output to sys. bind() in its __init__(), e. on_motion` method of Kivy Base&#182;.  You don’t really want to do this: it’s more of an example of how to construct gestures dynamically.  Parameters: borderless: str, one of (‘0’, ‘1’) Set the window border state.  Fired when a selection is done.  on_drop_begin (x, y, * args) [source] &#182;.  Dispatch filtered motion events by any criteria, like by a device or a profile.  Properly creating a mouse event with Kivy.  0 Kivy non-GUI events.  Go.  Gallery; 3D Rotating Monkey Head KIVY Mode (default)&#182; In KIVY mode, all Kivy handlers are attached to the root logger, so all log messages in the system are output to the Kivy log files and to the console.  The Button is a Label with associated actions that are triggered when the button is pressed (or released after a click/touch).  Can be one of, “asyncio” when the standard library asyncio should be used, or “trio” if the trio library should be used.  kivy :How to work _on_keyboard_down event with scroll.  Beginning with 1. g.  The framework responds to user keypresses, mouse events, and touch events.  This can be called anytime before the kivy event loop has started, but not once the kivy App is running.  It’s up to you to adjust UrlRequest.  from kivy.  You seldom need to worry about this as Kivy apps typically always require this event loop for the GUI to remain responsive, but it is good to keep this in mind when debugging or running in a REPL (Read-eval-print loop).  MouseMotionEventProvider (device, args) [source] &#182; Bases: kivy. object Base class for a provider.  Check the config documentation for a more detailed explanation on the values. stencilview. MotionEvent`) to widgets through:meth:`~kivy.  Dispatch touch, hover, keyboard, joystick or any other events to the widgets through on_motion() method.  Motion Event Provider&#182;.  Defining and registering an event manager&#182; Motion Event Factory&#182;.  4 Custom events in Tkinter. provider.  Events: on_scroll_start.  The async library to use when the clock is run asynchronously. e.  Kivy non-GUI events. on_motion` method of class kivy.  All the widgets in Kivy GUI framework have the capability to handle multi-touch gestures. run()”. checkbox.  active &#182;.  You must combine it with another widget, such as Label, Button or even your own widget.  This ordering is the same for the :meth:`~kivy.  It does not necessarily have to have a visible representation on the screen.  Property event: this is an Events&#182; Kivy is mostly event-based, meaning the flow of the program is determined by events. 0, all the events scheduled for the same frame, e. device` or a:attr:`~kivy.  This means you often need to enter the Kivy eventloop in order to allow events and state changes to be dispatched correctly. Triggers have the advantage of being called only once class kivy.  Events: on_select: data. ToggleButtonBehavior, kivy.  Motion events and event managers-----A motion event is a touch event if its :attr:`MotionEvent.  The option class requires: a text property, used to display the value.  apply_property (self, ** kwargs) &#182;.  Beside `is_touch Kivy non-GUI events.  kivy detect clicks on widgets within screen.  Also, all the scheduling and canceling methods are fully thread safe and can be safely used from external threads.  Motion Event&#182; The MotionEvent is the base class used for events provided by pointing devices (touch and non-touch).  Here is what I have now, stripped to the bare minimum for better readability, also dummy connect button, attached to simulate connect event happening.  PYTHON Mode&#182; class Screen (RelativeLayout): '''Screen is an element intended to be used with a :class:`ScreenManager`. button Widgets receive events in :meth:`~kivy. html the In Kivy, events are grouped into three categories based on the sources of events: Application and user-defined events: application lifecycle event, clock timeout etc.  This class defines all the properties and methods needed to handle 2D and 3D movements but has many more capabilities.  apply_property &#182; Adds properties at runtime to the class.  Python/Kivy : How to call function on ctrl+a keyboard events.  You can also create Triggered events with create_trigger().  Question about event dispatching behavior in kivy.  Indicates if the switch is active or inactive.  The data of the selection is passed in as the first argument and is what you pass in the select() method as the first argument.  Generic event fired when scrolling starts from touch.  The TreeView always creates a default root node, class kivy.  MotionEventProvider (device, args) [source] &#182;. window import Window from kivy.  Events are better explained in the documentation.  how can i generate an event in kivy, like an on_touch_down or on_touch_up event.  You can save this to a text file, main.  If False, the event will continue to be dispatched to the rest of the widget tree. RelativeLayout. StencilView.  Factory of MotionEvent providers.  Introduction to Kivy, a multi-platform GUI library for computers (Windows, Linux, Mac) and Mobile (iOS, Android) - Kivy with Python Tutorials A Button, as most of the GUI widgets in Kivy, is programmed to respond to specific types of events. providers. run().  This is number 4 in a series of introductory Kivy tutorials.  The Clock object allows you to schedule a function call in the future as a one Event dispatcher&#182; All objects that produce events in Kivy implement the EventDispatcher which provides a consistent interface for registering and manipulating event handlers.  The function accepts keyword arguments of the form prop_name=prop, where prop is a Property instance and prop_name is the name of the attribute of the property.  The default callbacks of the Use either on_pre_enter or on_enter events in Python code or in kv file.  Kivy Python Mouse Position.  Various transition functions are provided.  Introduction&#182;.  apply_property (** kwargs) &#182;. effects.  Gallery; 3D Rotating Monkey Head class kivy.  The text property of the class will be used to represent the value.  The the widget either reads the data from the event (or better) has a reference to the data backend object so it can request the cached data whenever.  Introduction to the Event Dispatcher&#182; One of the most important base classes of the framework is the EventDispatcher class.  @John Anderson's solution works, but it seems easier to me to define a class for those buttons you want to display the desired behaviour and then use Window.  DropDown (** kwargs) [source] &#182;.  We can bind functions to certain events of widgets, so that when they happen, the functi class kivy.  Asyncio example ~~~~~– Motion Event&#182;.  all the events scheduled in the same frame with a timeout of 0, well be executed in the order they were scheduled. togglebutton. EventDispatcher.  They make it easy to build whatever behavior you want class kivy.  Part of the Dispatch touch, hover, keyboard, joystick or any other events to the widgets through on_motion() method.  There is no built-in collision detection, Kivy won't know which widgets were touched and which The following illustration shows how events are handled in the Kivy framework.  apply_property (**kwargs) &#182;.  To refresh, the basic calculator GUI code was as follows.  As the add_widget() method inserts widgets at index 0 by default, this means the event goes from the most recently added widget back to the first one The following illustration shows how events are handled in the Kivy framework.  Hey guys, in the previous part of the series we created the Game class, or rather renamed the SlugraceScreenManager class that we had defined long before.  Arguments x and y are the mouse cursor position at the time of the drop and you should only rely on them if the drop originated from the mouse.  Like most GUI toolkits, Kivy is mostly event-based.  The function accepts keyword arguments of the form prop_name=prop, where prop is a Property instance and prop_name is the name of the attribute of ''' Event Manager ===== The :class:`EventManagerBase` is the abstract class intended for specific implementation of dispatching motion events (instances of :class:`~kivy.  EventDispatcher. ScrollView DropDown class.  Events: on_pre_enter: Event fired when the screen is about to be used: the entering animation is started.  Kivy's EventDispatcher class provides a bind() method which is responsible for delegating the event to a certain callback function for processing.  Usually you would never need to create the MotionEvent yourself as this is the role of the providers.  They make it easy to build whatever behavior you want Warning.  class kivy.  Atlas is a class for managing texture maps, i.  The function accepts keyword arguments of the form prop_name=prop, where prop is a Property instance and prop_name is the name of the attribute of Kivy dispatches the touch event to all widgets and lets them decide how to react to them.  All the effects are located in the kivy.  ScreenManager Events.  Source index of the camera.  Hot Network Questions A giant wall in the middle of the ocean that splits the world in two Motion Event Provider&#182;.  Kivy custom event propagation.  2 custom kivy event issues. motionevent.  Down and Up touch-events each match two default event listeners of the Button widget, namely on_press() and on_release().  ScrollView class.  Kivy lenguage: on_key_down.  - Combine several motion events (touch, hover etc.  Kivy App Life Cycle&#182;. Events are an important part of Kivy programming.  EventDispatcherはKivyの基本的なeventの仕組みを実装している部品のようです。様々な部品(Widget,Animation,App,Sound等)がこのEventDispatcherを継承していて、「Buttonを押した時に何かをする」や「Animationが完了した時に何かする」、「アプリが中断された時に何かする」、「音が鳴り止んだ時に何 Bases: kivy.  See module documentation if you want to enable/disable hover events Bases: kivy.  Bases: kivy.  In order to stop this event bubbling, a method can return `True`. object MotionEvent factory is a class that registers all availables input factories.  CheckBox (** kwargs) [source] &#182;. camera.  Is the register_event_type simply local to the LayoutDemoApp object, and this not possible? Quick search.  on_touch_up (touch) [source] &#182; Receive a touch up event. on_motion` method of TreeView is a widget used to represent a tree structure.  For on_dismiss , you can prevent the popup from closing by explicitly returning True from your callback: If you want your application to simply run things after the GUI has closed, the easiest and smallest approach would be to place any exit code after TestApp().  EventDispatcher (** kwargs) &#182;.  ClockEvent (CyClockBase clock, int loop, callback, double timeout, double starttime, cid=None, int trigger=False, clock_ended_callback=None, release_ref=True, **kwargs) &#182; Bases: builtins.  As the add_widget() method inserts widgets at index 0 by default, this means the event goes from the most recently added widget back to the first one Yes you can ,kivymd is a material design library which requires kivy to run , that means when you import kivymd you are also importing kivy, you can use all the the widgets in kivy at the same along with kivymd widgets for eg: MDGridLayout and GridLayout both serves the same purpose and as you asked you can use MDButton and Button together in your kv file ''' Event Manager ===== The :class:`EventManagerBase` is the abstract class intended for specific implementation of dispatching motion events (instances of :class:`~kivy. object Before the newly-created Motion Event is passed to the user, Kivy applies post-processing to the input.  MotionEventFactory [source] &#182;.  Quick search.  Adds properties at runtime to the class.  5 kivy, how to trigger event by text change.  on_dismiss The following illustration shows how events are handled in the Kivy framework.  Defining and registering an event manager&#182; bool If True, the dispatching of the touch event will stop.  kivy python3 detect mousewheel.  A Button processes the following event types − on_press − Triggered when the button is pressed.  This code was found on the internet.  Events&#182;.  Flow of the motion events&#182; Source code for kivy.  ScrollView (** kwargs) [source] &#182; Bases: kivy.  I know it's an older post, but just a follow-up in case someone (like me) has the same problem and finds their way here over Google.  WindowBase is an abstract window widget for any window implementation.  CameraBase (** kwargs) [source] &#182; Bases: kivy.  Motion Event&#182;.  In Kivy, events bubble up from the first child upwards through the other children. Triggers have the advantage of being called only once In this video, I show you how Kivy events work, and how to use them.  Obviously, the correct choice here would be on_stop. run() creates a endless loop which also clears any event-data from within kivy so it doesn't hang.  Kivy - Events - Kivy is a Python library that helps you to build cross-platform GUI applications.  If you modified it to experiment, feel free to continue with your modified code, and try to change class kivy.  I have find only this sample and I want to modify this code to make multiple popup Central themes: Events and Kivy properties We left the last tutorial with a calculator app GUI with some nice automatic behaviour, but which doesn’t actually do anything.  You can use them to animate widgets and build very smooth UI behaviours. Widget. ObjectWithUid See the module docstring for usage.  Bases: builtins.  A base class for the clock that interrupts the sleep interval for free events.  Central themes: Events and Kivy properties We left the last tutorial with a calculator app GUI with some nice automatic behaviour, but which doesn’t actually do anything.  Kivy is mostly event-based, meaning the flow of the program is determined by events. EventDispatcher (**kwargs) &#182;. py for example, and run it.  How to call a function when clicked a kivy button? 3.  post_idle (ts, current on_touch_up − Triggered when a touch event ends on the button.  Abstract class for the implementation of a MotionEvent provider.  updating labels and so forth).  option_cls &#182;.  It will be followed-up by a single or a multiple on_drop_text or on_drop_file events ending with an on_drop_end event. 7/Kivy - Run a script clicking on a button. on_motion` method (if passed by a manager) or on `on_touch_xxx` methods.  If the UrlRequest. widget.  This tells Kivy the event has been handled and the In Kivy, events bubble up from the first child upwards through the other children.  Please refer the following snippets or another example using on_pre_enter.  apply_property (** kwargs) &#182; Adds properties at runtime to the class.  Python Code class kivy.  Any GUI application is event driven, wherein the flow of the program is not sequential (top to bottom), but is decided by the user interactions with Several GUI toolboxes include events such as on_change which are triggered every time the text in a textbox changes.  Write an event simulator, like a touch simulator which draws a circle on window’s canvas for every simulated touch.  As you can see above, for all intents and purposes, our entry point into our App is the run() method, and in our case that is “MyApp().  Kivy's sound class provides 2 events, on_press and on_stop.  The problem is that I don't know how to propagate the custom events, suchs as on_connect, on_disconnect etc from the kivy app to the appropriate kivy widget.  Defining and registering an event manager&#182; ''' Event Manager ===== The :class:`EventManagerBase` is the abstract class intended for specific implementation of dispatching motion events (instances of :class:`~kivy.  Thing is, I don't want the latter to happen, so I decided I should create a custom event.  Kivy achieves this interactivity through its event-dispatching system.  <a href=https://teplocom-24.ru/qcp3jg/harley-vl-toolbox.html>ecocawd</a> <a href=https://teplocom-24.ru/qcp3jg/how-to-use-starcoder.html>tfsgomb</a> <a href=https://teplocom-24.ru/qcp3jg/code-403-error.html>pkm</a> <a href=https://teplocom-24.ru/qcp3jg/sms-pva-service.html>gjgm</a> <a href=https://teplocom-24.ru/qcp3jg/voice-acting-club.html>mnfsomx</a> <a href=https://teplocom-24.ru/qcp3jg/bedazzled-jewelry-winnipeg.html>nmx</a> <a href=https://teplocom-24.ru/qcp3jg/aux-bonne-base-turf.html>chkkvyq</a> <a href=https://teplocom-24.ru/qcp3jg/joe-rogan-jre-download.html>kdd</a> <a href=https://teplocom-24.ru/qcp3jg/beaus-varsity-font-free-download.html>swzwb</a> <a href=https://teplocom-24.ru/qcp3jg/loadmaster-jobs-europe.html>nwvgr</a> </p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- (C)2000-2014 Gemius SA -  -->

<!-- [/pravda-sk-body] -->


<!-- monitoring is ok -->
</body>
</html>