 So, so far we have been looking at some of the fundamentals of Lyapunov theory, some preliminary background and some physical insights into how Lyapunov has to come up with different different theorems and we saw some kind of a you know intuitive understanding about it ok. So, if you recall we had seen this stability proofs based on some definition of some functions which are energy based functions and the derivatives along the system trajectories ok. So, we define some mathematical preliminaries and you know come up with this idea which what we Lyapunov has come up with ok. And now we will see more formally some mathematical kind of a stability theorems we will not get into the proof of them, but we will just see the mathematics a little bit more in detail and apply it to the case of you know development of control and you know providing the proof for stability proof for any control that is proposed ok. So, that process we will go through ok. So, let me get to the slides now to so see this first theorem we will just recap that we saw was about the stability ok. So, stability of a system. So, we are considering this system which is x dot is equal to f of t comma x where x is a state you know x is a. So, if you have n state system ok. Typically say if you take a 2 r manipulator robotic system that robotic system would have 4 states ok 2 degree of freedom typically will have 4 states. So, that kind of a system if we have then this x will be a 4 vector ok. So, 4 by 1 kind of a vector like that f will be 4 by 1 kind of a vector ok. And it is a function of so it takes r and r n and r to space r n again ok. So, that is how this is f is defined. Now, for this system this first stability theorem says that the equilibrium x is equal to 0 ok. This is a this is a x vector 0 vector of a system is stable if there exist this is now locally positive definite function C 1 ok. C 1 means continuously differentiable at one time. And locally positive definite function we have seen what are the definitions of that. So, LPDF C 1 function which is like typically designated as V ok. So, V is like you know Lyapunov function some function ok. If it satisfies this property LPDF and C 1 then we call it Lyapunov function candidate ok. This V is Lyapunov function candidate if it is satisfying these properties ok. So, this V is taking r plus means this is a time you know positive value to and r n to r space ok. So, so this is a real valued function this is a LPDF function V and constant small r greater than 0 ok. So, this is defined to have some kind of a finite radius ball of finite radius r here. So, we are defining a local definitions here we are not kind of considering like a global stability of a system we are considering local stability of a system. So, we it is sufficient to have these properties hold true in small kind of a you know hyper ball of this radius r ok. So, when this V dot of this function ok which is Lyapunov function candidate V dot is less than or equal to 0 ok. So, and this is this should be valid for all t greater than 0 or greater than t 0 and within this ball of radius r ok x belonging to this ball of radius r ok. And V dot is a function which is again real valued kind of a function is evaluated along the trajectories of a system ok. So, trajectories of a system you remember like you know V dot will be actually del V by del t plus del V by del x into x dot ok. So, this is like you know typically given as expression for V dot. So, we have seen what is this derivative along the trajectories and where this x dot is substituted as this function here ok. So, we will see through some examples how this is done and all those processes, but this is how this stability theorem is defined. And if this is valid for like entire R n space then it becomes like a globally stable system. And this also needs to be valid entire R n space ok. Then you have this notion of asymptotic stability we have seen. So, now this is a asymptotic stability theorem for. So, we need now you know we say for the same system same equilibrium is uniformly asymptotically stable. If there exists even decrescent now this is a decresency is additional property that is put here ok. So, decresency is this upper bound by class k function ok. And then you have this LPDF V this conditions are same. So, is that minus V dot is an LPDF function now this is not just less than or equal to 0 that equal to sign is not valid now it is this needs to be strictly like you know locally positive definite function minus V dot ok. So, it can be 0 only at 0 no other point it can be 0, but in the previous stability definition this was lesser or equal to 0 kind of a sign. So, now we want V dot to be strictly less than 0 for asymptotic stability ok. So, this is a more stringent condition this is one kind of a condition decresency and then there is another stringent condition LPDFness ok. So, this is how like you know this theorem comes up. So, we will not again as I said we will not get into the proof of this theorem, but we are more interested in application. There is a there is a entire different course can be given on about like you know theory and its proofs and you know all the mathematical nitty gritties and details about the Lyapunov theory for utility in many many different applications. What we are looking at is there application in the in the mechatronics systems alone right now. So, let us say with the example ok. So, we have this example of you want to control this mass which is on the resting on the surface and applied by the force F. This force F is considered to be a control force I can change it you know whatever way I want it to be changed and we want to know what is this force if it is specified like say in this case like a PD control then whether this is going to stabilize my system or not that is what my interest and I want to use Lyapunov theory to prove that ok. So, to say whether it is asymptotically stable or it is stable or what kind of a proof I can get that is what I want to know. So, what is the equation that is governing the system dynamics is mx double dot is equal to F very simple. So, this is a two state kind of a system in terms of like you know if you want to see it in terms of x dot is equal to F of t comma x you can convert the system into that form by saying x 1 and x 2 where x 1 is equal to x and x 2 is equal to x dot. So, x 1 dot will be equal to x 2 and x 2 dot will be equal to f by m. So, this is how I can define that system, but I can also work with see for such a simple systems we can directly work with this basic system itself and understanding that our state has x and x dot ok. So, your the system can be transformed into into the error equation by considering like a x t minus c we want to take the system to x t. So, x t minus x is a error and then we can convert this m e double dot is equal to f will be the new system like that you do like lot of this little bit of you know intermediate steps to see that m e double dot is finally, your equation f and f is defined in terms of e as k p times e minus k d times x dot x dot is also if you write x is equal to e is equal to x t minus x then x dot becomes equal to e dot rather x e is equal to x minus x t that is what you need to write then e dot will become equal to x dot. So, this small integrities are there to be worked out and see for yourself then now for such a system if we define Lyapunov function candidate. So, typically for mechanical systems we resort to the energy of our total energy of a system as a indicator of this Lyapunov function candidate it is not a must, but many times it works very well. So, given some system you try to see in terms of this control and in terms of like you know system dynamics what is total energy of a system. For example, here we know that for this system half m x dot x dot square will be its energy of this mass in terms of e it is will be half m e dot square this is the first term in this v and then we will have this potential energy coming up because this proportional control here is acting as if we are connecting a spring here. So, this spring potential energy is k p times e square that is what we are doing this k p e when we put then we are kind of putting a spring which is getting deformed by the value of the error and that spring will have this e will be 0 when this mass reaches the final value x t. So, like that this term comes from the proportional control term. So, you will find this term you can take it similarly for many other kind of systems as well when you are using proportional control you can take this half k p e square as a term for the for the energy corresponding to that proportional control ok. So, this is like becomes like a total energy now this is this can be verified to be locally positive definite function ok by applying all the different conditions that we had put for locally positive definiteness of a function. So, it has both e dot and e both the states are coming here and that is why this is like a locally positive definite function. I mean it is actually a globally positive definite function with respect to e belonging to r 2 space. Then we differentiate this to get e dot and then we get this e double dot here. Now, this e double dot is to be substituted from the system dynamics equation here and whatever control choice that we have. So, this m e double dot will become k p e. So, this is x double dot is nothing, but e double dot is equal to minus k p e into k d e dot x dot is also same as e dot ok. So, this e double dot is substituted here from the system directories m e double dot is this value and then we substitute that and simplify you get b is equal to minus k d is e dot square. Now, this is not having any term corresponding to e that is why this is less than or equal to 0 not strictly less than 0 ok. That is why we can conclude that this you know this control PD control gives this system stability ok only we can say the system is stable or this equilibrium x is equal to x t is a stable equilibrium it is not asymptotically stable ok. This is important here see with this we cannot get it is to be asymptotically stable, but is it that the system is that way that only e dot is going to 0 and e cannot be going to 0 no. We know from the from the linear system analysis and our actually a perfect solution that both e dot and e are going to go to 0 when the PD control is applied ok. So, then but Lyapunov theory is not yet able to establish that ok. So, this is how like you know we can look at these results. So, Lyapunov analysis is not saying that it is not asymptotically stable it is just saying that we it is stable system for now ok. For asymptotic stability we need to do some something more to prove ok and remember again this real this rules of the Lyapunov theorem are only like you know the sufficient conditions ok. So, then if these conditions are satisfied then you say the system is stable if they are not satisfied that does not mean anything ok you cannot conclude nothing about that. If these conditions are satisfied then like you know you you have this result available ok. So, this is very important thing to know that because you are not able to find out any V which will satisfy these conditions that then the system is not stable or you cannot conclude that otherwise result is there only sufficient conditions. Now, we can apply this to entire domain of this you know mechanical systems. So, to say which are obtained by using our Lagrange formulation applied to like you know fully actuated mechanical system ok. Mechanical system I mean the rigid body mechanical system. We can restrict our discussion to rigid body systems alone here although some parts can be extended to flexible bodies also later, but right now for this course let us focus on only the rigid body systems, multi body systems and fully actuated systems ok. So, number of degrees of freedom are equal to the number of actuators in the system ok. So, this was the equation if you remember that was obtained by the Lagrange formulation and we introduce the motor dynamics into it ok. So, motor dynamic equations if you remember they are also in the in this form, but now this torque k or this is kth joint whatever we are considering here. This is actually coming from this equation or this is this is what is a connection between the Lagrange formulation which is giving us the external force in the generalized in the direction of generalized coordinate as torque will be provided by the motor ok. So, this is coming as a load torque on the motor dynamics ok. So, with this some kind of a gear reduction here ok. So, R k is some kind of a gear reduction ok. So, theta this is the theta is a motor angle and then these are some of the motor parameters and this model can be incorporated through this kind of a connection tau k. Now, this tau k if you substitute from this you get some simplification here and you get some kind of a equation ok or we can convert this motor dynamics also into into. So, this theta m can be substituted by 1 over R k into q k as a as a. So, everything will be in terms of the generalized coordinates of your Lagrange formulation that we have and this tau k can be substituted here and now everything becomes into the generalized coordinate q k ok. And this equation will look something of this sort ok. So, this has some kind of a complications coming up here additional kind of a inertia terms are getting added and that is what is happening to this equation here. Now, in the matrix form these equations will finally, look like this ok. So, this entire thing can be put into some kind of a matrix vector form ok. Then it will like you know it looks the complication that you usually get by using this C i j k kind of a terms and this is kind of gone here ok. So, you see that this is one kind of a n by n matrix where n is a degree of freedom of the system or n is number of actuators in the system same fully actuated system. And you get this D matrix little bit modified because of the motor parts coming in and then this u vector is basically all the inputs to the input voltage to the motor which is in defined this way. So, v is actually more voltage going to the motor, but this constant is getting multiplied we get our u or controlling input u in the actuator that is represented as a vector up here. Then this g vector is coming b vector is coming and then C was a big you know many different terms here that will be kind of collected in some kind of a matrix form C q and q dot C is a function of q and q dot multiplied by q dot here ok. So, this D plus j this is similar to our inertia matrix kind of a term here ok. So, now this so, this one can have another approximation to this system by saying that you have the motor equation alone, but all the terms which are coming on the motor equation you remember the motor equation was something of this sort here is a motor equation in terms of theta and in terms of this. Now, this can be considered as a disturbance and we can directly write you know some control here that is another kind of a possibility that can exist. If you want to avoid like or we are not interested in too many very high performances in the robotic system or mechanical system, then we can do that that we are just kind of considering this as a all the non-linearities as a motor as a disturbances and then like you know collect them all together as these d k terms is nothing, but this tau k term ok. And we can use linear control on this equation also ok, but now right now we are interested in like you know doing some non-linear analysis with this equation ok. Now, we want to see that ok, we propose this PD control on the joints ok. So, q is a generalized coordinate in terms of typically if it is a n degree of freedom robot it takes the robot joints ok or generalized coordinates. So, in the direction of generalized coordinate you define this u where k p and k d are matrices they are kind of typically diagonal matrices and q tilde is defined as q d minus q here. So, desired kind of a generalized coordinate minus actual generalized coordinate that is a error term that we are defining here ok. So, this u is equal to k p times error and k d times error dot is what we are defining here and these are now in the vector matrix form. So, this u is again a vector which is used here ok. So, this u is here and now we are interested in looking at how do we do this analysis using Lyapunov analysis ok. So, what is what is to be proposed as a Lyapunov function candidate here, can you think about that ok. So, see what we did for the simple kind of a mass resting on the surface we used some kind of a energy based Lyapunov function. Now, we can think of on the similar lines ok. So, what is the energy of such a system where like now you have fully non-linear dynamics of n degree of freedom robotic system happening here right now ok. So, this kinetic energy of this is based on the d j k terms or d matrix in this equation ok. So, this will give you kinetic energy ok. So, typically the kinetic energy will be given as q dot q dot transpose you know this d matrix now we have additional term coming from the motor inertia also and q dot ok q transpose d q ok q dot transpose d q dot will be your kinetic energy. And a potential energy term similar to the potential energy that we defined for this for the proportional control consider as a spring we have now because this is a matrix form this is q tilde transpose q k p times q tilde that will be the total energy corresponding to all you know variables or all the errors q tilde this is a vector here this is a matrix and this is again vector ok. So, first term here this is a kinetic energy and the second term is accounting for the proportional feedback in the in the form of a spring elastic energy ok. So, now, we have these terms corresponding to q dot also and q tilde also now this can entire be converted into q tilde alone by using this relationship q d dot minus. So, q d is is a say a fixed quantity we want to be able to a fixed desired position ok. So, so, we we consider for this discussion right now that q d is not a function of time it is a fixed point where we want to go ok. So, this is a as we saw that is a this is a regulation kind of a control not a tracking control ok. So, for this q d is constant. So, q tilde dot will be equal to minus q dot ok that is that is what we can do here substitute for this here ok. Now, if you see this time derivative of v. So, we can use this q tilde according to like you know wherever we need. So, finally, it is right now kept in q dot terms only ok. So, now, time derivative of v if you see here if this is a v like you know can you write the expression for time derivative of v just write out ok pause here write out and then like you know proceed. So, it will have this terms which are derivative of these times this plus this times derivative of this. So, this is like a chain rule that we are applying here ok. So, this chain rule when you apply what is the derivative that results here is this ok. So, this is q dot transpose d q plus j q double dot here. So, first derivative of this term is taken and then half q dot transpose d dot q and then there will be a term which is same as this term. So, this half will actually go away ok. So, this half is come half should go away here the way you have this q dot transpose k p q tilde ok. So, here also this q tilde dot transpose k p q tilde is coming because half will be gone because like you know q tilde transpose k p q tilde and q tilde q tilde dot transpose k p q tilde and q tilde transpose k p q tilde dot ok these both are going to be same terms and they will add up together and you will get this half cancelled out ok. And so, so you can see this negative sign will come based on the you know transformation between q tilde and q dot ok q tilde and q actually or q tilde dot and q tilde ok. Now solving for this we know that now from the equation of dynamics here that d q plus j q double dot this part of the term will be equal to this whole thing shifted on the other side and substituted for you ok you will get this term here as u minus c q q c of q and q dot times q dot the plus b q dot ok. Now we are setting g q to be 0 here for this discussion right now ok. So, we can add and we will have some compensation to be done in control for that term ok, but right now we will not worry about that term ok to make our first understanding easier here. Then you have this term. So, this is this half is not there. So, I am not put that half here. So, you get this term first then this term as it is and so, you have derivative of the happening here and then here you will have this same term coming up here ok. Now if you see that we collect this terms in a very specific manner ok what we do see still we have not used u here u is kept as it is and then this b q dot term and k p q tilde ok. So, this c term is moved out of this place ok. So, this c term is taken out and this k p q tilde term is put here in ok and here like now u minus this c q dot minus b q dot this should be minus sign here ok. So, this is that is why this will become minus b q then you use this d dot minus 2 c term here this 2 is coming because this is half outside here. So, d dot minus 2 c q dot then q dot transpose ok. So, we are collecting this term here for a reason because we know that d dot minus 2 c is a skew symmetric matrix for the mechanical system as we have seen in Lagrange formulation and that is why this is quadratic form will yield 0 here ok. So, we do that and we get this expression for b dot as q dot transpose u times b q dot and minus k p into q tilde is coming. Now you propose this v is equal to k p into q tilde minus k d into q dot and substitute it here we get this expression here to be to be this ok v dot is equal to minus q dot transpose times k d plus b q dot ok. So, this remember this k d is a diagonal matrix b is a damping matrix in a system that also can be a diagonal matrix here and then you get this final expression ok and this is again has only q dot kind of a terms here. So, you if you see this this relationships happening are exactly similar to what is happening in the scalar form for our simple mass on the on the surface kind of a system ok. So, again we get this is less than or equal to 0 ok then because there is no term corresponding to q. So, for some values of q this q which is nonzero this term is still going to be 0 ok. So, if q dot is equal to 0 ok. So, that means, it is violating this you know pdf-ness of minus b dot kind of a term that is why this is less than or equal to 0 ok. So, this q dot will be this will this condition we can make q dot is equal to 0, but q is not equal to like you know q desired yet ok. So, this is not proven yet. So, q dot is equal to 0 means q tilde dot also will be equal to 0 ok. So, this to prove this we need some more kind of a tools ok. So, this is this equation is giving just a stability in the sense of Lyapunov and no asymptotic stability here ok. So, so we need some additional tool and that tool is is basically Lassala's theorem ok. What is this theorem telling us is given here ok. So, this suppose the system x dot is equal to f of x is there now see that is removed here. So, this system is autonomous ok there is no explicit time dependence happening here now ok. So, this system is is x dot is equal to f of x only and there exists see this function this again our Lyapunov function candidate and this v is pdf and radially unbounded. So, there is a new property coming here for this thing is should be pdf and radially unbounded and then v dot is less than or equal to 0 ok as we are getting in this case here that p dot is less than or equal to 0 for all t greater than 0 and such that this x belongs to R n space here ok for all R it is for all x it is valid. Then we define this set R here ok how this set is defined in this set is defined such that x is belonging to this R n space and for all t equal to 0 v such that v dot is equal to 0. So, this x is such that v dot of t comma x is equal to 0 ok. This is how this set is defined so we look at this v dot is equal to 0 condition now. So, we v dot is equal to 0 condition now we need to look at ok so v dot is equal to 0 condition means like q dot is equal to 0 ok. So, we look at this q dot is equal to 0 condition and see that x is belonging to this R n space or this q or q or like you know this x is belonging to this R n space such that v dot of x comma t is equal to 0. Now, this x is nothing but q in our case now ok. So, we will see with the example later, but understand that we put this condition such that v dot is equal to 0 and x is belonging to this R n space ok. So, we collect all such x together and observe them ok and this such all this x or this set R does not contain any other trajectory of the system other than the trivial trajectory x is equal to 0 then the equilibrium x equal to 0 will be a globally uniformly asymptotic stable system ok. This is what is Lenssela's theorem saying ok. So, this theorem is what we need to make use of in our case ok. So, for PD control we apply this theorem if you see that v dot is equal to 0 like you know means like you know v dot is this is equal to 0 that means like you know q dot is equal to 0 ok. Then q double dot q when q dot is equal to 0 I differentiate it once and I say that q double dot is equal to also 0 and this is because this q dot is equal to not instantaneous it is for all time ok. So, we need to see that for all time t is equal to 0 v dot is equal to 0 ok that is a condition that is coming. So, then I see this in the system equation ok. See in system equation wherever q double dot is there I will put that to be 0 and wherever q dot is there I put that also to be 0 and then what remains is this control term here ok and in that q dot again this is equal to 0 ok. This means that k p times q tilde is equal to 0 ok and this implies that our q tilde should be equal to 0 and q tilde is like you know the error between the desired and actual directory ok. So, this is how we establish like you know in the full mathematical sense that PD control indeed will take position and you know the velocity both to the final desired kind of a value ok. So, this lesser as theorem implies that then the system is asymptotically stable and this is what like we make sure that our system is taken to the final position also and final velocities are also to be desired value which is 0 for the final position. Now, when the gravitational term is there then we need to compensate for that term ok because it is depend upon like you know the g of q, q means it is depend upon generalize coordinate that term can be computed and compensated for by the control. So, you do this control computation and you introduce this term in control to compensate for that ok. So, this is u minus if you without compensation it will come like this here ok. So, in u if suppose there is a term which is g of q then that will get cancelled out in. So, we can have all the terms that were there in the in the in the u before this k p q tilde minus k d q tilde plus now there will be a g of q term coming up here ok and if that term is added to my u then this will compensate for that here in the v dot and again v dot expression will become similar to what we had before ok. So, this how like you know we go ahead and handle that ok. So, overall conclusion is that PD control can asymptotically stabilize a general rigid body mechanical system this is very very important kind of a conclusion here. So, if you use simple PD control on many systems it will it will they are fully actuated it will work ok. It will take the system to its final value in the presence of gravity if there is a gravity compensation to be done that you do that and then this PD control will work ok. So, even without having all these kind of analysis one can definitely like control any rigid body mechanical system fully actuated by just using PD control and it should it should work ok. That is why this PRD controllers are kind of quite powerful tools that are available in the in the market and you know they they work quite well. So, so in the presence of so even if we do not know whether the system is a non-linear or linear or as long as it is a fully actuated mechanical system there are no under actuation in the system then this PD control is going to going to work quite well. Now, the problem comes when we have want to do the trajectory tracking ok. This trajectory tracking is an is an important issue here. So, for that we need a lot more kind of a thing to be done ok. So, so the trajectory tracking problem is is simply like the suppose you have a two-link manipulator say just explained by using this two-link manipulator, but we want to track this trajectory like say the problem is given that we want like to go from PS to PF in 3 seconds along the along this path a straight line path. This becomes like a motion or path planning problem ok and this the solution to this path planning problem will give you theta 1 desired and theta 2 desired as a function of time which will which will make this happen. So, we first get like you know this path trajectory kinematics done like ok. If I if I know x position I know what is the y position and if I know x position in time I know what is the y position in time that is the kinematics of the path that is solved. Then I can convert that x of t and y of t into theta 1 of t and theta 2 of t ok. And then I get these are like my desired theta which will take me along that path. So, I want to now track the trajectory for theta 1 to go along theta 1 desired as a function of time ok. This is like a like a inverse kinematic problem ok. Given end effector position in terms of time how do I get like you know my joint coordinates in terms of time ok. That is a motion or path planning problem that is typically used in robotics kind of a literature ok. And similar kind of a thing exists like you know for any mechatronic system for example, if I want to go if I want to have some desired kind of a you know operation done in time as a trajectory thing then what should be my joint or my motor motor angles in terms of time. And once we know this theta 1 desired t and theta 2 desired t or q 1 desired t q 2 desired t how do I now track this desired trajectory ok that is a problem. So, then computed torque controller is one of the ideas that can be used. So, this computed torque is basically idea where you know this trajectory you know this joint angles based on the derivative now. So, the joint angle desired are known the desired joint angle derivatives will be known and those one can use from this equation of dynamics. So, this is a equation of dynamics here you know this say suppose joint angles q are known their derivatives are known q double dots are known q dots are known. So, everything here is known then you know what is a like you know control that any without any other disturbances you know you will know what is the desired control that is to be there right because q when I know the trajectory q ok I know q dot q double dot ok all the all are desired of course, they are desired you put in this equation and you will get to know what is a torque that will maintain those desired trajectory in the absence of any other disturbances ok any other kind of. So, this is how you find its computed torque and use that torque in addition you use that the control now should be that you desired plus this feedback you or you feed forward and you feedback and then like you know this controller will work typically ok. So, that is what is written here like analysis of computer torque controllers can be then then one can use this computer torque control and see whether we can use you know our Lyapunov theory to kind of get something from there ok. So, the problem here is that Lasalas theorem will not be you will not be able to apply. So, I would leave this analysis you carry out this analysis then something will make sense you do this computer torque based control and try to kind of like you know see similar kind of a PD control plus feed forward the computer torque control term you can use as a control and start working out Lyapunov analysis and you will find that this Lasalas theorem may not be applied in this case ok. There are some other kind of a stability proofs that will be needed ok. So, so we will this is out of scope of this course ok, but there is a very high performance tracking controller that can be possible ok. We will this expression of this controller is given here ok. So, this DC terms are coming from the system equation of dynamics that we have seen before and you know these other terms are new and A are defined in this manner here ok. This is called least lot in controller and this is a controller this can do the trajectory tracking also. So, this q this q desired is not constant here it is can be function of time also and how this is able to kind of do the job we can prove by Lyapunov stability analysis you know that will be happening in the in the future classes to come ok. But you can ponder over this controller and see whether you are able to kind of carry out the analysis of this by using Lyapunov theory you know and the this control is applied in this in the equation of this kind ok. So, this this u is basically given by this u is basically given by that expression that you see as a tau expression in the control here ok. This expression ok and gravity is not there here ok. Again you assume that gravity is 0 g term is 0 in the equation of dynamics and see whether you are able to kind of do something about proof of that ok. And the the the hint is like you know you express everything in in this variable r ok and try to express everything in terms of variable r although your generalized coordinates are q ok you express everything in terms of r and you will find some interesting thing happens in that coordinate dimension ok. So, we will do that analysis in the future classes to come ok. Thank you we will stop here for now ok.